Samond Classes Library 1.2.6-STABLE build 219
SCRuntimeMethod.h
Go to the documentation of this file.
1 //
2 // SCRuntimeMethod.h
3 // scl
4 //
5 // Created by Viacheslav Smolensky on 11.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 SCRuntimeMethodClass @"SCRuntimeMethod"
38 
47 #define SCARG(expr) (__typeof__(expr) []){ expr }
48 
57 #define SC_ARG(expr) (__typeof__(expr) []){ expr }
58 
69 #define _arg_(expr) (__typeof__(expr) []){ expr }
70 
71 @class SCRuntimeProtocol;
74 
112 }
113 
114 #pragma mark -
115 #pragma mark Creating and Initializing Methods
116 
121 + (instancetype)methodWithObjCMethod:(Method)method;
122 + (instancetype)methodWithClass:(Class)class selector:(SEL)selector;
123 + (instancetype)methodWithClass:(Class)class name:(NSString *)name;
124 + (instancetype)classMethodWithClass:(Class)class selector:(SEL)selector;
125 + (instancetype)classMethodWithClass:(Class)class name:(NSString *)name;
126 + (instancetype)methodWithSelector:(SEL)selector implementation:(IMP)implementation signature:(NSString *)signature;
127 
128 - (instancetype)initWithObjCMethod:(Method)method;
129 - (instancetype)initWithClass:(Class)class instance:(BOOL)instance selector:(SEL)selector;
130 - (instancetype)initWithClass:(Class)class instance:(BOOL)instance name:(NSString *)name;
131 - (instancetype)initWithSelector:(SEL)selector implementation:(IMP)implementation signature:(NSString *)signature;
132 
133 #pragma mark -
134 #pragma mark Quering Methods
135 
144 @property (nonatomic, readonly, assign) SEL selector;
145 
150 @property (nonatomic, readonly, retain) NSString *name;
151 
156 @property (nonatomic, readwrite, assign) IMP implementation;
157 
162 @property (nonatomic, readonly, copy) NSString *signature;
163 
166 #pragma mark -
167 #pragma mark Comparing Methods
168 - (BOOL)isEqualToMethod:(SCRuntimeMethod *)method;
169 - (BOOL)isEqualToSelector:(SEL)selector;
170 - (BOOL)isEqualToName:(NSString *)name;
171 - (BOOL)isEqual:(id)object;
172 - (BOOL)isEqualToObjCMethod:(Method)method;
173 
174 #pragma mark -
175 #pragma mark Sending Messages
176 - (void)sendWithValue:(void *)value target:(id)target arguments:(va_list)arguments;
177 - (void)sendWithValue:(void *)value target:(id)target, ...;
178 - (id)objectFromTarget:(id)target arguments:(va_list)arguments;
179 - (id)objectFromTarget:(id)target, ...;
180 - (void)sendToTarget:(id)target arguments:(va_list)arguments;
181 - (void)sendToTarget:(id)target, ...;
182 
183 #pragma mark -
184 #pragma mark Communicating with Classes
185 - (BOOL)addToClass:(Class)class instance:(BOOL)instance;
186 - (BOOL)addToUnregisteredClass:(SCRuntimeUnregisteredClass *)class instance:(BOOL)instance;
187 - (BOOL)availableInClass:(Class)class instance:(BOOL)instance;
188 - (BOOL)availableInUnregisteredClass:(SCRuntimeUnregisteredClass *)class instance:(BOOL)instance;
189 
190 #pragma mark -
191 #pragma mark Communicating with Protocols
192 - (void)addToProtocol:(SCRuntimeUnregisteredProtocol *)protocol required:(BOOL)required instance:(BOOL)instance;
193 - (BOOL)availableInProtocol:(SCRuntimeProtocol *)protocol required:(BOOL)required instance:(BOOL)instance;
194 - (BOOL)availableInProtocolWithName:(NSString *)name required:(BOOL)required instance:(BOOL)instance;
195 
196 @end
Representation of a class method.
Definition: SCRuntimeMethod.h:111
Representation of a protocols.
Definition: SCRuntimeProtocol.h:77
Class SCRuntimeObject header file.
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