Mercurial > hg > jvamp
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 |