NEURON
nrnjni.cpp File Reference
#include <../../nrnconf.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <OS/list.h>
#include "ivoc.h"
#include "nrnoc2iv.h"
#include "parse.hpp"
#include "ivocvect.h"
#include "neuron_Neuron.h"
#include "njvm.h"
#include "njreg.h"
#include "neuron_Redirect.h"
#include "njredirreg.h"

Go to the source code of this file.

Macros

#define call_ob_proc   hoc_call_ob_proc
 
#define ncs   20
 

Functions

char * nrn_dot2underbar (const char *)
 JNI code for Neuron.java C implementations of Java native methods. More...
 
jobject nj_encapsulate (Object *)
 a hoc object must be encapsulated in a java object for use in java. More...
 
Object ** nj_j2hObject (jobject, int)
 
 declarePtrList (NJSymList, Symbol) extern NJSymList *nrn_jclass_symlist
 
voidnrnjava_pwm_listen (const char *, Object *)
 
void nrnjava_pwm_event (size_t, int, int, int, int, int)
 
Symboljava2nrn_class (const char *classname, int classindex, const char *methods)
 Create a hoc class from a java one. More...
 
double hoc_integer (double)
 
Objecthoc_new_object (Symbol *, void *)
 
Objecthoc_newobj1 (Symbol *, int)
 
Object ** hoc_objpop ()
 
char ** hoc_strpop ()
 
void hoc_tobj_unref (Object **)
 
void nrnjni_registration (jclass neuronCls)
 
void nrnjni_redirreg (jclass c)
 
static void illegalArg (JNIEnv *env, const char *s)
 
JNIEXPORT jstring JNICALL Java_neuron_Neuron_getHocStringArg (JNIEnv *env, jclass cls, jint idx)
 
JNIEXPORT jdouble JNICALL Java_neuron_Neuron_getHocDoubleArg (JNIEnv *env, jclass cls, jint idx, jint type)
 
static jobject h2jObject (Object *o)
 
JNIEXPORT jobject JNICALL Java_neuron_Neuron_getHocObjectArg (JNIEnv *env, jclass cl, jint i, jthrowable e)
 
JNIEXPORT void JNICALL Java_neuron_Neuron_hocObjectUnref (JNIEnv *, jclass, jlong i)
 
JNIEXPORT jlong JNICALL Java_neuron_Neuron_getVarPointer (JNIEnv *, jclass)
 
JNIEXPORT jdouble JNICALL Java_neuron_Neuron_getVal (JNIEnv *, jclass, jlong p)
 
JNIEXPORT void JNICALL Java_neuron_Neuron_setVal (JNIEnv *, jclass, jlong p, jdouble d)
 
JNIEXPORT void JNICALL Java_neuron_Neuron_java2nrnClass (JNIEnv *env, jclass cls, jstring classname, jint classindex, jstring methods)
 
JNIEXPORT jboolean JNICALL Java_neuron_Neuron_execute (JNIEnv *env, jclass, jstring statement)
 
JNIEXPORT jint JNICALL Java_neuron_Neuron_getHocArgType (JNIEnv *env, jclass, jint i)
 
JNIEXPORT jstring JNICALL Java_neuron_Neuron_getHocArgSig (JNIEnv *env, jclass)
 
JNIEXPORT jlong JNICALL Java_neuron_Neuron_vectorNew (JNIEnv *env, jclass, jint size)
 
JNIEXPORT jint JNICALL Java_neuron_Neuron_vectorSize (JNIEnv *, jclass, jlong jc)
 
static void outOfBounds (JNIEnv *env)
 
JNIEXPORT void JNICALL Java_neuron_Neuron_vectorSet (JNIEnv *env, jclass, jlong jc, jint i, jdouble x)
 
JNIEXPORT jdouble JNICALL Java_neuron_Neuron_vectorGet (JNIEnv *env, jclass, jlong jc, jint i)
 
JNIEXPORT void JNICALL Java_neuron_Neuron_vectorToHoc (JNIEnv *env, jclass, jlong jc, jdoubleArray ja, jint size)
 
JNIEXPORT jdoubleArray JNICALL Java_neuron_Neuron_vectorFromHoc (JNIEnv *env, jclass, jlong jc)
 
JNIEXPORT jlong JNICALL Java_neuron_Neuron_cppPointer (JNIEnv *, jclass, jlong jc)
 
