FLEXObjectExplorer.h 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. //
  2. // FLEXObjectExplorer.h
  3. // FLEX
  4. //
  5. // Created by Tanner Bennett on 8/28/19.
  6. // Copyright © 2019 Flipboard. All rights reserved.
  7. //
  8. #import <Foundation/Foundation.h>
  9. #import "FLEXProperty.h"
  10. #import "FLEXIvar.h"
  11. #import "FLEXMethod.h"
  12. #import "FLEXProtocol.h"
  13. @interface FLEXObjectExplorer : NSObject
  14. + (instancetype)forObject:(id)objectOrClass;
  15. @property (nonatomic, readonly) id object;
  16. /// Subclasses can override to provide a more useful description
  17. @property (nonatomic, readonly) NSString *objectDescription;
  18. /// @return \c YES if \c object is an instance of a class,
  19. /// or \c NO if \c object is a class itself.
  20. @property (nonatomic, readonly) BOOL objectIsInstance;
  21. /// An index into the `classHierarchy` array.
  22. ///
  23. /// This property determines which set of data comes out of the metadata arrays below
  24. /// For example, \c properties contains the properties of the selected class scope,
  25. /// while \c allProperties is an array of arrays where each array is a set of
  26. /// properties for a class in the class hierarchy of the current object.
  27. @property (nonatomic) NSInteger classScope;
  28. @property (nonatomic, readonly) NSArray<NSArray<FLEXProperty *> *> *allProperties;
  29. @property (nonatomic, readonly) NSArray<FLEXProperty *> *properties;
  30. @property (nonatomic, readonly) NSArray<NSArray<FLEXProperty *> *> *allClassProperties;
  31. @property (nonatomic, readonly) NSArray<FLEXProperty *> *classProperties;
  32. @property (nonatomic, readonly) NSArray<NSArray<FLEXIvar *> *> *allIvars;
  33. @property (nonatomic, readonly) NSArray<FLEXIvar *> *ivars;
  34. @property (nonatomic, readonly) NSArray<NSArray<FLEXMethod *> *> *allMethods;
  35. @property (nonatomic, readonly) NSArray<FLEXMethod *> *methods;
  36. @property (nonatomic, readonly) NSArray<NSArray<FLEXMethod *> *> *allClassMethods;
  37. @property (nonatomic, readonly) NSArray<FLEXMethod *> *classMethods;
  38. @property (nonatomic, readonly) NSArray<NSArray<FLEXProtocol *> *> *allConformedProtocols;
  39. @property (nonatomic, readonly) NSArray<FLEXProtocol *> *conformedProtocols;
  40. @property (nonatomic, readonly) NSArray<Class> *classHierarchy;
  41. @property (nonatomic, readonly) NSArray<NSNumber *> *allInstanceSizes;
  42. @property (nonatomic, readonly) NSUInteger instanceSize;
  43. @property (nonatomic, readonly) NSArray<NSString *> *allImageNames;
  44. @property (nonatomic, readonly) NSString *imageName;
  45. - (void)reloadMetadata;
  46. - (void)reloadClassHierarchy;
  47. @end