From 3397b8f14fa649f8907bd7b2974f1b5792cf99ef Mon Sep 17 00:00:00 2001 From: artemp Date: Thu, 14 Jul 2016 09:46:37 +0100 Subject: [PATCH] feature_kv_iterator - change logic in 'increment' to skip key/value's when value doesn't exist --- include/mapnik/feature_kv_iterator.hpp | 2 +- src/feature_kv_iterator.cpp | 8 ++++++-- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/include/mapnik/feature_kv_iterator.hpp b/include/mapnik/feature_kv_iterator.hpp index 77b292fd5..3abe37131 100644 --- a/include/mapnik/feature_kv_iterator.hpp +++ b/include/mapnik/feature_kv_iterator.hpp @@ -46,7 +46,7 @@ class feature_impl; class MAPNIK_DECL feature_kv_iterator : public boost::iterator_facade const, + std::tuple const, boost::forward_traversal_tag> { public: diff --git a/src/feature_kv_iterator.cpp b/src/feature_kv_iterator.cpp index 4ae384254..241908ab6 100644 --- a/src/feature_kv_iterator.cpp +++ b/src/feature_kv_iterator.cpp @@ -39,16 +39,20 @@ feature_kv_iterator::feature_kv_iterator (feature_impl const& f, bool begin) void feature_kv_iterator::increment() { ++itr_; + for ( ;itr_ != f_.ctx_->end(); ++itr_) + { + if (f_.has_key(itr_->first)) break; + } } void feature_kv_iterator::decrement() { - // dummy //--itr_; + // no-op //--itr_; } void feature_kv_iterator::advance(boost::iterator_difference::type ) { - // dummy + // no-op } bool feature_kv_iterator::equal( feature_kv_iterator const& other) const