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@10
|
10 return env->GetObjectField(obj,
|
Chris@10
|
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@7
|
51 setObjectField(JNIEnv *env, jobject obj, std::string name, std::string type, jobject value)
|
Chris@7
|
52 {
|
Chris@7
|
53 jclass cls = env->GetObjectClass(obj);
|
Chris@7
|
54 jfieldID field = env->GetFieldID(cls, name.c_str(), type.c_str());
|
Chris@7
|
55 env->SetObjectField(obj, field, value);
|
Chris@7
|
56 }
|
Chris@7
|
57
|
Chris@7
|
58 void
|
Chris@7
|
59 setStringArrayField(JNIEnv *env, jobject obj, std::string name, std::vector<std::string> values)
|
Chris@7
|
60 {
|
Chris@7
|
61 jclass strCls = env->FindClass("java/lang/String");
|
Chris@7
|
62 jobjectArray jarr = env->NewObjectArray(values.size(), strCls, 0);
|
Chris@7
|
63 for (int i = 0; i < values.size(); ++i) {
|
Chris@7
|
64 env->SetObjectArrayElement(jarr, i, env->NewStringUTF(values[i].c_str()));
|
Chris@7
|
65 }
|
Chris@7
|
66 setObjectField(env, obj, name, "[Ljava/lang/String;", jarr);
|
Chris@7
|
67 }
|
Chris@7
|
68
|
Chris@7
|
69 jmethodID
|
Chris@7
|
70 getEnumValueOfMethod(JNIEnv *env)
|
Chris@7
|
71 {
|
Chris@7
|
72 jclass enumClass = env->FindClass("java/lang/Enum");
|
Chris@7
|
73
|
Chris@7
|
74 // Enum.valueOf(Class, String) returns Enum
|
Chris@7
|
75 jmethodID valueOfMethod = env->GetStaticMethodID
|
Chris@7
|
76 (enumClass, "valueOf",
|
Chris@7
|
77 "(Ljava/lang/Class;Ljava/lang/String;)Ljava/lang/Enum;");
|
Chris@7
|
78
|
Chris@7
|
79 return valueOfMethod;
|
Chris@7
|
80 }
|
Chris@7
|
81
|