Chris@7: Chris@7: #include "getset.h" Chris@7: Chris@7: #include Chris@7: Chris@10: int Chris@10: getIntField(JNIEnv *env, jobject obj, std::string name) Chris@10: { Chris@10: jclass cls = env->GetObjectClass(obj); Chris@12: return env->GetIntField(obj, Chris@12: env->GetFieldID(cls, name.c_str(), "I")); Chris@10: } Chris@10: Chris@7: void Chris@7: setStringField(JNIEnv *env, jobject obj, std::string name, std::string value) Chris@7: { Chris@7: jclass cls = env->GetObjectClass(obj); Chris@7: env->SetObjectField(obj, Chris@7: env->GetFieldID(cls, name.c_str(), "Ljava/lang/String;"), Chris@7: env->NewStringUTF(value.c_str())); Chris@7: } Chris@7: Chris@7: void Chris@7: setFloatField(JNIEnv *env, jobject obj, std::string name, float value) Chris@7: { Chris@7: jclass cls = env->GetObjectClass(obj); Chris@7: env->SetFloatField(obj, Chris@7: env->GetFieldID(cls, name.c_str(), "F"), Chris@7: value); Chris@7: } Chris@7: Chris@7: void Chris@7: setBooleanField(JNIEnv *env, jobject obj, std::string name, bool value) Chris@7: { Chris@7: jclass cls = env->GetObjectClass(obj); Chris@7: env->SetBooleanField(obj, Chris@7: env->GetFieldID(cls, name.c_str(), "Z"), Chris@7: value); Chris@7: } Chris@7: Chris@7: void Chris@7: setIntField(JNIEnv *env, jobject obj, std::string name, int value) Chris@7: { Chris@7: jclass cls = env->GetObjectClass(obj); Chris@7: env->SetIntField(obj, Chris@7: env->GetFieldID(cls, name.c_str(), "I"), Chris@7: value); Chris@7: } Chris@7: Chris@7: void Chris@14: setRealTimeField(JNIEnv *env, jobject obj, std::string name, Vamp::RealTime rt) Chris@14: { Chris@14: jclass rtClass = env->FindClass("org/vamp_plugins/RealTime"); Chris@14: jmethodID ctor = env->GetMethodID(rtClass, "", "(II)V"); Chris@14: jobject jrt = env->NewObject(rtClass, ctor, rt.sec, rt.nsec); Chris@14: setObjectField(env, obj, name, "Lorg/vamp_plugins/RealTime;", jrt); Chris@14: } Chris@14: Chris@14: void Chris@7: setObjectField(JNIEnv *env, jobject obj, std::string name, std::string type, jobject value) Chris@7: { Chris@7: jclass cls = env->GetObjectClass(obj); Chris@7: jfieldID field = env->GetFieldID(cls, name.c_str(), type.c_str()); Chris@7: env->SetObjectField(obj, field, value); Chris@7: } Chris@7: Chris@7: void Chris@14: setFloatArrayField(JNIEnv *env, jobject obj, std::string name, std::vector values) Chris@14: { Chris@14: jfloatArray jarr = env->NewFloatArray(values.size()); Chris@14: env->SetFloatArrayRegion(jarr, 0, values.size(), values.data()); Chris@18: setObjectField(env, obj, name, "[F", jarr); Chris@14: } Chris@14: Chris@14: void Chris@7: setStringArrayField(JNIEnv *env, jobject obj, std::string name, std::vector values) Chris@7: { Chris@7: jclass strCls = env->FindClass("java/lang/String"); Chris@7: jobjectArray jarr = env->NewObjectArray(values.size(), strCls, 0); Chris@7: for (int i = 0; i < values.size(); ++i) { Chris@7: env->SetObjectArrayElement(jarr, i, env->NewStringUTF(values[i].c_str())); Chris@7: } Chris@7: setObjectField(env, obj, name, "[Ljava/lang/String;", jarr); Chris@7: } Chris@7: Chris@7: jmethodID Chris@7: getEnumValueOfMethod(JNIEnv *env) Chris@7: { Chris@7: jclass enumClass = env->FindClass("java/lang/Enum"); Chris@7: Chris@7: // Enum.valueOf(Class, String) returns Enum Chris@7: jmethodID valueOfMethod = env->GetStaticMethodID Chris@7: (enumClass, "valueOf", Chris@7: "(Ljava/lang/Class;Ljava/lang/String;)Ljava/lang/Enum;"); Chris@7: Chris@7: return valueOfMethod; Chris@7: } Chris@7: