Merge pull request #10 from gunyarakun/fix-invalid-return
[cocotron.git] / objc / objc_method.c
blob48b1c8b460b39df59bcce50d307058c15ea4eb1c
1 #import <objc/runtime.h>
3 IMP method_getImplementation(Method method) {
4 return method->method_imp;
7 SEL method_getName(Method method) {
8 return method->method_name;
11 unsigned method_getNumberOfArguments(Method method) {
12 unsigned result = 2;
13 const char *name = sel_getName(method->method_name);
15 for(; *name != '\0'; name++)
16 if(*name == ':')
17 result++;
19 return result;
22 void method_getReturnType(Method method, char *type, size_t typeCapacity) {
23 // UNIMPLEMENTED
26 void method_getArgumentType(Method method, unsigned int index, char *type, size_t typeCapacity) {
27 // UNIMPLEMENTED
30 char *method_copyReturnType(Method method) {
31 // UNIMPLEMENTED
32 return NULL;
35 char *method_copyArgumentType(Method method, unsigned int index) {
36 // UNIMPLEMENTED
37 return NULL;
40 const char *method_getTypeEncoding(Method method) {
41 return (method == NULL) ? NULL : method->method_types;
44 IMP method_setImplementation(Method method, IMP imp) {
45 IMP result = method->method_imp;
46 method->method_imp = imp;
47 return result;
50 void method_exchangeImplementations(Method method, Method other) {
51 // FIXME: needs to be atomic
52 IMP tmp = method->method_imp;
54 method->method_imp = other->method_imp;
55 other->method_imp = tmp;