template feature_generator_grammar on FeatureType - ref #2546

This commit is contained in:
artemp 2014-12-22 15:56:46 +01:00
parent 14b497d236
commit 132507571b
4 changed files with 9 additions and 8 deletions

View file

@ -35,7 +35,7 @@ namespace mapnik { namespace json {
inline bool to_geojson(std::string & json, mapnik::feature_impl const& feature)
{
using sink_type = std::back_insert_iterator<std::string>;
static const mapnik::json::feature_generator_grammar<sink_type> grammar;
static const mapnik::json::feature_generator_grammar<sink_type, mapnik::feature_impl> grammar;
sink_type sink(json);
return boost::spirit::karma::generate(sink, grammar, feature);
}

View file

@ -89,14 +89,15 @@ struct get_id
}
};
template <typename OutputIterator>
template <typename OutputIterator, typename FeatureType>
struct feature_generator_grammar :
karma::grammar<OutputIterator, mapnik::feature_impl const&()>
karma::grammar<OutputIterator, FeatureType const&()>
{
feature_generator_grammar();
karma::rule<OutputIterator, mapnik::feature_impl const&()> feature;
karma::rule<OutputIterator, FeatureType const&()> feature;
multi_geometry_generator_grammar<OutputIterator, mapnik::geometry_container> geometry;
properties_generator_grammar<OutputIterator, mapnik::feature_impl> properties;
properties_generator_grammar<OutputIterator, FeatureType> properties;
boost::phoenix::function<get_id> id_;
};

View file

@ -29,8 +29,8 @@
namespace mapnik { namespace json {
template <typename OutputIterator>
feature_generator_grammar<OutputIterator>::feature_generator_grammar()
template <typename OutputIterator, typename FeatureType>
feature_generator_grammar<OutputIterator, FeatureType>::feature_generator_grammar()
: feature_generator_grammar::base_type(feature)
{
boost::spirit::karma::lit_type lit;

View file

@ -30,6 +30,6 @@
using sink_type = std::back_insert_iterator<std::string>;
template struct mapnik::json::properties_generator_grammar<sink_type, mapnik::feature_impl>;
template struct mapnik::json::feature_generator_grammar<sink_type>;
template struct mapnik::json::feature_generator_grammar<sink_type, mapnik::feature_impl>;
template struct mapnik::json::geometry_generator_grammar<sink_type, mapnik::geometry_type>;
template struct mapnik::json::multi_geometry_generator_grammar<sink_type, mapnik::geometry_container>;