2 #include<jni-private.h>
7 __thread struct jnireferences * jnirefs;
9 struct _jobject * getwrapped(void * objptr) {
10 if ((jnirefs->index)>=MAXJNIREFS)
11 printf("OVERFLOW IN JOBJECT\n");
12 struct _jobject *ptr=&jnirefs->array[jnirefs->index++];
18 struct jnireferences *ptr=calloc(1, sizeof(struct jnireferences));
24 struct jnireferences *ptr=jnirefs;
30 jint RC_GetVersion(JNIEnv * env) {
31 return JNI_VERSION_1_1;
34 jclass RC_DefineClass(JNIEnv * env, const char * c,
35 jobject loader, const jbyte * buf,
37 printf("MISSING FEATURE IN %d\n",__LINE__);
41 //should return jclass object corresponding to classname
42 jclass RC_FindClass(JNIEnv * env, const char *classname) {
43 printf("MISSING FEATURE IN %d\n",__LINE__);
47 jmethodID RC_FromReflectedMethod(JNIEnv * env, jobject mthdobj) {
48 printf("MISSING FEATURE IN %d\n",__LINE__);
52 jfieldID RC_FromReflectedField(JNIEnv * env, jobject fldobj) {
53 printf("MISSING FEATURE IN %d\n",__LINE__);
57 jobject RC_ToReflectedMethod(JNIEnv * env, jclass classobj, jmethodID methodobj, jboolean flag) {
58 printf("MISSING FEATURE IN %d\n",__LINE__);
62 jclass RC_GetSuperclass(JNIEnv * env, jclass classobj) {
63 printf("MISSING FEATURE IN %d\n",__LINE__);
67 jboolean RC_IsAssignableFrom(JNIEnv * env, jclass obj1, jclass obj2) {
68 printf("MISSING FEATURE IN %d\n",__LINE__);
72 jobject RC_ToReflectedField(JNIEnv * env, jclass obj1, jfieldID fld, jboolean flag) {
73 printf("MISSING FEATURE IN %d\n",__LINE__);
77 jint RC_Throw(JNIEnv * env, jthrowable obj) {
78 printf("MISSING FEATURE IN %d\n",__LINE__);
82 jint RC_ThrowNew(JNIEnv * env, jclass cls, const char * str) {
83 printf("MISSING FEATURE IN %d\n",__LINE__);
86 jthrowable RC_ExceptionOccurred(JNIEnv * env) {
87 printf("MISSING FEATURE IN %d\n",__LINE__);
91 void RC_ExceptionDescribe(JNIEnv * env) {
92 printf("MISSING FEATURE IN %d\n",__LINE__);
95 void RC_ExceptionClear(JNIEnv * env) {
96 printf("MISSING FEATURE IN %d\n",__LINE__);
99 void RC_FatalError(JNIEnv * env, const char * str) {
100 printf("MISSING FEATURE IN %d\n",__LINE__);
103 jint RC_PushLocalFrame(JNIEnv * env, jint n) {
104 printf("MISSING FEATURE IN %d\n",__LINE__);
108 jobject RC_PopLocalFrame(JNIEnv * env, jobject obj) {
109 printf("MISSING FEATURE IN %d\n",__LINE__);
113 jobject RC_NewGlobalRef(JNIEnv * env, jobject obj) {
114 printf("MISSING FEATURE IN %d\n",__LINE__);
118 void RC_DeleteGlobalRef(JNIEnv * env, jobject obj) {
119 printf("MISSING FEATURE IN %d\n",__LINE__);
122 void RC_DeleteLocalRef(JNIEnv * env, jobject obj) {
123 printf("MISSING FEATURE IN %d\n",__LINE__);
126 jboolean RC_IsSameObject(JNIEnv * env, jobject obj1, jobject jobj2) {
127 printf("MISSING FEATURE IN %d\n",__LINE__);
131 jobject RC_NewLocalRef(JNIEnv * env, jobject obj) {
132 printf("MISSING FEATURE IN %d\n",__LINE__);
136 jint RC_EnsureLocalCapacity(JNIEnv * env, jint capacity) {
137 printf("MISSING FEATURE IN %d\n",__LINE__);
141 jobject RC_AllocObject(JNIEnv * env, jclass cls) {
142 printf("MISSING FEATURE IN %d\n",__LINE__);
146 jobject RC_NewObject(JNIEnv * env, jclass cls, jmethodID mid, ...) {
149 return RC_NewObjectV(env, cls, mid, va);
152 jobject RC_NewObjectV(JNIEnv * env, jclass cls, jmethodID mid, va_list va) {
153 printf("MISSING FEATURE IN %d\n",__LINE__);
157 jobject RC_NewObjectA(JNIEnv * env, jclass cls, jmethodID mid, const jvalue * vals) {
158 printf("MISSING FEATURE IN %d\n",__LINE__);
162 jobject RC_GetObjectArrayElement(JNIEnv * env, jobjectArray array, jsize size) {
163 printf("MISSING FEATURE IN %d\n",__LINE__);
167 void RC_SetObjectArrayElement(JNIEnv * env, jobjectArray array, jsize size, jobject obj) {
168 printf("MISSING FEATURE IN %d\n",__LINE__);
171 jclass RC_GetObjectClass(JNIEnv * env, jobject obj) {
172 printf("MISSING FEATURE IN %d\n",__LINE__);
176 jboolean RC_IsInstanceOf(JNIEnv * env, jobject obj, jclass cls) {
177 printf("MISSING FEATURE IN %d\n",__LINE__);
181 jmethodID RC_GetMethodID(JNIEnv * env, jclass cls, const char * str1, const char * str2) {
182 printf("MISSING FEATURE IN %d\n",__LINE__);
186 #define CALLMETHOD(R, T) R RC_Call ## T ## Method(JNIEnv *env, jobject obj, jmethodID mid, ...) { \
189 return RC_Call ## T ## MethodV(env, obj, mid, va); \
192 #define CALLMETHODV(R, T) R RC_Call ## T ## MethodV(JNIEnv * env, jobject obj, jmethodID mid, va_list va) { \
193 printf("MISSING FEATURE IN %d\n",__LINE__); \
197 #define CALLMETHODA(R, T) R RC_Call ## T ## MethodA(JNIEnv * env, jobject obj, jmethodID mid, const jvalue * valarray) { \
198 printf("MISSING FEATURE IN %d\n",__LINE__); \
202 #define CALLNVMETHOD(R, T) R RC_CallNonvirtual ## T ## Method(JNIEnv *env, jobject obj, jclass cls, jmethodID mid, ...) { \
205 return RC_CallNonvirtual ## T ## MethodV(env, obj, cls, mid, va); \
208 #define CALLNVMETHODV(R, T) R RC_CallNonvirtual ## T ## MethodV(JNIEnv * env, jobject obj, jclass cls, jmethodID mid, va_list va) { \
209 printf("MISSING FEATURE IN %d\n",__LINE__); \
213 #define CALLNVMETHODA(R, T) R RC_CallNonvirtual ## T ## MethodA(JNIEnv * env, jobject obj, jclass cls, jmethodID mid, const jvalue * valarray) { \
214 printf("MISSING FEATURE IN %d\n",__LINE__); \
218 #define GETFIELD(R, T) R RC_Get ## T ## Field(JNIEnv *env, jobject obj, jfieldID fld) { \
219 printf("MISSING FEATURE IN %d\n",__LINE__); \
223 #define SETFIELD(R, T) void RC_Set ## T ## Field(JNIEnv *env, jobject obj, jfieldID fld, R src) { \
224 printf("MISSING FEATURE IN %d\n",__LINE__); \
227 #define CALLSTMETHOD(R, T) R RC_CallStatic ## T ## Method(JNIEnv *env, jobject obj, jmethodID mid, ...) { \
230 return RC_CallStatic ## T ## MethodV(env, obj, mid, va); \
233 #define CALLSTMETHODV(R, T) R RC_CallStatic ## T ## MethodV(JNIEnv * env, jobject obj, jmethodID mid, va_list va) { \
234 printf("MISSING FEATURE IN %d\n",__LINE__); \
238 #define CALLSTMETHODA(R, T) R RC_CallStatic ## T ## MethodA(JNIEnv * env, jobject obj, jmethodID mid, const jvalue * valarray) { \
239 printf("MISSING FEATURE IN %d\n",__LINE__); \
243 #define GETSTFIELD(R, T) R RC_GetStatic ## T ## Field(JNIEnv *env, jclass cls, jfieldID fld) { \
244 printf("MISSING FEATURE IN %d\n",__LINE__); \
248 #define SETSTFIELD(R, T) void RC_SetStatic ## T ## Field(JNIEnv *env, jclass cls, jfieldID fld, R src) { \
249 printf("MISSING FEATURE IN %d\n",__LINE__); \
252 #define NEWARRAY(R, T) R ## Array RC_New ## T ## Array(JNIEnv *env, jsize size) { \
253 printf("MISSING FEATURE IN %d\n",__LINE__); \
257 #define GETARRAY(R, T) R * RC_Get ## T ## ArrayElements(JNIEnv *env, R ## Array array, jboolean * b) { \
258 printf("MISSING FEATURE IN %d\n",__LINE__); \
262 #define RELEASEARRAY(R, T) void RC_Release ## T ## ArrayElements(JNIEnv *env, R ## Array array, R * ptr, jint num) { \
263 printf("MISSING FEATURE IN %d\n",__LINE__); \
266 #define GETARRAYREGION(R, T) void RC_Get ## T ## ArrayRegion(JNIEnv *env, R ## Array array, jsize size1, jsize size2, R * ptr) { \
267 printf("MISSING FEATURE IN %d\n",__LINE__); \
270 #define SETARRAYREGION(R, T) void RC_Set ## T ## ArrayRegion(JNIEnv *env, R ## Array array, jsize size1, jsize size2, const R * ptr) { \
271 printf("MISSING FEATURE IN %d\n",__LINE__); \
274 #define CALLSET(R, T) \
278 CALLNVMETHODV(R, T) \
280 CALLNVMETHODA(R, T) \
283 CALLSTMETHODV(R, T) \
285 CALLSTMETHODA(R, T) \
291 GETARRAYREGION(R, T) \
294 jobjectArray RC_NewObjectArray(JNIEnv *env, jsize size, jclass cls, jobject obj) {
295 printf("MISSING FEATURE IN %d\n",__LINE__);
299 CALLMETHODV(jobject, Object)
300 CALLMETHOD(jobject, Object)
301 CALLMETHODA(jobject, Object)
302 CALLNVMETHODV(jobject, Object)
303 CALLNVMETHOD(jobject, Object)
304 CALLNVMETHODA(jobject, Object)
305 GETFIELD(jobject, Object)
306 SETFIELD(jobject, Object)
307 CALLSTMETHODV(jobject, Object)
308 CALLSTMETHOD(jobject, Object)
309 CALLSTMETHODA(jobject, Object)
310 GETSTFIELD(jobject, Object)
311 SETSTFIELD(jobject, Object)
312 GETARRAY(jobject, Object)
313 RELEASEARRAY(jobject, Object)
314 GETARRAYREGION(jobject, Object)
315 SETARRAYREGION(jobject, Object)
317 CALLSET(jboolean, Boolean);
318 CALLSET(jbyte, Byte);
319 CALLSET(jchar, Char);
320 CALLSET(jshort, Short);
322 CALLSET(jlong, Long);
323 CALLSET(jfloat, Float);
324 CALLSET(jdouble, Double);
326 void RC_CallVoidMethodV(JNIEnv * env, jobject obj, jmethodID mid, va_list va) {
327 printf("MISSING FEATURE IN %d\n",__LINE__);
330 void RC_CallVoidMethod(JNIEnv *env, jobject obj, jmethodID mid, ...) {
333 RC_CallVoidMethodV(env, obj, mid, va);
336 void RC_CallVoidMethodA(JNIEnv * env, jobject obj, jmethodID mid, const jvalue * valarray) {
337 printf("MISSING FEATURE IN %d\n",__LINE__);
340 void RC_CallNonvirtualVoidMethod(JNIEnv *env, jobject obj, jclass cls, jmethodID mid, ...) {
343 RC_CallNonvirtualVoidMethodV(env, obj, cls, mid, va);
346 void RC_CallNonvirtualVoidMethodV(JNIEnv * env, jobject obj, jclass cls, jmethodID mid, va_list va) {
347 printf("MISSING FEATURE IN %d\n",__LINE__);
350 void RC_CallNonvirtualVoidMethodA(JNIEnv * env, jobject obj, jclass cls, jmethodID mid, const jvalue * valarray) {
351 printf("MISSING FEATURE IN %d\n",__LINE__);
354 void RC_CallStaticVoidMethodV(JNIEnv * env, jclass cls, jmethodID mid, va_list va) {
355 printf("MISSING FEATURE IN %d\n",__LINE__);
358 void RC_CallStaticVoidMethod(JNIEnv *env, jclass cls, jmethodID mid, ...) {
361 RC_CallStaticVoidMethodV(env, cls, mid, va);
364 void RC_CallStaticVoidMethodA(JNIEnv * env, jclass cls, jmethodID mid, const jvalue * valarray) {
365 printf("MISSING FEATURE IN %d\n",__LINE__);
368 jfieldID RC_GetFieldID(JNIEnv * env, jclass cls, const char * str1, const char * str2) {
369 printf("MISSING FEATURE IN %d\n",__LINE__);
373 jmethodID RC_GetStaticMethodID(JNIEnv * env, jclass cls, const char * str1, const char * str2) {
374 printf("MISSING FEATURE IN %d\n",__LINE__);
378 jfieldID RC_GetStaticFieldID(JNIEnv * env, jclass cls, const char * str1, const char * str2) {
379 printf("MISSING FEATURE IN %d\n",__LINE__);
383 jint RC_RegisterNatives(JNIEnv * env, jclass cls, const JNINativeMethod * mid, jint num) {
384 printf("MISSING FEATURE IN %d\n",__LINE__);
388 jint RC_UnregisterNatives(JNIEnv * env, jclass cls) {
389 printf("MISSING FEATURE IN %d\n",__LINE__);
393 jint RC_MonitorEnter(JNIEnv * env, jobject obj) {
394 printf("MISSING FEATURE IN %d\n",__LINE__);
398 jint RC_MonitorExit(JNIEnv * env, jobject obj) {
399 printf("MISSING FEATURE IN %d\n",__LINE__);
403 jint RC_GetJavaVM(JNIEnv * env, JavaVM ** jvm) {
404 printf("MISSING FEATURE IN %d\n",__LINE__);
408 jstring RC_NewString(JNIEnv * env, const jchar * str, jsize size) {
409 printf("MISSING FEATURE IN %d\n",__LINE__);
413 jsize RC_GetStringLength(JNIEnv *env, jstring str) {
414 printf("MISSING FEATURE IN %d\n",__LINE__);
418 const jchar * RC_GetStringChars(JNIEnv * env, jstring str, jboolean * flag) {
419 printf("MISSING FEATURE IN %d\n",__LINE__);
423 void RC_ReleaseStringChars(JNIEnv * env, jstring str, const jchar * str2) {
424 printf("MISSING FEATURE IN %d\n",__LINE__);
427 jstring RC_NewStringUTF(JNIEnv * env, const char *str) {
428 printf("MISSING FEATURE IN %d\n",__LINE__);
432 jsize RC_GetStringUTFLength(JNIEnv * env, jstring str) {
433 printf("MISSING FEATURE IN %d\n",__LINE__);
437 const char * RC_GetStringUTFChars(JNIEnv * env, jstring str, jboolean * flag) {
438 printf("MISSING FEATURE IN %d\n",__LINE__);
442 void RC_ReleaseStringUTFChars(JNIEnv * env, jstring str, const char * str2) {
443 printf("MISSING FEATURE IN %d\n",__LINE__);
446 jsize RC_GetArrayLength(JNIEnv * env, jarray array) {
447 printf("MISSING FEATURE IN %d\n",__LINE__);