summaryrefslogtreecommitdiff
path: root/src/mbgl/tile/geojson_tile.cpp
diff options
context:
space:
mode:
authorKonstantin Käfer <mail@kkaefer.com>2017-06-20 12:17:07 -0700
committerKonstantin Käfer <mail@kkaefer.com>2017-06-21 17:18:08 -0700
commit7b90af5d3580bd57cd4280173c1d2b0ee542b89d (patch)
tree157ce600a1f6397c09ffcd39918e7347e0c70b39 /src/mbgl/tile/geojson_tile.cpp
parent2cc330463d11a9767cbee4a028804e026c76d63b (diff)
downloadqtlocation-mapboxgl-7b90af5d3580bd57cd4280173c1d2b0ee542b89d.tar.gz
[core] always return owning pointers for GeometryTileData::getLayer()
Diffstat (limited to 'src/mbgl/tile/geojson_tile.cpp')
-rw-r--r--src/mbgl/tile/geojson_tile.cpp40
1 files changed, 25 insertions, 15 deletions
diff --git a/src/mbgl/tile/geojson_tile.cpp b/src/mbgl/tile/geojson_tile.cpp
index 622d35d6d4..e9865e8272 100644
--- a/src/mbgl/tile/geojson_tile.cpp
+++ b/src/mbgl/tile/geojson_tile.cpp
@@ -51,8 +51,29 @@ public:
}
};
-class GeoJSONTileData : public GeometryTileData,
- public GeometryTileLayer {
+class GeoJSONTileLayer : public GeometryTileLayer {
+public:
+ GeoJSONTileLayer(std::shared_ptr<const mapbox::geometry::feature_collection<int16_t>> features_)
+ : features(std::move(features_)) {
+ }
+
+ std::size_t featureCount() const override {
+ return features->size();
+ }
+
+ std::unique_ptr<GeometryTileFeature> getFeature(std::size_t i) const override {
+ return std::make_unique<GeoJSONTileFeature>((*features)[i]);
+ }
+
+ std::string getName() const override {
+ return "";
+ }
+
+private:
+ std::shared_ptr<const mapbox::geometry::feature_collection<int16_t>> features;
+};
+
+class GeoJSONTileData : public GeometryTileData {
public:
GeoJSONTileData(mapbox::geometry::feature_collection<int16_t> features_)
: features(std::make_shared<mapbox::geometry::feature_collection<int16_t>>(
@@ -67,21 +88,10 @@ public:
return std::make_unique<GeoJSONTileData>(features);
}
- const GeometryTileLayer* getLayer(const std::string&) const override {
- return this;
- }
-
- std::string getName() const override {
- return "";
+ std::unique_ptr<GeometryTileLayer> getLayer(const std::string&) const override {
+ return std::make_unique<GeoJSONTileLayer>(features);
}
- std::size_t featureCount() const override {
- return features->size();
- }
-
- std::unique_ptr<GeometryTileFeature> getFeature(std::size_t i) const override {
- return std::make_unique<GeoJSONTileFeature>((*features)[i]);
- }
private:
std::shared_ptr<const mapbox::geometry::feature_collection<int16_t>> features;