include <hush/java.h>
include <hush/kit.h>
include <hush/session.h>
include <hush/io.h>
#undef string
include <native/hush_dv_api_kit.h>
define method(X) Java_hush_dv_api_kit_##X
JNIEXPORT jint JNICALL method(init)(JNIEnv *env, jobject obj)
{
if (env && obj); // Wall
jint result = (jint) kit::_default; // (jint) new kit();
if (!result) {
kit* x = new kit("tk");
session::_default->_register(x);
result = (jint) x;
}
return result;
}
JNIEXPORT jint JNICALL method(load)(JNIEnv *env, jobject obj, jstring s)
{
java_vm<kit> vm(env,obj);
const char *str = vm.get(s);
int r = vm->load(str);
vm.release(s);
return (jint) r;
}
JNIEXPORT void JNICALL method(source)(JNIEnv *env, jobject obj, jstring s)
{
java_vm<kit> vm(env,obj);
const char *str = vm.get(s);
vm->source(str);
vm.release(s);
}
JNIEXPORT void JNICALL method(trace)(JNIEnv *env, jobject obj)
{
java_vm<kit> vm(env,obj);
vm->trace();
}
JNIEXPORT void JNICALL method(eval)(JNIEnv *env, jobject obj, jstring s)
{
java_vm<kit> vm(env,obj);
const char *str = vm.get(s);
vm->eval(str);
vm.release(s);
}
JNIEXPORT jstring JNICALL method(evaluate)(JNIEnv *env, jobject obj, jstring s)
{
java_vm<kit> vm(env,obj);
const char *str = vm.get(s);
char* res = vm->evaluate(str);
vm.release(s);
return vm.string(res);
}
JNIEXPORT jstring JNICALL method(getresult)(JNIEnv *env, jobject obj)
{
java_vm<kit> vm(env,obj);
char *s = vm->result();
if (s) return vm.string(s);
else return vm.string("-");
}
JNIEXPORT void JNICALL method(setresult)(JNIEnv *env, jobject obj, jstring s)
{
char str[1024];
java_vm<kit> vm(env,obj);
char *p = vm.get(s);
strcpy(str,p);
vm->result(p);
//vm.release(s);
}
JNIEXPORT void JNICALL method(nativeassert)(JNIEnv *env, jobject obj, jstring cl, jstring opts)
{
java_vm<kit> vm(env,obj);
char* _cl = vm.get(cl);
char* _opts = vm.get(opts);
vm->_assert(_cl,_opts);
vm.release(opts,_opts);
vm.release(cl,_cl);
}
JNIEXPORT void JNICALL method(nativeretract)(JNIEnv *env, jobject obj, jstring cl, jstring opts)
{
java_vm<kit> vm(env,obj);
char* _cl = vm.get(cl);
char* _opts = vm.get(opts);
vm->_retract(_cl,_opts);
vm.release(opts,_opts);
vm.release(cl,_cl);
}
JNIEXPORT void JNICALL method(bind)(JNIEnv *env, jobject obj,
jstring s, jobject o)
{
java_vm<kit> vm(env,obj);
java_vm<handler>* vmp = new java_vm<handler>(env,o,"Handler");
const char *str = vm.get(s);
handler* h = vmp->self();
if (h) {
cerr << "Setting (kit) VM" << endl;
if (!h->_vmp) h->_vmp = vmp;
} else {
cerr << "Creating (kit) VM" << endl;
h = new handler();
session::_default->_register(h);
h->_vmp = vmp;
}
h->_register(vmp);
vm->bind(str,h);
vm.release(s, str);
}
JNIEXPORT void JNICALL method(after)(JNIEnv *env, jobject obj,
jint msec, jobject o)
{
java_vm<kit> vm(env,obj);
java_vm<handler>* vmp = new java_vm<handler>(env,o,"Handler");
handler* h = vmp->self();
if (h) {
delete vmp;
} else {
h = new handler();
session::_default->_register(h);
h->_vmp = vmp;
h->_register(vmp);
}
vm->after((int)msec,h);
}
JNIEXPORT void JNICALL method(wait)(JNIEnv *env, jobject obj,
jint msecs)
{
java_vm<kit> vm(env,obj);
vm->after(msecs);
}
JNIEXPORT void JNICALL method(update)(JNIEnv *env, jobject obj)
{
java_vm<kit> vm(env,obj);
vm->update();
}
JNIEXPORT jint JNICALL method(rootid)(JNIEnv *env, jobject obj)
{
java_vm<kit> vm(env,obj);
return (jint) vm->root();
}
JNIEXPORT void JNICALL method(pack)(JNIEnv *env, jobject obj, jstring s)
{
cerr << "Packing (java)" << endl;
java_vm<kit> vm(env,obj);
const char* str = vm.get(s);
vm->pack(str);
vm.release(s);
}
JNIEXPORT void JNICALL method(quit)(JNIEnv *env, jobject obj)
{
java_vm<kit> vm(env,obj);
vm->eval("quit");
}
|
Hush Online Technology
hush@cs.vu.nl
11/03/98 |
|
|