Samond Classes Library 1.2.6-STABLE build 219
SCRuntimeProperty.h
Go to the documentation of this file.
1 //
2 // SCRuntimeProperty.h
3 // scl
4 //
5 // Created by Viacheslav Smolensky on 12.12.17.
6 // Copyright (c) 2007 - 2018 by Samond Development Corporation. All rights reserved.
7 //
8 
23 #import <Foundation/Foundation.h>
24 #import <scl/SCRuntimeObject.h>
25 
26 #pragma mark -
27 #pragma mark Class Constants
28 
37 #define SCRuntimePropertyClass @"SCRuntimeProperty"
38 
39 #pragma mark -
40 #pragma mark Property Support Types
41 
50 typedef enum {
56 
62 
68 
70 
71 @class SCRuntimeProtocol;
74 
115  objc_property_t _property;
116  NSString *_name;
117  NSMutableDictionary *_attributes;
118  NSString *_attributeEncodings;
119 }
120 
121 #pragma mark -
122 #pragma mark Creating and Initializing Properties
123 
127 + (instancetype)propertyWithObjCProperty:(objc_property_t)property;
128 + (instancetype)propertyWithName:(NSString *)name attributes:(NSDictionary *)attributes;
129 + (instancetype)propertyWithClass:(Class)class name:(NSString *)name;
130 + (instancetype)classPropertyWithClass:(Class)class name:(NSString *)name;
131 
132 - (instancetype)initWithObjCProperty:(objc_property_t)property;
133 - (instancetype)initWithName:(NSString *)name attributes:(NSDictionary *)attributes;
134 - (instancetype)initWithClass:(Class)class instance:(BOOL)instance name:(NSString *)name;
135 
136 #pragma mark -
137 #pragma mark Quering Properties
138 
147 @property (nonatomic, readonly, retain) NSString *name;
148 
153 @property (nonatomic, readonly, retain) NSDictionary *attributes;
154 
159 @property (nonatomic, readonly, retain) NSString *attributeEncodings;
160 
165 @property (nonatomic, readonly, assign) BOOL readonly;
166 
171 @property (nonatomic, readonly, assign) SCRuntimePropertySetterSemantics setterSemantics;
172 
177 @property (nonatomic, readonly, assign) BOOL assignProperty;
178 
183 @property (nonatomic, readonly, assign) BOOL retainProperty;
184 
189 @property (nonatomic, readonly, assign) BOOL copyProperty;
190 
195 @property (nonatomic, readonly, assign) BOOL nonatomic;
196 
201 @property (nonatomic, readonly, assign) BOOL dynamic;
202 
207 @property (nonatomic, readonly, assign) BOOL weakReference;
208 
213 @property (nonatomic, readonly, assign) BOOL eligibleForGarbageCollection;
214 
219 @property (nonatomic, readonly, assign) SEL getter;
220 
225 @property (nonatomic, readonly, assign) SEL setter;
226 
231 @property (nonatomic, readonly, retain) NSString *getterName;
232 
237 @property (nonatomic, readonly, retain) NSString *setterName;
238 
243 @property (nonatomic, readonly, retain) NSString *encoding;
244 
249 @property (nonatomic, readonly, retain) NSString *oldEncoding;
250 
255 @property (nonatomic, readonly, retain) NSString *fieldName;
258 #pragma mark -
259 #pragma mark Comparing Properties
260 - (BOOL)isEqualToProperty:(SCRuntimeProperty *)property;
261 - (BOOL)isEqualToName:(NSString *)name;
262 - (BOOL)isEqual:(id)object;
263 - (BOOL)isEqualToObjCProperty:(objc_property_t)property;
264 
265 #pragma mark -
266 #pragma mark Communicating with Classes
267 - (BOOL)addToClass:(Class)class instance:(BOOL)instance;
268 - (BOOL)addToUnregisteredClass:(SCRuntimeUnregisteredClass *)class instance:(BOOL)instance;
269 - (BOOL)availableInClass:(Class)class instance:(BOOL)instance;
270 - (BOOL)availableInUnregisteredClass:(SCRuntimeUnregisteredClass *)class instance:(BOOL)instance;
271 
272 #pragma mark -
273 #pragma mark Communicating with Protocols
274 - (void)addToProtocol:(SCRuntimeUnregisteredProtocol *)protocol required:(BOOL)required instance:(BOOL)instance;
275 - (BOOL)availableInProtocol:(SCRuntimeProtocol *)protocol required:(BOOL)required instance:(BOOL)instance;
276 - (BOOL)availableInProtocolWithName:(NSString *)name required:(BOOL)required instance:(BOOL)instance;
277 
278 @end
SCRuntimePropertySetterSemantics
Definition: SCRuntimeProperty.h:50
Definition: SCRuntimeProperty.h:55
Representation of a protocols.
Definition: SCRuntimeProtocol.h:77
BOOL nonatomic
Definition: SCRuntimeProperty.h:195
Definition: SCRuntimeProperty.h:61
BOOL readonly
Definition: SCRuntimeProperty.h:165
Class SCRuntimeObject header file.
Definition: SCRuntimeProperty.h:67
Representation of a class property.
Definition: SCRuntimeProperty.h:114
Representation of an unregistered protocols.
Definition: SCRuntimeUnregisteredProtocol.h:75
Representation of an unregistered classes.
Definition: SCRuntimeUnregisteredClass.h:85
Parent class of all library runtime classes.
Definition: SCRuntimeObject.h:53