diff options
author | Vladimir Byko-Ianko <v.bykoianko@corp.mail.ru> | 2017-10-20 17:54:02 +0300 |
---|---|---|
committer | Yuri Gorshenin <mipt.vi002@gmail.com> | 2017-10-23 17:08:47 +0300 |
commit | 9779efc6b5c2c7b42aab878a376b822d42084080 (patch) | |
tree | 54ae73a5834c82df36285baba81fbacce9778233 /generator | |
parent | 808f111a336569c7ff83cac5e257040edf6cd9d9 (diff) |
Getting rid of shape id.
Diffstat (limited to 'generator')
-rw-r--r-- | generator/generator_tests/transit_test.cpp | 38 | ||||
-rw-r--r-- | generator/transit_generator.cpp | 15 | ||||
-rw-r--r-- | generator/transit_generator.hpp | 16 |
3 files changed, 47 insertions, 22 deletions
diff --git a/generator/generator_tests/transit_test.cpp b/generator/generator_tests/transit_test.cpp index 1b13e711fe..2c18796259 100644 --- a/generator/generator_tests/transit_test.cpp +++ b/generator/generator_tests/transit_test.cpp @@ -154,7 +154,16 @@ UNIT_TEST(DeserializerFromJson_Edges) { "stop2_id": 442018445, "line_id": 72551680, - "shape_ids": [5, 7], + "shape_ids": [ + { + "stop1_id": 209186407, + "stop2_id": 209186410 + }, + { + "stop1_id": 209186408, + "stop2_id": 209186411 + } + ], "stop1_id": 442018444, "transfer": false }, @@ -169,10 +178,11 @@ UNIT_TEST(DeserializerFromJson_Edges) ]})"; vector<Edge> const expected = { - Edge(442018444 /* stop 1 id */, 442018445 /* stop 2 id */, kInvalidWeight /* weight */, - 72551680 /* line id */, false /* transfer */, {5, 7} /* shape ids */), - Edge(442018445 /* stop 1 id */, 442018446 /* stop 2 id */, 345.6 /* weight */, - 72551680 /* line id */, false /* transfer */, {} /* shape ids */)}; + Edge(442018444 /* stop 1 id */, 442018445 /* stop 2 id */, kInvalidWeight /* weight */, + 72551680 /* line id */, false /* transfer */, + {ShapeId(209186407, 209186410), ShapeId(209186408, 209186411)}), + Edge(442018445 /* stop 1 id */, 442018446 /* stop 2 id */, 345.6 /* weight */, + 72551680 /* line id */, false /* transfer */, {} /* shape ids */)}; TestDeserializerFromJson(jsonBuffer, "edges", expected); } @@ -256,9 +266,10 @@ UNIT_TEST(DeserializerFromJson_Shapes) { "shapes": [ { - "id": 1, - "stop1_id": 209186424, - "stop2_id": 248520179, + "id": { + "stop1_id": 209186424, + "stop2_id": 248520179 + }, "polyline": [ { "x": 27.5762295, @@ -279,9 +290,10 @@ UNIT_TEST(DeserializerFromJson_Shapes) ] }, { - "id": 2, - "stop1_id": 209191850, - "stop2_id": 209191851, + "id": { + "stop1_id": 209191850, + "stop2_id": 209191851 + }, "polyline": [ { "x": 27.554025800000002, @@ -295,12 +307,12 @@ UNIT_TEST(DeserializerFromJson_Shapes) } ]})"; - vector<Shape> const expected = {Shape(1 /* shape id */, 209186424 /* stop 1 id */, 248520179 /* stop 2 id */, + vector<Shape> const expected = {Shape(ShapeId(209186424 /* stop 1 id */, 248520179 /* stop 2 id */), {m2::PointD(27.5762295, 64.256768574044699), m2::PointD(27.576325736220355, 64.256879325696005), m2::PointD(27.576420780761875, 64.256990221238539), m2::PointD(27.576514659541523, 64.257101255242176)} /* polyline */), - Shape(2 /* shape id */, 209191850 /* stop 1 id */, 209191851 /* stop 2 id */, + Shape(ShapeId(209191850 /* stop 1 id */, 209191851 /* stop 2 id */), {m2::PointD(27.554025800000002, 64.250591911669844), m2::PointD(27.553906184631536, 64.250633404586054)} /* polyline */)}; diff --git a/generator/transit_generator.cpp b/generator/transit_generator.cpp index 9a04bcf1e3..02e7af5647 100644 --- a/generator/transit_generator.cpp +++ b/generator/transit_generator.cpp @@ -206,15 +206,12 @@ DeserializerFromJson::DeserializerFromJson(json_struct_t* node, void DeserializerFromJson::operator()(m2::PointD & p, char const * name) { - json_t * pointItem = nullptr; - if (name == nullptr) - pointItem = m_node; // Array item case - else - pointItem = my::GetJSONObligatoryField(m_node, name); - - CHECK(json_is_object(pointItem), ()); - FromJSONObject(pointItem, "x", p.x); - FromJSONObject(pointItem, "y", p.y); + GetTwoParamDict(name, "x", "y", p.x, p.y); +} + +void DeserializerFromJson::operator()(ShapeId & id, char const * name) +{ + GetTwoParamDict(name, "stop1_id", "stop2_id", id.m_stop1_id, id.m_stop2_id); } void DeserializerFromJson::operator()(FeatureIdentifiers & id, char const * name) diff --git a/generator/transit_generator.hpp b/generator/transit_generator.hpp index 82ec5f5958..11ee3cb641 100644 --- a/generator/transit_generator.hpp +++ b/generator/transit_generator.hpp @@ -38,6 +38,7 @@ public: void operator()(std::string & s, char const * name = nullptr) { GetField(s, name); } void operator()(m2::PointD & p, char const * name = nullptr); + void operator()(ShapeId & id, char const * name = nullptr); void operator()(FeatureIdentifiers & id, char const * name = nullptr); template <typename T> @@ -66,6 +67,21 @@ public: private: template <typename T> + void GetTwoParamDict(char const * dictName, std::string const & paramName1, + std::string const & paramName2, T & val1, T & val2) + { + json_t * item = nullptr; + if (dictName == nullptr) + item = m_node; // Array item case + else + item = my::GetJSONObligatoryField(m_node, dictName); + + CHECK(json_is_object(item), ()); + FromJSONObject(item, paramName1, val1); + FromJSONObject(item, paramName2, val2); + } + + template <typename T> void GetField(T & t, char const * name = nullptr) { if (name == nullptr) |