Skip to content

Commit

Permalink
Bind most of the objc runtime functions (fixes #1037).
Browse files Browse the repository at this point in the history
  • Loading branch information
BlueRiverInteractive committed Jun 26, 2015
1 parent b8083d6 commit e6fa767
Showing 1 changed file with 115 additions and 6 deletions.
121 changes: 115 additions & 6 deletions objc/src/main/java/org/robovm/objc/ObjCRuntime.java
Expand Up @@ -137,63 +137,156 @@ static synchronized int getStructSize(Class<?> cls) {
return size;
}

@Bridge
public static native @Pointer long objc_getClass(@Pointer long name);

/* selector */

@Bridge
public static native BytePtr sel_getName(Selector sel);

@Bridge
public static native Selector sel_registerName(BytePtr str);

/* objc */

@Bridge
public static native void objc_setAssociatedObject(@Pointer long object, @Pointer long key, @Pointer long value, int policy);

public static native @Pointer long objc_getClass(@Pointer long name);
@Bridge
public static native @Pointer long objc_getAssociatedObject(@Pointer long object, @Pointer long key);
public static native @Pointer long objc_getMetaClass(@Pointer long name);

@Bridge
public static native @Pointer long objc_allocateClassPair(@Pointer long superclass, @Pointer long name, @Pointer long extraBytes);

@Bridge
public static native void objc_registerClassPair(@Pointer long cls);

@Bridge
public static native @Pointer long objc_getProtocol(@Pointer long name);

@Bridge
public static native @Pointer long objc_allocateProtocol(@Pointer long name);

@Bridge
public static native void objc_registerProtocol(@Pointer long protocol);

@Bridge
public static native void objc_setAssociatedObject(@Pointer long object, @Pointer long key, @Pointer long value, int policy);

@Bridge
public static native @Pointer long objc_getAssociatedObject(@Pointer long object, @Pointer long key);

/* object */

@Bridge
public static native @Pointer long object_getClass(@Pointer long object);

@Bridge
public static native @Pointer long object_setClass(@Pointer long object, @Pointer long cls);

@Bridge
public static native @Pointer long object_getClassName(@Pointer long object);

@Bridge
public static native @Pointer long object_dispose(@Pointer long object);

@Bridge
public static native @Pointer long object_getIvar(@Pointer long object, @Pointer long ivar);

@Bridge
public static native void object_setIvar(@Pointer long object, @Pointer long ivar, @Pointer long value);

/* class */

@Bridge
public static native @Pointer long class_getSuperclass(@Pointer long cls);

@Bridge
public static native @Pointer long class_isMetaClass(@Pointer long cls);

@Bridge
public static native @Pointer long class_getName(@Pointer long cls);

@Bridge
public static native @Pointer long class_getInstanceMethod(@Pointer long aClass, @Pointer long aSelector);

@Bridge
public static native @Pointer long class_getClassMethod(@Pointer long aClass, @Pointer long aSelector);

@Bridge
public static native boolean class_addProtocol(@Pointer long cls, @Pointer long protocol);

@Bridge
public static native boolean class_conformsToProtocol(@Pointer long cls, @Pointer long protocol);

@Bridge
public static native boolean class_addMethod(@Pointer long cls, @Pointer long name, @Pointer long imp, @Pointer long types);

@Bridge
public static native @Pointer long class_replaceMethod(@Pointer long cls, @Pointer long name, @Pointer long imp, @Pointer long types);

@Bridge
public static native @Pointer long class_getMethodImplementation(@Pointer long cls, @Pointer long name);

@Bridge
public static native boolean class_addIvar(@Pointer long cls, @Pointer long name, int size, byte alignment, @Pointer long types);

@Bridge
public static native @Pointer long class_getInstanceVariable(@Pointer long cls, @Pointer long name);

@Bridge
public static native @Pointer long class_getClassVariable(@Pointer long cls, @Pointer long name);

@Bridge
public static native @Pointer long class_getIvarLayout(@Pointer long cls);

@Bridge
public static native void class_setIvarLayout(@Pointer long cls, @Pointer long layout);

@Bridge
public static native @Pointer long class_getProperty(@Pointer long cls, @Pointer long name);

@Bridge
public static native boolean class_respondsToSelector(@Pointer long cls, @Pointer long sel);

/* protocol */

@Bridge
public static native @Pointer long protocol_getName(@Pointer long protocol);

@Bridge
public static native void protocol_addProtocol(@Pointer long protocol, @Pointer long addition);

@Bridge
public static native boolean protocol_conformsToProtocol(@Pointer long protocol, @Pointer long other);

@Bridge
public static native @Pointer long protocol_getProperty(@Pointer long protocol, @Pointer long name, boolean isRequiredProperty, boolean isInstanceProperty);

/* ivar */

@Bridge
public static native @Pointer long ivar_getName(@Pointer long ivar);

@Bridge
public static native @Pointer long ivar_getTypeEncoding(@Pointer long ivar);

@Bridge
public static native int ivar_getOffset(@Pointer long ivar);

/* method */

@Bridge
public static native @Pointer long method_getName(@Pointer long m);

@Bridge
public static native @Pointer long method_copyReturnType(@Pointer long m);

@Bridge
public static native @Pointer long method_copyArgumentType(@Pointer long m, int index);

@Bridge
public static native int method_getNumberOfArguments(@Pointer long m);

@Bridge
public static native @Pointer long method_getTypeEncoding(@Pointer long method);

Expand All @@ -203,6 +296,22 @@ static synchronized int getStructSize(Class<?> cls) {
@Bridge
public static native @Pointer long method_setImplementation(@Pointer long m, @Pointer long imp);

@Bridge
public static native void method_exchangeImplementations(@Pointer long m1, @Pointer long m2);

/* property */

@Bridge
public static native @Pointer long property_getName(@Pointer long property);

@Bridge
public static native BytePtr property_getAttributes(@Pointer long property);

@Bridge
public static native BytePtr property_copyAttributeValue(@Pointer long property, BytePtr attributeName);

/* message */

@Bridge(symbol = "objc_msgSend")
public static native @Pointer long ptr_objc_msgSend(@Pointer long receiver, @Pointer long selector);

Expand Down

0 comments on commit e6fa767

Please sign in to comment.