075dc3035ced30ce384d6134ba2aa5b106b245c3
[sdk] / compiler / bootstrap / libec / bootstrap / output.c
1 /* Code generated from eC source file: output.ec */
2 #if defined(__GNUC__)
3 typedef long long int64;
4 typedef unsigned long long uint64;
5 #ifndef _WIN32
6 #define __declspec(x)
7 #endif
8 #elif defined(__TINYC__)
9 #include <stdarg.h>
10 #define __builtin_va_list va_list
11 #define __builtin_va_start va_start
12 #define __builtin_va_end va_end
13 #ifdef _WIN32
14 #define strcasecmp stricmp
15 #define strncasecmp strnicmp
16 #define __declspec(x) __attribute__((x))
17 #else
18 #define __declspec(x)
19 #endif
20 typedef long long int64;
21 typedef unsigned long long uint64;
22 #else
23 typedef __int64 int64;
24 typedef unsigned __int64 uint64;
25 #endif
26 #ifdef __BIG_ENDIAN__
27 #define __ENDIAN_PAD(x) (8 - (x))
28 #else
29 #define __ENDIAN_PAD(x) 0
30 #endif
31 #include <stdint.h>
32 #include <sys/types.h>
33 extern void *  __ecereNameSpace__ecere__com__eSystem_New(unsigned int size);
34
35 extern void *  __ecereNameSpace__ecere__com__eSystem_New0(unsigned int size);
36
37 extern void *  __ecereNameSpace__ecere__com__eSystem_Renew(void *  memory, unsigned int size);
38
39 extern void *  __ecereNameSpace__ecere__com__eSystem_Renew0(void *  memory, unsigned int size);
40
41 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__sys__BTNode;
42
43 struct __ecereNameSpace__ecere__sys__BTNode;
44
45 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__sys__BinaryTree;
46
47 struct __ecereNameSpace__ecere__sys__BinaryTree
48 {
49 struct __ecereNameSpace__ecere__sys__BTNode * root;
50 int count;
51 int (*  CompareKey)(struct __ecereNameSpace__ecere__sys__BinaryTree * tree, uintptr_t a, uintptr_t b);
52 void (*  FreeKey)(void *  key);
53 } __attribute__ ((gcc_struct));
54
55 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__sys__OldList;
56
57 struct __ecereNameSpace__ecere__sys__OldList
58 {
59 void *  first;
60 void *  last;
61 int count;
62 unsigned int offset;
63 unsigned int circ;
64 } __attribute__ ((gcc_struct));
65
66 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__Method;
67
68 struct __ecereNameSpace__ecere__com__Method
69 {
70 char *  name;
71 struct __ecereNameSpace__ecere__com__Method * parent;
72 struct __ecereNameSpace__ecere__com__Method * left;
73 struct __ecereNameSpace__ecere__com__Method * right;
74 int depth;
75 int (*  function)();
76 int vid;
77 int type;
78 struct __ecereNameSpace__ecere__com__Class * _class;
79 void *  symbol;
80 char *  dataTypeString;
81 struct Type * dataType;
82 int memberAccess;
83 } __attribute__ ((gcc_struct));
84
85 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__Property;
86
87 struct __ecereNameSpace__ecere__com__Property
88 {
89 struct __ecereNameSpace__ecere__com__Property * prev;
90 struct __ecereNameSpace__ecere__com__Property * next;
91 char *  name;
92 unsigned int isProperty;
93 int memberAccess;
94 int id;
95 struct __ecereNameSpace__ecere__com__Class * _class;
96 char *  dataTypeString;
97 struct __ecereNameSpace__ecere__com__Class * dataTypeClass;
98 struct Type * dataType;
99 void (*  Set)(void * , int);
100 int (*  Get)(void * );
101 unsigned int (*  IsSet)(void * );
102 void *  data;
103 void *  symbol;
104 int vid;
105 unsigned int conversion;
106 unsigned int watcherOffset;
107 char *  category;
108 unsigned int compiled;
109 unsigned int selfWatchable;
110 unsigned int isWatchable;
111 } __attribute__ ((gcc_struct));
112
113 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_CodePosition;
114
115 struct CodePosition
116 {
117 int line;
118 int charPos;
119 int pos;
120 int included;
121 } __attribute__ ((gcc_struct));
122
123 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Location;
124
125 struct Location
126 {
127 struct CodePosition start;
128 struct CodePosition end;
129 } __attribute__ ((gcc_struct));
130
131 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Attrib;
132
133 struct Attrib
134 {
135 struct Location loc;
136 int type;
137 struct __ecereNameSpace__ecere__sys__OldList *  attribs;
138 } __attribute__ ((gcc_struct));
139
140 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_ExtDecl;
141
142 struct ExtDecl
143 {
144 struct Location loc;
145 int type;
146 union
147 {
148 char * s;
149 struct Attrib * attr;
150 } __attribute__ ((gcc_struct));
151 } __attribute__ ((gcc_struct));
152
153 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_ClassDefinition;
154
155 struct ClassDefinition
156 {
157 struct ClassDefinition * prev;
158 struct ClassDefinition * next;
159 struct Location loc;
160 struct Specifier * _class;
161 struct __ecereNameSpace__ecere__sys__OldList *  baseSpecs;
162 struct __ecereNameSpace__ecere__sys__OldList *  definitions;
163 struct Symbol * symbol;
164 struct Location blockStart;
165 struct Location nameLoc;
166 int endid;
167 int declMode;
168 unsigned int deleteWatchable;
169 } __attribute__ ((gcc_struct));
170
171 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Context;
172
173 struct Context;
174
175 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Instantiation;
176
177 struct Instantiation
178 {
179 struct Instantiation * prev;
180 struct Instantiation * next;
181 struct Location loc;
182 struct Specifier * _class;
183 struct Expression * exp;
184 struct __ecereNameSpace__ecere__sys__OldList *  members;
185 struct Symbol * symbol;
186 unsigned int fullSet;
187 unsigned int isConstant;
188 unsigned char *  data;
189 struct Location nameLoc;
190 struct Location insideLoc;
191 unsigned int built;
192 } __attribute__ ((gcc_struct));
193
194 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Declaration;
195
196 struct Declaration
197 {
198 struct Declaration * prev;
199 struct Declaration * next;
200 struct Location loc;
201 int type;
202 union
203 {
204 struct
205 {
206 struct __ecereNameSpace__ecere__sys__OldList *  specifiers;
207 struct __ecereNameSpace__ecere__sys__OldList *  declarators;
208 } __attribute__ ((gcc_struct));
209 struct Instantiation * inst;
210 struct
211 {
212 struct Identifier * id;
213 struct Expression * exp;
214 } __attribute__ ((gcc_struct));
215 } __attribute__ ((gcc_struct));
216 struct Specifier * extStorage;
217 struct Symbol * symbol;
218 int declMode;
219 } __attribute__ ((gcc_struct));
220
221 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Statement;
222
223 struct Statement
224 {
225 struct Statement * prev;
226 struct Statement * next;
227 struct Location loc;
228 int type;
229 union
230 {
231 struct __ecereNameSpace__ecere__sys__OldList *  expressions;
232 struct
233 {
234 struct Identifier * id;
235 struct Statement * stmt;
236 } __attribute__ ((gcc_struct)) labeled;
237 struct
238 {
239 struct Expression * exp;
240 struct Statement * stmt;
241 } __attribute__ ((gcc_struct)) caseStmt;
242 struct
243 {
244 struct __ecereNameSpace__ecere__sys__OldList * declarations;
245 struct __ecereNameSpace__ecere__sys__OldList * statements;
246 struct Context * context;
247 unsigned int isSwitch;
248 } __attribute__ ((gcc_struct)) compound;
249 struct
250 {
251 struct __ecereNameSpace__ecere__sys__OldList * exp;
252 struct Statement * stmt;
253 struct Statement * elseStmt;
254 } __attribute__ ((gcc_struct)) ifStmt;
255 struct
256 {
257 struct __ecereNameSpace__ecere__sys__OldList * exp;
258 struct Statement * stmt;
259 } __attribute__ ((gcc_struct)) switchStmt;
260 struct
261 {
262 struct __ecereNameSpace__ecere__sys__OldList * exp;
263 struct Statement * stmt;
264 } __attribute__ ((gcc_struct)) whileStmt;
265 struct
266 {
267 struct __ecereNameSpace__ecere__sys__OldList * exp;
268 struct Statement * stmt;
269 } __attribute__ ((gcc_struct)) doWhile;
270 struct
271 {
272 struct Statement * init;
273 struct Statement * check;
274 struct __ecereNameSpace__ecere__sys__OldList * increment;
275 struct Statement * stmt;
276 } __attribute__ ((gcc_struct)) forStmt;
277 struct
278 {
279 struct Identifier * id;
280 } __attribute__ ((gcc_struct)) gotoStmt;
281 struct
282 {
283 struct Specifier * spec;
284 char * statements;
285 struct __ecereNameSpace__ecere__sys__OldList * inputFields;
286 struct __ecereNameSpace__ecere__sys__OldList * outputFields;
287 struct __ecereNameSpace__ecere__sys__OldList * clobberedFields;
288 } __attribute__ ((gcc_struct)) asmStmt;
289 struct
290 {
291 struct Expression * watcher;
292 struct Expression * object;
293 struct __ecereNameSpace__ecere__sys__OldList * watches;
294 } __attribute__ ((gcc_struct)) _watch;
295 struct
296 {
297 struct Identifier * id;
298 struct __ecereNameSpace__ecere__sys__OldList * exp;
299 struct __ecereNameSpace__ecere__sys__OldList * filter;
300 struct Statement * stmt;
301 } __attribute__ ((gcc_struct)) forEachStmt;
302 struct Declaration * decl;
303 } __attribute__ ((gcc_struct));
304 } __attribute__ ((gcc_struct));
305
306 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_TypeName;
307
308 struct TypeName
309 {
310 struct TypeName * prev;
311 struct TypeName * next;
312 struct Location loc;
313 struct __ecereNameSpace__ecere__sys__OldList *  qualifiers;
314 struct Declarator * declarator;
315 int classObjectType;
316 struct Expression * bitCount;
317 } __attribute__ ((gcc_struct));
318
319 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Initializer;
320
321 struct Initializer
322 {
323 struct Initializer * prev;
324 struct Initializer * next;
325 struct Location loc;
326 int type;
327 union
328 {
329 struct Expression * exp;
330 struct __ecereNameSpace__ecere__sys__OldList *  list;
331 } __attribute__ ((gcc_struct));
332 unsigned int isConstant;
333 } __attribute__ ((gcc_struct));
334
335 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__DataValue;
336
337 struct __ecereNameSpace__ecere__com__DataValue
338 {
339 union
340 {
341 char c;
342 unsigned char uc;
343 short s;
344 unsigned short us;
345 int i;
346 unsigned int ui;
347 void *  p;
348 float f;
349 double d;
350 long long i64;
351 uint64 ui64;
352 } __attribute__ ((gcc_struct));
353 } __attribute__ ((gcc_struct));
354
355 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Expression;
356
357 struct Expression
358 {
359 struct Expression * prev;
360 struct Expression * next;
361 struct Location loc;
362 int type;
363 union
364 {
365 struct
366 {
367 char *  constant;
368 struct Identifier * identifier;
369 } __attribute__ ((gcc_struct));
370 struct Statement * compound;
371 struct Instantiation * instance;
372 char *  string;
373 struct __ecereNameSpace__ecere__sys__OldList *  list;
374 struct
375 {
376 struct __ecereNameSpace__ecere__sys__OldList * specifiers;
377 struct Declarator * decl;
378 } __attribute__ ((gcc_struct)) _classExp;
379 struct
380 {
381 struct Identifier * id;
382 } __attribute__ ((gcc_struct)) classData;
383 struct
384 {
385 struct Expression * exp;
386 struct __ecereNameSpace__ecere__sys__OldList * arguments;
387 struct Location argLoc;
388 } __attribute__ ((gcc_struct)) call;
389 struct
390 {
391 struct Expression * exp;
392 struct __ecereNameSpace__ecere__sys__OldList * index;
393 } __attribute__ ((gcc_struct)) index;
394 struct
395 {
396 struct Expression * exp;
397 struct Identifier * member;
398 int memberType;
399 unsigned int thisPtr;
400 } __attribute__ ((gcc_struct)) member;
401 struct
402 {
403 int op;
404 struct Expression * exp1;
405 struct Expression * exp2;
406 } __attribute__ ((gcc_struct)) op;
407 struct TypeName * typeName;
408 struct Specifier * _class;
409 struct
410 {
411 struct TypeName * typeName;
412 struct Expression * exp;
413 } __attribute__ ((gcc_struct)) cast;
414 struct
415 {
416 struct Expression * cond;
417 struct __ecereNameSpace__ecere__sys__OldList * exp;
418 struct Expression * elseExp;
419 } __attribute__ ((gcc_struct)) cond;
420 struct
421 {
422 struct TypeName * typeName;
423 struct Expression * size;
424 } __attribute__ ((gcc_struct)) _new;
425 struct
426 {
427 struct TypeName * typeName;
428 struct Expression * size;
429 struct Expression * exp;
430 } __attribute__ ((gcc_struct)) _renew;
431 struct
432 {
433 char * table;
434 struct Identifier * id;
435 } __attribute__ ((gcc_struct)) db;
436 struct
437 {
438 struct Expression * ds;
439 struct Expression * name;
440 } __attribute__ ((gcc_struct)) dbopen;
441 struct
442 {
443 struct TypeName * typeName;
444 struct Initializer * initializer;
445 } __attribute__ ((gcc_struct)) initializer;
446 struct
447 {
448 struct Expression * exp;
449 struct TypeName * typeName;
450 } __attribute__ ((gcc_struct)) vaArg;
451 } __attribute__ ((gcc_struct));
452 unsigned int debugValue;
453 struct __ecereNameSpace__ecere__com__DataValue val;
454 uint64 address;
455 unsigned int hasAddress;
456 struct Type * expType;
457 struct Type * destType;
458 unsigned int usage;
459 int tempCount;
460 unsigned int byReference;
461 unsigned int isConstant;
462 unsigned int addedThis;
463 unsigned int needCast;
464 unsigned int thisPtr;
465 } __attribute__ ((gcc_struct));
466
467 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_TemplateDatatype;
468
469 struct TemplateDatatype
470 {
471 struct __ecereNameSpace__ecere__sys__OldList *  specifiers;
472 struct Declarator * decl;
473 } __attribute__ ((gcc_struct));
474
475 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_TemplateArgument;
476
477 struct TemplateArgument;
478
479 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_TemplateParameter;
480
481 struct TemplateParameter
482 {
483 struct TemplateParameter * prev;
484 struct TemplateParameter * next;
485 struct Location loc;
486 int type;
487 struct Identifier * identifier;
488 union
489 {
490 struct TemplateDatatype * dataType;
491 int memberType;
492 } __attribute__ ((gcc_struct));
493 struct TemplateArgument * defaultArgument;
494 char *  dataTypeString;
495 struct Type * baseType;
496 } __attribute__ ((gcc_struct));
497
498 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Specifier;
499
500 struct Specifier
501 {
502 struct Specifier * prev;
503 struct Specifier * next;
504 struct Location loc;
505 int type;
506 union
507 {
508 int specifier;
509 struct
510 {
511 struct ExtDecl * extDecl;
512 char *  name;
513 struct Symbol * symbol;
514 struct __ecereNameSpace__ecere__sys__OldList *  templateArgs;
515 } __attribute__ ((gcc_struct));
516 struct
517 {
518 struct Identifier * id;
519 struct __ecereNameSpace__ecere__sys__OldList *  list;
520 struct __ecereNameSpace__ecere__sys__OldList *  baseSpecs;
521 struct __ecereNameSpace__ecere__sys__OldList *  definitions;
522 unsigned int addNameSpace;
523 struct Context * ctx;
524 struct ExtDecl * extDeclStruct;
525 } __attribute__ ((gcc_struct));
526 struct Expression * expression;
527 struct Specifier * _class;
528 struct TemplateParameter * templateParameter;
529 } __attribute__ ((gcc_struct));
530 } __attribute__ ((gcc_struct));
531
532 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Identifier;
533
534 struct Identifier
535 {
536 struct Identifier * prev;
537 struct Identifier * next;
538 struct Location loc;
539 struct Symbol * classSym;
540 struct Specifier * _class;
541 char *  string;
542 struct Identifier * badID;
543 } __attribute__ ((gcc_struct));
544
545 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Pointer;
546
547 struct Pointer
548 {
549 struct Pointer * prev;
550 struct Pointer * next;
551 struct Location loc;
552 struct __ecereNameSpace__ecere__sys__OldList *  qualifiers;
553 struct Pointer * pointer;
554 } __attribute__ ((gcc_struct));
555
556 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Declarator;
557
558 struct Declarator
559 {
560 struct Declarator * prev;
561 struct Declarator * next;
562 struct Location loc;
563 int type;
564 struct Symbol * symbol;
565 struct Declarator * declarator;
566 union
567 {
568 struct Identifier * identifier;
569 struct
570 {
571 struct Expression * exp;
572 struct Expression * posExp;
573 struct Attrib * attrib;
574 } __attribute__ ((gcc_struct)) structDecl;
575 struct
576 {
577 struct Expression * exp;
578 struct Specifier * enumClass;
579 } __attribute__ ((gcc_struct)) array;
580 struct
581 {
582 struct __ecereNameSpace__ecere__sys__OldList * parameters;
583 } __attribute__ ((gcc_struct)) function;
584 struct
585 {
586 struct Pointer * pointer;
587 } __attribute__ ((gcc_struct)) pointer;
588 struct
589 {
590 struct ExtDecl * extended;
591 } __attribute__ ((gcc_struct)) extended;
592 } __attribute__ ((gcc_struct));
593 } __attribute__ ((gcc_struct));
594
595 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_FunctionDefinition;
596
597 struct FunctionDefinition
598 {
599 struct FunctionDefinition * prev;
600 struct FunctionDefinition * next;
601 struct Location loc;
602 struct __ecereNameSpace__ecere__sys__OldList *  specifiers;
603 struct Declarator * declarator;
604 struct __ecereNameSpace__ecere__sys__OldList *  declarations;
605 struct Statement * body;
606 struct __ecereNameSpace__ecere__com__Class * _class;
607 struct __ecereNameSpace__ecere__sys__OldList attached;
608 int declMode;
609 struct Type * type;
610 struct Symbol * propSet;
611 int tempCount;
612 unsigned int propertyNoThis;
613 } __attribute__ ((gcc_struct));
614
615 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_DBTableDef;
616
617 struct DBTableDef;
618
619 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_External;
620
621 struct External
622 {
623 struct External * prev;
624 struct External * next;
625 struct Location loc;
626 int type;
627 struct Symbol * symbol;
628 union
629 {
630 struct FunctionDefinition * function;
631 struct ClassDefinition * _class;
632 struct Declaration * declaration;
633 char *  importString;
634 struct Identifier * id;
635 struct DBTableDef * table;
636 } __attribute__ ((gcc_struct));
637 int importType;
638 } __attribute__ ((gcc_struct));
639
640 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_ModuleImport;
641
642 struct ModuleImport;
643
644 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_ClassImport;
645
646 struct ClassImport;
647
648 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Symbol;
649
650 struct Symbol
651 {
652 char *  string;
653 struct Symbol * parent;
654 struct Symbol * left;
655 struct Symbol * right;
656 int depth;
657 struct Type * type;
658 union
659 {
660 struct __ecereNameSpace__ecere__com__Method * method;
661 struct __ecereNameSpace__ecere__com__Property * _property;
662 struct __ecereNameSpace__ecere__com__Class * registered;
663 } __attribute__ ((gcc_struct));
664 int id;
665 int idCode;
666 union
667 {
668 struct
669 {
670 struct External * pointerExternal;
671 struct External * structExternal;
672 } __attribute__ ((gcc_struct));
673 struct
674 {
675 struct External * externalGet;
676 struct External * externalSet;
677 struct External * externalPtr;
678 struct External * externalIsSet;
679 } __attribute__ ((gcc_struct));
680 struct
681 {
682 struct External * methodExternal;
683 struct External * methodCodeExternal;
684 } __attribute__ ((gcc_struct));
685 } __attribute__ ((gcc_struct));
686 unsigned int imported;
687 unsigned int declaredStructSym;
688 struct __ecereNameSpace__ecere__com__Class * _class;
689 unsigned int declaredStruct;
690 unsigned int needConstructor;
691 unsigned int needDestructor;
692 char *  constructorName;
693 char *  structName;
694 char *  className;
695 char *  destructorName;
696 struct ModuleImport * module;
697 struct ClassImport * _import;
698 struct Location nameLoc;
699 unsigned int isParam;
700 unsigned int isRemote;
701 unsigned int isStruct;
702 unsigned int fireWatchersDone;
703 int declaring;
704 unsigned int classData;
705 unsigned int isStatic;
706 char *  shortName;
707 struct __ecereNameSpace__ecere__sys__OldList *  templateParams;
708 struct __ecereNameSpace__ecere__sys__OldList templatedClasses;
709 struct Context * ctx;
710 int isIterator;
711 struct Expression * propCategory;
712 } __attribute__ ((gcc_struct));
713
714 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Type;
715
716 struct Type
717 {
718 struct Type * prev;
719 struct Type * next;
720 int refCount;
721 union
722 {
723 struct Symbol * _class;
724 struct
725 {
726 struct __ecereNameSpace__ecere__sys__OldList members;
727 char *  enumName;
728 } __attribute__ ((gcc_struct));
729 struct
730 {
731 struct Type * returnType;
732 struct __ecereNameSpace__ecere__sys__OldList params;
733 struct Symbol * thisClass;
734 unsigned int staticMethod;
735 struct TemplateParameter * thisClassTemplate;
736 } __attribute__ ((gcc_struct));
737 struct
738 {
739 struct __ecereNameSpace__ecere__com__Method * method;
740 struct __ecereNameSpace__ecere__com__Class * methodClass;
741 struct __ecereNameSpace__ecere__com__Class * usedClass;
742 } __attribute__ ((gcc_struct));
743 struct
744 {
745 struct Type * arrayType;
746 int arraySize;
747 struct Expression * arraySizeExp;
748 unsigned int freeExp;
749 struct Symbol * enumClass;
750 } __attribute__ ((gcc_struct));
751 struct Type * type;
752 struct TemplateParameter * templateParameter;
753 } __attribute__ ((gcc_struct));
754 int kind;
755 unsigned int size;
756 char *  name;
757 char *  typeName;
758 int classObjectType;
759 int alignment;
760 unsigned int offset;
761 int bitFieldCount;
762 int count;
763 unsigned int isSigned : 1;
764 unsigned int constant : 1;
765 unsigned int truth : 1;
766 unsigned int byReference : 1;
767 unsigned int extraParam : 1;
768 unsigned int directClassAccess : 1;
769 unsigned int computing : 1;
770 unsigned int keepCast : 1;
771 unsigned int passAsTemplate : 1;
772 unsigned int dllExport : 1;
773 unsigned int attrStdcall : 1;
774 unsigned int declaredWithStruct : 1;
775 unsigned int typedByReference : 1;
776 } __attribute__ ((gcc_struct));
777
778 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__Class;
779
780 struct __ecereNameSpace__ecere__com__Class
781 {
782 struct __ecereNameSpace__ecere__com__Class * prev;
783 struct __ecereNameSpace__ecere__com__Class * next;
784 char *  name;
785 int offset;
786 int structSize;
787 int (* *  _vTbl)();
788 int vTblSize;
789 int (*  Constructor)(struct __ecereNameSpace__ecere__com__Instance *);
790 void (*  Destructor)(struct __ecereNameSpace__ecere__com__Instance *);
791 int offsetClass;
792 int sizeClass;
793 struct __ecereNameSpace__ecere__com__Class * base;
794 struct __ecereNameSpace__ecere__sys__BinaryTree methods;
795 struct __ecereNameSpace__ecere__sys__BinaryTree members;
796 struct __ecereNameSpace__ecere__sys__BinaryTree prop;
797 struct __ecereNameSpace__ecere__sys__OldList membersAndProperties;
798 struct __ecereNameSpace__ecere__sys__BinaryTree classProperties;
799 struct __ecereNameSpace__ecere__sys__OldList derivatives;
800 int memberID;
801 int startMemberID;
802 int type;
803 struct __ecereNameSpace__ecere__com__Instance * module;
804 struct __ecereNameSpace__ecere__com__NameSpace *  nameSpace;
805 char *  dataTypeString;
806 struct Type * dataType;
807 int typeSize;
808 int defaultAlignment;
809 void (*  Initialize)();
810 int memberOffset;
811 struct __ecereNameSpace__ecere__sys__OldList selfWatchers;
812 char *  designerClass;
813 unsigned int noExpansion;
814 char *  defaultProperty;
815 unsigned int comRedefinition;
816 int count;
817 unsigned int isRemote;
818 unsigned int internalDecl;
819 void *  data;
820 unsigned int computeSize;
821 int structAlignment;
822 int destructionWatchOffset;
823 unsigned int fixed;
824 struct __ecereNameSpace__ecere__sys__OldList delayedCPValues;
825 int inheritanceAccess;
826 char *  fullName;
827 void *  symbol;
828 struct __ecereNameSpace__ecere__sys__OldList conversions;
829 struct __ecereNameSpace__ecere__sys__OldList templateParams;
830 struct __ecereNameSpace__ecere__com__ClassTemplateArgument *  templateArgs;
831 struct __ecereNameSpace__ecere__com__Class * templateClass;
832 struct __ecereNameSpace__ecere__sys__OldList templatized;
833 int numParams;
834 unsigned int isInstanceClass;
835 unsigned int byValueSystemClass;
836 } __attribute__ ((gcc_struct));
837
838 extern long long __ecereNameSpace__ecere__com__eClass_GetProperty(struct __ecereNameSpace__ecere__com__Class * _class, char *  name);
839
840 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__Instance;
841
842 struct __ecereNameSpace__ecere__com__Instance
843 {
844 int (* *  _vTbl)();
845 struct __ecereNameSpace__ecere__com__Class * _class;
846 int _refCount;
847 } __attribute__ ((gcc_struct));
848
849 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__DataMember;
850
851 struct __ecereNameSpace__ecere__com__DataMember
852 {
853 struct __ecereNameSpace__ecere__com__DataMember * prev;
854 struct __ecereNameSpace__ecere__com__DataMember * next;
855 char *  name;
856 unsigned int isProperty;
857 int memberAccess;
858 int id;
859 struct __ecereNameSpace__ecere__com__Class * _class;
860 char *  dataTypeString;
861 struct __ecereNameSpace__ecere__com__Class * dataTypeClass;
862 struct Type * dataType;
863 int type;
864 int offset;
865 int memberID;
866 struct __ecereNameSpace__ecere__sys__OldList members;
867 struct __ecereNameSpace__ecere__sys__BinaryTree membersAlpha;
868 int memberOffset;
869 int structAlignment;
870 } __attribute__ ((gcc_struct));
871
872 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__SerialBuffer;
873
874 struct __ecereNameSpace__ecere__com__SerialBuffer
875 {
876 unsigned char *  _buffer;
877 unsigned int count;
878 unsigned int _size;
879 unsigned int pos;
880 } __attribute__ ((gcc_struct));
881
882 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__ClassTemplateArgument;
883
884 struct __ecereNameSpace__ecere__com__ClassTemplateArgument
885 {
886 union
887 {
888 struct
889 {
890 char *  dataTypeString;
891 struct __ecereNameSpace__ecere__com__Class * dataTypeClass;
892 } __attribute__ ((gcc_struct));
893 struct __ecereNameSpace__ecere__com__DataValue expression;
894 struct
895 {
896 char *  memberString;
897 union
898 {
899 struct __ecereNameSpace__ecere__com__DataMember * member;
900 struct __ecereNameSpace__ecere__com__Property * prop;
901 struct __ecereNameSpace__ecere__com__Method * method;
902 } __attribute__ ((gcc_struct));
903 } __attribute__ ((gcc_struct));
904 } __attribute__ ((gcc_struct));
905 } __attribute__ ((gcc_struct));
906
907 enum yytokentype
908 {
909 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, BOOL = 367, _BOOL = 368, _COMPLEX = 369, _IMAGINARY = 370, RESTRICT = 371
910 };
911
912 typedef union YYSTYPE
913 {
914 int specifierType;
915 int i;
916 int declMode;
917 struct Identifier * id;
918 struct Expression * exp;
919 struct Specifier * specifier;
920 struct __ecereNameSpace__ecere__sys__OldList * list;
921 struct Enumerator * enumerator;
922 struct Declarator * declarator;
923 struct Pointer * pointer;
924 struct Initializer * initializer;
925 struct InitDeclarator * initDeclarator;
926 struct TypeName * typeName;
927 struct Declaration * declaration;
928 struct Statement * stmt;
929 struct FunctionDefinition * function;
930 struct External * external;
931 struct Context * context;
932 struct AsmField * asmField;
933 struct Attrib * attrib;
934 struct ExtDecl * extDecl;
935 struct Attribute * attribute;
936 struct Instantiation * instance;
937 struct MembersInit * membersInit;
938 struct MemberInit * memberInit;
939 struct ClassFunction * classFunction;
940 struct ClassDefinition * _class;
941 struct ClassDef * classDef;
942 struct PropertyDef * prop;
943 char * string;
944 struct Symbol * symbol;
945 struct PropertyWatch * propertyWatch;
946 struct TemplateParameter * templateParameter;
947 struct TemplateArgument * templateArgument;
948 struct TemplateDatatype * templateDatatype;
949 struct DBTableEntry * dbtableEntry;
950 struct DBIndexItem * dbindexItem;
951 struct DBTableDef * dbtableDef;
952 } __attribute__ ((gcc_struct)) YYSTYPE;
953
954 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Enumerator;
955
956 struct Enumerator
957 {
958 struct Enumerator * prev;
959 struct Enumerator * next;
960 struct Location loc;
961 struct Identifier * id;
962 struct Expression * exp;
963 } __attribute__ ((gcc_struct));
964
965 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_InitDeclarator;
966
967 struct InitDeclarator
968 {
969 struct InitDeclarator * prev;
970 struct InitDeclarator * next;
971 struct Location loc;
972 struct Declarator * declarator;
973 struct Initializer * initializer;
974 } __attribute__ ((gcc_struct));
975
976 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_AsmField;
977
978 struct AsmField
979 {
980 struct AsmField * prev;
981 struct AsmField * next;
982 struct Location loc;
983 char *  command;
984 struct Expression * expression;
985 } __attribute__ ((gcc_struct));
986
987 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Attribute;
988
989 struct Attribute
990 {
991 struct Attribute * prev;
992 struct Attribute * next;
993 struct Location loc;
994 char * attr;
995 struct Expression * exp;
996 } __attribute__ ((gcc_struct));
997
998 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_ClassFunction;
999
1000 struct ClassFunction
1001 {
1002 struct ClassFunction * prev;
1003 struct ClassFunction * next;
1004 struct Location loc;
1005 struct __ecereNameSpace__ecere__sys__OldList *  specifiers;
1006 struct Declarator * declarator;
1007 struct __ecereNameSpace__ecere__sys__OldList *  declarations;
1008 struct Statement * body;
1009 struct __ecereNameSpace__ecere__com__Class * _class;
1010 struct __ecereNameSpace__ecere__sys__OldList attached;
1011 int declMode;
1012 struct Type * type;
1013 struct Symbol * propSet;
1014 unsigned int isVirtual;
1015 unsigned int isConstructor;
1016 unsigned int isDestructor;
1017 unsigned int dontMangle;
1018 int id;
1019 int idCode;
1020 } __attribute__ ((gcc_struct));
1021
1022 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_MembersInit;
1023
1024 struct MembersInit
1025 {
1026 struct MembersInit * prev;
1027 struct MembersInit * next;
1028 struct Location loc;
1029 int type;
1030 union
1031 {
1032 struct __ecereNameSpace__ecere__sys__OldList *  dataMembers;
1033 struct ClassFunction * function;
1034 } __attribute__ ((gcc_struct));
1035 } __attribute__ ((gcc_struct));
1036
1037 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_MemberInit;
1038
1039 struct MemberInit
1040 {
1041 struct MemberInit * prev;
1042 struct MemberInit * next;
1043 struct Location loc;
1044 struct Location realLoc;
1045 struct __ecereNameSpace__ecere__sys__OldList *  identifiers;
1046 struct Initializer * initializer;
1047 unsigned int used;
1048 unsigned int variable;
1049 unsigned int takeOutExp;
1050 } __attribute__ ((gcc_struct));
1051
1052 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_PropertyDef;
1053
1054 struct PropertyDef;
1055
1056 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_PropertyWatch;
1057
1058 struct PropertyWatch;
1059
1060 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_ClassDef;
1061
1062 struct ClassDef
1063 {
1064 struct ClassDef * prev;
1065 struct ClassDef * next;
1066 struct Location loc;
1067 int type;
1068 union
1069 {
1070 struct Declaration * decl;
1071 struct ClassFunction * function;
1072 struct __ecereNameSpace__ecere__sys__OldList *  defProperties;
1073 struct PropertyDef * propertyDef;
1074 struct PropertyWatch * propertyWatch;
1075 char *  designer;
1076 struct Identifier * defaultProperty;
1077 struct
1078 {
1079 struct Identifier * id;
1080 struct Initializer * initializer;
1081 } __attribute__ ((gcc_struct));
1082 } __attribute__ ((gcc_struct));
1083 int memberAccess;
1084 void *  object;
1085 } __attribute__ ((gcc_struct));
1086
1087 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_DBTableEntry;
1088
1089 struct DBTableEntry;
1090
1091 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_DBIndexItem;
1092
1093 struct DBIndexItem;
1094
1095 extern YYSTYPE yylval;
1096
1097 extern struct Location yylloc;
1098
1099 int outputLine;
1100
1101 unsigned int memoryGuard = 0x0;
1102
1103 void SetMemoryGuard(unsigned int b)
1104 {
1105 memoryGuard = b;
1106 }
1107
1108 unsigned int GetMemoryGuard()
1109 {
1110 return memoryGuard;
1111 }
1112
1113 extern int strcmp(const char * , const char * );
1114
1115 int __ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts;
1116
1117 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__sys__File;
1118
1119 static void OutputIdentifier(struct Identifier * id, struct __ecereNameSpace__ecere__com__Instance * f)
1120 {
1121 if(id)
1122 {
1123 if(id->_class)
1124 {
1125 if(id->_class->type == 8)
1126 {
1127 if(id->_class->templateParameter && id->_class->templateParameter->identifier && id->_class->templateParameter->identifier->string)
1128 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
1129 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
1130
1131 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
1132 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, id->_class->templateParameter->identifier->string);
1133 }
1134 else
1135 {
1136 if(id->_class->name)
1137 {
1138 if(!strcmp(id->_class->name, "class"))
1139 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
1140 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
1141
1142 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
1143 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, "typed_object");
1144 else
1145 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
1146 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
1147
1148 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
1149 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, id->_class->name);
1150 }
1151 }
1152 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
1153 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
1154
1155 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
1156 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, "::");
1157 }
1158 }
1159 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
1160 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
1161
1162 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
1163 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, (id && id->string) ? id->string : "(null identifier)");
1164 }
1165
1166 int __ecereVMethodID___ecereNameSpace__ecere__sys__File_Putc;
1167
1168 static void OutputOperator(int op, struct __ecereNameSpace__ecere__com__Instance * f)
1169 {
1170 switch(op)
1171 {
1172 case INC_OP:
1173 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
1174 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
1175
1176 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
1177 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, "++");
1178 break;
1179 case DEC_OP:
1180 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
1181 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
1182
1183 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
1184 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, "--");
1185 break;
1186 case SIZEOF:
1187 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
1188 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
1189
1190 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
1191 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, "sizeof ");
1192 break;
1193 case LEFT_OP:
1194 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
1195 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
1196
1197 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
1198 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, "<<");
1199 break;
1200 case RIGHT_OP:
1201 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
1202 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
1203
1204 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
1205 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, ">>");
1206 break;
1207 case LE_OP:
1208 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
1209 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
1210
1211 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
1212 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, "<=");
1213 break;
1214 case GE_OP:
1215 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
1216 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
1217
1218 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
1219 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, ">=");
1220 break;
1221 case EQ_OP:
1222 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
1223 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
1224
1225 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
1226 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, "==");
1227 break;
1228 case NE_OP:
1229 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
1230 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
1231
1232 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
1233 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, "!=");
1234 break;
1235 case AND_OP:
1236 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
1237 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
1238
1239 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
1240 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, "&&");
1241 break;
1242 case OR_OP:
1243 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
1244 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
1245
1246 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
1247 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, "||");
1248 break;
1249 case MUL_ASSIGN:
1250 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
1251 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
1252
1253 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
1254 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, "*=");
1255 break;
1256 case DIV_ASSIGN:
1257 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
1258 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
1259
1260 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
1261 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, "/=");
1262 break;
1263 case MOD_ASSIGN:
1264 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
1265 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
1266
1267 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
1268 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, "%=");
1269 break;
1270 case ADD_ASSIGN:
1271 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
1272 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
1273
1274 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
1275 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, "+=");
1276 break;
1277 case SUB_ASSIGN:
1278 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
1279 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
1280
1281 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
1282 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, "-=");
1283 break;
1284 case LEFT_ASSIGN:
1285 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
1286 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
1287
1288 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
1289 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, "<<=");
1290 break;
1291 case RIGHT_ASSIGN:
1292 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
1293 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
1294
1295 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
1296 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, ">>=");
1297 break;
1298 case AND_ASSIGN:
1299 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
1300 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
1301
1302 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
1303 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, "&=");
1304 break;
1305 case XOR_ASSIGN:
1306 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
1307 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
1308
1309 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
1310 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, "^=");
1311 break;
1312 case OR_ASSIGN:
1313 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
1314 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
1315
1316 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
1317 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, "|=");
1318 break;
1319 case '&':
1320 case '*':
1321 case '+':
1322 case '-':
1323 case '~':
1324 case '!':
1325 case '/':
1326 case '%':
1327 case '<':
1328 case '>':
1329 case '|':
1330 case '^':
1331 case '=':
1332 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, char ch))__extension__ ({
1333 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
1334
1335 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
1336 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Putc])(f, (char)op);
1337 break;
1338 case DELETE:
1339 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
1340 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
1341
1342 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
1343 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, "delete ");
1344 break;
1345 }
1346 }
1347
1348 static void OutputSpecifier(struct Specifier * spec, struct __ecereNameSpace__ecere__com__Instance * f, unsigned int typeName);
1349
1350 static void OutputDeclarator(struct Declarator * decl, struct __ecereNameSpace__ecere__com__Instance * f);
1351
1352 void OutputTypeName(struct TypeName * type, struct __ecereNameSpace__ecere__com__Instance * f, unsigned int typeName)
1353 {
1354 if(type->qualifiers)
1355 {
1356 struct Specifier * spec;
1357
1358 for(spec = (*type->qualifiers).first; spec; spec = spec->next)
1359 {
1360 OutputSpecifier(spec, f, typeName);
1361 if(spec->next)
1362 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
1363 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
1364
1365 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
1366 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, " ");
1367 }
1368 }
1369 if(type->declarator)
1370 {
1371 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
1372 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
1373
1374 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
1375 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, " ");
1376 OutputDeclarator(type->declarator, f);
1377 }
1378 if(!type->qualifiers && !type->declarator)
1379 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
1380 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
1381
1382 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
1383 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, "...");
1384 }
1385
1386 static void OutputStatement(struct Statement * stmt, struct __ecereNameSpace__ecere__com__Instance * f);
1387
1388 extern unsigned int inCompiler;
1389
1390 extern unsigned int outputLineNumbers;
1391
1392 static void GetSourceName(char *  name, const char *  src);
1393
1394 extern char *  GetIncludeFileFromID(int id);
1395
1396 static void OutputInstance(struct Instantiation * inst, struct __ecereNameSpace__ecere__com__Instance * f);
1397
1398 extern int printf(char * , ...);
1399
1400 static void OutputInitializer(struct Initializer * initializer, struct __ecereNameSpace__ecere__com__Instance * f);
1401
1402 int __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(struct __ecereNameSpace__ecere__com__Instance * this, char *  format, ...);
1403
1404 void OutputExpression(struct Expression * exp, struct __ecereNameSpace__ecere__com__Instance * f)
1405 {
1406 switch(exp->type)
1407 {
1408 case 26:
1409 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
1410 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
1411
1412 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
1413 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, "class(");
1414 if(exp->_classExp.specifiers)
1415 {
1416 struct Specifier * spec;
1417
1418 for(spec = (*exp->_classExp.specifiers).first; spec; spec = spec->next)
1419 {
1420 OutputSpecifier(spec, f, 0x0);
1421 if(spec->next)
1422 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
1423 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
1424
1425 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
1426 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, " ");
1427 }
1428 if(exp->_classExp.decl)
1429 {
1430 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
1431 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
1432
1433 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
1434 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, " ");
1435 OutputDeclarator(exp->_classExp.decl, f);
1436 }
1437 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
1438 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
1439
1440 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
1441 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, ")");
1442 }
1443 break;
1444 case 25:
1445 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
1446 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
1447
1448 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
1449 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, "__extension__ (");
1450 OutputStatement(exp->compound, f);
1451 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
1452 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
1453
1454 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
1455 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, ")");
1456 if(inCompiler && outputLineNumbers && exp->loc.end.line)
1457 {
1458 char name[274] = "";
1459
1460 GetSourceName(name, exp->loc.end.included ? GetIncludeFileFromID(exp->loc.end.included) : (((void *)0)));
1461 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "\n#line %d \"%s\"\n", exp->loc.end.line, name);
1462 outputLine += 2;
1463 }
1464 break;
1465 case 13:
1466 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
1467 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
1468
1469 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
1470 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, "new ");
1471 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
1472 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
1473
1474 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
1475 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, " ");
1476 OutputTypeName(exp->_renew.typeName, f, 0x0);
1477 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
1478 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
1479
1480 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
1481 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, "[");
1482 OutputExpression(exp->_renew.size, f);
1483 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
1484 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
1485
1486 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
1487 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, "]");
1488 break;
1489 case 28:
1490 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
1491 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
1492
1493 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
1494 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, "new0 ");
1495 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
1496 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
1497
1498 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
1499 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, " ");
1500 OutputTypeName(exp->_renew.typeName, f, 0x0);
1501 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
1502 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
1503
1504 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
1505 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, "[");
1506 OutputExpression(exp->_renew.size, f);
1507 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
1508 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
1509
1510 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
1511 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, "]");
1512 break;
1513 case 14:
1514 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
1515 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
1516
1517 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
1518 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, "renew ");
1519 OutputExpression(exp->_renew.exp, f);
1520 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
1521 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
1522
1523 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
1524 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, " ");
1525 OutputTypeName(exp->_renew.typeName, f, 0x0);
1526 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
1527 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
1528
1529 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
1530 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, "[");
1531 OutputExpression(exp->_renew.size, f);
1532 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
1533 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
1534
1535 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
1536 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, "]");
1537 break;
1538 case 29:
1539 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
1540 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
1541
1542 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
1543 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, "renew0 ");
1544 OutputExpression(exp->_renew.exp, f);
1545 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
1546 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
1547
1548 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
1549 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, " ");
1550 OutputTypeName(exp->_renew.typeName, f, 0x0);
1551 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
1552 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
1553
1554 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
1555 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, "[");
1556 OutputExpression(exp->_renew.size, f);
1557 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
1558 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
1559
1560 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
1561 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, "]");
1562 break;
1563 case 0:
1564 if(exp->identifier)
1565 OutputIdentifier(exp->identifier, f);
1566 break;
1567 case 1:
1568 if(exp->instance)
1569 OutputInstance(exp->instance, f);
1570 break;
1571 case 2:
1572 if(exp->constant)
1573 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
1574 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
1575
1576 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
1577 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, exp->constant);
1578 else
1579 printf("");
1580 break;
1581 case 3:
1582 if(exp->string)
1583 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
1584 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
1585
1586 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
1587 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, exp->string);
1588 break;
1589 case 4:
1590 if(exp->op.exp1)
1591 {
1592 OutputExpression(exp->op.exp1, f);
1593 if(exp->op.exp2)
1594 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
1595 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
1596
1597 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
1598 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, " ");
1599 }
1600 OutputOperator(exp->op.op, f);
1601 if(exp->op.exp2)
1602 {
1603 if(exp->op.exp1 || (exp->op.exp2->type == 4 && !exp->op.exp2->op.exp1 && exp->op.exp2->op.op == exp->op.op))
1604 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
1605 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
1606
1607 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
1608 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, " ");
1609 OutputExpression(exp->op.exp2, f);
1610 }
1611 break;
1612 case 34:
1613 case 5:
1614 {
1615 struct Expression * expression;
1616
1617 if(exp->type == 34)
1618 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
1619 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
1620
1621 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
1622 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, "__extension__ (");
1623 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
1624 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
1625
1626 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
1627 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, "(");
1628 if(exp->list)
1629 {
1630 for(expression = (*exp->list).first; expression; expression = expression->next)
1631 {
1632 OutputExpression(expression, f);
1633 if(expression->next)
1634 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
1635 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
1636
1637 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
1638 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, ", ");
1639 }
1640 }
1641 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
1642 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
1643
1644 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
1645 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, ")");
1646 break;
1647 }
1648 case 6:
1649 {
1650 struct Expression * expression;
1651
1652 if(exp->index.exp)
1653 OutputExpression(exp->index.exp, f);
1654 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
1655 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
1656
1657 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
1658 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, "[");
1659 if(exp->index.index)
1660 for(expression = (*exp->index.index).first; expression; expression = expression->next)
1661 {
1662 OutputExpression(expression, f);
1663 if(expression->next)
1664 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
1665 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
1666
1667 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
1668 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, ", ");
1669 }
1670 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
1671 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
1672
1673 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
1674 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, "]");
1675 break;
1676 }
1677 case 7:
1678 {
1679 OutputExpression(exp->call.exp, f);
1680 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
1681 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
1682
1683 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
1684 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, "(");
1685 if(exp->call.arguments)
1686 {
1687 struct Expression * expression;
1688
1689 for(expression = (*exp->call.arguments).first; expression; expression = expression->next)
1690 {
1691 OutputExpression(expression, f);
1692 if(expression->next)
1693 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
1694 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
1695
1696 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
1697 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, ", ");
1698 }
1699 }
1700 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
1701 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
1702
1703 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
1704 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, ")");
1705 break;
1706 }
1707 case 8:
1708 if(exp->member.exp)
1709 OutputExpression(exp->member.exp, f);
1710 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
1711 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
1712
1713 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
1714 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, ".");
1715 if(exp->member.member)
1716 OutputIdentifier(exp->member.member, f);
1717 break;
1718 case 9:
1719 OutputExpression(exp->member.exp, f);
1720 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
1721 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
1722
1723 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
1724 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, "->");
1725 OutputIdentifier(exp->member.member, f);
1726 break;
1727 case 10:
1728 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
1729 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
1730
1731 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
1732 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, "sizeof(");
1733 OutputTypeName(exp->typeName, f, 0x0);
1734 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
1735 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
1736
1737 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
1738 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, ")");
1739 break;
1740 case 38:
1741 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
1742 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
1743
1744 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
1745 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, "__alignof__(");
1746 OutputTypeName(exp->typeName, f, 0x0);
1747 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
1748 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
1749
1750 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
1751 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, ")");
1752 break;
1753 case 35:
1754 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
1755 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
1756
1757 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
1758 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, "__extension__ (");
1759 if(exp->initializer.typeName)
1760 OutputTypeName(exp->initializer.typeName, f, 0x0);
1761 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
1762 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
1763
1764 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
1765 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, ")");
1766 if(exp->initializer.initializer)
1767 OutputInitializer(exp->initializer.initializer, f);
1768 break;
1769 case 11:
1770 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
1771 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
1772
1773 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
1774 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, "(");
1775 OutputTypeName(exp->cast.typeName, f, 0x0);
1776 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
1777 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
1778
1779 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
1780 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, ")");
1781 if(exp->cast.exp)
1782 OutputExpression(exp->cast.exp, f);
1783 break;
1784 case 12:
1785 OutputExpression(exp->cond.cond, f);
1786 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
1787 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
1788
1789 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
1790 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, " ? ");
1791 {
1792 struct Expression * expression;
1793
1794 for(expression = (*exp->cond.exp).first; expression; expression = expression->next)
1795 {
1796 OutputExpression(expression, f);
1797 if(expression->next)
1798 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
1799 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
1800
1801 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
1802 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, ", ");
1803 }
1804 }
1805 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
1806 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
1807
1808 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
1809 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, " : ");
1810 OutputExpression(exp->cond.elseExp, f);
1811 break;
1812 case 36:
1813 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
1814 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
1815
1816 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
1817 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, "__builtin_va_arg(");
1818 OutputExpression(exp->vaArg.exp, f);
1819 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
1820 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
1821
1822 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
1823 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, ", ");
1824 OutputTypeName(exp->vaArg.typeName, f, 0x0);
1825 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
1826 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
1827
1828 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
1829 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, ")");
1830 break;
1831 case 37:
1832 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
1833 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
1834
1835 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
1836 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, "[");
1837 if(exp->list)
1838 {
1839 struct Expression * expression;
1840
1841 for(expression = (*exp->list).first; expression; expression = expression->next)
1842 {
1843 OutputExpression(expression, f);
1844 if(expression->next)
1845 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
1846 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
1847
1848 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
1849 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, ", ");
1850 }
1851 }
1852 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
1853 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
1854
1855 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
1856 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, "]");
1857 break;
1858 }
1859 }
1860
1861 static void OutputAsmField(struct AsmField * field, struct __ecereNameSpace__ecere__com__Instance * f)
1862 {
1863 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
1864 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
1865
1866 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
1867 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, field->command);
1868 if(field->expression)
1869 {
1870 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
1871 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
1872
1873 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
1874 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, "(");
1875 OutputExpression(field->expression, f);
1876 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
1877 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
1878
1879 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
1880 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, ")");
1881 }
1882 }
1883
1884 extern char *  strchr(const char * , int);
1885
1886 extern char *  __ecereNameSpace__ecere__sys__StripLastDirectory(char *  string, char *  output);
1887
1888 extern char *  sourceFile;
1889
1890 extern char *  __ecereNameSpace__ecere__sys__PathCat(char *  string, char *  addedPath);
1891
1892 extern void __ecereNameSpace__ecere__sys__ChangeCh(char *  string, char ch1, char ch2);
1893
1894 static void GetSourceName(char * name, const char * src)
1895 {
1896 name[0] = (char)0;
1897 if(src)
1898 {
1899 if(!strchr(src, '/') && !strchr(src, '\\'))
1900 __ecereNameSpace__ecere__sys__StripLastDirectory(sourceFile, name);
1901 __ecereNameSpace__ecere__sys__PathCat(name, src);
1902 }
1903 else if(sourceFile)
1904 __ecereNameSpace__ecere__sys__PathCat(name, sourceFile);
1905 __ecereNameSpace__ecere__sys__ChangeCh(name, '\\', '/');
1906 }
1907
1908 extern char *  outputFile;
1909
1910 static void OutputDeclaration(struct Declaration * decl, struct __ecereNameSpace__ecere__com__Instance * f);
1911
1912 extern struct __ecereNameSpace__ecere__sys__OldList *  MkList(void);
1913
1914 extern struct Declarator * SpecDeclFromString(char *  string, struct __ecereNameSpace__ecere__sys__OldList *  specs, struct Declarator * baseDecl);
1915
1916 extern struct Declarator * MkDeclaratorIdentifier(struct Identifier * id);
1917
1918 extern struct Identifier * MkIdentifier(char *  string);
1919
1920 extern struct __ecereNameSpace__ecere__sys__OldList *  CopyList(struct __ecereNameSpace__ecere__sys__OldList *  source, void *  (*  CopyFunction)(void * ));
1921
1922 extern struct Specifier * CopySpecifier(struct Specifier * spec);
1923
1924 extern struct Declarator * PlugDeclarator(struct Declarator * decl, struct Declarator * baseDecl);
1925
1926 extern void ListAdd(struct __ecereNameSpace__ecere__sys__OldList * list, void *  item);
1927
1928 extern struct Specifier * MkSpecifierName(char *  name);
1929
1930 extern void PrintTypeNoConst(struct Type * type, char *  string, unsigned int printName, unsigned int fullName);
1931
1932 extern struct TypeName * MkTypeName(struct __ecereNameSpace__ecere__sys__OldList * qualifiers, struct Declarator * declarator);
1933
1934 extern void InstDeclPassTypeName(struct TypeName * type, unsigned int param);
1935
1936 extern void FreeTypeName(struct TypeName * typeName);
1937
1938 static void OutputStatement(struct Statement * stmt, struct __ecereNameSpace__ecere__com__Instance * f)
1939 {
1940 char name[274] = "";
1941 char origName[274] = "";
1942
1943 if(inCompiler)
1944 {
1945 GetSourceName(name, stmt->loc.start.included ? GetIncludeFileFromID(stmt->loc.start.included) : (((void *)0)));
1946 __ecereNameSpace__ecere__sys__PathCat(origName, outputFile);
1947 __ecereNameSpace__ecere__sys__ChangeCh(origName, '\\', '/');
1948 }
1949 if(inCompiler && outputLineNumbers && stmt->loc.start.line)
1950 {
1951 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "\n#line %d \"%s\"\n", stmt->loc.start.line, name);
1952 outputLine += 2;
1953 }
1954 switch(stmt->type)
1955 {
1956 case 14:
1957 OutputDeclaration(stmt->decl, f);
1958 break;
1959 case 0:
1960 OutputIdentifier(stmt->labeled.id, f);
1961 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
1962 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
1963
1964 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
1965 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, ":\n");
1966 outputLine++;
1967 if(stmt->labeled.stmt)
1968 {
1969 if(stmt->labeled.stmt->type == 14)
1970 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
1971 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
1972
1973 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
1974 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, "; ");
1975 OutputStatement(stmt->labeled.stmt, f);
1976 }
1977 break;
1978 case 1:
1979 if(stmt->caseStmt.exp)
1980 {
1981 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
1982 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
1983
1984 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
1985 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, "case ");
1986 OutputExpression(stmt->caseStmt.exp, f);
1987 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
1988 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
1989
1990 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
1991 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, ":\n");
1992 outputLine++;
1993 }
1994 else
1995 {
1996 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
1997 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
1998
1999 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
2000 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, "default:\n");
2001 outputLine++;
2002 }
2003 if(stmt->caseStmt.stmt)
2004 {
2005 if(stmt->caseStmt.stmt->type == 14)
2006 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
2007 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
2008
2009 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
2010 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, "; ");
2011 OutputStatement(stmt->caseStmt.stmt, f);
2012 }
2013 break;
2014 case 2:
2015 {
2016 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
2017 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
2018
2019 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
2020 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, "{\n");
2021 outputLine++;
2022 if(stmt->compound.declarations)
2023 {
2024 struct Declaration * decl;
2025
2026 for(decl = (*stmt->compound.declarations).first; decl; decl = decl->next)
2027 {
2028 OutputDeclaration(decl, f);
2029 }
2030 }
2031 if(stmt->compound.statements)
2032 {
2033 struct Statement * statement;
2034
2035 if(stmt->compound.declarations)
2036 {
2037 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
2038 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
2039
2040 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
2041 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, "\n");
2042 outputLine++;
2043 }
2044 for(statement = (*stmt->compound.statements).first; statement; statement = statement->next)
2045 {
2046 OutputStatement(statement, f);
2047 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
2048 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
2049
2050 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
2051 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, "\n");
2052 outputLine++;
2053 }
2054 }
2055 if(inCompiler && outputLineNumbers && stmt->loc.end.line)
2056 {
2057 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "\n#line %d \"%s\"\n", stmt->loc.end.line, name);
2058 outputLine += 2;
2059 }
2060 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
2061 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
2062
2063 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
2064 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, "}");
2065 break;
2066 }
2067 case 3:
2068 {
2069 if(stmt->expressions)
2070 {
2071 struct Expression * exp;
2072
2073 for(exp = (*stmt->expressions).first; exp; exp = exp->next)
2074 {
2075 OutputExpression(exp, f);
2076 if(exp->next)
2077 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
2078 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
2079
2080 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
2081 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, ", ");
2082 }
2083 }
2084 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
2085 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
2086
2087 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
2088 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, ";");
2089 break;
2090 }
2091 case 4:
2092 {
2093 struct Expression * exp;
2094
2095 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
2096 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
2097
2098 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
2099 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, "if(");
2100 for(exp = (*stmt->ifStmt.exp).first; exp; exp = exp->next)
2101 {
2102 OutputExpression(exp, f);
2103 if(exp->next)
2104 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
2105 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
2106
2107 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
2108 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, ", ");
2109 }
2110 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
2111 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
2112
2113 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
2114 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, ")\n");
2115 outputLine++;
2116 if(stmt->ifStmt.stmt)
2117 OutputStatement(stmt->ifStmt.stmt, f);
2118 if(stmt->ifStmt.elseStmt)
2119 {
2120 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
2121 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
2122
2123 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
2124 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, "\n");
2125 outputLine++;
2126 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
2127 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
2128
2129 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
2130 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, "else");
2131 if(stmt->ifStmt.elseStmt->type != 4)
2132 {
2133 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
2134 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
2135
2136 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
2137 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, "\n");
2138 outputLine++;
2139 }
2140 else
2141 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
2142 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
2143
2144 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
2145 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, " ");
2146 OutputStatement(stmt->ifStmt.elseStmt, f);
2147 }
2148 break;
2149 }
2150 case 5:
2151 {
2152 struct Expression * exp;
2153
2154 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
2155 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
2156
2157 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
2158 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, "switch(");
2159 for(exp = (*stmt->switchStmt.exp).first; exp; exp = exp->next)
2160 {
2161 OutputExpression(exp, f);
2162 if(exp->next)
2163 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
2164 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
2165
2166 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
2167 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, ", ");
2168 }
2169 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
2170 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
2171
2172 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
2173 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, ")\n");
2174 outputLine++;
2175 OutputStatement(stmt->switchStmt.stmt, f);
2176 break;
2177 }
2178 case 6:
2179 {
2180 struct Expression * exp;
2181
2182 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
2183 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
2184
2185 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
2186 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, "while(");
2187 for(exp = (*stmt->switchStmt.exp).first; exp; exp = exp->next)
2188 {
2189 OutputExpression(exp, f);
2190 if(exp->next)
2191 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
2192 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
2193
2194 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
2195 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, ", ");
2196 }
2197 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
2198 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
2199
2200 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
2201 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, ")\n");
2202 outputLine++;
2203 OutputStatement(stmt->whileStmt.stmt, f);
2204 break;
2205 }
2206 case 7:
2207 {
2208 struct Expression * exp;
2209
2210 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
2211 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
2212
2213 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
2214 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, "do\n");
2215 outputLine++;
2216 OutputStatement(stmt->whileStmt.stmt, f);
2217 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
2218 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
2219
2220 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
2221 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, "while(");
2222 for(exp = (*stmt->switchStmt.exp).first; exp; exp = exp->next)
2223 {
2224 OutputExpression(exp, f);
2225 if(exp->next)
2226 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
2227 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
2228
2229 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
2230 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, ", ");
2231 }
2232 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
2233 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
2234
2235 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
2236 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, ");");
2237 break;
2238 }
2239 case 8:
2240 {
2241 struct Expression * exp;
2242
2243 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
2244 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
2245
2246 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
2247 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, "for(");
2248 OutputStatement(stmt->forStmt.init, f);
2249 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
2250 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
2251
2252 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
2253 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, " ");
2254 OutputStatement(stmt->forStmt.check, f);
2255 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
2256 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
2257
2258 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
2259 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, " ");
2260 if(stmt->forStmt.increment)
2261 {
2262 if(inCompiler && outputLineNumbers && stmt->loc.end.line)
2263 {
2264 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "\n#line %d \"%s\"\n", stmt->loc.end.line, name);
2265 outputLine += 2;
2266 }
2267 for(exp = (*stmt->forStmt.increment).first; exp; exp = exp->next)
2268 {
2269 OutputExpression(exp, f);
2270 if(exp->next)
2271 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
2272 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
2273
2274 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
2275 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, ", ");
2276 }
2277 }
2278 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
2279 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
2280
2281 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
2282 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, ")\n");
2283 outputLine++;
2284 OutputStatement(stmt->forStmt.stmt, f);
2285 break;
2286 }
2287 case 9:
2288 {
2289 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
2290 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
2291
2292 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
2293 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, "goto ");
2294 OutputIdentifier(stmt->gotoStmt.id, f);
2295 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
2296 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
2297
2298 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
2299 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, ";");
2300 break;
2301 }
2302 case 10:
2303 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
2304 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
2305
2306 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
2307 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, "continue;");
2308 break;
2309 case 11:
2310 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
2311 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
2312
2313 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
2314 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, "break;");
2315 break;
2316 case 12:
2317 {
2318 struct Expression * exp;
2319
2320 if(inCompiler && memoryGuard)
2321 {
2322 struct Expression * exp = stmt->expressions ? (*stmt->expressions).last : (((void *)0));
2323
2324 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "{ ");
2325 if(exp && exp->expType)
2326 {
2327 char string[1024] = "";
2328 struct __ecereNameSpace__ecere__sys__OldList * specs = MkList();
2329 struct Declarator * decl;
2330 struct TypeName * typeName;
2331
2332 if(exp->expType->kind == 20)
2333 {
2334 if(exp->expType->templateParameter->dataTypeString)
2335 decl = SpecDeclFromString(exp->expType->templateParameter->dataTypeString, specs, MkDeclaratorIdentifier(MkIdentifier("__ecereReturnVal")));
2336 else if(exp->expType->templateParameter->dataType)
2337 {
2338 (__ecereNameSpace__ecere__com__eSystem_Delete(specs), specs = 0);
2339 specs = CopyList(exp->expType->templateParameter->dataType->specifiers, CopySpecifier);
2340 decl = PlugDeclarator(exp->expType->templateParameter->dataType->decl, MkDeclaratorIdentifier(MkIdentifier("__ecereReturnVal")));
2341 }
2342 else
2343 {
2344 ListAdd(specs, MkSpecifierName("uint64"));
2345 decl = MkDeclaratorIdentifier(MkIdentifier("__ecereReturnVal"));
2346 }
2347 }
2348 else
2349 {
2350 PrintTypeNoConst(exp->expType, string, exp->expType->kind == 18 ? 0x1 : 0x0, 0x1);
2351 decl = SpecDeclFromString(string, specs, MkDeclaratorIdentifier(MkIdentifier("__ecereReturnVal")));
2352 }
2353 typeName = MkTypeName(specs, decl);
2354 InstDeclPassTypeName(typeName, 0x0);
2355 OutputTypeName(typeName, f, 0x0);
2356 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, ";");
2357 FreeTypeName(typeName);
2358 }
2359 }
2360 if(!memoryGuard)
2361 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
2362 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
2363
2364 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
2365 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, "return ");
2366 else
2367 {
2368 struct Expression * exp = stmt->expressions ? (*stmt->expressions).last : (((void *)0));
2369
2370 if(exp && exp->expType)
2371 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "__ecereReturnVal = ");
2372 }
2373 if(stmt->expressions)
2374 {
2375 for(exp = (*stmt->expressions).first; exp; exp = exp->next)
2376 {
2377 OutputExpression(exp, f);
2378 if(exp->next)
2379 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
2380 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
2381
2382 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
2383 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, ", ");
2384 }
2385 }
2386 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
2387 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
2388
2389 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
2390 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, ";");
2391 if(inCompiler && memoryGuard)
2392 {
2393 struct Expression * exp = stmt->expressions ? (struct Expression *)(*stmt->expressions).last : (((void *)0));
2394
2395 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, " __ecereNameSpace__ecere__com__MemoryGuard_PopLoc();");
2396 if(exp && exp->expType)
2397 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "return __ecereReturnVal;");
2398 else
2399 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "return;");
2400 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "}");
2401 }
2402 break;
2403 }
2404 case 13:
2405 {
2406 struct AsmField * field;
2407
2408 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
2409 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
2410
2411 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
2412 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, "__asm__ ");
2413 if(stmt->asmStmt.spec)
2414 OutputSpecifier(stmt->asmStmt.spec, f, 0x0);
2415 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
2416 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
2417
2418 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
2419 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, "(");
2420 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
2421 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
2422
2423 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
2424 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, stmt->asmStmt.statements);
2425 if(stmt->asmStmt.inputFields || stmt->asmStmt.outputFields || stmt->asmStmt.clobberedFields)
2426 {
2427 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
2428 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
2429
2430 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
2431 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, ":");
2432 if(stmt->asmStmt.inputFields)
2433 {
2434 for(field = (*stmt->asmStmt.inputFields).first; field; field = field->next)
2435 {
2436 if(field->prev)
2437 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
2438 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
2439
2440 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
2441 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, ",");
2442 OutputAsmField(field, f);
2443 }
2444 }
2445 }
2446 if(stmt->asmStmt.outputFields || stmt->asmStmt.clobberedFields)
2447 {
2448 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
2449 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
2450
2451 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
2452 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, ":");
2453 if(stmt->asmStmt.outputFields)
2454 {
2455 for(field = (*stmt->asmStmt.outputFields).first; field; field = field->next)
2456 {
2457 if(field->prev)
2458 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
2459 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
2460
2461 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
2462 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, ",");
2463 OutputAsmField(field, f);
2464 }
2465 }
2466 }
2467 if(stmt->asmStmt.clobberedFields)
2468 {
2469 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
2470 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
2471
2472 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
2473 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, ":");
2474 for(field = (*stmt->asmStmt.clobberedFields).first; field; field = field->next)
2475 {
2476 if(field->prev)
2477 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
2478 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
2479
2480 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
2481 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, ",");
2482 OutputAsmField(field, f);
2483 }
2484 }
2485 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
2486 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
2487
2488 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
2489 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, ");\n");
2490 outputLine++;
2491 break;
2492 }
2493 }
2494 if(inCompiler && outputLineNumbers && stmt->loc.start.line)
2495 {
2496 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "\n#line %d \"%s\"\n", outputLine + 2, origName);
2497 outputLine += 2;
2498 }
2499 }
2500
2501 static void OutputPointer(struct Pointer * ptr, struct __ecereNameSpace__ecere__com__Instance * f)
2502 {
2503 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
2504 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
2505
2506 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
2507 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, "*");
2508 if(ptr->qualifiers)
2509 {
2510 struct Specifier * spec;
2511
2512 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
2513 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
2514
2515 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
2516 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, " ");
2517 for(spec = (*ptr->qualifiers).first; spec; spec = spec->next)
2518 {
2519 OutputSpecifier(spec, f, 0x0);
2520 if(spec->next)
2521 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
2522 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
2523
2524 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
2525 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, " ");
2526 }
2527 }
2528 if(ptr->pointer)
2529 {
2530 OutputPointer(ptr->pointer, f);
2531 }
2532 }
2533
2534 static void OutputAttrib(struct Attrib * attr, struct __ecereNameSpace__ecere__com__Instance * f);
2535
2536 static void OutputExtDecl(struct ExtDecl * extDecl, struct __ecereNameSpace__ecere__com__Instance * f);
2537
2538 extern void ProcessExpressionType(struct Expression * exp);
2539
2540 extern void ComputeExpression(struct Expression * exp);
2541
2542 static void OutputDeclarator(struct Declarator * decl, struct __ecereNameSpace__ecere__com__Instance * f)
2543 {
2544 switch(decl->type)
2545 {
2546 case 0:
2547 if(decl->declarator)
2548 {
2549 OutputDeclarator(decl->declarator, f);
2550 }
2551 if(decl->structDecl.exp)
2552 {
2553 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
2554 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
2555
2556 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
2557 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, " : ");
2558 OutputExpression(decl->structDecl.exp, f);
2559 }
2560 if(decl->structDecl.posExp)
2561 {
2562 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
2563 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
2564
2565 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
2566 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, " : ");
2567 OutputExpression(decl->structDecl.posExp, f);
2568 }
2569 if(decl->structDecl.attrib)
2570 {
2571 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
2572 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
2573
2574 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
2575 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, " ");
2576 OutputAttrib(decl->structDecl.attrib, f);
2577 }
2578 break;
2579 case 1:
2580 OutputIdentifier(decl->identifier, f);
2581 break;
2582 case 2:
2583 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
2584 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
2585
2586 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
2587 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, "(");
2588 OutputDeclarator(decl->declarator, f);
2589 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
2590 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
2591
2592 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
2593 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, ")");
2594 break;
2595 case 6:
2596 if(decl->extended.extended)
2597 OutputExtDecl(decl->extended.extended, f);
2598 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
2599 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
2600
2601 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
2602 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, " ");
2603 OutputDeclarator(decl->declarator, f);
2604 break;
2605 case 7:
2606 OutputDeclarator(decl->declarator, f);
2607 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
2608 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
2609
2610 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
2611 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, " ");
2612 if(decl->extended.extended)
2613 OutputExtDecl(decl->extended.extended, f);
2614 break;
2615 case 3:
2616 if(decl->declarator)
2617 {
2618 OutputDeclarator(decl->declarator, f);
2619 }
2620 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
2621 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
2622
2623 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
2624 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, "[");
2625 if(decl->array.exp)
2626 {
2627 ProcessExpressionType(decl->array.exp);
2628 ComputeExpression(decl->array.exp);
2629 OutputExpression(decl->array.exp, f);
2630 }
2631 else if(decl->array.enumClass)
2632 {
2633 struct Symbol * _class = decl->array.enumClass->symbol;
2634
2635 if(_class && _class->registered)
2636 {
2637 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "%d", (int)__ecereNameSpace__ecere__com__eClass_GetProperty(_class->registered, "enumSize"));
2638 }
2639 }
2640 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
2641 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
2642
2643 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
2644 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, "]");
2645 break;
2646 case 4:
2647 {
2648 struct TypeName * param;
2649
2650 if(decl->declarator)
2651 OutputDeclarator(decl->declarator, f);
2652 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
2653 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
2654
2655 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
2656 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, "(");
2657 if(decl->function.parameters && (*decl->function.parameters).first)
2658 {
2659 for(param = (*decl->function.parameters).first; param; param = param->next)
2660 {
2661 OutputTypeName(param, f, 0x0);
2662 if(param->next)
2663 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
2664 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
2665
2666 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
2667 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, ", ");
2668 }
2669 }
2670 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
2671 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
2672
2673 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
2674 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, ")");
2675 break;
2676 }
2677 case 5:
2678 if(decl->pointer.pointer)
2679 OutputPointer(decl->pointer.pointer, f);
2680 if(decl->declarator)
2681 {
2682 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
2683 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
2684
2685 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
2686 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, " ");
2687 OutputDeclarator(decl->declarator, f);
2688 }
2689 break;
2690 }
2691 }
2692
2693 static void OutputEnumerator(struct Enumerator * enumerator, struct __ecereNameSpace__ecere__com__Instance * f)
2694 {
2695 OutputIdentifier(enumerator->id, f);
2696 if(enumerator->exp)
2697 {
2698 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
2699 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
2700
2701 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
2702 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, " = ");
2703 OutputExpression(enumerator->exp, f);
2704 }
2705 }
2706
2707 static void OutputAttribute(struct Attribute * attr, struct __ecereNameSpace__ecere__com__Instance * f)
2708 {
2709 if(attr->attr)
2710 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
2711 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
2712
2713 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
2714 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, attr->attr);
2715 if(attr->exp)
2716 {
2717 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
2718 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
2719
2720 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
2721 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, " ");
2722 OutputExpression(attr->exp, f);
2723 }
2724 }
2725
2726 static void OutputAttrib(struct Attrib * attr, struct __ecereNameSpace__ecere__com__Instance * f)
2727 {
2728 switch(attr->type)
2729 {
2730 case ATTRIB:
2731 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
2732 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
2733
2734 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
2735 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, "__attribute__((");
2736 break;
2737 case __ATTRIB:
2738 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
2739 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
2740
2741 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
2742 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, "__attribute((");
2743 break;
2744 case ATTRIB_DEP:
2745 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
2746 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
2747
2748 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
2749 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, "__attribute_deprecated__((");
2750 break;
2751 }
2752 if(attr->attribs)
2753 {
2754 struct Attribute * attrib;
2755
2756 for(attrib = (*attr->attribs).first; attrib; attrib = attrib->next)
2757 {
2758 if(attrib->prev)
2759 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
2760 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
2761
2762 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
2763 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, " ");
2764 OutputAttribute(attrib, f);
2765 }
2766 }
2767 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
2768 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
2769
2770 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
2771 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, "))");
2772 }
2773
2774 static void OutputExtDecl(struct ExtDecl * extDecl, struct __ecereNameSpace__ecere__com__Instance * f)
2775 {
2776 if(extDecl->type == 0 && extDecl->s)
2777 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
2778 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
2779
2780 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
2781 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, extDecl->s);
2782 else if(extDecl->type == 1)
2783 OutputAttrib(extDecl->attr, f);
2784 }
2785
2786 extern struct Symbol * FindClass(char *  name);
2787
2788 static void OutputClassDef(struct ClassDef * def, struct __ecereNameSpace__ecere__com__Instance * f);
2789
2790 static void OutputSpecifier(struct Specifier * spec, struct __ecereNameSpace__ecere__com__Instance * f, unsigned int typeName)
2791 {
2792 switch(spec->type)
2793 {
2794 case 0:
2795 switch(spec->specifier)
2796 {
2797 case TYPEDEF:
2798 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
2799 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
2800
2801 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
2802 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, "typedef");
2803 break;
2804 case EXTERN:
2805 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
2806 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
2807
2808 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
2809 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, "extern");
2810 break;
2811 case STATIC:
2812 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
2813 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
2814
2815 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
2816 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, "static");
2817 break;
2818 case AUTO:
2819 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
2820 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
2821
2822 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
2823 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, "auto");
2824 break;
2825 case REGISTER:
2826 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
2827 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
2828
2829 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
2830 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, "register");
2831 break;
2832 case CONST:
2833 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
2834 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
2835
2836 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
2837 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, "const");
2838 break;
2839 case VOLATILE:
2840 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
2841 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
2842
2843 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
2844 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, "volatile");
2845 break;
2846 case VOID:
2847 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
2848 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
2849
2850 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
2851 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, "void");
2852 break;
2853 case CHAR:
2854 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
2855 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
2856
2857 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
2858 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, "char");
2859 break;
2860 case _BOOL:
2861 case BOOL:
2862 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
2863 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
2864
2865 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
2866 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, "_Bool");
2867 break;
2868 case _COMPLEX:
2869 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
2870 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
2871
2872 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
2873 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, "_Complex");
2874 break;
2875 case _IMAGINARY:
2876 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
2877 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
2878
2879 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
2880 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, "_Imaginary");
2881 break;
2882 case RESTRICT:
2883 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
2884 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
2885
2886 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
2887 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, "restrict");
2888 break;
2889 case SHORT:
2890 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
2891 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
2892
2893 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
2894 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, "short");
2895 break;
2896 case INT:
2897 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
2898 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
2899
2900 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
2901 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, "int");
2902 break;
2903 case UINT:
2904 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
2905 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
2906
2907 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
2908 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, typeName ? "uint" : "unsigned int");
2909 break;
2910 case INT64:
2911 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
2912 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
2913
2914 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
2915 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, typeName ? "int64" : "long long");
2916 break;
2917 case VALIST:
2918 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
2919 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
2920
2921 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
2922 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, "__builtin_va_list");
2923 break;
2924 case LONG:
2925 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
2926 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
2927
2928 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
2929 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, "long");
2930 break;
2931 case FLOAT:
2932 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
2933 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
2934
2935 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
2936 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, "float");
2937 break;
2938 case DOUBLE:
2939 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
2940 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
2941
2942 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
2943 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, "double");
2944 break;
2945 case SIGNED:
2946 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
2947 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
2948
2949 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
2950 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, "signed");
2951 break;
2952 case UNSIGNED:
2953 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
2954 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
2955
2956 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
2957 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, "unsigned");
2958 break;
2959 case TYPED_OBJECT:
2960 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
2961 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
2962
2963 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
2964 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, "typed_object");
2965 break;
2966 case ANY_OBJECT:
2967 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
2968 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
2969
2970 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
2971 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, "any_object");
2972 break;
2973 case CLASS:
2974 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
2975 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
2976
2977 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
2978 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, "class");
2979 break;
2980 case THISCLASS:
2981 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
2982 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
2983
2984 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
2985 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, "thisclass");
2986 break;
2987 }
2988 break;
2989 case 5:
2990 if(spec->extDecl)
2991 OutputExtDecl(spec->extDecl, f);
2992 break;
2993 case 1:
2994 if(spec->name && !strcmp(spec->name, "class"))
2995 {
2996 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
2997 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
2998
2999 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
3000 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, "typed_object");
3001 }
3002 else
3003 {
3004 struct Symbol * symbol = spec->symbol;
3005
3006 if(!symbol && spec->name)
3007 symbol = FindClass(spec->name);
3008 if(symbol)
3009 {
3010 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
3011 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
3012
3013 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
3014 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, symbol->string ? symbol->string : "(null)");
3015 }
3016 else if(spec->name)
3017 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
3018 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
3019
3020 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
3021 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, spec->name);
3022 }
3023 break;
3024 case 2:
3025 {
3026 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
3027 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
3028
3029 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
3030 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, "enum");
3031 if(spec->id)
3032 {
3033 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
3034 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
3035
3036 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
3037 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, " ");
3038 OutputIdentifier(spec->id, f);
3039 }
3040 if(spec->list)
3041 {
3042 struct Enumerator * enumerator;
3043
3044 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
3045 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
3046
3047 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
3048 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, "\n{\n");
3049 outputLine += 2;
3050 for(enumerator = (*spec->list).first; enumerator; enumerator = enumerator->next)
3051 {
3052 OutputEnumerator(enumerator, f);
3053 if(enumerator->next)
3054 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
3055 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
3056
3057 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
3058 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, ", ");
3059 }
3060 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
3061 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
3062
3063 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
3064 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, "\n}");
3065 outputLine++;
3066 }
3067 break;
3068 }
3069 case 3:
3070 case 4:
3071 {
3072 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
3073 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
3074
3075 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
3076 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, (spec->type == 3) ? "struct" : "union");
3077 if(spec->extDeclStruct)
3078 {
3079 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
3080 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
3081
3082 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
3083 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, " ");
3084 OutputExtDecl(spec->extDeclStruct, f);
3085 }
3086 if(spec->id)
3087 {
3088 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
3089 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
3090
3091 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
3092 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, " ");
3093 OutputIdentifier(spec->id, f);
3094 }
3095 if(spec->definitions)
3096 {
3097 struct ClassDef * def;
3098
3099 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
3100 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
3101
3102 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
3103 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, "\n{\n");
3104 outputLine += 2;
3105 for(def = (*spec->definitions).first; def; def = def->next)
3106 {
3107 OutputClassDef(def, f);
3108 }
3109 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
3110 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
3111
3112 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
3113 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, "} __attribute__ ((gcc_struct))");
3114 }
3115 break;
3116 }
3117 case 6:
3118 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
3119 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
3120
3121 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
3122 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, "__typeof(");
3123 OutputExpression(spec->expression, f);
3124 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
3125 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
3126
3127 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
3128 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, ")");
3129 break;
3130 case 7:
3131 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
3132 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
3133
3134 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
3135 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, "subclass(");
3136 OutputSpecifier(spec->_class, f, 0x0);
3137 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
3138 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
3139
3140 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
3141 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, ")");
3142 break;
3143 case 8:
3144 OutputIdentifier(spec->templateParameter->identifier, f);
3145 break;
3146 }
3147 }
3148
3149 static void OutputInitializer(struct Initializer * initializer, struct __ecereNameSpace__ecere__com__Instance * f)
3150 {
3151 char name[274] = "";
3152 char origName[274] = "";
3153
3154 if(inCompiler)
3155 {
3156 GetSourceName(name, initializer->loc.start.included ? GetIncludeFileFromID(initializer->loc.start.included) : (((void *)0)));
3157 __ecereNameSpace__ecere__sys__PathCat(origName, outputFile);
3158 __ecereNameSpace__ecere__sys__ChangeCh(origName, '\\', '/');
3159 }
3160 switch(initializer->type)
3161 {
3162 case 1:
3163 {
3164 struct Initializer * init;
3165
3166 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
3167 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
3168
3169 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
3170 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, "\n{\n");
3171 outputLine += 2;
3172 if(inCompiler && outputLineNumbers && initializer->loc.start.line)
3173 {
3174 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "\n#line %d \"%s\"\n", initializer->loc.start.line, name);
3175 outputLine += 2;
3176 }
3177 for(init = (*initializer->list).first; init; init = init->next)
3178 {
3179 OutputInitializer(init, f);
3180 if(init->next)
3181 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
3182 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
3183
3184 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
3185 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, ", ");
3186 }
3187 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
3188 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
3189
3190 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
3191 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, "\n}");
3192 if(inCompiler && outputLineNumbers && initializer->loc.start.line)
3193 {
3194 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "\n#line %d \"%s\"\n", initializer->loc.start.line, name);
3195 outputLine += 2;
3196 }
3197 outputLine++;
3198 break;
3199 }
3200 case 0:
3201 if(initializer->exp)
3202 OutputExpression(initializer->exp, f);
3203 break;
3204 }
3205 }
3206
3207 static void OutputInitDeclarator(struct InitDeclarator * decl, struct __ecereNameSpace__ecere__com__Instance * f)
3208 {
3209 OutputDeclarator(decl->declarator, f);
3210 if(decl->initializer)
3211 {
3212 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
3213 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
3214
3215 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
3216 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, " = ");
3217 OutputInitializer(decl->initializer, f);
3218 }
3219 }
3220
3221 static void OutputDeclaration(struct Declaration * decl, struct __ecereNameSpace__ecere__com__Instance * f)
3222 {
3223 struct Specifier * spec;
3224 char origName[274] = "";
3225
3226 switch(decl->type)
3227 {
3228 case 1:
3229 {
3230 struct InitDeclarator * d;
3231
3232 if(inCompiler)
3233 {
3234 __ecereNameSpace__ecere__sys__PathCat(origName, outputFile);
3235 __ecereNameSpace__ecere__sys__ChangeCh(origName, '\\', '/');
3236 }
3237 if(decl->declarators && (*decl->declarators).first)
3238 {
3239 for(d = (*decl->declarators).first; d; d = d->next)
3240 if(d->initializer)
3241 {
3242 char name[274] = "";
3243
3244 GetSourceName(name, decl->loc.start.included ? GetIncludeFileFromID(decl->loc.start.included) : (((void *)0)));
3245 if(inCompiler && outputLineNumbers && decl->loc.start.line)
3246 {
3247 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "\n#line %d \"%s\"\n", decl->loc.start.line, name);
3248 outputLine += 2;
3249 }
3250 break;
3251 }
3252 }
3253 if(decl->specifiers)
3254 {
3255 unsigned int inTypeDef = 0x0;
3256
3257 for(spec = (*decl->specifiers).first; spec; spec = spec->next)
3258 {
3259 if(spec->type == 0 && spec->specifier == TYPEDEF)
3260 inTypeDef = 0x1;
3261 OutputSpecifier(spec, f, inTypeDef && !spec->next);
3262 if(spec->next)
3263 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
3264 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
3265
3266 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
3267 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, " ");
3268 }
3269 }
3270 if(decl->declarators && (*decl->declarators).first)
3271 {
3272 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
3273 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
3274
3275 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
3276 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, " ");
3277 for(d = (*decl->declarators).first; d; d = d->next)
3278 {
3279 OutputInitDeclarator(d, f);
3280 if(d->next)
3281 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
3282 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
3283
3284 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
3285 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, ", ");
3286 }
3287 }
3288 break;
3289 }
3290 case 0:
3291 {
3292 if(decl->specifiers)
3293 {
3294 for(spec = (*decl->specifiers).first; spec; spec = spec->next)
3295 {
3296 OutputSpecifier(spec, f, 0x0);
3297 if(spec->next)
3298 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
3299 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
3300
3301 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
3302 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, " ");
3303 }
3304 }
3305 if(decl->declarators)
3306 {
3307 struct Declarator * d;
3308
3309 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
3310 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
3311
3312 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
3313 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, " ");
3314 for(d = (*decl->declarators).first; d; d = d->next)
3315 {
3316 OutputDeclarator(d, f);
3317 if(d->next)
3318 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
3319 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
3320
3321 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
3322 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, ", ");
3323 }
3324 }
3325 if(decl->extStorage)
3326 {
3327 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
3328 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
3329
3330 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
3331 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, " ");
3332 OutputSpecifier(decl->extStorage, f, 0x0);
3333 }
3334 break;
3335 }
3336 case 2:
3337 if(decl->inst)
3338 {
3339 OutputInstance(decl->inst, f);
3340 }
3341 break;
3342 case 3:
3343 return ;
3344 }
3345 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
3346 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
3347
3348 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
3349 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, ";\n");
3350 outputLine++;
3351 if(inCompiler && outputLineNumbers && decl->loc.start.line && decl->type == 1)
3352 {
3353 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "\n#line %d \"%s\"\n", outputLine + 2, origName);
3354 outputLine += 2;
3355 }
3356 }
3357
3358 static struct FunctionDefinition * curFunction;
3359
3360 extern struct Identifier * GetDeclId(struct Declarator * decl);
3361
3362 static void OutputFunction(struct FunctionDefinition * func, struct __ecereNameSpace__ecere__com__Instance * f)
3363 {
3364 struct FunctionDefinition * oldFunc = curFunction;
3365
3366 curFunction = func;
3367 if(func->specifiers)
3368 {
3369 struct Specifier * spec;
3370
3371 for(spec = (*func->specifiers).first; spec; spec = spec->next)
3372 {
3373 OutputSpecifier(spec, f, 0x0);
3374 if(spec->next)
3375 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
3376 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
3377
3378 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
3379 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, " ");
3380 }
3381 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
3382 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
3383
3384 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
3385 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, " ");
3386 }
3387 if(func->declarator)
3388 OutputDeclarator(func->declarator, f);
3389 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
3390 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
3391
3392 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
3393 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, "\n");
3394 outputLine++;
3395 if(func->declarations)
3396 {
3397 struct Declaration * decl;
3398
3399 for(decl = (*func->declarations).first; decl; decl = decl->next)
3400 {
3401 OutputDeclaration(decl, f);
3402 }
3403 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
3404 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
3405
3406 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
3407 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, "\n");
3408 outputLine++;
3409 }
3410 if(func->body)
3411 {
3412 if(inCompiler && memoryGuard)
3413 {
3414 char name[1024] = "";
3415 struct Identifier * id = GetDeclId(func->declarator);
3416
3417 GetSourceName(name, func->loc.start.included ? GetIncludeFileFromID(func->loc.start.included) : (((void *)0)));
3418 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "{\n");
3419 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "   __ecereNameSpace__ecere__com__MemoryGuard_PushLoc(\"%s:%s\");\n", name, id->string);
3420 outputLine += 2;
3421 }
3422 OutputStatement(func->body, f);
3423 if(inCompiler && memoryGuard)
3424 {
3425 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "   __ecereNameSpace__ecere__com__MemoryGuard_PopLoc();\n");
3426 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "}\n");
3427 outputLine += 2;
3428 }
3429 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
3430 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
3431
3432 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
3433 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, "\n");
3434 outputLine++;
3435 }
3436 curFunction = oldFunc;
3437 }
3438
3439 static void OutputMemberInit(struct MemberInit * init, struct __ecereNameSpace__ecere__com__Instance * f)
3440 {
3441 if(init->identifiers)
3442 {
3443 if((*init->identifiers).count > 1)
3444 {
3445 struct Identifier * id;
3446
3447 for(id = (*init->identifiers).first; id; id = id->next)
3448 {
3449 OutputIdentifier(id, f);
3450 if(id->next)
3451 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
3452 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
3453
3454 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
3455 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, ".");
3456 }
3457 }
3458 else if((*init->identifiers).first)
3459 OutputIdentifier((*init->identifiers).first, f);
3460 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
3461 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
3462
3463 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
3464 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, " = ");
3465 }
3466 if(init->initializer)
3467 OutputInitializer(init->initializer, f);
3468 }
3469
3470 static void OutputClassFunction(struct ClassFunction * func, struct __ecereNameSpace__ecere__com__Instance * f);
3471
3472 static void OutputMembersInit(struct MembersInit * init, struct __ecereNameSpace__ecere__com__Instance * f)
3473 {
3474 switch(init->type)
3475 {
3476 case 0:
3477 {
3478 struct MemberInit * member;
3479
3480 if(init->dataMembers)
3481 {
3482 for(member = (*init->dataMembers).first; member; member = member->next)
3483 {
3484 OutputMemberInit(member, f);
3485 if(member->next)
3486 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
3487 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
3488
3489 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
3490 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, ", ");
3491 }
3492 }
3493 break;
3494 }
3495 case 1:
3496 OutputClassFunction(init->function, f);
3497 break;
3498 }
3499 }
3500
3501 static void OutputInstance(struct Instantiation * inst, struct __ecereNameSpace__ecere__com__Instance * f)
3502 {
3503 if(inst->_class)
3504 OutputSpecifier(inst->_class, f, 0x0);
3505 if(inst->exp)
3506 {
3507 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
3508 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
3509
3510 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
3511 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, " ");
3512 OutputExpression(inst->exp, f);
3513 }
3514 if(inst->members && (*inst->members).count > 1)
3515 {
3516 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
3517 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
3518
3519 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
3520 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, "\n{\n");
3521 outputLine += 2;
3522 }
3523 else if(inst->members)
3524 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
3525 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
3526
3527 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
3528 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, " { ");
3529 else
3530 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
3531 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
3532
3533 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
3534 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, "{");
3535 if(inst->members)
3536 {
3537 struct MembersInit * init;
3538
3539 for(init = (*inst->members).first; init; init = init->next)
3540 {
3541 OutputMembersInit(init, f);
3542 if(init->type == 0 && init->next)
3543 {
3544 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
3545 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
3546
3547 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
3548 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, ";\n");
3549 outputLine++;
3550 }
3551 }
3552 }
3553 if(inst->members)
3554 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
3555 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
3556
3557 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
3558 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, " }");
3559 else
3560 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
3561 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
3562
3563 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
3564 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, "}");
3565 }
3566
3567 static void OutputClassFunction(struct ClassFunction * func, struct __ecereNameSpace__ecere__com__Instance * f)
3568 {
3569 if(func->specifiers)
3570 {
3571 struct Specifier * spec;
3572
3573 for(spec = (*func->specifiers).first; spec; spec = spec->next)
3574 {
3575 OutputSpecifier(spec, f, 0x0);
3576 if(spec->next)
3577 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
3578 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
3579
3580 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
3581 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, " ");
3582 }
3583 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
3584 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
3585
3586 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
3587 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, " ");
3588 }
3589 if(func->declarator)
3590 OutputDeclarator(func->declarator, f);
3591 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
3592 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
3593
3594 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
3595 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, "\n");
3596 outputLine++;
3597 if(func->declarations)
3598 {
3599 struct Declaration * decl;
3600
3601 for(decl = (*func->declarations).first; decl; decl = decl->next)
3602 {
3603 OutputDeclaration(decl, f);
3604 }
3605 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
3606 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
3607
3608 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
3609 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, "\n");
3610 outputLine++;
3611 }
3612 if(func->body)
3613 {
3614 OutputStatement(func->body, f);
3615 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
3616 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
3617
3618 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
3619 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, "\n");
3620 outputLine++;
3621 }
3622 else
3623 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
3624 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
3625
3626 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
3627 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, ";");
3628 }
3629
3630 static void OutputClassDef(struct ClassDef * def, struct __ecereNameSpace__ecere__com__Instance * f)
3631 {
3632 switch(def->type)
3633 {
3634 case 2:
3635 if(def->decl)
3636 {
3637 OutputDeclaration(def->decl, f);
3638 if(def->next && def->next->type != 2)
3639 {
3640 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
3641 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
3642
3643 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
3644 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, "\n");
3645 outputLine++;
3646 }
3647 }
3648 break;
3649 case 1:
3650 {
3651 struct MemberInit * init;
3652
3653 for(init = (*def->defProperties).first; init; init = init->next)
3654 {
3655 OutputMemberInit(init, f);
3656 if(init->next)
3657 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
3658 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
3659
3660 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
3661 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, ", ");
3662 }
3663 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
3664 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
3665
3666 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
3667 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, ";\n\n");
3668 outputLine += 2;
3669 break;
3670 }
3671 case 0:
3672 OutputClassFunction(def->function, f);
3673 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
3674 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
3675
3676 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
3677 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, "\n");
3678 outputLine++;
3679 break;
3680 }
3681 }
3682
3683 static void OutputClass(struct ClassDefinition * _class, struct __ecereNameSpace__ecere__com__Instance * f)
3684 {
3685 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
3686 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
3687
3688 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
3689 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, "class ");
3690 OutputSpecifier(_class->_class, f, 0x0);
3691 if(_class->baseSpecs)
3692 {
3693 struct Specifier * spec;
3694
3695 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
3696 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
3697
3698 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
3699 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, " : ");
3700 for(spec = (*_class->baseSpecs).first; spec; spec = spec->next)
3701 {
3702 OutputSpecifier(spec, f, 0x0);
3703 }
3704 }
3705 if(_class->definitions)
3706 {
3707 struct ClassDef * def;
3708
3709 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
3710 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
3711
3712 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
3713 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, "\n{\n");
3714 outputLine += 2;
3715 for(def = (*_class->definitions).first; def; def = def->next)
3716 {
3717 OutputClassDef(def, f);
3718 }
3719 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
3720 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
3721
3722 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
3723 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, "}\n");
3724 outputLine++;
3725 }
3726 else
3727 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
3728 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
3729
3730 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
3731 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, ";");
3732 }
3733
3734 void OutputTree(struct __ecereNameSpace__ecere__sys__OldList * ast, struct __ecereNameSpace__ecere__com__Instance * f)
3735 {
3736 struct External * external;
3737
3738 outputLine = 31;
3739 for(external = ast->first; external; external = external->next)
3740 {
3741 switch(external->type)
3742 {
3743 case 0:
3744 OutputFunction(external->function, f);
3745 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
3746 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
3747
3748 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
3749 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, "\n");
3750 outputLine++;
3751 break;
3752 case 1:
3753 OutputDeclaration(external->declaration, f);
3754 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
3755 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
3756
3757 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
3758 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, "\n");
3759 outputLine++;
3760 break;
3761 case 2:
3762 OutputClass(external->_class, f);
3763 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
3764 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
3765
3766 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
3767 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, "\n");
3768 outputLine++;
3769 break;
3770 }
3771 }
3772 }
3773
3774 extern char *  __ecereNameSpace__ecere__sys__TrimRSpaces(char *  string, char *  output);
3775
3776 extern void *  __ecereNameSpace__ecere__com__eInstance_New(struct __ecereNameSpace__ecere__com__Class * _class);
3777
3778 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__sys__TempFile;
3779
3780 int __ecereVMethodID___ecereNameSpace__ecere__sys__File_GetSize;
3781
3782 int __ecereVMethodID___ecereNameSpace__ecere__sys__File_Seek;
3783
3784 int __ecereVMethodID___ecereNameSpace__ecere__sys__File_Read;
3785
3786 extern void __ecereNameSpace__ecere__com__eInstance_DecRef(struct __ecereNameSpace__ecere__com__Instance * instance);
3787
3788 char * StringFromSpecDecl(struct __ecereNameSpace__ecere__sys__OldList * specs, struct Declarator * decl)
3789 {
3790 char * string;
3791 struct TypeName * typeName = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_TypeName);
3792 struct __ecereNameSpace__ecere__com__Instance * f = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass___ecereNameSpace__ecere__sys__TempFile);
3793 unsigned int size;
3794
3795 typeName->qualifiers = specs;
3796 typeName->declarator = decl;
3797 OutputTypeName(typeName, f, 0x1);
3798 ((typeName ? (__ecereClass_TypeName->Destructor ? __ecereClass_TypeName->Destructor(typeName) : 0, __ecereNameSpace__ecere__com__eSystem_Delete(typeName)) : 0), typeName = 0);
3799 size = ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *))__extension__ ({
3800 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
3801
3802 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
3803 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_GetSize])(f);
3804 string = __ecereNameSpace__ecere__com__eSystem_New(sizeof(char) * (size + 1));
3805 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, int pos, int mode))__extension__ ({
3806 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
3807
3808 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
3809 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Seek])(f, 0, 0);
3810 ((int (*)(struct __ecereNameSpace__ecere__com__Instance *, void *  buffer, unsigned int size, unsigned int count))__extension__ ({
3811 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
3812
3813 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
3814 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Read])(f, string, 1, (unsigned int)size);
3815 string[size] = '\0';
3816 __ecereNameSpace__ecere__sys__TrimRSpaces(string, string);
3817 (__ecereNameSpace__ecere__com__eInstance_DecRef(f), f = 0);
3818 return string;
3819 }
3820
3821 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__GlobalFunction;
3822
3823 struct __ecereNameSpace__ecere__com__GlobalFunction;
3824
3825 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);
3826
3827 void __ecereRegisterModule_output(struct __ecereNameSpace__ecere__com__Instance * module)
3828 {
3829 struct __ecereNameSpace__ecere__com__Class * class;
3830
3831 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("SetMemoryGuard", "void SetMemoryGuard(bool b)", SetMemoryGuard, module, 1);
3832 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("GetMemoryGuard", "bool GetMemoryGuard(void)", GetMemoryGuard, module, 1);
3833 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("OutputTypeName", "void OutputTypeName(TypeName type, ecere::sys::File f, bool typeName)", OutputTypeName, module, 1);
3834 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("OutputExpression", "void OutputExpression(Expression exp, ecere::sys::File f)", OutputExpression, module, 1);
3835 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("OutputTree", "void OutputTree(ecere::sys::OldList ast, ecere::sys::File f)", OutputTree, module, 1);
3836 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("StringFromSpecDecl", "char * StringFromSpecDecl(ecere::sys::OldList specs, Declarator decl)", StringFromSpecDecl, module, 1);
3837 }
3838
3839 void __ecereUnregisterModule_output(struct __ecereNameSpace__ecere__com__Instance * module)
3840 {
3841
3842 }
3843