3
#include "java_lang_Class.h"
6
//XMLVM_BEGIN_NATIVE_IMPLEMENTATION
8
#include "java_lang_reflect_Field.h"
9
#include "java_lang_reflect_Constructor.h"
10
#include "java_lang_reflect_Method.h"
11
#include "org_xmlvm_runtime_XMLVMArray.h"
12
#include "java_lang_ClassNotFoundException.h"
13
#include "xmlvm-util.h"
16
__TIB_DEFINITION_boolean __TIB_boolean;
17
__TIB_DEFINITION_byte __TIB_byte;
18
__TIB_DEFINITION_char __TIB_char;
19
__TIB_DEFINITION_short __TIB_short;
20
__TIB_DEFINITION_int __TIB_int;
21
__TIB_DEFINITION_long __TIB_long;
22
__TIB_DEFINITION_float __TIB_float;
23
__TIB_DEFINITION_double __TIB_double;
24
__TIB_DEFINITION_void __TIB_void;
26
JAVA_OBJECT __CLASS_boolean;
27
JAVA_OBJECT __CLASS_byte;
28
JAVA_OBJECT __CLASS_char;
29
JAVA_OBJECT __CLASS_short;
30
JAVA_OBJECT __CLASS_int;
31
JAVA_OBJECT __CLASS_long;
32
JAVA_OBJECT __CLASS_float;
33
JAVA_OBJECT __CLASS_double;
34
JAVA_OBJECT __CLASS_void;
37
JAVA_OBJECT __CLASS_boolean_1ARRAY;
38
JAVA_OBJECT __CLASS_byte_1ARRAY;
39
JAVA_OBJECT __CLASS_char_1ARRAY;
40
JAVA_OBJECT __CLASS_short_1ARRAY;
41
JAVA_OBJECT __CLASS_int_1ARRAY;
42
JAVA_OBJECT __CLASS_long_1ARRAY;
43
JAVA_OBJECT __CLASS_float_1ARRAY;
44
JAVA_OBJECT __CLASS_double_1ARRAY;
46
JAVA_OBJECT __CLASS_boolean_2ARRAY;
47
JAVA_OBJECT __CLASS_byte_2ARRAY;
48
JAVA_OBJECT __CLASS_char_2ARRAY;
49
JAVA_OBJECT __CLASS_short_2ARRAY;
50
JAVA_OBJECT __CLASS_int_2ARRAY;
51
JAVA_OBJECT __CLASS_long_2ARRAY;
52
JAVA_OBJECT __CLASS_float_2ARRAY;
53
JAVA_OBJECT __CLASS_double_2ARRAY;
55
JAVA_OBJECT __CLASS_boolean_3ARRAY;
56
JAVA_OBJECT __CLASS_byte_3ARRAY;
57
JAVA_OBJECT __CLASS_char_3ARRAY;
58
JAVA_OBJECT __CLASS_short_3ARRAY;
59
JAVA_OBJECT __CLASS_int_3ARRAY;
60
JAVA_OBJECT __CLASS_long_3ARRAY;
61
JAVA_OBJECT __CLASS_float_3ARRAY;
62
JAVA_OBJECT __CLASS_double_3ARRAY;
65
void init_primitive_class(void* clazz, const char* name)
67
__TIB_DEFINITION_TEMPLATE* c = (__TIB_DEFINITION_TEMPLATE*) clazz;
68
//TODO who is initializing this class?
69
c->classInitializationBegan = 1;
70
c->classInitialized = 1;
71
c->initializerThreadId = -1;
73
c->extends = (__TIB_DEFINITION_TEMPLATE*) &__TIB_java_lang_Class;
74
c->flags = XMLVM_TYPE_PRIMITIVE;
75
XMLVM_MEMCPY(c->vtable, __TIB_java_lang_Object.vtable, sizeof(__TIB_java_lang_Object.vtable));
80
init_primitive_class(&__TIB_boolean, "boolean");
85
init_primitive_class(&__TIB_byte, "byte");
90
init_primitive_class(&__TIB_char, "char");
95
init_primitive_class(&__TIB_short, "short");
100
init_primitive_class(&__TIB_int, "int");
105
init_primitive_class(&__TIB_long, "long");
110
init_primitive_class(&__TIB_float, "float");
115
init_primitive_class(&__TIB_double, "double");
120
init_primitive_class(&__TIB_void, "void");
123
//XMLVM_END_NATIVE_IMPLEMENTATION
125
void java_lang_Class_initNativeLayer__()
127
//XMLVM_BEGIN_NATIVE[java_lang_Class_initNativeLayer__]
138
__CLASS_boolean = XMLVM_CREATE_CLASS_OBJECT(&__TIB_boolean);
139
__CLASS_byte = XMLVM_CREATE_CLASS_OBJECT(&__TIB_byte);
140
__CLASS_char = XMLVM_CREATE_CLASS_OBJECT(&__TIB_char);
141
__CLASS_short = XMLVM_CREATE_CLASS_OBJECT(&__TIB_short);
142
__CLASS_int = XMLVM_CREATE_CLASS_OBJECT(&__TIB_int);
143
__CLASS_long = XMLVM_CREATE_CLASS_OBJECT(&__TIB_long);
144
__CLASS_float = XMLVM_CREATE_CLASS_OBJECT(&__TIB_float);
145
__CLASS_double = XMLVM_CREATE_CLASS_OBJECT(&__TIB_double);
146
__CLASS_void = XMLVM_CREATE_CLASS_OBJECT(&__TIB_void);
148
__CLASS_boolean_1ARRAY = XMLVM_CREATE_ARRAY_CLASS_OBJECT(__CLASS_boolean);
149
__CLASS_byte_1ARRAY = XMLVM_CREATE_ARRAY_CLASS_OBJECT(__CLASS_byte);
150
__CLASS_char_1ARRAY = XMLVM_CREATE_ARRAY_CLASS_OBJECT(__CLASS_char);
151
__CLASS_short_1ARRAY = XMLVM_CREATE_ARRAY_CLASS_OBJECT(__CLASS_short);
152
__CLASS_int_1ARRAY = XMLVM_CREATE_ARRAY_CLASS_OBJECT(__CLASS_int);
153
__CLASS_long_1ARRAY = XMLVM_CREATE_ARRAY_CLASS_OBJECT(__CLASS_long);
154
__CLASS_float_1ARRAY = XMLVM_CREATE_ARRAY_CLASS_OBJECT(__CLASS_float);
155
__CLASS_double_1ARRAY = XMLVM_CREATE_ARRAY_CLASS_OBJECT(__CLASS_double);
157
__CLASS_boolean_2ARRAY = XMLVM_CREATE_ARRAY_CLASS_OBJECT(__CLASS_boolean_1ARRAY);
158
__CLASS_byte_2ARRAY = XMLVM_CREATE_ARRAY_CLASS_OBJECT(__CLASS_byte_1ARRAY);
159
__CLASS_char_2ARRAY = XMLVM_CREATE_ARRAY_CLASS_OBJECT(__CLASS_char_1ARRAY);
160
__CLASS_short_2ARRAY = XMLVM_CREATE_ARRAY_CLASS_OBJECT(__CLASS_short_1ARRAY);
161
__CLASS_int_2ARRAY = XMLVM_CREATE_ARRAY_CLASS_OBJECT(__CLASS_int_1ARRAY);
162
__CLASS_long_2ARRAY = XMLVM_CREATE_ARRAY_CLASS_OBJECT(__CLASS_long_1ARRAY);
163
__CLASS_float_2ARRAY = XMLVM_CREATE_ARRAY_CLASS_OBJECT(__CLASS_float_1ARRAY);
164
__CLASS_double_2ARRAY = XMLVM_CREATE_ARRAY_CLASS_OBJECT(__CLASS_double_1ARRAY);
166
__CLASS_boolean_3ARRAY = XMLVM_CREATE_ARRAY_CLASS_OBJECT(__CLASS_boolean_2ARRAY);
167
__CLASS_byte_3ARRAY = XMLVM_CREATE_ARRAY_CLASS_OBJECT(__CLASS_byte_2ARRAY);
168
__CLASS_char_3ARRAY = XMLVM_CREATE_ARRAY_CLASS_OBJECT(__CLASS_char_2ARRAY);
169
__CLASS_short_3ARRAY = XMLVM_CREATE_ARRAY_CLASS_OBJECT(__CLASS_short_2ARRAY);
170
__CLASS_int_3ARRAY = XMLVM_CREATE_ARRAY_CLASS_OBJECT(__CLASS_int_2ARRAY);
171
__CLASS_long_3ARRAY = XMLVM_CREATE_ARRAY_CLASS_OBJECT(__CLASS_long_2ARRAY);
172
__CLASS_float_3ARRAY = XMLVM_CREATE_ARRAY_CLASS_OBJECT(__CLASS_float_2ARRAY);
173
__CLASS_double_3ARRAY = XMLVM_CREATE_ARRAY_CLASS_OBJECT(__CLASS_double_2ARRAY);
177
JAVA_OBJECT java_lang_Class_getStackClasses___int_boolean(JAVA_INT n1, JAVA_BOOLEAN n2)
179
//XMLVM_BEGIN_NATIVE[java_lang_Class_getStackClasses___int_boolean]
180
XMLVM_UNIMPLEMENTED_NATIVE_METHOD();
184
JAVA_OBJECT java_lang_Class_forName___java_lang_String_boolean_java_lang_ClassLoader(JAVA_OBJECT n1, JAVA_BOOLEAN n2, JAVA_OBJECT n3)
186
//XMLVM_BEGIN_NATIVE[java_lang_Class_forName___java_lang_String_boolean_java_lang_ClassLoader]
187
static JAVA_OBJECT classMap = JAVA_NULL;
188
if (classMap == JAVA_NULL) {
189
classMap = XMLVMUtil_NEW_HashMap();
191
java_lang_Class* clazz = XMLVMUtil_HashMap_get(classMap, n1);
192
if (clazz != JAVA_NULL) {
196
__TIB_DEFINITION_TEMPLATE* tib;
197
for (i = 0; i < __xmlvm_num_tib; i++) {
198
tib = __xmlvm_tib_list[i];
199
if (xmlvm_java_string_cmp(n1, tib->className)) {
200
XMLVM_REFLECTION_USED(tib->className)
204
if (i == __xmlvm_num_tib) {
206
XMLVM_THROW(java_lang_ClassNotFoundException)
208
if (!tib->classInitialized) {
209
Func_V initFunc = tib->classInitializer;
211
//TODO: static initializers should only be run if n2==true
212
//but can't skip initFunf here, since that initializes the core data structues
215
XMLVMUtil_HashMap_put(classMap, n1, clazz);
220
JAVA_OBJECT java_lang_Class_getClasses__(JAVA_OBJECT me)
222
//XMLVM_BEGIN_NATIVE[java_lang_Class_getClasses__]
223
XMLVM_UNIMPLEMENTED_NATIVE_METHOD();
227
void java_lang_Class_verify__(JAVA_OBJECT me)
229
//XMLVM_BEGIN_NATIVE[java_lang_Class_verify__]
230
XMLVM_UNIMPLEMENTED_NATIVE_METHOD();
234
JAVA_OBJECT java_lang_Class_getAnnotation___java_lang_Class(JAVA_OBJECT me, JAVA_OBJECT n1)
236
//XMLVM_BEGIN_NATIVE[java_lang_Class_getAnnotation___java_lang_Class]
237
XMLVM_UNIMPLEMENTED_NATIVE_METHOD();
241
JAVA_OBJECT java_lang_Class_getAnnotations__(JAVA_OBJECT me)
243
//XMLVM_BEGIN_NATIVE[java_lang_Class_getAnnotations__]
244
XMLVM_UNIMPLEMENTED_NATIVE_METHOD();
248
JAVA_OBJECT java_lang_Class_getComponentType__(JAVA_OBJECT me)
250
//XMLVM_BEGIN_NATIVE[java_lang_Class_getComponentType__]
251
java_lang_Class* thiz = (java_lang_Class*) me;
252
__TIB_DEFINITION_TEMPLATE* tib = (__TIB_DEFINITION_TEMPLATE*) thiz->fields.java_lang_Class.tib_;
253
if ((tib->flags & XMLVM_TYPE_ARRAY) == 0) {
254
// This is not an array
257
return tib->baseType;
261
JAVA_OBJECT java_lang_Class_getConstructors__(JAVA_OBJECT me)
263
//XMLVM_BEGIN_NATIVE[java_lang_Class_getConstructors__]
264
XMLVM_UNIMPLEMENTED_NATIVE_METHOD();
268
JAVA_OBJECT java_lang_Class_getDeclaredAnnotations__(JAVA_OBJECT me)
270
//XMLVM_BEGIN_NATIVE[java_lang_Class_getDeclaredAnnotations__]
271
XMLVM_UNIMPLEMENTED_NATIVE_METHOD();
275
JAVA_OBJECT java_lang_Class_getDeclaredClasses__(JAVA_OBJECT me)
277
//XMLVM_BEGIN_NATIVE[java_lang_Class_getDeclaredClasses__]
278
XMLVM_UNIMPLEMENTED_NATIVE_METHOD();
282
JAVA_OBJECT java_lang_Class_getDeclaredConstructors__(JAVA_OBJECT me)
284
//XMLVM_BEGIN_NATIVE[java_lang_Class_getDeclaredConstructors__]
285
java_lang_Class* thiz = (java_lang_Class*) me;
286
__TIB_DEFINITION_TEMPLATE* tib = (__TIB_DEFINITION_TEMPLATE*) thiz->fields.java_lang_Class.tib_;
287
XMLVM_REFLECTION_USED(tib->className)
288
int numConstructors = tib->numDeclaredConstructors;
289
Func_OOO dispatcher = tib->constructorDispatcherFunc;
290
if (!__TIB_java_lang_reflect_Constructor.classInitialized) __INIT_java_lang_reflect_Constructor();
291
org_xmlvm_runtime_XMLVMArray* constructors = XMLVMArray_createSingleDimension(__CLASS_java_lang_reflect_Constructor, numConstructors);
292
JAVA_ARRAY_OBJECT* constructorArray = (JAVA_ARRAY_OBJECT*) constructors->fields.org_xmlvm_runtime_XMLVMArray.array_;
294
for (slot = 0; slot < numConstructors; slot++) {
295
java_lang_reflect_Constructor* constructor = __NEW_java_lang_reflect_Constructor();
296
XMLVM_CONSTRUCTOR_REFLECTION_DATA* currentConstructor = (tib->declaredConstructors) + slot;
297
int numParameters = currentConstructor->numParameterTypes;
298
org_xmlvm_runtime_XMLVMArray* parameters = XMLVMArray_createSingleDimension(__CLASS_java_lang_Class, numParameters);
299
JAVA_ARRAY_OBJECT* parameterArray = (JAVA_ARRAY_OBJECT*) parameters->fields.org_xmlvm_runtime_XMLVMArray.array_;
301
JAVA_OBJECT** paramTypes = currentConstructor->parameterTypes;
302
for (j = 0; j < numParameters; j++) {
303
parameterArray[j] = *(paramTypes[j]);
305
JAVA_OBJECT* checkedExceptions = JAVA_NULL;
306
int numCheckedExceptions = 0;
308
java_lang_String* signature = xmlvm_create_java_string(currentConstructor->signature);
309
JAVA_OBJECT annotations = JAVA_NULL;
310
JAVA_OBJECT parameterAnnotations = JAVA_NULL;
311
java_lang_reflect_Constructor___INIT____java_lang_Class_java_lang_Class_1ARRAY_java_lang_Class_1ARRAY_int_java_lang_Object_int_java_lang_String_byte_1ARRAY_byte_1ARRAY(constructor, tib->clazz, parameters, checkedExceptions, modifiers, dispatcher, slot, signature, annotations, parameterAnnotations);
312
constructorArray[slot] = constructor;
318
JAVA_OBJECT java_lang_Class_getDeclaredField___java_lang_String(JAVA_OBJECT me, JAVA_OBJECT n1)
320
//XMLVM_BEGIN_NATIVE[java_lang_Class_getDeclaredField___java_lang_String]
321
java_lang_Class* thiz = (java_lang_Class*) me;
322
__TIB_DEFINITION_TEMPLATE* tib = (__TIB_DEFINITION_TEMPLATE*) thiz->fields.java_lang_Class.tib_;
323
XMLVM_REFLECTION_USED(tib->className)
324
int numFields = tib->numDeclaredFields;
325
if (!__TIB_java_lang_reflect_Field.classInitialized) __INIT_java_lang_reflect_Field();
327
for (i = 0; i < numFields; i++) {
328
XMLVM_FIELD_REFLECTION_DATA* currentField = (tib->declaredFields) + i;
329
java_lang_String* name = xmlvm_create_java_string(currentField->name);
330
if(java_lang_Object_equals___java_lang_Object(name, n1))
332
java_lang_reflect_Field* field = __NEW_java_lang_reflect_Field();
333
java_lang_Class* declaringClass = tib->clazz;
334
java_lang_Class* type = *(currentField->type);
335
JAVA_INT modifiers = currentField->modifiers;
336
JAVA_INT offset = currentField->offset;
337
JAVA_OBJECT* address = currentField->address;
338
java_lang_String* signature = xmlvm_create_java_string(currentField->signature);
339
org_xmlvm_runtime_XMLVMArray* annotations = currentField->annotations;
340
java_lang_reflect_Field___INIT____java_lang_Class_java_lang_String_java_lang_Class_int_int_java_lang_Object_java_lang_String_byte_1ARRAY(field, declaringClass, name, type, modifiers, offset, address, signature, annotations);
346
XMLVM_THROW(java_lang_NoSuchFieldException)
350
JAVA_OBJECT java_lang_Class_getDeclaredFields__(JAVA_OBJECT me)
352
//XMLVM_BEGIN_NATIVE[java_lang_Class_getDeclaredFields__]
353
java_lang_Class* thiz = (java_lang_Class*) me;
354
__TIB_DEFINITION_TEMPLATE* tib = (__TIB_DEFINITION_TEMPLATE*) thiz->fields.java_lang_Class.tib_;
355
XMLVM_REFLECTION_USED(tib->className)
356
int numFields = tib->numDeclaredFields;
357
if (!__TIB_java_lang_reflect_Field.classInitialized) __INIT_java_lang_reflect_Field();
358
org_xmlvm_runtime_XMLVMArray* fields = XMLVMArray_createSingleDimension(__CLASS_java_lang_reflect_Field, numFields);
359
JAVA_ARRAY_OBJECT* fieldsArray = (JAVA_ARRAY_OBJECT*) fields->fields.org_xmlvm_runtime_XMLVMArray.array_;
361
for (i = 0; i < numFields; i++) {
362
java_lang_reflect_Field* field = __NEW_java_lang_reflect_Field();
363
XMLVM_FIELD_REFLECTION_DATA* currentField = (tib->declaredFields) + i;
364
java_lang_Class* declaringClass = tib->clazz;
365
java_lang_String* name = xmlvm_create_java_string(currentField->name);
366
java_lang_Class* type = *(currentField->type);
367
JAVA_INT modifiers = currentField->modifiers;
368
JAVA_INT offset = currentField->offset;
369
JAVA_OBJECT* address = currentField->address;
370
java_lang_String* signature = xmlvm_create_java_string(currentField->signature);
371
org_xmlvm_runtime_XMLVMArray* annotations = currentField->annotations;
372
java_lang_reflect_Field___INIT____java_lang_Class_java_lang_String_java_lang_Class_int_int_java_lang_Object_java_lang_String_byte_1ARRAY(field, declaringClass, name, type, modifiers, offset, address, signature, annotations);
373
fieldsArray[i] = field;
379
JAVA_OBJECT java_lang_Class_getDeclaredMethods__(JAVA_OBJECT me)
381
//XMLVM_BEGIN_NATIVE[java_lang_Class_getDeclaredMethods__]
382
java_lang_Class* thiz = (java_lang_Class*) me;
383
__TIB_DEFINITION_TEMPLATE* tib = (__TIB_DEFINITION_TEMPLATE*) thiz->fields.java_lang_Class.tib_;
384
XMLVM_REFLECTION_USED(tib->className)
385
int numMethods = tib->numDeclaredMethods;
386
Func_OOOO dispatcher = tib->methodDispatcherFunc;
387
if (!__TIB_java_lang_reflect_Method.classInitialized) __INIT_java_lang_reflect_Method();
388
org_xmlvm_runtime_XMLVMArray* methods = XMLVMArray_createSingleDimension(__CLASS_java_lang_reflect_Method, numMethods);
389
JAVA_ARRAY_OBJECT* methodArray = (JAVA_ARRAY_OBJECT*) methods->fields.org_xmlvm_runtime_XMLVMArray.array_;
391
for (slot = 0; slot < numMethods; slot++) {
392
java_lang_reflect_Method* method = __NEW_java_lang_reflect_Method();
393
XMLVM_METHOD_REFLECTION_DATA* currentMethod = (tib->declaredMethods) + slot;
394
int numParameters = currentMethod->numParameterTypes;
395
org_xmlvm_runtime_XMLVMArray* parameters = XMLVMArray_createSingleDimension(__CLASS_java_lang_Class, numParameters);
396
JAVA_ARRAY_OBJECT* parameterArray = (JAVA_ARRAY_OBJECT*) parameters->fields.org_xmlvm_runtime_XMLVMArray.array_;
398
JAVA_OBJECT** paramTypes = currentMethod->parameterTypes;
399
for (j = 0; j < numParameters; j++) {
400
parameterArray[j] = *(paramTypes[j]);
402
java_lang_String* name = xmlvm_create_java_string(currentMethod->name);
403
JAVA_OBJECT* checkedExceptions = JAVA_NULL;
404
int numCheckedExceptions = 0;
406
java_lang_String* signature = xmlvm_create_java_string(currentMethod->signature);
407
JAVA_OBJECT annotations = JAVA_NULL;
408
JAVA_OBJECT parameterAnnotations = JAVA_NULL;
409
java_lang_reflect_Method___INIT____java_lang_String_java_lang_Class_java_lang_Class_1ARRAY_java_lang_Class_1ARRAY_int_java_lang_Object_int_java_lang_String_byte_1ARRAY_byte_1ARRAY(method, name, tib->clazz, parameters, checkedExceptions, modifiers, dispatcher, slot, signature, annotations, parameterAnnotations);
410
methodArray[slot] = method;
416
JAVA_OBJECT java_lang_Class_getEnclosingClass__(JAVA_OBJECT me)
418
//XMLVM_BEGIN_NATIVE[java_lang_Class_getEnclosingClass__]
419
java_lang_Class* thiz = (java_lang_Class*) me;
420
__TIB_DEFINITION_java_lang_Object* tib = (__TIB_DEFINITION_java_lang_Object*) thiz->fields.java_lang_Class.tib_;
421
XMLVM_REFLECTION_USED(tib->className)
422
if(!tib->enclosingClassName)
425
return java_lang_Class_forName___java_lang_String(xmlvm_create_java_string(tib->enclosingClassName));
429
JAVA_OBJECT java_lang_Class_getEnclosingConstructor__(JAVA_OBJECT me)
431
//XMLVM_BEGIN_NATIVE[java_lang_Class_getEnclosingConstructor__]
432
XMLVM_UNIMPLEMENTED_NATIVE_METHOD();
436
JAVA_OBJECT java_lang_Class_getEnclosingMethod__(JAVA_OBJECT me)
438
//XMLVM_BEGIN_NATIVE[java_lang_Class_getEnclosingMethod__]
439
java_lang_Class* thiz = (java_lang_Class*) me;
440
__TIB_DEFINITION_java_lang_Class* tib = (__TIB_DEFINITION_java_lang_Class*) thiz->fields.java_lang_Class.tib_;
441
XMLVM_REFLECTION_USED(tib->className)
442
java_lang_Class* enclosingClass=java_lang_Class_getEnclosingClass__(me);
444
if(enclosingClass!=JAVA_NULL)
446
if(tib->enclosingMethodName!=JAVA_NULL)
448
org_xmlvm_runtime_XMLVMArray* methods=java_lang_Class_getDeclaredMethods__(enclosingClass);
449
JAVA_ARRAY_OBJECT* methodArray = (JAVA_ARRAY_OBJECT*) methods->fields.org_xmlvm_runtime_XMLVMArray.array_;
451
for (int i=0;i<methods->fields.org_xmlvm_runtime_XMLVMArray.length_;i++)
453
java_lang_reflect_Method* method=methodArray[i];
455
java_lang_String* methodName=java_lang_reflect_Method_getName__(method);
457
//this is just a quick hack, we need to check for parameters etc...
458
if(strstr(tib->enclosingMethodName, xmlvm_java_string_to_const_char(methodName)))
469
JAVA_OBJECT java_lang_Class_getEnumConstants__(JAVA_OBJECT me)
471
//XMLVM_BEGIN_NATIVE[java_lang_Class_getEnumConstants__]
472
XMLVM_UNIMPLEMENTED_NATIVE_METHOD();
476
JAVA_OBJECT java_lang_Class_getField___java_lang_String(JAVA_OBJECT me, JAVA_OBJECT n1)
478
//XMLVM_BEGIN_NATIVE[java_lang_Class_getField___java_lang_String]
479
XMLVM_UNIMPLEMENTED_NATIVE_METHOD();
483
JAVA_OBJECT java_lang_Class_getFields__(JAVA_OBJECT me)
485
//XMLVM_BEGIN_NATIVE[java_lang_Class_getFields__]
486
XMLVM_UNIMPLEMENTED_NATIVE_METHOD();
490
JAVA_OBJECT java_lang_Class_getInterfaces__(JAVA_OBJECT me)
492
//XMLVM_BEGIN_NATIVE[java_lang_Class_getInterfaces__]
493
XMLVM_UNIMPLEMENTED_NATIVE_METHOD();
497
JAVA_INT java_lang_Class_getModifiers__(JAVA_OBJECT me)
499
//XMLVM_BEGIN_NATIVE[java_lang_Class_getModifiers__]
500
XMLVM_UNIMPLEMENTED_NATIVE_METHOD();
504
JAVA_OBJECT java_lang_Class_getName__(JAVA_OBJECT me)
506
//XMLVM_BEGIN_NATIVE[java_lang_Class_getName__]
507
//TODO not quite correct
508
java_lang_Class* thiz = (java_lang_Class*) me;
509
__TIB_DEFINITION_TEMPLATE* tib = (__TIB_DEFINITION_TEMPLATE*) thiz->fields.java_lang_Class.tib_;
510
XMLVM_REFLECTION_USED(tib->className)
511
return xmlvm_create_java_string(tib->className);
515
JAVA_OBJECT java_lang_Class_getSimpleName__(JAVA_OBJECT me)
517
//XMLVM_BEGIN_NATIVE[java_lang_Class_getSimpleName__]
518
//TODO not quite correct
519
java_lang_Class* thiz = (java_lang_Class*) me;
520
__TIB_DEFINITION_TEMPLATE* tib = (__TIB_DEFINITION_TEMPLATE*) thiz->fields.java_lang_Class.tib_;
521
XMLVM_REFLECTION_USED(tib->className)
522
return xmlvm_create_java_string(tib->className);
526
JAVA_OBJECT java_lang_Class_getProtectionDomain__(JAVA_OBJECT me)
528
//XMLVM_BEGIN_NATIVE[java_lang_Class_getProtectionDomain__]
529
XMLVM_UNIMPLEMENTED_NATIVE_METHOD();
533
JAVA_OBJECT java_lang_Class_getPDImpl__(JAVA_OBJECT me)
535
//XMLVM_BEGIN_NATIVE[java_lang_Class_getPDImpl__]
536
XMLVM_UNIMPLEMENTED_NATIVE_METHOD();
540
JAVA_OBJECT java_lang_Class_getSigners__(JAVA_OBJECT me)
542
//XMLVM_BEGIN_NATIVE[java_lang_Class_getSigners__]
543
XMLVM_UNIMPLEMENTED_NATIVE_METHOD();
547
JAVA_OBJECT java_lang_Class_getSuperclass__(JAVA_OBJECT me)
549
//XMLVM_BEGIN_NATIVE[java_lang_Class_getSuperclass__]
550
java_lang_Class* thiz = (java_lang_Class*) me;
551
__TIB_DEFINITION_TEMPLATE* tib = (__TIB_DEFINITION_TEMPLATE*) thiz->fields.java_lang_Class.tib_;
552
XMLVM_REFLECTION_USED(tib->className)
553
__TIB_DEFINITION_TEMPLATE* baseTIP = tib->extends;
554
if (baseTIP == JAVA_NULL) {
557
return baseTIP->clazz;
561
JAVA_BOOLEAN java_lang_Class_isAnnotation__(JAVA_OBJECT me)
563
//XMLVM_BEGIN_NATIVE[java_lang_Class_isAnnotation__]
564
XMLVM_UNIMPLEMENTED_NATIVE_METHOD();
568
JAVA_BOOLEAN java_lang_Class_isAnnotationPresent___java_lang_Class(JAVA_OBJECT me, JAVA_OBJECT n1)
570
//XMLVM_BEGIN_NATIVE[java_lang_Class_isAnnotationPresent___java_lang_Class]
571
XMLVM_UNIMPLEMENTED_NATIVE_METHOD();
575
JAVA_BOOLEAN java_lang_Class_isAnonymousClass__(JAVA_OBJECT me)
577
//XMLVM_BEGIN_NATIVE[java_lang_Class_isAnonymousClass__]
578
java_lang_Class* thiz = (java_lang_Class*) me;
579
__TIB_DEFINITION_TEMPLATE* tib = (__TIB_DEFINITION_TEMPLATE*) thiz->fields.java_lang_Class.tib_;
580
XMLVM_REFLECTION_USED(tib->className)
581
//TODO correct check for anonymous
586
JAVA_BOOLEAN java_lang_Class_isArray__(JAVA_OBJECT me)
588
//XMLVM_BEGIN_NATIVE[java_lang_Class_isArray__]
589
java_lang_Class* thiz = (java_lang_Class*) me;
590
__TIB_DEFINITION_TEMPLATE* tib = (__TIB_DEFINITION_TEMPLATE*) thiz->fields.java_lang_Class.tib_;
591
XMLVM_REFLECTION_USED(tib->className)
592
return (tib->flags & XMLVM_TYPE_ARRAY) != 0;
596
JAVA_BOOLEAN java_lang_Class_isAssignableFrom___java_lang_Class(JAVA_OBJECT me, JAVA_OBJECT n1)
598
//XMLVM_BEGIN_NATIVE[java_lang_Class_isAssignableFrom___java_lang_Class]
599
java_lang_Class* thiz = (java_lang_Class*) me;
600
java_lang_Class* that = (java_lang_Class*) n1;
605
XMLVM_THROW_WITH_CSTRING(java_lang_NullPointerException, "fromClazz argument");
608
// if primitive class
609
if (java_lang_Class_isPrimitive__(thiz))
613
java_lang_Class* compareTo=thiz;
614
while(compareTo!=JAVA_NULL)
618
compareTo = java_lang_Class_getSuperclass__(compareTo);
626
JAVA_BOOLEAN java_lang_Class_isEnum__(JAVA_OBJECT me)
628
//XMLVM_BEGIN_NATIVE[java_lang_Class_isEnum__]
629
java_lang_Class* thiz = (java_lang_Class*) me;
630
__TIB_DEFINITION_TEMPLATE* tib = (__TIB_DEFINITION_TEMPLATE*) thiz->fields.java_lang_Class.tib_;
631
return (tib->flags & XMLVM_TYPE_ENUM) != 0;
635
JAVA_BOOLEAN java_lang_Class_isInstance___java_lang_Object(JAVA_OBJECT me, JAVA_OBJECT n1)
637
//XMLVM_BEGIN_NATIVE[java_lang_Class_isInstance___java_lang_Object]
638
return XMLVM_ISA(n1, me);
642
JAVA_BOOLEAN java_lang_Class_isInterface__(JAVA_OBJECT me)
644
//XMLVM_BEGIN_NATIVE[java_lang_Class_isInterface__]
645
java_lang_Class* thiz = (java_lang_Class*) me;
646
__TIB_DEFINITION_TEMPLATE* tib = (__TIB_DEFINITION_TEMPLATE*) thiz->fields.java_lang_Class.tib_;
647
XMLVM_REFLECTION_USED(tib->className)
648
return (tib->flags & XMLVM_TYPE_INTERFACE) != 0;
652
JAVA_BOOLEAN java_lang_Class_isLocalClass__(JAVA_OBJECT me)
654
//XMLVM_BEGIN_NATIVE[java_lang_Class_isLocalClass__]
655
java_lang_Class* thiz = (java_lang_Class*) me;
656
__TIB_DEFINITION_TEMPLATE* tib = (__TIB_DEFINITION_TEMPLATE*) thiz->fields.java_lang_Class.tib_;
657
//TODO correct check for local
662
JAVA_BOOLEAN java_lang_Class_isMemberClass__(JAVA_OBJECT me)
664
//XMLVM_BEGIN_NATIVE[java_lang_Class_isMemberClass__]
665
XMLVM_UNIMPLEMENTED_NATIVE_METHOD();
669
JAVA_BOOLEAN java_lang_Class_isPrimitive__(JAVA_OBJECT me)
671
//XMLVM_BEGIN_NATIVE[java_lang_Class_isPrimitive__]
672
java_lang_Class* thiz = (java_lang_Class*) me;
673
__TIB_DEFINITION_TEMPLATE* tib = (__TIB_DEFINITION_TEMPLATE*) thiz->fields.java_lang_Class.tib_;
674
return (tib->flags & XMLVM_TYPE_PRIMITIVE) != 0;
678
JAVA_BOOLEAN java_lang_Class_isSynthetic__(JAVA_OBJECT me)
680
//XMLVM_BEGIN_NATIVE[java_lang_Class_isSynthetic__]
681
XMLVM_UNIMPLEMENTED_NATIVE_METHOD();
685
JAVA_OBJECT java_lang_Class_newInstance__(JAVA_OBJECT me)
687
//XMLVM_BEGIN_NATIVE[java_lang_Class_newInstance__]
688
java_lang_Class* thiz = (java_lang_Class*) me;
689
__TIB_DEFINITION_TEMPLATE* tib = (__TIB_DEFINITION_TEMPLATE*) thiz->fields.java_lang_Class.tib_;
690
XMLVM_REFLECTION_USED(tib->className)
691
Func_O func = tib->newInstanceFunc;
696
JAVA_OBJECT java_lang_Class_getPackageString__(JAVA_OBJECT me)
698
//XMLVM_BEGIN_NATIVE[java_lang_Class_getPackageString__]
699
java_lang_Class* thiz = (java_lang_Class*) me;
700
__TIB_DEFINITION_TEMPLATE* tib = (__TIB_DEFINITION_TEMPLATE*) thiz->fields.java_lang_Class.tib_;
701
XMLVM_REFLECTION_USED(tib->className)
702
return tib->packageName?xmlvm_create_java_string(tib->packageName):JAVA_NULL;
706
JAVA_BOOLEAN java_lang_Class_desiredAssertionStatus__(JAVA_OBJECT me)
708
//XMLVM_BEGIN_NATIVE[java_lang_Class_desiredAssertionStatus__]
713
JAVA_OBJECT java_lang_Class_asSubclass___java_lang_Class(JAVA_OBJECT me, JAVA_OBJECT n1)
715
//XMLVM_BEGIN_NATIVE[java_lang_Class_asSubclass___java_lang_Class]
716
XMLVM_UNIMPLEMENTED_NATIVE_METHOD();
720
JAVA_OBJECT java_lang_Class_getSignatureAttribute__(JAVA_OBJECT me)
722
//XMLVM_BEGIN_NATIVE[java_lang_Class_getSignatureAttribute__]
723
java_lang_Class* thiz = (java_lang_Class*) me;
724
__TIB_DEFINITION_TEMPLATE* tib = (__TIB_DEFINITION_TEMPLATE*) thiz->fields.java_lang_Class.tib_;
725
XMLVM_REFLECTION_USED(tib->className)
726
return tib->signature?xmlvm_create_java_string(tib->signature):JAVA_NULL;
731
void xmlvm_init_native_java_lang_Class()
733
//XMLVM_BEGIN_NATIVE_IMPLEMENTATION_INIT
734
//XMLVM_END_NATIVE_IMPLEMENTATION_INIT
735
#ifdef XMLVM_VTABLE_IDX_java_lang_Class_getClasses__
736
__TIB_java_lang_Class.vtable[XMLVM_VTABLE_IDX_java_lang_Class_getClasses__] =
737
(VTABLE_PTR) java_lang_Class_getClasses__;
739
#ifdef XMLVM_VTABLE_IDX_java_lang_Class_verify__
740
__TIB_java_lang_Class.vtable[XMLVM_VTABLE_IDX_java_lang_Class_verify__] =
741
(VTABLE_PTR) java_lang_Class_verify__;
743
#ifdef XMLVM_VTABLE_IDX_java_lang_Class_getAnnotation___java_lang_Class
744
__TIB_java_lang_Class.vtable[XMLVM_VTABLE_IDX_java_lang_Class_getAnnotation___java_lang_Class] =
745
(VTABLE_PTR) java_lang_Class_getAnnotation___java_lang_Class;
747
#ifdef XMLVM_VTABLE_IDX_java_lang_Class_getAnnotations__
748
__TIB_java_lang_Class.vtable[XMLVM_VTABLE_IDX_java_lang_Class_getAnnotations__] =
749
(VTABLE_PTR) java_lang_Class_getAnnotations__;
751
#ifdef XMLVM_VTABLE_IDX_java_lang_Class_getComponentType__
752
__TIB_java_lang_Class.vtable[XMLVM_VTABLE_IDX_java_lang_Class_getComponentType__] =
753
(VTABLE_PTR) java_lang_Class_getComponentType__;
755
#ifdef XMLVM_VTABLE_IDX_java_lang_Class_getConstructors__
756
__TIB_java_lang_Class.vtable[XMLVM_VTABLE_IDX_java_lang_Class_getConstructors__] =
757
(VTABLE_PTR) java_lang_Class_getConstructors__;
759
#ifdef XMLVM_VTABLE_IDX_java_lang_Class_getDeclaredAnnotations__
760
__TIB_java_lang_Class.vtable[XMLVM_VTABLE_IDX_java_lang_Class_getDeclaredAnnotations__] =
761
(VTABLE_PTR) java_lang_Class_getDeclaredAnnotations__;
763
#ifdef XMLVM_VTABLE_IDX_java_lang_Class_getDeclaredClasses__
764
__TIB_java_lang_Class.vtable[XMLVM_VTABLE_IDX_java_lang_Class_getDeclaredClasses__] =
765
(VTABLE_PTR) java_lang_Class_getDeclaredClasses__;
767
#ifdef XMLVM_VTABLE_IDX_java_lang_Class_getDeclaredConstructors__
768
__TIB_java_lang_Class.vtable[XMLVM_VTABLE_IDX_java_lang_Class_getDeclaredConstructors__] =
769
(VTABLE_PTR) java_lang_Class_getDeclaredConstructors__;
771
#ifdef XMLVM_VTABLE_IDX_java_lang_Class_getDeclaredField___java_lang_String
772
__TIB_java_lang_Class.vtable[XMLVM_VTABLE_IDX_java_lang_Class_getDeclaredField___java_lang_String] =
773
(VTABLE_PTR) java_lang_Class_getDeclaredField___java_lang_String;
775
#ifdef XMLVM_VTABLE_IDX_java_lang_Class_getDeclaredFields__
776
__TIB_java_lang_Class.vtable[XMLVM_VTABLE_IDX_java_lang_Class_getDeclaredFields__] =
777
(VTABLE_PTR) java_lang_Class_getDeclaredFields__;
779
#ifdef XMLVM_VTABLE_IDX_java_lang_Class_getDeclaredMethods__
780
__TIB_java_lang_Class.vtable[XMLVM_VTABLE_IDX_java_lang_Class_getDeclaredMethods__] =
781
(VTABLE_PTR) java_lang_Class_getDeclaredMethods__;
783
#ifdef XMLVM_VTABLE_IDX_java_lang_Class_getEnclosingClass__
784
__TIB_java_lang_Class.vtable[XMLVM_VTABLE_IDX_java_lang_Class_getEnclosingClass__] =
785
(VTABLE_PTR) java_lang_Class_getEnclosingClass__;
787
#ifdef XMLVM_VTABLE_IDX_java_lang_Class_getEnclosingConstructor__
788
__TIB_java_lang_Class.vtable[XMLVM_VTABLE_IDX_java_lang_Class_getEnclosingConstructor__] =
789
(VTABLE_PTR) java_lang_Class_getEnclosingConstructor__;
791
#ifdef XMLVM_VTABLE_IDX_java_lang_Class_getEnclosingMethod__
792
__TIB_java_lang_Class.vtable[XMLVM_VTABLE_IDX_java_lang_Class_getEnclosingMethod__] =
793
(VTABLE_PTR) java_lang_Class_getEnclosingMethod__;
795
#ifdef XMLVM_VTABLE_IDX_java_lang_Class_getEnumConstants__
796
__TIB_java_lang_Class.vtable[XMLVM_VTABLE_IDX_java_lang_Class_getEnumConstants__] =
797
(VTABLE_PTR) java_lang_Class_getEnumConstants__;
799
#ifdef XMLVM_VTABLE_IDX_java_lang_Class_getField___java_lang_String
800
__TIB_java_lang_Class.vtable[XMLVM_VTABLE_IDX_java_lang_Class_getField___java_lang_String] =
801
(VTABLE_PTR) java_lang_Class_getField___java_lang_String;
803
#ifdef XMLVM_VTABLE_IDX_java_lang_Class_getFields__
804
__TIB_java_lang_Class.vtable[XMLVM_VTABLE_IDX_java_lang_Class_getFields__] =
805
(VTABLE_PTR) java_lang_Class_getFields__;
807
#ifdef XMLVM_VTABLE_IDX_java_lang_Class_getInterfaces__
808
__TIB_java_lang_Class.vtable[XMLVM_VTABLE_IDX_java_lang_Class_getInterfaces__] =
809
(VTABLE_PTR) java_lang_Class_getInterfaces__;
811
#ifdef XMLVM_VTABLE_IDX_java_lang_Class_getModifiers__
812
__TIB_java_lang_Class.vtable[XMLVM_VTABLE_IDX_java_lang_Class_getModifiers__] =
813
(VTABLE_PTR) java_lang_Class_getModifiers__;
815
#ifdef XMLVM_VTABLE_IDX_java_lang_Class_getName__
816
__TIB_java_lang_Class.vtable[XMLVM_VTABLE_IDX_java_lang_Class_getName__] =
817
(VTABLE_PTR) java_lang_Class_getName__;
819
#ifdef XMLVM_VTABLE_IDX_java_lang_Class_getSimpleName__
820
__TIB_java_lang_Class.vtable[XMLVM_VTABLE_IDX_java_lang_Class_getSimpleName__] =
821
(VTABLE_PTR) java_lang_Class_getSimpleName__;
823
#ifdef XMLVM_VTABLE_IDX_java_lang_Class_getProtectionDomain__
824
__TIB_java_lang_Class.vtable[XMLVM_VTABLE_IDX_java_lang_Class_getProtectionDomain__] =
825
(VTABLE_PTR) java_lang_Class_getProtectionDomain__;
827
#ifdef XMLVM_VTABLE_IDX_java_lang_Class_getPDImpl__
828
__TIB_java_lang_Class.vtable[XMLVM_VTABLE_IDX_java_lang_Class_getPDImpl__] =
829
(VTABLE_PTR) java_lang_Class_getPDImpl__;
831
#ifdef XMLVM_VTABLE_IDX_java_lang_Class_getSigners__
832
__TIB_java_lang_Class.vtable[XMLVM_VTABLE_IDX_java_lang_Class_getSigners__] =
833
(VTABLE_PTR) java_lang_Class_getSigners__;
835
#ifdef XMLVM_VTABLE_IDX_java_lang_Class_getSuperclass__
836
__TIB_java_lang_Class.vtable[XMLVM_VTABLE_IDX_java_lang_Class_getSuperclass__] =
837
(VTABLE_PTR) java_lang_Class_getSuperclass__;
839
#ifdef XMLVM_VTABLE_IDX_java_lang_Class_isAnnotation__
840
__TIB_java_lang_Class.vtable[XMLVM_VTABLE_IDX_java_lang_Class_isAnnotation__] =
841
(VTABLE_PTR) java_lang_Class_isAnnotation__;
843
#ifdef XMLVM_VTABLE_IDX_java_lang_Class_isAnnotationPresent___java_lang_Class
844
__TIB_java_lang_Class.vtable[XMLVM_VTABLE_IDX_java_lang_Class_isAnnotationPresent___java_lang_Class] =
845
(VTABLE_PTR) java_lang_Class_isAnnotationPresent___java_lang_Class;
847
#ifdef XMLVM_VTABLE_IDX_java_lang_Class_isAnonymousClass__
848
__TIB_java_lang_Class.vtable[XMLVM_VTABLE_IDX_java_lang_Class_isAnonymousClass__] =
849
(VTABLE_PTR) java_lang_Class_isAnonymousClass__;
851
#ifdef XMLVM_VTABLE_IDX_java_lang_Class_isArray__
852
__TIB_java_lang_Class.vtable[XMLVM_VTABLE_IDX_java_lang_Class_isArray__] =
853
(VTABLE_PTR) java_lang_Class_isArray__;
855
#ifdef XMLVM_VTABLE_IDX_java_lang_Class_isAssignableFrom___java_lang_Class
856
__TIB_java_lang_Class.vtable[XMLVM_VTABLE_IDX_java_lang_Class_isAssignableFrom___java_lang_Class] =
857
(VTABLE_PTR) java_lang_Class_isAssignableFrom___java_lang_Class;
859
#ifdef XMLVM_VTABLE_IDX_java_lang_Class_isEnum__
860
__TIB_java_lang_Class.vtable[XMLVM_VTABLE_IDX_java_lang_Class_isEnum__] =
861
(VTABLE_PTR) java_lang_Class_isEnum__;
863
#ifdef XMLVM_VTABLE_IDX_java_lang_Class_isInstance___java_lang_Object
864
__TIB_java_lang_Class.vtable[XMLVM_VTABLE_IDX_java_lang_Class_isInstance___java_lang_Object] =
865
(VTABLE_PTR) java_lang_Class_isInstance___java_lang_Object;
867
#ifdef XMLVM_VTABLE_IDX_java_lang_Class_isInterface__
868
__TIB_java_lang_Class.vtable[XMLVM_VTABLE_IDX_java_lang_Class_isInterface__] =
869
(VTABLE_PTR) java_lang_Class_isInterface__;
871
#ifdef XMLVM_VTABLE_IDX_java_lang_Class_isLocalClass__
872
__TIB_java_lang_Class.vtable[XMLVM_VTABLE_IDX_java_lang_Class_isLocalClass__] =
873
(VTABLE_PTR) java_lang_Class_isLocalClass__;
875
#ifdef XMLVM_VTABLE_IDX_java_lang_Class_isMemberClass__
876
__TIB_java_lang_Class.vtable[XMLVM_VTABLE_IDX_java_lang_Class_isMemberClass__] =
877
(VTABLE_PTR) java_lang_Class_isMemberClass__;
879
#ifdef XMLVM_VTABLE_IDX_java_lang_Class_isPrimitive__
880
__TIB_java_lang_Class.vtable[XMLVM_VTABLE_IDX_java_lang_Class_isPrimitive__] =
881
(VTABLE_PTR) java_lang_Class_isPrimitive__;
883
#ifdef XMLVM_VTABLE_IDX_java_lang_Class_isSynthetic__
884
__TIB_java_lang_Class.vtable[XMLVM_VTABLE_IDX_java_lang_Class_isSynthetic__] =
885
(VTABLE_PTR) java_lang_Class_isSynthetic__;
887
#ifdef XMLVM_VTABLE_IDX_java_lang_Class_newInstance__
888
__TIB_java_lang_Class.vtable[XMLVM_VTABLE_IDX_java_lang_Class_newInstance__] =
889
(VTABLE_PTR) java_lang_Class_newInstance__;
891
#ifdef XMLVM_VTABLE_IDX_java_lang_Class_desiredAssertionStatus__
892
__TIB_java_lang_Class.vtable[XMLVM_VTABLE_IDX_java_lang_Class_desiredAssertionStatus__] =
893
(VTABLE_PTR) java_lang_Class_desiredAssertionStatus__;
895
#ifdef XMLVM_VTABLE_IDX_java_lang_Class_asSubclass___java_lang_Class
896
__TIB_java_lang_Class.vtable[XMLVM_VTABLE_IDX_java_lang_Class_asSubclass___java_lang_Class] =
897
(VTABLE_PTR) java_lang_Class_asSubclass___java_lang_Class;