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