view src/PluginLoader.cpp @ 29:7d1118b3860d

Add adapter flags
author Chris Cannam
date Thu, 22 Nov 2012 11:35:17 +0000
parents cd430fbf6795
children 02db37c2301b
line wrap: on
line source
#include "org_vamp_plugins_PluginLoader.h"

#include <vamp-hostsdk/PluginLoader.h>

#include "handle.h"

using Vamp::Plugin;
using Vamp::HostExt::PluginLoader;

void
Java_org_vamp_1plugins_PluginLoader_initialise(JNIEnv *env, jobject obj)
{
    PluginLoader *inst = PluginLoader::getInstance();
    setHandle(env, obj, inst);
}

jobjectArray
Java_org_vamp_1plugins_PluginLoader_listPlugins(JNIEnv *env, jobject obj)
{
    PluginLoader *inst = getHandle<PluginLoader>(env, obj);
    PluginLoader::PluginKeyList plugins = inst->listPlugins();
    jobjectArray result = env->NewObjectArray
	(plugins.size(), env->FindClass("java/lang/String"), 0);
    for (int i = 0; i < plugins.size(); ++i) {
	env->SetObjectArrayElement(result, i,
				   env->NewStringUTF(plugins[i].c_str()));
    }
    return result;
}    

jlong
Java_org_vamp_1plugins_PluginLoader_loadPluginNative(JNIEnv *env, jobject obj,
						     jstring key, jfloat rate,
						     jint flags)
{
    PluginLoader *inst = getHandle<PluginLoader>(env, obj);
    const char *kstr = env->GetStringUTFChars(key, 0);
    Plugin *p = inst->loadPlugin(kstr, rate, flags);
    env->ReleaseStringUTFChars(key, kstr);
    return (jlong)p;
}

jobjectArray
Java_org_vamp_1plugins_PluginLoader_getPluginCategory(JNIEnv *env, jobject obj,
						      jstring key)
{
    PluginLoader *inst = getHandle<PluginLoader>(env, obj);
    const char *kstr = env->GetStringUTFChars(key, 0);
    PluginLoader::PluginCategoryHierarchy cat = inst->getPluginCategory(kstr);
    jobjectArray result = env->NewObjectArray
	(cat.size(), env->FindClass("java/lang/String"), 0);
    for (int i = 0; i < cat.size(); ++i) {
	env->SetObjectArrayElement(result, i,
				   env->NewStringUTF(cat[i].c_str()));
    }
    return result;
}