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