FLEXObjectExplorer.h 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  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. @interface FLEXObjectExplorer : NSObject
  13. + (instancetype)forObject:(id)objectOrClass;
  14. @property (nonatomic, readonly) id object;
  15. /// Subclasses can override to provide a more useful description
  16. @property (nonatomic, readonly) NSString *objectDescription;
  17. /// @return \c YES if \c object is an instance of a class,
  18. /// or \c NO if \c object is a class itself.
  19. @property (nonatomic, readonly) BOOL objectIsInstance;
  20. /// An index into the `classHierarchy` array.
  21. ///
  22. /// This property determines which set of data comes out of the metadata arrays below
  23. /// For example, \c properties contains the properties of the selected class scope,
  24. /// while \c allProperties is an array of arrays where each array is a set of
  25. /// properties for a class in the class hierarchy of the current object.
  26. @property (nonatomic) NSInteger classScope;
  27. @property (nonatomic, readonly) NSArray<NSArray<FLEXProperty *> *> *allProperties;
  28. @property (nonatomic, readonly) NSArray<FLEXProperty *> *properties;
  29. @property (nonatomic, readonly) NSArray<NSArray<FLEXProperty *> *> *allClassProperties;
  30. @property (nonatomic, readonly) NSArray<FLEXProperty *> *classProperties;
  31. @property (nonatomic, readonly) NSArray<NSArray<FLEXIvar *> *> *allIvars;
  32. @property (nonatomic, readonly) NSArray<FLEXIvar *> *ivars;
  33. @property (nonatomic, readonly) NSArray<NSArray<FLEXMethod *> *> *allMethods;
  34. @property (nonatomic, readonly) NSArray<FLEXMethod *> *methods;
  35. @property (nonatomic, readonly) NSArray<NSArray<FLEXMethod *> *> *allClassMethods;
  36. @property (nonatomic, readonly) NSArray<FLEXMethod *> *classMethods;
  37. @property (nonatomic, readonly) NSArray<Class> *classHierarchy;
  38. @property (nonatomic, readonly) NSArray<Class> *filteredSuperclasses;
  39. - (void)reloadMetadata;
  40. - (void)reloadClassHierarchy;
  41. @end