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