1 /* class: java/lang/reflect/Field */
5 * Class: java/lang/reflect/Field
7 * Signature: (Ljava/lang/Object;)Ljava/lang/Object;
9 JNIEXPORT struct java_lang_Object* JNICALL Java_java_lang_reflect_Field_get ( JNIEnv *env , struct java_lang_reflect_Field* this, struct java_lang_Object* obj)
11 jfieldID target_fid; /* the JNI-fieldid of the wrapping object */
12 jfieldID fid; /* the JNI-fieldid of the field containing the value */
13 jobject o; /* the object for wrapping the primitive type */
14 classinfo *c = (classinfo *) this->declaringClass;
15 int st = (this->flag & ACC_STATIC); /* true if field is static */
17 /* get the fieldid of the field represented by this Field-object */
18 fid = class_findfield_approx((classinfo *) this->declaringClass,javastring_toutf(this->name, false));
20 /* The fieldid is used to retrieve the value, for primitive types a new
21 object for wrapping the primitive type is created. */
25 /* create wrapping class */
26 c = class_java_lang_Integer;
28 /* get fieldid to store the value */
29 target_fid = (*env)->GetFieldID(env,c,"value","I");
30 if (!target_fid) break;
34 SetIntField(env,o,target_fid, (*env)->GetStaticIntField(env, c, fid));
37 SetIntField(env,o,target_fid, (*env)->GetIntField(env,(jobject) obj, fid));
39 /* return the wrapped object */
40 return (java_lang_Object*) o;
43 c = class_java_lang_Long;
45 target_fid = (*env)->GetFieldID(env,c,"value","J");
46 if (!target_fid) break;
49 SetLongField(env,o,target_fid, (*env)->GetStaticLongField(env, c, fid));
51 SetLongField(env,o,target_fid, (*env)->GetLongField(env,(jobject) obj, fid));
53 return (java_lang_Object*) o;
56 c = class_java_lang_Float;
58 target_fid = (*env)->GetFieldID(env,c,"value","F");
59 if (!target_fid) break;
62 SetFloatField(env,o,target_fid, (*env)->GetStaticFloatField(env, c, fid));
64 SetFloatField(env,o,target_fid, (*env)->GetFloatField(env, (jobject) obj, fid));
66 return (java_lang_Object*) o;
69 c = class_java_lang_Double;
71 target_fid = (*env)->GetFieldID(env,c,"value","D");
72 if (!target_fid) break;
75 SetDoubleField(env,o,target_fid, (*env)->GetStaticDoubleField(env, c, fid));
77 SetDoubleField(env,o,target_fid, (*env)->GetDoubleField(env, (jobject) obj, fid));
79 return (java_lang_Object*) o;
82 c = class_java_lang_Byte;
84 target_fid = (*env)->GetFieldID(env,c,"value","B");
85 if (!target_fid) break;
88 SetByteField(env,o,target_fid, (*env)->GetStaticByteField(env, c, fid));
90 SetByteField(env,o,target_fid, (*env)->GetByteField(env, (jobject) obj, fid));
92 return (java_lang_Object*) o;
95 c = class_java_lang_Character;
97 target_fid = (*env)->GetFieldID(env,c,"value","C");
98 if (!target_fid) break;
101 SetCharField(env,o,target_fid, (*env)->GetStaticCharField(env, c, fid));
103 SetCharField(env,o,target_fid, (*env)->GetCharField(env, (jobject) obj, fid));
105 return (java_lang_Object*) o;
108 c = class_java_lang_Short;
110 target_fid = (*env)->GetFieldID(env,c,"value","S");
111 if (!target_fid) break;
114 SetShortField(env,o,target_fid, (*env)->GetStaticShortField(env, c, fid));
116 SetShortField(env,o,target_fid, (*env)->GetShortField(env, (jobject) obj, fid));
118 return (java_lang_Object*) o;
121 c = class_java_lang_Boolean;
123 target_fid = (*env)->GetFieldID(env,c,"value","Z");
124 if (!target_fid) break;
127 SetBooleanField(env,o,target_fid, (*env)->GetStaticBooleanField(env, c, fid));
129 SetBooleanField(env,o,target_fid, (*env)->GetBooleanField(env, (jobject) obj, fid));
131 return (java_lang_Object*) o;
137 return (java_lang_Object*) (*env)->GetStaticObjectField(env, c, fid);
140 return (java_lang_Object*) (*env)->GetObjectField(env, (jobject) obj, fid);
145 exceptionptr = native_new_and_init(class_java_lang_IllegalArgumentException);
149 * Class: java/lang/reflect/Field
151 * Signature: (Ljava/lang/Object;)Z
153 JNIEXPORT s4 JNICALL Java_java_lang_reflect_Field_getBoolean ( JNIEnv *env , struct java_lang_reflect_Field* this, struct java_lang_Object* obj)
157 if (this->declaringClass && obj) {
159 /* get the fieldid represented by the field-object */
160 fid = class_findfield_approx ((classinfo *) this->declaringClass,javastring_toutf(this->name, false));
163 /* call the JNI-function to retrieve the field */
164 return (*env)->GetBooleanField (env, (jobject) obj, fid);
167 /* raise exception */
168 exceptionptr = native_new_and_init(class_java_lang_IllegalArgumentException);
172 * Class: java/lang/reflect/Field
174 * Signature: (Ljava/lang/Object;)B
176 JNIEXPORT s4 JNICALL Java_java_lang_reflect_Field_getByte ( JNIEnv *env , struct java_lang_reflect_Field* this, struct java_lang_Object* obj)
180 if (this->declaringClass && obj) {
182 fid = class_findfield_approx ((classinfo *) this->declaringClass,javastring_toutf(this->name, false));
185 return (*env)->GetByteField (env, (jobject) obj, fid);
188 exceptionptr = native_new_and_init(class_java_lang_IllegalArgumentException);
192 * Class: java/lang/reflect/Field
194 * Signature: (Ljava/lang/Object;)C
196 JNIEXPORT s4 JNICALL Java_java_lang_reflect_Field_getChar ( JNIEnv *env , struct java_lang_reflect_Field* this, struct java_lang_Object* obj)
200 if (this->declaringClass && obj) {
202 fid = class_findfield_approx ((classinfo *) this->declaringClass,javastring_toutf(this->name, false));
205 return (*env)->GetCharField (env, (jobject) obj, fid);
208 exceptionptr = native_new_and_init(class_java_lang_IllegalArgumentException);
212 * Class: java/lang/reflect/Field
214 * Signature: (Ljava/lang/Object;)D
216 JNIEXPORT double JNICALL Java_java_lang_reflect_Field_getDouble ( JNIEnv *env , struct java_lang_reflect_Field* this, struct java_lang_Object* obj)
220 if (this->declaringClass && obj) {
222 fid = class_findfield_approx ((classinfo *) this->declaringClass,javastring_toutf(this->name, false));
225 return (*env)->GetDoubleField (env, (jobject) obj, fid);
228 exceptionptr = native_new_and_init(class_java_lang_IllegalArgumentException);
232 * Class: java/lang/reflect/Field
234 * Signature: (Ljava/lang/Object;)F
236 JNIEXPORT float JNICALL Java_java_lang_reflect_Field_getFloat ( JNIEnv *env , struct java_lang_reflect_Field* this, struct java_lang_Object* obj)
240 if (this->declaringClass && obj) {
242 fid = class_findfield_approx ((classinfo *) this->declaringClass,javastring_toutf(this->name, false));
245 return (*env)->GetFloatField (env, (jobject) obj, fid);
248 exceptionptr = native_new_and_init(class_java_lang_IllegalArgumentException);
252 * Class: java/lang/reflect/Field
254 * Signature: (Ljava/lang/Object;)I
256 JNIEXPORT s4 JNICALL Java_java_lang_reflect_Field_getInt ( JNIEnv *env , struct java_lang_reflect_Field* this, struct java_lang_Object* obj)
260 if (this->declaringClass && obj) {
262 fid = class_findfield_approx ((classinfo *) this->declaringClass,javastring_toutf(this->name, false));
265 return (*env)->GetIntField (env, (jobject) obj, fid);
268 exceptionptr = native_new_and_init(class_java_lang_IllegalArgumentException);
272 * Class: java/lang/reflect/Field
274 * Signature: (Ljava/lang/Object;)J
276 JNIEXPORT s8 JNICALL Java_java_lang_reflect_Field_getLong ( JNIEnv *env , struct java_lang_reflect_Field* this, struct java_lang_Object* obj)
280 if (this->declaringClass && obj) {
282 fid = class_findfield_approx ((classinfo *) this->declaringClass,javastring_toutf(this->name, false));
285 return (*env)->GetLongField (env, (jobject) obj, fid);
290 * Class: java/lang/reflect/Field
292 * Signature: (Ljava/lang/Object;)S
294 JNIEXPORT s4 JNICALL Java_java_lang_reflect_Field_getShort ( JNIEnv *env , struct java_lang_reflect_Field* this, struct java_lang_Object* obj)
298 if (this->declaringClass && obj) {
300 fid = class_findfield_approx ((classinfo *) this->declaringClass,javastring_toutf(this->name, false));
303 return (*env)->GetShortField (env, (jobject) obj, fid);
306 exceptionptr = native_new_and_init(class_java_lang_IllegalArgumentException);
310 * Class: java/lang/reflect/Field
312 * Signature: (Ljava/lang/Object;Ljava/lang/Object;)V
314 JNIEXPORT void JNICALL Java_java_lang_reflect_Field_set ( JNIEnv *env , struct java_lang_reflect_Field* this, struct java_lang_Object* obj, struct java_lang_Object* val)
316 jfieldID source_fid; /* the field containing the value to be written */
317 jfieldID fid; /* the field to be written */
319 int st = (this->flag & ACC_STATIC); /* true if the field is static */
321 fid = class_findfield_approx((classinfo *) this->declaringClass,javastring_toutf(this->name, false));
323 if (val && (st || obj)) {
325 c = val->header.vftbl -> class;
327 /* The fieldid is used to set the new value, for primitive types the value
328 has to be retrieved from the wrapping object */
329 switch (this->slot) {
331 /* illegal argument specified */
332 if (c != class_java_lang_Integer) break;
333 /* determine the field to read the value */
334 source_fid = (*env)->GetFieldID(env,c,"value","I");
335 if (!source_fid) break;
337 /* set the new value */
340 (*env)->SetStaticIntField(env, c, fid, GetIntField(env,(jobject) val,source_fid));
343 (*env)->SetIntField(env, (jobject) obj, fid, GetIntField(env,(jobject) val,source_fid));
348 if (c != class_java_lang_Long) break;
349 source_fid = (*env)->GetFieldID(env,c,"value","J");
350 if (!source_fid) break;
353 (*env)->SetStaticLongField(env, c, fid, GetLongField(env,(jobject) val,source_fid));
355 (*env)->SetLongField(env, (jobject) obj, fid, GetLongField(env,(jobject) val,source_fid));
360 if (c != class_java_lang_Float) break;
361 source_fid = (*env)->GetFieldID(env,c,"value","F");
362 if (!source_fid) break;
365 (*env)->SetStaticFloatField(env, c, fid, GetFloatField(env,(jobject) val,source_fid));
367 (*env)->SetFloatField(env, (jobject) obj, fid, GetFloatField(env,(jobject) val,source_fid));
372 if (c != class_java_lang_Double) break;
373 source_fid = (*env)->GetFieldID(env,c,"value","D");
374 if (!source_fid) break;
377 (*env)->SetStaticDoubleField(env, c, fid, GetDoubleField(env,(jobject) val,source_fid));
379 (*env)->SetDoubleField(env, (jobject) obj, fid, GetDoubleField(env,(jobject) val,source_fid));
384 if (c != class_java_lang_Byte) break;
385 source_fid = (*env)->GetFieldID(env,c,"value","B");
386 if (!source_fid) break;
389 (*env)->SetStaticByteField(env, c, fid, GetByteField(env,(jobject) val,source_fid));
391 (*env)->SetByteField(env, (jobject) obj, fid, GetByteField(env,(jobject) val,source_fid));
396 if (c != class_java_lang_Character) break;
397 source_fid = (*env)->GetFieldID(env,c,"value","C");
398 if (!source_fid) break;
401 (*env)->SetStaticCharField(env, c, fid, GetCharField(env,(jobject) val,source_fid));
403 (*env)->SetCharField(env, (jobject) obj, fid, GetCharField(env,(jobject) val,source_fid));
408 if (c != class_java_lang_Short) break;
409 source_fid = (*env)->GetFieldID(env,c,"value","S");
410 if (!source_fid) break;
413 (*env)->SetStaticShortField(env, c, fid, GetShortField(env,(jobject) val,source_fid));
415 (*env)->SetShortField(env, (jobject) obj, fid, GetShortField(env,(jobject) val,source_fid));
420 if (c != class_java_lang_Boolean) break;
421 source_fid = (*env)->GetFieldID(env,c,"value","Z");
422 if (!source_fid) break;
425 (*env)->SetStaticBooleanField(env, c, fid, GetBooleanField(env,(jobject) val,source_fid));
427 (*env)->SetBooleanField(env, (jobject) obj, fid, GetBooleanField(env,(jobject) val,source_fid));
434 (*env)->SetStaticObjectField(env, c, fid, (jobject) val);
436 (*env)->SetObjectField(env, (jobject) obj, fid, (jobject) val);
443 exceptionptr = native_new_and_init(class_java_lang_IllegalArgumentException);
447 * Class: java/lang/reflect/Field
449 * Signature: (Ljava/lang/Object;Z)V
451 JNIEXPORT void JNICALL Java_java_lang_reflect_Field_setBoolean ( JNIEnv *env , struct java_lang_reflect_Field* this, struct java_lang_Object* obj, s4 val)
455 if (this->declaringClass && obj) {
457 fid = class_findfield_approx ((classinfo *) this->declaringClass,javastring_toutf(this->name, false));
460 (*env)->SetBooleanField (env, (jobject) obj, fid, val);
465 exceptionptr = native_new_and_init(class_java_lang_IllegalArgumentException);
469 * Class: java/lang/reflect/Field
471 * Signature: (Ljava/lang/Object;B)V
473 JNIEXPORT void JNICALL Java_java_lang_reflect_Field_setByte ( JNIEnv *env , struct java_lang_reflect_Field* this, struct java_lang_Object* obj, s4 val)
477 if (this->declaringClass && obj) {
479 fid = class_findfield_approx ((classinfo *) this->declaringClass,javastring_toutf(this->name, false));
482 (*env)->SetByteField (env, (jobject) obj, fid, val);
487 exceptionptr = native_new_and_init(class_java_lang_IllegalArgumentException);
491 * Class: java/lang/reflect/Field
493 * Signature: (Ljava/lang/Object;C)V
495 JNIEXPORT void JNICALL Java_java_lang_reflect_Field_setChar ( JNIEnv *env , struct java_lang_reflect_Field* this, struct java_lang_Object* obj, s4 val)
499 if (this->declaringClass && obj) {
501 fid = class_findfield_approx ((classinfo *) this->declaringClass,javastring_toutf(this->name, false));
504 (*env)->SetCharField (env, (jobject) obj, fid, val);
509 exceptionptr = native_new_and_init(class_java_lang_IllegalArgumentException);
513 * Class: java/lang/reflect/Field
515 * Signature: (Ljava/lang/Object;D)V
517 JNIEXPORT void JNICALL Java_java_lang_reflect_Field_setDouble ( JNIEnv *env , struct java_lang_reflect_Field* this, struct java_lang_Object* obj, double val)
521 if (this->declaringClass && obj) {
523 fid = class_findfield_approx ((classinfo *) this->declaringClass,javastring_toutf(this->name, false));
526 (*env)->SetDoubleField (env, (jobject) obj, fid, val);
531 exceptionptr = native_new_and_init(class_java_lang_IllegalArgumentException);
535 * Class: java/lang/reflect/Field
537 * Signature: (Ljava/lang/Object;F)V
539 JNIEXPORT void JNICALL Java_java_lang_reflect_Field_setFloat ( JNIEnv *env , struct java_lang_reflect_Field* this, struct java_lang_Object* obj, float val)
543 if (this->declaringClass && obj) {
545 fid = class_findfield_approx ((classinfo *) this->declaringClass,javastring_toutf(this->name, false));
548 (*env)->SetFloatField (env, (jobject) obj, fid, val);
553 exceptionptr = native_new_and_init(class_java_lang_IllegalArgumentException);
557 * Class: java/lang/reflect/Field
559 * Signature: (Ljava/lang/Object;I)V
561 JNIEXPORT void JNICALL Java_java_lang_reflect_Field_setInt ( JNIEnv *env , struct java_lang_reflect_Field* this, struct java_lang_Object* obj, s4 val)
565 if (this->declaringClass && obj) {
567 fid = class_findfield_approx ((classinfo *) this->declaringClass,javastring_toutf(this->name, false));
570 (*env)->SetIntField (env, (jobject) obj, fid, val);
575 exceptionptr = native_new_and_init(class_java_lang_IllegalArgumentException);
579 * Class: java/lang/reflect/Field
581 * Signature: (Ljava/lang/Object;J)V
583 JNIEXPORT void JNICALL Java_java_lang_reflect_Field_setLong ( JNIEnv *env , struct java_lang_reflect_Field* this, struct java_lang_Object* obj, s8 val)
587 if (this->declaringClass && obj) {
589 fid = class_findfield_approx ((classinfo *) this->declaringClass,javastring_toutf(this->name, false));
592 (*env)->SetLongField (env, (jobject) obj, fid, val);
597 exceptionptr = native_new_and_init(class_java_lang_IllegalArgumentException);
601 * Class: java/lang/reflect/Field
603 * Signature: (Ljava/lang/Object;S)V
605 JNIEXPORT void JNICALL Java_java_lang_reflect_Field_setShort ( JNIEnv *env , struct java_lang_reflect_Field* this, struct java_lang_Object* obj, s4 val)
609 if (this->declaringClass && obj) {
611 fid = class_findfield_approx ((classinfo *) this->declaringClass,javastring_toutf(this->name, false));
614 (*env)->SetShortField (env, (jobject) obj, fid, val);
619 exceptionptr = native_new_and_init(class_java_lang_IllegalArgumentException);
624 * Class: java_lang_reflect_Field
626 * Signature: ()Ljava/lang/Class;
628 JNIEXPORT struct java_lang_Class* JNICALL Java_java_lang_reflect_Field_getType (JNIEnv *env , struct java_lang_reflect_Field* this )
630 log_text("Java_java_lang_reflect_Field_getType");
636 * Class: java_lang_reflect_Field
637 * Method: getModifiers
640 JNIEXPORT s4 JNICALL Java_java_lang_reflect_Field_getModifiers (JNIEnv *env , struct java_lang_reflect_Field* this )
642 log_text("Java_java_lang_reflect_Field_getType");