5 #include <../../nrnconf.h> 16 #include "neuron_Neuron.h" 20 #include "neuron_Redirect.h" 21 #include "njredirreg.h" 55 #define call_ob_proc hoc_call_ob_proc 67 for (cnt=0; njreg_methods[
cnt].name; ++
cnt) {}
68 nrnjava_env->RegisterNatives(neuronCls, njreg_methods, cnt);
73 for (cnt=0; njredirreg_methods[
cnt].name; ++
cnt) {}
74 nrnjava_env->RegisterNatives(c, njredirreg_methods, cnt);
82 JNIEnv *
env, jclass cls, jint idx) {
85 printf(
"error - missing string as arg %d\n", idx);
92 printf(
"error - expecting string as arg %d\n", idx);
96 jstring
ret = env->NewStringUTF( str );
101 JNIEnv *
env, jclass cls, jint idx, jint
type) {
104 printf(
"error - missing double as arg %d\n", idx);
106 return (jdouble)-1.0E98;
111 printf(
"error - expecting double as arg %d\n", idx);
113 return (jdouble)-1.0E98;
128 if (o->ctemplate->id < 0) {
130 }
else if (o->ctemplate->sym == nrn_jobj_sym) {
140 (JNIEnv *
env, jclass cl, jint
i, jthrowable
e) {
144 printf(
"error - missing Object as arg %d\n", i);
155 printf(
"error - expecting Object or strdef as arg %d\n", i);
156 illegalArg(env,
"expecting Object or strdef");
163 (JNIEnv *, jclass, jlong i) {
177 (JNIEnv *, jclass, jlong
p){
178 double* pd = (
double*)p;
179 return (jdouble)(*pd);
183 (JNIEnv *, jclass, jlong p, jdouble d) {
184 double* pd = (
double*)p;
189 JNIEnv *env, jclass cls,
190 jstring classname, jint classindex,
193 const char *cn = env->GetStringUTFChars( classname,0 );
194 const char *m = env->GetStringUTFChars( methods,0 );
196 env->ReleaseStringUTFChars(classname, cn);
202 env->ReleaseStringUTFChars(methods, m);
207 JNIEnv *env, jclass, jstring statement) {
210 const char*
s = env->GetStringUTFChars(statement,0);
212 env->ReleaseStringUTFChars(statement, s);
219 (JNIEnv *env, jclass, jint i) {
234 (JNIEnv *env, jclass) {
237 for (i = 0;
ifarg(i+1); ++
i) {
254 return env->NewStringUTF(sig);
258 (JNIEnv *env, jclass, jint size){
263 jlong jc = (jlong)ho;
269 (JNIEnv *, jclass, jlong jc){
276 env->ThrowNew(env->FindClass(
"java.lang.IndexOutOfBoundsException"),
"HocVector");
280 (JNIEnv *env, jclass, jlong jc, jint i, jdouble x) {
283 if (i < 0 || i >= vec->size()) {
284 printf(
"Neuron.vectorSet i=%d size=%d\n", i, vec->size());
291 (JNIEnv *env, jclass, jlong jc, jint i){
294 if (i < 0 || i >= vec->size()) {
295 printf(
"Neuron.vectorGet i=%d size=%d\n", i, vec->size());
302 (JNIEnv *env, jclass, jlong jc, jdoubleArray ja, jint size) {
306 env->GetDoubleArrayRegion(ja, 0, size, &vec->elem(0));
310 (JNIEnv *env, jclass, jlong jc) {
313 jint size = vec->size();
314 jdoubleArray ja = env->NewDoubleArray(size);
315 env->SetDoubleArrayRegion(ja, 0, size, &vec->elem(0));
320 (JNIEnv *, jclass, jlong jc) {
330 (JNIEnv *env, jclass, jlong jc) {
333 jstring js = env->NewStringUTF(s);
340 const char* cn = env->GetStringUTFChars(name, 0);
343 if (!s || s->
type != TEMPLATE) {
344 printf(
"getNewHObject could not lookup %s or it is not a template.\n", cn);
347 env->ReleaseStringUTFChars(name, cn);
355 (JNIEnv *env, jclass, jstring name, jint narg) {
357 const char* cn = env->GetStringUTFChars(name, 0);
359 env->ReleaseStringUTFChars(name, cn);
365 (JNIEnv *env, jclass, jlong jc, jlong mid, jint narg){
376 (JNIEnv *env, jclass, jlong jc, jlong mid, jint narg){
382 jstring js = env->NewStringUTF(s);
388 (JNIEnv *env, jclass, jlong jc, jlong mid, jint narg){
402 (JNIEnv *, jclass, jdouble x){
408 (JNIEnv *env, jclass, jstring js){
417 const char* jc = env->GetStringUTFChars(js, 0);
420 for (i=0; i <
ncs; ++
i) {
429 cs[
i] =
new char[strlen(jc + 1)];
433 env->ReleaseStringUTFChars(js, jc);
437 (JNIEnv *env, jclass, jobject jo, jint
type){
442 printf(
"Do not recognize the object argument type %d\n", type);
450 (JNIEnv *env, jclass, jlong jc, jstring name){
451 const char*
s = env->GetStringUTFChars(name, 0);
455 env->ReleaseStringUTFChars(name, s);
460 (JNIEnv *env, jclass, jstring
title, jobject jo, jint type) {
464 const char*
s = env->GetStringUTFChars(title, 0);
467 env->ReleaseStringUTFChars(title, s);
473 (JNIEnv *env, jclass, jlong jwc, jint type, jint l, jint
t, jint w, jint h) {
482 (JNIEnv *env, jclass, jstring js){
483 const char*
s = env->GetStringUTFChars(js, 0);
487 env->ReleaseStringUTFChars(js, s);
488 return env->NewStringUTF(*sval);
492 (JNIEnv *env, jclass, jstring js){
493 const char*
s = env->GetStringUTFChars(js, 0);
497 env->ReleaseStringUTFChars(js, s);
504 (JNIEnv *env, jclass, jlong
v, jstring js){
505 const char*
s = env->GetStringUTFChars(js, 0);
510 env->ReleaseStringUTFChars(js, s);
511 return env->NewStringUTF(*sval);
515 (JNIEnv *env, jclass, jlong v, jstring js){
516 const char*
s = env->GetStringUTFChars(js, 0);
521 env->ReleaseStringUTFChars(js, s);
528 (JNIEnv *env, jclass, jlong v, jstring js, jobject joval, jint type){
530 const char*
s = env->GetStringUTFChars(js, 0);
540 env->ReleaseStringUTFChars(js, s);
546 (JNIEnv *env, jclass, jstring js, jobject joval, jint type){
548 const char*
s = env->GetStringUTFChars(js, 0);
557 env->ReleaseStringUTFChars(js, s);
563 (JNIEnv *env, jclass, jint fd, jint b) {
JNIEXPORT void JNICALL Java_neuron_Neuron_vectorSet(JNIEnv *env, jclass, jlong jc, jint i, jdouble x)
JNIEXPORT void JNICALL Java_neuron_Neuron_pushArgO(JNIEnv *env, jclass, jobject jo, jint type)
int hoc_is_str_arg(int narg)
Vect * vector_new1(int n)
JNIEXPORT void JNICALL Java_neuron_Neuron_java2nrnClass(JNIEnv *env, jclass cls, jstring classname, jint classindex, jstring methods)
void hoc_pushobj(Object **d)
JNIEXPORT void JNICALL Java_neuron_Redirect_consoleWrite(JNIEnv *env, jclass, jint fd, jint b)
JNIEXPORT void JNICALL Java_neuron_Neuron_vectorToHoc(JNIEnv *env, jclass, jlong jc, jdoubleArray ja, jint size)
int hoc_argtype(int narg)
JNIEXPORT jint JNICALL Java_neuron_Neuron_getHocArgType(JNIEnv *env, jclass, jint i)
static void outOfBounds(JNIEnv *env)
int hoc_is_double_arg(int narg)
JNIEXPORT jobject JNICALL Java_neuron_Neuron_hObjectMethod(JNIEnv *env, jclass, jlong jc, jlong mid, jint narg)
Symbol * hoc_lookup(const char *)
void nrnjni_redirreg(jclass c)
char * hoc_object_name(Object *ob)
Objectdata * hoc_top_level_data
JNIEXPORT void JNICALL Java_neuron_Neuron_setVal(JNIEnv *, jclass, jlong p, jdouble d)
Object ** nj_j2hObject(jobject, int)
JNIEXPORT jdouble JNICALL Java_neuron_Neuron_getVal(JNIEnv *, jclass, jlong p)
char * nrn_dot2underbar(const char *)
JNI code for Neuron.java C implementations of Java native methods.
static jobject h2jObject(Object *o)
JNIEXPORT jlong JNICALL Java_neuron_Neuron_methodID(JNIEnv *env, jclass, jlong jc, jstring name)
JNIEXPORT jobject JNICALL Java_neuron_Neuron_oGet(JNIEnv *env, jclass, jstring js)
JNIEXPORT void JNICALL Java_neuron_Neuron_hSetObjectField__Ljava_lang_String_2Ljava_lang_Object_2I(JNIEnv *env, jclass, jstring js, jobject joval, jint type)
JNIEXPORT jstring JNICALL Java_neuron_Neuron_sGet(JNIEnv *env, jclass, jstring js)
double hoc_call_func(Symbol *s, int narg)
JNIEXPORT jstring JNICALL Java_neuron_Neuron_hGetStringField(JNIEnv *env, jclass, jlong v, jstring js)
JNIEXPORT jlong JNICALL Java_neuron_Neuron_cppPointer(JNIEnv *, jclass, jlong jc)
void nrnjava_pwm_event(size_t, int, int, int, int, int)
void * nrnjava_pwm_listen(const char *, Object *)
JNIEXPORT jint JNICALL Java_neuron_Neuron_vectorSize(JNIEnv *, jclass, jlong jc)
JNIEXPORT jlong JNICALL Java_neuron_Neuron_getVarPointer(JNIEnv *, jclass)
JNIEXPORT jdouble JNICALL Java_neuron_Neuron_getHocDoubleArg(JNIEnv *env, jclass cls, jint idx, jint type)
JNIEXPORT jobject JNICALL Java_neuron_Neuron_getHocObjectArg(JNIEnv *env, jclass cl, jint i, jthrowable e)
void hoc_obj_unref(Object *obj)
void nrnjni_registration(jclass neuronCls)
JNIEXPORT jdoubleArray JNICALL Java_neuron_Neuron_vectorFromHoc(JNIEnv *env, jclass, jlong jc)
double hoc_integer(double)
JNIEXPORT jlong JNICALL Java_neuron_Neuron_vectorNew(JNIEnv *env, jclass, jint size)
JNIEXPORT jstring JNICALL Java_neuron_Neuron_getHocArgSig(JNIEnv *env, jclass)
JNIEXPORT jdouble JNICALL Java_neuron_Neuron_hDoubleMethod__JJI(JNIEnv *env, jclass, jlong jc, jlong mid, jint narg)
JNIEXPORT void JNICALL Java_neuron_Neuron_pushArgD(JNIEnv *, jclass, jdouble x)
void hoc_tobj_unref(Object **)
Symlist * hoc_top_level_symlist
Neuron/Java Interface code.
JNIEXPORT jstring JNICALL Java_neuron_Neuron_getHocStringArg(JNIEnv *env, jclass cls, jint idx)
JNIEXPORT jdouble JNICALL Java_neuron_Neuron_hDoubleMethod__Ljava_lang_String_2I(JNIEnv *env, jclass, jstring name, jint narg)
JNIEXPORT void JNICALL Java_neuron_Neuron_pwmEvent(JNIEnv *env, jclass, jlong jwc, jint type, jint l, jint t, jint w, jint h)
void hoc_obj_ref(Object *obj)
declarePtrList(NJSymList, Symbol) extern NJSymList *nrn_jclass_symlist
JNIEXPORT void JNICALL Java_neuron_Neuron_hocObjectUnref(JNIEnv *, jclass, jlong i)
Object * hoc_new_object(Symbol *, void *)
void vector_resize(Vect *v, int n)
Symbol NJSymList * nrn_jclass_symlist
Object * hoc_newobj1(Symbol *, int)
JNIEXPORT jdouble JNICALL Java_neuron_Neuron_vectorGet(JNIEnv *env, jclass, jlong jc, jint i)
Symbol * java2nrn_class(const char *classname, int classindex, const char *methods)
Create a hoc class from a java one.
JNIEXPORT jlong JNICALL Java_neuron_Neuron_getNewHObject(JNIEnv *env, jclass, jstring name, jint narg)
static bool valid_stmt(const char *, Object *ob=NULL)
JNIEXPORT jlong JNICALL Java_neuron_Neuron_pwmListen(JNIEnv *env, jclass, jstring title, jobject jo, jint type)
Symbol * hoc_table_lookup(const char *, Symlist *)
JNIEXPORT jobject JNICALL Java_neuron_Neuron_hGetObjectField(JNIEnv *env, jclass, jlong v, jstring js)
static void illegalArg(JNIEnv *env, const char *s)
JNIEXPORT void JNICALL Java_neuron_Neuron_hSetObjectField__JLjava_lang_String_2Ljava_lang_Object_2I(JNIEnv *env, jclass, jlong v, jstring js, jobject joval, jint type)
JNIEXPORT jstring JNICALL Java_neuron_Neuron_hocObjectName(JNIEnv *env, jclass, jlong jc)
int hoc_is_object_arg(int narg)
void hoc_pushstr(char **d)
jobject nj_encapsulate(Object *)
a hoc object must be encapsulated in a java object for use in java.
JNIEXPORT jboolean JNICALL Java_neuron_Neuron_execute(JNIEnv *env, jclass, jstring statement)
JNIEXPORT void JNICALL Java_neuron_Neuron_pushArgS(JNIEnv *env, jclass, jstring js)
Object ** hoc_objgetarg(int)
static struct @17 methods[]
JNIEXPORT jstring JNICALL Java_neuron_Neuron_hCharsMethod(JNIEnv *env, jclass, jlong jc, jlong mid, jint narg)