annotate src/handle.h @ 18:530bf5009ee2
Pull out Feature to a separate file; JNI doesn't seem to be able to find its constructor otherwise. Also a couple of other fixes
author |
Chris Cannam |
date |
Tue, 07 Feb 2012 12:12:36 +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
|