compiler: Added (u)intsize to map to size_t; Updated C prototypes to use it; Fixed...
[sdk] / compiler / bootstrap / ecp / bootstrap / ecp.c
1 #if defined(__GNUC__)
2 typedef long long int64;
3 typedef unsigned long long uint64;
4 #ifndef _WIN32
5 #define __declspec(x)
6 #endif
7 #elif defined(__TINYC__)
8 #include <stdarg.h>
9 #define __builtin_va_list va_list
10 #define __builtin_va_start va_start
11 #define __builtin_va_end va_end
12 #ifdef _WIN32
13 #define strcasecmp stricmp
14 #define strncasecmp strnicmp
15 #define __declspec(x) __attribute__((x))
16 #else
17 #define __declspec(x)
18 #endif
19 typedef long long int64;
20 typedef unsigned long long uint64;
21 #else
22 typedef __int64 int64;
23 typedef unsigned __int64 uint64;
24 #endif
25 #ifdef __BIG_ENDIAN__
26 #define __ENDIAN_PAD(x) (8 - (x))
27 #else
28 #define __ENDIAN_PAD(x) 0
29 #endif
30 #include <stdint.h>
31 #include <sys/types.h>
32
33 #if defined(_W64) || (defined(__WORDSIZE) && __WORDSIZE == 8) || defined(__x86_64__)
34 #define _64BIT 1
35 #else
36 #define _64BIT 0
37 #endif
38
39 #define arch_PointerSize                  sizeof(void *)
40 #define structSize_Instance               (_64BIT ? 24 : 12)
41 #define structSize_Module                 (_64BIT ? 560 : 300)
42 #define structSize_OldList                (_64BIT ? 32 : 20)
43
44 extern void *  __ecereNameSpace__ecere__com__eSystem_New(unsigned int size);
45
46 extern void *  __ecereNameSpace__ecere__com__eSystem_New0(unsigned int size);
47
48 extern void *  __ecereNameSpace__ecere__com__eSystem_Renew(void *  memory, unsigned int size);
49
50 extern void *  __ecereNameSpace__ecere__com__eSystem_Renew0(void *  memory, unsigned int size);
51
52 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__sys__BTNode;
53
54 struct __ecereNameSpace__ecere__sys__BTNode;
55
56 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__sys__BinaryTree;
57
58 struct __ecereNameSpace__ecere__sys__BinaryTree
59 {
60 struct __ecereNameSpace__ecere__sys__BTNode * root;
61 int count;
62 int (*  CompareKey)(struct __ecereNameSpace__ecere__sys__BinaryTree * tree, uintptr_t a, uintptr_t b);
63 void (*  FreeKey)(void *  key);
64 } __attribute__ ((gcc_struct));
65
66 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__sys__OldList;
67
68 struct __ecereNameSpace__ecere__sys__OldList
69 {
70 void *  first;
71 void *  last;
72 int count;
73 unsigned int offset;
74 unsigned int circ;
75 } __attribute__ ((gcc_struct));
76
77 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__Method;
78
79 struct __ecereNameSpace__ecere__com__Method
80 {
81 char *  name;
82 struct __ecereNameSpace__ecere__com__Method * parent;
83 struct __ecereNameSpace__ecere__com__Method * left;
84 struct __ecereNameSpace__ecere__com__Method * right;
85 int depth;
86 int (*  function)();
87 int vid;
88 int type;
89 struct __ecereNameSpace__ecere__com__Class * _class;
90 void *  symbol;
91 char *  dataTypeString;
92 struct Type * dataType;
93 int memberAccess;
94 } __attribute__ ((gcc_struct));
95
96 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__Property;
97
98 struct __ecereNameSpace__ecere__com__Property
99 {
100 struct __ecereNameSpace__ecere__com__Property * prev;
101 struct __ecereNameSpace__ecere__com__Property * next;
102 char *  name;
103 unsigned int isProperty;
104 int memberAccess;
105 int id;
106 struct __ecereNameSpace__ecere__com__Class * _class;
107 char *  dataTypeString;
108 struct __ecereNameSpace__ecere__com__Class * dataTypeClass;
109 struct Type * dataType;
110 void (*  Set)(void * , int);
111 int (*  Get)(void * );
112 unsigned int (*  IsSet)(void * );
113 void *  data;
114 void *  symbol;
115 int vid;
116 unsigned int conversion;
117 unsigned int watcherOffset;
118 char *  category;
119 unsigned int compiled;
120 unsigned int selfWatchable;
121 unsigned int isWatchable;
122 } __attribute__ ((gcc_struct));
123
124 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_CodePosition;
125
126 struct CodePosition
127 {
128 int line;
129 int charPos;
130 int pos;
131 unsigned int included;
132 } __attribute__ ((gcc_struct));
133
134 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Location;
135
136 struct Location
137 {
138 struct CodePosition start;
139 struct CodePosition end;
140 } __attribute__ ((gcc_struct));
141
142 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Attrib;
143
144 struct Attrib;
145
146 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_ExtDecl;
147
148 struct ExtDecl;
149
150 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_ClassDefinition;
151
152 struct ClassDefinition
153 {
154 struct ClassDefinition * prev;
155 struct ClassDefinition * next;
156 struct Location loc;
157 struct Specifier * _class;
158 struct __ecereNameSpace__ecere__sys__OldList *  baseSpecs;
159 struct __ecereNameSpace__ecere__sys__OldList *  definitions;
160 struct Symbol * symbol;
161 struct Location blockStart;
162 struct Location nameLoc;
163 int endid;
164 int declMode;
165 unsigned int deleteWatchable;
166 } __attribute__ ((gcc_struct));
167
168 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Context;
169
170 struct Context
171 {
172 struct Context * parent;
173 struct __ecereNameSpace__ecere__sys__BinaryTree types;
174 struct __ecereNameSpace__ecere__sys__BinaryTree classes;
175 struct __ecereNameSpace__ecere__sys__BinaryTree symbols;
176 struct __ecereNameSpace__ecere__sys__BinaryTree structSymbols;
177 int nextID;
178 int simpleID;
179 struct __ecereNameSpace__ecere__sys__BinaryTree templateTypes;
180 struct ClassDefinition * classDef;
181 unsigned int templateTypesOnly;
182 unsigned int hasNameSpace;
183 } __attribute__ ((gcc_struct));
184
185 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Instantiation;
186
187 struct Instantiation
188 {
189 struct Instantiation * prev;
190 struct Instantiation * next;
191 struct Location loc;
192 struct Specifier * _class;
193 struct Expression * exp;
194 struct __ecereNameSpace__ecere__sys__OldList *  members;
195 struct Symbol * symbol;
196 unsigned int fullSet;
197 unsigned int isConstant;
198 unsigned char *  data;
199 struct Location nameLoc;
200 struct Location insideLoc;
201 unsigned int built;
202 } __attribute__ ((gcc_struct));
203
204 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Declaration;
205
206 struct Declaration
207 {
208 struct Declaration * prev;
209 struct Declaration * next;
210 struct Location loc;
211 int type;
212 union
213 {
214 struct
215 {
216 struct __ecereNameSpace__ecere__sys__OldList *  specifiers;
217 struct __ecereNameSpace__ecere__sys__OldList *  declarators;
218 } __attribute__ ((gcc_struct));
219 struct Instantiation * inst;
220 struct
221 {
222 struct Identifier * id;
223 struct Expression * exp;
224 } __attribute__ ((gcc_struct));
225 } __attribute__ ((gcc_struct));
226 struct Specifier * extStorage;
227 struct Symbol * symbol;
228 int declMode;
229 } __attribute__ ((gcc_struct));
230
231 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Statement;
232
233 struct Statement;
234
235 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_TypeName;
236
237 struct TypeName;
238
239 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Initializer;
240
241 struct Initializer;
242
243 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__DataValue;
244
245 struct __ecereNameSpace__ecere__com__DataValue
246 {
247 union
248 {
249 char c;
250 unsigned char uc;
251 short s;
252 unsigned short us;
253 int i;
254 unsigned int ui;
255 void *  p;
256 float f;
257 double d;
258 long long i64;
259 uint64 ui64;
260 } __attribute__ ((gcc_struct));
261 } __attribute__ ((gcc_struct));
262
263 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Expression;
264
265 struct Expression
266 {
267 struct Expression * prev;
268 struct Expression * next;
269 struct Location loc;
270 int type;
271 union
272 {
273 struct
274 {
275 char *  constant;
276 struct Identifier * identifier;
277 } __attribute__ ((gcc_struct));
278 struct Statement * compound;
279 struct Instantiation * instance;
280 char *  string;
281 struct __ecereNameSpace__ecere__sys__OldList *  list;
282 struct
283 {
284 struct __ecereNameSpace__ecere__sys__OldList * specifiers;
285 struct Declarator * decl;
286 } __attribute__ ((gcc_struct)) _classExp;
287 struct
288 {
289 struct Identifier * id;
290 } __attribute__ ((gcc_struct)) classData;
291 struct
292 {
293 struct Expression * exp;
294 struct __ecereNameSpace__ecere__sys__OldList * arguments;
295 struct Location argLoc;
296 } __attribute__ ((gcc_struct)) call;
297 struct
298 {
299 struct Expression * exp;
300 struct __ecereNameSpace__ecere__sys__OldList * index;
301 } __attribute__ ((gcc_struct)) index;
302 struct
303 {
304 struct Expression * exp;
305 struct Identifier * member;
306 int memberType;
307 unsigned int thisPtr;
308 } __attribute__ ((gcc_struct)) member;
309 struct
310 {
311 int op;
312 struct Expression * exp1;
313 struct Expression * exp2;
314 } __attribute__ ((gcc_struct)) op;
315 struct TypeName * typeName;
316 struct Specifier * _class;
317 struct
318 {
319 struct TypeName * typeName;
320 struct Expression * exp;
321 } __attribute__ ((gcc_struct)) cast;
322 struct
323 {
324 struct Expression * cond;
325 struct __ecereNameSpace__ecere__sys__OldList * exp;
326 struct Expression * elseExp;
327 } __attribute__ ((gcc_struct)) cond;
328 struct
329 {
330 struct TypeName * typeName;
331 struct Expression * size;
332 } __attribute__ ((gcc_struct)) _new;
333 struct
334 {
335 struct TypeName * typeName;
336 struct Expression * size;
337 struct Expression * exp;
338 } __attribute__ ((gcc_struct)) _renew;
339 struct
340 {
341 char * table;
342 struct Identifier * id;
343 } __attribute__ ((gcc_struct)) db;
344 struct
345 {
346 struct Expression * ds;
347 struct Expression * name;
348 } __attribute__ ((gcc_struct)) dbopen;
349 struct
350 {
351 struct TypeName * typeName;
352 struct Initializer * initializer;
353 } __attribute__ ((gcc_struct)) initializer;
354 struct
355 {
356 struct Expression * exp;
357 struct TypeName * typeName;
358 } __attribute__ ((gcc_struct)) vaArg;
359 } __attribute__ ((gcc_struct));
360 unsigned int debugValue;
361 struct __ecereNameSpace__ecere__com__DataValue val;
362 uint64 address;
363 unsigned int hasAddress;
364 struct Type * expType;
365 struct Type * destType;
366 unsigned int usage;
367 int tempCount;
368 unsigned int byReference;
369 unsigned int isConstant;
370 unsigned int addedThis;
371 unsigned int needCast;
372 unsigned int thisPtr;
373 } __attribute__ ((gcc_struct));
374
375 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_TemplateDatatype;
376
377 struct TemplateDatatype
378 {
379 struct __ecereNameSpace__ecere__sys__OldList *  specifiers;
380 struct Declarator * decl;
381 } __attribute__ ((gcc_struct));
382
383 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_TemplateArgument;
384
385 struct TemplateArgument
386 {
387 struct TemplateArgument * prev;
388 struct TemplateArgument * next;
389 struct Location loc;
390 struct Identifier * name;
391 int type;
392 union
393 {
394 struct Expression * expression;
395 struct Identifier * identifier;
396 struct TemplateDatatype * templateDatatype;
397 } __attribute__ ((gcc_struct));
398 } __attribute__ ((gcc_struct));
399
400 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_TemplateParameter;
401
402 struct TemplateParameter
403 {
404 struct TemplateParameter * prev;
405 struct TemplateParameter * next;
406 struct Location loc;
407 int type;
408 struct Identifier * identifier;
409 union
410 {
411 struct TemplateDatatype * dataType;
412 int memberType;
413 } __attribute__ ((gcc_struct));
414 struct TemplateArgument * defaultArgument;
415 char *  dataTypeString;
416 struct Type * baseType;
417 } __attribute__ ((gcc_struct));
418
419 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Specifier;
420
421 struct Specifier
422 {
423 struct Specifier * prev;
424 struct Specifier * next;
425 struct Location loc;
426 int type;
427 union
428 {
429 int specifier;
430 struct
431 {
432 struct ExtDecl * extDecl;
433 char *  name;
434 struct Symbol * symbol;
435 struct __ecereNameSpace__ecere__sys__OldList *  templateArgs;
436 } __attribute__ ((gcc_struct));
437 struct
438 {
439 struct Identifier * id;
440 struct __ecereNameSpace__ecere__sys__OldList *  list;
441 struct __ecereNameSpace__ecere__sys__OldList *  baseSpecs;
442 struct __ecereNameSpace__ecere__sys__OldList *  definitions;
443 unsigned int addNameSpace;
444 struct Context * ctx;
445 struct ExtDecl * extDeclStruct;
446 } __attribute__ ((gcc_struct));
447 struct Expression * expression;
448 struct Specifier * _class;
449 struct TemplateParameter * templateParameter;
450 } __attribute__ ((gcc_struct));
451 } __attribute__ ((gcc_struct));
452
453 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Identifier;
454
455 struct Identifier
456 {
457 struct Identifier * prev;
458 struct Identifier * next;
459 struct Location loc;
460 struct Symbol * classSym;
461 struct Specifier * _class;
462 char *  string;
463 struct Identifier * badID;
464 } __attribute__ ((gcc_struct));
465
466 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Declarator;
467
468 struct Declarator
469 {
470 struct Declarator * prev;
471 struct Declarator * next;
472 struct Location loc;
473 int type;
474 struct Symbol * symbol;
475 struct Declarator * declarator;
476 union
477 {
478 struct Identifier * identifier;
479 struct
480 {
481 struct Expression * exp;
482 struct Expression * posExp;
483 struct Attrib * attrib;
484 } __attribute__ ((gcc_struct)) structDecl;
485 struct
486 {
487 struct Expression * exp;
488 struct Specifier * enumClass;
489 } __attribute__ ((gcc_struct)) array;
490 struct
491 {
492 struct __ecereNameSpace__ecere__sys__OldList * parameters;
493 } __attribute__ ((gcc_struct)) function;
494 struct
495 {
496 struct __ecereNameSpace__ecere__com__Instance * pointer;
497 } __attribute__ ((gcc_struct)) pointer;
498 struct
499 {
500 struct ExtDecl * extended;
501 } __attribute__ ((gcc_struct)) extended;
502 } __attribute__ ((gcc_struct));
503 } __attribute__ ((gcc_struct));
504
505 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_FunctionDefinition;
506
507 struct FunctionDefinition
508 {
509 struct FunctionDefinition * prev;
510 struct FunctionDefinition * next;
511 struct Location loc;
512 struct __ecereNameSpace__ecere__sys__OldList *  specifiers;
513 struct Declarator * declarator;
514 struct __ecereNameSpace__ecere__sys__OldList *  declarations;
515 struct Statement * body;
516 struct __ecereNameSpace__ecere__com__Class * _class;
517 struct __ecereNameSpace__ecere__sys__OldList attached;
518 int declMode;
519 struct Type * type;
520 struct Symbol * propSet;
521 int tempCount;
522 unsigned int propertyNoThis;
523 } __attribute__ ((gcc_struct));
524
525 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_DBTableDef;
526
527 struct DBTableDef;
528
529 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_External;
530
531 struct External
532 {
533 struct External * prev;
534 struct External * next;
535 struct Location loc;
536 int type;
537 struct Symbol * symbol;
538 union
539 {
540 struct FunctionDefinition * function;
541 struct ClassDefinition * _class;
542 struct Declaration * declaration;
543 char *  importString;
544 struct Identifier * id;
545 struct DBTableDef * table;
546 } __attribute__ ((gcc_struct));
547 int importType;
548 } __attribute__ ((gcc_struct));
549
550 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_ModuleImport;
551
552 struct ModuleImport;
553
554 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_ClassImport;
555
556 struct ClassImport;
557
558 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Symbol;
559
560 struct Symbol
561 {
562 char *  string;
563 struct Symbol * parent;
564 struct Symbol * left;
565 struct Symbol * right;
566 int depth;
567 struct Type * type;
568 union
569 {
570 struct __ecereNameSpace__ecere__com__Method * method;
571 struct __ecereNameSpace__ecere__com__Property * _property;
572 struct __ecereNameSpace__ecere__com__Class * registered;
573 } __attribute__ ((gcc_struct));
574 int id;
575 int idCode;
576 union
577 {
578 struct
579 {
580 struct External * pointerExternal;
581 struct External * structExternal;
582 } __attribute__ ((gcc_struct));
583 struct
584 {
585 struct External * externalGet;
586 struct External * externalSet;
587 struct External * externalPtr;
588 struct External * externalIsSet;
589 } __attribute__ ((gcc_struct));
590 struct
591 {
592 struct External * methodExternal;
593 struct External * methodCodeExternal;
594 } __attribute__ ((gcc_struct));
595 } __attribute__ ((gcc_struct));
596 unsigned int imported;
597 unsigned int declaredStructSym;
598 struct __ecereNameSpace__ecere__com__Class * _class;
599 unsigned int declaredStruct;
600 unsigned int needConstructor;
601 unsigned int needDestructor;
602 char *  constructorName;
603 char *  structName;
604 char *  className;
605 char *  destructorName;
606 struct ModuleImport * module;
607 struct ClassImport * _import;
608 struct Location nameLoc;
609 unsigned int isParam;
610 unsigned int isRemote;
611 unsigned int isStruct;
612 unsigned int fireWatchersDone;
613 int declaring;
614 unsigned int classData;
615 unsigned int isStatic;
616 char *  shortName;
617 struct __ecereNameSpace__ecere__sys__OldList *  templateParams;
618 struct __ecereNameSpace__ecere__sys__OldList templatedClasses;
619 struct Context * ctx;
620 int isIterator;
621 struct Expression * propCategory;
622 } __attribute__ ((gcc_struct));
623
624 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Type;
625
626 struct Type
627 {
628 struct Type * prev;
629 struct Type * next;
630 int refCount;
631 union
632 {
633 struct Symbol * _class;
634 struct
635 {
636 struct __ecereNameSpace__ecere__sys__OldList members;
637 char *  enumName;
638 } __attribute__ ((gcc_struct));
639 struct
640 {
641 struct Type * returnType;
642 struct __ecereNameSpace__ecere__sys__OldList params;
643 struct Symbol * thisClass;
644 unsigned int staticMethod;
645 struct TemplateParameter * thisClassTemplate;
646 } __attribute__ ((gcc_struct));
647 struct
648 {
649 struct __ecereNameSpace__ecere__com__Method * method;
650 struct __ecereNameSpace__ecere__com__Class * methodClass;
651 struct __ecereNameSpace__ecere__com__Class * usedClass;
652 } __attribute__ ((gcc_struct));
653 struct
654 {
655 struct Type * arrayType;
656 int arraySize;
657 struct Expression * arraySizeExp;
658 unsigned int freeExp;
659 struct Symbol * enumClass;
660 } __attribute__ ((gcc_struct));
661 struct Type * type;
662 struct TemplateParameter * templateParameter;
663 } __attribute__ ((gcc_struct));
664 unsigned int isSigned;
665 int kind;
666 unsigned int constant;
667 unsigned int size;
668 char *  name;
669 char *  typeName;
670 unsigned int count;
671 unsigned int truth;
672 int classObjectType;
673 unsigned int byReference;
674 unsigned int extraParam;
675 int alignment;
676 unsigned int directClassAccess;
677 unsigned int computing;
678 unsigned int dllExport;
679 unsigned int offset;
680 unsigned int keepCast;
681 unsigned int passAsTemplate;
682 int bitFieldCount;
683 } __attribute__ ((gcc_struct));
684
685 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__Class;
686
687 struct __ecereNameSpace__ecere__com__Class
688 {
689 struct __ecereNameSpace__ecere__com__Class * prev;
690 struct __ecereNameSpace__ecere__com__Class * next;
691 char *  name;
692 int offset;
693 int structSize;
694 int (* *  _vTbl)();
695 int vTblSize;
696 int (*  Constructor)(struct __ecereNameSpace__ecere__com__Instance *);
697 void (*  Destructor)(struct __ecereNameSpace__ecere__com__Instance *);
698 int offsetClass;
699 int sizeClass;
700 struct __ecereNameSpace__ecere__com__Class * base;
701 struct __ecereNameSpace__ecere__sys__BinaryTree methods;
702 struct __ecereNameSpace__ecere__sys__BinaryTree members;
703 struct __ecereNameSpace__ecere__sys__BinaryTree prop;
704 struct __ecereNameSpace__ecere__sys__OldList membersAndProperties;
705 struct __ecereNameSpace__ecere__sys__BinaryTree classProperties;
706 struct __ecereNameSpace__ecere__sys__OldList derivatives;
707 int memberID;
708 int startMemberID;
709 int type;
710 struct __ecereNameSpace__ecere__com__Instance * module;
711 struct __ecereNameSpace__ecere__com__NameSpace *  nameSpace;
712 char *  dataTypeString;
713 struct Type * dataType;
714 int typeSize;
715 int defaultAlignment;
716 void (*  Initialize)();
717 int memberOffset;
718 struct __ecereNameSpace__ecere__sys__OldList selfWatchers;
719 char *  designerClass;
720 unsigned int noExpansion;
721 char *  defaultProperty;
722 unsigned int comRedefinition;
723 int count;
724 unsigned int isRemote;
725 unsigned int internalDecl;
726 void *  data;
727 unsigned int computeSize;
728 int structAlignment;
729 int destructionWatchOffset;
730 unsigned int fixed;
731 struct __ecereNameSpace__ecere__sys__OldList delayedCPValues;
732 int inheritanceAccess;
733 char *  fullName;
734 void *  symbol;
735 struct __ecereNameSpace__ecere__sys__OldList conversions;
736 struct __ecereNameSpace__ecere__sys__OldList templateParams;
737 struct __ecereNameSpace__ecere__com__ClassTemplateArgument *  templateArgs;
738 struct __ecereNameSpace__ecere__com__Class * templateClass;
739 struct __ecereNameSpace__ecere__sys__OldList templatized;
740 int numParams;
741 } __attribute__ ((gcc_struct));
742
743 extern long long __ecereNameSpace__ecere__com__eClass_GetProperty(struct __ecereNameSpace__ecere__com__Class * _class, char *  name);
744
745 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__Instance;
746
747 struct __ecereNameSpace__ecere__com__Instance
748 {
749 int (* *  _vTbl)();
750 struct __ecereNameSpace__ecere__com__Class * _class;
751 int _refCount;
752 } __attribute__ ((gcc_struct));
753
754 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__DataMember;
755
756 struct __ecereNameSpace__ecere__com__DataMember
757 {
758 struct __ecereNameSpace__ecere__com__DataMember * prev;
759 struct __ecereNameSpace__ecere__com__DataMember * next;
760 char *  name;
761 unsigned int isProperty;
762 int memberAccess;
763 int id;
764 struct __ecereNameSpace__ecere__com__Class * _class;
765 char *  dataTypeString;
766 struct __ecereNameSpace__ecere__com__Class * dataTypeClass;
767 struct Type * dataType;
768 int type;
769 int offset;
770 int memberID;
771 struct __ecereNameSpace__ecere__sys__OldList members;
772 struct __ecereNameSpace__ecere__sys__BinaryTree membersAlpha;
773 int memberOffset;
774 int structAlignment;
775 } __attribute__ ((gcc_struct));
776
777 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__SerialBuffer;
778
779 struct __ecereNameSpace__ecere__com__SerialBuffer
780 {
781 unsigned char *  _buffer;
782 unsigned int count;
783 unsigned int _size;
784 unsigned int pos;
785 } __attribute__ ((gcc_struct));
786
787 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__ClassTemplateArgument;
788
789 struct __ecereNameSpace__ecere__com__ClassTemplateArgument
790 {
791 union
792 {
793 struct
794 {
795 char *  dataTypeString;
796 struct __ecereNameSpace__ecere__com__Class * dataTypeClass;
797 } __attribute__ ((gcc_struct));
798 struct __ecereNameSpace__ecere__com__DataValue expression;
799 struct
800 {
801 char *  memberString;
802 union
803 {
804 struct __ecereNameSpace__ecere__com__DataMember * member;
805 struct __ecereNameSpace__ecere__com__Property * prop;
806 struct __ecereNameSpace__ecere__com__Method * method;
807 } __attribute__ ((gcc_struct));
808 } __attribute__ ((gcc_struct));
809 } __attribute__ ((gcc_struct));
810 } __attribute__ ((gcc_struct));
811
812 enum yytokentype
813 {
814 IDENTIFIER = 258, CONSTANT = 259, STRING_LITERAL = 260, SIZEOF = 261, PTR_OP = 262, INC_OP = 263, DEC_OP = 264, LEFT_OP = 265, RIGHT_OP = 266, LE_OP = 267, GE_OP = 268, EQ_OP = 269, NE_OP = 270, AND_OP = 271, OR_OP = 272, MUL_ASSIGN = 273, DIV_ASSIGN = 274, MOD_ASSIGN = 275, ADD_ASSIGN = 276, SUB_ASSIGN = 277, LEFT_ASSIGN = 278, RIGHT_ASSIGN = 279, AND_ASSIGN = 280, XOR_ASSIGN = 281, OR_ASSIGN = 282, TYPE_NAME = 283, TYPEDEF = 284, EXTERN = 285, STATIC = 286, AUTO = 287, REGISTER = 288, CHAR = 289, SHORT = 290, INT = 291, UINT = 292, INT64 = 293, LONG = 294, SIGNED = 295, UNSIGNED = 296, FLOAT = 297, DOUBLE = 298, CONST = 299, VOLATILE = 300, VOID = 301, VALIST = 302, STRUCT = 303, UNION = 304, ENUM = 305, ELLIPSIS = 306, CASE = 307, DEFAULT = 308, IF = 309, SWITCH = 310, WHILE = 311, DO = 312, FOR = 313, GOTO = 314, CONTINUE = 315, BREAK = 316, RETURN = 317, IFX = 318, ELSE = 319, CLASS = 320, THISCLASS = 321, CLASS_NAME = 322, PROPERTY = 323, SETPROP = 324, GETPROP = 325, NEWOP = 326, RENEW = 327, DELETE = 328, EXT_DECL = 329, EXT_STORAGE = 330, IMPORT = 331, DEFINE = 332, VIRTUAL = 333, ATTRIB = 334, PUBLIC = 335, PRIVATE = 336, TYPED_OBJECT = 337, ANY_OBJECT = 338, _INCREF = 339, EXTENSION = 340, ASM = 341, TYPEOF = 342, WATCH = 343, STOPWATCHING = 344, FIREWATCHERS = 345, WATCHABLE = 346, CLASS_DESIGNER = 347, CLASS_NO_EXPANSION = 348, CLASS_FIXED = 349, ISPROPSET = 350, CLASS_DEFAULT_PROPERTY = 351, PROPERTY_CATEGORY = 352, CLASS_DATA = 353, CLASS_PROPERTY = 354, SUBCLASS = 355, NAMESPACE = 356, NEW0OP = 357, RENEW0 = 358, VAARG = 359, DBTABLE = 360, DBFIELD = 361, DBINDEX = 362, DATABASE_OPEN = 363, ALIGNOF = 364, ATTRIB_DEP = 365, __ATTRIB = 366
815 };
816
817 typedef union YYSTYPE
818 {
819 int specifierType;
820 int i;
821 int declMode;
822 struct Identifier * id;
823 struct Expression * exp;
824 struct Specifier * specifier;
825 struct __ecereNameSpace__ecere__sys__OldList * list;
826 struct Enumerator * enumerator;
827 struct Declarator * declarator;
828 struct __ecereNameSpace__ecere__com__Instance * pointer;
829 struct Initializer * initializer;
830 struct InitDeclarator * initDeclarator;
831 struct TypeName * typeName;
832 struct Declaration * declaration;
833 struct Statement * stmt;
834 struct FunctionDefinition * function;
835 struct External * external;
836 struct Context * context;
837 struct __ecereNameSpace__ecere__com__Instance * asmField;
838 struct Attrib * attrib;
839 struct ExtDecl * extDecl;
840 struct Attribute * attribute;
841 struct Instantiation * instance;
842 struct MembersInit * membersInit;
843 struct MemberInit * memberInit;
844 struct ClassFunction * classFunction;
845 struct ClassDefinition * _class;
846 struct ClassDef * classDef;
847 struct PropertyDef * prop;
848 char * string;
849 struct Symbol * symbol;
850 struct PropertyWatch * propertyWatch;
851 struct TemplateParameter * templateParameter;
852 struct TemplateArgument * templateArgument;
853 struct TemplateDatatype * templateDatatype;
854 struct __ecereNameSpace__ecere__com__Instance * dbtableEntry;
855 struct __ecereNameSpace__ecere__com__Instance * dbindexItem;
856 struct DBTableDef * dbtableDef;
857 } __attribute__ ((gcc_struct)) YYSTYPE;
858
859 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Enumerator;
860
861 struct Enumerator
862 {
863 struct Enumerator * prev;
864 struct Enumerator * next;
865 struct Location loc;
866 struct Identifier * id;
867 struct Expression * exp;
868 } __attribute__ ((gcc_struct));
869
870 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_InitDeclarator;
871
872 struct InitDeclarator
873 {
874 struct InitDeclarator * prev;
875 struct InitDeclarator * next;
876 struct Location loc;
877 struct Declarator * declarator;
878 struct Initializer * initializer;
879 } __attribute__ ((gcc_struct));
880
881 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Attribute;
882
883 struct Attribute;
884
885 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_ClassFunction;
886
887 struct ClassFunction
888 {
889 struct ClassFunction * prev;
890 struct ClassFunction * next;
891 struct Location loc;
892 struct __ecereNameSpace__ecere__sys__OldList *  specifiers;
893 struct Declarator * declarator;
894 struct __ecereNameSpace__ecere__sys__OldList *  declarations;
895 struct Statement * body;
896 struct __ecereNameSpace__ecere__com__Class * _class;
897 struct __ecereNameSpace__ecere__sys__OldList attached;
898 int declMode;
899 struct Type * type;
900 struct Symbol * propSet;
901 unsigned int isVirtual;
902 unsigned int isConstructor;
903 unsigned int isDestructor;
904 unsigned int dontMangle;
905 int id;
906 int idCode;
907 } __attribute__ ((gcc_struct));
908
909 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_MembersInit;
910
911 struct MembersInit;
912
913 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_MemberInit;
914
915 struct MemberInit;
916
917 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_PropertyDef;
918
919 struct PropertyDef
920 {
921 struct PropertyDef * prev;
922 struct PropertyDef * next;
923 struct Location loc;
924 struct __ecereNameSpace__ecere__sys__OldList *  specifiers;
925 struct Declarator * declarator;
926 struct Identifier * id;
927 struct Statement * getStmt;
928 struct Statement * setStmt;
929 struct Statement * issetStmt;
930 struct Symbol * symbol;
931 unsigned int conversion;
932 unsigned int isWatchable;
933 struct Expression * category;
934 } __attribute__ ((gcc_struct));
935
936 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_PropertyWatch;
937
938 struct PropertyWatch;
939
940 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_ClassDef;
941
942 struct ClassDef
943 {
944 struct ClassDef * prev;
945 struct ClassDef * next;
946 struct Location loc;
947 int type;
948 union
949 {
950 struct Declaration * decl;
951 struct ClassFunction * function;
952 struct __ecereNameSpace__ecere__sys__OldList *  defProperties;
953 struct PropertyDef * propertyDef;
954 struct PropertyWatch * propertyWatch;
955 char *  designer;
956 struct Identifier * defaultProperty;
957 struct
958 {
959 struct Identifier * id;
960 struct Initializer * initializer;
961 } __attribute__ ((gcc_struct));
962 } __attribute__ ((gcc_struct));
963 int memberAccess;
964 void *  object;
965 } __attribute__ ((gcc_struct));
966
967 extern YYSTYPE yylval;
968
969 extern struct Location yylloc;
970
971 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Definition;
972
973 struct Definition
974 {
975 struct Definition * prev;
976 struct Definition * next;
977 char *  name;
978 int type;
979 } __attribute__ ((gcc_struct));
980
981 struct ClassDefine
982 {
983 struct Definition * prev;
984 struct Definition * next;
985 char *  name;
986 int type;
987 char * base;
988 struct __ecereNameSpace__ecere__sys__OldList propertiesAndMembers;
989 struct __ecereNameSpace__ecere__sys__OldList classProperties;
990 struct __ecereNameSpace__ecere__sys__OldList methods;
991 unsigned int isRemote;
992 unsigned int isWatchable;
993 unsigned int fixed;
994 unsigned int isStatic;
995 unsigned int noExpansion;
996 } __attribute__ ((gcc_struct));
997
998 static struct __ecereNameSpace__ecere__com__Class * __ecereClass_ClassDefine;
999
1000 struct Define
1001 {
1002 struct Definition * prev;
1003 struct Definition * next;
1004 char *  name;
1005 int type;
1006 struct Expression * exp;
1007 } __attribute__ ((gcc_struct));
1008
1009 static struct __ecereNameSpace__ecere__com__Class * __ecereClass_Define;
1010
1011 struct FunctionDefine
1012 {
1013 struct Definition * prev;
1014 struct Definition * next;
1015 char *  name;
1016 int type;
1017 char * dataType;
1018 } __attribute__ ((gcc_struct));
1019
1020 static struct __ecereNameSpace__ecere__com__Class * __ecereClass_FunctionDefine;
1021
1022 struct DataDefine
1023 {
1024 struct Definition * prev;
1025 struct Definition * next;
1026 char *  name;
1027 int type;
1028 char * dataType;
1029 } __attribute__ ((gcc_struct));
1030
1031 static struct __ecereNameSpace__ecere__com__Class * __ecereClass_DataDefine;
1032
1033 struct MethodDefine
1034 {
1035 struct MethodDefine * prev, * next;
1036 char * name;
1037 int memberAccess;
1038 char * type;
1039 unsigned int isVirtual;
1040 } __attribute__ ((gcc_struct));
1041
1042 static struct __ecereNameSpace__ecere__com__Class * __ecereClass_MethodDefine;
1043
1044 struct PropertyDefine
1045 {
1046 struct PropertyDefine * prev, * next;
1047 char * name;
1048 int isProperty;
1049 char * type;
1050 unsigned int isWatchable;
1051 int memberAccess;
1052 unsigned int isVirtual;
1053 unsigned int hasSet, hasGet;
1054 } __attribute__ ((gcc_struct));
1055
1056 static struct __ecereNameSpace__ecere__com__Class * __ecereClass_PropertyDefine;
1057
1058 struct DataMemberDefine
1059 {
1060 struct DataMemberDefine * prev, * next;
1061 char * name;
1062 int isProperty;
1063 char * type;
1064 struct __ecereNameSpace__ecere__sys__OldList dataMembers;
1065 struct __ecereNameSpace__ecere__sys__OldList classProperties;
1066 int memberAccess;
1067 int memberType;
1068 int size, bitPos;
1069 } __attribute__ ((gcc_struct));
1070
1071 static struct __ecereNameSpace__ecere__com__Class * __ecereClass_DataMemberDefine;
1072
1073 void FreeMethodDefine(struct MethodDefine * method)
1074 {
1075 (__ecereNameSpace__ecere__com__eSystem_Delete(method->name), method->name = 0);
1076 (__ecereNameSpace__ecere__com__eSystem_Delete(method->type), method->type = 0);
1077 }
1078
1079 void FreeDataMemberDefine(struct DataMemberDefine * dataMember)
1080 {
1081 (__ecereNameSpace__ecere__com__eSystem_Delete(dataMember->name), dataMember->name = 0);
1082 (__ecereNameSpace__ecere__com__eSystem_Delete(dataMember->type), dataMember->type = 0);
1083 }
1084
1085 void FreeDataDefine(struct DataDefine * data)
1086 {
1087 (__ecereNameSpace__ecere__com__eSystem_Delete(data->name), data->name = 0);
1088 (__ecereNameSpace__ecere__com__eSystem_Delete(data->type), data->type = 0);
1089 }
1090
1091 void __ecereMethod___ecereNameSpace__ecere__sys__OldList_Free(struct __ecereNameSpace__ecere__sys__OldList * this, void (*  freeFn)(void * ));
1092
1093 void FreeDefinition(struct Definition * definition)
1094 {
1095 (__ecereNameSpace__ecere__com__eSystem_Delete(definition->name), definition->name = 0);
1096 switch(definition->type)
1097 {
1098 case 1:
1099 {
1100 struct ClassDefine * classDefine = (struct ClassDefine *)definition;
1101
1102 (__ecereNameSpace__ecere__com__eSystem_Delete(classDefine->base), classDefine->base = 0);
1103 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Free(&classDefine->methods, FreeMethodDefine);
1104 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Free(&classDefine->propertiesAndMembers, FreeDataMemberDefine);
1105 break;
1106 }
1107 case 3:
1108 (__ecereNameSpace__ecere__com__eSystem_Delete(((struct FunctionDefine *)definition)->dataType), ((struct FunctionDefine *)definition)->dataType = 0);
1109 break;
1110 case 4:
1111 (__ecereNameSpace__ecere__com__eSystem_Delete(((struct DataDefine *)definition)->dataType), ((struct DataDefine *)definition)->dataType = 0);
1112 break;
1113 case 2:
1114 break;
1115 }
1116 }
1117
1118 static unsigned int globalInstance = 0x0;
1119
1120 static struct Context * globalContext;
1121
1122 static struct __ecereNameSpace__ecere__sys__OldList defines, imports, precompDefines;
1123
1124 static struct __ecereNameSpace__ecere__com__Instance * privateModule;
1125
1126 struct __ecereNameSpace__ecere__sys__OldList _excludedSymbols = 
1127 {
1128 0, 0, 0, (unsigned int)&((struct Symbol *)(void *)0)->left, 0
1129 };
1130
1131 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__NameSpace;
1132
1133 struct __ecereNameSpace__ecere__com__NameSpace
1134 {
1135 char *  name;
1136 struct __ecereNameSpace__ecere__com__NameSpace *  btParent;
1137 struct __ecereNameSpace__ecere__com__NameSpace *  left;
1138 struct __ecereNameSpace__ecere__com__NameSpace *  right;
1139 int depth;
1140 struct __ecereNameSpace__ecere__com__NameSpace *  parent;
1141 struct __ecereNameSpace__ecere__sys__BinaryTree nameSpaces;
1142 struct __ecereNameSpace__ecere__sys__BinaryTree classes;
1143 struct __ecereNameSpace__ecere__sys__BinaryTree defines;
1144 struct __ecereNameSpace__ecere__sys__BinaryTree functions;
1145 } __attribute__ ((gcc_struct));
1146
1147 static struct __ecereNameSpace__ecere__com__NameSpace globalData;
1148
1149 extern struct Identifier * GetDeclId(struct Declarator * decl);
1150
1151 extern char *  __ecereNameSpace__ecere__sys__CopyString(char *  string);
1152
1153 extern void ProcessExpressionType(struct Expression * exp);
1154
1155 extern void ComputeExpression(struct Expression * exp);
1156
1157 extern int strtol(char * , char * * , int base);
1158
1159 extern void FreeExpression(struct Expression * exp);
1160
1161 extern struct Type * ProcessType(struct __ecereNameSpace__ecere__sys__OldList * specs, struct Declarator * decl);
1162
1163 extern void PrintType(struct Type * type, char *  string, unsigned int printName, unsigned int fullName);
1164
1165 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__BitMember;
1166
1167 struct __ecereNameSpace__ecere__com__BitMember
1168 {
1169 struct __ecereNameSpace__ecere__com__BitMember * prev;
1170 struct __ecereNameSpace__ecere__com__BitMember * next;
1171 char *  name;
1172 unsigned int isProperty;
1173 int memberAccess;
1174 int id;
1175 struct __ecereNameSpace__ecere__com__Class * _class;
1176 char *  dataTypeString;
1177 struct __ecereNameSpace__ecere__com__Class * dataTypeClass;
1178 struct Type * dataType;
1179 int type;
1180 int size;
1181 int pos;
1182 uint64 mask;
1183 } __attribute__ ((gcc_struct));
1184
1185 extern struct __ecereNameSpace__ecere__com__BitMember * __ecereNameSpace__ecere__com__eClass_AddBitMember(struct __ecereNameSpace__ecere__com__Class * _class, char *  name, char *  type, int bitSize, int bitPos, int declMode);
1186
1187 extern struct __ecereNameSpace__ecere__com__DataMember * __ecereNameSpace__ecere__com__eMember_AddDataMember(struct __ecereNameSpace__ecere__com__DataMember * member, char *  name, char *  type, unsigned int size, unsigned int alignment, int declMode);
1188
1189 extern struct __ecereNameSpace__ecere__com__DataMember * __ecereNameSpace__ecere__com__eClass_AddDataMember(struct __ecereNameSpace__ecere__com__Class * _class, char *  name, char *  type, unsigned int size, unsigned int alignment, int declMode);
1190
1191 extern struct __ecereNameSpace__ecere__com__DataMember * __ecereNameSpace__ecere__com__eMember_New(int type, int declMode);
1192
1193 extern unsigned int __ecereNameSpace__ecere__com__eMember_AddMember(struct __ecereNameSpace__ecere__com__DataMember * addTo, struct __ecereNameSpace__ecere__com__DataMember * dataMember);
1194
1195 extern unsigned int __ecereNameSpace__ecere__com__eClass_AddMember(struct __ecereNameSpace__ecere__com__Class * _class, struct __ecereNameSpace__ecere__com__DataMember * dataMember);
1196
1197 extern struct __ecereNameSpace__ecere__sys__OldList *  MkListOne(void *  item);
1198
1199 extern struct Declarator * MkDeclaratorIdentifier(struct Identifier * id);
1200
1201 extern char *  StringFromSpecDecl(struct __ecereNameSpace__ecere__sys__OldList * specs, struct Declarator * decl);
1202
1203 extern struct __ecereNameSpace__ecere__com__Property * __ecereNameSpace__ecere__com__eClass_AddProperty(struct __ecereNameSpace__ecere__com__Class * _class, char *  name, char *  dataType, void *  setStmt, void *  getStmt, int declMode);
1204
1205 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__ClassProperty;
1206
1207 struct __ecereNameSpace__ecere__com__ClassProperty
1208 {
1209 char *  name;
1210 struct __ecereNameSpace__ecere__com__ClassProperty * parent;
1211 struct __ecereNameSpace__ecere__com__ClassProperty * left;
1212 struct __ecereNameSpace__ecere__com__ClassProperty * right;
1213 int depth;
1214 void (*  Set)(struct __ecereNameSpace__ecere__com__Class *, long long);
1215 long long (*  Get)(struct __ecereNameSpace__ecere__com__Class *);
1216 char *  dataTypeString;
1217 struct Type * dataType;
1218 unsigned int constant;
1219 } __attribute__ ((gcc_struct));
1220
1221 extern struct __ecereNameSpace__ecere__com__ClassProperty * __ecereNameSpace__ecere__com__eClass_AddClassProperty(struct __ecereNameSpace__ecere__com__Class * _class, char *  name, char *  dataType, void *  setStmt, void *  getStmt);
1222
1223 extern struct __ecereNameSpace__ecere__com__Property * __ecereNameSpace__ecere__com__eClass_FindProperty(struct __ecereNameSpace__ecere__com__Class * _class, char *  name, struct __ecereNameSpace__ecere__com__Instance * module);
1224
1225 extern struct __ecereNameSpace__ecere__com__DataMember * __ecereNameSpace__ecere__com__eClass_FindDataMember(struct __ecereNameSpace__ecere__com__Class * _class, char *  name, struct __ecereNameSpace__ecere__com__Instance * module, struct __ecereNameSpace__ecere__com__DataMember **  subMemberStack, int *  subMemberStackPos);
1226
1227 extern void *  __ecereNameSpace__ecere__com__eInstance_New(struct __ecereNameSpace__ecere__com__Class * _class);
1228
1229 void __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add(struct __ecereNameSpace__ecere__sys__OldList * this, void *  item);
1230
1231 static void AddDefinitions(struct ClassDefine * classDefine, struct DataMemberDefine * parentMemberDefine, struct __ecereNameSpace__ecere__com__Class * regClass, struct __ecereNameSpace__ecere__com__DataMember * member, struct __ecereNameSpace__ecere__sys__OldList * definitions)
1232 {
1233 void * __ecereTemp1;
1234
1235 if(definitions != (((void *)0)))
1236 {
1237 struct ClassDef * def;
1238
1239 for(def = definitions->first; def; def = def->next)
1240 {
1241 if(def->type == 2)
1242 {
1243 struct Declaration * decl = def->decl;
1244 struct __ecereNameSpace__ecere__com__DataMember * dataMember;
1245 struct Type * dataType;
1246 struct DataMemberDefine * dataMemberDefine;
1247
1248 if(decl->type == 0)
1249 {
1250 struct Declarator * d;
1251
1252 if(decl->declarators)
1253 {
1254 for(d = (*decl->declarators).first; d; d = d->next)
1255 {
1256 {
1257 struct Identifier * declId = GetDeclId(d);
1258
1259 dataMemberDefine = (__ecereTemp1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_DataMemberDefine), ((struct DataMemberDefine *)__ecereTemp1)->isProperty = 3, ((struct DataMemberDefine *)__ecereTemp1)->memberType = 0, ((struct DataMemberDefine *)__ecereTemp1)->name = __ecereNameSpace__ecere__sys__CopyString(declId->string), ((struct DataMemberDefine *)__ecereTemp1));
1260 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add(&parentMemberDefine->dataMembers, dataMemberDefine);
1261 if(regClass && regClass->type == 2)
1262 {
1263 struct Expression * sizeExp = d->structDecl.exp, * posExp = d->structDecl.posExp;
1264 int bitSize = 0, bitPos = -1;
1265 char dataTypeString[1024];
1266
1267 dataTypeString[0] = '\0';
1268 if(sizeExp)
1269 {
1270 ProcessExpressionType(sizeExp);
1271 ComputeExpression(sizeExp);
1272 if(sizeExp->isConstant)
1273 bitSize = strtol(sizeExp->constant, (((void *)0)), 0);
1274 FreeExpression(sizeExp);
1275 }
1276 if(posExp)
1277 {
1278 ProcessExpressionType(posExp);
1279 ComputeExpression(posExp);
1280 if(posExp->isConstant)
1281 bitPos = strtol(posExp->constant, (((void *)0)), 0);
1282 FreeExpression(posExp);
1283 }
1284 d->structDecl.exp = (((void *)0));
1285 d->structDecl.posExp = (((void *)0));
1286 dataType = ProcessType(decl->specifiers, d);
1287 PrintType(dataType, dataTypeString, 0x0, 0x1);
1288 {
1289 struct __ecereNameSpace__ecere__com__BitMember * member = __ecereNameSpace__ecere__com__eClass_AddBitMember(regClass, declId->string, dataTypeString, 0, 0, def->memberAccess);
1290
1291 member->size = bitSize;
1292 member->pos = bitPos;
1293 dataMember = (struct __ecereNameSpace__ecere__com__DataMember *)member;
1294 }
1295 if(dataMember)
1296 dataMember->dataType = dataType;
1297 dataMemberDefine->size = bitSize;
1298 dataMemberDefine->bitPos = bitPos;
1299 dataMemberDefine->type = __ecereNameSpace__ecere__sys__CopyString(dataTypeString);
1300 }
1301 else
1302 {
1303 {
1304 char typeString[1024];
1305
1306 typeString[0] = '\0';
1307 dataType = ProcessType(decl->specifiers, d);
1308 PrintType(dataType, typeString, 0x0, 0x1);
1309 if(member)
1310 dataMember = __ecereNameSpace__ecere__com__eMember_AddDataMember(member, declId->string, typeString, 0, 0, def->memberAccess);
1311 else
1312 dataMember = __ecereNameSpace__ecere__com__eClass_AddDataMember(regClass, declId->string, typeString, 0, 0, def->memberAccess);
1313 if(dataMember)
1314 dataMember->dataType = dataType;
1315 dataMemberDefine->type = __ecereNameSpace__ecere__sys__CopyString(typeString);
1316 }
1317 }
1318 dataMemberDefine->memberAccess = def->memberAccess;
1319 }
1320 }
1321 }
1322 else if(decl->specifiers)
1323 {
1324 struct Specifier * spec;
1325
1326 for(spec = (*decl->specifiers).first; spec; spec = spec->next)
1327 {
1328 if(spec->type == 3 || spec->type == 4)
1329 {
1330 if(spec->definitions && !spec->id)
1331 {
1332 struct __ecereNameSpace__ecere__com__DataMember * dataMember = __ecereNameSpace__ecere__com__eMember_New((spec->type == 4) ? 1 : 2, def->memberAccess);
1333
1334 dataMemberDefine = (__ecereTemp1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_DataMemberDefine), ((struct DataMemberDefine *)__ecereTemp1)->isProperty = 3, ((struct DataMemberDefine *)__ecereTemp1)->memberType = (spec->type == 4) ? 1 : 2, ((struct DataMemberDefine *)__ecereTemp1));
1335 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add(&parentMemberDefine->dataMembers, dataMemberDefine);
1336 AddDefinitions((((void *)0)), dataMemberDefine, (((void *)0)), dataMember, spec->definitions);
1337 if(member)
1338 __ecereNameSpace__ecere__com__eMember_AddMember(member, dataMember);
1339 else
1340 __ecereNameSpace__ecere__com__eClass_AddMember(regClass, dataMember);
1341 }
1342 else if(spec->definitions && spec->id && (*spec->definitions).count)
1343 {
1344 {
1345 struct Identifier * id = spec->id;
1346 char typeString[1024];
1347
1348 typeString[0] = '\0';
1349 spec->id = (((void *)0));
1350 decl->declarators = MkListOne(MkDeclaratorIdentifier(id));
1351 dataType = ProcessType(decl->specifiers, (((void *)0)));
1352 PrintType(dataType, typeString, 0x0, 0x1);
1353 if(member)
1354 dataMember = __ecereNameSpace__ecere__com__eMember_AddDataMember(member, id->string, typeString, 0, 0, def->memberAccess);
1355 else
1356 dataMember = __ecereNameSpace__ecere__com__eClass_AddDataMember(regClass, id->string, typeString, 0, 0, def->memberAccess);
1357 if(dataMember)
1358 dataMember->dataType = dataType;
1359 }
1360 }
1361 }
1362 }
1363 }
1364 }
1365 else if(decl->type == 2)
1366 {
1367 struct Instantiation * inst = decl->inst;
1368 struct Expression * exp = inst->exp;
1369
1370 if(exp)
1371 {
1372 {
1373 char * string = exp->identifier->string;
1374
1375 {
1376 struct Type * dataType = (dataType = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Type), dataType->kind = 8, dataType->_class = inst->_class->symbol, dataType->refCount = 1, dataType);
1377
1378 if(member)
1379 dataMember = __ecereNameSpace__ecere__com__eMember_AddDataMember(member, string, inst->_class->name, 0, 0, def->memberAccess);
1380 else
1381 dataMember = __ecereNameSpace__ecere__com__eClass_AddDataMember(regClass, string, inst->_class->name, 0, 0, def->memberAccess);
1382 if(dataMember)
1383 dataMember->dataType = dataType;
1384 }
1385 dataMemberDefine = (__ecereTemp1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_DataMemberDefine), ((struct DataMemberDefine *)__ecereTemp1)->isProperty = 3, ((struct DataMemberDefine *)__ecereTemp1)->memberType = 0, ((struct DataMemberDefine *)__ecereTemp1)->name = __ecereNameSpace__ecere__sys__CopyString(string), ((struct DataMemberDefine *)__ecereTemp1)->type = __ecereNameSpace__ecere__sys__CopyString(inst->_class->name), ((struct DataMemberDefine *)__ecereTemp1));
1386 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add(&parentMemberDefine->dataMembers, dataMemberDefine);
1387 }
1388 }
1389 }
1390 }
1391 else if(def->type == 3 && def->propertyDef)
1392 {
1393 struct PropertyDef * propertyDef = def->propertyDef;
1394
1395 {
1396 struct __ecereNameSpace__ecere__com__Property * prop;
1397 struct PropertyDefine * propDefine;
1398
1399 {
1400 char * dataTypeString = StringFromSpecDecl(propertyDef->specifiers, propertyDef->declarator);
1401
1402 prop = __ecereNameSpace__ecere__com__eClass_AddProperty(regClass, propertyDef->conversion ? (((void *)0)) : propertyDef->id->string, dataTypeString, propertyDef->setStmt, propertyDef->getStmt, def->memberAccess);
1403 if(prop)
1404 {
1405 prop->IsSet = (void *)propertyDef->issetStmt;
1406 prop->compiled = 0x0;
1407 }
1408 (__ecereNameSpace__ecere__com__eSystem_Delete(dataTypeString), dataTypeString = 0);
1409 }
1410 if(prop)
1411 {
1412 prop->symbol = (__ecereTemp1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Symbol), ((struct Symbol *)__ecereTemp1)->string = __ecereNameSpace__ecere__sys__CopyString(propertyDef->symbol->string), ((struct Symbol *)__ecereTemp1)->id = propertyDef->symbol->id, ((struct Symbol *)__ecereTemp1)->type = propertyDef->symbol->type, ((struct Symbol *)__ecereTemp1));
1413 if(propertyDef->symbol->type)
1414 propertyDef->symbol->type->refCount++;
1415 propDefine = (__ecereTemp1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_PropertyDefine), ((struct PropertyDefine *)__ecereTemp1)->isProperty = 1, ((struct PropertyDefine *)__ecereTemp1)->name = prop->conversion ? (((void *)0)) : __ecereNameSpace__ecere__sys__CopyString(prop->name), ((struct PropertyDefine *)__ecereTemp1)->type = __ecereNameSpace__ecere__sys__CopyString(prop->dataTypeString), ((struct PropertyDefine *)__ecereTemp1)->isVirtual = 0x0, ((struct PropertyDefine *)__ecereTemp1)->memberAccess = def->memberAccess, ((struct PropertyDefine *)__ecereTemp1)->hasSet = propertyDef->setStmt ? 0x1 : 0x0, ((struct PropertyDefine *)__ecereTemp1)->hasGet = propertyDef->getStmt ? 0x1 : 0x0, ((struct PropertyDefine *)__ecereTemp1)->isWatchable = propertyDef->isWatchable, ((struct PropertyDefine *)__ecereTemp1));
1416 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add(&classDefine->propertiesAndMembers, propDefine);
1417 }
1418 }
1419 }
1420 else if(def->type == 10 && def->propertyDef)
1421 {
1422 struct PropertyDef * propertyDef = def->propertyDef;
1423
1424 {
1425 struct __ecereNameSpace__ecere__com__ClassProperty * prop;
1426 struct PropertyDefine * propDefine;
1427
1428 {
1429 char * dataTypeString = StringFromSpecDecl(propertyDef->specifiers, propertyDef->declarator);
1430
1431 prop = __ecereNameSpace__ecere__com__eClass_AddClassProperty(regClass, propertyDef->id->string, dataTypeString, propertyDef->setStmt, propertyDef->getStmt);
1432 (__ecereNameSpace__ecere__com__eSystem_Delete(dataTypeString), dataTypeString = 0);
1433 }
1434 if(prop)
1435 {
1436 propDefine = (__ecereTemp1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_PropertyDefine), ((struct PropertyDefine *)__ecereTemp1)->name = __ecereNameSpace__ecere__sys__CopyString(prop->name), ((struct PropertyDefine *)__ecereTemp1)->type = __ecereNameSpace__ecere__sys__CopyString(prop->dataTypeString), ((struct PropertyDefine *)__ecereTemp1)->hasSet = propertyDef->setStmt ? 0x1 : 0x0, ((struct PropertyDefine *)__ecereTemp1)->hasGet = propertyDef->getStmt ? 0x1 : 0x0, ((struct PropertyDefine *)__ecereTemp1));
1437 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add(&classDefine->classProperties, propDefine);
1438 }
1439 }
1440 }
1441 else if(def->type == 7)
1442 {
1443 classDefine->fixed = 0x1;
1444 }
1445 else if(def->type == 6)
1446 {
1447 classDefine->noExpansion = 0x1;
1448 }
1449 else if(def->type == 13)
1450 {
1451 struct __ecereNameSpace__ecere__com__DataMember * member;
1452 struct __ecereNameSpace__ecere__com__Property * prop;
1453 struct __ecereNameSpace__ecere__com__Method * method;
1454
1455 if((prop = __ecereNameSpace__ecere__com__eClass_FindProperty(regClass, def->id->string, privateModule)))
1456 {
1457 struct PropertyDefine * propDefine;
1458
1459 prop = __ecereNameSpace__ecere__com__eClass_AddProperty(regClass, def->id->string, (((void *)0)), (((void *)0)), (((void *)0)), def->memberAccess);
1460 if(prop)
1461 {
1462 propDefine = (__ecereTemp1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_PropertyDefine), ((struct PropertyDefine *)__ecereTemp1)->isProperty = 1, ((struct PropertyDefine *)__ecereTemp1)->name = __ecereNameSpace__ecere__sys__CopyString(prop->name), ((struct PropertyDefine *)__ecereTemp1)->memberAccess = def->memberAccess, ((struct PropertyDefine *)__ecereTemp1));
1463 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add(&classDefine->propertiesAndMembers, propDefine);
1464 }
1465 }
1466 else if((member = __ecereNameSpace__ecere__com__eClass_FindDataMember(regClass, def->id->string, privateModule, (((void *)0)), (((void *)0)))))
1467 {
1468 struct DataMemberDefine * dataMemberDefine;
1469
1470 member = __ecereNameSpace__ecere__com__eClass_AddDataMember(regClass, def->id->string, (((void *)0)), 0, 0, def->memberAccess);
1471 dataMemberDefine = (__ecereTemp1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_DataMemberDefine), ((struct DataMemberDefine *)__ecereTemp1)->isProperty = 3, ((struct DataMemberDefine *)__ecereTemp1)->memberType = 0, ((struct DataMemberDefine *)__ecereTemp1)->name = __ecereNameSpace__ecere__sys__CopyString(def->id->string), ((struct DataMemberDefine *)__ecereTemp1)->memberAccess = def->memberAccess, ((struct DataMemberDefine *)__ecereTemp1));
1472 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add(&parentMemberDefine->dataMembers, dataMemberDefine);
1473 }
1474 }
1475 }
1476 }
1477 }
1478
1479 extern void FreeType(struct Type * type);
1480
1481 extern struct __ecereNameSpace__ecere__com__Class * __ecereNameSpace__ecere__com__eSystem_RegisterClass(int type, char *  name, char *  baseName, int size, int sizeClass, unsigned int (* )(void * ), void (* )(void * ), struct __ecereNameSpace__ecere__com__Instance * module, int declMode, int inheritanceAccess);
1482
1483 extern struct __ecereNameSpace__ecere__com__Method * __ecereNameSpace__ecere__com__eClass_AddVirtualMethod(struct __ecereNameSpace__ecere__com__Class * _class, char *  name, char *  type, void *  function, int declMode);
1484
1485 extern struct __ecereNameSpace__ecere__com__Method * __ecereNameSpace__ecere__com__eClass_AddMethod(struct __ecereNameSpace__ecere__com__Class * _class, char *  name, char *  type, void *  function, int declMode);
1486
1487 extern struct __ecereNameSpace__ecere__com__Method * __ecereNameSpace__ecere__com__eClass_FindMethod(struct __ecereNameSpace__ecere__com__Class * _class, char *  name, struct __ecereNameSpace__ecere__com__Instance * module);
1488
1489 extern char *  strcpy(char * , const char * );
1490
1491 extern char *  strcat(char * , const char * );
1492
1493 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_OpTable;
1494
1495 struct OpTable
1496 {
1497 unsigned int (*  Add)(struct Expression *, struct Operand *, struct Operand *);
1498 unsigned int (*  Sub)(struct Expression *, struct Operand *, struct Operand *);
1499 unsigned int (*  Mul)(struct Expression *, struct Operand *, struct Operand *);
1500 unsigned int (*  Div)(struct Expression *, struct Operand *, struct Operand *);
1501 unsigned int (*  Mod)(struct Expression *, struct Operand *, struct Operand *);
1502 unsigned int (*  Neg)(struct Expression *, struct Operand *);
1503 unsigned int (*  Inc)(struct Expression *, struct Operand *);
1504 unsigned int (*  Dec)(struct Expression *, struct Operand *);
1505 unsigned int (*  Asign)(struct Expression *, struct Operand *, struct Operand *);
1506 unsigned int (*  AddAsign)(struct Expression *, struct Operand *, struct Operand *);
1507 unsigned int (*  SubAsign)(struct Expression *, struct Operand *, struct Operand *);
1508 unsigned int (*  MulAsign)(struct Expression *, struct Operand *, struct Operand *);
1509 unsigned int (*  DivAsign)(struct Expression *, struct Operand *, struct Operand *);
1510 unsigned int (*  ModAsign)(struct Expression *, struct Operand *, struct Operand *);
1511 unsigned int (*  BitAnd)(struct Expression *, struct Operand *, struct Operand *);
1512 unsigned int (*  BitOr)(struct Expression *, struct Operand *, struct Operand *);
1513 unsigned int (*  BitXor)(struct Expression *, struct Operand *, struct Operand *);
1514 unsigned int (*  LShift)(struct Expression *, struct Operand *, struct Operand *);
1515 unsigned int (*  RShift)(struct Expression *, struct Operand *, struct Operand *);
1516 unsigned int (*  BitNot)(struct Expression *, struct Operand *);
1517 unsigned int (*  AndAsign)(struct Expression *, struct Operand *, struct Operand *);
1518 unsigned int (*  OrAsign)(struct Expression *, struct Operand *, struct Operand *);
1519 unsigned int (*  XorAsign)(struct Expression *, struct Operand *, struct Operand *);
1520 unsigned int (*  LShiftAsign)(struct Expression *, struct Operand *, struct Operand *);
1521 unsigned int (*  RShiftAsign)(struct Expression *, struct Operand *, struct Operand *);
1522 unsigned int (*  Not)(struct Expression *, struct Operand *);
1523 unsigned int (*  Equ)(struct Expression *, struct Operand *, struct Operand *);
1524 unsigned int (*  Nqu)(struct Expression *, struct Operand *, struct Operand *);
1525 unsigned int (*  And)(struct Expression *, struct Operand *, struct Operand *);
1526 unsigned int (*  Or)(struct Expression *, struct Operand *, struct Operand *);
1527 unsigned int (*  Grt)(struct Expression *, struct Operand *, struct Operand *);
1528 unsigned int (*  Sma)(struct Expression *, struct Operand *, struct Operand *);
1529 unsigned int (*  GrtEqu)(struct Expression *, struct Operand *, struct Operand *);
1530 unsigned int (*  SmaEqu)(struct Expression *, struct Operand *, struct Operand *);
1531 unsigned int (*  Cond)(struct Expression *, struct Operand *, struct Operand *, struct Operand *);
1532 } __attribute__ ((gcc_struct));
1533
1534 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Operand;
1535
1536 struct Operand
1537 {
1538 int kind;
1539 struct Type * type;
1540 unsigned int ptrSize;
1541 union
1542 {
1543 char c;
1544 unsigned char uc;
1545 short s;
1546 unsigned short us;
1547 int i;
1548 unsigned int ui;
1549 float f;
1550 double d;
1551 long long i64;
1552 uint64 ui64;
1553 } __attribute__ ((gcc_struct));
1554 struct OpTable ops;
1555 } __attribute__ ((gcc_struct));
1556
1557 extern struct Operand GetOperand(struct Expression * exp);
1558
1559 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__ClassTemplateParameter;
1560
1561 struct __ecereNameSpace__ecere__com__ClassTemplateParameter
1562 {
1563 struct __ecereNameSpace__ecere__com__ClassTemplateParameter * prev;
1564 struct __ecereNameSpace__ecere__com__ClassTemplateParameter * next;
1565 char *  name;
1566 int type;
1567 union
1568 {
1569 char *  dataTypeString;
1570 int memberType;
1571 } __attribute__ ((gcc_struct));
1572 struct __ecereNameSpace__ecere__com__ClassTemplateArgument defaultArg;
1573 void *  param;
1574 } __attribute__ ((gcc_struct));
1575
1576 extern struct __ecereNameSpace__ecere__com__ClassTemplateParameter * __ecereNameSpace__ecere__com__eClass_AddTemplateParameter(struct __ecereNameSpace__ecere__com__Class * _class, char *  name, int type, void *  info, struct __ecereNameSpace__ecere__com__ClassTemplateArgument * defaultArg);
1577
1578 static void ProcessClass(int classType, struct __ecereNameSpace__ecere__sys__OldList * definitions, struct Symbol * symbol, struct __ecereNameSpace__ecere__sys__OldList * baseSpecs, struct __ecereNameSpace__ecere__sys__OldList * enumValues, unsigned int isWatchable, int declMode)
1579 {
1580 void * __ecereTemp1;
1581 struct __ecereNameSpace__ecere__com__Class * regClass;
1582 struct ClassDef * def;
1583 struct ClassDefine * classDefine;
1584 char baseName[1024];
1585 unsigned int unitType = 0x0;
1586 unsigned int wouldBeEnum = 0x0;
1587 int inheritanceAccess = 1;
1588
1589 baseName[0] = '\0';
1590 if(baseSpecs != (((void *)0)))
1591 {
1592 struct Type * baseType = ProcessType(baseSpecs, (((void *)0)));
1593
1594 PrintType(baseType, baseName, 0x0, 0x1);
1595 if(baseType->kind == 8)
1596 {
1597 if(baseType->_class->registered && classType == 0)
1598 {
1599 if(baseType->_class->registered->type == 3)
1600 classType = 3;
1601 else if(baseType->_class->registered->type == 2)
1602 classType = 2;
1603 else if(baseType->_class->registered->type == 5)
1604 classType = 5;
1605 else if(baseType->_class->registered->type == 4)
1606 {
1607 wouldBeEnum = 0x1;
1608 }
1609 }
1610 }
1611 else if(baseType->kind == 9 || baseType->kind == 10)
1612 {
1613 classType = 5;
1614 baseName[0] = '\0';
1615 }
1616 else
1617 unitType = 0x1;
1618 FreeType(baseType);
1619 if(((struct Specifier *)baseSpecs->first)->type == 0 && ((struct Specifier *)baseSpecs->first)->specifier == PRIVATE)
1620 inheritanceAccess = 2;
1621 }
1622 if(classType == 0)
1623 {
1624 if(unitType)
1625 classType = 3;
1626 if(definitions != (((void *)0)))
1627 {
1628 for(def = definitions->first; def; def = def->next)
1629 {
1630 if(def->type == 2)
1631 {
1632 struct Declaration * decl = def->decl;
1633
1634 if(decl->type == 0)
1635 {
1636 if(unitType)
1637 {
1638 classType = 2;
1639 break;
1640 }
1641 if(decl->declarators)
1642 {
1643 struct Declarator * d;
1644
1645 for(d = (*decl->declarators).first; d; d = d->next)
1646 {
1647 if(d->structDecl.exp)
1648 {
1649 classType = 2;
1650 break;
1651 }
1652 }
1653 if(d)
1654 break;
1655 }
1656 }
1657 }
1658 }
1659 }
1660 }
1661 if(classType == 0 && wouldBeEnum)
1662 classType = 4;
1663 regClass = symbol->registered = __ecereNameSpace__ecere__com__eSystem_RegisterClass((classType == 6) ? 1 : classType, symbol->string, baseName[0] ? baseName : (((void *)0)), 0, 0, (((void *)0)), (((void *)0)), privateModule, 1, inheritanceAccess);
1664 if(regClass)
1665 regClass->symbol = symbol;
1666 classDefine = (__ecereTemp1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_ClassDefine), ((struct ClassDefine *)__ecereTemp1)->type = 1, ((struct ClassDefine *)__ecereTemp1)->name = __ecereNameSpace__ecere__sys__CopyString(symbol->string), ((struct ClassDefine *)__ecereTemp1)->base = baseName[0] ? __ecereNameSpace__ecere__sys__CopyString(baseName) : (((void *)0)), ((struct ClassDefine *)__ecereTemp1)->isStatic = declMode == 3, ((struct ClassDefine *)__ecereTemp1)->isRemote = symbol->isRemote, ((struct ClassDefine *)__ecereTemp1)->isWatchable = isWatchable, ((struct ClassDefine *)__ecereTemp1));
1667 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add(&precompDefines, classDefine);
1668 if(classType == 6)
1669 {
1670 struct __ecereNameSpace__ecere__com__DataMember * unionMember = __ecereNameSpace__ecere__com__eMember_New(1, 1);
1671 struct DataMemberDefine * unionDefine;
1672
1673 unionDefine = (__ecereTemp1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_DataMemberDefine), ((struct DataMemberDefine *)__ecereTemp1)->isProperty = 3, ((struct DataMemberDefine *)__ecereTemp1)->memberType = 1, ((struct DataMemberDefine *)__ecereTemp1));
1674 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add(&classDefine->propertiesAndMembers, unionDefine);
1675 AddDefinitions(classDefine, unionDefine, regClass, unionMember, definitions);
1676 __ecereNameSpace__ecere__com__eClass_AddMember(regClass, unionMember);
1677 }
1678 else if(regClass)
1679 AddDefinitions(classDefine, (struct DataMemberDefine *)classDefine, regClass, (((void *)0)), definitions);
1680 if(definitions != (((void *)0)))
1681 {
1682 for(def = definitions->first; def; def = def->next)
1683 {
1684 if(def->type == 0)
1685 {
1686 struct ClassFunction * func = def->function;
1687
1688 if(!func->dontMangle && func->declarator)
1689 {
1690 struct Identifier * id = GetDeclId(func->declarator);
1691 struct __ecereNameSpace__ecere__com__Method * method;
1692 struct MethodDefine * methodDefine;
1693
1694 {
1695 char * dataTypeString = StringFromSpecDecl(func->specifiers, func->declarator);
1696
1697 if(func->isVirtual)
1698 method = __ecereNameSpace__ecere__com__eClass_AddVirtualMethod(regClass, id->string, dataTypeString, func->declarator->symbol, def->memberAccess);
1699 else
1700 method = __ecereNameSpace__ecere__com__eClass_AddMethod(regClass, id->string, dataTypeString, func->declarator->symbol, def->memberAccess);
1701 (__ecereNameSpace__ecere__com__eSystem_Delete(dataTypeString), dataTypeString = 0);
1702 }
1703 if(method)
1704 {
1705 method->symbol = (__ecereTemp1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Symbol), ((struct Symbol *)__ecereTemp1)->string = __ecereNameSpace__ecere__sys__CopyString(func->declarator->symbol->string), ((struct Symbol *)__ecereTemp1)->id = func->declarator->symbol->id, ((struct Symbol *)__ecereTemp1)->type = func->declarator->symbol->type, ((struct Symbol *)__ecereTemp1));
1706 if(func->declarator->symbol->type)
1707 func->declarator->symbol->type->refCount++;
1708 ((struct Symbol *)method->symbol)->method = method;
1709 func->declarator->symbol = (((void *)0));
1710 if(method->type != 1 || method->_class == regClass)
1711 {
1712 methodDefine = (__ecereTemp1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_MethodDefine), ((struct MethodDefine *)__ecereTemp1)->name = __ecereNameSpace__ecere__sys__CopyString(method->name), ((struct MethodDefine *)__ecereTemp1)->type = __ecereNameSpace__ecere__sys__CopyString(method->dataTypeString), ((struct MethodDefine *)__ecereTemp1)->memberAccess = def->memberAccess, ((struct MethodDefine *)__ecereTemp1)->isVirtual = method->type == 1, ((struct MethodDefine *)__ecereTemp1));
1713 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add(&classDefine->methods, methodDefine);
1714 }
1715 }
1716 }
1717 }
1718 else if(def->type == 13)
1719 {
1720 struct __ecereNameSpace__ecere__com__Method * method;
1721
1722 if((method = __ecereNameSpace__ecere__com__eClass_FindMethod(regClass, def->id->string, privateModule)))
1723 {
1724 struct MethodDefine * methodDefine;
1725
1726 method = __ecereNameSpace__ecere__com__eClass_AddMethod(regClass, def->id->string, (((void *)0)), (((void *)0)), def->memberAccess);
1727 methodDefine = (__ecereTemp1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_MethodDefine), ((struct MethodDefine *)__ecereTemp1)->name = __ecereNameSpace__ecere__sys__CopyString(method->name), ((struct MethodDefine *)__ecereTemp1)->memberAccess = def->memberAccess, ((struct MethodDefine *)__ecereTemp1));
1728 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add(&classDefine->methods, methodDefine);
1729 }
1730 }
1731 }
1732 }
1733 if(regClass && symbol->templateParams)
1734 {
1735 struct TemplateParameter * param;
1736
1737 for(param = (*symbol->templateParams).first; param; param = param->next)
1738 {
1739 struct __ecereNameSpace__ecere__com__ClassTemplateArgument defaultArg = 
1740 {
1741 0, 0, 0, 0, 0
1742 };
1743
1744 if(param->defaultArgument)
1745 {
1746 switch(param->type)
1747 {
1748 case 0:
1749 defaultArg.dataTypeString = StringFromSpecDecl(param->defaultArgument->templateDatatype->specifiers, param->defaultArgument->templateDatatype->decl);
1750 break;
1751 case 1:
1752 {
1753 char memberString[1024];
1754
1755 memberString[0] = '\0';
1756 if(param->defaultArgument->identifier->_class && param->defaultArgument->identifier->_class->name)
1757 {
1758 if(param->defaultArgument->identifier->_class->type == 8)
1759 strcpy(memberString, param->defaultArgument->identifier->_class->templateParameter->identifier->string);
1760 else
1761 strcpy(memberString, param->defaultArgument->identifier->_class->name);
1762 }
1763 if(memberString[0])
1764 {
1765 strcat(memberString, "::");
1766 }
1767 strcat(memberString, param->defaultArgument->identifier->string);
1768 defaultArg.memberString = __ecereNameSpace__ecere__sys__CopyString(memberString);
1769 break;
1770 }
1771 case 2:
1772 {
1773 struct Operand op;
1774
1775 ProcessExpressionType(param->defaultArgument->expression);
1776 ComputeExpression(param->defaultArgument->expression);
1777 op = GetOperand(param->defaultArgument->expression);
1778 defaultArg.expression.ui64 = op.ui64;
1779 break;
1780 }
1781 }
1782 }
1783 if(param->type == 1)
1784 {
1785 __ecereNameSpace__ecere__com__eClass_AddTemplateParameter(regClass, param->identifier->string, param->type, (void *)param->memberType, &defaultArg);
1786 }
1787 else
1788 {
1789 char * typeString = param->dataType ? StringFromSpecDecl(param->dataType->specifiers, param->dataType->decl) : (((void *)0));
1790
1791 __ecereNameSpace__ecere__com__eClass_AddTemplateParameter(regClass, param->identifier->string, param->type, typeString, &defaultArg);
1792 }
1793 }
1794 }
1795 }
1796
1797 extern void SetParsingType(unsigned int b);
1798
1799 extern void __ecereNameSpace__ecere__com__eEnum_AddFixedValue(struct __ecereNameSpace__ecere__com__Class * _class, char *  string, int value);
1800
1801 extern int __ecereNameSpace__ecere__com__eEnum_AddValue(struct __ecereNameSpace__ecere__com__Class * _class, char *  string);
1802
1803 static void ProcessClassEnumValues(int classType, struct __ecereNameSpace__ecere__sys__OldList * definitions, struct Symbol * symbol, struct __ecereNameSpace__ecere__sys__OldList * baseSpecs, struct __ecereNameSpace__ecere__sys__OldList * enumValues)
1804 {
1805 struct __ecereNameSpace__ecere__com__Class * regClass = symbol->registered;
1806
1807 if(regClass && enumValues)
1808 {
1809 struct Enumerator * e;
1810
1811 for(e = enumValues->first; e; e = e->next)
1812 {
1813 if(e->exp)
1814 {
1815 struct Type * destType = (destType = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Type), destType->kind = 3, destType->refCount = 1, destType);
1816
1817 e->exp->destType = destType;
1818 SetParsingType(0x1);
1819 ProcessExpressionType(e->exp);
1820 SetParsingType(0x0);
1821 if(!e->exp->expType)
1822 {
1823 destType->kind = 8;
1824 destType->_class = symbol;
1825 ProcessExpressionType(e->exp);
1826 }
1827 ComputeExpression(e->exp);
1828 if(e->exp->isConstant && e->exp->type == 2)
1829 {
1830 struct Operand op = GetOperand(e->exp);
1831 int value;
1832
1833 switch(op.kind)
1834 {
1835 case 1:
1836 value = op.type->isSigned ? (int)op.c : (int)op.uc;
1837 break;
1838 case 2:
1839 value = op.type->isSigned ? (int)op.s : (int)op.us;
1840 break;
1841 default:
1842 value = op.i;
1843 }
1844 __ecereNameSpace__ecere__com__eEnum_AddFixedValue(regClass, e->id->string, value);
1845 }
1846 else
1847 __ecereNameSpace__ecere__com__eEnum_AddValue(regClass, e->id->string);
1848 }
1849 else
1850 __ecereNameSpace__ecere__com__eEnum_AddValue(regClass, e->id->string);
1851 }
1852 }
1853 }
1854
1855 extern struct __ecereNameSpace__ecere__sys__OldList *  GetAST(void);
1856
1857 extern struct Symbol * FindClass(char *  name);
1858
1859 extern void SetCurrentNameSpace(char *  s);
1860
1861 extern void ComputeModuleClasses(struct __ecereNameSpace__ecere__com__Instance * module);
1862
1863 void PreCompPreProcessClassDefinitions()
1864 {
1865 void * __ecereTemp1;
1866 struct __ecereNameSpace__ecere__sys__OldList * ast = GetAST();
1867 struct External * external, * next;
1868
1869 for(external = (*ast).first; external; external = next)
1870 {
1871 next = external->next;
1872 if(external->type == 2)
1873 {
1874 struct ClassDefinition * _class = external->_class;
1875
1876 if(_class->declMode == 1 || _class->declMode == 2 || _class->declMode == 3)
1877 {
1878 if(_class->definitions)
1879 {
1880 ProcessClass(0, _class->definitions, _class->symbol, _class->baseSpecs, (((void *)0)), _class->deleteWatchable, _class->declMode);
1881 }
1882 }
1883 }
1884 else if(external->type == 1)
1885 {
1886 struct Declaration * declaration = external->declaration;
1887
1888 if(declaration->type == 1)
1889 {
1890 if(external->declaration->declMode == 1 || external->declaration->declMode == 2 || external->declaration->declMode == 3)
1891 {
1892 if(declaration->specifiers)
1893 {
1894 struct Specifier * specifier;
1895
1896 for(specifier = (*declaration->specifiers).first; specifier; specifier = specifier->next)
1897 {
1898 if((specifier->type == 2 || specifier->type == 3 || specifier->type == 4) && specifier->id && specifier->id->string && (declaration->declMode || specifier->baseSpecs || (specifier->type == 2 && specifier->definitions)))
1899 {
1900 struct Symbol * symbol = FindClass(specifier->id->string);
1901
1902 if(symbol)
1903 {
1904 int classType;
1905
1906 if(specifier->type == 2)
1907 classType = 4;
1908 else if(specifier->type == 4)
1909 classType = 6;
1910 else
1911 classType = 1;
1912 ProcessClass(classType, specifier->definitions, symbol, specifier->baseSpecs, specifier->list, 0x0, external->declaration->declMode);
1913 }
1914 }
1915 }
1916 }
1917 if(external->declaration->declMode == 1 || external->declaration->declMode == 2)
1918 {
1919 if(declaration->declarators)
1920 {
1921 struct InitDeclarator * d;
1922
1923 for(d = (*declaration->declarators).first; d; d = d->next)
1924 {
1925 if(d->declarator)
1926 {
1927 struct Symbol * symbol = d->declarator->symbol;
1928
1929 if(symbol)
1930 {
1931 struct DataDefine * dataDefine;
1932 char typeString[1024];
1933
1934 typeString[0] = '\0';
1935 PrintType(symbol->type, typeString, 0x0, 0x1);
1936 dataDefine = (__ecereTemp1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_DataDefine), ((struct DataDefine *)__ecereTemp1)->type = 4, ((struct DataDefine *)__ecereTemp1)->name = __ecereNameSpace__ecere__sys__CopyString(symbol->string), ((struct DataDefine *)__ecereTemp1)->dataType = __ecereNameSpace__ecere__sys__CopyString(typeString), ((struct DataDefine *)__ecereTemp1));
1937 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add(&precompDefines, dataDefine);
1938 }
1939 }
1940 }
1941 }
1942 }
1943 }
1944 }
1945 else if(declaration->type == 2)
1946 {
1947 if(external->declaration->declMode == 1 || external->declaration->declMode == 2)
1948 {
1949 struct Symbol * symbol = declaration->inst->symbol;
1950
1951 if(symbol)
1952 {
1953 struct DataDefine * dataDefine;
1954 char typeString[1024];
1955
1956 typeString[0] = '\0';
1957 PrintType(symbol->type, typeString, 0x0, 0x1);
1958 dataDefine = (__ecereTemp1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_DataDefine), ((struct DataDefine *)__ecereTemp1)->type = 4, ((struct DataDefine *)__ecereTemp1)->name = __ecereNameSpace__ecere__sys__CopyString(symbol->string), ((struct DataDefine *)__ecereTemp1)->dataType = __ecereNameSpace__ecere__sys__CopyString(typeString), ((struct DataDefine *)__ecereTemp1));
1959 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add(&precompDefines, dataDefine);
1960 }
1961 }
1962 globalInstance = 0x1;
1963 }
1964 else if(declaration->type == 3)
1965 {
1966 if(external->declaration->declMode == 1 || external->declaration->declMode == 2)
1967 {
1968 struct Define * definition = (definition = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Define), definition->type = 2, definition->name = __ecereNameSpace__ecere__sys__CopyString(declaration->id->string), definition->exp = declaration->exp, definition);
1969
1970 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add(&precompDefines, definition);
1971 }
1972 }
1973 }
1974 else if(external->type == 0 && (external->function->declMode == 1 || external->function->declMode == 2))
1975 {
1976 struct FunctionDefinition * function = external->function;
1977 struct FunctionDefine * functionDefine;
1978 char typeString[1024];
1979
1980 typeString[0] = '\0';
1981 PrintType(function->declarator->symbol->type, typeString, 0x1, 0x1);
1982 functionDefine = (__ecereTemp1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_FunctionDefine), ((struct FunctionDefine *)__ecereTemp1)->type = 3, ((struct FunctionDefine *)__ecereTemp1)->name = __ecereNameSpace__ecere__sys__CopyString(function->declarator->symbol->string), ((struct FunctionDefine *)__ecereTemp1)->dataType = __ecereNameSpace__ecere__sys__CopyString(typeString), ((struct FunctionDefine *)__ecereTemp1));
1983 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add(&precompDefines, functionDefine);
1984 }
1985 else if(external->type == 4)
1986 {
1987 SetCurrentNameSpace(external->id->string);
1988 }
1989 }
1990 ComputeModuleClasses(privateModule);
1991 for(external = (*ast).first; external; external = next)
1992 {
1993 next = external->next;
1994 if(external->type == 1 && (external->declaration->declMode == 1 || external->declaration->declMode == 2))
1995 {
1996 struct Declaration * declaration = external->declaration;
1997
1998 if(declaration->type == 1)
1999 {
2000 if(declaration->specifiers)
2001 {
2002 struct Specifier * specifier;
2003
2004 for(specifier = (*declaration->specifiers).first; specifier; specifier = specifier->next)
2005 {
2006 if((specifier->type == 2) && specifier->id && specifier->id->string && (declaration->declMode || specifier->baseSpecs || (specifier->type == 2 && specifier->definitions)))
2007 {
2008 struct Symbol * symbol = FindClass(specifier->id->string);
2009
2010 if(symbol)
2011 {
2012 ProcessClassEnumValues(4, specifier->definitions, symbol, specifier->baseSpecs, specifier->list);
2013 }
2014 }
2015 }
2016 }
2017 }
2018 }
2019 }
2020 }
2021
2022 int __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(struct __ecereNameSpace__ecere__com__Instance * this, char *  format, ...);
2023
2024 static void OutputDataMembers(struct ClassDefine * classDefine, struct __ecereNameSpace__ecere__com__Class * _class, struct __ecereNameSpace__ecere__com__Instance * f)
2025 {
2026 if(classDefine->propertiesAndMembers.first)
2027 {
2028 struct DataMemberDefine * member = classDefine->propertiesAndMembers.first;
2029 int last = 0;
2030
2031 for(member = classDefine->propertiesAndMembers.first; member; member = member->next)
2032 {
2033 if(member->isProperty == 1)
2034 {
2035 struct PropertyDefine * prop = (struct PropertyDefine *)member;
2036
2037 if(last != 1)
2038 {
2039 if(last)
2040 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "         .\n");
2041 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "      [Defined Properties]\n");
2042 }
2043 if(prop->name)
2044 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "         %s\n", prop->name);
2045 else
2046 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "         [Conversion]\n");
2047 if(prop->memberAccess == 1)
2048 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "            [Public]\n");
2049 else
2050 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "            [Private]\n");
2051 if(prop->isVirtual)
2052 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "            [Virtual]\n");
2053 if(prop->hasSet)
2054 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "            [Set]\n");
2055 if(prop->hasGet)
2056 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "            [Get]\n");
2057 if(prop->isWatchable)
2058 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "            [Watchable]\n");
2059 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "            [Type]\n");
2060 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "               %s\n", prop->type ? prop->type : "");
2061 }
2062 else
2063 {
2064 if(last != 3)
2065 {
2066 if(last)
2067 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "         .\n");
2068 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "      [Defined Data Members]\n");
2069 }
2070 if(member->memberType == 0)
2071 {
2072 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "         %s\n", member->name);
2073 if(member->memberAccess == 1)
2074 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "            [Public]\n");
2075 else
2076 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "            [Private]\n");
2077 if(_class && _class->type == 2)
2078 {
2079 if(member->size)
2080 {
2081 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "            [Size]\n");
2082 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "               %d\n", member->size);
2083 }
2084 if(member->bitPos != -1)
2085 {
2086 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "            [Pos]\n");
2087 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "               %d\n", member->bitPos);
2088 }
2089 }
2090 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "            [Type]\n");
2091 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "               %s\n", member->type ? member->type : "");
2092 }
2093 else
2094 {
2095 if(member->memberAccess == 1)
2096 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "            [Public]\n");
2097 else
2098 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "            [Private]\n");
2099 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, (member->memberType == 1) ? "      [Union]\n" : "      [Struct]\n");
2100 OutputDataMembers((struct ClassDefine *)member, (((void *)0)), f);
2101 }
2102 }
2103 last = member->isProperty;
2104 }
2105 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "         .\n");
2106 }
2107 if(classDefine->classProperties.first)
2108 {
2109 struct PropertyDefine * prop = classDefine->propertiesAndMembers.first;
2110
2111 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "      [Defined Class Properties]\n");
2112 for(prop = classDefine->classProperties.first; prop; prop = prop->next)
2113 {
2114 if(prop->name)
2115 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "         %s\n", prop->name);
2116 if(prop->hasSet)
2117 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "            [Set]\n");
2118 if(prop->hasGet)
2119 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "            [Get]\n");
2120 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "            [Type]\n");
2121 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "               %s\n", prop->type ? prop->type : "");
2122 }
2123 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "         .\n");
2124 }
2125 }
2126
2127 extern struct __ecereNameSpace__ecere__com__Instance * __ecereNameSpace__ecere__sys__FileOpen(char *  fileName, int mode);
2128
2129 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_ImportedModule;
2130
2131 struct ImportedModule
2132 {
2133 struct ImportedModule * prev;
2134 struct ImportedModule * next;
2135 char *  name;
2136 int type;
2137 int importType;
2138 unsigned int globalInstance;
2139 unsigned int dllOnly;
2140 int importAccess;
2141 } __attribute__ ((gcc_struct));
2142
2143 extern struct __ecereNameSpace__ecere__com__Class * __ecereNameSpace__ecere__com__eSystem_FindClass(struct __ecereNameSpace__ecere__com__Instance * module, char *  name);
2144
2145 extern void PrintExpression(struct Expression * exp, char *  string);
2146
2147 extern void __ecereNameSpace__ecere__sys__ChangeCh(char *  string, char ch1, char ch2);
2148
2149 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__EnumClassData;
2150
2151 struct __ecereNameSpace__ecere__com__EnumClassData
2152 {
2153 struct __ecereNameSpace__ecere__sys__OldList values;
2154 int largest;
2155 } __attribute__ ((gcc_struct));
2156
2157 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__sys__NamedLink;
2158
2159 struct __ecereNameSpace__ecere__sys__NamedLink
2160 {
2161 struct __ecereNameSpace__ecere__sys__NamedLink * prev;
2162 struct __ecereNameSpace__ecere__sys__NamedLink * next;
2163 char *  name;
2164 void *  data;
2165 } __attribute__ ((gcc_struct));
2166
2167 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__DefinedExpression;
2168
2169 struct __ecereNameSpace__ecere__com__DefinedExpression;
2170
2171 extern struct __ecereNameSpace__ecere__com__DefinedExpression * __ecereNameSpace__ecere__com__eSystem_FindDefine(struct __ecereNameSpace__ecere__com__Instance * module, char *  name);
2172
2173 extern void OutputExpression(struct Expression * exp, struct __ecereNameSpace__ecere__com__Instance * f);
2174
2175 int __ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts;
2176
2177 extern void __ecereNameSpace__ecere__com__eInstance_DecRef(struct __ecereNameSpace__ecere__com__Instance * instance);
2178
2179 static void OutputSymbols(char * fileName)
2180 {
2181 struct __ecereNameSpace__ecere__com__Instance * f = __ecereNameSpace__ecere__sys__FileOpen(fileName, 2);
2182
2183 if(f)
2184 {
2185 int lastType = (int)-1;
2186 struct Definition * definition;
2187
2188 if(globalInstance)
2189 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "[Global Instance]\n");
2190 for(definition = precompDefines.first; definition; definition = definition->next)
2191 {
2192 if(definition->type != lastType)
2193 {
2194 if(lastType != (int)-1)
2195 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "   .\n");
2196 if(definition->type == 0)
2197 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "[Imported Modules]\n");
2198 else if(definition->type == 1)
2199 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "[Defined Classes]\n");
2200 else if(definition->type == 2)
2201 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "[Defined Expressions]\n");
2202 else if(definition->type == 3)
2203 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "[Defined Functions]\n");
2204 else if(definition->type == 4)
2205 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "[Defined Data]\n");
2206 lastType = definition->type;
2207 }
2208 if(definition->type == 0)
2209 {
2210 struct ImportedModule * module = (struct ImportedModule *)definition;
2211
2212 if(module->importType == 1)
2213 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "   [Static]\n");
2214 else if(module->importType == 2)
2215 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "   [Remote]\n");
2216 if(module->importAccess == 2)
2217 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "   [Private]\n");
2218 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "   %s\n", module->name);
2219 }
2220 else if(definition->type == 1)
2221 {
2222 struct __ecereNameSpace__ecere__com__Class * _class = __ecereNameSpace__ecere__com__eSystem_FindClass(privateModule, definition->name);
2223 struct ClassDefine * classDefine = (struct ClassDefine *)definition;
2224
2225 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "   %s\n", definition->name);
2226 if(classDefine->isStatic)
2227 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "      [Static]\n");
2228 if(classDefine->fixed)
2229 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "      [Fixed]\n");
2230 if(classDefine->noExpansion)
2231 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "      [No Expansion]\n");
2232 if(classDefine->isRemote)
2233 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "      [Remote]\n");
2234 if(classDefine->isWatchable)
2235 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "      [Watchable]\n");
2236 if(_class->type == 4)
2237 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "      [Enum]\n");
2238 else if(_class->type == 2)
2239 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "      [Bit]\n");
2240 else if(_class->type == 1)
2241 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "      [Struct]\n");
2242 else if(_class->type == 3)
2243 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "      [Unit]\n");
2244 else if(_class->type == 5)
2245 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "      [NoHead]\n");
2246 if(_class->inheritanceAccess == 2)
2247 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "      [Private Base]\n");
2248 else
2249 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "      [Base]\n");
2250 if(classDefine->base)
2251 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "         %s\n", classDefine->base);
2252 else
2253 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "         [None]\n");
2254 if(_class->templateParams.count)
2255 {
2256 struct __ecereNameSpace__ecere__com__ClassTemplateParameter * param;
2257 struct TemplateParameter * tp;
2258
2259 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "         [Template Parameters]\n");
2260 for(tp = (*((struct Symbol *)_class->symbol)->templateParams).first, param = _class->templateParams.first; param && tp; param = param->next, tp = tp->next)
2261 {
2262 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "               %s\n", param->name);
2263 switch(param->type)
2264 {
2265 case 0:
2266 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "               [Type]\n");
2267 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "               %s\n", param->dataTypeString ? param->dataTypeString : "[None]");
2268 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "               %s\n", param->defaultArg.dataTypeString ? param->defaultArg.dataTypeString : "[None]");
2269 break;
2270 case 2:
2271 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "               [Expression]\n");
2272 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "               %s\n", param->dataTypeString ? param->dataTypeString : "[None]");
2273 if(tp->defaultArgument && tp->defaultArgument->expression)
2274 {
2275 char temp[8192];
2276
2277 temp[0] = (char)0;
2278 PrintExpression(tp->defaultArgument->expression, temp);
2279 __ecereNameSpace__ecere__sys__ChangeCh(temp, '\n', ' ');
2280 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "               ");
2281 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))f->_vTbl[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, temp);
2282 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))f->_vTbl[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, "\n");
2283 }
2284 else
2285 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "               [None]\n");
2286 break;
2287 case 1:
2288 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "               [Identifier]\n");
2289 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "               %s\n", (param->memberType == 0) ? "[Data member]" : ((param->memberType == 1) ? "[Method]" : "[Property]"));
2290 if(tp->defaultArgument && tp->defaultArgument->identifier)
2291 {
2292 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "               ");
2293 if(tp->defaultArgument->identifier->_class && tp->defaultArgument->identifier->_class->type == 1 && tp->defaultArgument->identifier->_class->name)
2294 {
2295 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "%s::", tp->defaultArgument->identifier->_class->name);
2296 }
2297 else if(tp->defaultArgument->identifier->_class && tp->defaultArgument->identifier->_class->type == 8 && tp->defaultArgument->identifier->_class->templateParameter->identifier)
2298 {
2299 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "%s::", tp->defaultArgument->identifier->_class->templateParameter->identifier->string);
2300 }
2301 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "%s\n", tp->defaultArgument->identifier->string);
2302 }
2303 else
2304 {
2305 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "               [None]\n");
2306 }
2307 break;
2308 }
2309 }
2310 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "         .\n");
2311 }
2312 if(!classDefine->isStatic)
2313 {
2314 if(classDefine->methods.first)
2315 {
2316 struct MethodDefine * method;
2317
2318 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "      [Defined Methods]\n");
2319 for(method = classDefine->methods.first; method; method = method->next)
2320 {
2321 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "         %s\n", method->name);
2322 if(method->memberAccess == 1)
2323 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "            [Public]\n");
2324 else
2325 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "            [Private]\n");
2326 if(method->isVirtual)
2327 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "            [Virtual]\n");
2328 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "            [Type]\n");
2329 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "               %s\n", method->type ? method->type : "");
2330 }
2331 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "         .\n");
2332 }
2333 OutputDataMembers(classDefine, _class, f);
2334 if(_class->type == 4)
2335 {
2336 struct __ecereNameSpace__ecere__sys__NamedLink * value;
2337 struct __ecereNameSpace__ecere__com__Class * enumClass = __ecereNameSpace__ecere__com__eSystem_FindClass(privateModule, "enum");
2338 struct __ecereNameSpace__ecere__com__EnumClassData * e = (_class ? ((void *)(((char *)_class->data) + enumClass->offsetClass)) : (((void *)0)));
2339
2340 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "      [Enum Values]\n");
2341 for(value = e->values.first; value; value = value->next)
2342 {
2343 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "         %s = %d\n", value->name, value->data);
2344 }
2345 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "         .\n");
2346 }
2347 }
2348 }
2349 else if(definition->type == 2)
2350 {
2351 struct __ecereNameSpace__ecere__com__DefinedExpression * defExp = __ecereNameSpace__ecere__com__eSystem_FindDefine(privateModule, definition->name);
2352 struct Define * defineDefine = (struct Define *)definition;
2353
2354 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "   %s\n", definition->name);
2355 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "      [Value]\n");
2356 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "         ");
2357 OutputExpression(defineDefine->exp, f);
2358 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "\n");
2359 }
2360 else if(definition->type == 3)
2361 {
2362 struct FunctionDefine * functionDefine = (struct FunctionDefine *)definition;
2363
2364 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "   %s\n", functionDefine->name);
2365 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "      [Type]\n");
2366 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "         %s\n", functionDefine->dataType);
2367 }
2368 else if(definition->type == 4)
2369 {
2370 struct DataDefine * dataDefine = (struct DataDefine *)definition;
2371
2372 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "   %s\n", dataDefine->name);
2373 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "      [Type]\n");
2374 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "         %s\n", dataDefine->dataType);
2375 }
2376 }
2377 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "   .\n");
2378 (__ecereNameSpace__ecere__com__eInstance_DecRef(f), f = 0);
2379 }
2380 }
2381
2382 static struct __ecereNameSpace__ecere__com__Class * __ecereClass_PrecompApp;
2383
2384 extern int __ecereNameSpace__ecere__com__GetRuntimePlatform(void);
2385
2386 extern int GetHostBits(void);
2387
2388 extern int strcmp(const char * , const char * );
2389
2390 extern size_t strlen(const char * );
2391
2392 extern char *  GetOutputFile(void);
2393
2394 extern void SetOutputFile(char *  s);
2395
2396 extern char *  GetSourceFile(void);
2397
2398 extern void SetSourceFile(char *  s);
2399
2400 extern void SetSymbolsDir(char *  s);
2401
2402 extern void SetDefaultNameSpace(char *  s);
2403
2404 extern void SetStrictNameSpaces(unsigned int b);
2405
2406 extern char *  GetSymbolsDir(void);
2407
2408 extern char *  __ecereNameSpace__ecere__sys__PathCat(char *  string, char *  addedPath);
2409
2410 extern char *  __ecereNameSpace__ecere__sys__ChangeExtension(char *  string, char *  ext, char *  output);
2411
2412 extern int printf(char * , ...);
2413
2414 extern char *  __ecereNameSpace__ecere__GetTranslatedString(struct __ecereNameSpace__ecere__com__Instance * module, char *  string, char *  stringAndContext);
2415
2416 extern struct __ecereNameSpace__ecere__com__Instance * __thisModule;
2417
2418 extern void SetGlobalContext(struct Context * context);
2419
2420 extern void SetTopContext(struct Context * context);
2421
2422 extern void SetCurrentContext(struct Context * context);
2423
2424 extern void SetExcludedSymbols(struct __ecereNameSpace__ecere__sys__OldList *  list);
2425
2426 extern void SetGlobalData(struct __ecereNameSpace__ecere__com__NameSpace *  nameSpace);
2427
2428 extern void SetDefines(struct __ecereNameSpace__ecere__sys__OldList *  list);
2429
2430 extern void SetImports(struct __ecereNameSpace__ecere__sys__OldList *  list);
2431
2432 extern void SetPrecompDefines(struct __ecereNameSpace__ecere__sys__OldList *  list);
2433
2434 extern void SetInPreCompiler(unsigned int b);
2435
2436 extern void SetTargetPlatform(int platform);
2437
2438 extern void SetTargetBits(int bits);
2439
2440 extern void SetEchoOn(unsigned int b);
2441
2442 extern struct __ecereNameSpace__ecere__com__Instance * __ecereNameSpace__ecere__com____ecere_COM_Initialize(unsigned int guiApp, int argc, char *  argv[]);
2443
2444 extern void SetPrivateModule(struct __ecereNameSpace__ecere__com__Instance * module);
2445
2446 extern struct Type * ProcessTypeString(char *  string, unsigned int staticMethod);
2447
2448 extern unsigned int __ecereNameSpace__ecere__sys__FileExists(char *  fileName);
2449
2450 extern unsigned int __ecereNameSpace__ecere__sys__DeleteFile(char *  fileName);
2451
2452 extern int snprintf(char * , size_t, char * , ...);
2453
2454 extern struct __ecereNameSpace__ecere__com__Instance * __ecereNameSpace__ecere__sys__DualPipeOpen(unsigned int mode, char *  commandLine);
2455
2456 extern void SetFileInput(struct __ecereNameSpace__ecere__com__Instance * file);
2457
2458 extern void SetMainModule(struct ModuleImport * moduleImport);
2459
2460 extern void resetScanner(void);
2461
2462 extern void ParseEc(void);
2463
2464 extern void SetYydebug(unsigned int b);
2465
2466 extern void ProcessDBTableDefinitions(void);
2467
2468 extern void FreeASTTree(struct __ecereNameSpace__ecere__sys__OldList * ast);
2469
2470 extern void FreeContext(struct Context * context);
2471
2472 extern void FreeExcludedSymbols(struct __ecereNameSpace__ecere__sys__OldList * excludedSymbols);
2473
2474 extern void FreeModuleDefine(struct Definition * def);
2475
2476 extern void FreeModuleImport(struct ModuleImport * imp);
2477
2478 extern void FreeTypeData(struct __ecereNameSpace__ecere__com__Instance * privateModule);
2479
2480 extern void FreeIncludeFiles(void);
2481
2482 extern void FreeGlobalData(struct __ecereNameSpace__ecere__com__NameSpace * globalDataList);
2483
2484 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__sys__TempFile;
2485
2486 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__Application;
2487
2488 struct __ecereNameSpace__ecere__com__Application
2489 {
2490 int argc;
2491 char * *  argv;
2492 int exitCode;
2493 unsigned int isGUIApp;
2494 struct __ecereNameSpace__ecere__sys__OldList allModules;
2495 char *  parsedCommand;
2496 struct __ecereNameSpace__ecere__com__NameSpace systemNameSpace;
2497 } __attribute__ ((gcc_struct));
2498
2499 char *  __ecereProp___ecereNameSpace__ecere__com__Platform_Get_char__PTR_(int this);
2500
2501 int __ecereProp___ecereNameSpace__ecere__com__Platform_Set_char__PTR_(char *  value);
2502
2503 extern struct __ecereNameSpace__ecere__com__Property ** __ecereProp___ecereNameSpace__ecere__com__Platform_char__PTR_;
2504
2505 unsigned int __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Add(struct __ecereNameSpace__ecere__sys__BinaryTree * this, struct __ecereNameSpace__ecere__sys__BTNode * node);
2506
2507 int __ecereVMethodID___ecereNameSpace__ecere__sys__File_Eof;
2508
2509 int __ecereVMethodID___ecereNameSpace__ecere__sys__File_Read;
2510
2511 int __ecereVMethodID___ecereNameSpace__ecere__sys__File_Write;
2512
2513 int __ecereMethod___ecereNameSpace__ecere__sys__DualPipe_GetExitCode();
2514
2515 int __ecereVMethodID___ecereNameSpace__ecere__sys__File_Seek;
2516
2517 void __ecereMethod_PrecompApp_Main(struct __ecereNameSpace__ecere__com__Instance * this)
2518 {
2519 void * __ecereTemp1;
2520 int c;
2521 unsigned int valid = 0x1;
2522 char defaultSymFile[797];
2523 char * cppCommand = (((void *)0));
2524 char * cppOptions = (((void *)0));
2525 int cppOptionsLen = 0;
2526 int targetPlatform = __ecereNameSpace__ecere__com__GetRuntimePlatform();
2527 int targetBits = GetHostBits();
2528
2529 for(c = 1; c < ((struct __ecereNameSpace__ecere__com__Application *)(((char *)this + structSize_Module)))->argc; c++)
2530 {
2531 char * arg = ((struct __ecereNameSpace__ecere__com__Application *)(((char *)this + structSize_Module)))->argv[c];
2532
2533 if(arg[0] == '-')
2534 {
2535 if(!strcmp(arg + 1, "m32") || !strcmp(arg + 1, "m64"))
2536 {
2537 int argLen = strlen(arg);
2538 int newLen = cppOptionsLen + 1 + argLen;
2539
2540 cppOptions = __ecereNameSpace__ecere__com__eSystem_Renew(cppOptions, sizeof(char) * (newLen + 1));
2541 cppOptions[cppOptionsLen] = ' ';
2542 strcpy(cppOptions + cppOptionsLen + 1, arg);
2543 cppOptionsLen = newLen;
2544 targetBits = !strcmp(arg + 1, "m32") ? 32 : 64;
2545 }
2546 else if(arg[1] == 'D')
2547 {
2548 int argLen = strlen(arg);
2549 int newLen = cppOptionsLen + 1 + argLen;
2550
2551 cppOptions = __ecereNameSpace__ecere__com__eSystem_Renew(cppOptions, sizeof(char) * (newLen + 1));
2552 cppOptions[cppOptionsLen] = ' ';
2553 strcpy(cppOptions + cppOptionsLen + 1, arg);
2554 cppOptionsLen = newLen;
2555 }
2556 else if(arg[1] == 'I')
2557 {
2558 int argLen = strlen(arg);
2559 int newLen = cppOptionsLen + argLen + 3;
2560
2561 cppOptions = __ecereNameSpace__ecere__com__eSystem_Renew(cppOptions, sizeof(char) * (newLen + 1));
2562 cppOptions[cppOptionsLen] = ' ';
2563 cppOptions[cppOptionsLen + 1] = '-';
2564 cppOptions[cppOptionsLen + 2] = 'I';
2565 cppOptions[cppOptionsLen + 3] = '"';
2566 strcpy(cppOptions + cppOptionsLen + 4, arg + 2);
2567 cppOptions[newLen - 1] = '\"';
2568 cppOptions[newLen] = '\0';
2569 cppOptionsLen = newLen;
2570 }
2571 else if(!strcmp(arg + 1, "t"))
2572 {
2573 if(++c < ((struct __ecereNameSpace__ecere__com__Application *)(((char *)this + structSize_Module)))->argc)
2574 targetPlatform = __ecereProp___ecereNameSpace__ecere__com__Platform_Set_char__PTR_(((struct __ecereNameSpace__ecere__com__Application *)(((char *)this + structSize_Module)))->argv[c]);
2575 else
2576 valid = 0x0;
2577 }
2578 else if(!strcmp(arg + 1, "cpp"))
2579 {
2580 if(++c < ((struct __ecereNameSpace__ecere__com__Application *)(((char *)this + structSize_Module)))->argc)
2581 cppCommand = __ecereNameSpace__ecere__sys__CopyString(((struct __ecereNameSpace__ecere__com__Application *)(((char *)this + structSize_Module)))->argv[c]);
2582 else
2583 valid = 0x0;
2584 }
2585 else if(!strcmp(arg + 1, "o"))
2586 {
2587 if(!GetOutputFile() && c + 1 < ((struct __ecereNameSpace__ecere__com__Application *)(((char *)this + structSize_Module)))->argc)
2588 {
2589 SetOutputFile(((struct __ecereNameSpace__ecere__com__Application *)(((char *)this + structSize_Module)))->argv[c + 1]);
2590 c++;
2591 }
2592 else
2593 valid = 0x0;
2594 }
2595 else if(!strcmp(arg + 1, "c"))
2596 {
2597 if(!GetSourceFile() && c + 1 < ((struct __ecereNameSpace__ecere__com__Application *)(((char *)this + structSize_Module)))->argc)
2598 {
2599 SetSourceFile(((struct __ecereNameSpace__ecere__com__Application *)(((char *)this + structSize_Module)))->argv[c + 1]);
2600 c++;
2601 }
2602 else
2603 valid = 0x0;
2604 }
2605 else if(!strcmp(arg + 1, "isystem") || !strcmp(arg + 1, "isysroot"))
2606 {
2607 if(c + 1 < ((struct __ecereNameSpace__ecere__com__Application *)(((char *)this + structSize_Module)))->argc)
2608 {
2609 int argLen = strlen(arg);
2610 int arg1Len = strlen(((struct __ecereNameSpace__ecere__com__Application *)(((char *)this + structSize_Module)))->argv[c + 1]);
2611 int newLen = cppOptionsLen + argLen + arg1Len + 4;
2612
2613 cppOptions = __ecereNameSpace__ecere__com__eSystem_Renew(cppOptions, sizeof(char) * (newLen + 1));
2614 cppOptions[cppOptionsLen] = ' ';
2615 strcpy(cppOptions + cppOptionsLen + 1, arg);
2616 cppOptions[cppOptionsLen + argLen + 1] = ' ';
2617 cppOptions[cppOptionsLen + argLen + 2] = '"';
2618 arg = ((struct __ecereNameSpace__ecere__com__Application *)(((char *)this + structSize_Module)))->argv[++c];
2619 strcpy(cppOptions + cppOptionsLen + argLen + 3, arg);
2620 cppOptions[newLen - 1] = '\"';
2621 cppOptions[newLen] = '\0';
2622 cppOptionsLen = newLen;
2623 }
2624 else
2625 valid = 0x0;
2626 }
2627 else if(!strcmp(arg + 1, "symbols"))
2628 {
2629 if(c + 1 < ((struct __ecereNameSpace__ecere__com__Application *)(((char *)this + structSize_Module)))->argc)
2630 {
2631 SetSymbolsDir(((struct __ecereNameSpace__ecere__com__Application *)(((char *)this + structSize_Module)))->argv[c + 1]);
2632 c++;
2633 }
2634 else
2635 valid = 0x0;
2636 }
2637 else if(!strcmp(arg + 1, "defaultns"))
2638 {
2639 if(c + 1 < ((struct __ecereNameSpace__ecere__com__Application *)(((char *)this + structSize_Module)))->argc)
2640 {
2641 SetDefaultNameSpace(((struct __ecereNameSpace__ecere__com__Application *)(((char *)this + structSize_Module)))->argv[c + 1]);
2642 c++;
2643 }
2644 else
2645 valid = 0x0;
2646 }
2647 else if(!strcmp(arg + 1, "strictns"))
2648 {
2649 SetStrictNameSpaces(0x1);
2650 }
2651 }
2652 else
2653 valid = 0x0;
2654 }
2655 if(valid)
2656 {
2657 if(!cppCommand)
2658 cppCommand = __ecereNameSpace__ecere__sys__CopyString("gcc");
2659 if(!GetSourceFile())
2660 valid = 0x0;
2661 else if(!GetOutputFile())
2662 {
2663 strcpy(defaultSymFile, GetSymbolsDir());
2664 __ecereNameSpace__ecere__sys__PathCat(defaultSymFile, GetSourceFile());
2665 __ecereNameSpace__ecere__sys__ChangeExtension(defaultSymFile, "sym", defaultSymFile);
2666 SetOutputFile(defaultSymFile);
2667 }
2668 }
2669 if(!valid)
2670 printf(__ecereNameSpace__ecere__GetTranslatedString(__thisModule, "Syntax:\n   ecp [-t <target platform>] [-cpp <c preprocessor>] [-o <output>] [-symbols <outputdir>] [-I<includedir>]* [-isystem <sysincludedir>]* [-D<definition>]* -c <input>\n", (((void *)0))));
2671 else
2672 {
2673 char command[3075LL];
2674 struct __ecereNameSpace__ecere__com__Instance * cppOutput;
2675
2676 SetGlobalContext(globalContext);
2677 SetTopContext(globalContext);
2678 SetCurrentContext(globalContext);
2679 SetExcludedSymbols(&_excludedSymbols);
2680 SetGlobalData(&globalData);
2681 SetDefines(&defines);
2682 SetImports(&imports);
2683 SetPrecompDefines(&precompDefines);
2684 SetInPreCompiler(0x1);
2685 SetTargetPlatform(targetPlatform);
2686 SetTargetBits(targetBits);
2687 SetEchoOn(0x0);
2688 privateModule = (struct __ecereNameSpace__ecere__com__Instance *)__ecereNameSpace__ecere__com____ecere_COM_Initialize(0x1 | (targetBits == sizeof(uintptr_t) * 8 ? (unsigned int)0 : targetBits == 64 ? (unsigned int)2 : targetBits == 32 ? (unsigned int)4 : (unsigned int)0) | (unsigned int)8, 1, (((void *)0)));
2689 SetPrivateModule(privateModule);
2690 __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Add(&globalContext->types, (struct __ecereNameSpace__ecere__sys__BTNode *)(__ecereTemp1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Symbol), ((struct Symbol *)__ecereTemp1)->string = __ecereNameSpace__ecere__sys__CopyString("uint"), ((struct Symbol *)__ecereTemp1)->type = ProcessTypeString("unsigned int", 0x0), ((struct Symbol *)__ecereTemp1)));
2691 __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Add(&globalContext->types, (struct __ecereNameSpace__ecere__sys__BTNode *)(__ecereTemp1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Symbol), ((struct Symbol *)__ecereTemp1)->string = __ecereNameSpace__ecere__sys__CopyString("uint64"), ((struct Symbol *)__ecereTemp1)->type = ProcessTypeString("unsigned int64", 0x0), ((struct Symbol *)__ecereTemp1)));
2692 __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Add(&globalContext->types, (struct __ecereNameSpace__ecere__sys__BTNode *)(__ecereTemp1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Symbol), ((struct Symbol *)__ecereTemp1)->string = __ecereNameSpace__ecere__sys__CopyString("uint32"), ((struct Symbol *)__ecereTemp1)->type = ProcessTypeString("unsigned int", 0x0), ((struct Symbol *)__ecereTemp1)));
2693 __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Add(&globalContext->types, (struct __ecereNameSpace__ecere__sys__BTNode *)(__ecereTemp1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Symbol), ((struct Symbol *)__ecereTemp1)->string = __ecereNameSpace__ecere__sys__CopyString("uint16"), ((struct Symbol *)__ecereTemp1)->type = ProcessTypeString("unsigned short", 0x0), ((struct Symbol *)__ecereTemp1)));
2694 __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Add(&globalContext->types, (struct __ecereNameSpace__ecere__sys__BTNode *)(__ecereTemp1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Symbol), ((struct Symbol *)__ecereTemp1)->string = __ecereNameSpace__ecere__sys__CopyString("byte"), ((struct Symbol *)__ecereTemp1)->type = ProcessTypeString("unsigned char", 0x0), ((struct Symbol *)__ecereTemp1)));
2695 __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Add(&globalContext->types, (struct __ecereNameSpace__ecere__sys__BTNode *)(__ecereTemp1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Symbol), ((struct Symbol *)__ecereTemp1)->string = __ecereNameSpace__ecere__sys__CopyString("intptr_t"), ((struct Symbol *)__ecereTemp1)->type = ProcessTypeString("intptr", 0x0), ((struct Symbol *)__ecereTemp1)));
2696 __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Add(&globalContext->types, (struct __ecereNameSpace__ecere__sys__BTNode *)(__ecereTemp1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Symbol), ((struct Symbol *)__ecereTemp1)->string = __ecereNameSpace__ecere__sys__CopyString("uintptr_t"), ((struct Symbol *)__ecereTemp1)->type = ProcessTypeString("uintptr", 0x0), ((struct Symbol *)__ecereTemp1)));
2697 __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Add(&globalContext->types, (struct __ecereNameSpace__ecere__sys__BTNode *)(__ecereTemp1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Symbol), ((struct Symbol *)__ecereTemp1)->string = __ecereNameSpace__ecere__sys__CopyString("ssize_t"), ((struct Symbol *)__ecereTemp1)->type = ProcessTypeString("intsize", 0x0), ((struct Symbol *)__ecereTemp1)));
2698 __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Add(&globalContext->types, (struct __ecereNameSpace__ecere__sys__BTNode *)(__ecereTemp1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Symbol), ((struct Symbol *)__ecereTemp1)->string = __ecereNameSpace__ecere__sys__CopyString("size_t"), ((struct Symbol *)__ecereTemp1)->type = ProcessTypeString("uintsize", 0x0), ((struct Symbol *)__ecereTemp1)));
2699 {
2700 char * outputFilePath = GetOutputFile();
2701
2702 if(__ecereNameSpace__ecere__sys__FileExists(outputFilePath))
2703 __ecereNameSpace__ecere__sys__DeleteFile(outputFilePath);
2704 }
2705 snprintf(command, sizeof command, "%s%s -x c -E \"%s\"", cppCommand, cppOptions ? cppOptions : "", GetSourceFile());
2706 command[sizeof command - 1] = (char)0;
2707 if((cppOutput = __ecereNameSpace__ecere__sys__DualPipeOpen((((unsigned int)(0x1))), command)))
2708 {
2709 int exitCode;
2710 struct __ecereNameSpace__ecere__sys__OldList * ast;
2711 struct __ecereNameSpace__ecere__com__Instance * fileInput = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass___ecereNameSpace__ecere__sys__TempFile);
2712 struct ModuleImport * mainModule = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_ModuleImport);
2713
2714 SetFileInput(fileInput);
2715 SetMainModule(mainModule);
2716 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add(&imports, mainModule);
2717 resetScanner();
2718 for(; !((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *))cppOutput->_vTbl[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Eof])(cppOutput); )
2719 {
2720 char junk[4096];
2721 int count = ((int (*)(struct __ecereNameSpace__ecere__com__Instance *, void *  buffer, unsigned int size, unsigned int count))cppOutput->_vTbl[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Read])(cppOutput, junk, 1, 4096);
2722
2723 ((int (*)(struct __ecereNameSpace__ecere__com__Instance *, void *  buffer, unsigned int size, unsigned int count))fileInput->_vTbl[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Write])(fileInput, junk, 1, count);
2724 }
2725 exitCode = __ecereMethod___ecereNameSpace__ecere__sys__DualPipe_GetExitCode(cppOutput);
2726 (__ecereNameSpace__ecere__com__eInstance_DecRef(cppOutput), cppOutput = 0);
2727 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, int pos, int mode))fileInput->_vTbl[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Seek])(fileInput, 0, 0);
2728 ParseEc();
2729 SetCurrentNameSpace((((void *)0)));
2730 SetYydebug(0x0);
2731 (__ecereNameSpace__ecere__com__eInstance_DecRef(fileInput), fileInput = 0);
2732 SetFileInput((((void *)0)));
2733 ast = GetAST();
2734 if(!exitCode)
2735 {
2736 if(ast)
2737 {
2738 ProcessDBTableDefinitions();
2739 PreCompPreProcessClassDefinitions();
2740 }
2741 if(!((struct __ecereNameSpace__ecere__com__Application *)(((char *)this + structSize_Module)))->exitCode)
2742 OutputSymbols(GetOutputFile());
2743 }
2744 else
2745 ((struct __ecereNameSpace__ecere__com__Application *)(((char *)this + structSize_Module)))->exitCode = exitCode;
2746 if(ast)
2747 {
2748 FreeASTTree(ast);
2749 }
2750 }
2751 FreeContext(globalContext);
2752 FreeExcludedSymbols(&_excludedSymbols);
2753 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Free(&defines, FreeModuleDefine);
2754 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Free(&imports, FreeModuleImport);
2755 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Free(&precompDefines, FreeDefinition);
2756 FreeTypeData(privateModule);
2757 FreeIncludeFiles();
2758 FreeGlobalData(&globalData);
2759 (__ecereNameSpace__ecere__com__eInstance_DecRef(privateModule), privateModule = 0);
2760 }
2761 (__ecereNameSpace__ecere__com__eSystem_Delete(cppCommand), cppCommand = 0);
2762 (__ecereNameSpace__ecere__com__eSystem_Delete(cppOptions), cppOptions = 0);
2763 SetSymbolsDir((((void *)0)));
2764 }
2765
2766 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__Module;
2767
2768 struct __ecereNameSpace__ecere__com__Module
2769 {
2770 struct __ecereNameSpace__ecere__com__Instance * application;
2771 struct __ecereNameSpace__ecere__sys__OldList classes;
2772 struct __ecereNameSpace__ecere__sys__OldList defines;
2773 struct __ecereNameSpace__ecere__sys__OldList functions;
2774 struct __ecereNameSpace__ecere__sys__OldList modules;
2775 struct __ecereNameSpace__ecere__com__Instance * prev;
2776 struct __ecereNameSpace__ecere__com__Instance * next;
2777 char *  name;
2778 void *  library;
2779 void *  Unload;
2780 int importType;
2781 int origImportType;
2782 struct __ecereNameSpace__ecere__com__NameSpace privateNameSpace;
2783 struct __ecereNameSpace__ecere__com__NameSpace publicNameSpace;
2784 } __attribute__ ((gcc_struct));
2785
2786 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__GlobalFunction;
2787
2788 struct __ecereNameSpace__ecere__com__GlobalFunction;
2789
2790 extern struct __ecereNameSpace__ecere__com__GlobalFunction * __ecereNameSpace__ecere__com__eSystem_RegisterFunction(char *  name, char *  type, void *  func, struct __ecereNameSpace__ecere__com__Instance * module, int declMode);
2791
2792 void __ecereRegisterModule_ecp(struct __ecereNameSpace__ecere__com__Instance * module)
2793 {
2794 struct __ecereNameSpace__ecere__com__Class * class;
2795
2796 class = __ecereNameSpace__ecere__com__eSystem_RegisterClass(5, "ClassDefine", "Definition", sizeof(struct ClassDefine), 0, 0, 0, module, 2, 1);
2797 if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + structSize_Instance)))->application == ((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + structSize_Instance)))->application && class)
2798 __ecereClass_ClassDefine = class;
2799 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "base", "char *", arch_PointerSize, arch_PointerSize, 1);
2800 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "propertiesAndMembers", "ecere::sys::OldList", structSize_OldList, arch_PointerSize, 1);
2801 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "classProperties", "ecere::sys::OldList", structSize_OldList, arch_PointerSize, 1);
2802 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "methods", "ecere::sys::OldList", structSize_OldList, arch_PointerSize, 1);
2803 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "isRemote", "bool", 4, 4, 1);
2804 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "isWatchable", "bool", 4, 4, 1);
2805 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "fixed", "bool", 4, 4, 1);
2806 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "isStatic", "bool", 4, 4, 1);
2807 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "noExpansion", "bool", 4, 4, 1);
2808 class = __ecereNameSpace__ecere__com__eSystem_RegisterClass(5, "Define", "Definition", sizeof(struct Define), 0, 0, 0, module, 2, 1);
2809 if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + structSize_Instance)))->application == ((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + structSize_Instance)))->application && class)
2810 __ecereClass_Define = class;
2811 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "exp", "Expression", arch_PointerSize, arch_PointerSize, 1);
2812 class = __ecereNameSpace__ecere__com__eSystem_RegisterClass(5, "FunctionDefine", "Definition", sizeof(struct FunctionDefine), 0, 0, 0, module, 2, 1);
2813 if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + structSize_Instance)))->application == ((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + structSize_Instance)))->application && class)
2814 __ecereClass_FunctionDefine = class;
2815 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "dataType", "char *", arch_PointerSize, arch_PointerSize, 1);
2816 class = __ecereNameSpace__ecere__com__eSystem_RegisterClass(5, "DataDefine", "Definition", sizeof(struct DataDefine), 0, 0, 0, module, 2, 1);
2817 if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + structSize_Instance)))->application == ((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + structSize_Instance)))->application && class)
2818 __ecereClass_DataDefine = class;
2819 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "dataType", "char *", arch_PointerSize, arch_PointerSize, 1);
2820 class = __ecereNameSpace__ecere__com__eSystem_RegisterClass(5, "MethodDefine", 0, sizeof(struct MethodDefine), 0, 0, 0, module, 2, 1);
2821 if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + structSize_Instance)))->application == ((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + structSize_Instance)))->application && class)
2822 __ecereClass_MethodDefine = class;
2823 class = __ecereNameSpace__ecere__com__eSystem_RegisterClass(5, "PropertyDefine", 0, sizeof(struct PropertyDefine), 0, 0, 0, module, 2, 1);
2824 if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + structSize_Instance)))->application == ((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + structSize_Instance)))->application && class)
2825 __ecereClass_PropertyDefine = class;
2826 class = __ecereNameSpace__ecere__com__eSystem_RegisterClass(5, "DataMemberDefine", 0, sizeof(struct DataMemberDefine), 0, 0, 0, module, 2, 1);
2827 if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + structSize_Instance)))->application == ((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + structSize_Instance)))->application && class)
2828 __ecereClass_DataMemberDefine = class;
2829 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("FreeMethodDefine", "void FreeMethodDefine(MethodDefine method)", FreeMethodDefine, module, 2);
2830 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("FreeDataMemberDefine", "void FreeDataMemberDefine(DataMemberDefine dataMember)", FreeDataMemberDefine, module, 2);
2831 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("FreeDataDefine", "void FreeDataDefine(DataDefine data)", FreeDataDefine, module, 2);
2832 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("FreeDefinition", "void FreeDefinition(Definition definition)", FreeDefinition, module, 2);
2833 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("PreCompPreProcessClassDefinitions", "void PreCompPreProcessClassDefinitions(void)", PreCompPreProcessClassDefinitions, module, 2);
2834 class = __ecereNameSpace__ecere__com__eSystem_RegisterClass(0, "PrecompApp", "ecere::com::Application", 0, 0, 0, 0, module, 2, 1);
2835 if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + structSize_Instance)))->application == ((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + structSize_Instance)))->application && class)
2836 __ecereClass_PrecompApp = class;
2837 __ecereNameSpace__ecere__com__eClass_AddMethod(class, "Main", 0, __ecereMethod_PrecompApp_Main, 1);
2838 }
2839
2840 void __ecereUnregisterModule_ecp(struct __ecereNameSpace__ecere__com__Instance * module)
2841 {
2842
2843 }
2844
2845 int __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_CompareString(struct __ecereNameSpace__ecere__sys__BinaryTree * this, char *  a, char *  b);
2846
2847 void __ecereCreateModuleInstances_ecp()
2848 {
2849 globalContext = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Context);
2850 (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);
2851 }
2852
2853 void __ecereDestroyModuleInstances_ecp()
2854 {
2855 ((globalContext ? (__ecereClass_Context->Destructor ? __ecereClass_Context->Destructor(globalContext) : 0, __ecereNameSpace__ecere__com__eSystem_Delete(globalContext)) : 0), globalContext = 0);
2856 }
2857