00001
00002
00003
00004
00005 #ifndef JRITYPES_H
00006 #define JRITYPES_H
00007
00008 #include "jri_md.h"
00009 #include <stddef.h>
00010 #include <stdlib.h>
00011 #include <stdarg.h>
00012
00013 #ifdef __cplusplus
00014 extern "C" {
00015 #endif
00016
00017 struct JRIEnvInterface;
00018
00019 typedef void* JRIRef;
00020 typedef void* JRIGlobalRef;
00021
00022 typedef jint JRIInterfaceID[4];
00023 typedef jint JRIFieldID;
00024 typedef jint JRIMethodID;
00025
00026 typedef JRIGlobalRef jglobal;
00027 typedef JRIRef jref;
00028
00029 typedef union JRIValue {
00030 jbool z;
00031 jbyte b;
00032 jchar c;
00033 jshort s;
00034 jint i;
00035 jlong l;
00036 jfloat f;
00037 jdouble d;
00038 jref r;
00039 } JRIValue;
00040
00041 typedef JRIValue jvalue;
00042
00043 typedef enum JRIBoolean {
00044 JRIFalse = 0,
00045 JRITrue = 1
00046 } JRIBoolean;
00047
00048 typedef enum JRIConstant {
00049 JRIUninitialized = -1
00050 } JRIConstant;
00051
00052 typedef JRIRef jbooleanArray;
00053 typedef JRIRef jbyteArray;
00054 typedef JRIRef jcharArray;
00055 typedef JRIRef jshortArray;
00056 typedef JRIRef jintArray;
00057 typedef JRIRef jlongArray;
00058 typedef JRIRef jfloatArray;
00059 typedef JRIRef jdoubleArray;
00060 typedef JRIRef jobjectArray;
00061 typedef JRIRef jstringArray;
00062 typedef JRIRef jarrayArray;
00063
00064 #define JRIConstructorMethodName "<init>"
00065
00066 #define JRISigArray(T) "[" T
00067 #define JRISigByte "B"
00068 #define JRISigChar "C"
00069 #define JRISigClass(name) "L" name ";"
00070 #define JRISigFloat "F"
00071 #define JRISigDouble "D"
00072 #define JRISigMethod(args) "(" args ")"
00073 #define JRISigNoArgs ""
00074 #define JRISigInt "I"
00075 #define JRISigLong "J"
00076 #define JRISigShort "S"
00077 #define JRISigVoid "V"
00078 #define JRISigBoolean "Z"
00079
00080 extern JRI_PUBLIC_API(const struct JRIEnvInterface**)
00081 JRI_GetCurrentEnv(void);
00082
00083 #define JRI_NewByteArray(env, length, initialValues) \
00084 JRI_NewScalarArray(env, length, JRISigByte, (jbyte*)(initialValues))
00085 #define JRI_GetByteArrayLength(env, array) \
00086 JRI_GetScalarArrayLength(env, array)
00087 #define JRI_GetByteArrayElements(env, array) \
00088 JRI_GetScalarArrayElements(env, array)
00089
00090 #define JRI_NewCharArray(env, length, initialValues) \
00091 JRI_NewScalarArray(env, ((length) * sizeof(jchar)), JRISigChar, (jbyte*)(initialValues))
00092 #define JRI_GetCharArrayLength(env, array) \
00093 JRI_GetScalarArrayLength(env, array)
00094 #define JRI_GetCharArrayElements(env, array) \
00095 ((jchar*)JRI_GetScalarArrayElements(env, array))
00096
00097 #define JRI_NewShortArray(env, length, initialValues) \
00098 JRI_NewScalarArray(env, ((length) * sizeof(jshort)), JRISigShort, (jbyte*)(initialValues))
00099 #define JRI_GetShortArrayLength(env, array) \
00100 JRI_GetScalarArrayLength(env, array)
00101 #define JRI_GetShortArrayElements(env, array) \
00102 ((jshort*)JRI_GetScalarArrayElements(env, array))
00103
00104 #define JRI_NewIntArray(env, length, initialValues) \
00105 JRI_NewScalarArray(env, ((length) * sizeof(jint)), JRISigInt, (jbyte*)(initialValues))
00106 #define JRI_GetIntArrayLength(env, array) \
00107 JRI_GetScalarArrayLength(env, array)
00108 #define JRI_GetIntArrayElements(env, array) \
00109 ((jint*)JRI_GetScalarArrayElements(env, array))
00110
00111 #define JRI_NewLongArray(env, length, initialValues) \
00112 JRI_NewScalarArray(env, ((length) * sizeof(jlong)), JRISigLong, (jbyte*)(initialValues))
00113 #define JRI_GetLongArrayLength(env, array) \
00114 JRI_GetScalarArrayLength(env, array)
00115 #define JRI_GetLongArrayElements(env, array) \
00116 ((jlong*)JRI_GetScalarArrayElements(env, array))
00117
00118 #define JRI_NewFloatArray(env, length, initialValues) \
00119 JRI_NewScalarArray(env, ((length) * sizeof(jfloat)), JRISigFloat, (jbyte*)(initialValues))
00120 #define JRI_GetFloatArrayLength(env, array) \
00121 JRI_GetScalarArrayLength(env, array)
00122 #define JRI_GetFloatArrayElements(env, array) \
00123 ((jfloat*)JRI_GetScalarArrayElements(env, array))
00124
00125 #define JRI_NewDoubleArray(env, length, initialValues) \
00126 JRI_NewScalarArray(env, ((length) * sizeof(jdouble)), JRISigDouble, (jbyte*)(initialValues))
00127 #define JRI_GetDoubleArrayLength(env, array) \
00128 JRI_GetScalarArrayLength(env, array)
00129 #define JRI_GetDoubleArrayElements(env, array) \
00130 ((jdouble*)JRI_GetScalarArrayElements(env, array))
00131
00132 #ifdef __cplusplus
00133 }
00134 #endif
00135 #endif
00136