public ObjCObjectRef(ObjCObject referent) { super(referent); handle = referent.getHandle(); } }
public static boolean isObjectRetained(ObjCObject object) { synchronized (CUSTOM_OBJECTS) { return CUSTOM_OBJECTS.containsKey(object.getHandle()); } }
public static Object getAssociatedObject(ObjCObject object, Object key) { synchronized (ASSOCIATED_OBJECTS) { Map<Object, Object> map = ASSOCIATED_OBJECTS.get(object.getHandle()); if (map == null) { return null; } return map.get(key); } }
@MarshalsPointer public static long toNative(ObjCObject o, long flags) { if (o == null) { return 0L; } return o.getHandle(); }
@MarshalsPointer public static long protocolToNative(ObjCProtocol o, long flags) { if (o == null) { return 0L; } return ((ObjCObject) o).getHandle(); } }
public static void setAssociatedObject(ObjCObject object, Object key, Object value) { synchronized (ASSOCIATED_OBJECTS) { Map<Object, Object> map = ASSOCIATED_OBJECTS.get(object.getHandle()); if (map == null && value == null) { return; } if (map == null) { map = new HashMap<Object, Object>(); enableListener(object.getHandle()); ASSOCIATED_OBJECTS.put(object.getHandle(), map); } if (value != null) { map.put(key, value); } else { map.remove(key); if (map.isEmpty()) { disableListener(object.getHandle()); ASSOCIATED_OBJECTS.remove(object.getHandle()); } } } }
public static ObjCClass getFromObject(ObjCObject id) { long handle = id.getHandle(); ObjCClass c = null; if (handle != 0L) { long classPtr = ObjCRuntime.object_getClass(handle); c = ObjCObject.getPeerObject(classPtr); } if (c != null) { return c; } return getByType(id.getClass()); }
protected void dispose(boolean finalizing) { long handle = getHandle(); if (handle != 0) { removePeerObject(this); doDispose(); setHandle(0); } if (finalizing) { try { super.finalize(); } catch (Throwable e) { throw new RuntimeException(e); } } }
protected void initObject(long handle) { if (handle == 0) { throw new RuntimeException("Objective-C initialization method returned nil"); } long oldHandle = getHandle(); if (handle != oldHandle) { if (oldHandle != 0) { removePeerObject(this); } setHandle(handle); setPeerObject(handle, this); } }
private static void removePeerObject(ObjCObject o) { synchronized (objcBridgeLock) { long handle = o.getHandle(); ObjCObjectRef ref = peers.remove(handle); ObjCObject p = ref != null ? ref.get() : null; if (p != null && o != p) { // Not the same peer. Put it back. peers.put(handle, new ObjCObjectRef(p)); } } }
if (o != null && o.getHandle() != 0) { if (!expectedType.isAssignableFrom(o.getClass())) { if (ObjCClass.isObjCProxy(o.getClass())) {
private void initWithObjects(ObjCObject[] objects) { VoidPtr.VoidPtrPtr ptr = null; if (objects.length > 0) { ptr = Struct.allocate(VoidPtr.VoidPtrPtr.class, objects.length); for (int i = 0; i < objects.length; i++) { checkNull(objects[i]); ptr.set(objects[i].getHandle()); ptr = ptr.next(); } ptr = ptr.previous(objects.length); } initObject(init(ptr != null ? ptr.getHandle() : 0, objects.length)); }
public ObjCObjectRef(ObjCObject referent) { super(referent); handle = referent.getHandle(); } }
public static Object getAssociatedObject(ObjCObject object, Object key) { synchronized (ASSOCIATED_OBJECTS) { Map<Object, Object> map = ASSOCIATED_OBJECTS.get(object.getHandle()); if (map == null) { return null; } return map.get(key); } }
@MarshalsPointer public static long toNative(ObjCObject o, long flags) { if (o == null) { return 0L; } return o.getHandle(); }
@MarshalsPointer public static long protocolToNative(ObjCProtocol o, long flags) { if (o == null) { return 0L; } return ((ObjCObject) o).getHandle(); } }
public static boolean isObjectRetained(ObjCObject object) { synchronized (CUSTOM_OBJECTS) { return CUSTOM_OBJECTS.containsKey(object.getHandle()); } }
public static ObjCClass getFromObject(ObjCObject id) { long handle = id.getHandle(); ObjCClass c = null; if (handle != 0L) { long classPtr = ObjCRuntime.object_getClass(handle); c = ObjCObject.getPeerObject(classPtr); } if (c != null) { return c; } return getByType(id.getClass()); }
private static void removePeerObject(ObjCObject o) { synchronized (objcBridgeLock) { long handle = o.getHandle(); ObjCObjectRef ref = peers.remove(handle); ObjCObject p = ref != null ? ref.get() : null; if (p != null && o != p) { // Not the same peer. Put it back. peers.put(handle, new ObjCObjectRef(p)); } } }
private void initWithObjects(ObjCObject[] objects) { VoidPtr.VoidPtrPtr ptr = null; if (objects.length > 0) { ptr = Struct.allocate(VoidPtr.VoidPtrPtr.class, objects.length); for (int i = 0; i < objects.length; i++) { checkNull(objects[i]); ptr.set(objects[i].getHandle()); ptr = ptr.next(); } ptr = ptr.previous(objects.length); } initObject(init(ptr != null ? ptr.getHandle() : 0, objects.length)); }