view src/handle.h @ 23:cc9c503535d1

add listPlugins, some docs
author Chris Cannam
date Wed, 14 Nov 2012 17:53:03 +0000
parents f718b0961713
children c9515589be7d
line wrap: on
line source

#ifndef _HANDLE_H_INCLUDED_
#define _HANDLE_H_INCLUDED_

inline jfieldID getHandleField(JNIEnv *env, jobject obj)
{
    jclass c = env->GetObjectClass(obj);
    return env->GetFieldID(c, "nativeHandle", "J");
}

template <typename T>
T *getHandle(JNIEnv *env, jobject obj)
{
    jlong handle = env->GetLongField(obj, getHandleField(env, obj));
    return reinterpret_cast<T *>(handle);
}

template <typename T>
void setHandle(JNIEnv *env, jobject obj, T *t)
{
    jlong handle = reinterpret_cast<jlong>(t);
    env->SetLongField(obj, getHandleField(env, obj), handle);
}

#endif