view src/handle.h @ 31:d8ff8c5ad52a

Add host program, working like a minimal version of vamp-simple-host
author Chris Cannam
date Thu, 22 Nov 2012 14:31:23 +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