Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mapsme/omim.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVladimir Byko-Ianko <v.bykoianko@corp.mail.ru>2017-10-20 17:54:02 +0300
committerYuri Gorshenin <mipt.vi002@gmail.com>2017-10-23 17:08:47 +0300
commit9779efc6b5c2c7b42aab878a376b822d42084080 (patch)
tree54ae73a5834c82df36285baba81fbacce9778233 /generator
parent808f111a336569c7ff83cac5e257040edf6cd9d9 (diff)
Getting rid of shape id.
Diffstat (limited to 'generator')
-rw-r--r--generator/generator_tests/transit_test.cpp38
-rw-r--r--generator/transit_generator.cpp15
-rw-r--r--generator/transit_generator.hpp16
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)