pyjnius/jnius/jnius_localref.pxi

27 lines
657 B
Cython
Raw Normal View History

2012-08-20 07:35:14 +00:00
cdef class LocalRef:
cdef jobject obj
def __cinit__(self):
self.obj = NULL
def __dealloc__(self):
cdef JNIEnv *j_env
2012-08-20 07:35:14 +00:00
if self.obj != NULL:
j_env = get_jnienv()
j_env[0].DeleteGlobalRef(j_env, self.obj)
2012-08-20 07:35:14 +00:00
self.obj = NULL
cdef void create(self, JNIEnv *env, jobject obj):
self.obj = env[0].NewGlobalRef(env, obj)
2012-08-20 07:35:14 +00:00
def __repr__(self):
return '<LocalRef obj=0x{0:x} at 0x{1:x}>'.format(
<long><void *>self.obj, id(self))
2012-08-20 07:35:14 +00:00
cdef LocalRef create_local_ref(JNIEnv *env, jobject obj):
cdef LocalRef ret = LocalRef()
ret.create(env, obj)
return ret