JNIEXPORT jstring JNICALL Java_neuron_Neuron_hocObjectName (JNIEnv *env, jclass, jlong jc)
 
JNIEXPORT jlong JNICALL Java_neuron_Neuron_getNewHObject (JNIEnv *env, jclass, jstring name, jint narg)
 
JNIEXPORT jdouble JNICALL Java_neuron_Neuron_hDoubleMethod__Ljava_lang_String_2I (JNIEnv *env, jclass, jstring name, jint narg)
 
JNIEXPORT jdouble JNICALL Java_neuron_Neuron_hDoubleMethod__JJI (JNIEnv *env, jclass, jlong jc, jlong mid, jint narg)
 
JNIEXPORT jstring JNICALL Java_neuron_Neuron_hCharsMethod (JNIEnv *env, jclass, jlong jc, jlong mid, jint narg)
 
JNIEXPORT jobject JNICALL Java_neuron_Neuron_hObjectMethod (JNIEnv *env, jclass, jlong jc, jlong mid, jint narg)
 
JNIEXPORT void JNICALL Java_neuron_Neuron_pushArgD (JNIEnv *, jclass, jdouble x)
 
JNIEXPORT void JNICALL Java_neuron_Neuron_pushArgS (JNIEnv *env, jclass, jstring js)
 
JNIEXPORT void JNICALL Java_neuron_Neuron_pushArgO (JNIEnv *env, jclass, jobject jo, jint type)
 
JNIEXPORT jlong JNICALL Java_neuron_Neuron_methodID (JNIEnv *env, jclass, jlong jc, jstring name)
 
JNIEXPORT jlong JNICALL Java_neuron_Neuron_pwmListen (JNIEnv *env, jclass, jstring title, jobject jo, jint type)
 
JNIEXPORT void JNICALL Java_neuron_Neuron_pwmEvent (JNIEnv *env, jclass, jlong jwc, jint type, jint l, jint t, jint w, jint h)
 
JNIEXPORT jstring JNICALL Java_neuron_Neuron_sGet (JNIEnv *env, jclass, jstring js)
 
JNIEXPORT jobject JNICALL Java_neuron_Neuron_oGet (JNIEnv *env, jclass, jstring js)
 
JNIEXPORT jstring JNICALL Java_neuron_Neuron_hGetStringField (JNIEnv *env, jclass, jlong v, jstring js)
 
JNIEXPORT jobject JNICALL Java_neuron_Neuron_hGetObjectField (JNIEnv *env, jclass, jlong v, jstring js)
 
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 void JNICALL Java_neuron_Neuron_hSetObjectField__Ljava_lang_String_2Ljava_lang_Object_2I (JNIEnv *env, jclass, jstring js, jobject joval, jint type)
 
JNIEXPORT void JNICALL Java_neuron_Redirect_consoleWrite (JNIEnv *env, jclass, jint fd, jint b)
 

Variables

Symbolnrn_jobj_sym
 
Symbolnrn_vec_sym
 
Symlisthoc_top_level_symlist
 Neuron/Java Interface code. More...
 
double * hoc_varpointer
 
Objectdatahoc_top_level_data
 

Macro Definition Documentation

◆ call_ob_proc

#define call_ob_proc   hoc_call_ob_proc

Definition at line 55 of file nrnjni.cpp.

◆ ncs

#define ncs   20

Function Documentation

◆ declarePtrList()

declarePtrList ( NJSymList  ,
Symbol   
)

◆ h2jObject()

static jobject h2jObject ( Object o)
static

Definition at line 121 of file nrnjni.cpp.

◆ hoc_integer()

double hoc_integer ( double  )

◆ hoc_new_object()

Object* hoc_new_object ( Symbol ,
void  
)

Definition at line 465 of file hoc_oop.cpp.

◆ hoc_newobj1()

Object* hoc_newobj1 ( Symbol ,
int   
)

Definition at line 576 of file hoc_oop.cpp.

◆ hoc_objpop()

Object** hoc_objpop ( )

Definition at line 849 of file code.cpp.

◆ hoc_strpop()

char** hoc_strpop ( )

Definition at line 868 of file code.cpp.

◆ hoc_tobj_unref()

void hoc_tobj_unref ( Object **  )

Definition at line 219 of file code.cpp.

◆ illegalArg()

static void illegalArg ( JNIEnv *  env,
const char *  s 
)
static

Definition at line 77 of file nrnjni.cpp.

◆ java2nrn_class()

