1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
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;
}
|