compiler/libec: Fixed keeping cast between long/int types
[sdk] / compiler / bootstrap / ecs / bootstrap / ecs.c
1 /* Code generated from eC source file: ecs.ec */
2 #if defined(_WIN32)
3 #define __runtimePlatform 1
4 #elif defined(__APPLE__)
5 #define __runtimePlatform 3
6 #else
7 #define __runtimePlatform 2
8 #endif
9 #if defined(__GNUC__)
10 typedef long long int64;
11 typedef unsigned long long uint64;
12 #ifndef _WIN32
13 #define __declspec(x)
14 #endif
15 #elif defined(__TINYC__)
16 #include <stdarg.h>
17 #define __builtin_va_list va_list
18 #define __builtin_va_start va_start
19 #define __builtin_va_end va_end
20 #ifdef _WIN32
21 #define strcasecmp stricmp
22 #define strncasecmp strnicmp
23 #define __declspec(x) __attribute__((x))
24 #else
25 #define __declspec(x)
26 #endif
27 typedef long long int64;
28 typedef unsigned long long uint64;
29 #else
30 typedef __int64 int64;
31 typedef unsigned __int64 uint64;
32 #endif
33 #ifdef __BIG_ENDIAN__
34 #define __ENDIAN_PAD(x) (8 - (x))
35 #else
36 #define __ENDIAN_PAD(x) 0
37 #endif
38 #include <stdint.h>
39 #include <sys/types.h>
40
41 static unsigned int i18n;
42
43 static unsigned int outputPot;
44
45 static unsigned int disabledPooling;
46
47 static int targetPlatform;
48
49 static int targetBits;
50
51 static unsigned int isConsole;
52
53 static unsigned int isDynamicLibrary;
54
55 static unsigned int isStaticLibrary;
56
57 static struct Context * theGlobalContext;
58
59 static char mainModuleName[797];
60
61 static char projectName[797];
62
63 extern struct __ecereNameSpace__ecere__com__Property * __ecereProp___ecereNameSpace__ecere__sys__BinaryTree_first;
64
65 extern struct __ecereNameSpace__ecere__com__Property * __ecereProp___ecereNameSpace__ecere__sys__BTNode_next;
66
67 extern struct __ecereNameSpace__ecere__com__Property * __ecereProp___ecereNameSpace__ecere__com__Platform_char__PTR_;
68
69 extern struct __ecereNameSpace__ecere__com__Property * __ecereProp___ecereNameSpace__ecere__com__MapIterator_map;
70
71 extern struct __ecereNameSpace__ecere__com__Property * __ecereProp___ecereNameSpace__ecere__com__Iterator_data;
72
73 extern struct __ecereNameSpace__ecere__com__Property * __ecereProp___ecereNameSpace__ecere__com__MapIterator_key;
74
75 struct __ecereNameSpace__ecere__sys__OldList
76 {
77 void *  first;
78 void *  last;
79 int count;
80 unsigned int offset;
81 unsigned int circ;
82 } __attribute__ ((gcc_struct));
83
84 struct __ecereNameSpace__ecere__com__DataValue
85 {
86 union
87 {
88 char c;
89 unsigned char uc;
90 short s;
91 unsigned short us;
92 int i;
93 unsigned int ui;
94 void *  p;
95 float f;
96 double d;
97 long long i64;
98 uint64 ui64;
99 } __attribute__ ((gcc_struct)) __anon1;
100 } __attribute__ ((gcc_struct));
101
102 struct __ecereNameSpace__ecere__com__SerialBuffer
103 {
104 unsigned char *  _buffer;
105 unsigned int count;
106 unsigned int _size;
107 unsigned int pos;
108 } __attribute__ ((gcc_struct));
109
110 extern void *  __ecereNameSpace__ecere__com__eSystem_New(unsigned int size);
111
112 extern void *  __ecereNameSpace__ecere__com__eSystem_New0(unsigned int size);
113
114 extern void *  __ecereNameSpace__ecere__com__eSystem_Renew(void *  memory, unsigned int size);
115
116 extern void *  __ecereNameSpace__ecere__com__eSystem_Renew0(void *  memory, unsigned int size);
117
118 extern void __ecereNameSpace__ecere__com__eSystem_Delete(void *  memory);
119
120 struct External;
121
122 struct CodePosition
123 {
124 int line;
125 int charPos;
126 int pos;
127 int included;
128 } __attribute__ ((gcc_struct));
129
130 struct Context;
131
132 struct Expression;
133
134 extern char *  __ecereNameSpace__ecere__sys__TrimLSpaces(const char *  string, char *  output);
135
136 extern int strcmp(const char * , const char * );
137
138 extern char *  __ecereNameSpace__ecere__sys__CopyString(const char *  string);
139
140 extern char *  __ecereNameSpace__ecere__sys__GetLastDirectory(const char *  string, char *  output);
141
142 extern unsigned int __ecereNameSpace__ecere__sys__StripExtension(char *  string);
143
144 extern char *  strcpy(char * , const char * );
145
146 extern void FixModuleName(char *  moduleName);
147
148 extern void FullClassNameCat(char *  output, const char *  className, unsigned int includeTemplateParams);
149
150 struct TemplateParameter;
151
152 extern int sprintf(char * , const char * , ...);
153
154 struct TypeName;
155
156 struct Declarator;
157
158 struct Identifier;
159
160 extern char *  strcat(char * , const char * );
161
162 extern int GetHostBits(void);
163
164 extern void SetSymbolsDir(const char *  s);
165
166 extern int printf(const char * , ...);
167
168 extern const char *  __ecereNameSpace__ecere__GetTranslatedString(const char * name, const char *  string, const char *  stringAndContext);
169
170 extern char *  __ecereNameSpace__ecere__sys__GetExtension(const char *  string, char *  output);
171
172 extern void SetTargetPlatform(int platform);
173
174 extern void SetTargetBits(int bits);
175
176 extern void SetInSymbolGen(unsigned int b);
177
178 struct __ecereNameSpace__ecere__com__IteratorPointer;
179
180 extern int __ecereNameSpace__ecere__sys__Tokenize(char *  string, int maxTokens, char *  tokens[], unsigned int esc);
181
182 extern int strcasecmp(const char * , const char * );
183
184 extern unsigned int LoadSymbols(const char *  fileName, int importType, unsigned int loadDllOnly);
185
186 extern void CheckDataRedefinitions(void);
187
188 extern char *  __ecereNameSpace__ecere__sys__ChangeExtension(const char *  string, const char *  ext, char *  output);
189
190 extern char *  strstr(const char * , const char * );
191
192 extern size_t strlen(const char * );
193
194 struct ContextStringPair
195 {
196 char * string;
197 char * context;
198 } __attribute__ ((gcc_struct));
199
200 struct __ecereNameSpace__ecere__com__CustomAVLTree
201 {
202 struct __ecereNameSpace__ecere__com__AVLNode * root;
203 int count;
204 } __attribute__ ((gcc_struct));
205
206 extern char *  __ecereNameSpace__ecere__sys__PathCat(char *  string, const char *  addedPath);
207
208 struct Definition;
209
210 extern void FreeIncludeFiles(void);
211
212 const char *  __ecereProp___ecereNameSpace__ecere__com__Platform_Get_char__PTR_(int this);
213
214 int __ecereProp___ecereNameSpace__ecere__com__Platform_Set_char__PTR_(const char *  value);
215
216 static struct __ecereNameSpace__ecere__sys__OldList modules;
217
218 struct __ecereNameSpace__ecere__sys__OldList _defines =
219 {
220 0, 0, 0, 0, 0
221 };
222
223 struct __ecereNameSpace__ecere__sys__OldList _imports =
224 {
225 0, 0, 0, 0, 0
226 };
227
228 extern struct __ecereNameSpace__ecere__sys__OldList *  MkList(void);
229
230 extern void SetDefines(struct __ecereNameSpace__ecere__sys__OldList *  list);
231
232 extern void SetImports(struct __ecereNameSpace__ecere__sys__OldList *  list);
233
234 extern void SetExcludedSymbols(struct __ecereNameSpace__ecere__sys__OldList *  list);
235
236 extern void FreeExcludedSymbols(struct __ecereNameSpace__ecere__sys__OldList * excludedSymbols);
237
238 unsigned int __ecereMethod___ecereNameSpace__ecere__sys__OldList_AddName(struct __ecereNameSpace__ecere__sys__OldList * this, void *  item);
239
240 void *  __ecereMethod___ecereNameSpace__ecere__sys__OldList_FindName(struct __ecereNameSpace__ecere__sys__OldList * this, const char *  name, unsigned int warn);
241
242 void __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add(struct __ecereNameSpace__ecere__sys__OldList * this, void *  item);
243
244 void __ecereMethod___ecereNameSpace__ecere__sys__OldList_Free(struct __ecereNameSpace__ecere__sys__OldList * this, void (*  freeFn)(void * ));
245
246 struct Location
247 {
248 struct CodePosition start;
249 struct CodePosition end;
250 } __attribute__ ((gcc_struct));
251
252 extern void FinishTemplatesContext(struct Context * context);
253
254 extern void SetGlobalContext(struct Context * context);
255
256 extern void SetTopContext(struct Context * context);
257
258 extern void SetCurrentContext(struct Context * context);
259
260 extern void FreeContext(struct Context * context);
261
262 extern struct Declarator * SpecDeclFromString(const char *  string, struct __ecereNameSpace__ecere__sys__OldList *  specs, struct Declarator * baseDecl);
263
264 extern struct TypeName * MkTypeName(struct __ecereNameSpace__ecere__sys__OldList * qualifiers, struct Declarator * declarator);
265
266 extern struct Declarator * MkDeclaratorIdentifier(struct Identifier * id);
267
268 extern struct Identifier * MkIdentifier(const char *  string);
269
270 extern void FreeModuleDefine(struct Definition * def);
271
272 struct ModuleImport;
273
274 static struct ModuleImport * mainModule;
275
276 extern struct ModuleImport * GetMainModule(void);
277
278 extern void SetMainModule(struct ModuleImport * moduleImport);
279
280 struct ModuleImport
281 {
282 struct ModuleImport * prev;
283 struct ModuleImport * next;
284 char *  name;
285 struct __ecereNameSpace__ecere__sys__OldList classes;
286 struct __ecereNameSpace__ecere__sys__OldList functions;
287 int importType;
288 int importAccess;
289 } __attribute__ ((gcc_struct));
290
291 extern void FreeModuleImport(struct ModuleImport * imp);
292
293 struct __ecereNameSpace__ecere__com__Class;
294
295 struct __ecereNameSpace__ecere__com__Instance
296 {
297 void * *  _vTbl;
298 struct __ecereNameSpace__ecere__com__Class * _class;
299 int _refCount;
300 } __attribute__ ((gcc_struct));
301
302 extern long long __ecereNameSpace__ecere__com__eClass_GetProperty(struct __ecereNameSpace__ecere__com__Class * _class, const char *  name);
303
304 extern void __ecereNameSpace__ecere__com__eClass_SetProperty(struct __ecereNameSpace__ecere__com__Class * _class, const char *  name, long long value);
305
306 static struct __ecereNameSpace__ecere__com__Class * thisAppClass;
307
308 extern struct Context * SetupTemplatesContext(struct __ecereNameSpace__ecere__com__Class * _class);
309
310 extern void *  __ecereNameSpace__ecere__com__eInstance_New(struct __ecereNameSpace__ecere__com__Class * _class);
311
312 extern void __ecereNameSpace__ecere__com__eInstance_SetMethod(struct __ecereNameSpace__ecere__com__Instance * instance, const char *  name, void *  function);
313
314 extern void __ecereNameSpace__ecere__com__eInstance_IncRef(struct __ecereNameSpace__ecere__com__Instance * instance);
315
316 static struct __ecereNameSpace__ecere__com__Instance * dcomSymbols;
317
318 extern struct __ecereNameSpace__ecere__com__Instance * __ecereNameSpace__ecere__sys__FileOpen(const char *  fileName, int mode);
319
320 extern void __ecereNameSpace__ecere__com__eInstance_Delete(struct __ecereNameSpace__ecere__com__Instance * instance);
321
322 extern void OutputTypeName(struct TypeName * type, struct __ecereNameSpace__ecere__com__Instance * f, unsigned int typeName);
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 struct __ecereNameSpace__ecere__com__Iterator
331 {
332 struct __ecereNameSpace__ecere__com__Instance * container;
333 struct __ecereNameSpace__ecere__com__IteratorPointer * pointer;
334 } __attribute__ ((gcc_struct));
335
336 unsigned int __ecereMethod___ecereNameSpace__ecere__sys__File_GetLine(struct __ecereNameSpace__ecere__com__Instance * this, char *  s, int max);
337
338 extern void __ecereNameSpace__ecere__com__eInstance_DecRef(struct __ecereNameSpace__ecere__com__Instance * instance);
339
340 int __ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts;
341
342 int __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(struct __ecereNameSpace__ecere__com__Instance * this, const char *  format, ...);
343
344 int __ecereVMethodID___ecereNameSpace__ecere__sys__File_Seek;
345
346 int __ecereVMethodID___ecereNameSpace__ecere__sys__File_Eof;
347
348 int __ecereVMethodID___ecereNameSpace__ecere__sys__File_Read;
349
350 int __ecereVMethodID___ecereNameSpace__ecere__sys__File_Write;
351
352 int __ecereVMethodID___ecereNameSpace__ecere__com__Container_Add;
353
354 int __ecereVMethodID___ecereNameSpace__ecere__com__Container_RemoveAll;
355
356 int __ecereVMethodID___ecereNameSpace__ecere__com__Container_Free;
357
358 struct __ecereNameSpace__ecere__com__Instance * __ecereProp___ecereNameSpace__ecere__com__MapIterator_Get_map(struct __ecereNameSpace__ecere__com__MapIterator * this);
359
360 void __ecereProp___ecereNameSpace__ecere__com__MapIterator_Set_map(struct __ecereNameSpace__ecere__com__MapIterator * this, struct __ecereNameSpace__ecere__com__Instance * value);
361
362 const uint64 __ecereProp___ecereNameSpace__ecere__com__MapIterator_Get_key(struct __ecereNameSpace__ecere__com__MapIterator * this);
363
364 unsigned int __ecereMethod___ecereNameSpace__ecere__com__Iterator_Index(struct __ecereNameSpace__ecere__com__Iterator * this, const uint64 index, unsigned int create);
365
366 uint64 __ecereProp___ecereNameSpace__ecere__com__Iterator_Get_data(struct __ecereNameSpace__ecere__com__Iterator * this);
367
368 void __ecereProp___ecereNameSpace__ecere__com__Iterator_Set_data(struct __ecereNameSpace__ecere__com__Iterator * this, uint64 value);
369
370 unsigned int __ecereMethod___ecereNameSpace__ecere__com__Iterator_Next();
371
372 struct ModuleInfo;
373
374 struct ModuleInfo
375 {
376 struct ModuleInfo * prev, * next;
377 char * name;
378 unsigned int globalInstance;
379 } __attribute__ ((gcc_struct));
380
381 struct __ecereNameSpace__ecere__sys__BTNode;
382
383 struct __ecereNameSpace__ecere__sys__BTNode
384 {
385 uintptr_t key;
386 struct __ecereNameSpace__ecere__sys__BTNode * parent;
387 struct __ecereNameSpace__ecere__sys__BTNode * left;
388 struct __ecereNameSpace__ecere__sys__BTNode * right;
389 int depth;
390 } __attribute__ ((gcc_struct));
391
392 struct __ecereNameSpace__ecere__sys__BTNode * __ecereProp___ecereNameSpace__ecere__sys__BTNode_Get_next(struct __ecereNameSpace__ecere__sys__BTNode * this);
393
394 struct __ecereNameSpace__ecere__com__Property;
395
396 extern void __ecereNameSpace__ecere__com__eInstance_FireSelfWatchers(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property);
397
398 extern void __ecereNameSpace__ecere__com__eInstance_StopWatching(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property, struct __ecereNameSpace__ecere__com__Instance * object);
399
400 extern void __ecereNameSpace__ecere__com__eInstance_Watch(void *  instance, struct __ecereNameSpace__ecere__com__Property * _property, void *  object, void (*  callback)(void * , void * ));
401
402 extern void __ecereNameSpace__ecere__com__eInstance_FireWatchers(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property);
403
404 struct FunctionImport;
405
406 struct FunctionImport
407 {
408 struct FunctionImport * prev;
409 struct FunctionImport * next;
410 char *  name;
411 } __attribute__ ((gcc_struct));
412
413 struct MethodImport;
414
415 struct MethodImport
416 {
417 struct MethodImport * prev;
418 struct MethodImport * next;
419 char *  name;
420 unsigned int isVirtual;
421 } __attribute__ ((gcc_struct));
422
423 struct PropertyImport;
424
425 struct PropertyImport
426 {
427 struct PropertyImport * prev;
428 struct PropertyImport * next;
429 char *  name;
430 unsigned int isVirtual;
431 unsigned int hasSet;
432 unsigned int hasGet;
433 } __attribute__ ((gcc_struct));
434
435 struct ImportedModule;
436
437 struct ImportedModule
438 {
439 struct ImportedModule * prev;
440 struct ImportedModule * next;
441 char *  name;
442 int type;
443 int importType;
444 unsigned int globalInstance;
445 unsigned int dllOnly;
446 int importAccess;
447 } __attribute__ ((gcc_struct));
448
449 struct Type;
450
451 struct __ecereNameSpace__ecere__com__Property
452 {
453 struct __ecereNameSpace__ecere__com__Property * prev;
454 struct __ecereNameSpace__ecere__com__Property * next;
455 const char *  name;
456 unsigned int isProperty;
457 int memberAccess;
458 int id;
459 struct __ecereNameSpace__ecere__com__Class * _class;
460 const char *  dataTypeString;
461 struct __ecereNameSpace__ecere__com__Class * dataTypeClass;
462 struct Type * dataType;
463 void (*  Set)(void * , int);
464 int (*  Get)(void * );
465 unsigned int (*  IsSet)(void * );
466 void *  data;
467 void *  symbol;
468 int vid;
469 unsigned int conversion;
470 unsigned int watcherOffset;
471 const char *  category;
472 unsigned int compiled;
473 unsigned int selfWatchable;
474 unsigned int isWatchable;
475 } __attribute__ ((gcc_struct));
476
477 extern struct Type * ProcessTypeString(const char *  string, unsigned int staticMethod);
478
479 extern void PrintTypeNoConst(struct Type * type, char *  string, unsigned int printName, unsigned int fullName);
480
481 extern void PrintType(struct Type * type, char *  string, unsigned int printName, unsigned int fullName);
482
483 struct __ecereNameSpace__ecere__com__BTNamedLink;
484
485 struct __ecereNameSpace__ecere__com__BTNamedLink
486 {
487 const char *  name;
488 struct __ecereNameSpace__ecere__com__BTNamedLink * parent;
489 struct __ecereNameSpace__ecere__com__BTNamedLink * left;
490 struct __ecereNameSpace__ecere__com__BTNamedLink * right;
491 int depth;
492 void *  data;
493 } __attribute__ ((gcc_struct));
494
495 struct __ecereNameSpace__ecere__sys__OldLink;
496
497 struct __ecereNameSpace__ecere__sys__OldLink
498 {
499 struct __ecereNameSpace__ecere__sys__OldLink * prev;
500 struct __ecereNameSpace__ecere__sys__OldLink * next;
501 void *  data;
502 } __attribute__ ((gcc_struct));
503
504 struct Symbol;
505
506 extern void DeclareClass(struct External * neededFor, struct Symbol * classSym, const char *  className);
507
508 extern struct Symbol * FindClass(const char *  name);
509
510 struct __ecereNameSpace__ecere__com__NameSpace;
511
512 extern void SetGlobalData(struct __ecereNameSpace__ecere__com__NameSpace *  nameSpace);
513
514 struct ClassImport;
515
516 struct ClassImport
517 {
518 struct ClassImport * prev;
519 struct ClassImport * next;
520 char *  name;
521 struct __ecereNameSpace__ecere__sys__OldList methods;
522 struct __ecereNameSpace__ecere__sys__OldList properties;
523 unsigned int itself;
524 int isRemote;
525 } __attribute__ ((gcc_struct));
526
527 struct __ecereNameSpace__ecere__com__Method;
528
529 struct __ecereNameSpace__ecere__com__Method
530 {
531 const char *  name;
532 struct __ecereNameSpace__ecere__com__Method * parent;
533 struct __ecereNameSpace__ecere__com__Method * left;
534 struct __ecereNameSpace__ecere__com__Method * right;
535 int depth;
536 int (*  function)();
537 int vid;
538 int type;
539 struct __ecereNameSpace__ecere__com__Class * _class;
540 void *  symbol;
541 const char *  dataTypeString;
542 struct Type * dataType;
543 int memberAccess;
544 } __attribute__ ((gcc_struct));
545
546 struct Symbol
547 {
548 char *  string;
549 struct Symbol * parent;
550 struct Symbol * left;
551 struct Symbol * right;
552 int depth;
553 struct Type * type;
554 union
555 {
556 struct __ecereNameSpace__ecere__com__Method * method;
557 struct __ecereNameSpace__ecere__com__Property * _property;
558 struct __ecereNameSpace__ecere__com__Class * registered;
559 } __attribute__ ((gcc_struct)) __anon1;
560 unsigned int notYetDeclared;
561 union
562 {
563 struct
564 {
565 struct External * pointerExternal;
566 struct External * structExternal;
567 } __attribute__ ((gcc_struct)) __anon1;
568 struct
569 {
570 struct External * externalGet;
571 struct External * externalSet;
572 struct External * externalPtr;
573 struct External * externalIsSet;
574 } __attribute__ ((gcc_struct)) __anon2;
575 struct
576 {
577 struct External * methodExternal;
578 struct External * methodCodeExternal;
579 } __attribute__ ((gcc_struct)) __anon3;
580 } __attribute__ ((gcc_struct)) __anon2;
581 unsigned int imported;
582 unsigned int declaredStructSym;
583 struct __ecereNameSpace__ecere__com__Class * _class;
584 unsigned int declaredStruct;
585 unsigned int needConstructor;
586 unsigned int needDestructor;
587 char *  constructorName;
588 char *  structName;
589 char *  className;
590 char *  destructorName;
591 struct ModuleImport * module;
592 struct ClassImport * _import;
593 struct Location nameLoc;
594 unsigned int isParam;
595 unsigned int isRemote;
596 unsigned int isStruct;
597 unsigned int fireWatchersDone;
598 int declaring;
599 unsigned int classData;
600 unsigned int isStatic;
601 char *  shortName;
602 struct __ecereNameSpace__ecere__sys__OldList *  templateParams;
603 struct __ecereNameSpace__ecere__sys__OldList templatedClasses;
604 struct Context * ctx;
605 int isIterator;
606 struct Expression * propCategory;
607 unsigned int mustRegister;
608 } __attribute__ ((gcc_struct));
609
610 struct Type
611 {
612 struct Type * prev;
613 struct Type * next;
614 int refCount;
615 union
616 {
617 struct Symbol * _class;
618 struct
619 {
620 struct __ecereNameSpace__ecere__sys__OldList members;
621 char *  enumName;
622 } __attribute__ ((gcc_struct)) __anon1;
623 struct
624 {
625 struct Type * returnType;
626 struct __ecereNameSpace__ecere__sys__OldList params;
627 struct Symbol * thisClass;
628 unsigned int staticMethod;
629 struct TemplateParameter * thisClassTemplate;
630 } __attribute__ ((gcc_struct)) __anon2;
631 struct
632 {
633 struct __ecereNameSpace__ecere__com__Method * method;
634 struct __ecereNameSpace__ecere__com__Class * methodClass;
635 struct __ecereNameSpace__ecere__com__Class * usedClass;
636 } __attribute__ ((gcc_struct)) __anon3;
637 struct
638 {
639 struct Type * arrayType;
640 int arraySize;
641 struct Expression * arraySizeExp;
642 unsigned int freeExp;
643 struct Symbol * enumClass;
644 } __attribute__ ((gcc_struct)) __anon4;
645 struct Type * type;
646 struct TemplateParameter * templateParameter;
647 } __attribute__ ((gcc_struct)) __anon1;
648 int kind;
649 unsigned int size;
650 char *  name;
651 char *  typeName;
652 struct __ecereNameSpace__ecere__com__Class * thisClassFrom;
653 int classObjectType;
654 int alignment;
655 unsigned int offset;
656 int bitFieldCount;
657 int count;
658 unsigned int isSigned : 1;
659 unsigned int constant : 1;
660 unsigned int truth : 1;
661 unsigned int byReference : 1;
662 unsigned int extraParam : 1;
663 unsigned int directClassAccess : 1;
664 unsigned int computing : 1;
665 unsigned int keepCast : 1;
666 unsigned int passAsTemplate : 1;
667 unsigned int dllExport : 1;
668 unsigned int attrStdcall : 1;
669 unsigned int declaredWithStruct : 1;
670 unsigned int typedByReference : 1;
671 unsigned int casted : 1;
672 unsigned int pointerAlignment : 1;
673 unsigned int isLong : 1;
674 } __attribute__ ((gcc_struct));
675
676 extern void DeclareMethod(struct External * neededFor, struct __ecereNameSpace__ecere__com__Method * method, const char *  name);
677
678 extern struct __ecereNameSpace__ecere__com__Method * __ecereNameSpace__ecere__com__eClass_AddMethod(struct __ecereNameSpace__ecere__com__Class * _class, const char *  name, const char *  type, void *  function, int declMode);
679
680 struct __ecereNameSpace__ecere__sys__OldList _excludedSymbols =
681 {
682 0, 0, 0, (unsigned int)(uintptr_t)&((struct Symbol *)(void * )0)->left, 0
683 };
684
685 struct __ecereNameSpace__ecere__com__Module;
686
687 static struct __ecereNameSpace__ecere__com__Instance * privateModule;
688
689 extern struct __ecereNameSpace__ecere__com__Class * __ecereNameSpace__ecere__com__eSystem_FindClass(struct __ecereNameSpace__ecere__com__Instance * module, const char *  name);
690
691 extern struct __ecereNameSpace__ecere__com__Method * __ecereNameSpace__ecere__com__eClass_FindMethod(struct __ecereNameSpace__ecere__com__Class * _class, const char *  name, struct __ecereNameSpace__ecere__com__Instance * module);
692
693 extern void SetPrivateModule(struct __ecereNameSpace__ecere__com__Instance * module);
694
695 extern void ComputeModuleClasses(struct __ecereNameSpace__ecere__com__Instance * module);
696
697 extern void FreeTypeData(struct __ecereNameSpace__ecere__com__Instance * privateModule);
698
699 extern struct __ecereNameSpace__ecere__com__Class * __ecereNameSpace__ecere__com__eSystem_RegisterClass(int type, const char *  name, const char *  baseName, int size, int sizeClass, unsigned int (*  Constructor)(void * ), void (*  Destructor)(void * ), struct __ecereNameSpace__ecere__com__Instance * module, int declMode, int inheritanceAccess);
700
701 extern struct __ecereNameSpace__ecere__com__Instance * __thisModule;
702
703 struct __ecereNameSpace__ecere__com__Application;
704
705 extern struct __ecereNameSpace__ecere__com__Instance * __ecereNameSpace__ecere__com____ecere_COM_Initialize(unsigned int guiApp, int argc, char *  argv[]);
706
707 struct __ecereNameSpace__ecere__sys__BinaryTree;
708
709 struct __ecereNameSpace__ecere__sys__BinaryTree
710 {
711 struct __ecereNameSpace__ecere__sys__BTNode * root;
712 int count;
713 int (*  CompareKey)(struct __ecereNameSpace__ecere__sys__BinaryTree * tree, uintptr_t a, uintptr_t b);
714 void (*  FreeKey)(void *  key);
715 } __attribute__ ((gcc_struct));
716
717 struct __ecereNameSpace__ecere__com__NameSpace
718 {
719 const char *  name;
720 struct __ecereNameSpace__ecere__com__NameSpace *  btParent;
721 struct __ecereNameSpace__ecere__com__NameSpace *  left;
722 struct __ecereNameSpace__ecere__com__NameSpace *  right;
723 int depth;
724 struct __ecereNameSpace__ecere__com__NameSpace *  parent;
725 struct __ecereNameSpace__ecere__sys__BinaryTree nameSpaces;
726 struct __ecereNameSpace__ecere__sys__BinaryTree classes;
727 struct __ecereNameSpace__ecere__sys__BinaryTree defines;
728 struct __ecereNameSpace__ecere__sys__BinaryTree functions;
729 } __attribute__ ((gcc_struct));
730
731 struct __ecereNameSpace__ecere__sys__BTNode * __ecereProp___ecereNameSpace__ecere__sys__BinaryTree_Get_first(struct __ecereNameSpace__ecere__sys__BinaryTree * this);
732
733 int __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_CompareString(struct __ecereNameSpace__ecere__sys__BinaryTree * this, const char *  a, const char *  b);
734
735 struct __ecereNameSpace__ecere__com__Application
736 {
737 int argc;
738 const char * *  argv;
739 int exitCode;
740 unsigned int isGUIApp;
741 struct __ecereNameSpace__ecere__sys__OldList allModules;
742 char *  parsedCommand;
743 struct __ecereNameSpace__ecere__com__NameSpace systemNameSpace;
744 } __attribute__ ((gcc_struct));
745
746 struct __ecereNameSpace__ecere__com__Module
747 {
748 struct __ecereNameSpace__ecere__com__Instance * application;
749 struct __ecereNameSpace__ecere__sys__OldList classes;
750 struct __ecereNameSpace__ecere__sys__OldList defines;
751 struct __ecereNameSpace__ecere__sys__OldList functions;
752 struct __ecereNameSpace__ecere__sys__OldList modules;
753 struct __ecereNameSpace__ecere__com__Instance * prev;
754 struct __ecereNameSpace__ecere__com__Instance * next;
755 const char *  name;
756 void *  library;
757 void *  Unload;
758 int importType;
759 int origImportType;
760 struct __ecereNameSpace__ecere__com__NameSpace privateNameSpace;
761 struct __ecereNameSpace__ecere__com__NameSpace publicNameSpace;
762 } __attribute__ ((gcc_struct));
763
764 static struct __ecereNameSpace__ecere__com__NameSpace globalData;
765
766 extern void FreeGlobalData(struct __ecereNameSpace__ecere__com__NameSpace * globalDataList);
767
768 void __ecereUnregisterModule_ecs(struct __ecereNameSpace__ecere__com__Instance * module)
769 {
770
771 }
772
773 struct __ecereNameSpace__ecere__com__DataMember;
774
775 struct __ecereNameSpace__ecere__com__ClassTemplateArgument
776 {
777 union
778 {
779 struct
780 {
781 const char *  dataTypeString;
782 struct __ecereNameSpace__ecere__com__Class * dataTypeClass;
783 } __attribute__ ((gcc_struct)) __anon1;
784 struct __ecereNameSpace__ecere__com__DataValue expression;
785 struct
786 {
787 const char *  memberString;
788 union
789 {
790 struct __ecereNameSpace__ecere__com__DataMember * member;
791 struct __ecereNameSpace__ecere__com__Property * prop;
792 struct __ecereNameSpace__ecere__com__Method * method;
793 } __attribute__ ((gcc_struct)) __anon1;
794 } __attribute__ ((gcc_struct)) __anon2;
795 } __attribute__ ((gcc_struct)) __anon1;
796 } __attribute__ ((gcc_struct));
797
798 struct __ecereNameSpace__ecere__com__DataMember
799 {
800 struct __ecereNameSpace__ecere__com__DataMember * prev;
801 struct __ecereNameSpace__ecere__com__DataMember * next;
802 const char *  name;
803 unsigned int isProperty;
804 int memberAccess;
805 int id;
806 struct __ecereNameSpace__ecere__com__Class * _class;
807 const char *  dataTypeString;
808 struct __ecereNameSpace__ecere__com__Class * dataTypeClass;
809 struct Type * dataType;
810 int type;
811 int offset;
812 int memberID;
813 struct __ecereNameSpace__ecere__sys__OldList members;
814 struct __ecereNameSpace__ecere__sys__BinaryTree membersAlpha;
815 int memberOffset;
816 short structAlignment;
817 short pointerAlignment;
818 } __attribute__ ((gcc_struct));
819
820 struct __ecereNameSpace__ecere__com__Class
821 {
822 struct __ecereNameSpace__ecere__com__Class * prev;
823 struct __ecereNameSpace__ecere__com__Class * next;
824 const char *  name;
825 int offset;
826 int structSize;
827 void * *  _vTbl;
828 int vTblSize;
829 unsigned int (*  Constructor)(void * );
830 void (*  Destructor)(void * );
831 int offsetClass;
832 int sizeClass;
833 struct __ecereNameSpace__ecere__com__Class * base;
834 struct __ecereNameSpace__ecere__sys__BinaryTree methods;
835 struct __ecereNameSpace__ecere__sys__BinaryTree members;
836 struct __ecereNameSpace__ecere__sys__BinaryTree prop;
837 struct __ecereNameSpace__ecere__sys__OldList membersAndProperties;
838 struct __ecereNameSpace__ecere__sys__BinaryTree classProperties;
839 struct __ecereNameSpace__ecere__sys__OldList derivatives;
840 int memberID;
841 int startMemberID;
842 int type;
843 struct __ecereNameSpace__ecere__com__Instance * module;
844 struct __ecereNameSpace__ecere__com__NameSpace *  nameSpace;
845 const char *  dataTypeString;
846 struct Type * dataType;
847 int typeSize;
848 int defaultAlignment;
849 void (*  Initialize)();
850 int memberOffset;
851 struct __ecereNameSpace__ecere__sys__OldList selfWatchers;
852 const char *  designerClass;
853 unsigned int noExpansion;
854 const char *  defaultProperty;
855 unsigned int comRedefinition;
856 int count;
857 int isRemote;
858 unsigned int internalDecl;
859 void *  data;
860 unsigned int computeSize;
861 short structAlignment;
862 short pointerAlignment;
863 int destructionWatchOffset;
864 unsigned int fixed;
865 struct __ecereNameSpace__ecere__sys__OldList delayedCPValues;
866 int inheritanceAccess;
867 const char *  fullName;
868 void *  symbol;
869 struct __ecereNameSpace__ecere__sys__OldList conversions;
870 struct __ecereNameSpace__ecere__sys__OldList templateParams;
871 struct __ecereNameSpace__ecere__com__ClassTemplateArgument *  templateArgs;
872 struct __ecereNameSpace__ecere__com__Class * templateClass;
873 struct __ecereNameSpace__ecere__sys__OldList templatized;
874 int numParams;
875 unsigned int isInstanceClass;
876 unsigned int byValueSystemClass;
877 } __attribute__ ((gcc_struct));
878
879 static struct __ecereNameSpace__ecere__com__Class * __ecereClass_ModuleInfo;
880
881 static struct __ecereNameSpace__ecere__com__Class * __ecereClass_SymbolgenApp;
882
883 static struct __ecereNameSpace__ecere__com__Class * FindAppClass(struct __ecereNameSpace__ecere__com__NameSpace * nameSpace, unsigned int thisModule)
884 {
885 struct __ecereNameSpace__ecere__com__BTNamedLink * link;
886 struct __ecereNameSpace__ecere__com__NameSpace * ns;
887
888 for(link = (struct __ecereNameSpace__ecere__com__BTNamedLink *)__ecereProp___ecereNameSpace__ecere__sys__BinaryTree_Get_first(&(*nameSpace).classes); link; link = (struct __ecereNameSpace__ecere__com__BTNamedLink *)__ecereProp___ecereNameSpace__ecere__sys__BTNode_Get_next(((struct __ecereNameSpace__ecere__sys__BTNode *)link)))
889 {
890 struct __ecereNameSpace__ecere__com__Class * _class = link->data;
891
892 if(strcmp(_class->fullName, "ecere::com::Application") && (!thisModule || _class->module == privateModule))
893 {
894 struct __ecereNameSpace__ecere__com__Class * base;
895
896 for(base = _class->base; base && base->type != 1000; base = base->base)
897 if(!strcmp(base->fullName, "ecere::com::Application"))
898 return _class;
899 }
900 }
901 for(ns = (struct __ecereNameSpace__ecere__com__NameSpace *)__ecereProp___ecereNameSpace__ecere__sys__BinaryTree_Get_first(&(*nameSpace).nameSpaces); ns; ns = (struct __ecereNameSpace__ecere__com__NameSpace *)__ecereProp___ecereNameSpace__ecere__sys__BTNode_Get_next(((struct __ecereNameSpace__ecere__sys__BTNode *)ns)))
902 {
903 struct __ecereNameSpace__ecere__com__Class * _class = FindAppClass(ns, thisModule);
904
905 if(_class)
906 return _class;
907 }
908 return (((void *)0));
909 }
910
911 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_ModuleImport;
912
913 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_MethodImport;
914
915 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_PropertyImport;
916
917 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_ClassImport;
918
919 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_FunctionImport;
920
921 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__sys__TempFile;
922
923 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__Map_TPL_ContextStringPair__ecere__com__List_TPL_String___;
924
925 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_ImportedModule;
926
927 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__List_TPL_String_;
928
929 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Context;
930
931 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__sys__File;
932
933 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__Module;
934
935 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__Application;
936
937 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__List;
938
939 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__CustomAVLTree;
940
941 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__Map;
942
943 static void LoadImports(const char * fileName)
944 {
945 struct __ecereNameSpace__ecere__com__Instance * f = __ecereNameSpace__ecere__sys__FileOpen(fileName, 1);
946
947 if(f)
948 {
949 for(; ; )
950 {
951 char line[1024];
952
953 if(!__ecereMethod___ecereNameSpace__ecere__sys__File_GetLine(f, line, sizeof (line)))
954 break;
955 __ecereNameSpace__ecere__sys__TrimLSpaces(line, line);
956 if(line[0] == '[')
957 {
958 if(!strcmp(line, "[Imported Modules]"))
959 {
960 struct ModuleImport * module = (((void *)0));
961
962 for(; ; )
963 {
964 if(!__ecereMethod___ecereNameSpace__ecere__sys__File_GetLine(f, line, sizeof (line)))
965 break;
966 __ecereNameSpace__ecere__sys__TrimLSpaces(line, line);
967 if(!strcmp(line, "."))
968 break;
969 if(line[0] == '[')
970 {
971 struct ClassImport * _class = (((void *)0));
972 struct FunctionImport * function = (((void *)0));
973
974 if(!strcmp(line, "[This]"))
975 {
976 if((mainModule = GetMainModule()))
977 module = mainModule;
978 else
979 {
980 mainModule = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_ModuleImport);
981 SetMainModule(mainModule);
982 module = mainModule;
983 __ecereMethod___ecereNameSpace__ecere__sys__OldList_AddName(&_imports, module);
984 }
985 }
986 else if(!strcmp(line, "[Static]"))
987 {
988 module->importType = 1;
989 }
990 else if(!strcmp(line, "[Remote]"))
991 {
992 module->importType = 2;
993 }
994 else if(!strcmp(line, "[Private]"))
995 {
996 if(module->importAccess != 1)
997 module->importAccess = 2;
998 }
999 else if(!strcmp(line, "[Public]"))
1000 {
1001 module->importAccess = 1;
1002 }
1003 else if(!strcmp(line, "[Imported Classes]"))
1004 {
1005 for(; ; )
1006 {
1007 if(!__ecereMethod___ecereNameSpace__ecere__sys__File_GetLine(f, line, sizeof (line)))
1008 break;
1009 __ecereNameSpace__ecere__sys__TrimLSpaces(line, line);
1010 if(!strcmp(line, "."))
1011 break;
1012 if(line[0] == '[')
1013 {
1014 if(!strcmp(line, "[Instantiated]"))
1015 {
1016 _class->itself = 1;
1017 }
1018 else if(!strcmp(line, "[Remote]"))
1019 {
1020 _class->isRemote = 1;
1021 }
1022 else if(!strcmp(line, "[Imported Methods]"))
1023 {
1024 struct MethodImport * method = (((void *)0));
1025
1026 for(; ; )
1027 {
1028 if(!__ecereMethod___ecereNameSpace__ecere__sys__File_GetLine(f, line, sizeof (line)))
1029 break;
1030 __ecereNameSpace__ecere__sys__TrimLSpaces(line, line);
1031 if(!strcmp(line, "."))
1032 break;
1033 if(line[0] != '[')
1034 {
1035 if(!(method = __ecereMethod___ecereNameSpace__ecere__sys__OldList_FindName(&_class->methods, line, 0)))
1036 {
1037 method = __extension__ ({
1038 struct MethodImport * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_MethodImport);
1039
1040 __ecereInstance1->name = __ecereNameSpace__ecere__sys__CopyString(line), __ecereInstance1;
1041 });
1042 __ecereMethod___ecereNameSpace__ecere__sys__OldList_AddName(&_class->methods, method);
1043 }
1044 }
1045 else if(!strcmp(line, "[Virtual]"))
1046 method->isVirtual = 1;
1047 }
1048 }
1049 else if(!strcmp(line, "[Imported Properties]"))
1050 {
1051 struct PropertyImport * prop = (((void *)0));
1052
1053 for(; ; )
1054 {
1055 if(!__ecereMethod___ecereNameSpace__ecere__sys__File_GetLine(f, line, sizeof (line)))
1056 break;
1057 __ecereNameSpace__ecere__sys__TrimLSpaces(line, line);
1058 if(!strcmp(line, "."))
1059 break;
1060 if(line[0] != '[')
1061 {
1062 if(!(prop = __ecereMethod___ecereNameSpace__ecere__sys__OldList_FindName(&_class->properties, line, 0)))
1063 {
1064 prop = __extension__ ({
1065 struct PropertyImport * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_PropertyImport);
1066
1067 __ecereInstance1->name = __ecereNameSpace__ecere__sys__CopyString(line), __ecereInstance1;
1068 });
1069 __ecereMethod___ecereNameSpace__ecere__sys__OldList_AddName(&_class->properties, prop);
1070 }
1071 }
1072 else if(!strcmp(line, "[Set]"))
1073 prop->hasSet = 1;
1074 else if(!strcmp(line, "[Get]"))
1075 prop->hasGet = 1;
1076 else if(!strcmp(line, "[Virtual]"))
1077 prop->isVirtual = 1;
1078 }
1079 }
1080 }
1081 else
1082 {
1083 if(!(_class = __ecereMethod___ecereNameSpace__ecere__sys__OldList_FindName(&module->classes, line, 0)))
1084 {
1085 _class = __extension__ ({
1086 struct ClassImport * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_ClassImport);
1087
1088 __ecereInstance1->name = __ecereNameSpace__ecere__sys__CopyString(line), __ecereInstance1;
1089 });
1090 __ecereMethod___ecereNameSpace__ecere__sys__OldList_AddName(&module->classes, _class);
1091 }
1092 }
1093 }
1094 }
1095 else if(!strcmp(line, "[Imported Functions]"))
1096 {
1097 for(; ; )
1098 {
1099 if(!__ecereMethod___ecereNameSpace__ecere__sys__File_GetLine(f, line, sizeof (line)))
1100 break;
1101 __ecereNameSpace__ecere__sys__TrimLSpaces(line, line);
1102 if(!strcmp(line, "."))
1103 break;
1104 if(line[0] == '[')
1105 {
1106 }
1107 else
1108 {
1109 if(!(function = __ecereMethod___ecereNameSpace__ecere__sys__OldList_FindName(&module->functions, line, 0)))
1110 {
1111 function = __extension__ ({
1112 struct FunctionImport * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_FunctionImport);
1113
1114 __ecereInstance1->name = __ecereNameSpace__ecere__sys__CopyString(line), __ecereInstance1;
1115 });
1116 __ecereMethod___ecereNameSpace__ecere__sys__OldList_AddName(&module->functions, function);
1117 }
1118 }
1119 }
1120 }
1121 }
1122 else
1123 {
1124 if(!(module = __ecereMethod___ecereNameSpace__ecere__sys__OldList_FindName(&_imports, line, 0)))
1125 {
1126 if(!strcmp(line, "ecereCOM"))
1127 {
1128 module = __ecereMethod___ecereNameSpace__ecere__sys__OldList_FindName(&_imports, "ecere", 0);
1129 }
1130 else if(!strcmp(line, "ecere"))
1131 {
1132 module = __ecereMethod___ecereNameSpace__ecere__sys__OldList_FindName(&_imports, "ecereCOM", 0);
1133 if(module)
1134 {
1135 (__ecereNameSpace__ecere__com__eSystem_Delete(module->name), module->name = 0);
1136 module->name = __ecereNameSpace__ecere__sys__CopyString("ecere");
1137 }
1138 }
1139 if(!module)
1140 {
1141 module = __extension__ ({
1142 struct ModuleImport * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_ModuleImport);
1143
1144 __ecereInstance1->name = __ecereNameSpace__ecere__sys__CopyString(line), __ecereInstance1;
1145 });
1146 __ecereMethod___ecereNameSpace__ecere__sys__OldList_AddName(&_imports, module);
1147 }
1148 }
1149 }
1150 }
1151 }
1152 }
1153 }
1154 (__ecereNameSpace__ecere__com__eInstance_DecRef(f), f = 0);
1155 }
1156 }
1157
1158 void __ecereCreateModuleInstances_ecs()
1159 {
1160 (globalData.classes.CompareKey = (void *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_CompareString, globalData.defines.CompareKey = (void *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_CompareString, globalData.functions.CompareKey = (void *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_CompareString, globalData.nameSpaces.CompareKey = (void *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_CompareString);
1161 theGlobalContext = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Context);
1162 }
1163
1164 void __ecereDestroyModuleInstances_ecs()
1165 {
1166 ((theGlobalContext ? (__ecereClass_Context->Destructor ? __ecereClass_Context->Destructor((void *)theGlobalContext) : 0, __ecereNameSpace__ecere__com__eSystem_Delete(theGlobalContext)) : 0), theGlobalContext = 0);
1167 }
1168
1169 static void BindDCOMClient()
1170 {
1171 struct __ecereNameSpace__ecere__com__Class * dcomClientObjectClass = __ecereNameSpace__ecere__com__eSystem_FindClass(privateModule, "ecere::net::DCOMClientObject");
1172 struct __ecereNameSpace__ecere__sys__OldLink * deriv;
1173
1174 if(dcomClientObjectClass && dcomClientObjectClass->derivatives.first)
1175 {
1176 struct __ecereNameSpace__ecere__com__Instance * f;
1177
1178 if(!dcomSymbols)
1179 dcomSymbols = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass___ecereNameSpace__ecere__sys__TempFile);
1180 f = dcomSymbols;
1181 for(deriv = dcomClientObjectClass->derivatives.first; deriv; deriv = deriv->next)
1182 {
1183 struct __ecereNameSpace__ecere__com__Class * _class = deriv->data;
1184 struct __ecereNameSpace__ecere__com__Method * method, * next;
1185 int id = 0;
1186 int vid;
1187 unsigned int doVirtual;
1188
1189 DeclareClass((((void *)0)), FindClass("ecere::net::DCOMClientObject"), "__ecereClass___ecereNameSpace__ecere__net__DCOMClientObject");
1190 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "class %s : ecere::net::DCOMClientObject\n", _class->fullName);
1191 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "{\n");
1192 if(_class->vTblSize > _class->base->vTblSize)
1193 {
1194 int vid;
1195
1196 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "   virtual void CallVirtualMethod(uint __ecereMethodID, SerialBuffer __ecereBuffer)\n");
1197 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "   {\n");
1198 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "      switch(__ecereMethodID)\n");
1199 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "      {\n");
1200 for(vid = _class->base->vTblSize; vid < _class->vTblSize; vid++)
1201 {
1202 struct __ecereNameSpace__ecere__com__Method * method;
1203
1204 for(method = (struct __ecereNameSpace__ecere__com__Method *)__ecereProp___ecereNameSpace__ecere__sys__BinaryTree_Get_first(&_class->methods); method; method = (struct __ecereNameSpace__ecere__com__Method *)__ecereProp___ecereNameSpace__ecere__sys__BTNode_Get_next(((struct __ecereNameSpace__ecere__sys__BTNode *)method)))
1205 {
1206 if(method->type == 1 && method->_class == _class && method->vid == vid)
1207 break;
1208 }
1209 if(method)
1210 {
1211 struct Type * param;
1212
1213 method->dataType = ProcessTypeString(method->dataTypeString, 0);
1214 if(method->dataType && method->dataType->name)
1215 {
1216 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "         case %d:\n", vid - _class->base->vTblSize);
1217 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "         {\n");
1218 {
1219 if(method->dataType->__anon1.__anon2.returnType->kind != 0)
1220 {
1221 struct TypeName * resultType;
1222 struct __ecereNameSpace__ecere__sys__OldList * specs = MkList();
1223 struct Declarator * decl;
1224 char type[1024] = "";
1225 char className[1024];
1226 struct Symbol * classSym;
1227
1228 if(method->dataType->__anon1.__anon2.returnType->kind == 8)
1229 classSym = method->dataType->__anon1.__anon2.returnType->__anon1._class;
1230 else
1231 {
1232 PrintTypeNoConst(method->dataType->__anon1.__anon2.returnType, type, 0, 1);
1233 classSym = FindClass(type);
1234 type[0] = (char)0;
1235 }
1236 strcpy(className, "__ecereClass_");
1237 FullClassNameCat(className, classSym->string, 1);
1238 DeclareClass((((void *)0)), classSym, className);
1239 PrintType(method->dataType->__anon1.__anon2.returnType, type, 1, 1);
1240 decl = SpecDeclFromString(type, specs, MkDeclaratorIdentifier(MkIdentifier("__ecereResult")));
1241 resultType = MkTypeName(specs, decl);
1242 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "            ");
1243 OutputTypeName(resultType, f, 0);
1244 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, ";\n");
1245 }
1246 for(param = method->dataType->__anon1.__anon2.params.first; param; param = param->next)
1247 {
1248 if(param->kind == 8 && !strcmp(param->__anon1._class->string, "String"))
1249 {
1250 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "            char %s[1024];\n", param->name);
1251 DeclareClass((((void *)0)), FindClass("StaticString"), "__ecereClass_StaticString");
1252 DeclareClass((((void *)0)), FindClass("String"), "__ecereClass_String");
1253 }
1254 else
1255 {
1256 struct TypeName * paramTypeName;
1257 struct __ecereNameSpace__ecere__sys__OldList * specs = MkList();
1258 struct Declarator * decl;
1259 char type[1024] = "";
1260 char className[1024];
1261 struct Symbol * classSym;
1262
1263 if(param->kind == 8)
1264 classSym = param->__anon1._class;
1265 else
1266 {
1267 PrintTypeNoConst(param, type, 0, 1);
1268 classSym = FindClass(type);
1269 type[0] = (char)0;
1270 }
1271 strcpy(className, "__ecereClass_");
1272 FullClassNameCat(className, classSym->string, 1);
1273 DeclareClass((((void *)0)), classSym, className);
1274 PrintType(param, type, 1, 1);
1275 decl = SpecDeclFromString(type, specs, MkDeclaratorIdentifier(MkIdentifier(param->name)));
1276 paramTypeName = MkTypeName(specs, decl);
1277 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "            ");
1278 OutputTypeName(paramTypeName, f, 0);
1279 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, ";\n");
1280 }
1281 }
1282 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "\n");
1283 for(param = method->dataType->__anon1.__anon2.params.first; param; param = param->next)
1284 {
1285 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "            __ecereBuffer.Unserialize(");
1286 if(param->kind == 8 && !strcmp(param->__anon1._class->string, "String"))
1287 {
1288 DeclareClass((((void *)0)), FindClass("StaticString"), "__ecereClass_StaticString");
1289 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "(StaticString)");
1290 }
1291 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
1292 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
1293
1294 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
1295 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, param->name);
1296 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, ");\n");
1297 }
1298 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "            ");
1299 if(method->dataType->__anon1.__anon2.returnType->kind != 0)
1300 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "__ecereResult = ");
1301 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "%s(", method->name);
1302 for(param = method->dataType->__anon1.__anon2.params.first; param; param = param->next)
1303 {
1304 if(param->prev)
1305 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, ", ");
1306 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "%s", param->name);
1307 }
1308 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, ");\n");
1309 for(param = method->dataType->__anon1.__anon2.params.first; param; param = param->next)
1310 {
1311 if(param->kind == 8 && ((param->__anon1._class && param->__anon1._class->__anon1.registered && param->__anon1._class->__anon1.registered->type == 1) || !strcmp(param->__anon1._class->string, "String")) && !param->constant)
1312 {
1313 if(!strcmp(param->__anon1._class->string, "String"))
1314 {
1315 DeclareClass((((void *)0)), FindClass("StaticString"), "__ecereClass_StaticString");
1316 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "            __ecereBuffer.Serialize((StaticString)%s);\n", param->name);
1317 }
1318 else
1319 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "            __ecereBuffer.Serialize(%s);\n", param->name);
1320 }
1321 }
1322 if(method->dataType->__anon1.__anon2.returnType->kind != 0)
1323 {
1324 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "            __ecereBuffer.Serialize(__ecereResult);\n");
1325 }
1326 for(param = method->dataType->__anon1.__anon2.params.first; param; param = param->next)
1327 {
1328 if(param->kind == 8 && strcmp(param->__anon1._class->string, "String") && param->__anon1._class->__anon1.registered && (param->__anon1._class->__anon1.registered->type == 0 || param->__anon1._class->__anon1.registered->type == 5))
1329 {
1330 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "            delete %s;\n", param->name);
1331 }
1332 }
1333 if(method->dataType->__anon1.__anon2.returnType->kind == 8 && strcmp(method->dataType->__anon1.__anon2.returnType->__anon1._class->string, "String") && method->dataType->__anon1.__anon2.returnType->__anon1._class->__anon1.registered && (method->dataType->__anon1.__anon2.returnType->__anon1._class->__anon1.registered->type == 0 || method->dataType->__anon1.__anon2.returnType->__anon1._class->__anon1.registered->type == 5))
1334 {
1335 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "            delete __ecereResult;\n");
1336 }
1337 }
1338 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "            break;\n");
1339 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "         }\n");
1340 }
1341 }
1342 }
1343 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "      }\n");
1344 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "   }\n");
1345 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "\n");
1346 }
1347 doVirtual = 1;
1348 id = 0;
1349 vid = _class->base->vTblSize;
1350 next = (struct __ecereNameSpace__ecere__com__Method *)__ecereProp___ecereNameSpace__ecere__sys__BinaryTree_Get_first(&_class->methods);
1351 while(next && ((next->type == 1) != doVirtual || (doVirtual && next->vid != vid)))
1352 {
1353 id++;
1354 next = (struct __ecereNameSpace__ecere__com__Method *)__ecereProp___ecereNameSpace__ecere__sys__BTNode_Get_next(((struct __ecereNameSpace__ecere__sys__BTNode *)next));
1355 if(!next && doVirtual)
1356 {
1357 if(vid == _class->vTblSize)
1358 doVirtual = 0;
1359 else
1360 vid++;
1361 id = 0;
1362 next = (struct __ecereNameSpace__ecere__com__Method *)__ecereProp___ecereNameSpace__ecere__sys__BinaryTree_Get_first(&_class->methods);
1363 }
1364 }
1365 for(method = next; method; method = next)
1366 {
1367 struct Type * param;
1368
1369 if(!method->dataType)
1370 method->dataType = ProcessTypeString(method->dataTypeString, 0);
1371 if(method->dataType->name)
1372 {
1373 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "   ");
1374 if(doVirtual)
1375 {
1376 char name[1024];
1377
1378 strcpy(name, "__ecereVMethodID_");
1379 FullClassNameCat(name, method->_class->fullName, 1);
1380 strcat(name, "_");
1381 strcat(name, method->name);
1382 DeclareMethod((((void *)0)), method, name);
1383 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "virtual ");
1384 }
1385 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "%s\n", method->dataTypeString);
1386 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "   {\n");
1387 if(method->dataType)
1388 {
1389 if(method->dataType->__anon1.__anon2.returnType->kind != 0)
1390 {
1391 struct TypeName * resultType;
1392 struct __ecereNameSpace__ecere__sys__OldList * specs = MkList();
1393 struct Declarator * decl;
1394 char type[1024] = "";
1395 char className[1024];
1396 struct Symbol * classSym;
1397
1398 if(method->dataType->__anon1.__anon2.returnType->kind == 8)
1399 classSym = method->dataType->__anon1.__anon2.returnType->__anon1._class;
1400 else
1401 {
1402 PrintTypeNoConst(method->dataType->__anon1.__anon2.returnType, type, 0, 1);
1403 classSym = FindClass(type);
1404 type[0] = (char)0;
1405 }
1406 strcpy(className, "__ecereClass_");
1407 FullClassNameCat(className, classSym->string, 1);
1408 DeclareClass((((void *)0)), classSym, className);
1409 PrintType(method->dataType->__anon1.__anon2.returnType, type, 1, 1);
1410 decl = SpecDeclFromString(type, specs, MkDeclaratorIdentifier(MkIdentifier("__ecereResult")));
1411 resultType = MkTypeName(specs, decl);
1412 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "      ");
1413 OutputTypeName(resultType, f, 0);
1414 if(method->dataType->__anon1.__anon2.returnType->kind == 9)
1415 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, " = { 0 }");
1416 else if(method->dataType->__anon1.__anon2.returnType->kind == 8 && method->dataType->__anon1.__anon2.returnType->__anon1._class->__anon1.registered && method->dataType->__anon1.__anon2.returnType->__anon1._class->__anon1.registered->type == 1)
1417 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, " { }");
1418 else
1419 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, " = 0");
1420 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, ";\n\n");
1421 }
1422 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "      incref this;\n");
1423 for(param = method->dataType->__anon1.__anon2.params.first; param; param = param->next)
1424 {
1425 char type[1024] = "";
1426 char className[1024];
1427 struct Symbol * classSym;
1428
1429 if(param->kind == 8)
1430 classSym = param->__anon1._class;
1431 else
1432 {
1433 PrintTypeNoConst(param, type, 0, 1);
1434 classSym = FindClass(type);
1435 type[0] = (char)0;
1436 }
1437 strcpy(className, "__ecereClass_");
1438 FullClassNameCat(className, classSym->string, 1);
1439 DeclareClass((((void *)0)), classSym, className);
1440 if(param->kind == 8 && !strcmp(param->__anon1._class->string, "String"))
1441 {
1442 DeclareClass((((void *)0)), FindClass("StaticString"), "__ecereClass_StaticString");
1443 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "      __ecereBuffer.Serialize((StaticString)%s);\n", param->name);
1444 }
1445 else
1446 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "      __ecereBuffer.Serialize(%s);\n", param->name);
1447 }
1448 DeclareMethod((((void *)0)), __ecereNameSpace__ecere__com__eClass_FindMethod(__ecereNameSpace__ecere__com__eSystem_FindClass(privateModule, "ecere::net::DCOMClientObject"), "CallMethod", privateModule), "__ecereMethod___ecereNameSpace__ecere__net__DCOMClientObject_CallMethod");
1449 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "      if(DCOMClientObject::CallMethod(%d))\n", id++);
1450 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "      {\n");
1451 for(param = method->dataType->__anon1.__anon2.params.first; param; param = param->next)
1452 {
1453 if(param->kind == 8 && ((param->__anon1._class && param->__anon1._class->__anon1.registered && param->__anon1._class->__anon1.registered->type == 1) || !strcmp(param->__anon1._class->string, "String")) && !param->constant)
1454 {
1455 if(!strcmp(param->__anon1._class->string, "String"))
1456 {
1457 DeclareClass((((void *)0)), FindClass("StaticString"), "__ecereClass_StaticString");
1458 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "         __ecereBuffer.Unserialize((StaticString)%s);\n", param->name);
1459 }
1460 else
1461 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "         __ecereBuffer.Unserialize(%s);\n", param->name);
1462 }
1463 }
1464 if(method->dataType->__anon1.__anon2.returnType->kind != 0)
1465 {
1466 if(method->dataType->__anon1.__anon2.returnType->kind == 8 && !strcmp(method->dataType->__anon1.__anon2.returnType->__anon1._class->string, "String"))
1467 {
1468 DeclareClass((((void *)0)), FindClass("StaticString"), "__ecereClass_StaticString");
1469 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "         __ecereBuffer.Unserialize((StaticString)__ecereResult);\n");
1470 }
1471 else
1472 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "         __ecereBuffer.Unserialize(__ecereResult);\n");
1473 }
1474 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "      }\n");
1475 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "      __ecereBuffer.Free();\n");
1476 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "      delete this;\n");
1477 if(method->dataType->__anon1.__anon2.returnType->kind != 0)
1478 {
1479 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "      return __ecereResult;\n");
1480 }
1481 }
1482 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "   }\n");
1483 }
1484 next = (struct __ecereNameSpace__ecere__com__Method *)__ecereProp___ecereNameSpace__ecere__sys__BTNode_Get_next(((struct __ecereNameSpace__ecere__sys__BTNode *)method));
1485 while(next && ((next->type == 1) != doVirtual || (doVirtual && next->vid != vid)))
1486 {
1487 id++;
1488 next = (struct __ecereNameSpace__ecere__com__Method *)__ecereProp___ecereNameSpace__ecere__sys__BTNode_Get_next(((struct __ecereNameSpace__ecere__sys__BTNode *)next));
1489 if(!next && doVirtual)
1490 {
1491 if(vid == _class->vTblSize)
1492 doVirtual = 0;
1493 else
1494 vid++;
1495 id = 0;
1496 next = (struct __ecereNameSpace__ecere__com__Method *)__ecereProp___ecereNameSpace__ecere__sys__BinaryTree_Get_first(&_class->methods);
1497 }
1498 }
1499 if(next)
1500 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "\n");
1501 }
1502 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "}\n");
1503 if(deriv->next)
1504 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "\n");
1505 }
1506 }
1507 }
1508
1509 static void BindDCOMServer()
1510 {
1511 unsigned int mutexDeclared = 0;
1512 struct __ecereNameSpace__ecere__com__Class * _class;
1513
1514 for(_class = ((struct __ecereNameSpace__ecere__com__Module *)(((char *)privateModule + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->classes.first; _class; _class = _class->next)
1515 {
1516 if(_class->isRemote == 3)
1517 break;
1518 }
1519 if(_class)
1520 {
1521 struct __ecereNameSpace__ecere__com__Instance * f;
1522
1523 if(!dcomSymbols)
1524 dcomSymbols = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass___ecereNameSpace__ecere__sys__TempFile);
1525 f = dcomSymbols;
1526 DeclareClass((((void *)0)), FindClass("ecere::net::DCOMServerObject"), "__ecereClass___ecereNameSpace__ecere__net__DCOMServerObject");
1527 for(_class = ((struct __ecereNameSpace__ecere__com__Module *)(((char *)privateModule + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->classes.first; _class; _class = _class->next)
1528 {
1529 if(_class->isRemote == 3)
1530 {
1531 struct __ecereNameSpace__ecere__com__Method * method;
1532 int id = 0;
1533 int vid;
1534
1535 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "class DCOM%s : ecere::net::DCOMServerObject\n", _class->fullName);
1536 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "{\n");
1537 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "   virtual void CallMethod(uint __ecereMethodID, SerialBuffer __ecereBuffer)\n");
1538 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "   {\n");
1539 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "      %s inst = (%s)instance;\n", _class->fullName, _class->fullName);
1540 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "      incref inst;\n");
1541 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "      switch(__ecereMethodID)\n");
1542 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "      {\n");
1543 for(method = (struct __ecereNameSpace__ecere__com__Method *)__ecereProp___ecereNameSpace__ecere__sys__BinaryTree_Get_first(&_class->methods); method; method = (struct __ecereNameSpace__ecere__com__Method *)__ecereProp___ecereNameSpace__ecere__sys__BTNode_Get_next(((struct __ecereNameSpace__ecere__sys__BTNode *)method)))
1544 {
1545 struct Type * param;
1546
1547 method->dataType = ProcessTypeString(method->dataTypeString, 0);
1548 if(method->dataType && method->dataType->name)
1549 {
1550 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "         case %d:\n", id++);
1551 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "         {\n");
1552 {
1553 if(method->dataType->__anon1.__anon2.returnType->kind != 0)
1554 {
1555 struct TypeName * resultType;
1556 struct __ecereNameSpace__ecere__sys__OldList * specs = MkList();
1557 struct Declarator * decl;
1558 char type[1024] = "";
1559 char className[1024];
1560 struct Symbol * classSym;
1561
1562 if(method->dataType->__anon1.__anon2.returnType->kind == 8)
1563 classSym = method->dataType->__anon1.__anon2.returnType->__anon1._class;
1564 else
1565 {
1566 PrintTypeNoConst(method->dataType->__anon1.__anon2.returnType, type, 0, 1);
1567 classSym = FindClass(type);
1568 type[0] = (char)0;
1569 }
1570 strcpy(className, "__ecereClass_");
1571 FullClassNameCat(className, classSym->string, 1);
1572 DeclareClass((((void *)0)), classSym, className);
1573 PrintType(method->dataType->__anon1.__anon2.returnType, type, 1, 1);
1574 decl = SpecDeclFromString(type, specs, MkDeclaratorIdentifier(MkIdentifier("__ecereResult")));
1575 resultType = MkTypeName(specs, decl);
1576 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "            ");
1577 OutputTypeName(resultType, f, 0);
1578 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, ";\n");
1579 }
1580 for(param = method->dataType->__anon1.__anon2.params.first; param; param = param->next)
1581 {
1582 if(param->kind == 8 && !strcmp(param->__anon1._class->string, "String"))
1583 {
1584 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "            char %s[1024];\n", param->name);
1585 DeclareClass((((void *)0)), FindClass("StaticString"), "__ecereClass_StaticString");
1586 DeclareClass((((void *)0)), FindClass("String"), "__ecereClass_String");
1587 }
1588 else
1589 {
1590 struct TypeName * paramTypeName;
1591 struct __ecereNameSpace__ecere__sys__OldList * specs = MkList();
1592 struct Declarator * decl;
1593 char type[1024] = "";
1594 char className[1024];
1595 struct Symbol * classSym;
1596
1597 if(param->kind == 8)
1598 classSym = param->__anon1._class;
1599 else
1600 {
1601 PrintTypeNoConst(param, type, 0, 1);
1602 classSym = FindClass(type);
1603 type[0] = (char)0;
1604 }
1605 strcpy(className, "__ecereClass_");
1606 FullClassNameCat(className, classSym->string, 1);
1607 DeclareClass((((void *)0)), classSym, className);
1608 PrintType(param, type, 1, 1);
1609 decl = SpecDeclFromString(type, specs, MkDeclaratorIdentifier(MkIdentifier(param->name)));
1610 paramTypeName = MkTypeName(specs, decl);
1611 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "            ");
1612 OutputTypeName(paramTypeName, f, 0);
1613 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, ";\n");
1614 }
1615 }
1616 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "\n");
1617 for(param = method->dataType->__anon1.__anon2.params.first; param; param = param->next)
1618 {
1619 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "            __ecereBuffer.Unserialize(");
1620 if(param->kind == 8 && !strcmp(param->__anon1._class->string, "String"))
1621 {
1622 DeclareClass((((void *)0)), FindClass("StaticString"), "__ecereClass_StaticString");
1623 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "(StaticString)");
1624 }
1625 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
1626 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
1627
1628 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
1629 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, param->name);
1630 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, ");\n");
1631 }
1632 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "            ");
1633 if(method->dataType->__anon1.__anon2.returnType->kind != 0)
1634 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "__ecereResult = ");
1635 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "((%s)instance).%s(", _class->fullName, method->name);
1636 for(param = method->dataType->__anon1.__anon2.params.first; param; param = param->next)
1637 {
1638 if(param->prev)
1639 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, ", ");
1640 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "%s", param->name);
1641 }
1642 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, ");\n");
1643 for(param = method->dataType->__anon1.__anon2.params.first; param; param = param->next)
1644 {
1645 if(param->kind == 8 && ((param->__anon1._class && param->__anon1._class->__anon1.registered && param->__anon1._class->__anon1.registered->type == 1) || !strcmp(param->__anon1._class->string, "String")) && !param->constant)
1646 {
1647 if(!strcmp(param->__anon1._class->string, "String"))
1648 {
1649 DeclareClass((((void *)0)), FindClass("StaticString"), "__ecereClass_StaticString");
1650 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "            __ecereBuffer.Serialize((StaticString)%s);\n", param->name);
1651 }
1652 else
1653 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "            __ecereBuffer.Serialize(%s);\n", param->name);
1654 }
1655 }
1656 if(method->dataType->__anon1.__anon2.returnType->kind != 0)
1657 {
1658 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "            __ecereBuffer.Serialize(__ecereResult);\n");
1659 }
1660 for(param = method->dataType->__anon1.__anon2.params.first; param; param = param->next)
1661 {
1662 if(param->kind == 8 && strcmp(param->__anon1._class->string, "String") && param->__anon1._class->__anon1.registered && (param->__anon1._class->__anon1.registered->type == 0 || param->__anon1._class->__anon1.registered->type == 5))
1663 {
1664 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "            delete %s;\n", param->name);
1665 }
1666 }
1667 if(method->dataType->__anon1.__anon2.returnType->kind == 8 && strcmp(method->dataType->__anon1.__anon2.returnType->__anon1._class->string, "String") && method->dataType->__anon1.__anon2.returnType->__anon1._class->__anon1.registered && (method->dataType->__anon1.__anon2.returnType->__anon1._class->__anon1.registered->type == 0 || method->dataType->__anon1.__anon2.returnType->__anon1._class->__anon1.registered->type == 5))
1668 {
1669 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "            delete __ecereResult;\n");
1670 }
1671 }
1672 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "            break;\n");
1673 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "         }\n");
1674 }
1675 }
1676 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "      }\n");
1677 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "      delete inst;\n");
1678 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "   }\n");
1679 for(vid = _class->base->vTblSize; vid < _class->vTblSize; vid++)
1680 {
1681 struct __ecereNameSpace__ecere__com__Method * method;
1682 struct Type * param;
1683
1684 for(method = (struct __ecereNameSpace__ecere__com__Method *)__ecereProp___ecereNameSpace__ecere__sys__BinaryTree_Get_first(&_class->methods); method; method = (struct __ecereNameSpace__ecere__com__Method *)__ecereProp___ecereNameSpace__ecere__sys__BTNode_Get_next(((struct __ecereNameSpace__ecere__sys__BTNode *)method)))
1685 if(method->type == 1 && method->_class == _class && method->vid == vid)
1686 break;
1687 if(method)
1688 {
1689 if(!mutexDeclared)
1690 {
1691 DeclareClass((((void *)0)), FindClass("ecere::sys::Mutex"), "__ecereClass___ecereNameSpace__ecere__sys__Mutex");
1692 DeclareMethod((((void *)0)), __ecereNameSpace__ecere__com__eClass_FindMethod(__ecereNameSpace__ecere__com__eSystem_FindClass(privateModule, "ecere::sys::Mutex"), "Wait", privateModule), "__ecereMethod___ecereNameSpace__ecere__sys__Mutex_Wait");
1693 DeclareMethod((((void *)0)), __ecereNameSpace__ecere__com__eClass_FindMethod(__ecereNameSpace__ecere__com__eSystem_FindClass(privateModule, "ecere::sys::Mutex"), "Release", privateModule), "__ecereMethod___ecereNameSpace__ecere__sys__Mutex_Release");
1694 mutexDeclared = 1;
1695 }
1696 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "\n");
1697 if(!method->dataType)
1698 method->dataType = ProcessTypeString(method->dataTypeString, 0);
1699 if(method->dataType->name)
1700 {
1701 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "   virtual %s\n", method->dataTypeString);
1702 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "   {\n");
1703 if(method->dataType)
1704 {
1705 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "      DCOM%s __ecereObject = (void *)_vTbl[-1];\n", _class->fullName);
1706 if(method->dataType->__anon1.__anon2.returnType->kind != 0)
1707 {
1708 struct TypeName * resultType;
1709 struct __ecereNameSpace__ecere__sys__OldList * specs = MkList();
1710 struct Declarator * decl;
1711 char type[1024] = "";
1712 char className[1024];
1713 struct Symbol * classSym;
1714
1715 if(method->dataType->__anon1.__anon2.returnType->kind == 8)
1716 classSym = method->dataType->__anon1.__anon2.returnType->__anon1._class;
1717 else
1718 {
1719 PrintTypeNoConst(method->dataType->__anon1.__anon2.returnType, type, 0, 1);
1720 classSym = FindClass(type);
1721 type[0] = (char)0;
1722 }
1723 strcpy(className, "__ecereClass_");
1724 FullClassNameCat(className, classSym->string, 1);
1725 DeclareClass((((void *)0)), classSym, className);
1726 PrintType(method->dataType->__anon1.__anon2.returnType, type, 1, 1);
1727 decl = SpecDeclFromString(type, specs, MkDeclaratorIdentifier(MkIdentifier("__ecereResult")));
1728 resultType = MkTypeName(specs, decl);
1729 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "      ");
1730 OutputTypeName(resultType, f, 0);
1731 if(method->dataType->__anon1.__anon2.returnType->kind == 9)
1732 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, " = { 0 }");
1733 else if(method->dataType->__anon1.__anon2.returnType->kind == 8 && method->dataType->__anon1.__anon2.returnType->__anon1._class->__anon1.registered && method->dataType->__anon1.__anon2.returnType->__anon1._class->__anon1.registered->type == 1)
1734 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, " { }");
1735 else
1736 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, " = 0");
1737 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, ";\n\n");
1738 }
1739 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "      incref __ecereObject;\n");
1740 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "      __ecereMethod___ecereNameSpace__ecere__sys__Mutex_Wait(__ecereObject.mutex);\n");
1741 for(param = method->dataType->__anon1.__anon2.params.first; param; param = param->next)
1742 {
1743 char type[1024] = "";
1744 char className[1024];
1745 struct Symbol * classSym;
1746
1747 if(param->kind == 8)
1748 classSym = param->__anon1._class;
1749 else
1750 {
1751 PrintTypeNoConst(param, type, 0, 1);
1752 classSym = FindClass(type);
1753 type[0] = (char)0;
1754 }
1755 strcpy(className, "__ecereClass_");
1756 FullClassNameCat(className, classSym->string, 1);
1757 DeclareClass((((void *)0)), classSym, className);
1758 if(param->kind == 8 && !strcmp(param->__anon1._class->string, "String"))
1759 {
1760 DeclareClass((((void *)0)), FindClass("StaticString"), "__ecereClass_StaticString");
1761 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "      __ecereObject.argsBuffer.Serialize((StaticString)%s);\n", param->name);
1762 }
1763 else
1764 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "      __ecereObject.argsBuffer.Serialize(%s);\n", param->name);
1765 }
1766 DeclareMethod((((void *)0)), __ecereNameSpace__ecere__com__eClass_FindMethod(__ecereNameSpace__ecere__com__eSystem_FindClass(privateModule, "ecere::net::DCOMServerObject"), "CallVirtualMethod", privateModule), "__ecereMethod___ecereNameSpace__ecere__net__DCOMServerObject_CallVirtualMethod");
1767 {
1768 unsigned int hasReturnValue = method->dataType->__anon1.__anon2.returnType->kind != 0;
1769
1770 if(!hasReturnValue)
1771 {
1772 for(param = method->dataType->__anon1.__anon2.params.first; param; param = param->next)
1773 {
1774 if(param->kind == 8 && ((param->__anon1._class && param->__anon1._class->__anon1.registered && param->__anon1._class->__anon1.registered->type == 1) || !strcmp(param->__anon1._class->string, "String")) && !param->constant)
1775 {
1776 hasReturnValue = 1;
1777 break;
1778 }
1779 }
1780 }
1781 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "      if(__ecereObject.CallVirtualMethod(%d, %s))\n", vid - _class->base->vTblSize, hasReturnValue ? "true" : "false");
1782 }
1783 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "      {\n");
1784 for(param = method->dataType->__anon1.__anon2.params.first; param; param = param->next)
1785 {
1786 if(param->kind == 8 && ((param->__anon1._class && param->__anon1._class->__anon1.registered && param->__anon1._class->__anon1.registered->type == 1) || !strcmp(param->__anon1._class->string, "String")) && !param->constant)
1787 {
1788 if(!strcmp(param->__anon1._class->string, "String"))
1789 {
1790 DeclareClass((((void *)0)), FindClass("StaticString"), "__ecereClass_StaticString");
1791 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "         __ecereObject.returnBuffer.Unserialize((StaticString)%s);\n", param->name);
1792 }
1793 else
1794 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "         __ecereObject.returnBuffer.Unserialize(%s);\n", param->name);
1795 }
1796 }
1797 if(method->dataType->__anon1.__anon2.returnType->kind != 0)
1798 {
1799 if(method->dataType->__anon1.__anon2.returnType->kind == 8 && !strcmp(method->dataType->__anon1.__anon2.returnType->__anon1._class->string, "String"))
1800 {
1801 DeclareClass((((void *)0)), FindClass("StaticString"), "__ecereClass_StaticString");
1802 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "         __ecereObject.returnBuffer.Unserialize((StaticString)__ecereResult);\n");
1803 }
1804 else
1805 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "         __ecereObject.returnBuffer.Unserialize(__ecereResult);\n");
1806 }
1807 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "      }\n");
1808 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "      else\n");
1809 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "         ((%s)this).%s::%s(", _class->fullName, _class->fullName, method->name);
1810 for(param = method->dataType->__anon1.__anon2.params.first; param; param = param->next)
1811 {
1812 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "%s", param->name);
1813 if(param->next)
1814 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, ", ");
1815 }
1816 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, ");\n");
1817 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "      __ecereObject.returnBuffer.Free();\n");
1818 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "      __ecereMethod___ecereNameSpace__ecere__sys__Mutex_Release(__ecereObject.mutex);\n");
1819 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "      delete __ecereObject;\n");
1820 if(method->dataType->__anon1.__anon2.returnType->kind != 0)
1821 {
1822 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "      return __ecereResult;\n");
1823 }
1824 }
1825 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "   }\n");
1826 }
1827 }
1828 }
1829 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "}\n");
1830 }
1831 }
1832 }
1833 }
1834
1835 struct __ecereNameSpace__ecere__com__GlobalFunction;
1836
1837 extern struct __ecereNameSpace__ecere__com__GlobalFunction * __ecereNameSpace__ecere__com__eSystem_FindFunction(struct __ecereNameSpace__ecere__com__Instance * module, const char *  name);
1838
1839 struct __ecereNameSpace__ecere__com__GlobalFunction
1840 {
1841 struct __ecereNameSpace__ecere__com__GlobalFunction * prev;
1842 struct __ecereNameSpace__ecere__com__GlobalFunction * next;
1843 const char *  name;
1844 int (*  function)();
1845 struct __ecereNameSpace__ecere__com__Instance * module;
1846 struct __ecereNameSpace__ecere__com__NameSpace *  nameSpace;
1847 const char *  dataTypeString;
1848 struct Type * dataType;
1849 void *  symbol;
1850 } __attribute__ ((gcc_struct));
1851
1852 static void WriteMain(const char * fileName)
1853 {
1854 struct __ecereNameSpace__ecere__com__Instance * f = __ecereNameSpace__ecere__sys__FileOpen(fileName, 2);
1855
1856 if(f)
1857 {
1858 struct ModuleImport * module;
1859 struct ModuleInfo * defModule;
1860 unsigned int anyMethod = 0, anyProp = 0, anyFunction = 0;
1861 struct ImportedModule * importedModule;
1862
1863 __ecereNameSpace__ecere__sys__GetLastDirectory(fileName, mainModuleName);
1864 __ecereNameSpace__ecere__sys__StripExtension(mainModuleName);
1865 if(!projectName[0])
1866 {
1867 strcpy(projectName, mainModuleName);
1868 __ecereNameSpace__ecere__sys__StripExtension(projectName);
1869 }
1870 FixModuleName(mainModuleName);
1871 if(targetPlatform == 1 && !isConsole && !isStaticLibrary && !isDynamicLibrary)
1872 {
1873 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
1874 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
1875
1876 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
1877 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, "typedef void * HINSTANCE;\n");
1878 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
1879 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
1880
1881 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
1882 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, "#define WINAPI __stdcall\n");
1883 }
1884 for(importedModule = _defines.first; importedModule; importedModule = importedModule->next)
1885 {
1886 if(importedModule->type == 0)
1887 {
1888 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "import ");
1889 if(importedModule->importType == 1)
1890 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "static ", importedModule->name);
1891 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "\"%s\"\n", importedModule->name);
1892 }
1893 }
1894 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
1895 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
1896
1897 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
1898 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, "default:\n");
1899 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
1900 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
1901
1902 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
1903 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, "static Module __currentModule;\n\n");
1904 if(!isStaticLibrary)
1905 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
1906 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
1907
1908 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
1909 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, "Module __thisModule;\n\n");
1910 BindDCOMServer();
1911 BindDCOMClient();
1912 if(dcomSymbols)
1913 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "void __ecereRegisterModule_%s(Module module);\n\n", mainModuleName);
1914 for(module = _imports.first; module; module = module->next)
1915 {
1916 struct ClassImport * _class;
1917 struct FunctionImport * function;
1918
1919 if(module->importType == 1)
1920 {
1921 {
1922 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "bool __ecereDll_Load_%s(Module module);\n", module->name);
1923 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "bool __ecereDll_Unload_%s(Module module);\n", module->name);
1924 }
1925 }
1926 for(_class = module->classes.first; _class; _class = _class->next)
1927 {
1928 struct MethodImport * method;
1929 struct PropertyImport * prop;
1930 char className[1024] = "";
1931 struct __ecereNameSpace__ecere__com__Class * regClass = __ecereNameSpace__ecere__com__eSystem_FindClass(privateModule, _class->name);
1932
1933 FullClassNameCat(className, _class->name, 1);
1934 if(_class->itself)
1935 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "Class __ecereClass_%s;\n", className);
1936 {
1937 {
1938 for(method = _class->methods.first; method; method = method->next)
1939 {
1940 struct __ecereNameSpace__ecere__com__Method * meth = __ecereNameSpace__ecere__com__eClass_FindMethod(regClass, method->name, privateModule);
1941
1942 if(meth && !meth->dataType)
1943 {
1944 struct Context * context = SetupTemplatesContext(regClass);
1945
1946 meth->dataType = ProcessTypeString(meth->dataTypeString, 0);
1947 FinishTemplatesContext(context);
1948 }
1949 if(method->isVirtual)
1950 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "int __ecereVMethodID_%s_%s;\n", className, method->name);
1951 else if((!strcmp(_class->name, "float") || !strcmp(_class->name, "double") || module->name) && module->importType != 1 && (!meth || !meth->dataType->dllExport))
1952 {
1953 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "int (*__ecereMethod_%s_%s)();\n", className, method->name);
1954 }
1955 anyMethod = 1;
1956 }
1957 }
1958 for(prop = _class->properties.first; prop; prop = prop->next)
1959 {
1960 char propName[1024];
1961
1962 propName[0] = (char)0;
1963 FullClassNameCat(propName, prop->name, 1);
1964 if((!strcmp(_class->name, "float") || !strcmp(_class->name, "double") || module->name) && module->importType != 1)
1965 {
1966 if(prop->hasSet)
1967 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "void * __ecereProp_%s_Set_%s;\n", className, propName);
1968 if(prop->hasGet)
1969 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "void * __ecereProp_%s_Get_%s;\n", className, propName);
1970 }
1971 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "Property __ecereProp_%s_%s;\n", className, propName);
1972 anyProp = 1;
1973 }
1974 }
1975 }
1976 for(function = module->functions.first; function; function = function->next)
1977 {
1978 struct __ecereNameSpace__ecere__com__GlobalFunction * func = __ecereNameSpace__ecere__com__eSystem_FindFunction(privateModule, function->name);
1979
1980 if(func && !func->dataType)
1981 func->dataType = ProcessTypeString(func->dataTypeString, 0);
1982 if(module->name && module->importType != 1 && (!func || !func->dataType || !func->dataType->dllExport))
1983 {
1984 char functionName[1024];
1985
1986 functionName[0] = (char)0;
1987 FullClassNameCat(functionName, function->name, 0);
1988 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "void * __ecereFunction_%s;\n", functionName);
1989 anyFunction = 1;
1990 }
1991 }
1992 }
1993 for(defModule = modules.first; defModule; defModule = defModule->next)
1994 {
1995 char moduleName[1024];
1996
1997 strcpy(moduleName, defModule->name);
1998 FixModuleName(moduleName);
1999 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "void __ecereRegisterModule_%s(Module module);\n", moduleName);
2000 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "void __ecereUnregisterModule_%s(Module module);\n", moduleName);
2001 if(defModule->globalInstance)
2002 {
2003 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "void __ecereCreateModuleInstances_%s();\n", moduleName);
2004 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "void __ecereDestroyModuleInstances_%s();\n", moduleName);
2005 }
2006 }
2007 if(dcomSymbols)
2008 {
2009 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "\n");
2010 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, int pos, int mode))__extension__ ({
2011 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = dcomSymbols;
2012
2013 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
2014 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Seek])(dcomSymbols, 0, 0);
2015 while(!((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *))__extension__ ({
2016 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = dcomSymbols;
2017
2018 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
2019 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Eof])(dcomSymbols))
2020 {
2021 char buffer[4096];
2022 int read = ((int (*)(struct __ecereNameSpace__ecere__com__Instance *, void *  buffer, unsigned int size, unsigned int count))__extension__ ({
2023 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = dcomSymbols;
2024
2025 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
2026 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Read])(dcomSymbols, buffer, 1, sizeof (buffer));
2027
2028 if(!read)
2029 break;
2030 ((int (*)(struct __ecereNameSpace__ecere__com__Instance *, const void *  buffer, unsigned int size, unsigned int count))__extension__ ({
2031 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
2032
2033 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
2034 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Write])(f, buffer, 1, read);
2035 }
2036 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "\n");
2037 }
2038 if(isStaticLibrary)
2039 {
2040 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "\nbool __ecereDll_Load_%s(Module module)\n{\n", projectName);
2041 }
2042 else if(isDynamicLibrary)
2043 {
2044 if(targetPlatform == 1)
2045 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
2046 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
2047
2048 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
2049 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, "\ndllexport bool __stdcall __ecereDll_Load(Module module)\n{\n");
2050 else
2051 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
2052 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
2053
2054 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
2055 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, "\ndllexport bool __ecereDll_Load(Module module)\n{\n");
2056 }
2057 else if(targetPlatform == 1 && !isConsole)
2058 {
2059 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
2060 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
2061
2062 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
2063 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, "\nint WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInst, char * cmdLine, int show)\n{\n");
2064 }
2065 else
2066 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
2067 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
2068
2069 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
2070 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, "\nint main(int _argc, char * _argv[])\n{\n");
2071 if(!isDynamicLibrary)
2072 {
2073 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
2074 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
2075
2076 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
2077 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, "   int exitCode;\n");
2078 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
2079 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
2080
2081 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
2082 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, "   Module module;\n");
2083 }
2084 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
2085 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
2086
2087 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
2088 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, "   __attribute__((unused)) Class _class;\n");
2089 if(anyMethod)
2090 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
2091 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
2092
2093 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
2094 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, "   __attribute__((unused)) Method method;\n");
2095 if(anyProp)
2096 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
2097 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
2098
2099 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
2100 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, "   __attribute__((unused)) Property _property;\n");
2101 if(anyFunction)
2102 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
2103 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
2104
2105 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
2106 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, "   __attribute__((unused)) GlobalFunction function;\n");
2107 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
2108 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
2109
2110 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
2111 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, "\n");
2112 if(disabledPooling)
2113 {
2114 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
2115 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
2116
2117 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
2118 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, "   eSystem_SetPoolingDisabled(true);\n");
2119 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
2120 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
2121
2122 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
2123 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, "\n");
2124 }
2125 if(isDynamicLibrary)
2126 {
2127 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
2128 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
2129
2130 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
2131 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, "   if(!__currentModule)\n");
2132 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
2133 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
2134
2135 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
2136 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, "   {\n");
2137 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
2138 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
2139
2140 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
2141 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, "      __currentModule = module;\n");
2142 if(!isStaticLibrary)
2143 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
2144 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
2145
2146 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
2147 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, "      __thisModule = module;\n");
2148 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
2149 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
2150
2151 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
2152 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, "   }\n\n");
2153 }
2154 else if(targetPlatform == 1 && !isConsole)
2155 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
2156 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
2157
2158 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
2159 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, "   __thisModule = __currentModule = module = __ecere_COM_Initialize(1, 0, null);\n\n");
2160 else
2161 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
2162 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
2163
2164 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
2165 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, "   __thisModule = __currentModule = module = __ecere_COM_Initialize(1, _argc, (void *)_argv);\n\n");
2166 if(_imports.count)
2167 {
2168 for(module = _imports.first; module; module = module->next)
2169 {
2170 if(module->name)
2171 {
2172 {
2173 if(module->importType == 1)
2174 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "   eModule_LoadStatic(module, \"%s\", %s, __ecereDll_Load_%s, __ecereDll_Unload_%s);\n", module->name, (module->importAccess == 2) ? "privateAccess" : "publicAccess", module->name, module->name);
2175 else
2176 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "   eModule_Load(module, \"%s\", %s);\n", module->name, (module->importAccess == 2) ? "privateAccess" : "publicAccess");
2177 }
2178 }
2179 }
2180 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "\n");
2181 }
2182 if(modules.count)
2183 {
2184 for(defModule = modules.first; defModule; defModule = defModule->next)
2185 {
2186 char moduleName[1024];
2187
2188 strcpy(moduleName, defModule->name);
2189 FixModuleName(moduleName);
2190 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "   __ecereRegisterModule_%s(module);\n", moduleName);
2191 }
2192 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "\n");
2193 }
2194 if(dcomSymbols)
2195 {
2196 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "   __ecereRegisterModule_%s(module);\n\n", mainModuleName);
2197 (__ecereNameSpace__ecere__com__eInstance_DecRef(dcomSymbols), dcomSymbols = 0);
2198 }
2199 if(isDynamicLibrary)
2200 {
2201 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
2202 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
2203
2204 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
2205 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, "   if(__currentModule == module)\n");
2206 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
2207 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
2208
2209 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
2210 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, "   {\n");
2211 }
2212 for(module = _imports.first; module; module = module->next)
2213 {
2214 struct ClassImport * _class;
2215 struct FunctionImport * function;
2216
2217 if(module->classes.count)
2218 {
2219 for(_class = module->classes.first; _class; _class = _class->next)
2220 {
2221 struct __ecereNameSpace__ecere__com__Class * regClass = __ecereNameSpace__ecere__com__eSystem_FindClass(privateModule, _class->name);
2222
2223 {
2224 struct MethodImport * method;
2225 struct PropertyImport * prop;
2226 char classID[1024];
2227 char className[1024] = "";
2228
2229 FullClassNameCat(className, _class->name, 1);
2230 if(_class->itself)
2231 sprintf(classID, "__ecereClass_%s", className);
2232 else
2233 strcpy(classID, "_class");
2234 if(isDynamicLibrary && !isStaticLibrary)
2235 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "   %s = eSystem_FindClass(__currentModule, \"%s\");\n", classID, _class->name);
2236 else
2237 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "   %s = eSystem_FindClass(module, \"%s\");\n", classID, _class->name);
2238 for(method = _class->methods.first; method; method = method->next)
2239 {
2240 struct __ecereNameSpace__ecere__com__Method * meth = __ecereNameSpace__ecere__com__eClass_FindMethod(regClass, method->name, privateModule);
2241
2242 if(!meth || !meth->dataType->dllExport)
2243 {
2244 if(method->isVirtual || ((!strcmp(_class->name, "float") || !strcmp(_class->name, "double") || module->name) && module->importType != 1))
2245 {
2246 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "   method = eClass_FindMethod(%s, \"%s\", module);\n", classID, method->name);
2247 if(method->isVirtual)
2248 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "   if(method) __ecereVMethodID_%s_%s = method.vid;\n", className, method->name);
2249 else
2250 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "   if(method) __ecereMethod_%s_%s = method.function;\n", className, method->name);
2251 }
2252 }
2253 }
2254 for(prop = _class->properties.first; prop; prop = prop->next)
2255 {
2256 char propName[1024];
2257
2258 propName[0] = (char)0;
2259 FullClassNameCat(propName, prop->name, 1);
2260 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "   __ecereProp_%s_%s = _property = eClass_FindProperty(%s, \"%s\", module);\n", className, propName, classID, prop->name);
2261 if((!strcmp(_class->name, "float") || !strcmp(_class->name, "double") || module->name) && module->importType != 1)
2262 {
2263 if(prop->hasSet)
2264 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "   __ecereProp_%s_Set_%s = _property.Set;\n", className, propName);
2265 if(prop->hasGet)
2266 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "   __ecereProp_%s_Get_%s = _property.Get;\n", className, propName);
2267 }
2268 }
2269 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "\n");
2270 }
2271 }
2272 }
2273 if(module->functions.count)
2274 {
2275 for(function = module->functions.first; function; function = function->next)
2276 {
2277 struct __ecereNameSpace__ecere__com__GlobalFunction * func = __ecereNameSpace__ecere__com__eSystem_FindFunction(privateModule, function->name);
2278
2279 if(module->name && module->importType != 1 && (!func || !func->dataType || !func->dataType->dllExport))
2280 {
2281 char functionName[1024];
2282
2283 functionName[0] = (char)0;
2284 FullClassNameCat(functionName, function->name, 0);
2285 if(isDynamicLibrary && !isStaticLibrary)
2286 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "   function = eSystem_FindFunction(__currentModule, \"%s\");\n", function->name);
2287 else
2288 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "   function = eSystem_FindFunction(module, \"%s\");\n", function->name);
2289 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "   if(function) __ecereFunction_%s = function.function;\n", functionName);
2290 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "\n");
2291 }
2292 }
2293 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "\n");
2294 }
2295 }
2296 for(defModule = modules.first; defModule; defModule = defModule->next)
2297 if(defModule->globalInstance)
2298 {
2299 if(!strcmp(defModule->name, "i18n"))
2300 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "   __ecereCreateModuleInstances_i18n();\n");
2301 }
2302 if(i18n)
2303 {
2304 if(isDynamicLibrary)
2305 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "      LoadTranslatedStrings(\"%s\", \"%s\");\n", projectName, projectName);
2306 else
2307 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "      LoadTranslatedStrings(null, \"%s\");\n", projectName);
2308 }
2309 if(isDynamicLibrary)
2310 {
2311 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
2312 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
2313
2314 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
2315 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, "   }\n");
2316 }
2317 if(!isDynamicLibrary && thisAppClass)
2318 {
2319 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "   _class = eSystem_FindClass(__currentModule, \"%s\");\n", thisAppClass->name);
2320 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "   eInstance_Evolve((Instance *)&__currentModule, _class);\n");
2321 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "   __thisModule = __currentModule;\n");
2322 }
2323 if(isDynamicLibrary)
2324 {
2325 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
2326 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
2327
2328 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
2329 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, "   if(__currentModule == module)\n");
2330 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
2331 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
2332
2333 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
2334 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, "   {\n");
2335 }
2336 if(modules.count)
2337 {
2338 for(defModule = modules.first; defModule; defModule = defModule->next)
2339 if(defModule->globalInstance)
2340 {
2341 char moduleName[1024];
2342
2343 if(!strcmp(defModule->name, "i18n"))
2344 continue;
2345 strcpy(moduleName, defModule->name);
2346 FixModuleName(moduleName);
2347 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "   __ecereCreateModuleInstances_%s();\n", moduleName);
2348 }
2349 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "\n");
2350 }
2351 if(isDynamicLibrary)
2352 {
2353 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
2354 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
2355
2356 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
2357 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, "   }\n");
2358 }
2359 if(!isDynamicLibrary && thisAppClass)
2360 {
2361 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "   ((void(*)(void *))(void *)__currentModule._vTbl[12])(__currentModule);\n");
2362 }
2363 if(isDynamicLibrary)
2364 {
2365 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
2366 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
2367
2368 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
2369 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, "   return true;\n");
2370 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
2371 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
2372
2373 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
2374 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, "}\n");
2375 if(isStaticLibrary)
2376 {
2377 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "\nbool __ecereDll_Unload_%s(Module module)\n{\n", projectName);
2378 }
2379 else
2380 {
2381 if(targetPlatform == 1)
2382 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
2383 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
2384
2385 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
2386 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, "\ndllexport bool __stdcall __ecereDll_Unload(Module module)\n{\n");
2387 else
2388 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
2389 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
2390
2391 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
2392 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, "\ndllexport bool __ecereDll_Unload(Module module)\n{\n");
2393 }
2394 }
2395 if(isDynamicLibrary)
2396 {
2397 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
2398 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
2399
2400 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
2401 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, "   if(__currentModule == module)\n");
2402 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
2403 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
2404
2405 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
2406 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, "   {\n");
2407 }
2408 {
2409 unsigned int destroyI18n = 0;
2410
2411 if(modules.count)
2412 {
2413 for(defModule = modules.first; defModule; defModule = defModule->next)
2414 if(defModule->globalInstance)
2415 {
2416 char moduleName[1024];
2417
2418 if(!strcmp(defModule->name, "i18n"))
2419 {
2420 destroyI18n = 1;
2421 continue;
2422 }
2423 strcpy(moduleName, defModule->name);
2424 FixModuleName(moduleName);
2425 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "   __ecereDestroyModuleInstances_%s();\n", moduleName);
2426 }
2427 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "\n");
2428 }
2429 if(i18n)
2430 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "   UnloadTranslatedStrings(\"%s\");\n", projectName);
2431 if(destroyI18n)
2432 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "   __ecereDestroyModuleInstances_i18n();\n");
2433 }
2434 if(isDynamicLibrary)
2435 {
2436 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
2437 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
2438
2439 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
2440 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, "   }\n");
2441 if(isDynamicLibrary)
2442 {
2443 }
2444 if(modules.count)
2445 {
2446 for(defModule = modules.first; defModule; defModule = defModule->next)
2447 {
2448 char moduleName[1024];
2449
2450 strcpy(moduleName, defModule->name);
2451 FixModuleName(moduleName);
2452 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "   __ecereUnregisterModule_%s(module);\n", moduleName);
2453 }
2454 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "\n");
2455 }
2456 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
2457 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
2458
2459 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
2460 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, "   if(__currentModule == module)\n");
2461 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
2462 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
2463
2464 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
2465 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, "      __currentModule = (void *)0;\n");
2466 if(!isStaticLibrary)
2467 {
2468 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
2469 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
2470
2471 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
2472 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, "   if(__thisModule == module)\n");
2473 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
2474 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
2475
2476 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
2477 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, "      __thisModule = (void *)0;\n");
2478 }
2479 }
2480 if(!isDynamicLibrary)
2481 {
2482 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
2483 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
2484
2485 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
2486 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, "\n   _class = eSystem_FindClass(__currentModule, \"ecere::com::Application\");\n   exitCode = ((ecere::com::Application)__currentModule).exitCode;\n   delete __currentModule;\n   return exitCode;\n");
2487 }
2488 else
2489 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
2490 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
2491
2492 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
2493 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, "   return true;\n");
2494 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
2495 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
2496
2497 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
2498 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, "}\n");
2499 __ecereNameSpace__ecere__com__eInstance_Delete(f);
2500 }
2501 }
2502
2503 struct __ecereNameSpace__ecere__com__SubModule;
2504
2505 struct __ecereNameSpace__ecere__com__SubModule
2506 {
2507 struct __ecereNameSpace__ecere__com__SubModule * prev;
2508 struct __ecereNameSpace__ecere__com__SubModule * next;
2509 struct __ecereNameSpace__ecere__com__Instance * module;
2510 int importMode;
2511 } __attribute__ ((gcc_struct));
2512
2513 static struct __ecereNameSpace__ecere__com__Class * SearchAppClass_Module(struct __ecereNameSpace__ecere__com__Instance * module)
2514 {
2515 struct __ecereNameSpace__ecere__com__Class * appClass;
2516 struct __ecereNameSpace__ecere__com__SubModule * subModule;
2517
2518 appClass = FindAppClass(&((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->publicNameSpace, 0);
2519 if(appClass)
2520 return appClass;
2521 appClass = FindAppClass(&((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->privateNameSpace, 0);
2522 if(appClass)
2523 return appClass;
2524 for(subModule = ((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->modules.first; subModule; subModule = subModule->next)
2525 {
2526 appClass = SearchAppClass_Module(subModule->module);
2527 if(appClass)
2528 return appClass;
2529 }
2530 return (((void *)0));
2531 }
2532
2533 void __ecereMethod_SymbolgenApp_Main(struct __ecereNameSpace__ecere__com__Instance * this)
2534 {
2535 int c;
2536 unsigned int valid = 1;
2537 const char * output = (((void *)0));
2538
2539 outputPot = 0;
2540 disabledPooling = 0;
2541 targetPlatform = __runtimePlatform;
2542 targetBits = GetHostBits();
2543 for(c = 1; c < ((struct __ecereNameSpace__ecere__com__Application *)(((char *)this + sizeof(struct __ecereNameSpace__ecere__com__Module) + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->argc; c++)
2544 {
2545 const char * arg = ((struct __ecereNameSpace__ecere__com__Application *)(((char *)this + sizeof(struct __ecereNameSpace__ecere__com__Module) + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->argv[c];
2546
2547 if(arg[0] == '-')
2548 {
2549 if(!strcmp(arg + 1, "m32") || !strcmp(arg + 1, "m64"))
2550 {
2551 targetBits = !strcmp(arg + 1, "m32") ? 32 : 64;
2552 }
2553 else if(!strcmp(arg + 1, "t32") || !strcmp(arg + 1, "t64"))
2554 {
2555 targetBits = !strcmp(arg + 1, "t32") ? 32 : 64;
2556 }
2557 else if(!strcmp(arg + 1, "o"))
2558 {
2559 if(!output && c + 1 < ((struct __ecereNameSpace__ecere__com__Application *)(((char *)this + sizeof(struct __ecereNameSpace__ecere__com__Module) + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->argc)
2560 {
2561 output = ((struct __ecereNameSpace__ecere__com__Application *)(((char *)this + sizeof(struct __ecereNameSpace__ecere__com__Module) + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->argv[c + 1];
2562 c++;
2563 }
2564 else
2565 valid = 0;
2566 }
2567 else if(!strcmp(arg, "-name"))
2568 {
2569 if(c + 1 < ((struct __ecereNameSpace__ecere__com__Application *)(((char *)this + sizeof(struct __ecereNameSpace__ecere__com__Module) + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->argc)
2570 {
2571 strcpy(projectName, ((struct __ecereNameSpace__ecere__com__Application *)(((char *)this + sizeof(struct __ecereNameSpace__ecere__com__Module) + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->argv[c + 1]);
2572 c++;
2573 }
2574 else
2575 valid = 0;
2576 }
2577 else if(!strcmp(arg, "-t"))
2578 {
2579 if(++c < ((struct __ecereNameSpace__ecere__com__Application *)(((char *)this + sizeof(struct __ecereNameSpace__ecere__com__Module) + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->argc)
2580 targetPlatform = __ecereProp___ecereNameSpace__ecere__com__Platform_Set_char__PTR_(((struct __ecereNameSpace__ecere__com__Application *)(((char *)this + sizeof(struct __ecereNameSpace__ecere__com__Module) + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->argv[c]);
2581 else
2582 valid = 0;
2583 }
2584 else if(!strcmp(arg, "-outputpot"))
2585 outputPot = 1;
2586 else if(!strcmp(arg, "-disabled-pooling"))
2587 disabledPooling = 1;
2588 else if(!strcmp(arg, "-console"))
2589 isConsole = 1;
2590 else if(!strcmp(arg, "-dynamiclib"))
2591 isDynamicLibrary = 1;
2592 else if(!strcmp(arg, "-staticlib"))
2593 {
2594 isDynamicLibrary = 1;
2595 isStaticLibrary = 1;
2596 }
2597 else if(!strcmp(arg, "-symbols"))
2598 {
2599 if(c + 1 < ((struct __ecereNameSpace__ecere__com__Application *)(((char *)this + sizeof(struct __ecereNameSpace__ecere__com__Module) + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->argc)
2600 {
2601 SetSymbolsDir(((struct __ecereNameSpace__ecere__com__Application *)(((char *)this + sizeof(struct __ecereNameSpace__ecere__com__Module) + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->argv[c + 1]);
2602 c++;
2603 }
2604 else
2605 valid = 0;
2606 }
2607 }
2608 }
2609 if(!output)
2610 valid = 0;
2611 if(!valid)
2612 {
2613 printf("%s", __ecereNameSpace__ecere__GetTranslatedString("ecs", "Syntax:\n   ecs [-t <target platform>] <input>[, <input>]* -o <output>\n", (((void *)0))));
2614 }
2615 else
2616 {
2617 int c;
2618 char ext[17];
2619 char symbolModule[274];
2620
2621 __ecereNameSpace__ecere__sys__GetExtension(output, ext);
2622 __ecereNameSpace__ecere__sys__GetLastDirectory(output, symbolModule);
2623 SetDefines(&_defines);
2624 SetImports(&_imports);
2625 SetGlobalData(&globalData);
2626 SetExcludedSymbols(&_excludedSymbols);
2627 SetGlobalContext(theGlobalContext);
2628 SetTopContext(theGlobalContext);
2629 SetCurrentContext(theGlobalContext);
2630 SetTargetPlatform(targetPlatform);
2631 SetTargetBits(targetBits);
2632 SetInSymbolGen(1);
2633 privateModule = (struct __ecereNameSpace__ecere__com__Instance *)__ecereNameSpace__ecere__com____ecere_COM_Initialize((unsigned int)(1 | (targetBits == sizeof(uintptr_t) * 8 ? (unsigned int)0 : targetBits == 64 ? 2 : targetBits == 32 ? 4 : (unsigned int)0) | 8), 1, (((void *)0)));
2634 SetPrivateModule(privateModule);
2635 mainModule = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_ModuleImport);
2636 SetMainModule(mainModule);
2637 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add(&_imports, mainModule);
2638 {
2639 struct __ecereNameSpace__ecere__com__Instance * intlStrings = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass___ecereNameSpace__ecere__com__Map_TPL_ContextStringPair__ecere__com__List_TPL_String___);
2640 struct __ecereNameSpace__ecere__com__MapIterator it = (it.container = (void *)0, it.pointer = (void *)0, __ecereProp___ecereNameSpace__ecere__com__MapIterator_Set_map(&it, intlStrings), it);
2641
2642 for(c = 1; c < ((struct __ecereNameSpace__ecere__com__Application *)(((char *)this + sizeof(struct __ecereNameSpace__ecere__com__Module) + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->argc; c++)
2643 {
2644 const char * file = ((struct __ecereNameSpace__ecere__com__Application *)(((char *)this + sizeof(struct __ecereNameSpace__ecere__com__Module) + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->argv[c];
2645 struct __ecereNameSpace__ecere__com__Instance * f = (((void *)0));
2646 char line[16384];
2647 int count = 0;
2648 char * tokens[512];
2649
2650 if(file[0] == '-')
2651 {
2652 if(!strcmp(file, "-c"))
2653 c++;
2654 }
2655 else if(file[0] == '@')
2656 f = __ecereNameSpace__ecere__sys__FileOpen(&file[1], 1);
2657 else
2658 {
2659 count = 1;
2660 tokens[0] = (char *)file;
2661 }
2662 while(count || f)
2663 {
2664 int c;
2665
2666 if(f)
2667 {
2668 while(!count && __ecereMethod___ecereNameSpace__ecere__sys__File_GetLine(f, line, sizeof (line)))
2669 count = __ecereNameSpace__ecere__sys__Tokenize(line, sizeof (tokens) / sizeof (tokens[0]), tokens, 2);
2670 if(!count)
2671 (__ecereNameSpace__ecere__com__eInstance_DecRef(f), f = 0);
2672 }
2673 for(c = 0; c < count; c++)
2674 {
2675 char ext[17];
2676
2677 file = tokens[c];
2678 __ecereNameSpace__ecere__sys__GetExtension(file, ext);
2679 if(!strcmp(ext, "imp"))
2680 LoadImports(file);
2681 }
2682 count = 0;
2683 }
2684 }
2685 for(c = 1; c < ((struct __ecereNameSpace__ecere__com__Application *)(((char *)this + sizeof(struct __ecereNameSpace__ecere__com__Module) + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->argc; c++)
2686 {
2687 const char * file = ((struct __ecereNameSpace__ecere__com__Application *)(((char *)this + sizeof(struct __ecereNameSpace__ecere__com__Module) + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->argv[c];
2688
2689 if(file[0] == '-')
2690 {
2691 if(!strcmp(file, "-c"))
2692 c++;
2693 }
2694 }
2695 for(c = 1; c < ((struct __ecereNameSpace__ecere__com__Application *)(((char *)this + sizeof(struct __ecereNameSpace__ecere__com__Module) + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->argc; c++)
2696 {
2697 const char * file = ((struct __ecereNameSpace__ecere__com__Application *)(((char *)this + sizeof(struct __ecereNameSpace__ecere__com__Module) + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->argv[c];
2698 struct __ecereNameSpace__ecere__com__Instance * f = (((void *)0));
2699 char line[16384];
2700 int count = 0;
2701 char * tokens[512];
2702
2703 if(file[0] == '-')
2704 {
2705 if(!strcmp(file, "-c"))
2706 c++;
2707 }
2708 else if(file[0] == '@')
2709 f = __ecereNameSpace__ecere__sys__FileOpen(&file[1], 1);
2710 else
2711 {
2712 count = 1;
2713 tokens[0] = (char *)file;
2714 }
2715 while(count || f)
2716 {
2717 int c;
2718
2719 if(f)
2720 {
2721 while(!count && __ecereMethod___ecereNameSpace__ecere__sys__File_GetLine(f, line, sizeof (line)))
2722 count = __ecereNameSpace__ecere__sys__Tokenize(line, sizeof (tokens) / sizeof (tokens[0]), tokens, 2);
2723 if(!count)
2724 (__ecereNameSpace__ecere__com__eInstance_DecRef(f), f = 0);
2725 }
2726 for(c = 0; c < count; c++)
2727 {
2728 char ext[17];
2729 char moduleName[797];
2730
2731 file = tokens[c];
2732 __ecereNameSpace__ecere__sys__GetExtension(file, ext);
2733 __ecereNameSpace__ecere__sys__GetLastDirectory(file, moduleName);
2734 __ecereNameSpace__ecere__sys__StripExtension(moduleName);
2735 strcat(moduleName, ".ec");
2736 if(((__runtimePlatform == 1) ? (strcasecmp) : strcmp)(moduleName, symbolModule) && (!strcmp(ext, "sym") || !strcmp(ext, "ec")))
2737 {
2738 struct ImportedModule * importedModule;
2739 struct ModuleInfo * module = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_ModuleInfo);
2740 char fileName[274];
2741
2742 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add(&modules, module);
2743 __ecereNameSpace__ecere__sys__GetLastDirectory(file, fileName);
2744 module->name = __ecereNameSpace__ecere__sys__CopyString(fileName);
2745 __ecereNameSpace__ecere__sys__StripExtension(module->name);
2746 for(importedModule = _defines.first; importedModule; importedModule = importedModule->next)
2747 {
2748 if(importedModule->type == 0 && !(strcasecmp)(importedModule->name, module->name) && !(importedModule->importType == 2))
2749 break;
2750 }
2751 if(importedModule)
2752 module->globalInstance = importedModule->globalInstance;
2753 else
2754 {
2755 importedModule = __extension__ ({
2756 struct ImportedModule * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_ImportedModule);
2757
2758 __ecereInstance1->name = __ecereNameSpace__ecere__sys__CopyString(module->name), __ecereInstance1->type = 0, __ecereInstance1->importType = 0, __ecereInstance1;
2759 });
2760 __ecereMethod___ecereNameSpace__ecere__sys__OldList_AddName(&_defines, importedModule);
2761 module->globalInstance = LoadSymbols(file, 0, 0);
2762 CheckDataRedefinitions();
2763 }
2764 {
2765 struct __ecereNameSpace__ecere__com__Instance * f;
2766
2767 __ecereNameSpace__ecere__sys__ChangeExtension(file, "bowl", fileName);
2768 f = __ecereNameSpace__ecere__sys__FileOpen(fileName, 1);
2769 if(f)
2770 {
2771 static char line[65536];
2772 struct __ecereNameSpace__ecere__com__Instance * comments = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass___ecereNameSpace__ecere__com__List_TPL_String_);
2773 char * msgid = (((void *)0)), * msgstr = (((void *)0)), * msgctxt = (((void *)0));
2774
2775 while(!((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *))__extension__ ({
2776 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
2777
2778 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
2779 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Eof])(f))
2780 {
2781 if(__ecereMethod___ecereNameSpace__ecere__sys__File_GetLine(f, line, sizeof (line)))
2782 {
2783 int len;
2784
2785 __ecereNameSpace__ecere__sys__TrimLSpaces(line, line);
2786 if(line[0] == '#')
2787 {
2788 ((struct __ecereNameSpace__ecere__com__IteratorPointer * (*)(struct __ecereNameSpace__ecere__com__Instance *, uint64 value))__extension__ ({
2789 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = comments;
2790
2791 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__com__List->_vTbl;
2792 })[__ecereVMethodID___ecereNameSpace__ecere__com__Container_Add])(comments, (uint64)(uintptr_t)(__ecereNameSpace__ecere__sys__CopyString(line)));
2793 }
2794 else if(strstr(line, "msgid \"") == line)
2795 {
2796 (__ecereNameSpace__ecere__com__eSystem_Delete(msgid), msgid = 0);
2797 msgid = __ecereNameSpace__ecere__sys__CopyString(line + 7);
2798 len = strlen(msgid);
2799 if(len)
2800 msgid[len - 1] = (unsigned char)0;
2801 }
2802 else if(strstr(line, "msgctxt \"") == line)
2803 {
2804 (__ecereNameSpace__ecere__com__eSystem_Delete(msgctxt), msgctxt = 0);
2805 msgctxt = __ecereNameSpace__ecere__sys__CopyString(line + 9);
2806 len = strlen(msgctxt);
2807 if(len)
2808 msgctxt[len - 1] = (unsigned char)0;
2809 }
2810 else if(strstr(line, "msgstr \"") == line)
2811 {
2812 (__ecereNameSpace__ecere__com__eSystem_Delete(msgstr), msgstr = 0);
2813 msgstr = __ecereNameSpace__ecere__sys__CopyString(line + 8);
2814 len = strlen(msgstr);
2815 if(len)
2816 msgstr[len - 1] = (unsigned char)0;
2817 }
2818 if(msgid && msgstr)
2819 {
2820 struct ContextStringPair pair =
2821 {
2822 msgid, msgctxt
2823 };
2824
2825 i18n = 1;
2826 if(!__ecereMethod___ecereNameSpace__ecere__com__Iterator_Index((void *)(&it), (uint64)(uintptr_t)(&pair), 0))
2827 {
2828 msgid = (((void *)0));
2829 msgctxt = (((void *)0));
2830 __extension__ ({
2831 struct __ecereNameSpace__ecere__com__Iterator __internalIterator =
2832 {
2833 intlStrings, 0
2834 };
2835
2836 __ecereMethod___ecereNameSpace__ecere__com__Iterator_Index(&__internalIterator, ((uint64)(uintptr_t)(&pair)), 1);
2837 __ecereProp___ecereNameSpace__ecere__com__Iterator_Set_data(&__internalIterator, ((uint64)((uintptr_t)(comments))));
2838 });
2839 comments = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass___ecereNameSpace__ecere__com__List_TPL_String_);
2840 }
2841 else
2842 {
2843 {
2844 struct __ecereNameSpace__ecere__com__Iterator s =
2845 {
2846 (comments), 0
2847 };
2848
2849 while(__ecereMethod___ecereNameSpace__ecere__com__Iterator_Next(&s))
2850 ((struct __ecereNameSpace__ecere__com__IteratorPointer * (*)(struct __ecereNameSpace__ecere__com__Instance *, uint64 value))__extension__ ({
2851 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = ((struct __ecereNameSpace__ecere__com__Instance *)(uintptr_t)__ecereProp___ecereNameSpace__ecere__com__Iterator_Get_data((void *)(&it)));
2852
2853 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__com__List->_vTbl;
2854 })[__ecereVMethodID___ecereNameSpace__ecere__com__Container_Add])(((struct __ecereNameSpace__ecere__com__Instance *)(uintptr_t)__ecereProp___ecereNameSpace__ecere__com__Iterator_Get_data((void *)(&it))), __ecereProp___ecereNameSpace__ecere__com__Iterator_Get_data(&s));
2855 }
2856 ((void (*)(struct __ecereNameSpace__ecere__com__Instance *))__extension__ ({
2857 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = comments;
2858
2859 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__com__List->_vTbl;
2860 })[__ecereVMethodID___ecereNameSpace__ecere__com__Container_RemoveAll])(comments);
2861 }
2862 (__ecereNameSpace__ecere__com__eSystem_Delete(msgid), msgid = 0);
2863 (__ecereNameSpace__ecere__com__eSystem_Delete(msgctxt), msgctxt = 0);
2864 (__ecereNameSpace__ecere__com__eSystem_Delete(msgstr), msgstr = 0);
2865 }
2866 }
2867 }
2868 ((void (*)(struct __ecereNameSpace__ecere__com__Instance *))__extension__ ({
2869 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = comments;
2870
2871 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__com__List->_vTbl;
2872 })[__ecereVMethodID___ecereNameSpace__ecere__com__Container_Free])(comments);
2873 (__ecereNameSpace__ecere__com__eInstance_DecRef(comments), comments = 0);
2874 (__ecereNameSpace__ecere__com__eInstance_DecRef(f), f = 0);
2875 }
2876 }
2877 }
2878 }
2879 count = 0;
2880 }
2881 }
2882 ComputeModuleClasses(privateModule);
2883 if(!isDynamicLibrary)
2884 {
2885 thisAppClass = SearchAppClass_Module(privateModule);
2886 }
2887 WriteMain(output);
2888 if(outputPot && ((struct __ecereNameSpace__ecere__com__CustomAVLTree *)(((char *)intlStrings + 0 + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->count)
2889 {
2890 struct __ecereNameSpace__ecere__com__Instance * potFile;
2891 char potFileName[797];
2892
2893 strcpy(potFileName, "locale");
2894 __ecereNameSpace__ecere__sys__PathCat(potFileName, projectName);
2895 __ecereNameSpace__ecere__sys__ChangeExtension(potFileName, "pot", potFileName);
2896 potFile = __ecereNameSpace__ecere__sys__FileOpen(potFileName, 2);
2897 if(potFile)
2898 {
2899 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
2900 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = potFile;
2901
2902 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
2903 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(potFile, "msgid \"\"\n");
2904 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
2905 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = potFile;
2906
2907 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
2908 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(potFile, "msgstr \"\"\n");
2909 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
2910 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = potFile;
2911
2912 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
2913 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(potFile, "\"Project-Id-Version: \\n\"\n");
2914 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
2915 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = potFile;
2916
2917 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
2918 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(potFile, "\"POT-Creation-Date: \\n\"\n");
2919 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
2920 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = potFile;
2921
2922 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
2923 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(potFile, "\"PO-Revision-Date: \\n\"\n");
2924 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
2925 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = potFile;
2926
2927 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
2928 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(potFile, "\"Last-Translator: \\n\"\n");
2929 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
2930 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = potFile;
2931
2932 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
2933 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(potFile, "\"Language-Team: \\n\"\n");
2934 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
2935 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = potFile;
2936
2937 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
2938 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(potFile, "\"MIME-Version: 1.0\\n\"\n");
2939 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
2940 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = potFile;
2941
2942 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
2943 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(potFile, "\"Content-Type: text/plain; charset=iso-8859-1\\n\"\n");
2944 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
2945 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = potFile;
2946
2947 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
2948 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(potFile, "\"Content-Transfer-Encoding: 8bit\\n\"\n");
2949 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
2950 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = potFile;
2951
2952 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
2953 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(potFile, "\"X-Poedit-Basepath: ../\\n\"\n");
2954 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
2955 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = potFile;
2956
2957 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
2958 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(potFile, "\n");
2959 {
2960 struct __ecereNameSpace__ecere__com__MapIterator i = (i.container = (void *)0, i.pointer = (void *)0, __ecereProp___ecereNameSpace__ecere__com__MapIterator_Set_map(&i, (intlStrings)), i);
2961
2962 while(__ecereMethod___ecereNameSpace__ecere__com__Iterator_Next((void *)(&i)))
2963 {
2964 struct ContextStringPair pair = (*(struct ContextStringPair *)(uintptr_t)__ecereProp___ecereNameSpace__ecere__com__MapIterator_Get_key(&i));
2965 struct __ecereNameSpace__ecere__com__Instance * comments = ((struct __ecereNameSpace__ecere__com__Instance *)(uintptr_t)__ecereProp___ecereNameSpace__ecere__com__Iterator_Get_data((void *)(&i)));
2966
2967 {
2968 struct __ecereNameSpace__ecere__com__Iterator s =
2969 {
2970 (comments), 0
2971 };
2972
2973 while(__ecereMethod___ecereNameSpace__ecere__com__Iterator_Next(&s))
2974 {
2975 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(potFile, ((char * )((uintptr_t)(__ecereProp___ecereNameSpace__ecere__com__Iterator_Get_data(&s)))));
2976 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
2977 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = potFile;
2978
2979 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
2980 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(potFile, "\n");
2981 }
2982 }
2983 if(pair.context)
2984 {
2985 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
2986 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = potFile;
2987
2988 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
2989 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(potFile, "msgctxt \"");
2990 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
2991 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = potFile;
2992
2993 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
2994 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(potFile, pair.context);
2995 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
2996 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = potFile;
2997
2998 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
2999 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(potFile, "\"\n");
3000 }
3001 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
3002 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = potFile;
3003
3004 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
3005 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(potFile, "msgid \"");
3006 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
3007 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = potFile;
3008
3009 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
3010 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(potFile, pair.string);
3011 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
3012 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = potFile;
3013
3014 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
3015 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(potFile, "\"\n");
3016 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
3017 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = potFile;
3018
3019 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
3020 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(potFile, "msgstr \"");
3021 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
3022 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = potFile;
3023
3024 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
3025 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(potFile, pair.string);
3026 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
3027 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = potFile;
3028
3029 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
3030 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(potFile, "\"\n");
3031 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
3032 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = potFile;
3033
3034 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
3035 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(potFile, "\n");
3036 }
3037 }
3038 ((void (*)(struct __ecereNameSpace__ecere__com__Instance *))__extension__ ({
3039 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = intlStrings;
3040
3041 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__com__Map->_vTbl;
3042 })[__ecereVMethodID___ecereNameSpace__ecere__com__Container_Free])(intlStrings);
3043 (__ecereNameSpace__ecere__com__eInstance_DecRef(intlStrings), intlStrings = 0);
3044 (__ecereNameSpace__ecere__com__eInstance_DecRef(potFile), potFile = 0);
3045 }
3046 }
3047 }
3048 FreeContext(theGlobalContext);
3049 FreeExcludedSymbols(&_excludedSymbols);
3050 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Free(&_defines, (void *)(FreeModuleDefine));
3051 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Free(&_imports, (void *)(FreeModuleImport));
3052 FreeTypeData(privateModule);
3053 FreeIncludeFiles();
3054 FreeGlobalData(&globalData);
3055 (__ecereNameSpace__ecere__com__eInstance_DecRef(privateModule), privateModule = 0);
3056 }
3057 SetSymbolsDir((((void *)0)));
3058 }
3059
3060 void __ecereRegisterModule_ecs(struct __ecereNameSpace__ecere__com__Instance * module)
3061 {
3062 struct __ecereNameSpace__ecere__com__Class __attribute__((unused)) * class;
3063
3064 class = __ecereNameSpace__ecere__com__eSystem_RegisterClass(5, "ModuleInfo", 0, sizeof(struct ModuleInfo), 0, (void *)0, (void *)0, module, 2, 1);
3065 if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->application == ((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->application && class)
3066 __ecereClass_ModuleInfo = class;
3067 class = __ecereNameSpace__ecere__com__eSystem_RegisterClass(0, "SymbolgenApp", "ecere::com::Application", 0, 0, (void *)0, (void *)0, module, 2, 1);
3068 if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->application == ((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->application && class)
3069 __ecereClass_SymbolgenApp = class;
3070 __ecereNameSpace__ecere__com__eClass_AddMethod(class, "Main", 0, __ecereMethod_SymbolgenApp_Main, 1);
3071 }
3072