Max 5 API Reference
00001 #ifndef _JIT_JAVAOB_H_ 00002 #define _JIT_JAVAOB_H_ 00003 00004 #ifdef WIN_VERSION 00005 #pragma pack(push, 8) // set to default packing 00006 #endif 00007 00008 #ifdef WIN_VERSION 00009 #pragma pack(pop) 00010 #endif 00011 00012 #if defined(MAC_VERSION) && (!TARGET_RT_MAC_MACHO) 00013 #define JIT_JAVA_USE_CFM 1 00014 #else 00015 #define JIT_JAVA_USE_CFM 0 00016 #endif 00017 00018 #if (JIT_JAVA_USE_CFM) 00019 #include "jni_cfm.h" 00020 #include "jit.javacfm.h" 00021 #define JIT_JAVA_JNI_CALL(e,m) (*(g_jenv->m)) 00022 #define JIT_JAVA_INVOKE_CALL(v,m) (*(g_jvm_invoke->m)) 00023 #else 00024 #if (TARGET_RT_MAC_MACHO) 00025 #include <JavaVM/jni.h> 00026 #else 00027 #include "jni.h" 00028 #endif 00029 #define JIT_JAVA_JNI_CALL(e,m) (*e)->m 00030 #define JIT_JAVA_INVOKE_CALL(vm,m) (*vm)->m 00031 #endif 00032 00033 #define THREADENV(env) JIT_JAVA_INVOKE_CALL(g_jvm,AttachCurrentThread)(g_jvm,(void **)&env,NULL) 00034 00035 #define JIT_JAVA_JITOBJ_CLASSNAME "com/cycling74/jitter/JitterObject" 00036 #define JIT_JAVA_JITOBJ_PTR_FIELD "_p_obj" 00037 #define JIT_JAVA_JITMATRIX_CLASSNAME "com/cycling74/jitter/JitterMatrix" 00038 #define JIT_JAVA_FRAME_SIZE 32 00039 00040 // atom related definitions 00041 #define MAX_ATOM_CLASSNAME "com/cycling74/max/Atom" 00042 #define STRING_CLASSNAME "java/lang/String" 00043 00044 #define NEW_INT_ATOM_MNAME "newAtom" 00045 #define NEW_INT_ATOM_SIG "(I)L"MAX_ATOM_CLASSNAME";" 00046 00047 #define NEW_FLOAT_ATOM_MNAME "newAtom" 00048 #define NEW_FLOAT_ATOM_SIG "(F)L"MAX_ATOM_CLASSNAME";" 00049 00050 #define NEW_STRING_ATOM_MNAME "newAtom" 00051 #define NEW_STRING_ATOM_SIG "(L"STRING_CLASSNAME";)L"MAX_ATOM_CLASSNAME";" 00052 00053 #define GET_INT_VALUE_MNAME "getInt" 00054 #define GET_INT_VALUE_SIG "()I" 00055 #define GET_FLOAT_VALUE_MNAME "getFloat" 00056 #define GET_FLOAT_VALUE_SIG "()F" 00057 #define GET_STRING_VALUE_MNAME "getString" 00058 #define GET_STRING_VALUE_SIG "()L"STRING_CLASSNAME";" 00059 00060 // These must be kept in sync with the definitions in Atom.java and AtomDataTypes.java. 00061 00062 // field mType is an int. 00063 #define GET_ATOM_TYPE_MNAME "getType" 00064 #define GET_ATOM_TYPE_SIG "()I" 00065 00066 // These are defined as static final ints in AtomDataTypes. 00067 #define ATOM_TYPENUM_LONG 1 00068 #define ATOM_TYPENUM_FLOAT 2 00069 #define ATOM_TYPENUM_STRING 3 00070 00071 00072 00073 extern JavaVM *g_jvm; 00074 #if (JIT_JAVA_USE_CFM) 00075 extern t_cfm_jni_env *g_jenv; 00076 extern t_cfm_invoke_interface *g_jvm_invoke; 00077 #endif 00078 00079 extern jfieldID g_jit_java_p_jitobj_fid; 00080 extern jclass g_jit_java_jitobj_clazz; 00081 extern jclass g_jit_java_jitmatrix_clazz; 00082 extern jclass g_jit_java_jitlistener_clazz; 00083 extern jclass g_atom_clazz; 00084 extern jclass g_string_clazz; 00085 extern jclass g_object_clazz; 00086 00087 int checkException(JNIEnv *env); 00088 jclass jit_java_getclassbyname(JNIEnv *env, char *className); 00089 jobject jit_java_newatom(JNIEnv *env, t_atom *a); 00090 jobjectArray jit_java_newatomarray(JNIEnv *env, short ac, t_atom *av); 00091 jintArray jit_java_newintarray(JNIEnv *env, short ac, t_atom *av); 00092 jfloatArray jit_java_newfloatarray(JNIEnv *env, short ac, t_atom *av); 00093 jdoubleArray jit_java_newdoublearray(JNIEnv *env, short ac, t_atom *av); 00094 00095 jobjectArray JNICALL jit_java_jitobj_returnvalue(JNIEnv *env, t_atom a); 00096 jintArray JNICALL jit_java_jitobj_returnvalue_intarray(JNIEnv *env, t_atom a); 00097 jfloatArray JNICALL jit_java_jitobj_returnvalue_floatarray(JNIEnv *env, t_atom a); 00098 jdoubleArray JNICALL jit_java_jitobj_returnvalue_doublearray(JNIEnv *env, t_atom a); 00099 00100 t_atom *jit_java_newargv(JNIEnv *env, jobjectArray array, short *nElts); 00101 00102 long jit_java_atomsfromintarray(JNIEnv *env, jintArray array, long count, t_atom *av); 00103 long jit_java_atomsfromfloatarray(JNIEnv *env, jfloatArray array, long count, t_atom *av); 00104 long jit_java_atomsfromdoublearray(JNIEnv *env, jdoubleArray array, long count, t_atom *av); 00105 00106 t_symbol *jit_java_regob_lookup(t_jit_object *x); 00107 t_jit_err jit_java_regob_register(t_jit_object *x, t_symbol *regname); 00108 00109 t_jit_err jit_java_jitmatrix_init(void); 00110 t_jit_err jit_java_jitlistener_init(void); 00111 00112 00113 00114 #endif //_JIT_JAVAOB_H_
Copyright © 2008, Cycling '74