Files
MapLibreParticleLab/platform/darwin/src/MLNCluster.h
mwilsnd 20d9e1028c Platform flattening overhaul (#1393)
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
Co-authored-by: Bart Louwers <bart@emeel.net>
2023-07-26 17:50:34 +02:00

54 lines
1.4 KiB
Objective-C

#import "MLNFoundation.h"
@protocol MLNFeature;
NS_ASSUME_NONNULL_BEGIN
/**
An `NSUInteger` constant used to indicate an invalid cluster identifier.
This indicates a missing cluster feature.
*/
FOUNDATION_EXTERN MLN_EXPORT const NSUInteger MLNClusterIdentifierInvalid;
/**
A protocol that feature subclasses (i.e. those already conforming to
the `MLNFeature` protocol) conform to if they represent clusters.
Currently the only class that conforms to `MLNCluster` is
`MLNPointFeatureCluster` (a subclass of `MLNPointFeature`).
To check if a feature is a cluster, check conformity to `MLNCluster`, for
example:
```swift
let shape = try! MLNShape(data: clusterShapeData, encoding: String.Encoding.utf8.rawValue)
guard let pointFeature = shape as? MLNPointFeature else {
throw ExampleError.unexpectedFeatureType
}
// Check for cluster conformance
guard let cluster = pointFeature as? MLNCluster else {
throw ExampleError.featureIsNotACluster
}
// Currently the only supported class that conforms to `MLNCluster` is
// `MLNPointFeatureCluster`
guard cluster is MLNPointFeatureCluster else {
throw ExampleError.unexpectedFeatureType
}
```
*/
MLN_EXPORT
@protocol MLNCluster <MLNFeature>
/** The identifier for the cluster. */
@property (nonatomic, readonly) NSUInteger clusterIdentifier;
/** The number of points within this cluster */
@property (nonatomic, readonly) NSUInteger clusterPointCount;
@end
NS_ASSUME_NONNULL_END