jritypes_8h-source.html
jritypes.h
00001 /* -*- Mode: C; tab-width: 4; -*- */ 00002 /******************************************************************************* 00003 * Java Runtime Interface 00004 * Copyright (c) 1996 Netscape Communications Corporation. All rights reserved. 00005 ******************************************************************************/ 00006 00007 #ifndef JRITYPES_H 00008 #define JRITYPES_H 00009 00010 #include "jri_md.h" 00011 #include <stddef.h> 00012 #include <stdlib.h> 00013 #include <stdarg.h> 00014 00015 #ifdef __cplusplus 00016 extern "C" { 00017 #endif 00018 00019 /******************************************************************************* 00020 * Types 00021 ******************************************************************************/ 00022 00023 struct JRIEnvInterface; 00024 00025 typedef void* JRIRef; 00026 typedef void* JRIGlobalRef; 00027 00028 typedef jint JRIInterfaceID[4]; 00029 typedef jint JRIFieldID; 00030 typedef jint JRIMethodID; 00031 00032 /* synonyms: */ 00033 typedef JRIGlobalRef jglobal; 00034 typedef JRIRef jref; 00035 00036 typedef union JRIValue { 00037 jbool z; 00038 jbyte b; 00039 jchar c; 00040 jshort s; 00041 jint i; 00042 jlong l; 00043 jfloat f; 00044 jdouble d; 00045 jref r; 00046 } JRIValue; 00047 00048 typedef JRIValue jvalue; 00049 00050 typedef enum JRIBoolean { 00051 JRIFalse = 0, 00052 JRITrue = 1 00053 } JRIBoolean; 00054 00055 typedef enum JRIConstant { 00056 JRIUninitialized = -1 00057 } JRIConstant; 00058 00059 /* convenience types: */ 00060 typedef JRIRef jbooleanArray; 00061 typedef JRIRef jbyteArray; 00062 typedef JRIRef jcharArray; 00063 typedef JRIRef jshortArray; 00064 typedef JRIRef jintArray; 00065 typedef JRIRef jlongArray; 00066 typedef JRIRef jfloatArray; 00067 typedef JRIRef jdoubleArray; 00068 typedef JRIRef jobjectArray; 00069 typedef JRIRef jstringArray; 00070 typedef JRIRef jarrayArray; 00071 00072 #define JRIConstructorMethodName "<init>" 00073 00074 /******************************************************************************* 00075 * Signature Construction Macros 00076 ******************************************************************************/ 00077 00078 /* 00079 ** These macros can be used to construct signature strings. Hopefully their names 00080 ** are a little easier to remember than the single character they correspond to. 00081 ** For example, to specify the signature of the method: 00082 ** 00083 ** public int read(byte b[], int off, int len); 00084 ** 00085 ** you could write something like this in C: 00086 ** 00087 ** char* readSig = JRISigMethod(JRISigArray(JRISigByte) 00088 ** JRISigInt 00089 ** JRISigInt) JRISigInt; 00090 ** 00091 ** Of course, don't put commas between the types. 00092 */ 00093 #define JRISigArray(T) "[" T 00094 #define JRISigByte "B" 00095 #define JRISigChar "C" 00096 #define JRISigClass(name) "L" name ";" 00097 #define JRISigFloat "F" 00098 #define JRISigDouble "D" 00099 #define JRISigMethod(args) "(" args ")" 00100 #define JRISigNoArgs "" 00101 #define JRISigInt "I" 00102 #define JRISigLong "J" 00103 #define JRISigShort "S" 00104 #define JRISigVoid "V" 00105 #define JRISigBoolean "Z" 00106 00107 /******************************************************************************* 00108 * Environments 00109 ******************************************************************************/ 00110 00111 extern JRI_PUBLIC_API(const struct JRIEnvInterface**) 00112 JRI_GetCurrentEnv(void); 00113 00114 /******************************************************************************* 00115 * Specific Scalar Array Types 00116 ******************************************************************************/ 00117 00118 /* 00119 ** The JRI Native Method Interface does not support boolean arrays. This 00120 ** is to allow Java runtime implementations to optimize boolean array 00121 ** storage. Using the ScalarArray operations on boolean arrays is bound 00122 ** to fail, so convert any boolean arrays to byte arrays in Java before 00123 ** passing them to a native method. 00124 */ 00125 00126 #define JRI_NewByteArray(env, length, initialValues) \ 00127 JRI_NewScalarArray(env, length, JRISigByte, (jbyte*)(initialValues)) 00128 #define JRI_GetByteArrayLength(env, array) \ 00129 JRI_GetScalarArrayLength(env, array) 00130 #define JRI_GetByteArrayElements(env, array) \ 00131 JRI_GetScalarArrayElements(env, array) 00132 00133 #define JRI_NewCharArray(env, length, initialValues) \ 00134 JRI_NewScalarArray(env, ((length) * sizeof(jchar)), JRISigChar, (jbyte*)(initialValues)) 00135 #define JRI_GetCharArrayLength(env, array) \ 00136 JRI_GetScalarArrayLength(env, array) 00137 #define JRI_GetCharArrayElements(env, array) \ 00138 ((jchar*)JRI_GetScalarArrayElements(env, array)) 00139 00140 #define JRI_NewShortArray(env, length, initialValues) \ 00141 JRI_NewScalarArray(env, ((length) * sizeof(jshort)), JRISigShort, (jbyte*)(initialValues)) 00142 #define JRI_GetShortArrayLength(env, array) \ 00143 JRI_GetScalarArrayLength(env, array) 00144 #define JRI_GetShortArrayElements(env, array) \ 00145 ((jshort*)JRI_GetScalarArrayElements(env, array)) 00146 00147 #define JRI_NewIntArray(env, length, initialValues) \ 00148 JRI_NewScalarArray(env, ((length) * sizeof(jint)), JRISigInt, (jbyte*)(initialValues)) 00149 #define JRI_GetIntArrayLength(env, array) \ 00150 JRI_GetScalarArrayLength(env, array) 00151 #define JRI_GetIntArrayElements(env, array) \ 00152 ((jint*)JRI_GetScalarArrayElements(env, array)) 00153 00154 #define JRI_NewLongArray(env, length, initialValues) \ 00155 JRI_NewScalarArray(env, ((length) * sizeof(jlong)), JRISigLong, (jbyte*)(initialValues)) 00156 #define JRI_GetLongArrayLength(env, array) \ 00157 JRI_GetScalarArrayLength(env, array) 00158 #define JRI_GetLongArrayElements(env, array) \ 00159 ((jlong*)JRI_GetScalarArrayElements(env, array)) 00160 00161 #define JRI_NewFloatArray(env, length, initialValues) \ 00162 JRI_NewScalarArray(env, ((length) * sizeof(jfloat)), JRISigFloat, (jbyte*)(initialValues)) 00163 #define JRI_GetFloatArrayLength(env, array) \ 00164 JRI_GetScalarArrayLength(env, array) 00165 #define JRI_GetFloatArrayElements(env, array) \ 00166 ((jfloat*)JRI_GetScalarArrayElements(env, array)) 00167 00168 #define JRI_NewDoubleArray(env, length, initialValues) \ 00169 JRI_NewScalarArray(env, ((length) * sizeof(jdouble)), JRISigDouble, (jbyte*)(initialValues)) 00170 #define JRI_GetDoubleArrayLength(env, array) \ 00171 JRI_GetScalarArrayLength(env, array) 00172 #define JRI_GetDoubleArrayElements(env, array) \ 00173 ((jdouble*)JRI_GetScalarArrayElements(env, array)) 00174 00175 /******************************************************************************/ 00176 #ifdef __cplusplus 00177 } 00178 #endif 00179 #endif /* JRITYPES_H */ 00180 /******************************************************************************/
Generated on Thu Nov 25 15:42:53 2004 for iARS(internetAudioRenderingSystem) by
