Samond Classes Library 1.2.6-STABLE build 219
SCRuntimeProtocol.h
Go to the documentation of this file.
1 //
2 // SCRuntimeProtocol.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/SCRuntimeMethod.h>
26 
27 @class SCRuntimeProperty;
29 
30 #pragma mark -
31 #pragma mark Class Constants
32 
41 #define SCRuntimeProtocolClass @"SCRuntimeProtocol"
42 
78  Protocol *_protocol;
79 }
80 
81 #pragma mark -
82 #pragma mark Creating and Initializing Protocols
83 
87 + (instancetype)protocolWithObjCProtocol:(Protocol *)protocol;
88 + (instancetype)protocolWithName:(NSString *)name;
89 
90 - (instancetype)initWithObjCProtocol:(Protocol *)protocol;
91 - (instancetype)initWithName:(NSString *)name;
92 
93 #pragma mark -
94 #pragma mark Quering Protocols
95 
104 @property (nonatomic, readonly, retain) NSString *name;
106 + (NSArray *)allProtocols;
107 - (NSArray *)adoptedProtocols;
108 - (BOOL)conformsToRuntimeProtocol:(SCRuntimeProtocol *)protocol;
109 - (BOOL)conformsToProtocolWithName:(NSString *)name;
110 
111 #pragma mark -
112 #pragma mark Access to Protocol Properties
113 - (NSArray *)properties;
114 - (SCRuntimeProperty *)propertyWithName:(NSString *)name required:(BOOL)required instance:(BOOL)instance;
115 - (BOOL)containsProperty:(SCRuntimeProperty *)property required:(BOOL)required instance:(BOOL)instance;
116 - (BOOL)containsPropertyWithName:(NSString *)name required:(BOOL)required instance:(BOOL)instance;
117 
118 #pragma mark -
119 #pragma mark Access to Protocol Methods
120 - (NSArray *)methodsRequired:(BOOL)required instance:(BOOL)instance;
121 - (NSArray *)methods;
122 - (SCRuntimeMethod *)methodWithSelector:(SEL)selector required:(BOOL)required instance:(BOOL)instance;
123 - (BOOL)containsMethod:(SCRuntimeMethod *)method required:(BOOL)required instance:(BOOL)instance;
124 - (BOOL)containsMethodWithSelector:(SEL)selector required:(BOOL)required instance:(BOOL)instance;
125 
126 #pragma mark -
127 #pragma mark Comparing Protocols
128 - (BOOL)isEqualToProtocol:(SCRuntimeProtocol *)protocol;
129 - (BOOL)isEqualToName:(NSString *)name;
130 - (BOOL)isEqual:(id)object;
131 - (BOOL)isEqualToObjCProtocol:(Protocol *)protocol;
132 
133 #pragma mark -
134 #pragma mark Communicating with Classes
135 - (BOOL)addToClass:(Class)class;
136 - (BOOL)conformedClass:(Class)class;
137 - (BOOL)addToUnregisteredClass:(SCRuntimeUnregisteredClass *)class;
138 - (BOOL)conformedUnregisteredClass:(SCRuntimeUnregisteredClass *)class;
139 
140 #pragma mark -
141 #pragma mark Communicating with Protocols
142 - (void)addToProtocol:(SCRuntimeUnregisteredProtocol *)protocol;
143 
144 @end
145 
Representation of a class method.
Definition: SCRuntimeMethod.h:111
Class SCRuntimeProperty header file.
Representation of a protocols.
Definition: SCRuntimeProtocol.h:77
Class SCRuntimeMethod header file.
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