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->clazz;
15 int st = (this->modifiers & 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->clazz,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->clazz && obj) {
159 /* get the fieldid represented by the field-object */
160 fid = class_findfield_approx ((classinfo *) this->clazz,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->clazz && obj) {
182 fid = class_findfield_approx ((classinfo *) this->clazz,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->clazz && obj) {
202 fid = class_findfield_approx ((classinfo *) this->clazz,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->clazz && obj) {
222 fid = class_findfield_approx ((classinfo *) this->clazz,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->clazz && obj) {
242 fid = class_findfield_approx ((classinfo *) this->clazz,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->clazz && obj) {
262 fid = class_findfield_approx ((classinfo *) this->clazz,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->clazz && obj) {
282 fid = class_findfield_approx ((classinfo *) this->clazz,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->clazz && obj) {
300 fid = class_findfield_approx ((classinfo *) this->clazz,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->modifiers & ACC_STATIC); /* true if the field is static */
321 fid = class_findfield_approx((classinfo *) this->clazz,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->clazz && obj) {
457 fid = class_findfield_approx ((classinfo *) this->clazz,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->clazz && obj) {
479 fid = class_findfield_approx ((classinfo *) this->clazz,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->clazz && obj) {
501 fid = class_findfield_approx ((classinfo *) this->clazz,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->clazz && obj) {
523 fid = class_findfield_approx ((classinfo *) this->clazz,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->clazz && obj) {
545 fid = class_findfield_approx ((classinfo *) this->clazz,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->clazz && obj) {
567 fid = class_findfield_approx ((classinfo *) this->clazz,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->clazz && obj) {
589 fid = class_findfield_approx ((classinfo *) this->clazz,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->clazz && obj) {
611 fid = class_findfield_approx ((classinfo *) this->clazz,javastring_toutf(this->name, false));
614 env->SetShortField (env, (jobject) obj, fid, val);
619 exceptionptr = native_new_and_init(class_java_lang_IllegalArgumentException);