summaryrefslogtreecommitdiff
path: root/platform/darwin/src/MGLFeature_Private.h
diff options
context:
space:
mode:
authorAlexander Shalamov <alexander.shalamov@mapbox.com>2018-12-11 17:07:47 +0200
committerAlexander Shalamov <alexander.shalamov@mapbox.com>2018-12-13 19:38:50 +0200
commitb6b1067caf6ba911efbb4a64a43425ce2d729a1a (patch)
tree3bdc97f4ed23e6b3abeb47c85a6b559a813059ac /platform/darwin/src/MGLFeature_Private.h
parent1d410c94fc6bd6d9f4880f22193328403302a847 (diff)
downloadqtlocation-mapboxgl-b6b1067caf6ba911efbb4a64a43425ce2d729a1a.tar.gz
[ios, darwin] Make MGLFeature.attributes non-nullable and add integration test
Enforce non-nullable semantics for MGLFeature.attributes, to avoid construction of invalid mbgl::Feature properties from nil NSDictionary object and align with public SDK property definition. Integration test "testShapeSourceWithLineDistanceMetrics" is added to verify that MGLFeature is correctly converted. Fixes issue #13378
Diffstat (limited to 'platform/darwin/src/MGLFeature_Private.h')
-rw-r--r--platform/darwin/src/MGLFeature_Private.h14
1 files changed, 11 insertions, 3 deletions
diff --git a/platform/darwin/src/MGLFeature_Private.h b/platform/darwin/src/MGLFeature_Private.h
index d4074b53ed..9fb1f91820 100644
--- a/platform/darwin/src/MGLFeature_Private.h
+++ b/platform/darwin/src/MGLFeature_Private.h
@@ -31,7 +31,7 @@ MGLShape* MGLShapeFromGeoJSON(const mapbox::geojson::geojson &geojson);
returns the feature object with converted `mbgl::FeatureIdentifier` and
`mbgl::PropertyMap` properties.
*/
-mbgl::Feature mbglFeature(mbgl::Feature feature, id identifier, NSDictionary *attributes);
+mbgl::Feature mbglFeature(mbgl::Feature feature, id identifier, NSDictionary * attributes);
/**
Returns an `NSDictionary` representation of an `MGLFeature`.
@@ -45,7 +45,7 @@ NS_ASSUME_NONNULL_END
if (self = [super initWithCoder:decoder]) { \
NSSet<Class> *identifierClasses = [NSSet setWithArray:@[[NSString class], [NSNumber class]]]; \
identifier = [decoder decodeObjectOfClasses:identifierClasses forKey:@"identifier"]; \
- attributes = [decoder decodeObjectOfClass:[NSDictionary class] forKey:@"attributes"]; \
+ _attributes = [decoder decodeObjectOfClass:[NSDictionary class] forKey:@"attributes"]; \
} \
return self; \
}
@@ -54,7 +54,7 @@ NS_ASSUME_NONNULL_END
- (void)encodeWithCoder:(NSCoder *)coder { \
[super encodeWithCoder:coder]; \
[coder encodeObject:identifier forKey:@"identifier"]; \
- [coder encodeObject:attributes forKey:@"attributes"]; \
+ [coder encodeObject:_attributes forKey:@"attributes"]; \
}
#define MGL_DEFINE_FEATURE_IS_EQUAL() \
@@ -67,3 +67,11 @@ NS_ASSUME_NONNULL_END
- (NSUInteger)hash { \
return [super hash] + [[self geoJSONDictionary] hash]; \
}
+
+#define MGL_DEFINE_FEATURE_ATTRIBUTES_GETTER() \
+ - (NSDictionary *) attributes { \
+ if (!_attributes) { \
+ return @{}; \
+ } \
+ return _attributes; \
+ }