diff options
author | Justin R. Miller <incanus@codesorcery.net> | 2015-03-08 14:18:46 -0700 |
---|---|---|
committer | John Firebaugh <john.firebaugh@gmail.com> | 2015-03-09 11:57:34 -0700 |
commit | a45ae199cf37976d34301a024be31ef427c34892 (patch) | |
tree | c573d501e2aeeacf1833b8461e02c2bff626676b /src | |
parent | fbb2d17f4317c0742dd89988882c3c3995f23580 (diff) | |
download | qtlocation-mapboxgl-a45ae199cf37976d34301a024be31ef427c34892.tar.gz |
move from range-based for loop to iterator for to be clearer
Diffstat (limited to 'src')
-rw-r--r-- | src/mbgl/map/geometry_tile.hpp | 12 | ||||
-rw-r--r-- | src/mbgl/map/tile_parser.cpp | 7 | ||||
-rw-r--r-- | src/mbgl/map/vector_tile.cpp | 5 | ||||
-rw-r--r-- | src/mbgl/map/vector_tile.hpp | 2 | ||||
-rw-r--r-- | src/mbgl/renderer/symbol_bucket.cpp | 8 |
5 files changed, 23 insertions, 11 deletions
diff --git a/src/mbgl/map/geometry_tile.hpp b/src/mbgl/map/geometry_tile.hpp index 5eb031667f..fdca905208 100644 --- a/src/mbgl/map/geometry_tile.hpp +++ b/src/mbgl/map/geometry_tile.hpp @@ -73,7 +73,17 @@ protected: class GeometryFilteredTileLayer { public: - class iterator {}; + class iterator { + public: + virtual ~iterator(); + + void operator++(); + bool operator!=(const iterator&) const; + GeometryTileFeature& operator*() const; + + protected: + iterator(); + }; public: virtual ~GeometryFilteredTileLayer(); diff --git a/src/mbgl/map/tile_parser.cpp b/src/mbgl/map/tile_parser.cpp index dd97b62b31..c75a19b9de 100644 --- a/src/mbgl/map/tile_parser.cpp +++ b/src/mbgl/map/tile_parser.cpp @@ -217,14 +217,15 @@ void TileParser::addBucketGeometries(Bucket& bucket, const GeometryTileLayer& la std::unique_ptr<GeometryFilteredTileLayer> filtered_layer = layer.createFilteredTileLayer(filter); - for (auto feature : *filtered_layer) { + for (auto feature_it = filtered_layer->begin(); feature_it != filtered_layer->end(); ++feature_it) { + if (obsolete()) return; - GeometryCollection geometry = feature.nextGeometry(); + GeometryCollection geometry = (*feature_it).nextGeometry(); while (geometry.size()) { bucket->addGeometry(geometry); - geometry = feature.nextGeometry(); + geometry = (*feature_it).nextGeometry(); } } } diff --git a/src/mbgl/map/vector_tile.cpp b/src/mbgl/map/vector_tile.cpp index d74a5922e1..cdd93d4bbe 100644 --- a/src/mbgl/map/vector_tile.cpp +++ b/src/mbgl/map/vector_tile.cpp @@ -241,6 +241,7 @@ bool FilteredVectorTileLayer::iterator::operator!=(const iterator& other) const return !(feature == other.feature); } -const VectorTileFeature& FilteredVectorTileLayer::iterator::operator*() const { - return feature; +VectorTileFeature& FilteredVectorTileLayer::iterator::operator*() const { + VectorTileFeature* f = const_cast<VectorTileFeature *>(&feature); + return *f; } diff --git a/src/mbgl/map/vector_tile.hpp b/src/mbgl/map/vector_tile.hpp index fe154bc85c..63efbab488 100644 --- a/src/mbgl/map/vector_tile.hpp +++ b/src/mbgl/map/vector_tile.hpp @@ -33,7 +33,7 @@ public: iterator(const FilteredVectorTileLayer&, const pbf&); void operator++(); bool operator!=(const iterator&) const; - const VectorTileFeature& operator*() const; + VectorTileFeature& operator*() const; private: const FilteredVectorTileLayer& parent; diff --git a/src/mbgl/renderer/symbol_bucket.cpp b/src/mbgl/renderer/symbol_bucket.cpp index 511add4de2..50a0f3c557 100644 --- a/src/mbgl/renderer/symbol_bucket.cpp +++ b/src/mbgl/renderer/symbol_bucket.cpp @@ -68,12 +68,12 @@ std::vector<SymbolFeature> SymbolBucket::processFeatures(const GeometryTileLayer std::unique_ptr<GeometryFilteredTileLayer> filtered_layer = layer.createFilteredTileLayer(filter); - for (auto feature : *filtered_layer) { + for (auto feature_it = filtered_layer->begin(); feature_it != filtered_layer->end(); ++feature_it) { SymbolFeature ft; if (has_text) { - std::string u8string = util::replaceTokens(layout.text.field, feature.getProperties()); + std::string u8string = util::replaceTokens(layout.text.field, (*feature_it).getProperties()); if (layout.text.transform == TextTransformType::Uppercase) { u8string = platform::uppercase(u8string); @@ -92,14 +92,14 @@ std::vector<SymbolFeature> SymbolBucket::processFeatures(const GeometryTileLayer } if (has_icon) { - ft.sprite = util::replaceTokens(layout.icon.image, feature.getProperties()); + ft.sprite = util::replaceTokens(layout.icon.image, (*feature_it).getProperties()); } if (ft.label.length() || ft.sprite.length()) { auto &multiline = ft.geometry; - GeometryCollection geometryCollection = feature.nextGeometry(); + GeometryCollection geometryCollection = (*feature_it).nextGeometry(); multiline.emplace_back(); for (auto& geometry : geometryCollection) { const GeometryLine& line = geometry.get<GeometryLine>(); |