Home | History | Annotate | Download | only in java
      1 /* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
      2 /* ***** BEGIN LICENSE BLOCK *****
      3  * Version: NPL 1.1/GPL 2.0/LGPL 2.1
      4  *
      5  * The contents of this file are subject to the Netscape Public License
      6  * Version 1.1 (the "License"); you may not use this file except in
      7  * compliance with the License. You may obtain a copy of the License at
      8  * http://www.mozilla.org/NPL/
      9  *
     10  * Software distributed under the License is distributed on an "AS IS" basis,
     11  * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
     12  * for the specific language governing rights and limitations under the
     13  * License.
     14  *
     15  * The Original Code is mozilla.org code.
     16  *
     17  * The Initial Developer of the Original Code is
     18  * Netscape Communications Corporation.
     19  * Portions created by the Initial Developer are Copyright (C) 1998
     20  * the Initial Developer. All Rights Reserved.
     21  *
     22  * Contributor(s):
     23  *
     24  * Alternatively, the contents of this file may be used under the terms of
     25  * either the GNU General Public License Version 2 or later (the "GPL"), or
     26  * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
     27  * in which case the provisions of the GPL or the LGPL are applicable instead
     28  * of those above. If you wish to allow use of your version of this file only
     29  * under the terms of either the GPL or the LGPL, and not to allow others to
     30  * use your version of this file under the terms of the NPL, indicate your
     31  * decision by deleting the provisions above and replace them with the notice
     32  * and other provisions required by the GPL or the LGPL. If you do not delete
     33  * the provisions above, a recipient may use your version of this file under
     34  * the terms of any one of the NPL, the GPL or the LGPL.
     35  *
     36  * ***** END LICENSE BLOCK ***** */
     37 
     38 /*******************************************************************************
     39  * Java Runtime Interface
     40  ******************************************************************************/
     41 
     42 #ifndef JRI_H
     43 #define JRI_H
     44 
     45 #include "jritypes.h"
     46 
     47 #ifdef __cplusplus
     48 extern "C" {
     49 #endif /* __cplusplus */
     50 
     51 /*******************************************************************************
     52  * JRIEnv
     53  ******************************************************************************/
     54 
     55 /* The type of the JRIEnv interface. */
     56 typedef struct JRIEnvInterface	JRIEnvInterface;
     57 
     58 /* The type of a JRIEnv instance. */
     59 typedef const JRIEnvInterface*	JRIEnv;
     60 
     61 /*******************************************************************************
     62  * JRIEnv Operations
     63  ******************************************************************************/
     64 
     65 #define JRI_DefineClass(env, classLoader, buf, bufLen)	\
     66 	(((*(env))->DefineClass)(env, JRI_DefineClass_op, classLoader, buf, bufLen))
     67 
     68 #define JRI_FindClass(env, name)	\
     69 	(((*(env))->FindClass)(env, JRI_FindClass_op, name))
     70 
     71 #define JRI_Throw(env, obj)	\
     72 	(((*(env))->Throw)(env, JRI_Throw_op, obj))
     73 
     74 #define JRI_ThrowNew(env, clazz, message)	\
     75 	(((*(env))->ThrowNew)(env, JRI_ThrowNew_op, clazz, message))
     76 
     77 #define JRI_ExceptionOccurred(env)	\
     78 	(((*(env))->ExceptionOccurred)(env, JRI_ExceptionOccurred_op))
     79 
     80 #define JRI_ExceptionDescribe(env)	\
     81 	(((*(env))->ExceptionDescribe)(env, JRI_ExceptionDescribe_op))
     82 
     83 #define JRI_ExceptionClear(env)	\
     84 	(((*(env))->ExceptionClear)(env, JRI_ExceptionClear_op))
     85 
     86 #define JRI_NewGlobalRef(env, ref)	\
     87 	(((*(env))->NewGlobalRef)(env, JRI_NewGlobalRef_op, ref))
     88 
     89 #define JRI_DisposeGlobalRef(env, gref)	\
     90 	(((*(env))->DisposeGlobalRef)(env, JRI_DisposeGlobalRef_op, gref))
     91 
     92 #define JRI_GetGlobalRef(env, gref)	\
     93 	(((*(env))->GetGlobalRef)(env, JRI_GetGlobalRef_op, gref))
     94 
     95 #define JRI_SetGlobalRef(env, gref, ref)	\
     96 	(((*(env))->SetGlobalRef)(env, JRI_SetGlobalRef_op, gref, ref))
     97 
     98 #define JRI_IsSameObject(env, a, b)	\
     99 	(((*(env))->IsSameObject)(env, JRI_IsSameObject_op, a, b))
    100 
    101 #define JRI_NewObject(env)	((*(env))->NewObject)
    102 #define JRI_NewObjectV(env, clazz, methodID, args)	\
    103 	(((*(env))->NewObjectV)(env, JRI_NewObject_op_va_list, clazz, methodID, args))
    104 #define JRI_NewObjectA(env, clazz, method, args)	\
    105 	(((*(env))->NewObjectA)(env, JRI_NewObject_op_array, clazz, methodID, args))
    106 
    107 #define JRI_GetObjectClass(env, obj)	\
    108 	(((*(env))->GetObjectClass)(env, JRI_GetObjectClass_op, obj))
    109 
    110 #define JRI_IsInstanceOf(env, obj, clazz)	\
    111 	(((*(env))->IsInstanceOf)(env, JRI_IsInstanceOf_op, obj, clazz))
    112 
    113 #define JRI_GetMethodID(env, clazz, name, sig)	\
    114 	(((*(env))->GetMethodID)(env, JRI_GetMethodID_op, clazz, name, sig))
    115 
    116 #define JRI_CallMethod(env)	((*(env))->CallMethod)
    117 #define JRI_CallMethodV(env, obj, methodID, args)	\
    118 	(((*(env))->CallMethodV)(env, JRI_CallMethod_op_va_list, obj, methodID, args))
    119 #define JRI_CallMethodA(env, obj, methodID, args)	\
    120 	(((*(env))->CallMethodA)(env, JRI_CallMethod_op_array, obj, methodID, args))
    121 
    122 #define JRI_CallMethodBoolean(env)	((*(env))->CallMethodBoolean)
    123 #define JRI_CallMethodBooleanV(env, obj, methodID, args)	\
    124 	(((*(env))->CallMethodBooleanV)(env, JRI_CallMethodBoolean_op_va_list, obj, methodID, args))
    125 #define JRI_CallMethodBooleanA(env, obj, methodID, args)	\
    126 	(((*(env))->CallMethodBooleanA)(env, JRI_CallMethodBoolean_op_array, obj, methodID, args))
    127 
    128 #define JRI_CallMethodByte(env)	((*(env))->CallMethodByte)
    129 #define JRI_CallMethodByteV(env, obj, methodID, args)	\
    130 	(((*(env))->CallMethodByteV)(env, JRI_CallMethodByte_op_va_list, obj, methodID, args))
    131 #define JRI_CallMethodByteA(env, obj, methodID, args)	\
    132 	(((*(env))->CallMethodByteA)(env, JRI_CallMethodByte_op_array, obj, methodID, args))
    133 
    134 #define JRI_CallMethodChar(env)	((*(env))->CallMethodChar)
    135 #define JRI_CallMethodCharV(env, obj, methodID, args)	\
    136 	(((*(env))->CallMethodCharV)(env, JRI_CallMethodChar_op_va_list, obj, methodID, args))
    137 #define JRI_CallMethodCharA(env, obj, methodID, args)	\
    138 	(((*(env))->CallMethodCharA)(env, JRI_CallMethodChar_op_array, obj, methodID, args))
    139 
    140 #define JRI_CallMethodShort(env)	((*(env))->CallMethodShort)
    141 #define JRI_CallMethodShortV(env, obj, methodID, args)	\
    142 	(((*(env))->CallMethodShortV)(env, JRI_CallMethodShort_op_va_list, obj, methodID, args))
    143 #define JRI_CallMethodShortA(env, obj, methodID, args)	\
    144 	(((*(env))->CallMethodShortA)(env, JRI_CallMethodShort_op_array, obj, methodID, args))
    145 
    146 #define JRI_CallMethodInt(env)	((*(env))->CallMethodInt)
    147 #define JRI_CallMethodIntV(env, obj, methodID, args)	\
    148 	(((*(env))->CallMethodIntV)(env, JRI_CallMethodInt_op_va_list, obj, methodID, args))
    149 #define JRI_CallMethodIntA(env, obj, methodID, args)	\
    150 	(((*(env))->CallMethodIntA)(env, JRI_CallMethodInt_op_array, obj, methodID, args))
    151 
    152 #define JRI_CallMethodLong(env)	((*(env))->CallMethodLong)
    153 #define JRI_CallMethodLongV(env, obj, methodID, args)	\
    154 	(((*(env))->CallMethodLongV)(env, JRI_CallMethodLong_op_va_list, obj, methodID, args))
    155 #define JRI_CallMethodLongA(env, obj, methodID, args)	\
    156 	(((*(env))->CallMethodLongA)(env, JRI_CallMethodLong_op_array, obj, methodID, args))
    157 
    158 #define JRI_CallMethodFloat(env)	((*(env))->CallMethodFloat)
    159 #define JRI_CallMethodFloatV(env, obj, methodID, args)	\
    160 	(((*(env))->CallMethodFloatV)(env, JRI_CallMethodFloat_op_va_list, obj, methodID, args))
    161 #define JRI_CallMethodFloatA(env, obj, methodID, args)	\
    162 	(((*(env))->CallMethodFloatA)(env, JRI_CallMethodFloat_op_array, obj, methodID, args))
    163 
    164 #define JRI_CallMethodDouble(env)	((*(env))->CallMethodDouble)
    165 #define JRI_CallMethodDoubleV(env, obj, methodID, args)	\
    166 	(((*(env))->CallMethodDoubleV)(env, JRI_CallMethodDouble_op_va_list, obj, methodID, args))
    167 #define JRI_CallMethodDoubleA(env, obj, methodID, args)	\
    168 	(((*(env))->CallMethodDoubleA)(env, JRI_CallMethodDouble_op_array, obj, methodID, args))
    169 
    170 #define JRI_GetFieldID(env, clazz, name, sig)	\
    171 	(((*(env))->GetFieldID)(env, JRI_GetFieldID_op, clazz, name, sig))
    172 
    173 #define JRI_GetField(env, obj, fieldID)	\
    174 	(((*(env))->GetField)(env, JRI_GetField_op, obj, fieldID))
    175 
    176 #define JRI_GetFieldBoolean(env, obj, fieldID)	\
    177 	(((*(env))->GetFieldBoolean)(env, JRI_GetFieldBoolean_op, obj, fieldID))
    178 
    179 #define JRI_GetFieldByte(env, obj, fieldID)	\
    180 	(((*(env))->GetFieldByte)(env, JRI_GetFieldByte_op, obj, fieldID))
    181 
    182 #define JRI_GetFieldChar(env, obj, fieldID)	\
    183 	(((*(env))->GetFieldChar)(env, JRI_GetFieldChar_op, obj, fieldID))
    184 
    185 #define JRI_GetFieldShort(env, obj, fieldID)	\
    186 	(((*(env))->GetFieldShort)(env, JRI_GetFieldShort_op, obj, fieldID))
    187 
    188 #define JRI_GetFieldInt(env, obj, fieldID)	\
    189 	(((*(env))->GetFieldInt)(env, JRI_GetFieldInt_op, obj, fieldID))
    190 
    191 #define JRI_GetFieldLong(env, obj, fieldID)	\
    192 	(((*(env))->GetFieldLong)(env, JRI_GetFieldLong_op, obj, fieldID))
    193 
    194 #define JRI_GetFieldFloat(env, obj, fieldID)	\
    195 	(((*(env))->GetFieldFloat)(env, JRI_GetFieldFloat_op, obj, fieldID))
    196 
    197 #define JRI_GetFieldDouble(env, obj, fieldID)	\
    198 	(((*(env))->GetFieldDouble)(env, JRI_GetFieldDouble_op, obj, fieldID))
    199 
    200 #define JRI_SetField(env, obj, fieldID, value)	\
    201 	(((*(env))->SetField)(env, JRI_SetField_op, obj, fieldID, value))
    202 
    203 #define JRI_SetFieldBoolean(env, obj, fieldID, value)	\
    204 	(((*(env))->SetFieldBoolean)(env, JRI_SetFieldBoolean_op, obj, fieldID, value))
    205 
    206 #define JRI_SetFieldByte(env, obj, fieldID, value)	\
    207 	(((*(env))->SetFieldByte)(env, JRI_SetFieldByte_op, obj, fieldID, value))
    208 
    209 #define JRI_SetFieldChar(env, obj, fieldID, value)	\
    210 	(((*(env))->SetFieldChar)(env, JRI_SetFieldChar_op, obj, fieldID, value))
    211 
    212 #define JRI_SetFieldShort(env, obj, fieldID, value)	\
    213 	(((*(env))->SetFieldShort)(env, JRI_SetFieldShort_op, obj, fieldID, value))
    214 
    215 #define JRI_SetFieldInt(env, obj, fieldID, value)	\
    216 	(((*(env))->SetFieldInt)(env, JRI_SetFieldInt_op, obj, fieldID, value))
    217 
    218 #define JRI_SetFieldLong(env, obj, fieldID, value)	\
    219 	(((*(env))->SetFieldLong)(env, JRI_SetFieldLong_op, obj, fieldID, value))
    220 
    221 #define JRI_SetFieldFloat(env, obj, fieldID, value)	\
    222 	(((*(env))->SetFieldFloat)(env, JRI_SetFieldFloat_op, obj, fieldID, value))
    223 
    224 #define JRI_SetFieldDouble(env, obj, fieldID, value)	\
    225 	(((*(env))->SetFieldDouble)(env, JRI_SetFieldDouble_op, obj, fieldID, value))
    226 
    227 #define JRI_IsSubclassOf(env, a, b)	\
    228 	(((*(env))->IsSubclassOf)(env, JRI_IsSubclassOf_op, a, b))
    229 
    230 #define JRI_GetStaticMethodID(env, clazz, name, sig)	\
    231 	(((*(env))->GetStaticMethodID)(env, JRI_GetStaticMethodID_op, clazz, name, sig))
    232 
    233 #define JRI_CallStaticMethod(env)	((*(env))->CallStaticMethod)
    234 #define JRI_CallStaticMethodV(env, clazz, methodID, args)	\
    235 	(((*(env))->CallStaticMethodV)(env, JRI_CallStaticMethod_op_va_list, clazz, methodID, args))
    236 #define JRI_CallStaticMethodA(env, clazz, methodID, args)	\
    237 	(((*(env))->CallStaticMethodA)(env, JRI_CallStaticMethod_op_array, clazz, methodID, args))
    238 
    239 #define JRI_CallStaticMethodBoolean(env)	((*(env))->CallStaticMethodBoolean)
    240 #define JRI_CallStaticMethodBooleanV(env, clazz, methodID, args)	\
    241 	(((*(env))->CallStaticMethodBooleanV)(env, JRI_CallStaticMethodBoolean_op_va_list, clazz, methodID, args))
    242 #define JRI_CallStaticMethodBooleanA(env, clazz, methodID, args)	\
    243 	(((*(env))->CallStaticMethodBooleanA)(env, JRI_CallStaticMethodBoolean_op_array, clazz, methodID, args))
    244 
    245 #define JRI_CallStaticMethodByte(env)	((*(env))->CallStaticMethodByte)
    246 #define JRI_CallStaticMethodByteV(env, clazz, methodID, args)	\
    247 	(((*(env))->CallStaticMethodByteV)(env, JRI_CallStaticMethodByte_op_va_list, clazz, methodID, args))
    248 #define JRI_CallStaticMethodByteA(env, clazz, methodID, args)	\
    249 	(((*(env))->CallStaticMethodByteA)(env, JRI_CallStaticMethodByte_op_array, clazz, methodID, args))
    250 
    251 #define JRI_CallStaticMethodChar(env)	((*(env))->CallStaticMethodChar)
    252 #define JRI_CallStaticMethodCharV(env, clazz, methodID, args)	\
    253 	(((*(env))->CallStaticMethodCharV)(env, JRI_CallStaticMethodChar_op_va_list, clazz, methodID, args))
    254 #define JRI_CallStaticMethodCharA(env, clazz, methodID, args)	\
    255 	(((*(env))->CallStaticMethodCharA)(env, JRI_CallStaticMethodChar_op_array, clazz, methodID, args))
    256 
    257 #define JRI_CallStaticMethodShort(env)	((*(env))->CallStaticMethodShort)
    258 #define JRI_CallStaticMethodShortV(env, clazz, methodID, args)	\
    259 	(((*(env))->CallStaticMethodShortV)(env, JRI_CallStaticMethodShort_op_va_list, clazz, methodID, args))
    260 #define JRI_CallStaticMethodShortA(env, clazz, methodID, args)	\
    261 	(((*(env))->CallStaticMethodShortA)(env, JRI_CallStaticMethodShort_op_array, clazz, methodID, args))
    262 
    263 #define JRI_CallStaticMethodInt(env)	((*(env))->CallStaticMethodInt)
    264 #define JRI_CallStaticMethodIntV(env, clazz, methodID, args)	\
    265 	(((*(env))->CallStaticMethodIntV)(env, JRI_CallStaticMethodInt_op_va_list, clazz, methodID, args))
    266 #define JRI_CallStaticMethodIntA(env, clazz, methodID, args)	\
    267 	(((*(env))->CallStaticMethodIntA)(env, JRI_CallStaticMethodInt_op_array, clazz, methodID, args))
    268 
    269 #define JRI_CallStaticMethodLong(env)	((*(env))->CallStaticMethodLong)
    270 #define JRI_CallStaticMethodLongV(env, clazz, methodID, args)	\
    271 	(((*(env))->CallStaticMethodLongV)(env, JRI_CallStaticMethodLong_op_va_list, clazz, methodID, args))
    272 #define JRI_CallStaticMethodLongA(env, clazz, methodID, args)	\
    273 	(((*(env))->CallStaticMethodLongA)(env, JRI_CallStaticMethodLong_op_array, clazz, methodID, args))
    274 
    275 #define JRI_CallStaticMethodFloat(env)	((*(env))->CallStaticMethodFloat)
    276 #define JRI_CallStaticMethodFloatV(env, clazz, methodID, args)	\
    277 	(((*(env))->CallStaticMethodFloatV)(env, JRI_CallStaticMethodFloat_op_va_list, clazz, methodID, args))
    278 #define JRI_CallStaticMethodFloatA(env, clazz, methodID, args)	\
    279 	(((*(env))->CallStaticMethodFloatA)(env, JRI_CallStaticMethodFloat_op_array, clazz, methodID, args))
    280 
    281 #define JRI_CallStaticMethodDouble(env)	((*(env))->CallStaticMethodDouble)
    282 #define JRI_CallStaticMethodDoubleV(env, clazz, methodID, args)	\
    283 	(((*(env))->CallStaticMethodDoubleV)(env, JRI_CallStaticMethodDouble_op_va_list, clazz, methodID, args))
    284 #define JRI_CallStaticMethodDoubleA(env, clazz, methodID, args)	\
    285 	(((*(env))->CallStaticMethodDoubleA)(env, JRI_CallStaticMethodDouble_op_array, clazz, methodID, args))
    286 
    287 #define JRI_GetStaticFieldID(env, clazz, name, sig)	\
    288 	(((*(env))->GetStaticFieldID)(env, JRI_GetStaticFieldID_op, clazz, name, sig))
    289 
    290 #define JRI_GetStaticField(env, clazz, fieldID)	\
    291 	(((*(env))->GetStaticField)(env, JRI_GetStaticField_op, clazz, fieldID))
    292 
    293 #define JRI_GetStaticFieldBoolean(env, clazz, fieldID)	\
    294 	(((*(env))->GetStaticFieldBoolean)(env, JRI_GetStaticFieldBoolean_op, clazz, fieldID))
    295 
    296 #define JRI_GetStaticFieldByte(env, clazz, fieldID)	\
    297 	(((*(env))->GetStaticFieldByte)(env, JRI_GetStaticFieldByte_op, clazz, fieldID))
    298 
    299 #define JRI_GetStaticFieldChar(env, clazz, fieldID)	\
    300 	(((*(env))->GetStaticFieldChar)(env, JRI_GetStaticFieldChar_op, clazz, fieldID))
    301 
    302 #define JRI_GetStaticFieldShort(env, clazz, fieldID)	\
    303 	(((*(env))->GetStaticFieldShort)(env, JRI_GetStaticFieldShort_op, clazz, fieldID))
    304 
    305 #define JRI_GetStaticFieldInt(env, clazz, fieldID)	\
    306 	(((*(env))->GetStaticFieldInt)(env, JRI_GetStaticFieldInt_op, clazz, fieldID))
    307 
    308 #define JRI_GetStaticFieldLong(env, clazz, fieldID)	\
    309 	(((*(env))->GetStaticFieldLong)(env, JRI_GetStaticFieldLong_op, clazz, fieldID))
    310 
    311 #define JRI_GetStaticFieldFloat(env, clazz, fieldID)	\
    312 	(((*(env))->GetStaticFieldFloat)(env, JRI_GetStaticFieldFloat_op, clazz, fieldID))
    313 
    314 #define JRI_GetStaticFieldDouble(env, clazz, fieldID)	\
    315 	(((*(env))->GetStaticFieldDouble)(env, JRI_GetStaticFieldDouble_op, clazz, fieldID))
    316 
    317 #define JRI_SetStaticField(env, clazz, fieldID, value)	\
    318 	(((*(env))->SetStaticField)(env, JRI_SetStaticField_op, clazz, fieldID, value))
    319 
    320 #define JRI_SetStaticFieldBoolean(env, clazz, fieldID, value)	\
    321 	(((*(env))->SetStaticFieldBoolean)(env, JRI_SetStaticFieldBoolean_op, clazz, fieldID, value))
    322 
    323 #define JRI_SetStaticFieldByte(env, clazz, fieldID, value)	\
    324 	(((*(env))->SetStaticFieldByte)(env, JRI_SetStaticFieldByte_op, clazz, fieldID, value))
    325 
    326 #define JRI_SetStaticFieldChar(env, clazz, fieldID, value)	\
    327 	(((*(env))->SetStaticFieldChar)(env, JRI_SetStaticFieldChar_op, clazz, fieldID, value))
    328 
    329 #define JRI_SetStaticFieldShort(env, clazz, fieldID, value)	\
    330 	(((*(env))->SetStaticFieldShort)(env, JRI_SetStaticFieldShort_op, clazz, fieldID, value))
    331 
    332 #define JRI_SetStaticFieldInt(env, clazz, fieldID, value)	\
    333 	(((*(env))->SetStaticFieldInt)(env, JRI_SetStaticFieldInt_op, clazz, fieldID, value))
    334 
    335 #define JRI_SetStaticFieldLong(env, clazz, fieldID, value)	\
    336 	(((*(env))->SetStaticFieldLong)(env, JRI_SetStaticFieldLong_op, clazz, fieldID, value))
    337 
    338 #define JRI_SetStaticFieldFloat(env, clazz, fieldID, value)	\
    339 	(((*(env))->SetStaticFieldFloat)(env, JRI_SetStaticFieldFloat_op, clazz, fieldID, value))
    340 
    341 #define JRI_SetStaticFieldDouble(env, clazz, fieldID, value)	\
    342 	(((*(env))->SetStaticFieldDouble)(env, JRI_SetStaticFieldDouble_op, clazz, fieldID, value))
    343 
    344 #define JRI_NewString(env, unicode, len)	\
    345 	(((*(env))->NewString)(env, JRI_NewString_op, unicode, len))
    346 
    347 #define JRI_GetStringLength(env, string)	\
    348 	(((*(env))->GetStringLength)(env, JRI_GetStringLength_op, string))
    349 
    350 #define JRI_GetStringChars(env, string)	\
    351 	(((*(env))->GetStringChars)(env, JRI_GetStringChars_op, string))
    352 
    353 #define JRI_NewStringUTF(env, utf, len)	\
    354 	(((*(env))->NewStringUTF)(env, JRI_NewStringUTF_op, utf, len))
    355 
    356 #define JRI_GetStringUTFLength(env, string)	\
    357 	(((*(env))->GetStringUTFLength)(env, JRI_GetStringUTFLength_op, string))
    358 
    359 #define JRI_GetStringUTFChars(env, string)	\
    360 	(((*(env))->GetStringUTFChars)(env, JRI_GetStringUTFChars_op, string))
    361 
    362 #define JRI_NewScalarArray(env, length, elementSig, initialElements)	\
    363 	(((*(env))->NewScalarArray)(env, JRI_NewScalarArray_op, length, elementSig, initialElements))
    364 
    365 #define JRI_GetScalarArrayLength(env, array)	\
    366 	(((*(env))->GetScalarArrayLength)(env, JRI_GetScalarArrayLength_op, array))
    367 
    368 #define JRI_GetScalarArrayElements(env, array)	\
    369 	(((*(env))->GetScalarArrayElements)(env, JRI_GetScalarArrayElements_op, array))
    370 
    371 #define JRI_NewObjectArray(env, length, elementClass, initialElement)	\
    372 	(((*(env))->NewObjectArray)(env, JRI_NewObjectArray_op, length, elementClass, initialElement))
    373 
    374 #define JRI_GetObjectArrayLength(env, array)	\
    375 	(((*(env))->GetObjectArrayLength)(env, JRI_GetObjectArrayLength_op, array))
    376 
    377 #define JRI_GetObjectArrayElement(env, array, index)	\
    378 	(((*(env))->GetObjectArrayElement)(env, JRI_GetObjectArrayElement_op, array, index))
    379 
    380 #define JRI_SetObjectArrayElement(env, array, index, value)	\
    381 	(((*(env))->SetObjectArrayElement)(env, JRI_SetObjectArrayElement_op, array, index, value))
    382 
    383 #define JRI_RegisterNatives(env, clazz, nameAndSigArray, nativeProcArray)	\
    384 	(((*(env))->RegisterNatives)(env, JRI_RegisterNatives_op, clazz, nameAndSigArray, nativeProcArray))
    385 
    386 #define JRI_UnregisterNatives(env, clazz)	\
    387 	(((*(env))->UnregisterNatives)(env, JRI_UnregisterNatives_op, clazz))
    388 
    389 #define JRI_NewStringPlatform(env, string, len, encoding, encodingLength)	\
    390 	(((*(env))->NewStringPlatform)(env, JRI_NewStringPlatform_op, string, len, encoding, encodingLength))
    391 
    392 #define JRI_GetStringPlatformChars(env, string, encoding, encodingLength)	\
    393 	(((*(env))->GetStringPlatformChars)(env, JRI_GetStringPlatformChars_op, string, encoding, encodingLength))
    394 
    395 
    396 /*******************************************************************************
    397  * JRIEnv Interface
    398  ******************************************************************************/
    399 
    400 struct java_lang_ClassLoader;
    401 struct java_lang_Class;
    402 struct java_lang_Throwable;
    403 struct java_lang_Object;
    404 struct java_lang_String;
    405 
    406 struct JRIEnvInterface {
    407 	void*	reserved0;
    408 	void*	reserved1;
    409 	void*	reserved2;
    410 	void*	reserved3;
    411 	struct java_lang_Class*	(*FindClass)(JRIEnv* env, jint op, const char* a);
    412 	void	(*Throw)(JRIEnv* env, jint op, struct java_lang_Throwable* a);
    413 	void	(*ThrowNew)(JRIEnv* env, jint op, struct java_lang_Class* a, const char* b);
    414 	struct java_lang_Throwable*	(*ExceptionOccurred)(JRIEnv* env, jint op);
    415 	void	(*ExceptionDescribe)(JRIEnv* env, jint op);
    416 	void	(*ExceptionClear)(JRIEnv* env, jint op);
    417 	jglobal	(*NewGlobalRef)(JRIEnv* env, jint op, void* a);
    418 	void	(*DisposeGlobalRef)(JRIEnv* env, jint op, jglobal a);
    419 	void*	(*GetGlobalRef)(JRIEnv* env, jint op, jglobal a);
    420 	void	(*SetGlobalRef)(JRIEnv* env, jint op, jglobal a, void* b);
    421 	jbool	(*IsSameObject)(JRIEnv* env, jint op, void* a, void* b);
    422 	void*	(*NewObject)(JRIEnv* env, jint op, struct java_lang_Class* a, jint b, ...);
    423 	void*	(*NewObjectV)(JRIEnv* env, jint op, struct java_lang_Class* a, jint b, va_list c);
    424 	void*	(*NewObjectA)(JRIEnv* env, jint op, struct java_lang_Class* a, jint b, JRIValue* c);
    425 	struct java_lang_Class*	(*GetObjectClass)(JRIEnv* env, jint op, void* a);
    426 	jbool	(*IsInstanceOf)(JRIEnv* env, jint op, void* a, struct java_lang_Class* b);
    427 	jint	(*GetMethodID)(JRIEnv* env, jint op, struct java_lang_Class* a, const char* b, const char* c);
    428 	void*	(*CallMethod)(JRIEnv* env, jint op, void* a, jint b, ...);
    429 	void*	(*CallMethodV)(JRIEnv* env, jint op, void* a, jint b, va_list c);
    430 	void*	(*CallMethodA)(JRIEnv* env, jint op, void* a, jint b, JRIValue* c);
    431 	jbool	(*CallMethodBoolean)(JRIEnv* env, jint op, void* a, jint b, ...);
    432 	jbool	(*CallMethodBooleanV)(JRIEnv* env, jint op, void* a, jint b, va_list c);
    433 	jbool	(*CallMethodBooleanA)(JRIEnv* env, jint op, void* a, jint b, JRIValue* c);
    434 	jbyte	(*CallMethodByte)(JRIEnv* env, jint op, void* a, jint b, ...);
    435 	jbyte	(*CallMethodByteV)(JRIEnv* env, jint op, void* a, jint b, va_list c);
    436 	jbyte	(*CallMethodByteA)(JRIEnv* env, jint op, void* a, jint b, JRIValue* c);
    437 	jchar	(*CallMethodChar)(JRIEnv* env, jint op, void* a, jint b, ...);
    438 	jchar	(*CallMethodCharV)(JRIEnv* env, jint op, void* a, jint b, va_list c);
    439 	jchar	(*CallMethodCharA)(JRIEnv* env, jint op, void* a, jint b, JRIValue* c);
    440 	jshort	(*CallMethodShort)(JRIEnv* env, jint op, void* a, jint b, ...);
    441 	jshort	(*CallMethodShortV)(JRIEnv* env, jint op, void* a, jint b, va_list c);
    442 	jshort	(*CallMethodShortA)(JRIEnv* env, jint op, void* a, jint b, JRIValue* c);
    443 	jint	(*CallMethodInt)(JRIEnv* env, jint op, void* a, jint b, ...);
    444 	jint	(*CallMethodIntV)(JRIEnv* env, jint op, void* a, jint b, va_list c);
    445 	jint	(*CallMethodIntA)(JRIEnv* env, jint op, void* a, jint b, JRIValue* c);
    446 	jlong	(*CallMethodLong)(JRIEnv* env, jint op, void* a, jint b, ...);
    447 	jlong	(*CallMethodLongV)(JRIEnv* env, jint op, void* a, jint b, va_list c);
    448 	jlong	(*CallMethodLongA)(JRIEnv* env, jint op, void* a, jint b, JRIValue* c);
    449 	jfloat	(*CallMethodFloat)(JRIEnv* env, jint op, void* a, jint b, ...);
    450 	jfloat	(*CallMethodFloatV)(JRIEnv* env, jint op, void* a, jint b, va_list c);
    451 	jfloat	(*CallMethodFloatA)(JRIEnv* env, jint op, void* a, jint b, JRIValue* c);
    452 	jdouble	(*CallMethodDouble)(JRIEnv* env, jint op, void* a, jint b, ...);
    453 	jdouble	(*CallMethodDoubleV)(JRIEnv* env, jint op, void* a, jint b, va_list c);
    454 	jdouble	(*CallMethodDoubleA)(JRIEnv* env, jint op, void* a, jint b, JRIValue* c);
    455 	jint	(*GetFieldID)(JRIEnv* env, jint op, struct java_lang_Class* a, const char* b, const char* c);
    456 	void*	(*GetField)(JRIEnv* env, jint op, void* a, jint b);
    457 	jbool	(*GetFieldBoolean)(JRIEnv* env, jint op, void* a, jint b);
    458 	jbyte	(*GetFieldByte)(JRIEnv* env, jint op, void* a, jint b);
    459 	jchar	(*GetFieldChar)(JRIEnv* env, jint op, void* a, jint b);
    460 	jshort	(*GetFieldShort)(JRIEnv* env, jint op, void* a, jint b);
    461 	jint	(*GetFieldInt)(JRIEnv* env, jint op, void* a, jint b);
    462 	jlong	(*GetFieldLong)(JRIEnv* env, jint op, void* a, jint b);
    463 	jfloat	(*GetFieldFloat)(JRIEnv* env, jint op, void* a, jint b);
    464 	jdouble	(*GetFieldDouble)(JRIEnv* env, jint op, void* a, jint b);
    465 	void	(*SetField)(JRIEnv* env, jint op, void* a, jint b, void* c);
    466 	void	(*SetFieldBoolean)(JRIEnv* env, jint op, void* a, jint b, jbool c);
    467 	void	(*SetFieldByte)(JRIEnv* env, jint op, void* a, jint b, jbyte c);
    468 	void	(*SetFieldChar)(JRIEnv* env, jint op, void* a, jint b, jchar c);
    469 	void	(*SetFieldShort)(JRIEnv* env, jint op, void* a, jint b, jshort c);
    470 	void	(*SetFieldInt)(JRIEnv* env, jint op, void* a, jint b, jint c);
    471 	void	(*SetFieldLong)(JRIEnv* env, jint op, void* a, jint b, jlong c);
    472 	void	(*SetFieldFloat)(JRIEnv* env, jint op, void* a, jint b, jfloat c);
    473 	void	(*SetFieldDouble)(JRIEnv* env, jint op, void* a, jint b, jdouble c);
    474 	jbool	(*IsSubclassOf)(JRIEnv* env, jint op, struct java_lang_Class* a, struct java_lang_Class* b);
    475 	jint	(*GetStaticMethodID)(JRIEnv* env, jint op, struct java_lang_Class* a, const char* b, const char* c);
    476 	void*	(*CallStaticMethod)(JRIEnv* env, jint op, struct java_lang_Class* a, jint b, ...);
    477 	void*	(*CallStaticMethodV)(JRIEnv* env, jint op, struct java_lang_Class* a, jint b, va_list c);
    478 	void*	(*CallStaticMethodA)(JRIEnv* env, jint op, struct java_lang_Class* a, jint b, JRIValue* c);
    479 	jbool	(*CallStaticMethodBoolean)(JRIEnv* env, jint op, struct java_lang_Class* a, jint b, ...);
    480 	jbool	(*CallStaticMethodBooleanV)(JRIEnv* env, jint op, struct java_lang_Class* a, jint b, va_list c);
    481 	jbool	(*CallStaticMethodBooleanA)(JRIEnv* env, jint op, struct java_lang_Class* a, jint b, JRIValue* c);
    482 	jbyte	(*CallStaticMethodByte)(JRIEnv* env, jint op, struct java_lang_Class* a, jint b, ...);
    483 	jbyte	(*CallStaticMethodByteV)(JRIEnv* env, jint op, struct java_lang_Class* a, jint b, va_list c);
    484 	jbyte	(*CallStaticMethodByteA)(JRIEnv* env, jint op, struct java_lang_Class* a, jint b, JRIValue* c);
    485 	jchar	(*CallStaticMethodChar)(JRIEnv* env, jint op, struct java_lang_Class* a, jint b, ...);
    486 	jchar	(*CallStaticMethodCharV)(JRIEnv* env, jint op, struct java_lang_Class* a, jint b, va_list c);
    487 	jchar	(*CallStaticMethodCharA)(JRIEnv* env, jint op, struct java_lang_Class* a, jint b, JRIValue* c);
    488 	jshort	(*CallStaticMethodShort)(JRIEnv* env, jint op, struct java_lang_Class* a, jint b, ...);
    489 	jshort	(*CallStaticMethodShortV)(JRIEnv* env, jint op, struct java_lang_Class* a, jint b, va_list c);
    490 	jshort	(*CallStaticMethodShortA)(JRIEnv* env, jint op, struct java_lang_Class* a, jint b, JRIValue* c);
    491 	jint	(*CallStaticMethodInt)(JRIEnv* env, jint op, struct java_lang_Class* a, jint b, ...);
    492 	jint	(*CallStaticMethodIntV)(JRIEnv* env, jint op, struct java_lang_Class* a, jint b, va_list c);
    493 	jint	(*CallStaticMethodIntA)(JRIEnv* env, jint op, struct java_lang_Class* a, jint b, JRIValue* c);
    494 	jlong	(*CallStaticMethodLong)(JRIEnv* env, jint op, struct java_lang_Class* a, jint b, ...);
    495 	jlong	(*CallStaticMethodLongV)(JRIEnv* env, jint op, struct java_lang_Class* a, jint b, va_list c);
    496 	jlong	(*CallStaticMethodLongA)(JRIEnv* env, jint op, struct java_lang_Class* a, jint b, JRIValue* c);
    497 	jfloat	(*CallStaticMethodFloat)(JRIEnv* env, jint op, struct java_lang_Class* a, jint b, ...);
    498 	jfloat	(*CallStaticMethodFloatV)(JRIEnv* env, jint op, struct java_lang_Class* a, jint b, va_list c);
    499 	jfloat	(*CallStaticMethodFloatA)(JRIEnv* env, jint op, struct java_lang_Class* a, jint b, JRIValue* c);
    500 	jdouble	(*CallStaticMethodDouble)(JRIEnv* env, jint op, struct java_lang_Class* a, jint b, ...);
    501 	jdouble	(*CallStaticMethodDoubleV)(JRIEnv* env, jint op, struct java_lang_Class* a, jint b, va_list c);
    502 	jdouble	(*CallStaticMethodDoubleA)(JRIEnv* env, jint op, struct java_lang_Class* a, jint b, JRIValue* c);
    503 	jint	(*GetStaticFieldID)(JRIEnv* env, jint op, struct java_lang_Class* a, const char* b, const char* c);
    504 	void*	(*GetStaticField)(JRIEnv* env, jint op, struct java_lang_Class* a, jint b);
    505 	jbool	(*GetStaticFieldBoolean)(JRIEnv* env, jint op, struct java_lang_Class* a, jint b);
    506 	jbyte	(*GetStaticFieldByte)(JRIEnv* env, jint op, struct java_lang_Class* a, jint b);
    507 	jchar	(*GetStaticFieldChar)(JRIEnv* env, jint op, struct java_lang_Class* a, jint b);
    508 	jshort	(*GetStaticFieldShort)(JRIEnv* env, jint op, struct java_lang_Class* a, jint b);
    509 	jint	(*GetStaticFieldInt)(JRIEnv* env, jint op, struct java_lang_Class* a, jint b);
    510 	jlong	(*GetStaticFieldLong)(JRIEnv* env, jint op, struct java_lang_Class* a, jint b);
    511 	jfloat	(*GetStaticFieldFloat)(JRIEnv* env, jint op, struct java_lang_Class* a, jint b);
    512 	jdouble	(*GetStaticFieldDouble)(JRIEnv* env, jint op, struct java_lang_Class* a, jint b);
    513 	void	(*SetStaticField)(JRIEnv* env, jint op, struct java_lang_Class* a, jint b, void* c);
    514 	void	(*SetStaticFieldBoolean)(JRIEnv* env, jint op, struct java_lang_Class* a, jint b, jbool c);
    515 	void	(*SetStaticFieldByte)(JRIEnv* env, jint op, struct java_lang_Class* a, jint b, jbyte c);
    516 	void	(*SetStaticFieldChar)(JRIEnv* env, jint op, struct java_lang_Class* a, jint b, jchar c);
    517 	void	(*SetStaticFieldShort)(JRIEnv* env, jint op, struct java_lang_Class* a, jint b, jshort c);
    518 	void	(*SetStaticFieldInt)(JRIEnv* env, jint op, struct java_lang_Class* a, jint b, jint c);
    519 	void	(*SetStaticFieldLong)(JRIEnv* env, jint op, struct java_lang_Class* a, jint b, jlong c);
    520 	void	(*SetStaticFieldFloat)(JRIEnv* env, jint op, struct java_lang_Class* a, jint b, jfloat c);
    521 	void	(*SetStaticFieldDouble)(JRIEnv* env, jint op, struct java_lang_Class* a, jint b, jdouble c);
    522 	struct java_lang_String*	(*NewString)(JRIEnv* env, jint op, const jchar* a, jint b);
    523 	jint	(*GetStringLength)(JRIEnv* env, jint op, struct java_lang_String* a);
    524 	const jchar*	(*GetStringChars)(JRIEnv* env, jint op, struct java_lang_String* a);
    525 	struct java_lang_String*	(*NewStringUTF)(JRIEnv* env, jint op, const jbyte* a, jint b);
    526 	jint	(*GetStringUTFLength)(JRIEnv* env, jint op, struct java_lang_String* a);
    527 	const jbyte*	(*GetStringUTFChars)(JRIEnv* env, jint op, struct java_lang_String* a);
    528 	void*	(*NewScalarArray)(JRIEnv* env, jint op, jint a, const char* b, const jbyte* c);
    529 	jint	(*GetScalarArrayLength)(JRIEnv* env, jint op, void* a);
    530 	jbyte*	(*GetScalarArrayElements)(JRIEnv* env, jint op, void* a);
    531 	void*	(*NewObjectArray)(JRIEnv* env, jint op, jint a, struct java_lang_Class* b, void* c);
    532 	jint	(*GetObjectArrayLength)(JRIEnv* env, jint op, void* a);
    533 	void*	(*GetObjectArrayElement)(JRIEnv* env, jint op, void* a, jint b);
    534 	void	(*SetObjectArrayElement)(JRIEnv* env, jint op, void* a, jint b, void* c);
    535 	void	(*RegisterNatives)(JRIEnv* env, jint op, struct java_lang_Class* a, char** b, void** c);
    536 	void	(*UnregisterNatives)(JRIEnv* env, jint op, struct java_lang_Class* a);
    537 	struct java_lang_Class*	(*DefineClass)(JRIEnv* env, jint op, struct java_lang_ClassLoader* a, jbyte* b, jsize bLen);
    538 	struct java_lang_String*	(*NewStringPlatform)(JRIEnv* env, jint op, const jbyte* a, jint b, const jbyte* c, jint d);
    539 	const jbyte*	(*GetStringPlatformChars)(JRIEnv* env, jint op, struct java_lang_String* a, const jbyte* b, jint c);
    540 };
    541 
    542 /*
    543 ** ****************************************************************************
    544 ** JRIEnv Operation IDs
    545 ** ***************************************************************************
    546 */
    547 
    548 typedef enum JRIEnvOperations {
    549 	JRI_Reserved0_op,
    550 	JRI_Reserved1_op,
    551 	JRI_Reserved2_op,
    552 	JRI_Reserved3_op,
    553 	JRI_FindClass_op,
    554 	JRI_Throw_op,
    555 	JRI_ThrowNew_op,
    556 	JRI_ExceptionOccurred_op,
    557 	JRI_ExceptionDescribe_op,
    558 	JRI_ExceptionClear_op,
    559 	JRI_NewGlobalRef_op,
    560 	JRI_DisposeGlobalRef_op,
    561 	JRI_GetGlobalRef_op,
    562 	JRI_SetGlobalRef_op,
    563 	JRI_IsSameObject_op,
    564 	JRI_NewObject_op,
    565 	JRI_NewObject_op_va_list,
    566 	JRI_NewObject_op_array,
    567 	JRI_GetObjectClass_op,
    568 	JRI_IsInstanceOf_op,
    569 	JRI_GetMethodID_op,
    570 	JRI_CallMethod_op,
    571 	JRI_CallMethod_op_va_list,
    572 	JRI_CallMethod_op_array,
    573 	JRI_CallMethodBoolean_op,
    574 	JRI_CallMethodBoolean_op_va_list,
    575 	JRI_CallMethodBoolean_op_array,
    576 	JRI_CallMethodByte_op,
    577 	JRI_CallMethodByte_op_va_list,
    578 	JRI_CallMethodByte_op_array,
    579 	JRI_CallMethodChar_op,
    580 	JRI_CallMethodChar_op_va_list,
    581 	JRI_CallMethodChar_op_array,
    582 	JRI_CallMethodShort_op,
    583 	JRI_CallMethodShort_op_va_list,
    584 	JRI_CallMethodShort_op_array,
    585 	JRI_CallMethodInt_op,
    586 	JRI_CallMethodInt_op_va_list,
    587 	JRI_CallMethodInt_op_array,
    588 	JRI_CallMethodLong_op,
    589 	JRI_CallMethodLong_op_va_list,
    590 	JRI_CallMethodLong_op_array,
    591 	JRI_CallMethodFloat_op,
    592 	JRI_CallMethodFloat_op_va_list,
    593 	JRI_CallMethodFloat_op_array,
    594 	JRI_CallMethodDouble_op,
    595 	JRI_CallMethodDouble_op_va_list,
    596 	JRI_CallMethodDouble_op_array,
    597 	JRI_GetFieldID_op,
    598 	JRI_GetField_op,
    599 	JRI_GetFieldBoolean_op,
    600 	JRI_GetFieldByte_op,
    601 	JRI_GetFieldChar_op,
    602 	JRI_GetFieldShort_op,
    603 	JRI_GetFieldInt_op,
    604 	JRI_GetFieldLong_op,
    605 	JRI_GetFieldFloat_op,
    606 	JRI_GetFieldDouble_op,
    607 	JRI_SetField_op,
    608 	JRI_SetFieldBoolean_op,
    609 	JRI_SetFieldByte_op,
    610 	JRI_SetFieldChar_op,
    611 	JRI_SetFieldShort_op,
    612 	JRI_SetFieldInt_op,
    613 	JRI_SetFieldLong_op,
    614 	JRI_SetFieldFloat_op,
    615 	JRI_SetFieldDouble_op,
    616 	JRI_IsSubclassOf_op,
    617 	JRI_GetStaticMethodID_op,
    618 	JRI_CallStaticMethod_op,
    619 	JRI_CallStaticMethod_op_va_list,
    620 	JRI_CallStaticMethod_op_array,
    621 	JRI_CallStaticMethodBoolean_op,
    622 	JRI_CallStaticMethodBoolean_op_va_list,
    623 	JRI_CallStaticMethodBoolean_op_array,
    624 	JRI_CallStaticMethodByte_op,
    625 	JRI_CallStaticMethodByte_op_va_list,
    626 	JRI_CallStaticMethodByte_op_array,
    627 	JRI_CallStaticMethodChar_op,
    628 	JRI_CallStaticMethodChar_op_va_list,
    629 	JRI_CallStaticMethodChar_op_array,
    630 	JRI_CallStaticMethodShort_op,
    631 	JRI_CallStaticMethodShort_op_va_list,
    632 	JRI_CallStaticMethodShort_op_array,
    633 	JRI_CallStaticMethodInt_op,
    634 	JRI_CallStaticMethodInt_op_va_list,
    635 	JRI_CallStaticMethodInt_op_array,
    636 	JRI_CallStaticMethodLong_op,
    637 	JRI_CallStaticMethodLong_op_va_list,
    638 	JRI_CallStaticMethodLong_op_array,
    639 	JRI_CallStaticMethodFloat_op,
    640 	JRI_CallStaticMethodFloat_op_va_list,
    641 	JRI_CallStaticMethodFloat_op_array,
    642 	JRI_CallStaticMethodDouble_op,
    643 	JRI_CallStaticMethodDouble_op_va_list,
    644 	JRI_CallStaticMethodDouble_op_array,
    645 	JRI_GetStaticFieldID_op,
    646 	JRI_GetStaticField_op,
    647 	JRI_GetStaticFieldBoolean_op,
    648 	JRI_GetStaticFieldByte_op,
    649 	JRI_GetStaticFieldChar_op,
    650 	JRI_GetStaticFieldShort_op,
    651 	JRI_GetStaticFieldInt_op,
    652 	JRI_GetStaticFieldLong_op,
    653 	JRI_GetStaticFieldFloat_op,
    654 	JRI_GetStaticFieldDouble_op,
    655 	JRI_SetStaticField_op,
    656 	JRI_SetStaticFieldBoolean_op,
    657 	JRI_SetStaticFieldByte_op,
    658 	JRI_SetStaticFieldChar_op,
    659 	JRI_SetStaticFieldShort_op,
    660 	JRI_SetStaticFieldInt_op,
    661 	JRI_SetStaticFieldLong_op,
    662 	JRI_SetStaticFieldFloat_op,
    663 	JRI_SetStaticFieldDouble_op,
    664 	JRI_NewString_op,
    665 	JRI_GetStringLength_op,
    666 	JRI_GetStringChars_op,
    667 	JRI_NewStringUTF_op,
    668 	JRI_GetStringUTFLength_op,
    669 	JRI_GetStringUTFChars_op,
    670 	JRI_NewScalarArray_op,
    671 	JRI_GetScalarArrayLength_op,
    672 	JRI_GetScalarArrayElements_op,
    673 	JRI_NewObjectArray_op,
    674 	JRI_GetObjectArrayLength_op,
    675 	JRI_GetObjectArrayElement_op,
    676 	JRI_SetObjectArrayElement_op,
    677 	JRI_RegisterNatives_op,
    678 	JRI_UnregisterNatives_op,
    679 	JRI_DefineClass_op,
    680 	JRI_NewStringPlatform_op,
    681 	JRI_GetStringPlatformChars_op
    682 } JRIEnvOperations;
    683 
    684 #ifdef __cplusplus
    685 } /* extern "C" */
    686 #endif /* __cplusplus */
    687 
    688 #endif /* JRI_H */
    689 /******************************************************************************/
    690