@@ -94,24 +94,51 @@ * \return The type encoding for the instance variable */ - (const char*)typeEncoding; @end +#ifdef OF_HAVE_PROPERTIES +/** + * \brief A class for describing a property. + */ +@interface OFProperty: OFObject +{ + OFString *name; + const char *attributes; +} + +/// The name of the property. +@property (readonly, copy) OFString *name; +/// The attributes of the property. +@property (readonly) const char *attributes; +@end +#endif + /** * \brief A class for introspecting classes. */ @interface OFIntrospection: OFObject { OFMutableArray *classMethods; OFMutableArray *instanceMethods; OFMutableArray *instanceVariables; +#ifdef OF_HAVE_PROPERTIES + OFMutableArray *properties; +#endif } #ifdef OF_HAVE_PROPERTIES @property (readonly, copy) OFArray *classMethods; @property (readonly, copy) OFArray *instanceMethods; @property (readonly, copy) OFArray *instanceVariables; + +/** + * \brief The properties of the class. + * + * Only available if OF_HAVE_PROPERTIES is defined. + */ +@property (readonly, copy) OFArray *properties; #endif /** * \brief Creates a new introspection for the specified class. * @@ -146,7 +173,7 @@ * * \return An array of OFInstanceVariables */ - (OFArray*)instanceVariables; -/* TODO: properties, protocols */ +/* TODO: protocols */ @end