123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160 |
- {
- objcrtl20.pas
- Copyright (C) 2009 Dmitry Boyarintsev
- This unit is implementation for dynamic Objective-C Run-time Library based on run-time version 2.0
- headers included with XCode 3.1.2
- The original copyright note of is kept on each include file
- }
- unit objcrtl20;
- {$mode objfpc}{$H+}
- interface
- uses
- objcrtl, dynlibs;
- function InitializeObjcRtl20(const ObjCLibName: AnsiString): Boolean;
- implementation
- function InitializeObjcRtl20(const ObjCLibName: AnsiString): Boolean;
- var
- hnd : TLibHandle;
- begin
- hnd := LoadLibrary(ObjCLibName);
- Result := hnd <> 0;
- if not Result then Exit;
- LoadDefaultObjCExepction(hnd);
- LoadDefaultObjCSync(hnd);
- Pointer(sel_getName) := GetProcedureAddress(hnd, 'sel_getName');
- Pointer(sel_registerName) := GetProcedureAddress(hnd, 'sel_registerName');
- Pointer(object_getClassName) := GetProcedureAddress(hnd, 'object_getClassName');
- Pointer(object_getIndexedIvars) := GetProcedureAddress(hnd, 'object_getIndexedIvars');
- Pointer(sel_isMapped) := GetProcedureAddress(hnd, 'sel_isMapped');
- Pointer(sel_getUid) := GetProcedureAddress(hnd, 'sel_getUid');
- Pointer(object_copy) := GetProcedureAddress(hnd, 'object_copy');
- Pointer(object_dispose) := GetProcedureAddress(hnd, 'object_dispose');
- Pointer(object_getClass) := GetProcedureAddress(hnd, 'object_getClass');
- Pointer(object_setClass) := GetProcedureAddress(hnd, 'object_setClass');
- Pointer(object_getIvar) := GetProcedureAddress(hnd, 'object_getIvar');
- Pointer(object_setIvar) := GetProcedureAddress(hnd, 'object_setIvar');
- Pointer(object_setInstanceVariable) := GetProcedureAddress(hnd, 'object_setInstanceVariable');
- Pointer(object_getInstanceVariable) := GetProcedureAddress(hnd, 'object_getInstanceVariable');
- Pointer(objc_getClass) := GetProcedureAddress(hnd, 'objc_getClass');
- Pointer(objc_getMetaClass) := GetProcedureAddress(hnd, 'objc_getMetaClass');
- Pointer(objc_lookUpClass) := GetProcedureAddress(hnd, 'objc_lookUpClass');
- Pointer(objc_getRequiredClass) := GetProcedureAddress(hnd, 'objc_getRequiredClass');
- Pointer(objc_getFutureClass) := GetProcedureAddress(hnd, 'objc_getFutureClass');
- Pointer(objc_setFutureClass) := GetProcedureAddress(hnd, 'objc_setFutureClass');
- Pointer(objc_getClassList) := GetProcedureAddress(hnd, 'objc_getClassList');
- Pointer(objc_getProtocol) := GetProcedureAddress(hnd, 'objc_getProtocol');
- Pointer(objc_copyProtocolList) := GetProcedureAddress(hnd, 'objc_copyProtocolList');
- Pointer(class_getName) := GetProcedureAddress(hnd, 'class_getName');
- Pointer(class_isMetaClass) := GetProcedureAddress(hnd, 'class_isMetaClass');
- Pointer(class_getSuperclass) := GetProcedureAddress(hnd, 'class_getSuperclass');
- Pointer(class_setSuperclass) := GetProcedureAddress(hnd, 'class_setSuperclass');
- Pointer(class_getVersion) := GetProcedureAddress(hnd, 'class_getVersion');
- Pointer(class_setVersion) := GetProcedureAddress(hnd, 'class_setVersion');
- Pointer(class_getInstanceSize) := GetProcedureAddress(hnd, 'class_getInstanceSize');
- Pointer(class_getInstanceVariable) := GetProcedureAddress(hnd, 'class_getInstanceVariable');
- Pointer(class_getClassVariable) := GetProcedureAddress(hnd, 'class_getClassVariable');
- Pointer(class_copyIvarList) := GetProcedureAddress(hnd, 'class_copyIvarList');
- Pointer(class_getInstanceMethod) := GetProcedureAddress(hnd, 'class_getInstanceMethod');
- Pointer(class_getClassMethod) := GetProcedureAddress(hnd, 'class_getClassMethod');
- Pointer(class_getMethodImplementation) := GetProcedureAddress(hnd, 'class_getMethodImplementation');
- Pointer(class_getMethodImplementation_stret) := GetProcedureAddress(hnd, 'class_getMethodImplementation_stret');
- Pointer(class_respondsToSelector) := GetProcedureAddress(hnd, 'class_respondsToSelector');
- Pointer(class_copyMethodList) := GetProcedureAddress(hnd, 'class_copyMethodList');
- Pointer(class_conformsToProtocol) := GetProcedureAddress(hnd, 'class_conformsToProtocol');
- Pointer(class_copyProtocolList) := GetProcedureAddress(hnd, 'class_copyProtocolList');
- Pointer(class_getProperty) := GetProcedureAddress(hnd, 'class_getProperty');
- Pointer(class_copyPropertyList) := GetProcedureAddress(hnd, 'class_copyPropertyList');
- Pointer(class_getIvarLayout) := GetProcedureAddress(hnd, 'class_getIvarLayout');
- Pointer(class_getWeakIvarLayout) := GetProcedureAddress(hnd, 'class_getWeakIvarLayout');
- Pointer(class_createInstance) := GetProcedureAddress(hnd, 'class_createInstance');
- Pointer(objc_allocateClassPair) := GetProcedureAddress(hnd, 'objc_allocateClassPair');
- Pointer(objc_registerClassPair) := GetProcedureAddress(hnd, 'objc_registerClassPair');
- Pointer(objc_duplicateClass) := GetProcedureAddress(hnd, 'objc_duplicateClass');
- Pointer(objc_disposeClassPair) := GetProcedureAddress(hnd, 'objc_disposeClassPair');
- Pointer(class_addMethod) := GetProcedureAddress(hnd, 'class_addMethod');
- Pointer(class_replaceMethod) := GetProcedureAddress(hnd, 'class_replaceMethod');
- Pointer(class_addIvar) := GetProcedureAddress(hnd, 'class_addIvar');
- Pointer(class_addProtocol) := GetProcedureAddress(hnd, 'class_addProtocol');
- Pointer(class_setIvarLayout) := GetProcedureAddress(hnd, 'class_setIvarLayout');
- Pointer(class_setWeakIvarLayout) := GetProcedureAddress(hnd, 'class_setWeakIvarLayout');
- Pointer(method_getName) := GetProcedureAddress(hnd, 'method_getName');
- Pointer(method_getImplementation) := GetProcedureAddress(hnd, 'method_getImplementation');
- Pointer(method_getTypeEncoding) := GetProcedureAddress(hnd, 'method_getTypeEncoding');
- Pointer(method_getNumberOfArguments) := GetProcedureAddress(hnd, 'method_getNumberOfArguments');
- Pointer(method_copyReturnType) := GetProcedureAddress(hnd, 'method_copyReturnType');
- Pointer(method_copyArgumentType) := GetProcedureAddress(hnd, 'method_copyArgumentType');
- Pointer(method_getReturnType) := GetProcedureAddress(hnd, 'method_getReturnType');
- Pointer(method_getArgumentType) := GetProcedureAddress(hnd, 'method_getArgumentType');
- Pointer(method_getDescription) := GetProcedureAddress(hnd, 'method_getDescription');
- Pointer(method_setImplementation) := GetProcedureAddress(hnd, 'method_setImplementation');
- Pointer(method_exchangeImplementations) := GetProcedureAddress(hnd, 'method_exchangeImplementations');
- Pointer(ivar_getName) := GetProcedureAddress(hnd, 'ivar_getName');
- Pointer(ivar_getTypeEncoding) := GetProcedureAddress(hnd, 'ivar_getTypeEncoding');
- Pointer(ivar_getOffset) := GetProcedureAddress(hnd, 'ivar_getOffset');
- Pointer(property_getName) := GetProcedureAddress(hnd, 'property_getName');
- Pointer(property_getAttributes) := GetProcedureAddress(hnd, 'property_getAttributes');
- Pointer(protocol_conformsToProtocol) := GetProcedureAddress(hnd, 'protocol_conformsToProtocol');
- Pointer(protocol_isEqual) := GetProcedureAddress(hnd, 'protocol_isEqual');
- Pointer(protocol_getMethodDescription) := GetProcedureAddress(hnd, 'protocol_getMethodDescription');
- Pointer(protocol_copyMethodDescriptionList) := GetProcedureAddress(hnd, 'protocol_copyMethodDescriptionList');
- Pointer(protocol_getProperty) := GetProcedureAddress(hnd, 'protocol_getProperty');
- Pointer(protocol_copyPropertyList) := GetProcedureAddress(hnd, 'protocol_copyPropertyList');
- Pointer(protocol_copyProtocolList) := GetProcedureAddress(hnd, 'protocol_copyProtocolList');
- Pointer(objc_copyImageNames) := GetProcedureAddress(hnd, 'objc_copyImageNames');
- Pointer(class_getImageName) := GetProcedureAddress(hnd, 'class_getImageName');
- Pointer(objc_copyClassNamesForImage) := GetProcedureAddress(hnd, 'objc_copyClassNamesForImage');
- Pointer(sel_isEqual) := GetProcedureAddress(hnd, 'sel_isEqual');
- Pointer(objc_enumerationMutation) := GetProcedureAddress(hnd, 'objc_enumerationMutation');
- Pointer(objc_setEnumerationMutationHandler) := GetProcedureAddress(hnd, 'objc_setEnumerationMutationHandler');
- Pointer(objc_setForwardHandler) := GetProcedureAddress(hnd, 'objc_setForwardHandler');
- //Messaging
- LoadDefaultObjCMessaging(hnd);
- Pointer(method_invoke) := GetProcedureAddress(hnd, 'method_invoke');
- Pointer(method_invoke_stret) := GetProcedureAddress(hnd, 'method_invoke_stret');
- Pointer(objc_collect) := GetProcedureAddress(hnd, 'objc_collect');
- Pointer(objc_collectingEnabled) := GetProcedureAddress(hnd, 'objc_collectingEnabled');
- end;
- end.
|