diff options
author | Alon Zakai <alonzakai@gmail.com> | 2013-05-08 16:06:26 -0700 |
---|---|---|
committer | Alon Zakai <alonzakai@gmail.com> | 2013-05-08 16:06:26 -0700 |
commit | 693682fc225e60c9c335ee910fb3c8bb5cf85470 (patch) | |
tree | b2c1285adf65b68a7b20aa231c4c5665966b2c18 /tests/nbody-java/xmlvm-util.c | |
parent | b41b535aeac53740dec416f617378ec4e4e382ce (diff) |
add nbody-java code
Diffstat (limited to 'tests/nbody-java/xmlvm-util.c')
-rw-r--r-- | tests/nbody-java/xmlvm-util.c | 220 |
1 files changed, 220 insertions, 0 deletions
diff --git a/tests/nbody-java/xmlvm-util.c b/tests/nbody-java/xmlvm-util.c new file mode 100644 index 00000000..c879ad70 --- /dev/null +++ b/tests/nbody-java/xmlvm-util.c @@ -0,0 +1,220 @@ +/* + * Copyright (c) 2002-2011 by XMLVM.org + * + * Project Info: http://www.xmlvm.org + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation; either version 2.1 of the License, or + * (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public + * License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, + * USA. + */ + +#include "xmlvm-util.h" +#include "java_util_ArrayList.h" +#include "java_util_HashSet.h" +#include "java_util_HashMap.h" +#include "java_util_Map_Entry.h" + + +/**** ArrayList Utilities ********************************************************************/ +JAVA_OBJECT XMLVMUtil_NEW_ArrayList() +{ + JAVA_OBJECT obj = __NEW_java_util_ArrayList(); + java_util_ArrayList___INIT___(obj); + return obj; +} + +JAVA_INT XMLVMUtil_ArrayList_size(JAVA_OBJECT me) +{ +#ifdef XMLVM_VTABLE_IDX_java_util_ArrayList_size__ + return (*(JAVA_INT (*)(JAVA_OBJECT)) ((java_util_ArrayList*) me)-> + tib->vtable[XMLVM_VTABLE_IDX_java_util_ArrayList_size__])(me); +#else + return java_util_ArrayList_size__(me); +#endif +} + +JAVA_BOOLEAN XMLVMUtil_ArrayList_add(JAVA_OBJECT me, JAVA_OBJECT obj) +{ +#ifdef XMLVM_VTABLE_IDX_java_util_ArrayList_add___java_lang_Object + return (*(JAVA_BOOLEAN (*)(JAVA_OBJECT, JAVA_OBJECT)) ((java_util_ArrayList*) me)-> + tib->vtable[XMLVM_VTABLE_IDX_java_util_ArrayList_add___java_lang_Object])(me, obj); +#else + return java_util_ArrayList_add___java_lang_Object(me, obj); +#endif +} + +void XMLVMUtil_ArrayList_addAt(JAVA_OBJECT me, JAVA_INT index, JAVA_OBJECT obj) +{ +#ifdef XMLVM_VTABLE_IDX_java_util_ArrayList_add___int_java_lang_Object + (*(JAVA_BOOLEAN (*)(JAVA_OBJECT, JAVA_INT, JAVA_OBJECT)) ((java_util_ArrayList*) me)-> + tib->vtable[XMLVM_VTABLE_IDX_java_util_ArrayList_add___int_java_lang_Object])(me, index, obj); +#else + java_util_ArrayList_add___int_java_lang_Object(me, index, obj); +#endif +} + +JAVA_OBJECT XMLVMUtil_ArrayList_get(JAVA_OBJECT me, JAVA_INT idx) +{ +#ifdef XMLVM_VTABLE_IDX_java_util_ArrayList_get___int + return (*(JAVA_OBJECT (*)(JAVA_OBJECT, JAVA_INT)) ((java_util_ArrayList*) me)-> + tib->vtable[XMLVM_VTABLE_IDX_java_util_ArrayList_get___int])(me, idx); +#else + return java_util_ArrayList_get___int(me, idx); +#endif +} + +JAVA_BOOLEAN XMLVMUtil_ArrayList_remove(JAVA_OBJECT me, JAVA_OBJECT obj) +{ +#ifdef XMLVM_VTABLE_IDX_java_util_ArrayList_remove___java_lang_Object + return (*(JAVA_BOOLEAN (*)(JAVA_OBJECT, JAVA_OBJECT)) ((java_util_ArrayList*) me)-> + tib->vtable[XMLVM_VTABLE_IDX_java_util_ArrayList_remove___java_lang_Object])(me, obj); +#else + return java_util_ArrayList_remove___java_lang_Object(me, obj); +#endif +} + +JAVA_INT XMLVMUtil_ArrayList_indexOf(JAVA_OBJECT me, JAVA_OBJECT obj) +{ +#ifdef XMLVM_VTABLE_IDX_java_util_ArrayList_indexOf___java_lang_Object + return (*(JAVA_INT (*)(JAVA_OBJECT, JAVA_OBJECT)) ((java_util_ArrayList*) me)-> + tib->vtable[XMLVM_VTABLE_IDX_java_util_ArrayList_indexOf___java_lang_Object])(me, obj); +#else + return java_util_ArrayList_indexOf___java_lang_Object(me, obj); +#endif +} + +/**** HashSet Utilities ********************************************************************/ +JAVA_OBJECT XMLVMUtil_NEW_HashSet() +{ + JAVA_OBJECT obj = __NEW_java_util_HashSet(); + java_util_HashSet___INIT___(obj); + return obj; +} + +JAVA_BOOLEAN XMLVMUtil_HashSet_add(JAVA_OBJECT me, JAVA_OBJECT obj) +{ +#ifdef XMLVM_VTABLE_IDX_java_util_HashSet_add___java_lang_Object + return (*(JAVA_BOOLEAN (*)(JAVA_OBJECT, JAVA_OBJECT)) ((java_util_HashSet*) me)-> + tib->vtable[XMLVM_VTABLE_IDX_java_util_HashSet_add___java_lang_Object])(me, obj); +#else + return java_util_HashSet_add___java_lang_Object(me, obj); +#endif +} + +JAVA_INT XMLVMUtil_HashSet_iterator(JAVA_OBJECT me) +{ +#ifdef XMLVM_VTABLE_IDX_java_util_HashSet_iterator__ + return (*(JAVA_INT (*)(JAVA_OBJECT)) ((java_util_HashSet*) me)-> + tib->vtable[XMLVM_ITABLE_IDX_java_util_Set_iterator__])(me); +#else + return java_util_HashSet_iterator__(me); +#endif +} + +JAVA_INT XMLVMUtil_Iterator_hasNext(JAVA_OBJECT me) +{ +#ifdef XMLVM_VTABLE_IDX_java_util_Iterator_hasNext__ + return (*(JAVA_INT (*)(JAVA_OBJECT)) ((java_util_Iterator*) me)-> + tib->vtable[XMLVM_VTABLE_IDX_java_util_Iterator_hasNext__])(me); +#endif +} + +JAVA_INT XMLVMUtil_Iterator_next(JAVA_OBJECT me) +{ +#ifdef XMLVM_VTABLE_IDX_java_util_Iterator_next__ + return (*(JAVA_INT (*)(JAVA_OBJECT)) ((java_util_Iterator*) me)-> + tib->vtable[XMLVM_VTABLE_IDX_java_util_Iterator_next__])(me); +#endif +} + +/**** HashMap Utilities ********************************************************************/ +JAVA_OBJECT XMLVMUtil_NEW_HashMap() +{ + JAVA_OBJECT obj = __NEW_java_util_HashMap(); + java_util_HashMap___INIT___(obj); + return obj; +} + +JAVA_OBJECT XMLVMUtil_HashMap_put(JAVA_OBJECT me, JAVA_OBJECT key, JAVA_OBJECT value) +{ +#ifdef XMLVM_VTABLE_IDX_java_util_HashMap_put___java_lang_Object_java_lang_Object + return (*(JAVA_OBJECT (*)(JAVA_OBJECT, JAVA_OBJECT, JAVA_OBJECT)) ((java_util_HashMap*) me)-> + tib->vtable[XMLVM_VTABLE_IDX_java_util_HashMap_put___java_lang_Object_java_lang_Object])(me, key, value); +#else + return java_util_HashMap_put___java_lang_Object_java_lang_Object(me, key, value); +#endif +} + +JAVA_OBJECT XMLVMUtil_HashMap_get(JAVA_OBJECT me, JAVA_OBJECT key) +{ +#ifdef XMLVM_VTABLE_IDX_java_util_HashMap_get___java_lang_Object + return (*(JAVA_OBJECT (*)(JAVA_OBJECT, JAVA_OBJECT)) ((java_util_HashMap*) me)-> + tib->vtable[XMLVM_VTABLE_IDX_java_util_HashMap_get___java_lang_Object])(me, key); +#else + return java_util_HashMap_get___java_lang_Object(me, key); +#endif +} + +JAVA_OBJECT XMLVMUtil_HashMap_entrySet(JAVA_OBJECT me) +{ +#ifdef XMLVM_VTABLE_IDX_java_util_HashMap_entrySet__ + return (*(JAVA_OBJECT (*)(JAVA_OBJECT)) ((java_util_HashMap*) me)-> + tib->vtable[XMLVM_VTABLE_IDX_java_util_HashMap_entrySet__])(me); +#else + return java_util_HashMap_entrySet__(me); +#endif +} + +JAVA_OBJECT XMLVMUtil_MapEntry_getKey(JAVA_OBJECT me) +{ + return (*(JAVA_OBJECT (*)(JAVA_OBJECT)) *(((java_lang_Object*) me)-> + tib->itableBegin)[XMLVM_ITABLE_IDX_java_util_Map_Entry_getKey__])(me); +} + +JAVA_OBJECT XMLVMUtil_MapEntry_getValue(JAVA_OBJECT me) +{ + return (*(JAVA_OBJECT (*)(JAVA_OBJECT)) *(((java_lang_Object*) me)-> + tib->itableBegin)[XMLVM_ITABLE_IDX_java_util_Map_Entry_getValue__])(me); +} + + +/**** ConstantStringPool Utilities ************************************************************/ +static JAVA_OBJECT stringPool = JAVA_NULL; + +JAVA_OBJECT XMLVMUtil_getFromStringPool(JAVA_OBJECT str) +{ + if (stringPool == JAVA_NULL) { + stringPool = XMLVMUtil_NEW_ArrayList(); + } + JAVA_INT i = XMLVMUtil_ArrayList_indexOf(stringPool, str); + if (i == -1) { + XMLVMUtil_ArrayList_add(stringPool, str); + return str; + } + return XMLVMUtil_ArrayList_get(stringPool, i); +} + + +/**** Misc Utilities **********************************************************************/ + +char* XMLVMUtil_convertFromByteArray(JAVA_OBJECT byteArray) { + org_xmlvm_runtime_XMLVMArray* a = byteArray; + char* data = (char*) a->fields.org_xmlvm_runtime_XMLVMArray.array_; + int length = a->fields.org_xmlvm_runtime_XMLVMArray.length_; + char* buf = XMLVM_ATOMIC_MALLOC(length + 1); + XMLVM_MEMCPY(buf, data, length); + buf[length] = '\0'; + return buf; +} + |