compiler/ecere: completed intptr/uintptr support
[sdk] / compiler / bootstrap / ecere / bootstrap / i18n.c
1 #if defined(__GNUC__)
2 typedef long long int64;
3 typedef unsigned long long uint64;
4 #elif defined(__TINYC__)
5 #include <stdarg.h>
6 #define __builtin_va_list va_list
7 #define __builtin_va_start va_start
8 #define __builtin_va_end va_end
9 #ifdef _WIN32
10 #define strcasecmp stricmp
11 #define strncasecmp strnicmp
12 #define __declspec(x) __attribute__((x))
13 #endif
14 typedef long long int64;
15 typedef unsigned long long uint64;
16 #else
17 typedef __int64 int64;
18 typedef unsigned __int64 uint64;
19 #endif
20 #ifdef __BIG_ENDIAN__
21 #define __ENDIAN_PAD(x) (8 - (x))
22 #else
23 #define __ENDIAN_PAD(x) 0
24 #endif
25 #include <stdint.h>
26 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__sys__BTNode;
27
28 struct __ecereNameSpace__ecere__sys__BTNode;
29
30 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__sys__BinaryTree;
31
32 struct __ecereNameSpace__ecere__sys__BinaryTree
33 {
34 struct __ecereNameSpace__ecere__sys__BTNode * root;
35 int count;
36 int (*  CompareKey)(struct __ecereNameSpace__ecere__sys__BinaryTree * tree, uintptr_t a, uintptr_t b);
37 void (*  FreeKey)(void *  key);
38 } __attribute__ ((gcc_struct));
39
40 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__sys__OldList;
41
42 struct __ecereNameSpace__ecere__sys__OldList
43 {
44 void *  first;
45 void *  last;
46 int count;
47 unsigned int offset;
48 unsigned int circ;
49 } __attribute__ ((gcc_struct));
50
51 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__Class;
52
53 struct __ecereNameSpace__ecere__com__Class
54 {
55 struct __ecereNameSpace__ecere__com__Class * prev;
56 struct __ecereNameSpace__ecere__com__Class * next;
57 char *  name;
58 int offset;
59 int structSize;
60 int (* *  _vTbl)();
61 int vTblSize;
62 int (*  Constructor)(struct __ecereNameSpace__ecere__com__Instance *);
63 void (*  Destructor)(struct __ecereNameSpace__ecere__com__Instance *);
64 int offsetClass;
65 int sizeClass;
66 struct __ecereNameSpace__ecere__com__Class * base;
67 struct __ecereNameSpace__ecere__sys__BinaryTree methods;
68 struct __ecereNameSpace__ecere__sys__BinaryTree members;
69 struct __ecereNameSpace__ecere__sys__BinaryTree prop;
70 struct __ecereNameSpace__ecere__sys__OldList membersAndProperties;
71 struct __ecereNameSpace__ecere__sys__BinaryTree classProperties;
72 struct __ecereNameSpace__ecere__sys__OldList derivatives;
73 int memberID;
74 int startMemberID;
75 int type;
76 struct __ecereNameSpace__ecere__com__Instance * module;
77 struct __ecereNameSpace__ecere__com__NameSpace *  nameSpace;
78 char *  dataTypeString;
79 struct __ecereNameSpace__ecere__com__Instance * dataType;
80 int typeSize;
81 int defaultAlignment;
82 void (*  Initialize)();
83 int memberOffset;
84 struct __ecereNameSpace__ecere__sys__OldList selfWatchers;
85 char *  designerClass;
86 unsigned int noExpansion;
87 char *  defaultProperty;
88 unsigned int comRedefinition;
89 int count;
90 unsigned int isRemote;
91 unsigned int internalDecl;
92 void *  data;
93 unsigned int computeSize;
94 int structAlignment;
95 int destructionWatchOffset;
96 unsigned int fixed;
97 struct __ecereNameSpace__ecere__sys__OldList delayedCPValues;
98 int inheritanceAccess;
99 char *  fullName;
100 void *  symbol;
101 struct __ecereNameSpace__ecere__sys__OldList conversions;
102 struct __ecereNameSpace__ecere__sys__OldList templateParams;
103 struct __ecereNameSpace__ecere__com__ClassTemplateArgument *  templateArgs;
104 struct __ecereNameSpace__ecere__com__Class * templateClass;
105 struct __ecereNameSpace__ecere__sys__OldList templatized;
106 int numParams;
107 } __attribute__ ((gcc_struct));
108
109 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__Instance;
110
111 struct __ecereNameSpace__ecere__com__Instance
112 {
113 int (* *  _vTbl)();
114 struct __ecereNameSpace__ecere__com__Class * _class;
115 int _refCount;
116 } __attribute__ ((gcc_struct));
117
118 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__Property;
119
120 struct __ecereNameSpace__ecere__com__Property
121 {
122 struct __ecereNameSpace__ecere__com__Property * prev;
123 struct __ecereNameSpace__ecere__com__Property * next;
124 char *  name;
125 unsigned int isProperty;
126 int memberAccess;
127 int id;
128 struct __ecereNameSpace__ecere__com__Class * _class;
129 char *  dataTypeString;
130 struct __ecereNameSpace__ecere__com__Class * dataTypeClass;
131 struct __ecereNameSpace__ecere__com__Instance * dataType;
132 void (*  Set)();
133 int (*  Get)();
134 unsigned int (*  IsSet)();
135 void *  data;
136 void *  symbol;
137 int vid;
138 unsigned int conversion;
139 unsigned int watcherOffset;
140 char *  category;
141 unsigned int compiled;
142 unsigned int selfWatchable;
143 unsigned int isWatchable;
144 } __attribute__ ((gcc_struct));
145
146 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__DataMember;
147
148 struct __ecereNameSpace__ecere__com__DataMember
149 {
150 struct __ecereNameSpace__ecere__com__DataMember * prev;
151 struct __ecereNameSpace__ecere__com__DataMember * next;
152 char *  name;
153 unsigned int isProperty;
154 int memberAccess;
155 int id;
156 struct __ecereNameSpace__ecere__com__Class * _class;
157 char *  dataTypeString;
158 struct __ecereNameSpace__ecere__com__Class * dataTypeClass;
159 struct __ecereNameSpace__ecere__com__Instance * dataType;
160 int type;
161 int offset;
162 int memberID;
163 struct __ecereNameSpace__ecere__sys__OldList members;
164 struct __ecereNameSpace__ecere__sys__BinaryTree membersAlpha;
165 int memberOffset;
166 int structAlignment;
167 } __attribute__ ((gcc_struct));
168
169 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__Method;
170
171 struct __ecereNameSpace__ecere__com__Method
172 {
173 char *  name;
174 struct __ecereNameSpace__ecere__com__Method * parent;
175 struct __ecereNameSpace__ecere__com__Method * left;
176 struct __ecereNameSpace__ecere__com__Method * right;
177 int depth;
178 int (*  function)();
179 int vid;
180 int type;
181 struct __ecereNameSpace__ecere__com__Class * _class;
182 void *  symbol;
183 char *  dataTypeString;
184 struct __ecereNameSpace__ecere__com__Instance * dataType;
185 int memberAccess;
186 } __attribute__ ((gcc_struct));
187
188 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__SerialBuffer;
189
190 struct __ecereNameSpace__ecere__com__SerialBuffer
191 {
192 unsigned char *  _buffer;
193 unsigned int count;
194 unsigned int _size;
195 unsigned int pos;
196 } __attribute__ ((gcc_struct));
197
198 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__DataValue;
199
200 struct __ecereNameSpace__ecere__com__DataValue
201 {
202 union
203 {
204 char c;
205 unsigned char uc;
206 short s;
207 unsigned short us;
208 int i;
209 unsigned int ui;
210 void *  p;
211 float f;
212 double d;
213 long long i64;
214 uint64 ui64;
215 } __attribute__ ((gcc_struct));
216 } __attribute__ ((gcc_struct));
217
218 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__ClassTemplateArgument;
219
220 struct __ecereNameSpace__ecere__com__ClassTemplateArgument
221 {
222 union
223 {
224 struct
225 {
226 char *  dataTypeString;
227 struct __ecereNameSpace__ecere__com__Class * dataTypeClass;
228 } __attribute__ ((gcc_struct));
229 struct __ecereNameSpace__ecere__com__DataValue expression;
230 struct
231 {
232 char *  memberString;
233 union
234 {
235 struct __ecereNameSpace__ecere__com__DataMember * member;
236 struct __ecereNameSpace__ecere__com__Property * prop;
237 struct __ecereNameSpace__ecere__com__Method * method;
238 } __attribute__ ((gcc_struct));
239 } __attribute__ ((gcc_struct));
240 } __attribute__ ((gcc_struct));
241 } __attribute__ ((gcc_struct));
242
243 static struct __ecereNameSpace__ecere__com__Instance * __ecereNameSpace__ecere__moduleMaps;
244
245 extern char *  __ecereNameSpace__ecere__sys__GetEnvironment(char *  envName, char *  envValue, int max);
246
247 extern char *  strcpy(char * , const char * );
248
249 extern char *  strstr(char * , const char * );
250
251 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__NameSpace;
252
253 struct __ecereNameSpace__ecere__com__NameSpace
254 {
255 char *  name;
256 struct __ecereNameSpace__ecere__com__NameSpace *  btParent;
257 struct __ecereNameSpace__ecere__com__NameSpace *  left;
258 struct __ecereNameSpace__ecere__com__NameSpace *  right;
259 int depth;
260 struct __ecereNameSpace__ecere__com__NameSpace *  parent;
261 struct __ecereNameSpace__ecere__sys__BinaryTree nameSpaces;
262 struct __ecereNameSpace__ecere__sys__BinaryTree classes;
263 struct __ecereNameSpace__ecere__sys__BinaryTree defines;
264 struct __ecereNameSpace__ecere__sys__BinaryTree functions;
265 } __attribute__ ((gcc_struct));
266
267 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__Module;
268
269 struct __ecereNameSpace__ecere__com__Module
270 {
271 struct __ecereNameSpace__ecere__com__Instance * application;
272 struct __ecereNameSpace__ecere__sys__OldList classes;
273 struct __ecereNameSpace__ecere__sys__OldList defines;
274 struct __ecereNameSpace__ecere__sys__OldList functions;
275 struct __ecereNameSpace__ecere__sys__OldList modules;
276 struct __ecereNameSpace__ecere__com__Instance * prev;
277 struct __ecereNameSpace__ecere__com__Instance * next;
278 char *  name;
279 void *  library;
280 void *  Unload;
281 int importType;
282 int origImportType;
283 struct __ecereNameSpace__ecere__com__NameSpace privateNameSpace;
284 struct __ecereNameSpace__ecere__com__NameSpace publicNameSpace;
285 } __attribute__ ((gcc_struct));
286
287 extern int sprintf(char * , char * , ...);
288
289 extern struct __ecereNameSpace__ecere__com__Instance * __ecereNameSpace__ecere__sys__FileOpen(char *  fileName, int mode);
290
291 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__IteratorPointer;
292
293 struct __ecereNameSpace__ecere__com__IteratorPointer;
294
295 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__MapIterator;
296
297 struct __ecereNameSpace__ecere__com__MapIterator
298 {
299 struct __ecereNameSpace__ecere__com__Instance * container;
300 struct __ecereNameSpace__ecere__com__IteratorPointer * pointer;
301 } __attribute__ ((gcc_struct));
302
303 extern int printf(char * , ...);
304
305 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__Map_TPL_String__ecere__com__Map_TPL_String__String___;
306
307 extern void *  __ecereNameSpace__ecere__com__eInstance_New(struct __ecereNameSpace__ecere__com__Class * _class);
308
309 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__Map_TPL_String__String_;
310
311 int __ecereVMethodID___ecereNameSpace__ecere__sys__File_Read;
312
313 struct __ecereNameSpace__ecere__com__Instance * __ecereProp___ecereNameSpace__ecere__com__MapIterator_Get_map(struct __ecereNameSpace__ecere__com__MapIterator * this);
314
315 void __ecereProp___ecereNameSpace__ecere__com__MapIterator_Set_map(struct __ecereNameSpace__ecere__com__MapIterator * this, struct __ecereNameSpace__ecere__com__Instance * value);
316
317 extern struct __ecereNameSpace__ecere__com__Property ** __ecereProp___ecereNameSpace__ecere__com__MapIterator_map;
318
319 unsigned int __ecereMethod___ecereNameSpace__ecere__com__Iterator_Index(struct __ecereNameSpace__ecere__com__Iterator * this, uint64 index, unsigned int create);
320
321 extern void __ecereNameSpace__ecere__com__eInstance_DecRef(struct __ecereNameSpace__ecere__com__Instance * instance);
322
323 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__Iterator;
324
325 struct __ecereNameSpace__ecere__com__Iterator
326 {
327 struct __ecereNameSpace__ecere__com__Instance * container;
328 struct __ecereNameSpace__ecere__com__IteratorPointer * pointer;
329 } __attribute__ ((gcc_struct));
330
331 uint64 __ecereProp___ecereNameSpace__ecere__com__Iterator_Get_data(struct __ecereNameSpace__ecere__com__Iterator * this);
332
333 void __ecereProp___ecereNameSpace__ecere__com__Iterator_Set_data(struct __ecereNameSpace__ecere__com__Iterator * this, uint64 value);
334
335 extern struct __ecereNameSpace__ecere__com__Property ** __ecereProp___ecereNameSpace__ecere__com__Iterator_data;
336
337 int __ecereVMethodID___ecereNameSpace__ecere__sys__File_Seek;
338
339 void __ecereNameSpace__ecere__LoadTranslatedStrings(struct __ecereNameSpace__ecere__com__Instance * module, char * name)
340 {
341 struct __ecereNameSpace__ecere__com__Instance * f;
342 char fileName[797];
343 char lcAll[256];
344 char language[256];
345 char lang[256];
346 char lcMessages[256];
347 char * locale = (((void *)0));
348
349 if(__ecereNameSpace__ecere__sys__GetEnvironment("LANGUAGE", language, sizeof language))
350 locale = language;
351 else if(__ecereNameSpace__ecere__sys__GetEnvironment("LC_ALL", lcAll, sizeof lcAll))
352 locale = lcAll;
353 else if(__ecereNameSpace__ecere__sys__GetEnvironment("LC_MESSAGES", lcMessages, sizeof lcMessages))
354 locale = lcMessages;
355 else if(__ecereNameSpace__ecere__sys__GetEnvironment("LANG", lang, sizeof lang))
356 locale = lang;
357 if(locale)
358 {
359 char * dot;
360
361 if(language != locale)
362 strcpy(language, locale);
363 dot = strstr(language, ".");
364 if(dot)
365 *dot = (char)0;
366 locale = language;
367 }
368 if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->name)
369 sprintf(fileName, "<:%s>locale/%s/LC_MESSAGES/%s.mo", ((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->name, locale, name);
370 else
371 sprintf(fileName, ":locale/%s/LC_MESSAGES/%s.mo", locale, name);
372 f = __ecereNameSpace__ecere__sys__FileOpen(fileName, 1);
373 if(!f)
374 {
375 sprintf(fileName, "locale/%s/LC_MESSAGES/%s.mo", locale, name);
376 f = __ecereNameSpace__ecere__sys__FileOpen(fileName, 1);
377 }
378 if(!f)
379 {
380 sprintf(fileName, "/usr/share/locale/%s/LC_MESSAGES/%s.mo", locale, name);
381 f = __ecereNameSpace__ecere__sys__FileOpen(fileName, 1);
382 }
383 if(f)
384 {
385 unsigned int magic = 0;
386
387 ((int (*)(struct __ecereNameSpace__ecere__com__Instance *, void *  buffer, unsigned int size, unsigned int count))f->_vTbl[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Read])(f, &magic, sizeof(unsigned int), 1);
388 if(magic == 0x950412de || magic == 0xde120495)
389 {
390 struct __ecereNameSpace__ecere__com__Instance * textMap;
391 unsigned int swap = magic != 0x950412de;
392 unsigned int revision = 0;
393 unsigned int numStrings = 0;
394 unsigned int origStrings = 0, transStrings = 0;
395 unsigned int hashingSize = 0, hashingOffset = 0;
396 int c;
397
398 ((int (*)(struct __ecereNameSpace__ecere__com__Instance *, void *  buffer, unsigned int size, unsigned int count))f->_vTbl[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Read])(f, &revision, sizeof(unsigned int), 1);
399 if(swap)
400 ((((revision) & 0x000000ff) << 24) | (((revision) & 0x0000ff00) << 8) | (((revision) & 0x00ff0000) >> 8) | (((revision) & 0xff000000) >> 24));
401 ((int (*)(struct __ecereNameSpace__ecere__com__Instance *, void *  buffer, unsigned int size, unsigned int count))f->_vTbl[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Read])(f, &numStrings, sizeof(unsigned int), 1);
402 if(swap)
403 ((((numStrings) & 0x000000ff) << 24) | (((numStrings) & 0x0000ff00) << 8) | (((numStrings) & 0x00ff0000) >> 8) | (((numStrings) & 0xff000000) >> 24));
404 ((int (*)(struct __ecereNameSpace__ecere__com__Instance *, void *  buffer, unsigned int size, unsigned int count))f->_vTbl[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Read])(f, &origStrings, sizeof(unsigned int), 1);
405 if(swap)
406 ((((origStrings) & 0x000000ff) << 24) | (((origStrings) & 0x0000ff00) << 8) | (((origStrings) & 0x00ff0000) >> 8) | (((origStrings) & 0xff000000) >> 24));
407 ((int (*)(struct __ecereNameSpace__ecere__com__Instance *, void *  buffer, unsigned int size, unsigned int count))f->_vTbl[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Read])(f, &transStrings, sizeof(unsigned int), 1);
408 if(swap)
409 ((((transStrings) & 0x000000ff) << 24) | (((transStrings) & 0x0000ff00) << 8) | (((transStrings) & 0x00ff0000) >> 8) | (((transStrings) & 0xff000000) >> 24));
410 ((int (*)(struct __ecereNameSpace__ecere__com__Instance *, void *  buffer, unsigned int size, unsigned int count))f->_vTbl[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Read])(f, &hashingSize, sizeof(unsigned int), 1);
411 if(swap)
412 ((((hashingSize) & 0x000000ff) << 24) | (((hashingSize) & 0x0000ff00) << 8) | (((hashingSize) & 0x00ff0000) >> 8) | (((hashingSize) & 0xff000000) >> 24));
413 ((int (*)(struct __ecereNameSpace__ecere__com__Instance *, void *  buffer, unsigned int size, unsigned int count))f->_vTbl[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Read])(f, &hashingOffset, sizeof(unsigned int), 1);
414 if(swap)
415 ((((hashingOffset) & 0x000000ff) << 24) | (((hashingOffset) & 0x0000ff00) << 8) | (((hashingOffset) & 0x00ff0000) >> 8) | (((hashingOffset) & 0xff000000) >> 24));
416 if(!__ecereNameSpace__ecere__moduleMaps)
417 __ecereNameSpace__ecere__moduleMaps = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass___ecereNameSpace__ecere__com__Map_TPL_String__ecere__com__Map_TPL_String__String___);
418 {
419 struct __ecereNameSpace__ecere__com__MapIterator it = (it.container = (void *)0, it.pointer = (void *)0, __ecereProp___ecereNameSpace__ecere__com__MapIterator_Set_map(&it, __ecereNameSpace__ecere__moduleMaps), it);
420
421 if(__ecereMethod___ecereNameSpace__ecere__com__Iterator_Index(&it, (uint64)(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->name), 0x0))
422 (__ecereNameSpace__ecere__com__eInstance_DecRef(__ecereProp___ecereNameSpace__ecere__com__Iterator_Get_data(&it)), __ecereProp___ecereNameSpace__ecere__com__Iterator_Set_data(&it, 0));
423 }
424 __extension__ ({
425 struct __ecereNameSpace__ecere__com__Iterator __internalIterator = 
426 {
427 __ecereNameSpace__ecere__moduleMaps, 0
428 };
429
430 __ecereMethod___ecereNameSpace__ecere__com__Iterator_Index(&__internalIterator, (uint64)(((uint64)(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->name))), 0x1);
431 __ecereProp___ecereNameSpace__ecere__com__Iterator_Set_data(&__internalIterator, textMap = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass___ecereNameSpace__ecere__com__Map_TPL_String__String_));
432 });
433 for(c = 0; c < numStrings; c++)
434 {
435 unsigned int len = 0, offset = 0;
436 char * original = (((void *)0)), * translated = (((void *)0));
437
438 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, int pos, int mode))f->_vTbl[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Seek])(f, origStrings + c * 2 * sizeof(unsigned int), 0);
439 ((int (*)(struct __ecereNameSpace__ecere__com__Instance *, void *  buffer, unsigned int size, unsigned int count))f->_vTbl[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Read])(f, &len, sizeof(unsigned int), 1);
440 if(swap)
441 ((((len) & 0x000000ff) << 24) | (((len) & 0x0000ff00) << 8) | (((len) & 0x00ff0000) >> 8) | (((len) & 0xff000000) >> 24));
442 ((int (*)(struct __ecereNameSpace__ecere__com__Instance *, void *  buffer, unsigned int size, unsigned int count))f->_vTbl[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Read])(f, &offset, sizeof(unsigned int), 1);
443 if(swap)
444 ((((offset) & 0x000000ff) << 24) | (((offset) & 0x0000ff00) << 8) | (((offset) & 0x00ff0000) >> 8) | (((offset) & 0xff000000) >> 24));
445 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, int pos, int mode))f->_vTbl[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Seek])(f, offset, 0);
446 original = __ecereNameSpace__ecere__com__eSystem_New(sizeof(unsigned char) * (len + 1));
447 ((int (*)(struct __ecereNameSpace__ecere__com__Instance *, void *  buffer, unsigned int size, unsigned int count))f->_vTbl[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Read])(f, original, 1, len + 1);
448 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, int pos, int mode))f->_vTbl[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Seek])(f, transStrings + c * 2 * sizeof(unsigned int), 0);
449 ((int (*)(struct __ecereNameSpace__ecere__com__Instance *, void *  buffer, unsigned int size, unsigned int count))f->_vTbl[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Read])(f, &len, sizeof(unsigned int), 1);
450 if(swap)
451 ((((len) & 0x000000ff) << 24) | (((len) & 0x0000ff00) << 8) | (((len) & 0x00ff0000) >> 8) | (((len) & 0xff000000) >> 24));
452 ((int (*)(struct __ecereNameSpace__ecere__com__Instance *, void *  buffer, unsigned int size, unsigned int count))f->_vTbl[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Read])(f, &offset, sizeof(unsigned int), 1);
453 if(swap)
454 ((((offset) & 0x000000ff) << 24) | (((offset) & 0x0000ff00) << 8) | (((offset) & 0x00ff0000) >> 8) | (((offset) & 0xff000000) >> 24));
455 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, int pos, int mode))f->_vTbl[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Seek])(f, offset, 0);
456 translated = __ecereNameSpace__ecere__com__eSystem_New(sizeof(unsigned char) * (len + 1));
457 ((int (*)(struct __ecereNameSpace__ecere__com__Instance *, void *  buffer, unsigned int size, unsigned int count))f->_vTbl[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Read])(f, translated, 1, len + 1);
458 if(len)
459 {
460 struct __ecereNameSpace__ecere__com__MapIterator it = (it.container = (void *)0, it.pointer = (void *)0, __ecereProp___ecereNameSpace__ecere__com__MapIterator_Set_map(&it, textMap), it);
461
462 if(__ecereMethod___ecereNameSpace__ecere__com__Iterator_Index(&it, (uint64)(original), 0x0))
463 (__ecereNameSpace__ecere__com__eSystem_Delete(translated), translated = 0);
464 else
465 __extension__ ({
466 struct __ecereNameSpace__ecere__com__Iterator __internalIterator = 
467 {
468 textMap, 0
469 };
470
471 __ecereMethod___ecereNameSpace__ecere__com__Iterator_Index(&__internalIterator, (uint64)(((uint64)(original))), 0x1);
472 __ecereProp___ecereNameSpace__ecere__com__Iterator_Set_data(&__internalIterator, translated);
473 });
474 }
475 else
476 (__ecereNameSpace__ecere__com__eSystem_Delete(translated), translated = 0);
477 (__ecereNameSpace__ecere__com__eSystem_Delete(original), original = 0);
478 }
479 }
480 else
481 {
482 printf("Invalid format while loading %s\n", fileName);
483 }
484 (__ecereNameSpace__ecere__com__eInstance_DecRef(f), f = 0);
485 }
486 }
487
488 int __ecereVMethodID___ecereNameSpace__ecere__com__Container_Free;
489
490 int __ecereVMethodID___ecereNameSpace__ecere__com__Container_Delete;
491
492 void __ecereNameSpace__ecere__UnloadTranslatedStrings(struct __ecereNameSpace__ecere__com__Instance * module)
493 {
494 struct __ecereNameSpace__ecere__com__MapIterator it = (it.container = (void *)0, it.pointer = (void *)0, __ecereProp___ecereNameSpace__ecere__com__MapIterator_Set_map(&it, __ecereNameSpace__ecere__moduleMaps), it);
495
496 if(__ecereMethod___ecereNameSpace__ecere__com__Iterator_Index(&it, (uint64)(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->name), 0x0))
497 {
498 ((void (*)(struct __ecereNameSpace__ecere__com__Instance *))((struct __ecereNameSpace__ecere__com__Instance *)__ecereProp___ecereNameSpace__ecere__com__Iterator_Get_data(&it))->_vTbl[__ecereVMethodID___ecereNameSpace__ecere__com__Container_Free])(((struct __ecereNameSpace__ecere__com__Instance *)__ecereProp___ecereNameSpace__ecere__com__Iterator_Get_data(&it)));
499 ((void (*)(struct __ecereNameSpace__ecere__com__Instance *, struct __ecereNameSpace__ecere__com__IteratorPointer * i))__ecereNameSpace__ecere__moduleMaps->_vTbl[__ecereVMethodID___ecereNameSpace__ecere__com__Container_Delete])(__ecereNameSpace__ecere__moduleMaps, it.pointer);
500 }
501 }
502
503 char * __ecereNameSpace__ecere__GetTranslatedString(struct __ecereNameSpace__ecere__com__Instance * module, char * string, char * stringAndContext)
504 {
505 struct __ecereNameSpace__ecere__com__Instance * textMap = __ecereNameSpace__ecere__moduleMaps ? (__extension__ ({
506 struct __ecereNameSpace__ecere__com__Iterator __internalIterator = 
507 {
508 __ecereNameSpace__ecere__moduleMaps, 0
509 };
510
511 __ecereMethod___ecereNameSpace__ecere__com__Iterator_Index(&__internalIterator, (uint64)(((uint64)(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->name))), 0x0);
512 ((struct __ecereNameSpace__ecere__com__Instance *)__ecereProp___ecereNameSpace__ecere__com__Iterator_Get_data(&__internalIterator));
513 })) : (((void *)0));
514 char * result = textMap ? (__extension__ ({
515 struct __ecereNameSpace__ecere__com__Iterator __internalIterator = 
516 {
517 textMap, 0
518 };
519
520 __ecereMethod___ecereNameSpace__ecere__com__Iterator_Index(&__internalIterator, (uint64)(((uint64)(stringAndContext ? stringAndContext : string))), 0x0);
521 ((char *)__ecereProp___ecereNameSpace__ecere__com__Iterator_Get_data(&__internalIterator));
522 })) : string;
523
524 return (result && result[0]) ? result : string;
525 }
526
527 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__GlobalFunction;
528
529 struct __ecereNameSpace__ecere__com__GlobalFunction;
530
531 extern struct __ecereNameSpace__ecere__com__GlobalFunction * __ecereNameSpace__ecere__com__eSystem_RegisterFunction(char *  name, char *  type, void *  func, struct __ecereNameSpace__ecere__com__Instance * module, int declMode);
532
533 void __ecereRegisterModule_i18n(struct __ecereNameSpace__ecere__com__Instance * module)
534 {
535 struct __ecereNameSpace__ecere__com__Class * class;
536
537 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::LoadTranslatedStrings", "void ecere::LoadTranslatedStrings(ecere::com::Module module, char * name)", __ecereNameSpace__ecere__LoadTranslatedStrings, module, 4);
538 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::UnloadTranslatedStrings", "void ecere::UnloadTranslatedStrings(ecere::com::Module module)", __ecereNameSpace__ecere__UnloadTranslatedStrings, module, 4);
539 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::GetTranslatedString", "char * ecere::GetTranslatedString(ecere::com::Module module, char * string, char * stringAndContext)", __ecereNameSpace__ecere__GetTranslatedString, module, 4);
540 }
541
542 void __ecereUnregisterModule_i18n(struct __ecereNameSpace__ecere__com__Instance * module)
543 {
544
545 }
546
547 void __ecereCreateModuleInstances_i18n()
548 {
549 __ecereNameSpace__ecere__moduleMaps = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass___ecereNameSpace__ecere__com__Map_TPL_String__ecere__com__Map_TPL_String__String___);
550 __ecereNameSpace__ecere__com__eInstance_IncRef(__ecereNameSpace__ecere__moduleMaps);
551 }
552
553 void __ecereDestroyModuleInstances_i18n()
554 {
555 (__ecereNameSpace__ecere__com__eInstance_DecRef(__ecereNameSpace__ecere__moduleMaps), __ecereNameSpace__ecere__moduleMaps = 0);
556 }
557