summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorJustin R. Miller <incanus@codesorcery.net>2015-03-08 14:18:46 -0700
committerJohn Firebaugh <john.firebaugh@gmail.com>2015-03-09 11:57:34 -0700
commita45ae199cf37976d34301a024be31ef427c34892 (patch)
treec573d501e2aeeacf1833b8461e02c2bff626676b /src
parentfbb2d17f4317c0742dd89988882c3c3995f23580 (diff)
downloadqtlocation-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.hpp12
-rw-r--r--src/mbgl/map/tile_parser.cpp7
-rw-r--r--src/mbgl/map/vector_tile.cpp5
-rw-r--r--src/mbgl/map/vector_tile.hpp2
-rw-r--r--src/mbgl/renderer/symbol_bucket.cpp8
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>();