Package org.python.modules._weakref
Class GlobalRef
- java.lang.Object
-
- java.lang.ref.Reference<T>
-
- java.lang.ref.WeakReference<PyObject>
-
- org.python.modules._weakref.GlobalRef
-
- All Implemented Interfaces:
ReferenceBackend
public class GlobalRef extends java.lang.ref.WeakReference<PyObject> implements ReferenceBackend
-
-
Field Summary
Fields Modifier and Type Field Description static ReferenceBackendFactoryfactoryThis is a hook for JyNI to insert a native-objects-aware implementation of ReferenceBackend.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description voidadd(AbstractReference ref)intcount()booleanequals(java.lang.Object o)AllowGlobalRefs to be used as hashtable-keys.AbstractReferencefind(java.lang.Class<?> cls)Search for a reusable reference.static intgetCount(PyObject object)Return the number of references to the specifiedPyObject.static PyListgetRefs(PyObject object)Return a list of references to the specifiedPyObject.static booleanhasDelayedCallbacks()inthashCode()AllowsGlobalRefto be used as hashtable-keys.booleanisCleared()static ReferenceBackendnewInstance(PyObject object)Create a new trackedReferenceBackend.static voidprocessDelayedCallbacks()Call all callbacks that were enqueued viadelayedCallback(GlobalRef)method.intpythonHashCode()The publicly usedhashCode, for theAbstractReferencewrapper.PyListrefs()voidrestore(PyObject formerReferent)Restores this weak reference to its former referent.-
Methods inherited from class java.lang.ref.Reference
clear, enqueue, get, isEnqueued, reachabilityFence
-
Methods inherited from class java.lang.Object
getClass, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface org.python.modules._weakref.ReferenceBackend
get
-
-
-
-
Field Detail
-
factory
public static ReferenceBackendFactory factory
This is a hook for JyNI to insert a native-objects-aware implementation of ReferenceBackend.
-
-
Constructor Detail
-
GlobalRef
public GlobalRef(PyObject object)
-
-
Method Detail
-
add
public void add(AbstractReference ref)
- Specified by:
addin interfaceReferenceBackend
-
find
public AbstractReference find(java.lang.Class<?> cls)
Search for a reusable reference. To be reused, it must be of the same class and it must not have a callback.- Specified by:
findin interfaceReferenceBackend
-
processDelayedCallbacks
public static void processDelayedCallbacks()
Call all callbacks that were enqueued viadelayedCallback(GlobalRef)method.- See Also:
delayedCallback(GlobalRef)
-
hasDelayedCallbacks
public static boolean hasDelayedCallbacks()
-
isCleared
public boolean isCleared()
- Specified by:
isClearedin interfaceReferenceBackend
-
count
public int count()
- Specified by:
countin interfaceReferenceBackend
-
refs
public PyList refs()
- Specified by:
refsin interfaceReferenceBackend
-
newInstance
public static ReferenceBackend newInstance(PyObject object)
Create a new trackedReferenceBackend. If noReferenceBackendFactoryis registered, it actually returns aGlobalRef.- Parameters:
object- aPyObjectto reference- Returns:
- a new tracked
ReferenceBackend
-
restore
public void restore(PyObject formerReferent)
Restores this weak reference to its former referent. This actually means that a freshGlobalRefis created and inserted into all adjacentAbstractReferences. The currentGlobalRefis disbanded. If the givenPyObjectis not the former referent of this weak reference, anIllegalArgumentExceptionis thrown.- Specified by:
restorein interfaceReferenceBackend- Throws:
java.lang.IllegalArgumentException- ifformerReferentis not the actual former referent.
-
getCount
public static int getCount(PyObject object)
Return the number of references to the specifiedPyObject.- Parameters:
object- a PyObject- Returns:
- an int reference count
-
getRefs
public static PyList getRefs(PyObject object)
Return a list of references to the specifiedPyObject.
-
equals
public boolean equals(java.lang.Object o)
AllowGlobalRefs to be used as hashtable-keys.- Overrides:
equalsin classjava.lang.Object
-
hashCode
public int hashCode()
AllowsGlobalRefto be used as hashtable-keys.- Overrides:
hashCodein classjava.lang.Object- Returns:
- a hashCode
int-value
-
pythonHashCode
public int pythonHashCode()
The publicly usedhashCode, for theAbstractReferencewrapper.- Specified by:
pythonHashCodein interfaceReferenceBackend- Returns:
- a hashCode
int-value
-
-