From c737f4d56f2f3b56237c1d1eef500321bb6b7c47 Mon Sep 17 00:00:00 2001 From: Artem Pavlenko Date: Fri, 9 Mar 2018 09:57:49 +0100 Subject: [PATCH] avoid symbols duplication --- include/mapnik/csv/csv_grammar_x3_def.hpp | 8 ++++---- include/mapnik/expression_grammar_x3_def.hpp | 4 ++-- .../mapnik/json/generic_json_grammar_x3_def.hpp | 2 +- include/mapnik/json/positions_grammar_x3_def.hpp | 2 +- include/mapnik/json/topojson_grammar_x3_def.hpp | 2 +- include/mapnik/json/unicode_string_grammar_x3.hpp | 3 +++ .../mapnik/json/unicode_string_grammar_x3_def.hpp | 4 ++-- src/expression_grammar_x3.cpp | 14 ++++++++++++-- 8 files changed, 26 insertions(+), 13 deletions(-) diff --git a/include/mapnik/csv/csv_grammar_x3_def.hpp b/include/mapnik/csv/csv_grammar_x3_def.hpp index 792175e96..a4f5e8942 100644 --- a/include/mapnik/csv/csv_grammar_x3_def.hpp +++ b/include/mapnik/csv/csv_grammar_x3_def.hpp @@ -38,9 +38,9 @@ using x3::lit; using x3::lexeme; using ascii::char_; -struct unesc_char_ : x3::symbols +struct csv_unesc_chars_ : x3::symbols { - unesc_char_() + csv_unesc_chars_() { add("\\a", '\a') ("\\b", '\b') @@ -55,7 +55,7 @@ struct unesc_char_ : x3::symbols ("\"\"", '\"') // double quote ; } -} unesc_char; +} csv_unesc_chars; template struct literal : x3::parser> @@ -97,7 +97,7 @@ auto const column_def = quoted_text | *(char_ - separator) auto const quoted_text_def = quote > text > quote // support unmatched quotes or not (??) ; -auto const text_def = *(unesc_char | (char_ - quote)) +auto const text_def = *(csv_unesc_chars | (char_ - quote)) ; BOOST_SPIRIT_DEFINE ( diff --git a/include/mapnik/expression_grammar_x3_def.hpp b/include/mapnik/expression_grammar_x3_def.hpp index dd7d40eba..f35ccdb45 100644 --- a/include/mapnik/expression_grammar_x3_def.hpp +++ b/include/mapnik/expression_grammar_x3_def.hpp @@ -24,7 +24,7 @@ #define MAPNIK_EXPRESSIONS_GRAMMAR_X3_DEF_HPP #include -#include +#include #include #include #include @@ -67,7 +67,7 @@ namespace mapnik { namespace grammar { x3::uint_parser const hex2 {}; namespace { - auto const& escaped_unicode = json::grammar::escaped_unicode; + auto const& escaped_unicode = json::escaped_unicode_grammar(); } auto append = [](auto const& ctx) diff --git a/include/mapnik/json/generic_json_grammar_x3_def.hpp b/include/mapnik/json/generic_json_grammar_x3_def.hpp index ea4f52f3c..9f6e882d5 100644 --- a/include/mapnik/json/generic_json_grammar_x3_def.hpp +++ b/include/mapnik/json/generic_json_grammar_x3_def.hpp @@ -74,7 +74,7 @@ namespace { auto const& json_string = mapnik::json::unicode_string_grammar(); } // exported rules // start -generic_json_grammar_type const value MAPNIK_INIT_PRIORITY(102) ("JSON Value"); +generic_json_grammar_type const value MAPNIK_INIT_PRIORITY(103) ("JSON Value"); generic_json_key_value_type const key_value("JSON Object element"); // rules x3::rule const object("JSON Object"); diff --git a/include/mapnik/json/positions_grammar_x3_def.hpp b/include/mapnik/json/positions_grammar_x3_def.hpp index 206d22251..e786b121c 100644 --- a/include/mapnik/json/positions_grammar_x3_def.hpp +++ b/include/mapnik/json/positions_grammar_x3_def.hpp @@ -43,7 +43,7 @@ auto assign_helper = [](auto const& ctx) } // anonymous ns // start rule -positions_grammar_type const positions MAPNIK_INIT_PRIORITY(103) ("Positions"); +positions_grammar_type const positions MAPNIK_INIT_PRIORITY(104) ("Positions"); // rules x3::rule const point("Position"); x3::rule const ring("Ring"); diff --git a/include/mapnik/json/topojson_grammar_x3_def.hpp b/include/mapnik/json/topojson_grammar_x3_def.hpp index 54ba23963..49d7ee5d7 100644 --- a/include/mapnik/json/topojson_grammar_x3_def.hpp +++ b/include/mapnik/json/topojson_grammar_x3_def.hpp @@ -306,7 +306,7 @@ struct topojson_geometry_type_ : x3::symbols } topojson_geometry_type; // start rule -topojson_grammar_type const topology MAPNIK_INIT_PRIORITY(104) ("Topology"); +topojson_grammar_type const topology MAPNIK_INIT_PRIORITY(105) ("Topology"); // rules x3::rule const transform = "Transform"; x3::rule const bbox = "Bounding Box"; diff --git a/include/mapnik/json/unicode_string_grammar_x3.hpp b/include/mapnik/json/unicode_string_grammar_x3.hpp index 9cc9f3f34..740b13613 100644 --- a/include/mapnik/json/unicode_string_grammar_x3.hpp +++ b/include/mapnik/json/unicode_string_grammar_x3.hpp @@ -33,12 +33,15 @@ namespace mapnik { namespace json { namespace grammar { namespace x3 = boost::spirit::x3; using unicode_string_grammar_type = x3::rule; +using escaped_unicode_type = x3::rule; BOOST_SPIRIT_DECLARE(unicode_string_grammar_type); +BOOST_SPIRIT_DECLARE(escaped_unicode_type); } grammar::unicode_string_grammar_type const& unicode_string_grammar(); +grammar::escaped_unicode_type const& escaped_unicode_grammar(); }} diff --git a/include/mapnik/json/unicode_string_grammar_x3_def.hpp b/include/mapnik/json/unicode_string_grammar_x3_def.hpp index 2335b657b..2a6b1b2da 100644 --- a/include/mapnik/json/unicode_string_grammar_x3_def.hpp +++ b/include/mapnik/json/unicode_string_grammar_x3_def.hpp @@ -110,11 +110,11 @@ x3::uint_parser const hex4 {}; x3::uint_parser const hex8 {}; // start rule -unicode_string_grammar_type const unicode_string MAPNIK_INIT_PRIORITY(101) ("Unicode String"); +unicode_string_grammar_type const unicode_string MAPNIK_INIT_PRIORITY(102) ("Unicode String"); // rules x3::rule const double_quoted("Double-quoted string"); x3::rule const escaped("Escaped Character"); -x3::rule const escaped_unicode("Escaped Unicode code point(s)"); +escaped_unicode_type const escaped_unicode MAPNIK_INIT_PRIORITY(101) ("Escaped Unicode code point(s)"); x3::rule> const utf16_string("UTF16 encoded string"); auto unicode_string_def = double_quoted diff --git a/src/expression_grammar_x3.cpp b/src/expression_grammar_x3.cpp index 24f43f8a5..c072ad75d 100644 --- a/src/expression_grammar_x3.cpp +++ b/src/expression_grammar_x3.cpp @@ -22,9 +22,19 @@ #include #include +#include -namespace mapnik { namespace grammar { +namespace mapnik { namespace json { namespace grammar { +BOOST_SPIRIT_INSTANTIATE(unicode_string_grammar_type, mapnik::grammar::iterator_type, mapnik::grammar::context_type); +} -BOOST_SPIRIT_INSTANTIATE(expression_grammar_type, iterator_type, context_type); +grammar::escaped_unicode_type const& escaped_unicode_grammar() +{ + return grammar::escaped_unicode; +} }} + +namespace mapnik { namespace grammar { +BOOST_SPIRIT_INSTANTIATE(expression_grammar_type, iterator_type, context_type); +}}