annotate src/getset.cpp @ 7:93dfb83c6f82

Complete implementation of getOutputDescriptors
author Chris Cannam
date Thu, 26 Jan 2012 14:46:45 +0000
parents
children f3fc15d737eb
rev   line source
Chris@7 1
Chris@7 2 #include "getset.h"
Chris@7 3
Chris@7 4 #include <iostream>
Chris@7 5
Chris@7 6 void
Chris@7 7 setStringField(JNIEnv *env, jobject obj, std::string name, std::string value)
Chris@7 8 {
Chris@7 9 jclass cls = env->GetObjectClass(obj);
Chris@7 10 env->SetObjectField(obj,
Chris@7 11 env->GetFieldID(cls, name.c_str(), "Ljava/lang/String;"),
Chris@7 12 env->NewStringUTF(value.c_str()));
Chris@7 13 }
Chris@7 14
Chris@7 15 void
Chris@7 16 setFloatField(JNIEnv *env, jobject obj, std::string name, float value)
Chris@7 17 {
Chris@7 18 jclass cls = env->GetObjectClass(obj);
Chris@7 19 env->SetFloatField(obj,
Chris@7 20 env->GetFieldID(cls, name.c_str(), "F"),
Chris@7 21 value);
Chris@7 22 }
Chris@7 23
Chris@7 24 void
Chris@7 25 setBooleanField(JNIEnv *env, jobject obj, std::string name, bool value)
Chris@7 26 {
Chris@7 27 jclass cls = env->GetObjectClass(obj);
Chris@7 28 env->SetBooleanField(obj,
Chris@7 29 env->GetFieldID(cls, name.c_str(), "Z"),
Chris@7 30 value);
Chris@7 31 }
Chris@7 32
Chris@7 33 void
Chris@7 34 setIntField(JNIEnv *env, jobject obj, std::string name, int value)
Chris@7 35 {
Chris@7 36 jclass cls = env->GetObjectClass(obj);
Chris@7 37 env->SetIntField(obj,
Chris@7 38 env->GetFieldID(cls, name.c_str(), "I"),
Chris@7 39 value);
Chris@7 40 }
Chris@7 41
Chris@7 42 void
Chris@7 43 setObjectField(JNIEnv *env, jobject obj, std::string name, std::string type, jobject value)
Chris@7 44 {
Chris@7 45 jclass cls = env->GetObjectClass(obj);
Chris@7 46 jfieldID field = env->GetFieldID(cls, name.c_str(), type.c_str());
Chris@7 47 std::cerr << "setObjectField: class = " << cls << ", object = " << obj << ", field = " << field << ", value = " << value << std::endl;
Chris@7 48 env->SetObjectField(obj, field, value);
Chris@7 49 }
Chris@7 50
Chris@7 51 void
Chris@7 52 setStringArrayField(JNIEnv *env, jobject obj, std::string name, std::vector<std::string> values)
Chris@7 53 {
Chris@7 54 jclass strCls = env->FindClass("java/lang/String");
Chris@7 55 jobjectArray jarr = env->NewObjectArray(values.size(), strCls, 0);
Chris@7 56 for (int i = 0; i < values.size(); ++i) {
Chris@7 57 env->SetObjectArrayElement(jarr, i, env->NewStringUTF(values[i].c_str()));
Chris@7 58 }
Chris@7 59 setObjectField(env, obj, name, "[Ljava/lang/String;", jarr);
Chris@7 60 }
Chris@7 61
Chris@7 62 jmethodID
Chris@7 63 getEnumValueOfMethod(JNIEnv *env)
Chris@7 64 {
Chris@7 65 jclass enumClass = env->FindClass("java/lang/Enum");
Chris@7 66
Chris@7 67 // Enum.valueOf(Class, String) returns Enum
Chris@7 68 jmethodID valueOfMethod = env->GetStaticMethodID
Chris@7 69 (enumClass, "valueOf",
Chris@7 70 "(Ljava/lang/Class;Ljava/lang/String;)Ljava/lang/Enum;");
Chris@7 71
Chris@7 72 return valueOfMethod;
Chris@7 73 }
Chris@7 74