move from range-based for loop to iterator for to be clearer
This commit is contained in:
committed by
John Firebaugh
parent
fbb2d17f43
commit
a45ae199cf
@@ -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();
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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>();
|
||||
|
||||
Reference in New Issue
Block a user