/** * Marshaler used for factory methods which have already retained the object * they return. */ public static class NoRetainMarshaler { @MarshalsPointer public static NSObject toObject(Class<? extends NSObject> cls, long handle, long flags) { return Marshaler.toObject(cls, handle, flags, false); } @MarshalsPointer public static long toNative(NSObject o, long flags) { return Marshaler.toNative(o, flags); } }
protected static void retain(long handle) { ObjCRuntime.void_objc_msgSend(handle, retain.getHandle()); }
@Override public String toString() { return getName(); }
Selector selector = Selector.register(selName); String encoding = null; TypeEncoding typeEncoding = method.getAnnotation(TypeEncoding.class); } else { long methodPtr = isClassMethod ? ObjCRuntime.class_getClassMethod(superclass.getHandle(), selector.getHandle()) : ObjCRuntime.class_getInstanceMethod(superclass.getHandle(), selector.getHandle()); if (methodPtr != 0L) { long encodingPtr = ObjCRuntime.method_getTypeEncoding(methodPtr); if (!ObjCRuntime.class_addMethod(ownerHandle, selector.getHandle(), impl, encoding != null ? VM.getStringUTFChars(encoding) : 0L)) { throw new ObjCClassNotFoundException("Failed to add method " + selName + " to custom Objective-C class for Java class: " + type);
/*<ptr>*/public static class PFQueryPtr extends Ptr<PFQuery, PFQueryPtr> {}/*</ptr>*/ /*<bind>*/static { ObjCRuntime.bind(PFQuery.class); }/*</bind>*/
protected static void release(long handle) { ObjCRuntime.void_objc_msgSend(handle, release.getHandle()); }
private Selector getUniqueSelector() { String name = "__menuitem_" + getHandle(); return Selector.register(name); } /*<constructors>*/
Selector selector = Selector.register(selName); String encoding = null; TypeEncoding typeEncoding = method.getAnnotation(TypeEncoding.class); } else { long methodPtr = isClassMethod ? ObjCRuntime.class_getClassMethod(superclass.getHandle(), selector.getHandle()) : ObjCRuntime.class_getInstanceMethod(superclass.getHandle(), selector.getHandle()); if (methodPtr != 0L) { long encodingPtr = ObjCRuntime.method_getTypeEncoding(methodPtr); if (!ObjCRuntime.class_addMethod(ownerHandle, selector.getHandle(), impl, encoding != null ? VM.getStringUTFChars(encoding) : 0L)) { throw new ObjCClassNotFoundException("Failed to add method " + selName + " to custom Objective-C class for Java class: " + type);
@Override public String toString() { return getName(); }
protected static void autorelease(long handle) { ObjCRuntime.void_objc_msgSend(handle, autorelease.getHandle()); }
public static class AsStringMarshaler { @MarshalsPointer public static String toObject(Class<?> cls, long handle, long flags) { if (handle != 0) { long length = length(handle, sel_length); if (length == 0) { return EMPTY_STRING; } char[] chars = new char[(int) length]; getCharacters(handle, sel_getCharacters, VM.getArrayValuesAddress(chars), new NSRange(0, length)); return VM.newStringNoCopy(chars, 0, (int) length); } return null; } @MarshalsPointer public static long toNative(String o, long flags) { if (o == null) { return 0L; } long handle = create(getChars(o), o.length()); // retainCount is now 1 retain(handle); // Make sure the retainCount is 1 when we exit this try block // retainCount is now 2 if ((flags & MarshalerFlags.CALL_TYPE_CALLBACK) > 0) { // NSStrings returned by callbacks should be autoreleased autorelease(handle); } return handle; // retainCount is 1 after the return } @AfterBridgeCall
static long alloc(ObjCClass c) { long h = ObjCRuntime.ptr_objc_msgSend(c.getHandle(), alloc.getHandle()); if (h == 0L) { throw new OutOfMemoryError(); } return h; }
/*<ptr>*/public static class CIFilterPtr extends Ptr<CIFilter, CIFilterPtr> {}/*</ptr>*/ /*<bind>*/static { ObjCRuntime.bind(CIFilter.class); }/*</bind>*/
private static void enableListener(long handle) { long releaseListener = ObjCRuntime.objc_getAssociatedObject(handle, RELEASE_LISTENER_CLASS); if (releaseListener == 0) { releaseListener = ObjCRuntime.ptr_objc_msgSend(RELEASE_LISTENER_CLASS, alloc.getHandle()); if (releaseListener == 0L) { throw new OutOfMemoryError(); } releaseListener = ObjCRuntime.ptr_objc_msgSend(releaseListener, init.getHandle()); VM.setPointer(releaseListener + OWNER_IVAR_OFFSET, handle); ObjCRuntime.objc_setAssociatedObject(handle, RELEASE_LISTENER_CLASS, releaseListener, OBJC_ASSOCIATION_RETAIN_NONATOMIC); ObjCRuntime.void_objc_msgSend(releaseListener, release.getHandle()); } }
/** * Marshaler used for factory methods which have already retained the object * they return. */ public static class NoRetainMarshaler { @MarshalsPointer public static NSObject toObject(Class<? extends NSObject> cls, long handle, long flags) { return Marshaler.toObject(cls, handle, flags, false); } @MarshalsPointer public static long toNative(NSObject o, long flags) { return Marshaler.toNative(o, flags); } }
public void setActionListener(OnActionListener action) { this.actionListener = action; Selector sel = null; if (action != null) { sel = getUniqueSelector(); } setAction(sel); synchronized (items) { if (action != null) { items.put(sel.getHandle(), this); } else { items.remove(sel.getHandle()); } } } public OnActionListener getActionListener() {
/** * Marshaler used for factory methods which have already retained the object * they return. */ public static class NoRetainMarshaler { @MarshalsPointer public static NSObject toObject(Class<? extends NSObject> cls, long handle, long flags) { return Marshaler.toObject(cls, handle, flags, false); } @MarshalsPointer public static long toNative(NSObject o, long flags) { return Marshaler.toNative(o, flags); } }
public UIMenuItem(String title, OnActionListener action) { super((SkipInit) null); if (action == null) { throw new NullPointerException("action"); } this.actionListener = action; Selector sel = getUniqueSelector(); initObject(init(title, sel)); synchronized (items) { items.put(sel.getHandle(), this); } }
private Selector getUniqueSelector() { String name = "__menuitem_" + getHandle(); return Selector.register(name); } /*<constructors>*/
protected static String domain(long handle) { long h = ObjCRuntime.ptr_objc_msgSend(handle, domain.getHandle()); NSString s = ObjCObject.toObjCObject(NSString.class, h, 0); return s.toString(); }