annotate src/getset.cpp @ 14:f7ca3afb429c

Implement convertFeature
author Chris Cannam
date Fri, 27 Jan 2012 18:19:45 +0000
parents 63e9115f95c6
children 530bf5009ee2
rev   line source
Chris@7 1
Chris@7 2 #include "getset.h"
Chris@7 3
Chris@7 4 #include <iostream>
Chris@7 5
Chris@10 6 int
Chris@10 7 getIntField(JNIEnv *env, jobject obj, std::string name)
Chris@10 8 {
Chris@10 9 jclass cls = env->GetObjectClass(obj);
Chris@12 10 return env->GetIntField(obj,
Chris@12 11 env->GetFieldID(cls, name.c_str(), "I"));
Chris@10 12 }
Chris@10 13
Chris@7 14 void
Chris@7 15 setStringField(JNIEnv *env, jobject obj, std::string name, std::string value)
Chris@7 16 {
Chris@7 17 jclass cls = env->GetObjectClass(obj);
Chris@7 18 env->SetObjectField(obj,
Chris@7 19 env->GetFieldID(cls, name.c_str(), "Ljava/lang/String;"),
Chris@7 20 env->NewStringUTF(value.c_str()));
Chris@7 21 }
Chris@7 22
Chris@7 23 void
Chris@7 24 setFloatField(JNIEnv *env, jobject obj, std::string name, float value)
Chris@7 25 {
Chris@7 26 jclass cls = env->GetObjectClass(obj);
Chris@7 27 env->SetFloatField(obj,
Chris@7 28 env->GetFieldID(cls, name.c_str(), "F"),
Chris@7 29 value);
Chris@7 30 }
Chris@7 31
Chris@7 32 void
Chris@7 33 setBooleanField(JNIEnv *env, jobject obj, std::string name, bool value)
Chris@7 34 {
Chris@7 35 jclass cls = env->GetObjectClass(obj);
Chris@7 36 env->SetBooleanField(obj,
Chris@7 37 env->GetFieldID(cls, name.c_str(), "Z"),
Chris@7 38 value);
Chris@7 39 }
Chris@7 40
Chris@7 41 void
Chris@7 42 setIntField(JNIEnv *env, jobject obj, std::string name, int value)
Chris@7 43 {
Chris@7 44 jclass cls = env->GetObjectClass(obj);
Chris@7 45 env->SetIntField(obj,
Chris@7 46 env->GetFieldID(cls, name.c_str(), "I"),
Chris@7 47 value);
Chris@7 48 }
Chris@7 49
Chris@7 50 void
Chris@14 51 setRealTimeField(JNIEnv *env, jobject obj, std::string name, Vamp::RealTime rt)
Chris@14 52 {
Chris@14 53 jclass rtClass = env->FindClass("org/vamp_plugins/RealTime");
Chris@14 54 jmethodID ctor = env->GetMethodID(rtClass, "<init>", "(II)V");
Chris@14 55 jobject jrt = env->NewObject(rtClass, ctor, rt.sec, rt.nsec);
Chris@14 56 setObjectField(env, obj, name, "Lorg/vamp_plugins/RealTime;", jrt);
Chris@14 57 }
Chris@14 58
Chris@14 59 void
Chris@7 60 setObjectField(JNIEnv *env, jobject obj, std::string name, std::string type, jobject value)
Chris@7 61 {
Chris@7 62 jclass cls = env->GetObjectClass(obj);
Chris@7 63 jfieldID field = env->GetFieldID(cls, name.c_str(), type.c_str());
Chris@7 64 env->SetObjectField(obj, field, value);
Chris@7 65 }
Chris@7 66
Chris@7 67 void
Chris@14 68 setFloatArrayField(JNIEnv *env, jobject obj, std::string name, std::vector<float> values)
Chris@14 69 {
Chris@14 70 jfloatArray jarr = env->NewFloatArray(values.size());
Chris@14 71 env->SetFloatArrayRegion(jarr, 0, values.size(), values.data());
Chris@14 72 setObjectField(env, obj, name, "[float", jarr);
Chris@14 73 }
Chris@14 74
Chris@14 75 void
Chris@7 76 setStringArrayField(JNIEnv *env, jobject obj, std::string name, std::vector<std::string> values)
Chris@7 77 {
Chris@7 78 jclass strCls = env->FindClass("java/lang/String");
Chris@7 79 jobjectArray jarr = env->NewObjectArray(values.size(), strCls, 0);
Chris@7 80 for (int i = 0; i < values.size(); ++i) {
Chris@7 81 env->SetObjectArrayElement(jarr, i, env->NewStringUTF(values[i].c_str()));
Chris@7 82 }
Chris@7 83 setObjectField(env, obj, name, "[Ljava/lang/String;", jarr);
Chris@7 84 }
Chris@7 85
Chris@7 86 jmethodID
Chris@7 87 getEnumValueOfMethod(JNIEnv *env)
Chris@7 88 {
Chris@7 89 jclass enumClass = env->FindClass("java/lang/Enum");
Chris@7 90
Chris@7 91 // Enum.valueOf(Class, String) returns Enum
Chris@7 92 jmethodID valueOfMethod = env->GetStaticMethodID
Chris@7 93 (enumClass, "valueOf",
Chris@7 94 "(Ljava/lang/Class;Ljava/lang/String;)Ljava/lang/Enum;");
Chris@7 95
Chris@7 96 return valueOfMethod;
Chris@7 97 }
Chris@7 98