Mercurial > projects > dwt-mac
diff dwt/internal/objc/runtime.d @ 45:d8635bb48c7c
Merge with SWT 3.5
author | Jacob Carlborg <doob@me.com> |
---|---|
date | Mon, 01 Dec 2008 17:07:00 +0100 |
parents | 642f460a0908 |
children | cfa563df4fdd |
line wrap: on
line diff
--- a/dwt/internal/objc/runtime.d Tue Oct 21 15:20:04 2008 +0200 +++ b/dwt/internal/objc/runtime.d Mon Dec 01 17:07:00 2008 +0100 @@ -9,16 +9,14 @@ import tango.stdc.stringz; -import dwt.dwthelper.utils : String; +import derelict.sdl.macinit.runtime; +import dwt.dwthelper.utils; import dwt.internal.cocoa.NSPoint; import dwt.internal.cocoa.NSRange; import dwt.internal.cocoa.NSSize; import dwt.internal.cocoa.NSRect; static import dwt.internal.objc.bindings; - -extern (C) -{ alias objc_ivar* Ivar; alias objc_method* Method; alias objc_object Protocol; @@ -30,21 +28,21 @@ alias extern (C) id function(id, SEL, ...) IMP; struct objc_object - { +{ Class isa; - } +} struct objc_super - { +{ id receiver; Class clazz; // for dwt compatibility alias clazz cls; - } +} struct objc_class - { +{ Class isa; Class super_class; const char* name; @@ -55,20 +53,20 @@ objc_method_list** methodLists; objc_cache* cache; objc_protocol_list* protocols; - } +} struct objc_ivar - { +{ char* ivar_name; char* ivar_type; int ivar_offset; version (X86_64) int space; - } +} struct objc_ivar_list - { +{ int ivar_count; version (X86_64) @@ -76,17 +74,17 @@ /* variable length structure */ objc_ivar ivar_list[1]; - } +} struct objc_method - { +{ SEL method_name; char* method_types; IMP method_imp; - } +} struct objc_method_list - { +{ objc_method_list* obsolete; int method_count; @@ -96,36 +94,49 @@ /* variable length structure */ objc_method method_list[1]; - } +} struct objc_cache - { +{ uint mask /* total = mask + 1 */; uint occupied; Method buckets[1]; - } +} struct objc_protocol_list - { +{ objc_protocol_list* next; long count; Protocol* list[1]; - } } +alias dwt.internal.objc.bindings.objc_registerClassPair objc_registerClassPair; +alias dwt.internal.objc.bindings.class_addProtocol class_addProtocol; +alias dwt.internal.objc.bindings.instrumentObjcMessageSends instrumentObjcMessageSends; +alias dwt.internal.objc.bindings.object_getClass object_getClass; +alias dwt.internal.objc.bindings.object_setClass object_setClass; -alias dwt.internal.objc.bindings.objc_registerClassPair objc_registerClassPair; bool class_addIvar (Class cls, String name, size_t size, byte alignment, String types) { return dwt.internal.objc.bindings.class_addIvar(cls, name.ptr, size, alignment, types.ptr); } -bool class_addMethod (Class cls, String name, IMP imp, String types) +bool class_addMethod (Class cls, SEL name, IMP imp, String types) +{ + return dwt.internal.objc.bindings.class_addMethod(cls, name, imp, types.ptr); +} + +IMP class_getMethodImplementation (Class cls, SEL name) { - return dwt.internal.objc.bindings.class_addMethod(cls, name.ptr, imp, types.ptr); + return dwt.internal.objc.bindings.class_getMethodImplementation(cls, name); +} + +String class_getName (Class cls) +{ + return fromStringz(dwt.internal.objc.bindings.class_getName(cls)); } Class objc_allocateClassPair (Class superclass, String name, size_t extraBytes) @@ -138,14 +149,19 @@ return dwt.internal.objc.bindings.objc_getClass(name.ptr); } +Protocol* objc_getProtocol (String name) +{ + return dwt.internal.objc.bindings.objc_getProtocol(name.ptr); +} + id objc_lookUpClass (String name) { return dwt.internal.objc.bindings.objc_lookUpClass(name.ptr); } -String object_getClassName (id obj) +SEL object_getClassName (id obj) { - return fromStringz(dwt.internal.objc.bindings.object_getClassName(obj)); + return dwt.internal.objc.bindings.object_getClassName(obj); } Ivar object_getInstanceVariable (id obj, String name, void** outValue) @@ -158,53 +174,40 @@ return dwt.internal.objc.bindings.object_setInstanceVariable(obj, name.ptr, value); } -String sel_registerName (String str) +SEL sel_registerName (String str) { - return fromStringz(dwt.internal.objc.bindings.sel_registerName(str.ptr)); + return dwt.internal.objc.bindings.sel_registerName(str.ptr); } -id objc_msgSend (ARGS...)(id theReceiver, String theSelector, ARGS args) +id objc_msgSend (ARGS...) (id theReceiver, SEL theSelector, ARGS args) { - return dwt.internal.objc.bindings.objc_msgSend(theReceiver, theSelector.ptr, args); + return dwt.internal.objc.bindings.objc_msgSend(theReceiver, theSelector, args); } -void objc_msgSend_struct (T, ARGS...)(T* result, id theReceiver, String theSelector, ARGS args) +void objc_msgSend_struct (T, ARGS...) (T* result, id theReceiver, SEL theSelector, ARGS args) { - result = cast(T*) dwt.internal.objc.bindings.objc_msgSend(theReceiver, theSelector.ptr, args); + result = cast(T*) dwt.internal.objc.bindings.objc_msgSend(theReceiver, theSelector, args); } -void objc_msgSend_stret (T, ARGS...)(T* stretAddr, id theReceiver, String theSelector, ARGS args) +void objc_msgSend_stret (T, ARGS...) (out T stretAddr, id theReceiver, SEL theSelector, ARGS args) { - dwt.internal.objc.bindings.objc_msgSend_stret(stretAddr, theReceiver, theSelector.ptr, args); + dwt.internal.objc.bindings.objc_msgSend_stret(stretAddr, theReceiver, theSelector, args); } -id objc_msgSendSuper (ARGS...)(objc_super* superr, String op, ARGS args) +id objc_msgSendSuper (ARGS...) (objc_super* superr, SEL op, ARGS args) { - return dwt.internal.objc.bindings.objc_msgSendSuper(superr, op.ptr, args); + return dwt.internal.objc.bindings.objc_msgSendSuper(superr, op, args); +} + +bool objc_msgSend_bool (ARGS...) (id theReceiver, SEL theSelector, ARGS args) +{ + return cast(bool) dwt.internal.objc.bindings.objc_msgSend(theReceiver, theSelector, args); } version (X86) { - double objc_msgSend_fpret(ARGS...)(id self, String op, ARGS args) + double objc_msgSend_fpret(ARGS...) (id self, SEL op, ARGS args) { - return dwt.internal.objc.bindings.objc_msgSend_fpret(self, op.ptr, args); + return dwt.internal.objc.bindings.objc_msgSend_fpret(self, op, args); } -} - - -// os_custom -extern (C): -//alias void function (id, SEL, NSRect*) funcPtr; -static IMP drawRect_1CALLBACK; - - -private void drawRect(id obj, SEL sel, NSRect rect) -{ - return cast(IMP) drawRect_1CALLBACK(obj, sel, &rect); -} - -IMP drawRect_CALLBACK (IMP func) -{ - drawRect_1CALLBACK = func; - return cast(IMP) &drawRect; } \ No newline at end of file