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