snake.cpp 5.53 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
#include "snake.h"



namespace rosbridge_msgs {



    //===================================================================
    // Point32
    //===================================================================
    Point32::Point32(): x(0), y(0), z(0) {}

    Point32::Point32(_Float32 x, _Float32 y, _Float32 z): x(x), y(y), z(z) {}

16
    bool Point32::toJson(rapidjson::Document &doc, rapidjson::Document::AllocatorType &allocator)
17 18
    {

19 20 21
        doc.AddMember("x", rapidjson::Value().SetFloat(this->x), allocator);
        doc.AddMember("y", rapidjson::Value().SetFloat(this->y), allocator);
        doc.AddMember("z", rapidjson::Value().SetFloat(this->z), allocator);
22

23
        return true;
24 25 26 27 28 29 30 31 32 33
    }


    //===================================================================
    // Time
    //===================================================================
    Time::Time(): secs(0), nsecs(0) {}

    Time::Time(uint32_t secs, uint32_t nsecs): secs(secs), nsecs(nsecs) {}

34
    bool Time::toJson(rapidjson::Document &doc, rapidjson::Document::AllocatorType &allocator)
35
    {
36 37
        doc.AddMember("secs", rapidjson::Value().SetUint(this->secs), allocator);
        doc.AddMember("nsecs", rapidjson::Value().SetUint(this->nsecs), allocator);
38

39
        return true;
40 41 42 43 44 45 46 47
    }


    //===================================================================
    // Header
    //===================================================================
    Header::Header():  seq(0), frame_id("") {}

48
    Header::Header(uint32_t seq, const Time &stamp, std::string frame_id):  seq(seq), stamp(stamp), frame_id(frame_id) {}
49

50
    bool Header::toJson(rapidjson::Document &doc, rapidjson::Document::AllocatorType &allocator)
51
    {
52 53 54 55 56 57 58 59
        doc.AddMember("seq", rapidjson::Value().SetUint(this->seq), allocator);
        rapidjson::Document stamp(rapidjson::kObjectType);
        if (!this->stamp.toJson(stamp, allocator))
                return false;
        doc.AddMember("stamp", stamp, allocator);
        doc.AddMember("frame_id", rapidjson::Value().SetString(this->frame_id.data(), this->frame_id.length(), allocator), allocator);

        return true;
60 61 62 63 64 65 66 67
    }


    //===================================================================
    // Polygon
    //===================================================================
    Polygon::Polygon(){}

68
    Polygon::Polygon(const std::vector<Point32> &points) : points(points) {}
69

70
    bool Polygon::toJson(rapidjson::Document &doc, rapidjson::Document::AllocatorType &allocator)
71 72 73
    {
        rapidjson::Value points(rapidjson::kArrayType);

74 75 76 77 78 79
        for(std::vector<Point32>::iterator it = this->points.begin(); it != this->points.end(); ++it) {
            rapidjson::Document point(rapidjson::kObjectType);
            if (!it->toJson(point, allocator))
                return false;
            points.PushBack(point, allocator);
        }
80

81
        doc.AddMember("points", points, allocator);
82

83
        return true;
84 85 86 87 88 89 90 91
    }


    //===================================================================
    // PolygonStamped
    //===================================================================
    PolygonStamped::PolygonStamped() {}

92
    PolygonStamped::PolygonStamped(const Header &header, const Polygon &polygon) : header(header), polygon(polygon){}
93

94
    bool PolygonStamped::toJson(rapidjson::Document &doc, rapidjson::Document::AllocatorType &allocator)
95
    {
96 97 98 99 100 101 102 103 104 105
        rapidjson::Document header(rapidjson::kObjectType);
        if (!this->header.toJson(header, allocator))
            return false;
        rapidjson::Document polygon(rapidjson::kObjectType);
        if (!this->polygon.toJson(polygon, allocator))
            return false;
        doc.AddMember("header", header, allocator);
        doc.AddMember("polygon", polygon, allocator);

        return true;
106 107 108 109 110 111 112 113 114
    }



    //===================================================================
    // PolygonArray
    //===================================================================
    PolygonArray::PolygonArray() {}

115 116 117 118
    PolygonArray::PolygonArray(const Header &header,
                               const std::vector<PolygonStamped> &polygons,
                               const std::vector<uint32_t> &labels,
                               const std::vector<_Float32> &likelihood)
119 120
        : header(header), polygons(polygons), labels(labels), likelihood(likelihood) {}

121
    bool PolygonArray::toJson(rapidjson::Document &doc, rapidjson::Document::AllocatorType &allocator)
122
    {
123 124 125 126
        rapidjson::Document header(rapidjson::kObjectType);
        if (!this->header.toJson(header, allocator))
            return false;
        doc.AddMember("header", header, allocator);
127 128 129

        rapidjson::Value polygons(rapidjson::kArrayType);

130 131 132 133 134 135 136
        for(auto it = this->polygons.begin(); it != this->polygons.end(); ++it){
            rapidjson::Document polygon(rapidjson::kObjectType);
            if (!it->toJson(polygon, allocator))
                return false;
            polygons.PushBack(polygon, allocator);
        }
        doc.AddMember("polygons", polygons, allocator);
137 138 139 140 141

        rapidjson::Value labels(rapidjson::kArrayType);

        for(auto it = this->labels.begin(); it != this->labels.end(); ++it)
            labels.PushBack(rapidjson::Value().SetUint(*it), allocator);
142
        doc.AddMember("labels", labels, allocator);
143

144
        rapidjson::Value likelihood(rapidjson::kArrayType);
145 146

        for(auto it = this->likelihood.begin(); it != this->likelihood.end(); ++it)
147 148
            likelihood.PushBack(rapidjson::Value().SetFloat(*it), allocator);
        doc.AddMember("likelihood", likelihood, allocator);
149

150
        return true;
151 152 153
    }

}