diff options
author | John Firebaugh <john.firebaugh@gmail.com> | 2016-06-15 14:55:45 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2016-06-15 14:55:45 -0700 |
commit | a0b298211908036da269e7dcc2c78025476e2bf2 (patch) | |
tree | 3ef9df845e52290f8d6df918728c8eae92abd340 /benchmark | |
parent | 199ea2a82a74cf2f7b63078e2dd4b8274c061851 (diff) | |
download | qtlocation-mapboxgl-a0b298211908036da269e7dcc2c78025476e2bf2.tar.gz |
[core] Prepare Filter and FilterEvaluator for extraction (#5366)
Diffstat (limited to 'benchmark')
-rw-r--r-- | benchmark/parse/filter.cpp | 34 |
1 files changed, 6 insertions, 28 deletions
diff --git a/benchmark/parse/filter.cpp b/benchmark/parse/filter.cpp index 7450fc7804..8beff3b308 100644 --- a/benchmark/parse/filter.cpp +++ b/benchmark/parse/filter.cpp @@ -13,32 +13,6 @@ using namespace mbgl; typedef std::multimap<std::string, Value> Properties; -class StubFeature : public GeometryTileFeature { -public: - inline StubFeature(const Properties& properties_, FeatureType type_) - : properties(properties_), type(type_) { - } - - optional<Value> getValue(const std::string& key) const override { - auto it = properties.find(key); - if (it == properties.end()) - return optional<Value>(); - return it->second; - } - - FeatureType getType() const override { - return type; - } - - GeometryCollection getGeometries() const override { - return GeometryCollection(); - } - -private: - const Properties properties; - FeatureType type; -}; - style::Filter parse(const char* expression) { rapidjson::GenericDocument<rapidjson::UTF8<>, rapidjson::CrtAllocator> doc; doc.Parse<0>(expression); @@ -54,10 +28,14 @@ static void Parse_Filter(benchmark::State& state) { static void Parse_EvaluateFilter(benchmark::State& state) { const style::Filter filter = parse(R"FILTER(["==", "foo", "bar"])FILTER"); const Properties properties = { { "foo", std::string("bar") } }; - const StubFeature feature(properties, FeatureType::Unknown); while (state.KeepRunning()) { - style::Filter::visit(filter, style::FilterEvaluator{ feature }); + filter(FeatureType::Unknown, [&] (const std::string& key) -> optional<Value> { + auto it = properties.find(key); + if (it == properties.end()) + return {}; + return it->second; + }); } } |