Protocol for implementing tagged pointer support in mulle-objc. Tagged pointers store small values directly in pointer bits to avoid heap allocation.
+mulleTaggedPointerClass
- Get class for tagged pointer+mulleTaggedPointerFromIndex:
- Create pointer from index-mulleTaggedPointerIndex
- Get index from pointer+mulleIsTaggedPointerClass
- Check if class supports tagging-mulleIsTaggedPointer
- Check if instance is tagged pointerMulleObjCTaggedPointerCreate
- Create tagged pointerMulleObjCTaggedPointerGetClass
- Get pointer classMulleObjCTaggedPointerGetIndex
- Get pointer index@interface MyNumber : NSObject <MulleObjCTaggedPointer>
@end
@implementation MyNumber
+ (BOOL) mulleIsTaggedPointerClass
{
return YES;
}
+ (instancetype) mulleTaggedPointerFromIndex:(NSUInteger)index
{
return MulleObjCTaggedPointerCreate(self, index);
}
- (NSUInteger) mulleTaggedPointerIndex
{
return MulleObjCTaggedPointerGetIndex(self);
}
@end
// Usage
id number = [MyNumber mulleTaggedPointerFromIndex:42];
NSUInteger value = [number mulleTaggedPointerIndex];
Note: Tagged pointers are an optimization that avoids heap allocation for small values by storing them directly in pointer bits. This improves performance and reduces memory usage.