1 // jni.cc - JNI implementation, including the jump table.
3 /* Copyright (C) 1998, 1999 Cygnus Solutions
5 This file is part of libgcj.
7 This software is copyrighted work licensed under the terms of the
8 Libgcj License. Please consult the file "LIBGCJ_LICENSE" for
16 #include <gcj/field.h>
19 _Jv_JNI_GetSuperclass (JNIEnv
*, jclass clazz
)
21 return clazz
->getSuperclass ();
25 IsAssignableFrom(JNIEnv
*, jclass clazz1
, jclass clazz2
)
27 return clazz1
->isAssignableFrom (clazz2
);
31 _Jv_JNI_GetObjectField (JNIEnv
*, jobject obj
, jfieldID field
)
33 return _Jv_GetObjectField (obj
, field
);
37 _Jv_JNI_GetByteField (JNIEnv
*, jobject obj
, jfieldID field
)
39 return _Jv_GetByteField (obj
, field
);
43 _Jv_JNI_GetShortField (JNIEnv
*, jobject obj
, jfieldID field
)
45 return _Jv_GetShortField (obj
, field
);
49 _Jv_JNI_GetIntField (JNIEnv
*, jobject obj
, jfieldID field
)
51 return _Jv_GetIntField (obj
, field
);
55 _Jv_JNI_GetLongField (JNIEnv
*, jobject obj
, jfieldID field
)
57 return _Jv_GetLongField (obj
, field
);
61 _Jv_JNI_GetStringLength (JNIEnv
*, jstring string
)
63 return string
->length();
68 _Jv_JNI_ToReflectedField (JNIEnv
*, jclass cls
, jfieldID fieldID
)
70 java::lang::reflect::Field
*field
= new java::lang::reflect::Field();
71 field
->declaringClass
= cls
;
72 field
->offset
= (char*) fieldID
- (char *) cls
->fields
;
73 field
->name
= _Jv_NewStringUtf8Const (fieldID
->getNameUtf8Const (cls
));
79 _Jv_JNI_FromReflectedField (JNIEnv
*, java::lang::reflect::Field
*field
)
81 return _Jv_FromReflectedField (field
);
86 struct JNINativeInterface _Jv_JNIFunctions
=
92 NOT_IMPL
/* GetVersion */,
93 NOT_IMPL
/* DefineClass */,
94 NOT_IMPL
/* FindClass */,
98 _Jv_JNI_GetSuperclass
,
101 NOT_IMPL
/* Throw */,
102 NOT_IMPL
/* ThrowNew */,
103 NOT_IMPL
/* ExceptionOccurred */,
104 NOT_IMPL
/* ExceptionDescribe */,
105 NOT_IMPL
/* ExceptionClear */,
106 NOT_IMPL
/* FatalError */,
109 NOT_IMPL
/* NewGlobalRef */,
110 NOT_IMPL
/* DeleteGlobalRef */,
111 NOT_IMPL
/* DeleteLocalRef */,
112 NOT_IMPL
/* IsSameObject */,
115 NOT_IMPL
/* AllocObject */,
116 NOT_IMPL
/* NewObject */,
117 NOT_IMPL
/* NewObjectV */,
118 NOT_IMPL
/* NewObjectA */,
119 NOT_IMPL
/* GetObjectClass */,
120 NOT_IMPL
/* IsInstanceOf */,
121 NOT_IMPL
/* GetMethodID */,
122 NOT_IMPL
/* CallObjectMethod */,
123 NOT_IMPL
/* CallObjectMethodV */,
124 NOT_IMPL
/* CallObjectMethodA */,
125 NOT_IMPL
/* CallBooleanMethod */,
126 NOT_IMPL
/* CallBooleanMethodV */,
127 NOT_IMPL
/* CallBooleanMethodA */,
128 NOT_IMPL
/* CallByteMethod */,
129 NOT_IMPL
/* CallByteMethodV */,
130 NOT_IMPL
/* CallByteMethodA */,
131 NOT_IMPL
/* CallCharMethod */,
132 NOT_IMPL
/* CallCharMethodV */,
133 NOT_IMPL
/* CallCharMethodA */,
134 NOT_IMPL
/* CallShortMethod */,
135 NOT_IMPL
/* CallShortMethodV */,
136 NOT_IMPL
/* CallShortMethodA */,
137 NOT_IMPL
/* CallIntMethod */,
138 NOT_IMPL
/* CallIntMethodV */,
139 NOT_IMPL
/* CallIntMethodA */,
140 NOT_IMPL
/* CallLongMethod */,
141 NOT_IMPL
/* CallLongMethodV */,
142 NOT_IMPL
/* CallLongMethodA */,
143 NOT_IMPL
/* CallFloatMethod */,
144 NOT_IMPL
/* CallFloatMethodV */,
145 NOT_IMPL
/* CallFloatMethodA */,
146 NOT_IMPL
/* CallDoubleMethod */,
147 NOT_IMPL
/* CallDoubleMethodV */,
148 NOT_IMPL
/* CallDoubleMethodA */,
149 NOT_IMPL
/* CallVoidMethod */,
150 NOT_IMPL
/* CallVoidMethodV */,
151 NOT_IMPL
/* CallVoidMethodA */,
152 NOT_IMPL
/* CallNonvirtualObjectMethod */,
153 NOT_IMPL
/* CallNonvirtualObjectMethodV */,
154 NOT_IMPL
/* CallNonvirtualObjectMethodA */,
155 NOT_IMPL
/* CallNonvirtualBooleanMethod */,
156 NOT_IMPL
/* CallNonvirtualBooleanMethodV */,
157 NOT_IMPL
/* CallNonvirtualBooleanMethodA */,
158 NOT_IMPL
/* CallNonvirtualByteMethod */,
159 NOT_IMPL
/* CallNonvirtualByteMethodV */,
160 NOT_IMPL
/* CallNonvirtualByteMethodA */,
161 NOT_IMPL
/* CallNonvirtualCharMethod */,
162 NOT_IMPL
/* CallNonvirtualCharMethodV */,
163 NOT_IMPL
/* CallNonvirtualCharMethodA */,
164 NOT_IMPL
/* CallNonvirtualShortMethod */,
165 NOT_IMPL
/* CallNonvirtualShortMethodV */,
166 NOT_IMPL
/* CallNonvirtualShortMethodA */,
167 NOT_IMPL
/* CallNonvirtualIntMethod */,
168 NOT_IMPL
/* CallNonvirtualIntMethodV */,
169 NOT_IMPL
/* CallNonvirtualIntMethodA */,
170 NOT_IMPL
/* CallNonvirtualLongMethod */,
171 NOT_IMPL
/* CallNonvirtualLongMethodV */,
172 NOT_IMPL
/* CallNonvirtualLongMethodA */,
173 NOT_IMPL
/* CallNonvirtualFloatMethod */,
174 NOT_IMPL
/* CallNonvirtualFloatMethodV */,
175 NOT_IMPL
/* CallNonvirtualFloatMethodA */,
176 NOT_IMPL
/* CallNonvirtualDoubleMethod */,
177 NOT_IMPL
/* CallNonvirtualDoubleMethodV */,
178 NOT_IMPL
/* CallNonvirtualDoubleMethodA */,
179 NOT_IMPL
/* CallNonvirtualVoidMethod */,
180 NOT_IMPL
/* CallNonvirtualVoidMethodV */,
181 NOT_IMPL
/* CallNonvirtualVoidMethodA */,
182 NOT_IMPL
/* GetFieldID */,
183 _Jv_JNI_GetObjectField
,
184 NOT_IMPL
/* GetBooleanField */,
185 _Jv_JNI_GetByteField
,
186 NOT_IMPL
/* GetCharField */,
187 _Jv_JNI_GetShortField
,
189 _Jv_JNI_GetLongField
,
190 NOT_IMPL
/* GetFloatField */,
191 NOT_IMPL
/* GetDoubleField */,
192 NOT_IMPL
/* SetObjectField */,
193 NOT_IMPL
/* SetBooleanField */,
194 NOT_IMPL
/* SetByteField */,
195 NOT_IMPL
/* SetCharField */,
196 NOT_IMPL
/* SetShortField */,
197 NOT_IMPL
/* SetIntField */,
198 NOT_IMPL
/* SetLongField */,
199 NOT_IMPL
/* SetFloatField */,
200 NOT_IMPL
/* SetDoubleField */,
201 NOT_IMPL
/* GetStaticMethodID */,
202 NOT_IMPL
/* CallStaticObjectMethod */,
203 NOT_IMPL
/* CallStaticObjectMethodV */,
204 NOT_IMPL
/* CallStaticObjectMethodA */,
205 NOT_IMPL
/* CallStaticBooleanMethod */,
206 NOT_IMPL
/* CallStaticBooleanMethodV */,
207 NOT_IMPL
/* CallStaticBooleanMethodA */,
208 NOT_IMPL
/* CallStaticByteMethod */,
209 NOT_IMPL
/* CallStaticByteMethodV */,
210 NOT_IMPL
/* CallStaticByteMethodA */,
211 NOT_IMPL
/* CallStaticCharMethod */,
212 NOT_IMPL
/* CallStaticCharMethodV */,
213 NOT_IMPL
/* CallStaticCharMethodA */,
214 NOT_IMPL
/* CallStaticShortMethod */,
215 NOT_IMPL
/* CallStaticShortMethodV */,
216 NOT_IMPL
/* CallStaticShortMethodA */,
217 NOT_IMPL
/* CallStaticIntMethod */,
218 NOT_IMPL
/* CallStaticIntMethodV */,
219 NOT_IMPL
/* CallStaticIntMethodA */,
220 NOT_IMPL
/* CallStaticLongMethod */,
221 NOT_IMPL
/* CallStaticLongMethodV */,
222 NOT_IMPL
/* CallStaticLongMethodA */,
223 NOT_IMPL
/* CallStaticFloatMethod */,
224 NOT_IMPL
/* CallStaticFloatMethodV */,
225 NOT_IMPL
/* CallStaticFloatMethodA */,
226 NOT_IMPL
/* CallStaticDoubleMethod */,
227 NOT_IMPL
/* CallStaticDoubleMethodV */,
228 NOT_IMPL
/* CallStaticDoubleMethodA */,
229 NOT_IMPL
/* CallStaticVoidMethod */,
230 NOT_IMPL
/* CallStaticVoidMethodV */,
231 NOT_IMPL
/* CallStaticVoidMethodA */,
232 NOT_IMPL
/* GetStaticFieldID */,
233 NOT_IMPL
/* GetStaticObjectField */,
234 NOT_IMPL
/* GetStaticBooleanField */,
235 NOT_IMPL
/* GetStaticByteField */,
236 NOT_IMPL
/* GetStaticCharField */,
237 NOT_IMPL
/* GetStaticShortField */,
238 NOT_IMPL
/* GetStaticIntField */,
239 NOT_IMPL
/* GetStaticLongField */,
240 NOT_IMPL
/* GetStaticFloatField */,
241 NOT_IMPL
/* GetStaticDoubleField */,
242 NOT_IMPL
/* SetStaticObjectField */,
243 NOT_IMPL
/* SetStaticBooleanField */,
244 NOT_IMPL
/* SetStaticByteField */,
245 NOT_IMPL
/* SetStaticCharField */,
246 NOT_IMPL
/* SetStaticShortField */,
247 NOT_IMPL
/* SetStaticIntField */,
248 NOT_IMPL
/* SetStaticLongField */,
249 NOT_IMPL
/* SetStaticFloatField */,
250 NOT_IMPL
/* SetStaticDoubleField */,
251 NOT_IMPL
/* NewString */,
252 _Jv_JNI_GetStringLength
,
253 NOT_IMPL
/* GetStringChars */,
254 NOT_IMPL
/* ReleaseStringChars */,
255 NOT_IMPL
/* NewStringUTF */,
256 NOT_IMPL
/* GetStringUTFLength */,
257 NOT_IMPL
/* GetStringUTFChars */,
258 NOT_IMPL
/* ReleaseStringUTFChars */,
259 NOT_IMPL
/* GetArrayLength */,
260 NOT_IMPL
/* NewObjectArray */,
261 NOT_IMPL
/* GetObjectArrayElement */,
262 NOT_IMPL
/* SetObjectArrayElement */,
263 NOT_IMPL
/* NewBooleanArray */,
264 NOT_IMPL
/* NewByteArray */,
265 NOT_IMPL
/* NewCharArray */,
266 NOT_IMPL
/* NewShortArray */,
267 NOT_IMPL
/* NewIntArray */,
268 NOT_IMPL
/* NewLongArray */,
269 NOT_IMPL
/* NewFloatArray */,
270 NOT_IMPL
/* NewDoubleArray */,
271 NOT_IMPL
/* GetBooleanArrayElements */,
272 NOT_IMPL
/* GetByteArrayElements */,
273 NOT_IMPL
/* GetCharArrayElements */,
274 NOT_IMPL
/* GetShortArrayElements */,
275 NOT_IMPL
/* GetIntArrayElements */,
276 NOT_IMPL
/* GetLongArrayElements */,
277 NOT_IMPL
/* GetFloatArrayElements */,
278 NOT_IMPL
/* GetDoubleArrayElements */,
279 NOT_IMPL
/* ReleaseBooleanArrayElements */,
280 NOT_IMPL
/* ReleaseByteArrayElements */,
281 NOT_IMPL
/* ReleaseCharArrayElements */,
282 NOT_IMPL
/* ReleaseShortArrayElements */,
283 NOT_IMPL
/* ReleaseIntArrayElements */,
284 NOT_IMPL
/* ReleaseLongArrayElements */,
285 NOT_IMPL
/* ReleaseFloatArrayElements */,
286 NOT_IMPL
/* ReleaseDoubleArrayElements */,
287 NOT_IMPL
/* GetBooleanArrayRegion */,
288 NOT_IMPL
/* GetByteArrayRegion */,
289 NOT_IMPL
/* GetCharArrayRegion */,
290 NOT_IMPL
/* GetShortArrayRegion */,
291 NOT_IMPL
/* GetIntArrayRegion */,
292 NOT_IMPL
/* GetLongArrayRegion */,
293 NOT_IMPL
/* GetFloatArrayRegion */,
294 NOT_IMPL
/* GetDoubleArrayRegion */,
295 NOT_IMPL
/* SetBooleanArrayRegion */,
296 NOT_IMPL
/* SetByteArrayRegion */,
297 NOT_IMPL
/* SetCharArrayRegion */,
298 NOT_IMPL
/* SetShortArrayRegion */,
299 NOT_IMPL
/* SetIntArrayRegion */,
300 NOT_IMPL
/* SetLongArrayRegion */,
301 NOT_IMPL
/* SetFloatArrayRegion */,
302 NOT_IMPL
/* SetDoubleArrayRegion */,
303 NOT_IMPL
/* RegisterNatives */,
304 NOT_IMPL
/* UnregisterNatives */,
305 NOT_IMPL
/* MonitorEnter */,
306 NOT_IMPL
/* MonitorExit */,
307 NOT_IMPL
/* GetJavaVM */,