summaryrefslogtreecommitdiff
path: root/platform/darwin/src/MGLTypes.h
diff options
context:
space:
mode:
Diffstat (limited to 'platform/darwin/src/MGLTypes.h')
-rw-r--r--platform/darwin/src/MGLTypes.h21
1 files changed, 21 insertions, 0 deletions
diff --git a/platform/darwin/src/MGLTypes.h b/platform/darwin/src/MGLTypes.h
index 1c90d7968b..2eff02fb35 100644
--- a/platform/darwin/src/MGLTypes.h
+++ b/platform/darwin/src/MGLTypes.h
@@ -112,3 +112,24 @@ NS_INLINE MGLTransition MGLTransitionMake(NSTimeInterval duration, NSTimeInterva
}
NS_ASSUME_NONNULL_END
+
+#ifndef NS_ARRAY_OF
+
+// Foundation collection classes adopted lightweight generics in iOS 9.0 and OS X 10.11 SDKs.
+#if __has_feature(objc_generics) && (__IPHONE_OS_VERSION_MAX_ALLOWED >= 90000 || __MAC_OS_X_VERSION_MAX_ALLOWED >= 101100)
+/** Inserts a type specifier for a pointer to a lightweight generic with the given collection and object classes. Use a `*` for any non-`id` object classes but no `*` for the collection class. */
+#define NS_ARRAY_OF(ObjectClass...) NSArray <ObjectClass>
+#define NS_MUTABLE_ARRAY_OF(ObjectClass...) NSMutableArray <ObjectClass>
+#define NS_SET_OF(ObjectClass...) NSSet <ObjectClass>
+#define NS_MUTABLE_SET_OF(ObjectClass...) NSMutableSet <ObjectClass>
+#define NS_DICTIONARY_OF(ObjectClass...) NSDictionary <ObjectClass>
+#define NS_MUTABLE_DICTIONARY_OF(ObjectClass...) NSMutableDictionary <ObjectClass>
+#else
+#define NS_ARRAY_OF(ObjectClass...) NSArray
+#define NS_MUTABLE_ARRAY_OF(ObjectClass...) NSMutableArray
+#define NS_SET_OF(ObjectClass...) NSSet
+#define NS_MUTABLE_SET_OF(ObjectClass...) NSMutableSet
+#define NS_DICTIONARY_OF(ObjectClass...) NSDictionary
+#define NS_MUTABLE_DICTIONARY_OF(ObjectClass...) NSMutableDictionary
+#endif
+#endif