annotate src/handle.h @ 28:f2914a92b553

Docs
author Chris Cannam
date Mon, 19 Nov 2012 15:12:44 +0000
parents f718b0961713
children c9515589be7d
rev   line source
Chris@0 1
Chris@0 2 #ifndef _HANDLE_H_INCLUDED_
Chris@0 3 #define _HANDLE_H_INCLUDED_
Chris@0 4
Chris@0 5 inline jfieldID getHandleField(JNIEnv *env, jobject obj)
Chris@0 6 {
Chris@0 7 jclass c = env->GetObjectClass(obj);
Chris@0 8 return env->GetFieldID(c, "nativeHandle", "J");
Chris@0 9 }
Chris@0 10
Chris@0 11 template <typename T>
Chris@0 12 T *getHandle(JNIEnv *env, jobject obj)
Chris@0 13 {
Chris@0 14 jlong handle = env->GetLongField(obj, getHandleField(env, obj));
Chris@0 15 return reinterpret_cast<T *>(handle);
Chris@0 16 }
Chris@0 17
Chris@0 18 template <typename T>
Chris@0 19 void setHandle(JNIEnv *env, jobject obj, T *t)
Chris@0 20 {
Chris@0 21 jlong handle = reinterpret_cast<jlong>(t);
Chris@0 22 env->SetLongField(obj, getHandleField(env, obj), handle);
Chris@0 23 }
Chris@0 24
Chris@0 25 #endif