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