Chris@0: #include "org_vamp_plugins_PluginLoader.h" Chris@0: Chris@0: #include Chris@0: Chris@0: #include "handle.h" Chris@0: Chris@0: using Vamp::Plugin; Chris@0: using Vamp::HostExt::PluginLoader; Chris@0: Chris@30: JNIEXPORT void JNICALL Chris@0: Java_org_vamp_1plugins_PluginLoader_initialise(JNIEnv *env, jobject obj) Chris@0: { Chris@0: PluginLoader *inst = PluginLoader::getInstance(); Chris@0: setHandle(env, obj, inst); Chris@0: } Chris@0: Chris@30: JNIEXPORT jobjectArray JNICALL Chris@23: Java_org_vamp_1plugins_PluginLoader_listPlugins(JNIEnv *env, jobject obj) Chris@23: { Chris@23: PluginLoader *inst = getHandle(env, obj); Chris@23: PluginLoader::PluginKeyList plugins = inst->listPlugins(); Chris@23: jobjectArray result = env->NewObjectArray Chris@23: (plugins.size(), env->FindClass("java/lang/String"), 0); Chris@23: for (int i = 0; i < plugins.size(); ++i) { Chris@23: env->SetObjectArrayElement(result, i, Chris@23: env->NewStringUTF(plugins[i].c_str())); Chris@23: } Chris@23: return result; Chris@23: } Chris@23: Chris@30: JNIEXPORT jlong JNICALL Chris@0: Java_org_vamp_1plugins_PluginLoader_loadPluginNative(JNIEnv *env, jobject obj, Chris@29: jstring key, jfloat rate, Chris@29: jint flags) Chris@0: { Chris@0: PluginLoader *inst = getHandle(env, obj); Chris@0: const char *kstr = env->GetStringUTFChars(key, 0); Chris@29: Plugin *p = inst->loadPlugin(kstr, rate, flags); Chris@0: env->ReleaseStringUTFChars(key, kstr); Chris@0: return (jlong)p; Chris@0: } Chris@0: Chris@30: JNIEXPORT jobjectArray JNICALL Chris@24: Java_org_vamp_1plugins_PluginLoader_getPluginCategory(JNIEnv *env, jobject obj, Chris@24: jstring key) Chris@24: { Chris@24: PluginLoader *inst = getHandle(env, obj); Chris@24: const char *kstr = env->GetStringUTFChars(key, 0); Chris@24: PluginLoader::PluginCategoryHierarchy cat = inst->getPluginCategory(kstr); Chris@24: jobjectArray result = env->NewObjectArray Chris@24: (cat.size(), env->FindClass("java/lang/String"), 0); Chris@24: for (int i = 0; i < cat.size(); ++i) { Chris@24: env->SetObjectArrayElement(result, i, Chris@24: env->NewStringUTF(cat[i].c_str())); Chris@24: } Chris@24: return result; Chris@24: } Chris@0: Chris@23: