NEURON
nrnjava.cpp File Reference
#include <../../nrnconf.h>
#include <stdio.h>
#include <errno.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
#include <jni.h>
#include <time.h>
#include <OS/list.h>
#include "ivoc.h"
#include "classreg.h"
#include "nrnoc2iv.h"
#include "parse.hpp"
#include "njvm.h"

Go to the source code of this file.

Macros

#define imax   5
 

Functions

static voidjava2nrn_cons (Object *o)
 Construct a new instance of a java class. More...
 
static void java2nrn_destruct (void *opaque_java_object)
 Destroy java reference. More...
 
static double java2nrn_dmeth (Object *ho, Symbol *method)
 invoke java method returning double More...
 
static char ** java2nrn_smeth (Object *ho, Symbol *method)
 invoke java method returning String More...
 
static Object ** java2nrn_ometh (Object *ho, Symbol *method)
 invoke java method returning a Java Object More...
 
static const char * java2nrn_classname (Object *ho)
 
static bool java2nrn_identity (Object *o1, Object *o2)
 equality in the sense of == More...
 
static void pwm_setwin (void *, int, int, int)
 
static char ** js2charpool (jstring js)
 
void nrnjni_registration (jclass nrnCls)
 
void nrnjni_redirreg (jclass nrnCls)
 
 declarePtrList (NJSymList, Symbol) implementPtrList(NJSymList
 
 declarePtrList (NJStrList, String) implementPtrList(NJStrList
 
static voidjoconstruct (Object *)
 
static void jodestruct (void *v)
 
static double joequals (void *v)
 
static const char ** joname (void *v)
 
void nrnjava_init ()
 
char * nrn_underbar2dot (const char *s)
 
char * nrn_dot2underbar (const char *s)
 JNI code for Neuron.java C implementations of Java native methods. More...
 
int convertJavaClassToHoc (JNIEnv *env, const char *jname, const char *hname, const char *path)
 Make a hoc equivalent to Java class (jname) calling it hname in hoc. More...
 
static void overloaded (Object *ho, Symbol *method)
 
Object ** nj_j2hObject (jobject jo, int type)
 
jobject nj_encapsulate (Object *ho)
 a hoc object must be encapsulated in a java object for use in java. More...
 

Variables

Symlisthoc_top_level_symlist
 Neuron/Java Interface code. More...
 
void *(* p_java2nrn_cons )(Object *)
 
void(* p_java2nrn_destruct )(void *opaque_java_object)
 
double(* p_java2nrn_dmeth )(Object *ho, Symbol *method)
 
char **(* p_java2nrn_smeth )(Object *ho, Symbol *method)
 
Object **(* p_java2nrn_ometh )(Object *ho, Symbol *method)
 
const char *(* p_java2nrn_classname )(Object *ho)
 
bool(* p_java2nrn_identity )(Object *o1, Object *o2)
 
void(* nrnjava_pwm_setwin )(void *, int, int, int)
 
static jclass nrnclsldr
 
static jclass neuronCls
 
static jmethodID nrnclsldID
 
static jmethodID constructNoArgID
 
static jmethodID constructWithArgID
 
static jmethodID makeHocClassID
 
static jmethodID invokeDoubleMethodID
 
static jmethodID invokeCharsMethodID
 
static jmethodID invokeObjectMethodID
 
static jmethodID encapsulateID
 
static jmethodID getObjectTypeID
 
static jmethodID setwinID
 
static jmethodID identityID
 
static jmethodID jclassnameID
 
static jfieldID hocObjectCastID
 
Symbol NJSymList * nrn_jclass_symlist
 
static String NJStrList * njclassnames
 
Symbolnrn_jobj_sym
 
Symbolnrn_vec_sym
 
static Member_func jo_members []
 
static Member_ret_str_func jo_retstr_members []
 

Macro Definition Documentation

◆ imax

#define imax   5

Function Documentation

◆ convertJavaClassToHoc()

int convertJavaClassToHoc ( JNIEnv *  env,
const char *  jname,
const char *  hname,
const char *  path 
)

Make a hoc equivalent to Java class (jname) calling it hname in hoc.

Done from NrnJava.load("name") after the class is loaded with FindClass.

Definition at line 299 of file nrnjava.cpp.

◆ declarePtrList() [1/2]

declarePtrList ( NJSymList  ,
Symbol   
)

◆ declarePtrList() [2/2]

declarePtrList ( NJStrList  ,
String   
)

◆ java2nrn_classname()

static const char * java2nrn_classname ( Object ho)
static

Definition at line 329 of file nrnjava.cpp.

◆ java2nrn_cons()

static void * java2nrn_cons ( Object o)
static

Construct a new instance of a java class.

Parameters
oEmpty hoc object which will contain this object

Definition at line 264 of file nrnjava.cpp.

◆ java2nrn_destruct()

static void java2nrn_destruct ( void opaque_java_object)
static

Destroy java reference.

Definition at line 288 of file nrnjava.cpp.

◆ java2nrn_dmeth()

static double java2nrn_dmeth ( Object ho,
Symbol method 
)
static

invoke java method returning double

Definition at line 349 of file nrnjava.cpp.

◆ java2nrn_identity()

static bool java2nrn_identity ( Object o1,
Object o2 
)
static

equality in the sense of ==

Definition at line 253 of file nrnjava.cpp.

◆ java2nrn_ometh()

static Object ** java2nrn_ometh ( Object ho,
Symbol method 
)
static

invoke java method returning a Java Object

Definition at line 442 of file nrnjava.cpp.

◆ java2nrn_smeth()

static char ** java2nrn_smeth ( Object ho,
Symbol method 
)
static

invoke java method returning String

Definition at line 393 of file nrnjava.cpp.

◆ joconstruct()

static void* joconstruct ( Object )
static

Definition at line 91 of file nrnjava.cpp.

◆ jodestruct()

static void jodestruct ( void v)
static

Definition at line 95 of file nrnjava.cpp.

◆ joequals()

static double joequals ( void v)
static

Definition at line 101 of file nrnjava.cpp.

◆ joname()

static const char** joname ( void v)
static

Definition at line 116 of file nrnjava.cpp.

◆ js2charpool()

static char ** js2charpool ( jstring  js)
static

Definition at line 364 of file nrnjava.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  jo,
int  type 
)

Definition at line 408 of file nrnjava.cpp.

◆ nrn_dot2underbar()

char* nrn_dot2underbar ( const char *  s)

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

Definition at line 240 of file nrnjava.cpp.

◆ nrn_underbar2dot()

char* nrn_underbar2dot ( const char *  s)

Definition at line 228 of file nrnjava.cpp.

◆ nrnjava_init()

void nrnjava_init ( )

Definition at line 132 of file nrnjava.cpp.

◆ nrnjni_redirreg()

void nrnjni_redirreg ( jclass  nrnCls)

Definition at line 71 of file nrnjni.cpp.

◆ nrnjni_registration()

void nrnjni_registration ( jclass  nrnCls)

Definition at line 65 of file nrnjni.cpp.

◆ overloaded()

static void overloaded ( Object ho,
Symbol method 
)
static

Definition at line 334 of file nrnjava.cpp.

◆ pwm_setwin()

static void pwm_setwin ( void win,
int  type,
int  left,
int  top 
)
static

Definition at line 499 of file nrnjava.cpp.

Variable Documentation

◆ constructNoArgID

jmethodID constructNoArgID
static

Definition at line 64 of file nrnjava.cpp.

◆ constructWithArgID

jmethodID constructWithArgID
static

Definition at line 65 of file nrnjava.cpp.

◆ encapsulateID

jmethodID encapsulateID
static

Definition at line 70 of file nrnjava.cpp.

◆ getObjectTypeID

jmethodID getObjectTypeID
static

Definition at line 71 of file nrnjava.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.

◆ hocObjectCastID

jfieldID hocObjectCastID
static

Definition at line 75 of file nrnjava.cpp.

◆ identityID

jmethodID identityID
static

Definition at line 73 of file nrnjava.cpp.

◆ invokeCharsMethodID

jmethodID invokeCharsMethodID
static

Definition at line 68 of file nrnjava.cpp.

◆ invokeDoubleMethodID

jmethodID invokeDoubleMethodID
static

Definition at line 67 of file nrnjava.cpp.

◆ invokeObjectMethodID

jmethodID invokeObjectMethodID
static

Definition at line 69 of file nrnjava.cpp.

◆ jclassnameID

jmethodID jclassnameID
static

Definition at line 74 of file nrnjava.cpp.

◆ jo_members

Member_func jo_members[]
static
Initial value:
= {
"equals", joequals,
0,0
}
static double joequals(void *v)
Definition: nrnjava.cpp:101

Definition at line 122 of file nrnjava.cpp.

◆ jo_retstr_members

Member_ret_str_func jo_retstr_members[]
static
Initial value:
= {
"name", joname,
0,0
}
static const char ** joname(void *v)
Definition: nrnjava.cpp:116

Definition at line 126 of file nrnjava.cpp.

◆ makeHocClassID

jmethodID makeHocClassID
static

Definition at line 66 of file nrnjava.cpp.

◆ neuronCls

jclass neuronCls
static

Definition at line 62 of file nrnjava.cpp.

◆ njclassnames

String NJStrList* njclassnames
static

Definition at line 86 of file nrnjava.cpp.

◆ nrn_jclass_symlist

Symbol NJSymList* nrn_jclass_symlist

Definition at line 81 of file nrnjava.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.

◆ nrnclsldID

jmethodID nrnclsldID
static

Definition at line 63 of file nrnjava.cpp.

◆ nrnclsldr

jclass nrnclsldr
static

Definition at line 61 of file nrnjava.cpp.

◆ nrnjava_pwm_setwin

void(* nrnjava_pwm_setwin) (void *, int, int, int)

◆ p_java2nrn_classname

const char*(* p_java2nrn_classname) (Object *ho)

◆ p_java2nrn_cons

void*(* p_java2nrn_cons) (Object *)

Definition at line 22 of file hoc_oop.cpp.

◆ p_java2nrn_destruct

void(* p_java2nrn_destruct) (void *opaque_java_object)

Definition at line 23 of file hoc_oop.cpp.

◆ p_java2nrn_dmeth

double(* p_java2nrn_dmeth) (Object *ho, Symbol *method)

Definition at line 24 of file hoc_oop.cpp.

◆ p_java2nrn_identity

bool(* p_java2nrn_identity) (Object *o1, Object *o2)

◆ p_java2nrn_ometh

Object**(* p_java2nrn_ometh) (Object *ho, Symbol *method)

Definition at line 26 of file hoc_oop.cpp.

◆ p_java2nrn_smeth

char**(* p_java2nrn_smeth) (Object *ho, Symbol *method)

Definition at line 25 of file hoc_oop.cpp.

◆ setwinID

jmethodID setwinID
static

Definition at line 72 of file nrnjava.cpp.