FLEXRuntimeConstants.h 3.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. //
  2. // FLEXRuntimeConstants.h
  3. // FLEX
  4. //
  5. // Created by Tanner on 3/11/20.
  6. // Copyright © 2020 Flipboard. All rights reserved.
  7. //
  8. #import <Foundation/Foundation.h>
  9. #import <objc/runtime.h>
  10. #define FLEXEncodeClass(class) ("@\"" #class "\"")
  11. #define FLEXEncodeObject(obj) (obj ? [NSString stringWithFormat:@"@\"%@\"", [obj class]].UTF8String : @encode(id))
  12. // Arguments 0 and 1 are self and _cmd always
  13. extern const unsigned int kFLEXNumberOfImplicitArgs;
  14. // See https://developer.apple.com/library/archive/documentation/Cocoa/Conceptual/ObjCRuntimeGuide/Articles/ocrtPropertyIntrospection.html#//apple_ref/doc/uid/TP40008048-CH101-SW6
  15. extern NSString *const kFLEXPropertyAttributeKeyTypeEncoding;
  16. extern NSString *const kFLEXPropertyAttributeKeyBackingIvarName;
  17. extern NSString *const kFLEXPropertyAttributeKeyReadOnly;
  18. extern NSString *const kFLEXPropertyAttributeKeyCopy;
  19. extern NSString *const kFLEXPropertyAttributeKeyRetain;
  20. extern NSString *const kFLEXPropertyAttributeKeyNonAtomic;
  21. extern NSString *const kFLEXPropertyAttributeKeyCustomGetter;
  22. extern NSString *const kFLEXPropertyAttributeKeyCustomSetter;
  23. extern NSString *const kFLEXPropertyAttributeKeyDynamic;
  24. extern NSString *const kFLEXPropertyAttributeKeyWeak;
  25. extern NSString *const kFLEXPropertyAttributeKeyGarbageCollectable;
  26. extern NSString *const kFLEXPropertyAttributeKeyOldStyleTypeEncoding;
  27. typedef NS_ENUM(NSUInteger, FLEXPropertyAttribute) {
  28. FLEXPropertyAttributeTypeEncoding = 'T',
  29. FLEXPropertyAttributeBackingIvarName = 'V',
  30. FLEXPropertyAttributeCopy = 'C',
  31. FLEXPropertyAttributeCustomGetter = 'G',
  32. FLEXPropertyAttributeCustomSetter = 'S',
  33. FLEXPropertyAttributeDynamic = 'D',
  34. FLEXPropertyAttributeGarbageCollectible = 'P',
  35. FLEXPropertyAttributeNonAtomic = 'N',
  36. FLEXPropertyAttributeOldTypeEncoding = 't',
  37. FLEXPropertyAttributeReadOnly = 'R',
  38. FLEXPropertyAttributeRetain = '&',
  39. FLEXPropertyAttributeWeak = 'W'
  40. };
  41. typedef NS_ENUM(char, FLEXTypeEncoding) {
  42. FLEXTypeEncodingNull = '\0',
  43. FLEXTypeEncodingUnknown = '?',
  44. FLEXTypeEncodingChar = 'c',
  45. FLEXTypeEncodingInt = 'i',
  46. FLEXTypeEncodingShort = 's',
  47. FLEXTypeEncodingLong = 'l',
  48. FLEXTypeEncodingLongLong = 'q',
  49. FLEXTypeEncodingUnsignedChar = 'C',
  50. FLEXTypeEncodingUnsignedInt = 'I',
  51. FLEXTypeEncodingUnsignedShort = 'S',
  52. FLEXTypeEncodingUnsignedLong = 'L',
  53. FLEXTypeEncodingUnsignedLongLong = 'Q',
  54. FLEXTypeEncodingFloat = 'f',
  55. FLEXTypeEncodingDouble = 'd',
  56. FLEXTypeEncodingLongDouble = 'D',
  57. FLEXTypeEncodingCBool = 'B',
  58. FLEXTypeEncodingVoid = 'v',
  59. FLEXTypeEncodingCString = '*',
  60. FLEXTypeEncodingObjcObject = '@',
  61. FLEXTypeEncodingObjcClass = '#',
  62. FLEXTypeEncodingSelector = ':',
  63. FLEXTypeEncodingArrayBegin = '[',
  64. FLEXTypeEncodingArrayEnd = ']',
  65. FLEXTypeEncodingStructBegin = '{',
  66. FLEXTypeEncodingStructEnd = '}',
  67. FLEXTypeEncodingUnionBegin = '(',
  68. FLEXTypeEncodingUnionEnd = ')',
  69. FLEXTypeEncodingQuote = '\"',
  70. FLEXTypeEncodingBitField = 'b',
  71. FLEXTypeEncodingPointer = '^',
  72. FLEXTypeEncodingConst = 'r'
  73. };