view src/PluginLoader.cpp @ 30:02db37c2301b

Add JNIEXPORT/JNICALL to definitions
author Chris Cannam
date Thu, 22 Nov 2012 11:38:55 +0000
parents 7d1118b3860d
children c9515589be7d
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;

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

JNIEXPORT jobjectArray JNICALL
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;
}    

JNIEXPORT jlong JNICALL
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;
}

JNIEXPORT jobjectArray JNICALL
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;
}