Symbol* java2nrn_class ( const char *  classname,
int  classindex,
const char *  methods 
)

Create a hoc class from a java one.

Parameters
classindex: +ve id for class (0,1, ...)

Definition at line 1628 of file hoc_oop.cpp.

◆ Java_neuron_Neuron_cppPointer()

JNIEXPORT jlong JNICALL Java_neuron_Neuron_cppPointer ( JNIEnv *  ,
jclass  ,
jlong  jc 
)

Definition at line 320 of file nrnjni.cpp.

◆ Java_neuron_Neuron_execute()

JNIEXPORT jboolean JNICALL Java_neuron_Neuron_execute ( JNIEnv *  env,
jclass  ,
jstring  statement 
)

Definition at line 206 of file nrnjni.cpp.

◆ Java_neuron_Neuron_getHocArgSig()

JNIEXPORT jstring JNICALL Java_neuron_Neuron_getHocArgSig ( JNIEnv *  env,
jclass   
)

Definition at line 234 of file nrnjni.cpp.

◆ Java_neuron_Neuron_getHocArgType()

JNIEXPORT jint JNICALL Java_neuron_Neuron_getHocArgType ( JNIEnv *  env,
jclass  ,
jint  i 
)

Definition at line 219 of file nrnjni.cpp.

◆ Java_neuron_Neuron_getHocDoubleArg()

JNIEXPORT jdouble JNICALL Java_neuron_Neuron_getHocDoubleArg ( JNIEnv *  env,
jclass  cls,
jint  idx,
jint  type 
)

Definition at line 100 of file nrnjni.cpp.

◆ Java_neuron_Neuron_getHocObjectArg()

JNIEXPORT jobject JNICALL Java_neuron_Neuron_getHocObjectArg ( JNIEnv *  env,
jclass  cl,
jint  i,
jthrowable  e 
)

Definition at line 140 of file nrnjni.cpp.

◆ Java_neuron_Neuron_getHocStringArg()

JNIEXPORT jstring JNICALL Java_neuron_Neuron_getHocStringArg ( JNIEnv *  env,
jclass  cls,
jint  idx 
)

Definition at line 81 of file nrnjni.cpp.

◆ Java_neuron_Neuron_getNewHObject()

JNIEXPORT jlong JNICALL Java_neuron_Neuron_getNewHObject ( JNIEnv *  env,
jclass  ,
jstring  name,
jint  narg 
)

Definition at line 338 of file nrnjni.cpp.

◆ Java_neuron_Neuron_getVal()

JNIEXPORT jdouble JNICALL Java_neuron_Neuron_getVal ( JNIEnv *  ,
jclass  ,
jlong  p 
)

Definition at line 177 of file nrnjni.cpp.

◆ Java_neuron_Neuron_getVarPointer()

JNIEXPORT jlong JNICALL Java_neuron_Neuron_getVarPointer ( JNIEnv *  ,
jclass   
)

Definition at line 170 of file nrnjni.cpp.

◆ Java_neuron_Neuron_hCharsMethod()

JNIEXPORT jstring JNICALL Java_neuron_Neuron_hCharsMethod ( JNIEnv *  env,
jclass  ,
jlong  jc,
jlong  mid,
jint  narg 
)

Definition at line 376 of file nrnjni.cpp.

◆ Java_neuron_Neuron_hDoubleMethod__JJI()

JNIEXPORT jdouble JNICALL Java_neuron_Neuron_hDoubleMethod__JJI ( JNIEnv *  env,
jclass  ,
jlong  jc,
jlong  mid,
jint  narg 
)

Definition at line 365 of file nrnjni.cpp.

◆ Java_neuron_Neuron_hDoubleMethod__Ljava_lang_String_2I()

JNIEXPORT jdouble JNICALL Java_neuron_Neuron_hDoubleMethod__Ljava_lang_String_2I ( JNIEnv *  env,
jclass  ,
jstring  name,
jint  narg 
)

Definition at line 355 of file nrnjni.cpp.

◆ Java_neuron_Neuron_hGetObjectField()

JNIEXPORT jobject JNICALL Java_neuron_Neuron_hGetObjectField ( JNIEnv *  env,
jclass  ,
jlong  v,
jstring  js 
)

Definition at line 515 of file nrnjni.cpp.

◆ Java_neuron_Neuron_hGetStringField()

