12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576 |
- #import <Foundation/Foundation.h>
- @interface CCHMapTreeUnsafeMutableArray : NSObject
- @property (nonatomic, assign, readonly) id __unsafe_unretained *objects;
- @property (nonatomic, readonly) NSUInteger numObjects;
- - (instancetype)initWithCapacity:(NSUInteger)capacity;
- - (void)addObject:(__unsafe_unretained id)object;
- @end
- typedef struct CCHMapTreeNodeData {
- double x, y;
- void *data;
- } CCHMapTreeNodeData;
- NS_INLINE CCHMapTreeNodeData CCHMapTreeNodeDataMake(double x, double y, void *data) {
- return (CCHMapTreeNodeData){x, y, data};
- }
- typedef struct CCHMapTreeBoundingBox {
- double x0, y0, xf, yf;
- } CCHMapTreeBoundingBox;
- NS_INLINE CCHMapTreeBoundingBox CCHMapTreeBoundingBoxMake(double x0, double y0, double xf, double yf) {
- return (CCHMapTreeBoundingBox){x0, y0, xf, yf};
- }
- typedef struct CCHMapTreeNode {
- CCHMapTreeBoundingBox boundingBox;
- struct CCHMapTreeNode *northWest;
- struct CCHMapTreeNode *northEast;
- struct CCHMapTreeNode *southWest;
- struct CCHMapTreeNode *southEast;
- CCHMapTreeNodeData *points;
- unsigned long count;
- } CCHMapTreeNode;
- CCHMapTreeNode *CCHMapTreeNodeMake(CCHMapTreeBoundingBox boundary, unsigned long bucketCapacity);
- void CCHMapTreeFreeQuadTreeNode(CCHMapTreeNode *node);
- typedef void(^CCHMapTreeTraverseBlock)(CCHMapTreeNode *currentNode);
- void CCHMapTreeTraverse(CCHMapTreeNode *node, CCHMapTreeTraverseBlock block);
- typedef void(^TBDataReturnBlock)(CCHMapTreeNodeData data);
- void CCHMapTreeGatherDataInRange(CCHMapTreeNode *node, CCHMapTreeBoundingBox range, TBDataReturnBlock block);
- void CCHMapTreeGatherDataInRange2(CCHMapTreeNode *node, CCHMapTreeBoundingBox range, __unsafe_unretained NSMutableSet *annotations);
- void CCHMapTreeGatherDataInRange3(CCHMapTreeNode *node, CCHMapTreeBoundingBox range, __unsafe_unretained CCHMapTreeUnsafeMutableArray *annotations);
- CCHMapTreeNode *CCHMapTreeBuildWithData(CCHMapTreeNodeData *data, unsigned long count, CCHMapTreeBoundingBox boundingBox, unsigned long bucketCapacity);
- bool CCHMapTreeNodeInsertData(CCHMapTreeNode* node, CCHMapTreeNodeData data, unsigned long bucketCapacity);
- bool CCHMapTreeNodeRemoveData(CCHMapTreeNode* node, CCHMapTreeNodeData data);
|