77b82992a77df8a8a845fc52ff5723c28d3c308f
[IRC.git] / Robust / src / Runtime / jni / jni-private.h
1 #ifndef JNI_PRIVATE_H
2 #define JNI_PRIVATE_H
3 #include "jni.h"
4
5 struct _jmethodID {
6   char *methodname;
7 };
8
9 struct _jfieldID {
10   char *fieldname;
11 };
12
13 struct _jobject {
14   void * ref;
15 };
16
17 struct c_class {
18   int type;
19   char * packagename;
20   char * classname;
21   int numMethods;
22   struct _jmethodID * methods;
23   int numFields;
24   struct _jfieldID *fields;
25 };
26
27 #define MAXJNIREFS 2048
28 struct jnireferences {
29   struct jnireferences * next;
30   int index;
31   struct _jobject array[MAXJNIREFS];
32 };
33
34 #ifndef MAC
35 struct _jobject * getwrapped(void * objptr);
36 void jnipushframe();
37 void jnipopframe();
38 extern __thread struct jnireferences * jnirefs;
39 #define JNIUNWRAP(x) ((x==NULL)?NULL:x->ref)
40 #define JNIWRAP(x) getwrapper(x);
41 #define JNIPUSHFRAME() jnipushframe();
42 #define JNIPOPFRAME() jnipopframe();
43 #endif
44
45 jint RC_GetVersion(JNIEnv * env);
46 jclass RC_DefineClass(JNIEnv * env, const char * c, jobject loader, const jbyte * buf, jsize bufLen);
47 jclass RC_FindClass(JNIEnv * env, const char *classname);
48 jmethodID RC_FromReflectedMethod(JNIEnv * env, jobject mthdobj);
49 jfieldID RC_FromReflectedField(JNIEnv * env, jobject fldobj);
50 jobject RC_ToReflectedMethod(JNIEnv * env, jclass classobj, jmethodID methodobj, jboolean flag);
51 jclass RC_GetSuperclass(JNIEnv * env, jclass classobj);
52 jboolean RC_IsAssignableFrom(JNIEnv *, jclass, jclass);
53 jobject RC_ToReflectedField(JNIEnv *, jclass, jfieldID, jboolean);
54 jint RC_Throw(JNIEnv * env, jthrowable exc);
55 jint RC_ThrowNew(JNIEnv * env, jclass cls, const char * str);
56 jthrowable RC_ExceptionOccurred(JNIEnv * env);
57 void RC_ExceptionDescribe(JNIEnv * env);
58 void RC_ExceptionClear(JNIEnv * env);
59 void RC_FatalError(JNIEnv * env, const char * str);
60 jint RC_PushLocalFrame(JNIEnv * env, jint i);
61 jobject RC_PopLocalFrame(JNIEnv * env, jobject obj);
62 jobject RC_NewGlobalRef(JNIEnv * env, jobject obj);
63 void RC_DeleteGlobalRef(JNIEnv * env, jobject obj);
64 void RC_DeleteLocalRef(JNIEnv * env, jobject obj);
65 jboolean RC_IsSameObject(JNIEnv * env, jobject obj1, jobject obj2);
66 jobject RC_NewLocalRef(JNIEnv * env, jobject obj);
67 jint RC_EnsureLocalCapacity(JNIEnv * env, jint capacity);
68 jobject RC_AllocObject(JNIEnv * env, jclass cls);
69 jobject RC_NewObject(JNIEnv * env, jclass cls, jmethodID methodobj, ...);
70 jobject RC_NewObjectV(JNIEnv * env, jclass cls, jmethodID methodobj, va_list valist);
71 jobject RC_NewObjectA(JNIEnv * env, jclass cls, jmethodID methodobj, const jvalue * args);
72 jobject RC_GetObjectArrayElement(JNIEnv *, jobjectArray, jsize);
73 void RC_SetObjectArrayElement(JNIEnv *, jobjectArray, jsize, jobject);
74
75 jclass RC_GetObjectClass(JNIEnv * env, jobject obj);
76 jboolean RC_IsInstanceOf(JNIEnv * env, jobject obj, jclass cls);
77 jmethodID RC_GetMethodID(JNIEnv * env, jclass cls, const char * str1, const char * str2);
78
79 #define DCALLMETHOD(R, T) R RC_Call ## T ## Method(JNIEnv *env, jobject obj, jmethodID mid, ...);
80
81 #define DCALLMETHODV(R, T) R RC_Call ## T ## MethodV(JNIEnv * env, jobject obj, jmethodID mid, va_list va);
82
83 #define DCALLMETHODA(R, T) R RC_Call ## T ## MethodA(JNIEnv * env, jobject obj, jmethodID mid, const jvalue * valarray);
84
85 #define DCALLNVMETHOD(R, T) R RC_CallNonvirtual ## T ## Method(JNIEnv *env, jobject obj, jclass cls, jmethodID mid, ...);
86
87 #define DCALLNVMETHODV(R, T) R RC_CallNonvirtual ## T ## MethodV(JNIEnv * env, jobject obj, jclass cls, jmethodID mid, va_list va);
88
89 #define DCALLNVMETHODA(R, T) R RC_CallNonvirtual ## T ## MethodA(JNIEnv * env, jobject obj, jclass cls, jmethodID mid, const jvalue * valarray);
90
91 #define DGETFIELD(R, T) R RC_Get ## T ## Field(JNIEnv *env, jobject obj, jfieldID fld);
92
93 #define DSETFIELD(R, T) void RC_Set ## T ## Field(JNIEnv *env, jobject obj, jfieldID fld, R src);
94
95 #define DCALLSTMETHOD(R, T) R RC_CallStatic ## T ## Method(JNIEnv *env, jobject obj, jmethodID mid, ...);
96
97 #define DCALLSTMETHODV(R, T) R RC_CallStatic ## T ## MethodV(JNIEnv * env, jobject obj, jmethodID mid, va_list va);
98
99 #define DCALLSTMETHODA(R, T) R RC_CallStatic ## T ## MethodA(JNIEnv * env, jobject obj, jmethodID mid, const jvalue * valarray);
100
101 #define DGETSTFIELD(R, T) R RC_GetStatic ## T ## Field(JNIEnv *env, jclass cls, jfieldID fld);
102
103 #define DSETSTFIELD(R, T) void RC_SetStatic ## T ## Field(JNIEnv *env, jclass cls, jfieldID fld, R src);
104
105 #define DNEWARRAY(R, T) R ## Array RC_New ## T ## Array(JNIEnv *env, jsize size);
106
107 #define DGETARRAY(R, T) R * RC_Get ## T ## ArrayElements(JNIEnv *env, R ## Array array, jboolean * b);
108
109 #define DRELEASEARRAY(R, T) void RC_Release ## T ## ArrayElements(JNIEnv *env, R ## Array array, R * ptr, jint num);
110
111 #define DGETARRAYREGION(R, T) void RC_Get ## T ## ArrayRegion(JNIEnv *env, R ## Array array, jsize size1, jsize size2, R * ptr);
112
113 #define DSETARRAYREGION(R, T) void RC_Set ## T ## ArrayRegion(JNIEnv *env, R ## Array array, jsize size1, jsize size2, const R * ptr);
114
115 #define DCALLSET(R, T)                          \
116   DCALLMETHODV(R, T)                            \
117   DCALLMETHOD(R, T)                             \
118   DCALLMETHODA(R, T)                            \
119   DCALLNVMETHODV(R, T)                          \
120   DCALLNVMETHOD(R, T)                           \
121   DCALLNVMETHODA(R, T)                          \
122   DGETFIELD(R, T)                               \
123   DSETFIELD(R, T)                               \
124   DCALLSTMETHODV(R, T)                          \
125   DCALLSTMETHOD(R, T)                           \
126   DCALLSTMETHODA(R, T)                          \
127   DGETSTFIELD(R, T)                             \
128   DSETSTFIELD(R, T)                             \
129   DNEWARRAY(R, T)                               \
130   DGETARRAY(R, T)                               \
131   DRELEASEARRAY(R, T)                           \
132   DGETARRAYREGION(R, T)                         \
133   DSETARRAYREGION(R, T)
134
135 DCALLMETHODV(jobject, Object)
136 DCALLMETHOD(jobject, Object)
137 DCALLMETHODA(jobject, Object)
138 DCALLNVMETHODV(jobject, Object)
139 DCALLNVMETHOD(jobject, Object)
140 DCALLNVMETHODA(jobject, Object)
141 DGETFIELD(jobject, Object)
142 DSETFIELD(jobject, Object)
143 DCALLSTMETHODV(jobject, Object)
144 DCALLSTMETHOD(jobject, Object)
145 DCALLSTMETHODA(jobject, Object)
146 DGETSTFIELD(jobject, Object)
147 DSETSTFIELD(jobject, Object)
148 DGETARRAY(jobject, Object)
149 DRELEASEARRAY(jobject, Object)
150 DGETARRAYREGION(jobject, Object)
151 DSETARRAYREGION(jobject, Object)
152
153 DCALLSET(jboolean, Boolean);
154 DCALLSET(jbyte, Byte);
155 DCALLSET(jchar, Char);
156 DCALLSET(jshort, Short);
157 DCALLSET(jint, Int);
158 DCALLSET(jlong, Long);
159 DCALLSET(jfloat, Float);
160 DCALLSET(jdouble, Double);
161
162 jobjectArray RC_NewObjectArray(JNIEnv *env, jsize size, jclass cls, jobject obj);
163 void RC_CallVoidMethodV(JNIEnv * env, jobject obj, jmethodID mid, va_list va);
164 void RC_CallVoidMethod(JNIEnv *env, jobject obj, jmethodID mid, ...);
165 void RC_CallVoidMethodA(JNIEnv * env, jobject obj, jmethodID mid, const jvalue * valarray);
166 void RC_CallStaticVoidMethod(JNIEnv *env, jclass cls, jmethodID mid, ...);
167 void RC_CallStaticVoidMethodV(JNIEnv * env, jclass cls, jmethodID mid, va_list va);
168 void RC_CallStaticVoidMethodA(JNIEnv * env, jclass cls, jmethodID mid, const jvalue * valarray);
169 void RC_CallNonvirtualVoidMethod(JNIEnv *env, jobject obj, jclass cls, jmethodID mid, ...);
170 void RC_CallNonvirtualVoidMethodV(JNIEnv * env, jobject obj, jclass cls, jmethodID mid, va_list va);
171 void RC_CallNonvirtualVoidMethodA(JNIEnv * env, jobject obj, jclass cls, jmethodID mid, const jvalue * valarray);
172 jfieldID RC_GetFieldID(JNIEnv * env, jclass cls, const char * str1, const char * str2);
173 jmethodID RC_GetStaticMethodID(JNIEnv * env, jclass cls, const char * str1, const char * str2);
174 jfieldID RC_GetStaticFieldID(JNIEnv * env, jclass cls, const char * str1, const char * str2);
175 jint RC_RegisterNatives(JNIEnv * env, jclass cls, const JNINativeMethod * mid, jint num);
176 jint RC_UnregisterNatives(JNIEnv * env, jclass cls);
177 jint RC_MonitorEnter(JNIEnv * env, jobject obj);
178 jint RC_MonitorExit(JNIEnv * env, jobject obj);
179 jint RC_GetJavaVM(JNIEnv * env, JavaVM ** jvm);
180 jstring  RC_NewString(JNIEnv * env, const jchar * str, jsize size);
181 jsize RC_GetStringLength(JNIEnv *env, jstring str);
182 const jchar * RC_GetStringChars(JNIEnv * env, jstring str, jboolean * flag);
183 void RC_ReleaseStringChars(JNIEnv * env, jstring str, const jchar * str2);
184 jstring RC_NewStringUTF(JNIEnv * env, const char *str);
185 jsize RC_GetStringUTFLength(JNIEnv * env, jstring str);
186 const char * RC_GetStringUTFChars(JNIEnv * env, jstring str, jboolean * flag);
187 void RC_ReleaseStringUTFChars(JNIEnv * env, jstring str, const char * str2);
188 jsize RC_GetArrayLength(JNIEnv * env, jarray array);
189
190 #endif