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@18
|
72 setObjectField(env, obj, name, "[F", 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
|