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  doxygen 1.3.9.1