JNIEXPORT jstring JNICALL Java_neuron_Neuron_hGetStringField ( JNIEnv *  env,
jclass  ,
jlong  v,
jstring  js 
)

Definition at line 504 of file nrnjni.cpp.

◆ Java_neuron_Neuron_hObjectMethod()

JNIEXPORT jobject JNICALL Java_neuron_Neuron_hObjectMethod ( JNIEnv *  env,
jclass  ,
jlong  jc,
jlong  mid,
jint  narg 
)

Definition at line 388 of file nrnjni.cpp.

◆ Java_neuron_Neuron_hocObjectName()

JNIEXPORT jstring JNICALL Java_neuron_Neuron_hocObjectName ( JNIEnv *  env,
jclass  ,
jlong  jc 
)

Definition at line 330 of file nrnjni.cpp.

◆ Java_neuron_Neuron_hocObjectUnref()

JNIEXPORT void JNICALL Java_neuron_Neuron_hocObjectUnref ( JNIEnv *  ,
jclass  ,
jlong  i 
)

Definition at line 163 of file nrnjni.cpp.

◆ Java_neuron_Neuron_hSetObjectField__JLjava_lang_String_2Ljava_lang_Object_2I()

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 
)

Definition at line 528 of file nrnjni.cpp.

◆ Java_neuron_Neuron_hSetObjectField__Ljava_lang_String_2Ljava_lang_Object_2I()

JNIEXPORT void JNICALL Java_neuron_Neuron_hSetObjectField__Ljava_lang_String_2Ljava_lang_Object_2I ( JNIEnv *  env,
jclass  ,
jstring  js,
jobject  joval,
jint  type 
)

Definition at line 546 of file nrnjni.cpp.

◆ Java_neuron_Neuron_java2nrnClass()

JNIEXPORT void JNICALL Java_neuron_Neuron_java2nrnClass ( JNIEnv *  env,
jclass  cls,
jstring  classname,
jint  classindex,
jstring  methods 
)

Definition at line 188 of file nrnjni.cpp.

◆ Java_neuron_Neuron_methodID()

JNIEXPORT jlong JNICALL Java_neuron_Neuron_methodID ( JNIEnv *  env,
jclass  ,
jlong  jc,
jstring  name 
)

Definition at line 450 of file nrnjni.cpp.

◆ Java_neuron_Neuron_oGet()

JNIEXPORT jobject JNICALL Java_neuron_Neuron_oGet ( JNIEnv *  env,
jclass  ,
jstring  js 
)

Definition at line 492 of file nrnjni.cpp.

◆ Java_neuron_Neuron_pushArgD()

JNIEXPORT void JNICALL Java_neuron_Neuron_pushArgD ( JNIEnv *  ,
jclass  ,
jdouble  x 
)

Definition at line 402 of file nrnjni.cpp.

◆ Java_neuron_Neuron_pushArgO()

JNIEXPORT void JNICALL Java_neuron_Neuron_pushArgO ( JNIEnv *  env,
jclass  ,
jobject  jo,
jint  type 
)

Definition at line 437 of file nrnjni.cpp.

◆ Java_neuron_Neuron_pushArgS()

JNIEXPORT void JNICALL Java_neuron_Neuron_pushArgS ( JNIEnv *  env,
jclass  ,
jstring  js 
)

Definition at line 408 of file nrnjni.cpp.

◆ Java_neuron_Neuron_pwmEvent()

JNIEXPORT void JNICALL Java_neuron_Neuron_pwmEvent ( JNIEnv *  env,
jclass  ,
jlong  jwc,
jint  type,
jint  l,
jint  t,
jint  w,
jint  h 
)

Definition at line 473 of file nrnjni.cpp.

◆ Java_neuron_Neuron_pwmListen()

JNIEXPORT jlong JNICALL Java_neuron_Neuron_pwmListen ( JNIEnv *  env,
jclass  ,
jstring  title,
jobject  jo,
jint  type 
)

Definition at line 460 of file nrnjni.cpp.

◆ Java_neuron_Neuron_setVal()

JNIEXPORT void JNICALL Java_neuron_Neuron_setVal ( JNIEnv *  ,
jclass  ,
jlong  p,
jdouble  d 
)

Definition at line 183 of file nrnjni.cpp.

◆ Java_neuron_Neuron_sGet()

JNIEXPORT jstring JNICALL Java_neuron_Neuron_sGet ( JNIEnv *  env,
jclass  ,
jstring  js 
)

