Mercurial > projects > dstep
annotate dstep/objc/runtime.d @ 16:19885b43130e
Huge update, the bridge actually works now
author | Jacob Carlborg <doob@me.com> |
---|---|
date | Sun, 03 Jan 2010 22:06:11 +0100 |
parents | 033d260cfc9b |
children | 420969b22201 |
rev | line source |
---|---|
1 | 1 /** |
2 * Copyright: Copyright (c) 2009 Jacob Carlborg. | |
3 * Authors: Jacob Carlborg | |
4 * Version: Initial created: Feb 1, 2009 | |
5 * License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost Software License 1.0) | |
6 */ | |
7 module dstep.objc.runtime; | |
8 | |
9 import mambo.io; | |
10 | |
11 import dstep.internal.String; | |
12 import dstep.internal.Types; | |
13 import dstep.internal.Version; | |
14 import bindings = dstep.objc.bindings; | |
15 import dstep.objc.message; | |
16 import dstep.objc.objc; | |
17 | |
16
19885b43130e
Huge update, the bridge actually works now
Jacob Carlborg <doob@me.com>
parents:
1
diff
changeset
|
18 struct objc_property; |
19885b43130e
Huge update, the bridge actually works now
Jacob Carlborg <doob@me.com>
parents:
1
diff
changeset
|
19 |
1 | 20 alias objc_method* Method; |
21 alias objc_ivar* Ivar; | |
22 alias objc_category* Category; | |
23 alias objc_property* objc_property_t; | |
24 alias objc_object Protocol; | |
25 alias objc_symtab* Symtab; | |
26 alias objc_cache* Cache; | |
27 | |
28 const char _C_ID = '@'; | |
29 const char _C_CLASS = '#'; | |
30 const char _C_SEL = ':'; | |
31 const char _C_CHR = 'c'; | |
32 const char _C_UCHR = 'C'; | |
33 const char _C_SHT = 's'; | |
34 const char _C_USHT = 'S'; | |
35 const char _C_INT = 'i'; | |
36 const char _C_UINT = 'I'; | |
37 const char _C_LNG = 'l'; | |
38 const char _C_ULNG = 'L'; | |
39 const char _C_LNG_LNG = 'q'; | |
40 const char _C_ULNG_LNG = 'Q'; | |
41 const char _C_FLT = 'f'; | |
42 const char _C_DBL = 'd'; | |
43 const char _C_BFLD = 'b'; | |
44 const char _C_BOOL = 'B'; | |
45 const char _C_VOID = 'v'; | |
46 const char _C_UNDEF = '?'; | |
47 const char _C_PTR = '^'; | |
48 const char _C_CHARPTR = '*'; | |
49 const char _C_ATOM = '%'; | |
50 const char _C_ARY_B = '['; | |
51 const char _C_ARY_E = ']'; | |
52 const char _C_UNION_B = '('; | |
53 const char _C_UNION_E = ')'; | |
54 const char _C_STRUCT_B = '{'; | |
55 const char _C_STRUCT_E = '}'; | |
56 const char _C_VECTOR = '!'; | |
57 const char _C_CONST = 'r'; | |
58 | |
59 struct objc_class | |
60 { | |
61 Class isa; | |
62 Class super_class; | |
63 /*const*/ char* name; | |
64 c_long version_; | |
65 c_long info; | |
66 c_long instance_size; | |
67 objc_ivar_list* ivars; | |
68 objc_method_list** methodLists; | |
69 objc_cache* cache; | |
70 objc_protocol_list* protocols; | |
71 | |
72 | |
73 | |
74 // D Extensions: | |
75 | |
76 void setFutureClass (string name) () | |
77 { | |
78 bindings.objc_setFutureClass(this, name.ptr); | |
79 } | |
80 | |
81 string getName () | |
82 { | |
83 return fromStringz(bindings.class_getName(this)); | |
84 } | |
85 | |
86 Ivar getInstanceVariable (string name) () | |
87 { | |
88 return bindings.class_getInstanceVariable(this, name.ptr); | |
89 } | |
90 | |
91 Ivar getClassVariable (string name) () | |
92 { | |
93 return bindings.class_getClassVariable(this, name.ptr); | |
94 } | |
95 | |
96 Ivar[] copyIvarList () | |
97 { | |
98 uint outCount; | |
99 | |
100 Ivar* list = bindings.class_copyIvarList(this, &outCount); | |
101 | |
102 if (list) | |
103 return list[0 .. outCount]; | |
104 | |
105 return null; | |
106 } | |
107 | |
108 Method[] copyMethodList () | |
109 { | |
110 uint outCount; | |
111 | |
112 Method* list = bindings.class_copyMethodList(this, &outCount); | |
113 | |
114 if (list) | |
115 return list[0 .. outCount]; | |
116 | |
117 return null; | |
118 } | |
119 | |
120 Protocol*[] copyProtocolList () | |
121 { | |
122 uint outCount; | |
123 | |
124 Protocol** list = bindings.class_copyProtocolList(this, &outCount); | |
125 | |
126 if (list) | |
127 return list[0 .. outCount]; | |
128 | |
129 return null; | |
130 } | |
131 | |
132 string getIvarLayout () | |
133 { | |
134 return fromStringz(bindings.class_getIvarLayout(this)); | |
135 } | |
136 | |
137 string getWeakIvarLayout () | |
138 { | |
139 return fromStringz(bindings.class_getWeakIvarLayout(this)); | |
140 } | |
141 | |
142 Class duplicateClass (string name) (size_t extraBytes) | |
143 { | |
144 return bindings.objc_duplicateClass(this, name.ptr, extraBytes); | |
145 } | |
146 | |
147 bool addMethod (string types) (SEL name, IMP imp) | |
148 { | |
149 return bindings.class_addMethod(this, name, imp, types.ptr); | |
150 } | |
151 | |
152 IMP replaceMethod (string types) (SEL name, IMP imp) | |
153 { | |
154 return bindings.class_replaceMethod(this, name, imp, types.ptr); | |
155 } | |
156 | |
157 bool addIvar (string name, string types) (size_t size, ubyte alignment) | |
158 { | |
159 return bindings.class_addIvar(this, name.ptr, size, alignment, types.ptr); | |
160 } | |
161 | |
162 void setIvarLayout (string layout) () | |
163 { | |
164 bindings.class_setIvarLayout(this, layout.ptr); | |
165 } | |
166 | |
167 void setWeakIvarLayout (string layout) () | |
168 { | |
169 bindings.class_setWeakIvarLayout(this, layout.ptr); | |
170 } | |
171 | |
172 objc_property_t* getProperty (string name) () | |
173 { | |
174 return bindings.class_getProperty(this, name.ptr); | |
175 } | |
176 | |
177 string getImageName () | |
178 { | |
179 return fromStringz(bindings.class_getImageName(this)); | |
180 } | |
181 | |
182 bool isMetaClass () | |
183 { | |
184 return bindings.class_isMetaClass(this); | |
185 } | |
186 | |
187 Class getSuperclass () | |
188 { | |
189 return bindings.class_getSuperclass(this); | |
190 } | |
191 | |
192 Class setSuperClass (Class newSuper) | |
193 { | |
194 return bindings.class_setSuperclass(this, newSuper); | |
195 } | |
196 | |
197 int getVersion () | |
198 { | |
199 return bindings.class_getVersion(this); | |
200 } | |
201 | |
202 void serVersion (int version_) | |
203 { | |
204 return bindings.class_setVersion(this, version_); | |
205 } | |
206 | |
207 size_t getInstanceSize () | |
208 { | |
209 return bindings.class_getInstanceSize(this); | |
210 } | |
211 | |
212 Method getInstanceMethod (SEL name) | |
213 { | |
214 return bindings.class_getInstanceMethod(this, name); | |
215 } | |
216 | |
217 Method getClassMethod (SEL name) | |
218 { | |
219 return bindings.class_getClassMethod(this, name); | |
220 } | |
221 | |
222 IMP getMethodImplementation (SEL name) | |
223 { | |
224 return bindings.class_getMethodImplementation(this, name); | |
225 } | |
226 | |
227 IMP getMethodImplementation_stret (SEL name) | |
228 { | |
229 return bindings.class_getMethodImplementation_stret(this, name); | |
230 } | |
231 | |
232 bool respondsToSelector (SEL sel) | |
233 { | |
234 return bindings.class_respondsToSelector(this, sel); | |
235 } | |
236 | |
237 bool conformsToProtocol (Protocol* protocol) | |
238 { | |
239 return bindings.class_conformsToProtocol(this, protocol); | |
240 } | |
241 | |
242 void addProtocol (Protocol* protocol) | |
243 { | |
244 return bindings.class_addProtocol(this, protocol); | |
245 } | |
246 | |
247 id createInstanceFromZone (size_t idxIvars, void* z) | |
248 { | |
249 return bindings.class_createInstanceFromZone(this, idxIvars, z); | |
250 } | |
251 | |
252 void addMethods (objc_method_list* methodList) | |
253 { | |
254 return.class_addMethods(this, methodList); | |
255 } | |
256 | |
257 void removeMethods (objc_method_list* methodList) | |
258 { | |
259 return bindings.class_removeMethods(this, methodList); | |
260 } | |
261 | |
262 Class poseAs (Class original) | |
263 { | |
264 return bindings.class_poseAs(this, original); | |
265 } | |
266 | |
267 bool respondsToMethod (SEL sel) | |
268 { | |
269 return bindings.class_respondsToMethod(this, sel); | |
270 } | |
271 | |
272 objc_method_list* class_nextMethodList (void* arg) | |
273 { | |
274 return bindings.class_nextMethodList(this, arg); | |
275 } | |
276 } | |
277 | |
278 struct objc_method_description | |
279 { | |
280 SEL name; | |
281 char* types; | |
282 } | |
283 | |
284 struct objc_method_description_list | |
285 { | |
286 int count; | |
287 objc_method_description[1] list; | |
288 } | |
289 | |
290 struct objc_protocol_list | |
291 { | |
292 objc_protocol_list* next; | |
293 c_long count; | |
294 Protocol*[1] list; | |
295 } | |
296 | |
297 struct objc_category | |
298 { | |
299 char* category_name; | |
300 char* class_name; | |
301 objc_method_list* instance_methods; | |
302 objc_method_list* class_methods; | |
303 objc_protocol_list* protocols; | |
304 } | |
305 | |
306 struct objc_ivar | |
307 { | |
308 char* ivar_name; | |
309 char* ivar_type; | |
310 int ivar_offset; | |
311 | |
312 static if (D_LP64) | |
313 int space; | |
314 | |
315 | |
316 | |
317 // D Extensions: | |
318 | |
319 string getName () | |
320 { | |
321 return fromStringz(bindings.ivar_getName(this)); | |
322 } | |
323 | |
324 string getTypeEncoding () | |
325 { | |
326 return fromStringz(bindings.ivar_getTypeEncoding(this)); | |
327 } | |
328 | |
329 ptrdiff_t getOffset () | |
330 { | |
331 return bindings.ivar_getOffset(this); | |
332 } | |
333 } | |
334 | |
335 struct objc_ivar_list | |
336 { | |
337 int ivar_count; | |
338 | |
339 static if (D_LP64) | |
340 int space; | |
341 | |
342 /* variable length structure */ | |
343 objc_ivar[1] ivar_list; | |
344 } | |
345 | |
346 struct objc_method | |
347 { | |
348 SEL method_name; | |
349 char* method_types; | |
350 IMP method_imp; | |
351 | |
352 | |
353 | |
354 // D Extensions: | |
355 | |
356 /*uint getArgumentInfo (string[] type) (int arg, int* offset) | |
357 { | |
358 char*[] arr; | |
359 arr.length = type.length; | |
360 | |
361 foreach (i, str ; type) | |
362 arr[i] = str.ptr; | |
363 | |
364 return bindings.method_getArgumentInfo(this, arg, arr.ptr, offset); | |
365 }*/ | |
366 | |
367 string getTypeEncoding () | |
368 { | |
369 return fromStringz(bindings.method_getTypeEncoding(this)); | |
370 } | |
371 | |
372 string copyReturnType () | |
373 { | |
374 return fromStringz(bindings.method_copyReturnType(this)); | |
375 } | |
376 | |
377 string copyArgumentType (uint index) | |
378 { | |
379 return fromStringz(bindings.method_copyArgumentType(this, index)); | |
380 } | |
381 | |
382 void getReturnType (string dst, size_t dst_len) | |
383 { | |
384 bindings.method_getReturnType(this, dst.toStringz(), dst_len); | |
385 } | |
386 | |
387 void getArgumentType (uint index, string dst, size_t dst_len) | |
388 { | |
389 bindings.method_getArgumentType(this, index, dst.toStringz(), dst_len); | |
390 } | |
391 | |
392 SEL getName () | |
393 { | |
394 return bindings.method_getName(this); | |
395 } | |
396 | |
397 IMP getImplementation () | |
398 { | |
399 return bindings.method_getImplementation(this); | |
400 } | |
401 | |
402 uint getNumberOfArguments () | |
403 { | |
404 return bindings.method_getNumberOfArguments(this); | |
405 } | |
406 | |
407 objc_method_description* getDescription () | |
408 { | |
409 return bindings.method_getDescription(this); | |
410 } | |
411 | |
412 IMP setImplementation (IMP imp) | |
413 { | |
414 return bindings.method_setImplementation(this, imp); | |
415 } | |
416 | |
417 void exchangeImplementations (Method m2) | |
418 { | |
419 bindings.method_exchangeImplementations(this, m2); | |
420 } | |
421 | |
422 uint getSizeOfArguments () | |
423 { | |
424 return bindings.method_getSizeOfArguments(this); | |
425 } | |
426 } | |
427 | |
428 struct objc_method_list | |
429 { | |
430 objc_method_list* obsolete; | |
431 | |
432 int method_count; | |
433 | |
434 static if (D_LP64) | |
435 int space; | |
436 | |
437 /* variable length structure */ | |
438 objc_method method_list[1]; | |
439 } | |
440 | |
441 struct objc_symtab | |
442 { | |
443 c_ulong sel_ref_cnt; | |
444 SEL* refs; | |
445 ushort cls_def_cnt; | |
446 ushort cat_def_cnt; | |
447 void*[1] defs; | |
448 } | |
449 | |
450 struct objc_cache | |
451 { | |
452 uint mask /* total = mask + 1 */; | |
453 uint occupied; | |
454 Method[1] buckets; | |
455 } | |
456 | |
457 struct objc_module | |
458 { | |
459 c_ulong version_; | |
460 c_ulong size; | |
461 char* name; | |
462 Symtab symtab; | |
463 } | |
464 | |
465 string object_getClassName (id obj) | |
466 { | |
467 return fromStringz(bindings.object_getClassName(obj)); | |
468 } | |
469 | |
470 Ivar object_setInstanceVariable (T) (id obj, string name, T value) | |
471 { | |
472 return bindings.object_setInstanceVariable(obj, name.toStringz(), value); | |
473 } | |
474 | |
475 Ivar object_getInstanceVariable (T) (id obj, string name, out T outValue) | |
476 { | |
477 return bindings.object_getInstanceVariable(obj, name.toStringz(), &outValue); | |
478 } | |
479 | |
480 id objc_getClass (string name) | |
481 { | |
482 return bindings.objc_getClass(name.toStringz()); | |
483 } | |
484 | |
485 id objc_getMetaClass (string name) | |
486 { | |
487 return bindings.objc_getMetaClass(name.toStringz()); | |
488 } | |
489 | |
490 id objc_lookUpClass (string name) | |
491 { | |
492 return bindings.objc_lookUpClass(name.toStringz()); | |
493 } | |
494 | |
495 id objc_getRequiredClass (string name) | |
496 { | |
497 return bindings.objc_getRequiredClass(name.toStringz()); | |
498 } | |
499 | |
500 Class objc_getFutureClass (string name) | |
501 { | |
502 return bindings.objc_getFutureClass(name.toStringz()); | |
503 } | |
504 | |
505 void objc_setFutureClass (Class cls, string name) | |
506 { | |
507 bindings.objc_setFutureClass(cls, name.toStringz()); | |
508 } | |
509 | |
510 id objc_getProtocol (string name) | |
511 { | |
512 return bindings.objc_getProtocol(name.toStringz()); | |
513 } | |
514 | |
515 Protocol** objc_copyProtocolList (out uint outCount) | |
516 { | |
517 return bindings.objc_copyProtocolList(&outCount); | |
518 } | |
519 | |
520 string class_getName (Class cls) | |
521 { | |
522 return fromStringz(bindings.class_getName(cls)); | |
523 } | |
524 | |
525 Ivar class_getInstanceVariable (Class cls, string name) | |
526 { | |
527 return bindings.class_getInstanceVariable(cls, name.toStringz()); | |
528 } | |
529 | |
530 Ivar class_getClassVariable (Class cls, string name) | |
531 { | |
532 return bindings.class_getClassVariable(cls, name.toStringz()); | |
533 } | |
534 | |
535 Ivar* class_copyIvarList (Class cls, out uint outCount) | |
536 { | |
537 return bindings.class_copyIvarList(cls, &outCount); | |
538 } | |
539 | |
540 Method* class_copyMethodList (Class cls, out uint outCount) | |
541 { | |
542 return bindings.class_copyMethodList(cls, &outCount); | |
543 } | |
544 | |
545 Protocol** class_copyProtocolList (Class cls, out uint outCount) | |
546 { | |
547 return bindings.class_copyProtocolList(cls, &outCount); | |
548 } | |
549 | |
550 objc_property_t* class_getProperty (Class cls, string name) | |
551 { | |
552 return bindings.class_getProperty(cls, name.toStringz()); | |
553 } | |
554 | |
555 objc_property_t* class_copyPropertyList (Class cls, out uint outCount) | |
556 { | |
557 return bindings.class_copyPropertyList(cls, &outCount); | |
558 } | |
559 | |
560 string class_getIvarLayout (Class cls) | |
561 { | |
562 return fromStringz(bindings.class_getIvarLayout(cls)); | |
563 } | |
564 | |
565 string class_getWeakIvarLayout (Class cls) | |
566 { | |
567 return fromStringz(bindings.class_getWeakIvarLayout(cls)); | |
568 } | |
569 | |
570 Class objc_allocateClassPair (Class superclass, string name, size_t extraBytes) | |
571 { | |
572 return bindings.objc_allocateClassPair(superclass, name.toStringz(), extraBytes); | |
573 } | |
574 | |
575 Class objc_duplicateClass (Class original, string name, size_t extraBytes) | |
576 { | |
577 return bindings.objc_duplicateClass(original, name.toStringz(), extraBytes); | |
578 } | |
579 | |
580 bool class_addMethod (Class cls, SEL name, IMP imp, string types) | |
581 { | |
582 return bindings.class_addMethod(cls, name, imp, types.toStringz()); | |
583 } | |
584 | |
585 IMP class_replaceMethod (Class cls, SEL name, IMP imp, string types) | |
586 { | |
587 return bindings.class_replaceMethod(cls, name, imp, types.toStringz()); | |
588 } | |
589 | |
590 bool class_addIvar (Class cls, string name, size_t size, ubyte alignment, string types) | |
591 { | |
592 return bindings.class_addIvar(cls, name.toStringz(), size, alignment, types.toStringz()); | |
593 } | |
594 | |
595 void class_setIvarLayout (Class cls, string layout) | |
596 { | |
597 bindings.class_setIvarLayout(cls, layout.toStringz()); | |
598 } | |
599 | |
600 void class_setWeakIvarLayout (Class cls, string layout) | |
601 { | |
602 bindings.class_setWeakIvarLayout(cls, layout.toStringz()); | |
603 } | |
604 | |
605 string method_getTypeEncoding (Method m) | |
606 { | |
607 return fromStringz(bindings.method_getTypeEncoding(m)); | |
608 } | |
609 | |
610 string method_copyReturnType (Method m) | |
611 { | |
612 return fromStringz(bindings.method_copyReturnType(m)); | |
613 } | |
614 | |
615 string method_copyArgumentType (Method m, uint index) | |
616 { | |
617 return fromStringz(bindings.method_copyArgumentType(m, index)); | |
618 } | |
619 | |
620 void method_getReturnType (Method m, string dst, size_t dst_len) | |
621 { | |
622 bindings.method_getReturnType(m, dst.toStringz(), dst_len); | |
623 } | |
624 | |
625 void method_getArgumentType (Method m, uint index, string dst, size_t dst_len) | |
626 { | |
627 bindings.method_getArgumentType(m, index, dst.toStringz(), dst_len); | |
628 } | |
629 | |
630 string ivar_getName (Ivar v) | |
631 { | |
632 return fromStringz(bindings.ivar_getName(v)); | |
633 } | |
634 | |
635 string ivar_getTypeEncoding (Ivar v) | |
636 { | |
637 return fromStringz(bindings.ivar_getTypeEncoding(v)); | |
638 } | |
639 | |
640 string property_getName (objc_property_t* property) | |
641 { | |
642 return fromStringz(bindings.property_getName(property)); | |
643 } | |
644 | |
645 string property_getAttributes (objc_property_t* property) | |
646 { | |
647 return fromStringz(bindings.property_getAttributes(property)); | |
648 } | |
649 | |
650 string protocol_getName (id p) | |
651 { | |
652 return fromStringz(bindings.protocol_getName(p)); | |
653 } | |
654 | |
655 objc_method_description* protocol_copyMethodDescriptionList(id p, bool isRequiredMethod, bool isInstanceMethod, out uint outCount) | |
656 { | |
657 return bindings.protocol_copyMethodDescriptionList(p, isRequiredMethod, isInstanceMethod, &outCount); | |
658 } | |
659 | |
660 objc_property_t* protocol_getProperty (id proto, string name, bool isRequiredProperty, bool isInstanceProperty) | |
661 { | |
662 return bindings.protocol_getProperty(proto, name.toStringz(), isRequiredProperty, isInstanceProperty); | |
663 } | |
664 | |
665 objc_property_t* protocol_copyPropertyList (id proto, out uint outCount) | |
666 { | |
667 return bindings.protocol_copyPropertyList(proto, &outCount); | |
668 } | |
669 | |
670 Protocol** protocol_copyProtocolList (id proto, out uint outCount) | |
671 { | |
672 return bindings.protocol_copyProtocolList(proto, &outCount); | |
673 } | |
674 | |
675 static string[] objc_copyImageNames (out uint outCount) | |
676 { | |
677 string[] ret; | |
678 | |
679 char** result = bindings.objc_copyImageNames(&outCount); | |
680 ret.length = outCount; | |
681 | |
682 for (size_t i = 0; i < outCount; i++) | |
683 ret[i] = fromStringz(result[i]); | |
684 | |
685 return ret; | |
686 } | |
687 | |
688 string class_getImageName (Class cls) | |
689 { | |
690 return fromStringz(bindings.class_getImageName(cls)); | |
691 } | |
692 | |
693 string[] objc_copyClassNamesForImage (string image, out uint outCount) | |
694 { | |
695 string[] ret; | |
696 | |
697 char** result = bindings.objc_copyClassNamesForImage(image.toStringz(), &outCount); | |
698 ret.length = outCount; | |
699 | |
700 for (size_t i = 0; i < outCount; i++) | |
701 ret[i] = fromStringz(result[i]); | |
702 | |
703 return ret; | |
704 } | |
705 | |
706 string sel_getName (SEL sel) | |
707 { | |
708 return fromStringz(bindings.sel_getName(sel)); | |
709 } | |
710 | |
711 SEL sel_getUid (string str) | |
712 { | |
713 return bindings.sel_getUid(str.toStringz()); | |
714 } | |
715 | |
716 SEL sel_registerName (string str) | |
717 { | |
718 return bindings.sel_registerName(str.toStringz()); | |
719 } | |
720 | |
721 uint method_getArgumentInfo (objc_method* m, int arg, string[] type, int* offset) | |
722 { | |
723 char*[] arr; | |
724 arr.length = type.length; | |
725 | |
726 foreach (i, str ; type) | |
727 arr[i] = str.toStringz(); | |
728 | |
729 return bindings.method_getArgumentInfo(m, arg, arr.ptr, offset); | |
730 } | |
731 | |
732 Class objc_getOrigClass (string name) | |
733 { | |
734 return bindings.objc_getOrigClass(name.toStringz()); | |
735 } | |
736 | |
737 alias bindings.object_copy object_copy; | |
738 alias bindings.object_dispose object_dispose; | |
739 alias bindings.object_getClass object_getClass; | |
740 alias bindings.object_setClass object_setClass; | |
741 alias bindings.object_getIndexedIvars object_getIndexedIvars; | |
742 alias bindings.object_getIvar object_getIvar; | |
743 alias bindings.object_setIvar object_setIvar; | |
744 alias bindings.objc_getClassList objc_getClassList; | |
745 alias bindings.class_isMetaClass class_isMetaClass; | |
746 alias bindings.class_getSuperclass class_getSuperclass; | |
747 alias bindings.class_setSuperclass class_setSuperclass; | |
748 alias bindings.class_getVersion class_getVersion; | |
749 alias bindings.class_setVersion class_setVersion; | |
750 alias bindings.class_getInstanceSize class_getInstanceSize; | |
751 alias bindings.class_getInstanceMethod class_getInstanceMethod; | |
752 alias bindings.class_getClassMethod class_getClassMethod; | |
753 alias bindings.class_getMethodImplementation class_getMethodImplementation; | |
754 alias bindings.class_getMethodImplementation_stret class_getMethodImplementation_stret; | |
755 alias bindings.class_respondsToSelector class_respondsToSelector; | |
756 alias bindings.class_conformsToProtocol class_conformsToProtocol; | |
757 alias bindings.class_createInstance class_createInstance; | |
758 alias bindings.objc_registerClassPair objc_registerClassPair; | |
759 alias bindings.objc_disposeClassPair objc_disposeClassPair; | |
760 alias bindings.class_addProtocol class_addProtocol; | |
761 alias bindings.method_getName method_getName; | |
762 alias bindings.method_getImplementation method_getImplementation; | |
763 alias bindings.method_getNumberOfArguments method_getNumberOfArguments; | |
764 alias bindings.method_getDescription method_getDescription; | |
765 alias bindings.method_setImplementation method_setImplementation; | |
766 alias bindings.method_exchangeImplementations method_exchangeImplementations; | |
767 alias bindings.ivar_getOffset ivar_getOffset; | |
768 alias bindings.protocol_conformsToProtocol protocol_conformsToProtocol; | |
769 alias bindings.protocol_isEqual protocol_isEqual; | |
770 alias bindings.protocol_getMethodDescription protocol_getMethodDescription; | |
771 alias bindings.sel_isEqual sel_isEqual; | |
772 alias bindings.objc_enumerationMutation objc_enumerationMutation; | |
773 alias bindings.objc_setForwardHandler objc_setForwardHandler; | |
774 alias bindings.sel_isMapped sel_isMapped; | |
775 alias bindings.object_copyFromZone object_copyFromZone; | |
776 alias bindings.object_realloc object_realloc; | |
777 alias bindings.object_reallocFromZone object_reallocFromZone; | |
778 alias bindings.objc_getClasses objc_getClasses; | |
779 alias bindings.objc_addClass objc_addClass; | |
780 alias bindings.objc_setMultithreaded objc_setMultithreaded; | |
781 alias bindings.class_createInstanceFromZone class_createInstanceFromZone; | |
782 alias bindings.class_addMethods class_addMethods; | |
783 alias bindings.class_removeMethods class_removeMethods; | |
784 alias bindings.class_poseAs class_poseAs; | |
785 alias bindings.method_getSizeOfArguments method_getSizeOfArguments; | |
786 alias bindings.class_respondsToMethod class_respondsToMethod; | |
787 alias bindings.class_lookupMethod class_lookupMethod; | |
16
19885b43130e
Huge update, the bridge actually works now
Jacob Carlborg <doob@me.com>
parents:
1
diff
changeset
|
788 alias bindings.class_nextMethodList class_nextMethodList; |