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