From c2d7ecbef7540a67ddcdc4b6ebc13e4210e928d9 Mon Sep 17 00:00:00 2001 From: artemp Date: Tue, 15 Nov 2016 17:23:27 +0100 Subject: [PATCH] move keys_map initilizer with well-known-names into separate inline method --- include/mapnik/json/json_grammar_config.hpp | 20 ++++++++++++++++--- .../mapnik-index/process_geojson_file_x3.cpp | 9 +-------- 2 files changed, 18 insertions(+), 11 deletions(-) diff --git a/include/mapnik/json/json_grammar_config.hpp b/include/mapnik/json/json_grammar_config.hpp index ffa8be913..b0fe23e4f 100644 --- a/include/mapnik/json/json_grammar_config.hpp +++ b/include/mapnik/json/json_grammar_config.hpp @@ -37,7 +37,8 @@ enum well_known_names type = 1, geometry, coordinates, - properties + properties, + id }; constexpr char const* wkn_to_string(well_known_names val) @@ -48,16 +49,29 @@ constexpr char const* wkn_to_string(well_known_names val) case geometry: return "geometry"; case coordinates: return "coordinates"; case properties: return "properties"; + case id: return "id"; default: return "unknown"; } } struct keys_tag; -namespace grammar { - using keys_map = std::unordered_map; +inline keys_map get_keys() +{ + keys_map keys = { + {"type", well_known_names::type}, + {"geometry", well_known_names::geometry}, + {"coordinates", well_known_names::coordinates}, + {"properties", well_known_names::properties}, + {"id", well_known_names::id} + }; + return keys; +} + +namespace grammar { + namespace x3 = boost::spirit::x3; using space_type = x3::standard::space_type; using iterator_type = std::string::const_iterator; diff --git a/utils/mapnik-index/process_geojson_file_x3.cpp b/utils/mapnik-index/process_geojson_file_x3.cpp index 9f87d95ae..b20f07d54 100644 --- a/utils/mapnik-index/process_geojson_file_x3.cpp +++ b/utils/mapnik-index/process_geojson_file_x3.cpp @@ -428,14 +428,7 @@ std::pair process_geojson_file_x3(T & b auto const* itr = start; extract_positions callback(itr, boxes); - mapnik::json::grammar::keys_map keys = - { - {"type", mapnik::json::well_known_names::type}, - {"geometry", mapnik::json::well_known_names::geometry}, - {"coordinates", mapnik::json::well_known_names::coordinates}, - {"properties", mapnik::json::well_known_names::properties} - }; - + auto keys = mapnik::json::get_keys(); std::size_t bracket_counter = 0; auto feature_collection_impl = x3::with(std::ref(bracket_counter)) [x3::with(std::ref(keys))