annotate src/getset.cpp @ 12:63e9115f95c6

Tiny fixes
author Chris Cannam
date Fri, 27 Jan 2012 14:34:19 +0000
parents d791e1324ab6
children f7ca3afb429c
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@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