Mercurial > projects > dstep
diff dstep/objc/bindings.d @ 1:033d260cfc9b
First upload of the bridge
author | Jacob Carlborg <doob@me.com> |
---|---|
date | Thu, 18 Jun 2009 22:00:13 +0200 |
parents | |
children | 19885b43130e |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/dstep/objc/bindings.d Thu Jun 18 22:00:13 2009 +0200 @@ -0,0 +1,152 @@ +/** + * Copyright: Copyright (c) 2009 Jacob Carlborg. + * Authors: Jacob Carlborg + * Version: Initial created: Feb 1, 2009 + * License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost Software License 1.0) + */ +module dstep.objc.bindings; + +import dstep.objc.message; +import dstep.objc.objc; +import dstep.objc.runtime; +import dstep.internal.Util; + +extern (C) +{ + // runtime.h + id object_copy (id obj, size_t size); + id object_dispose (id obj); + Class object_getClass (id obj); + Class object_setClass (id obj, Class cls); + char* object_getClassName (id obj); + void* object_getIndexedIvars (id obj); + id object_getIvar (id obj, Ivar ivar); + void object_setIvar (id obj, Ivar ivar, id value); + Ivar object_setInstanceVariable (id obj, char* name, void* value); + Ivar object_getInstanceVariable (id obj, char* name, void** outValue); + id objc_getClass (char* name); + id objc_getMetaClass (char* name); + id objc_lookUpClass (char* name); + id objc_getRequiredClass (char* name); + Class objc_getFutureClass (char* name); + void objc_setFutureClass (Class cls, char* name); + int objc_getClassList (Class* buffer, int bufferCount); + id objc_getProtocol (char* name); + Protocol** objc_copyProtocolList (uint* outCount); + char* class_getName (Class cls); + bool class_isMetaClass (Class cls); + Class class_getSuperclass (Class cls); + Class class_setSuperclass (Class cls, Class newSuper); + int class_getVersion (Class cls); + void class_setVersion (Class cls, int version_); + size_t class_getInstanceSize (Class cls); + Ivar class_getInstanceVariable (Class cls, char* name); + Ivar class_getClassVariable (Class cls, char* name); + Ivar* class_copyIvarList (Class cls, uint* outCount); + Method class_getInstanceMethod (Class cls, SEL name); + Method class_getClassMethod (Class cls, SEL name); + IMP class_getMethodImplementation (Class cls, SEL name); + IMP class_getMethodImplementation_stret (Class cls, SEL name); + bool class_respondsToSelector (Class cls, SEL sel); + Method* class_copyMethodList (Class cls, uint* outCount); + bool class_conformsToProtocol (Class cls, Protocol* protocol); + Protocol** class_copyProtocolList (Class cls, uint* outCount); + objc_property_t* class_getProperty (Class cls, char* name); + objc_property_t* class_copyPropertyList (Class cls, uint* outCount); + char* class_getIvarLayout (Class cls); + char* class_getWeakIvarLayout (Class cls); + id class_createInstance (Class cls, size_t extraBytes); + Class objc_allocateClassPair (Class superclass, char* name, size_t extraBytes); + void objc_registerClassPair (Class cls); + Class objc_duplicateClass (Class original, char* name, size_t extraBytes); + void objc_disposeClassPair (Class cls); + bool class_addMethod (Class cls, SEL name, IMP imp, char* types); + IMP class_replaceMethod (Class cls, SEL name, IMP imp, char* types); + bool class_addIvar (Class cls, char* name, size_t size, ubyte alignment, char* types); + bool class_addProtocol (Class cls, Protocol* protocol); + void class_setIvarLayout (Class cls, char* layout); + void class_setWeakIvarLayout (Class cls, char* layout); + SEL method_getName (Method m); + IMP method_getImplementation (Method m); + char* method_getTypeEncoding (Method m); + uint method_getNumberOfArguments (Method m); + char* method_copyReturnType (Method m); + char* method_copyArgumentType (Method m, uint index); + void method_getReturnType (Method m, char* dst, size_t dst_len); + void method_getArgumentType (Method m, uint index, char* dst, size_t dst_len); + objc_method_description* method_getDescription (Method m); + IMP method_setImplementation (Method m, IMP imp); + void method_exchangeImplementations (Method m1, Method m2); + char* ivar_getName (Ivar v); + char* ivar_getTypeEncoding (Ivar v); + ptrdiff_t ivar_getOffset (Ivar v); + char* property_getName (objc_property_t* property); + char* property_getAttributes (objc_property_t* property); + bool protocol_conformsToProtocol (id proto, id other); + bool protocol_isEqual (id proto, id other); + char* protocol_getName (id p); + objc_method_description protocol_getMethodDescription (id p, SEL aSel, bool isRequiredMethod, bool isInstanceMethod); + objc_method_description* protocol_copyMethodDescriptionList(id p, bool isRequiredMethod, bool isInstanceMethod, uint* outCount); + objc_property_t* protocol_getProperty (id proto, char* name, bool isRequiredProperty, bool isInstanceProperty); + objc_property_t* protocol_copyPropertyList (id proto, uint* outCount); + Protocol** protocol_copyProtocolList (id proto, uint* outCount); + char** objc_copyImageNames (uint* outCount); + char* class_getImageName (Class cls); + char** objc_copyClassNamesForImage (char* image, uint* outCount); + char* sel_getName (SEL sel); + SEL sel_getUid (char* str); + SEL sel_registerName (char* str); + bool sel_isEqual (SEL lhs, SEL rhs); + void objc_enumerationMutation (id arg0); + void objc_setForwardHandler (void* fwd, void* fwd_stret); + bool sel_isMapped (SEL sel); + id object_copyFromZone (id anObject, size_t nBytes, void* z); + id object_realloc (id anObject, size_t nBytes); + id object_reallocFromZone (id anObject, size_t nBytes, void* z); + void* objc_getClasses (); + void objc_addClass (Class myClass); + void objc_setMultithreaded (bool flag); + id class_createInstanceFromZone (Class arg0, size_t idxIvars, void* z); + void class_addMethods (Class arg0, objc_method_list* arg1); + void class_removeMethods (Class arg0, objc_method_list* arg1); + Class class_poseAs (Class imposter, Class original); + uint method_getSizeOfArguments (Method m); + uint method_getArgumentInfo (objc_method* m, int arg, char** type, int* offset); + bool class_respondsToMethod (Class arg0, SEL arg1); + IMP class_lookupMethod (Class arg0, SEL arg1); + Class objc_getOrigClass (char* name); + objc_method_list* class_nextMethodList (Class arg0, void* arg1); + + // message.h + id objc_msgSend (id self, SEL op, ...); + id objc_msgSendSuper (objc_super* super_, SEL op, ...); + void objc_msgSend_stret (void* stretAddr, id self, SEL op, ...); + void objc_msgSendSuper_stret (void* stretAddr, objc_super* super_, SEL op, ...); + id objc_msgSendv (id self, SEL op, size_t arg_size, void* arg_frame); + void objc_msgSendv_stret (void* stretAddr, id self, SEL op, size_t arg_size, void* arg_frame); + + id method_invoke (id receiver, Method m, ...); + void method_invoke_stret (id receiver, Method m, ...); + + version (X86_64) + real objc_msgSend_fpret (id self, SEL op, ...); + + else version (X86) + { + double objc_msgSendv_fpret (id self, SEL op, uint arg_size, void* arg_frame); + double objc_msgSend_fpret (id self, SEL op, ...); + } +} + +version (build) +{ + version (GNU) + { + pragma(link, "objc -framework Cocoa"); + } + + else + { + pragma(link, "objc -L-framework -LCocoa"); + } +} \ No newline at end of file