Definition at line 482 of file nrnjni.cpp.

◆ Java_neuron_Neuron_vectorFromHoc()

JNIEXPORT jdoubleArray JNICALL Java_neuron_Neuron_vectorFromHoc ( JNIEnv *  env,
jclass  ,
jlong  jc 
)

Definition at line 310 of file nrnjni.cpp.

◆ Java_neuron_Neuron_vectorGet()

JNIEXPORT jdouble JNICALL Java_neuron_Neuron_vectorGet ( JNIEnv *  env,
jclass  ,
jlong  jc,
jint  i 
)

Definition at line 291 of file nrnjni.cpp.

◆ Java_neuron_Neuron_vectorNew()

JNIEXPORT jlong JNICALL Java_neuron_Neuron_vectorNew ( JNIEnv *  env,
jclass  ,
jint  size 
)

Definition at line 258 of file nrnjni.cpp.

◆ Java_neuron_Neuron_vectorSet()

JNIEXPORT void JNICALL Java_neuron_Neuron_vectorSet ( JNIEnv *  env,
jclass  ,
jlong  jc,
jint  i,
jdouble  x 
)

Definition at line 280 of file nrnjni.cpp.

◆ Java_neuron_Neuron_vectorSize()

JNIEXPORT jint JNICALL Java_neuron_Neuron_vectorSize ( JNIEnv *  ,
jclass  ,
jlong  jc 
)

Definition at line 269 of file nrnjni.cpp.

◆ Java_neuron_Neuron_vectorToHoc()

JNIEXPORT void JNICALL Java_neuron_Neuron_vectorToHoc ( JNIEnv *  env,
jclass  ,
jlong  jc,
jdoubleArray  ja,
jint  size 
)

Definition at line 302 of file nrnjni.cpp.

◆ Java_neuron_Redirect_consoleWrite()

JNIEXPORT void JNICALL Java_neuron_Redirect_consoleWrite ( JNIEnv *  env,
jclass  ,
jint  fd,
jint  b 
)

Definition at line 563 of file nrnjni.cpp.

◆ nj_encapsulate()

jobject nj_encapsulate ( Object ho)

a hoc object must be encapsulated in a java object for use in java.

The generic case for hoc objects opaque to java is HocObject and it's java id for this purpose is 0. Other kinds of hoc object which java should be able to do something with, eg. Vector all have a corresponding java class that extends HocObject and an id known here and in Neuron.java.

Definition at line 486 of file nrnjava.cpp.

◆ nj_j2hObject()

Object** nj_j2hObject ( jobject  ,
int   
)

Definition at line 408 of file nrnjava.cpp.

◆ nrn_dot2underbar()

char* nrn_dot2underbar ( const char *  )

JNI code for Neuron.java C implementations of Java native methods.

Definition at line 240 of file nrnjava.cpp.

◆ nrnjava_pwm_event()

void nrnjava_pwm_event ( size_t  ,
int  ,
int  ,
int  ,
int  ,
int   
)

◆ nrnjava_pwm_listen()

void* nrnjava_pwm_listen ( const char *  ,
Object  
)

◆ nrnjni_redirreg()

void nrnjni_redirreg ( jclass  c)

Definition at line 71 of file nrnjni.cpp.

◆ nrnjni_registration()

void nrnjni_registration ( jclass  neuronCls)

Definition at line 65 of file nrnjni.cpp.

◆ outOfBounds()

static void outOfBounds ( JNIEnv *  env)
static

Definition at line 275 of file nrnjni.cpp.

Variable Documentation

◆ hoc_top_level_data

Objectdata* hoc_top_level_data

Definition at line 134 of file hoc_oop.cpp.

◆ hoc_top_level_symlist

Symlist* hoc_top_level_symlist

Neuron/Java Interface code.

Author
Fred Howell
Date
March 2001

Modified by Michael Hines The Java to Neuron JNIEXPORT functions for Neuron.java have been collected in nrnjni.cpp. This file now mostly supports the Neuron to Java direction

Definition at line 41 of file symbol.cpp.

◆ hoc_varpointer

double* hoc_varpointer

Definition at line 262 of file hoc_init.cpp.

◆ nrn_jobj_sym

Symbol* nrn_jobj_sym

Definition at line 88 of file nrnjava.cpp.

◆ nrn_vec_sym

Symbol* nrn_vec_sym

Definition at line 89 of file nrnjava.cpp.