compiler/bootstrap: Updated
[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 OutputExpression(exp->cond.elseExp, f);
1820 break;
1821 case 36:
1822 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
1823 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
1824
1825 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
1826 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, "__builtin_va_arg(");
1827 OutputExpression(exp->vaArg.exp, f);
1828 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
1829 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
1830
1831 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
1832 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, ", ");
1833 OutputTypeName(exp->vaArg.typeName, f, 0x0);
1834 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
1835 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
1836
1837 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
1838 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, ")");
1839 break;
1840 case 37:
1841 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
1842 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
1843
1844 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
1845 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, "[");
1846 if(exp->list)
1847 {
1848 struct Expression * expression;
1849
1850 for(expression = (*exp->list).first; expression; expression = expression->next)
1851 {
1852 OutputExpression(expression, f);
1853 if(expression->next)
1854 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
1855 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
1856
1857 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
1858 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, ", ");
1859 }
1860 }
1861 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
1862 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
1863
1864 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
1865 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, "]");
1866 break;
1867 }
1868 }
1869
1870 static void OutputAsmField(struct AsmField * field, struct __ecereNameSpace__ecere__com__Instance * f)
1871 {
1872 if(field->symbolic)
1873 {
1874 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
1875 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
1876
1877 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
1878 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, "[");
1879 OutputIdentifier(field->symbolic, f);
1880 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
1881 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
1882
1883 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
1884 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, "]");
1885 }
1886 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
1887 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
1888
1889 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
1890 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, field->command);
1891 if(field->expression)
1892 {
1893 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
1894 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
1895
1896 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
1897 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, "(");
1898 OutputExpression(field->expression, f);
1899 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
1900 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
1901
1902 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
1903 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, ")");
1904 }
1905 }
1906
1907 extern char *  strchr(const char * , int);
1908
1909 extern char *  __ecereNameSpace__ecere__sys__StripLastDirectory(char *  string, char *  output);
1910
1911 extern char *  sourceFile;
1912
1913 extern char *  __ecereNameSpace__ecere__sys__PathCat(char *  string, char *  addedPath);
1914
1915 extern void __ecereNameSpace__ecere__sys__ChangeCh(char *  string, char ch1, char ch2);
1916
1917 static void GetSourceName(char * name, const char * src)
1918 {
1919 name[0] = (char)0;
1920 if(src)
1921 {
1922 if(!strchr(src, '/') && !strchr(src, '\\'))
1923 __ecereNameSpace__ecere__sys__StripLastDirectory(sourceFile, name);
1924 __ecereNameSpace__ecere__sys__PathCat(name, src);
1925 }
1926 else if(sourceFile)
1927 __ecereNameSpace__ecere__sys__PathCat(name, sourceFile);
1928 __ecereNameSpace__ecere__sys__ChangeCh(name, '\\', '/');
1929 }
1930
1931 extern char *  outputFile;
1932
1933 static void OutputDeclaration(struct Declaration * decl, struct __ecereNameSpace__ecere__com__Instance * f);
1934
1935 extern struct __ecereNameSpace__ecere__sys__OldList *  MkList(void);
1936
1937 extern struct Declarator * SpecDeclFromString(char *  string, struct __ecereNameSpace__ecere__sys__OldList *  specs, struct Declarator * baseDecl);
1938
1939 extern struct Declarator * MkDeclaratorIdentifier(struct Identifier * id);
1940
1941 extern struct Identifier * MkIdentifier(char *  string);
1942
1943 extern struct __ecereNameSpace__ecere__sys__OldList *  CopyList(struct __ecereNameSpace__ecere__sys__OldList *  source, void *  (*  CopyFunction)(void * ));
1944
1945 extern struct Specifier * CopySpecifier(struct Specifier * spec);
1946
1947 extern struct Declarator * PlugDeclarator(struct Declarator * decl, struct Declarator * baseDecl);
1948
1949 extern void ListAdd(struct __ecereNameSpace__ecere__sys__OldList * list, void *  item);
1950
1951 extern struct Specifier * MkSpecifierName(char *  name);
1952
1953 extern void PrintTypeNoConst(struct Type * type, char *  string, unsigned int printName, unsigned int fullName);
1954
1955 extern struct TypeName * MkTypeName(struct __ecereNameSpace__ecere__sys__OldList * qualifiers, struct Declarator * declarator);
1956
1957 extern void InstDeclPassTypeName(struct TypeName * type, unsigned int param);
1958
1959 extern void FreeTypeName(struct TypeName * typeName);
1960
1961 static void OutputStatement(struct Statement * stmt, struct __ecereNameSpace__ecere__com__Instance * f)
1962 {
1963 char name[274] = "";
1964 char origName[274] = "";
1965
1966 if(inCompiler)
1967 {
1968 GetSourceName(name, stmt->loc.start.included ? GetIncludeFileFromID(stmt->loc.start.included) : (((void *)0)));
1969 __ecereNameSpace__ecere__sys__PathCat(origName, outputFile);
1970 __ecereNameSpace__ecere__sys__ChangeCh(origName, '\\', '/');
1971 }
1972 if(inCompiler && outputLineNumbers && stmt->loc.start.line)
1973 {
1974 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "\n#line %d \"%s\"\n", stmt->loc.start.line, name);
1975 outputLine += 2;
1976 }
1977 switch(stmt->type)
1978 {
1979 case 14:
1980 OutputDeclaration(stmt->decl, f);
1981 break;
1982 case 0:
1983 OutputIdentifier(stmt->labeled.id, f);
1984 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
1985 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
1986
1987 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
1988 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, ":\n");
1989 outputLine++;
1990 if(stmt->labeled.stmt)
1991 {
1992 if(stmt->labeled.stmt->type == 14)
1993 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
1994 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
1995
1996 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
1997 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, "; ");
1998 OutputStatement(stmt->labeled.stmt, f);
1999 }
2000 break;
2001 case 1:
2002 if(stmt->caseStmt.exp)
2003 {
2004 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
2005 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
2006
2007 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
2008 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, "case ");
2009 OutputExpression(stmt->caseStmt.exp, f);
2010 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
2011 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
2012
2013 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
2014 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, ":\n");
2015 outputLine++;
2016 }
2017 else
2018 {
2019 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
2020 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
2021
2022 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
2023 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, "default:\n");
2024 outputLine++;
2025 }
2026 if(stmt->caseStmt.stmt)
2027 {
2028 if(stmt->caseStmt.stmt->type == 14)
2029 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
2030 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
2031
2032 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
2033 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, "; ");
2034 OutputStatement(stmt->caseStmt.stmt, f);
2035 }
2036 break;
2037 case 2:
2038 {
2039 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
2040 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
2041
2042 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
2043 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, "{\n");
2044 outputLine++;
2045 if(stmt->compound.declarations)
2046 {
2047 struct Declaration * decl;
2048
2049 for(decl = (*stmt->compound.declarations).first; decl; decl = decl->next)
2050 {
2051 OutputDeclaration(decl, f);
2052 }
2053 }
2054 if(stmt->compound.statements)
2055 {
2056 struct Statement * statement;
2057
2058 if(stmt->compound.declarations)
2059 {
2060 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
2061 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
2062
2063 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
2064 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, "\n");
2065 outputLine++;
2066 }
2067 for(statement = (*stmt->compound.statements).first; statement; statement = statement->next)
2068 {
2069 OutputStatement(statement, f);
2070 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
2071 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
2072
2073 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
2074 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, "\n");
2075 outputLine++;
2076 }
2077 }
2078 if(inCompiler && outputLineNumbers && stmt->loc.end.line)
2079 {
2080 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "\n#line %d \"%s\"\n", stmt->loc.end.line, name);
2081 outputLine += 2;
2082 }
2083 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
2084 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
2085
2086 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
2087 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, "}");
2088 break;
2089 }
2090 case 3:
2091 {
2092 if(stmt->expressions)
2093 {
2094 struct Expression * exp;
2095
2096 for(exp = (*stmt->expressions).first; exp; exp = exp->next)
2097 {
2098 OutputExpression(exp, f);
2099 if(exp->next)
2100 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
2101 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
2102
2103 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
2104 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, ", ");
2105 }
2106 }
2107 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
2108 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
2109
2110 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
2111 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, ";");
2112 break;
2113 }
2114 case 4:
2115 {
2116 struct Expression * exp;
2117
2118 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
2119 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
2120
2121 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
2122 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, "if(");
2123 for(exp = (*stmt->ifStmt.exp).first; exp; exp = exp->next)
2124 {
2125 OutputExpression(exp, f);
2126 if(exp->next)
2127 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
2128 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
2129
2130 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
2131 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, ", ");
2132 }
2133 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
2134 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
2135
2136 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
2137 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, ")\n");
2138 outputLine++;
2139 if(stmt->ifStmt.stmt)
2140 OutputStatement(stmt->ifStmt.stmt, f);
2141 if(stmt->ifStmt.elseStmt)
2142 {
2143 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
2144 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
2145
2146 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
2147 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, "\n");
2148 outputLine++;
2149 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
2150 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
2151
2152 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
2153 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, "else");
2154 if(stmt->ifStmt.elseStmt->type != 4)
2155 {
2156 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
2157 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
2158
2159 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
2160 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, "\n");
2161 outputLine++;
2162 }
2163 else
2164 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
2165 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
2166
2167 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
2168 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, " ");
2169 OutputStatement(stmt->ifStmt.elseStmt, f);
2170 }
2171 break;
2172 }
2173 case 5:
2174 {
2175 struct Expression * exp;
2176
2177 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
2178 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
2179
2180 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
2181 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, "switch(");
2182 for(exp = (*stmt->switchStmt.exp).first; exp; exp = exp->next)
2183 {
2184 OutputExpression(exp, f);
2185 if(exp->next)
2186 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
2187 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
2188
2189 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
2190 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, ", ");
2191 }
2192 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
2193 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
2194
2195 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
2196 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, ")\n");
2197 outputLine++;
2198 OutputStatement(stmt->switchStmt.stmt, f);
2199 break;
2200 }
2201 case 6:
2202 {
2203 struct Expression * exp;
2204
2205 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
2206 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
2207
2208 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
2209 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, "while(");
2210 for(exp = (*stmt->switchStmt.exp).first; exp; exp = exp->next)
2211 {
2212 OutputExpression(exp, f);
2213 if(exp->next)
2214 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
2215 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
2216
2217 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
2218 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, ", ");
2219 }
2220 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
2221 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
2222
2223 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
2224 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, ")\n");
2225 outputLine++;
2226 OutputStatement(stmt->whileStmt.stmt, f);
2227 break;
2228 }
2229 case 7:
2230 {
2231 struct Expression * exp;
2232
2233 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
2234 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
2235
2236 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
2237 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, "do\n");
2238 outputLine++;
2239 OutputStatement(stmt->whileStmt.stmt, f);
2240 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
2241 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
2242
2243 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
2244 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, "while(");
2245 for(exp = (*stmt->switchStmt.exp).first; exp; exp = exp->next)
2246 {
2247 OutputExpression(exp, f);
2248 if(exp->next)
2249 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
2250 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
2251
2252 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
2253 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, ", ");
2254 }
2255 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
2256 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
2257
2258 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
2259 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, ");");
2260 break;
2261 }
2262 case 8:
2263 {
2264 struct Expression * exp;
2265
2266 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
2267 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
2268
2269 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
2270 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, "for(");
2271 OutputStatement(stmt->forStmt.init, f);
2272 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
2273 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
2274
2275 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
2276 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, " ");
2277 OutputStatement(stmt->forStmt.check, f);
2278 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
2279 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
2280
2281 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
2282 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, " ");
2283 if(stmt->forStmt.increment)
2284 {
2285 if(inCompiler && outputLineNumbers && stmt->loc.end.line)
2286 {
2287 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "\n#line %d \"%s\"\n", stmt->loc.end.line, name);
2288 outputLine += 2;
2289 }
2290 for(exp = (*stmt->forStmt.increment).first; exp; exp = exp->next)
2291 {
2292 OutputExpression(exp, f);
2293 if(exp->next)
2294 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
2295 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
2296
2297 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
2298 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, ", ");
2299 }
2300 }
2301 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
2302 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
2303
2304 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
2305 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, ")\n");
2306 outputLine++;
2307 OutputStatement(stmt->forStmt.stmt, f);
2308 break;
2309 }
2310 case 9:
2311 {
2312 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
2313 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
2314
2315 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
2316 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, "goto ");
2317 OutputIdentifier(stmt->gotoStmt.id, f);
2318 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
2319 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
2320
2321 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
2322 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, ";");
2323 break;
2324 }
2325 case 10:
2326 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
2327 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
2328
2329 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
2330 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, "continue;");
2331 break;
2332 case 11:
2333 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
2334 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
2335
2336 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
2337 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, "break;");
2338 break;
2339 case 12:
2340 {
2341 struct Expression * exp;
2342
2343 if(inCompiler && memoryGuard)
2344 {
2345 struct Expression * exp = stmt->expressions ? (*stmt->expressions).last : (((void *)0));
2346
2347 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "{ ");
2348 if(exp && exp->expType && exp->expType->kind != 0)
2349 {
2350 char string[1024] = "";
2351 struct __ecereNameSpace__ecere__sys__OldList * specs = MkList();
2352 struct Declarator * decl;
2353 struct TypeName * typeName;
2354
2355 if(exp->expType->kind == 20)
2356 {
2357 if(exp->expType->templateParameter->dataTypeString)
2358 decl = SpecDeclFromString(exp->expType->templateParameter->dataTypeString, specs, MkDeclaratorIdentifier(MkIdentifier("__ecereReturnVal")));
2359 else if(exp->expType->templateParameter->dataType)
2360 {
2361 (__ecereNameSpace__ecere__com__eSystem_Delete(specs), specs = 0);
2362 specs = CopyList(exp->expType->templateParameter->dataType->specifiers, CopySpecifier);
2363 decl = PlugDeclarator(exp->expType->templateParameter->dataType->decl, MkDeclaratorIdentifier(MkIdentifier("__ecereReturnVal")));
2364 }
2365 else
2366 {
2367 ListAdd(specs, MkSpecifierName("uint64"));
2368 decl = MkDeclaratorIdentifier(MkIdentifier("__ecereReturnVal"));
2369 }
2370 }
2371 else
2372 {
2373 PrintTypeNoConst(exp->expType, string, exp->expType->kind == 18 ? 0x1 : 0x0, 0x1);
2374 decl = SpecDeclFromString(string, specs, MkDeclaratorIdentifier(MkIdentifier("__ecereReturnVal")));
2375 }
2376 typeName = MkTypeName(specs, decl);
2377 InstDeclPassTypeName(typeName, 0x0);
2378 OutputTypeName(typeName, f, 0x0);
2379 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, ";");
2380 FreeTypeName(typeName);
2381 }
2382 }
2383 if(!memoryGuard)
2384 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
2385 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
2386
2387 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
2388 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, "return ");
2389 else
2390 {
2391 struct Expression * exp = stmt->expressions ? (*stmt->expressions).last : (((void *)0));
2392
2393 if(exp && exp->expType && exp->expType->kind != 0)
2394 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "__ecereReturnVal = ");
2395 }
2396 if(stmt->expressions)
2397 {
2398 for(exp = (*stmt->expressions).first; exp; exp = exp->next)
2399 {
2400 OutputExpression(exp, f);
2401 if(exp->next)
2402 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
2403 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
2404
2405 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
2406 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, ", ");
2407 }
2408 }
2409 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
2410 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
2411
2412 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
2413 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, ";");
2414 if(inCompiler && memoryGuard)
2415 {
2416 struct Expression * exp = stmt->expressions ? (struct Expression *)(*stmt->expressions).last : (((void *)0));
2417
2418 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, " __ecereNameSpace__ecere__com__MemoryGuard_PopLoc();");
2419 if(exp && exp->expType && exp->expType->kind != 0)
2420 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "return __ecereReturnVal;");
2421 else
2422 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "return;");
2423 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "}");
2424 }
2425 break;
2426 }
2427 case 13:
2428 {
2429 struct AsmField * field;
2430
2431 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
2432 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
2433
2434 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
2435 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, "__asm__ ");
2436 if(stmt->asmStmt.spec)
2437 OutputSpecifier(stmt->asmStmt.spec, f, 0x0);
2438 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
2439 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
2440
2441 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
2442 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, "(");
2443 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
2444 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
2445
2446 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
2447 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, stmt->asmStmt.statements);
2448 if(stmt->asmStmt.inputFields || stmt->asmStmt.outputFields || stmt->asmStmt.clobberedFields)
2449 {
2450 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
2451 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
2452
2453 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
2454 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, ":");
2455 if(stmt->asmStmt.inputFields)
2456 {
2457 for(field = (*stmt->asmStmt.inputFields).first; field; field = field->next)
2458 {
2459 if(field->prev)
2460 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
2461 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
2462
2463 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
2464 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, ",");
2465 OutputAsmField(field, f);
2466 }
2467 }
2468 }
2469 if(stmt->asmStmt.outputFields || stmt->asmStmt.clobberedFields)
2470 {
2471 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
2472 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
2473
2474 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
2475 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, ":");
2476 if(stmt->asmStmt.outputFields)
2477 {
2478 for(field = (*stmt->asmStmt.outputFields).first; field; field = field->next)
2479 {
2480 if(field->prev)
2481 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
2482 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
2483
2484 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
2485 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, ",");
2486 OutputAsmField(field, f);
2487 }
2488 }
2489 }
2490 if(stmt->asmStmt.clobberedFields)
2491 {
2492 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
2493 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
2494
2495 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
2496 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, ":");
2497 for(field = (*stmt->asmStmt.clobberedFields).first; field; field = field->next)
2498 {
2499 if(field->prev)
2500 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
2501 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
2502
2503 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
2504 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, ",");
2505 OutputAsmField(field, f);
2506 }
2507 }
2508 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
2509 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
2510
2511 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
2512 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, ");\n");
2513 outputLine++;
2514 break;
2515 }
2516 }
2517 if(inCompiler && outputLineNumbers && stmt->loc.start.line)
2518 {
2519 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "\n#line %d \"%s\"\n", outputLine + 2, origName);
2520 outputLine += 2;
2521 }
2522 }
2523
2524 static void OutputPointer(struct Pointer * ptr, struct __ecereNameSpace__ecere__com__Instance * f)
2525 {
2526 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
2527 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
2528
2529 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
2530 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, "*");
2531 if(ptr->qualifiers)
2532 {
2533 struct Specifier * spec;
2534
2535 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
2536 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
2537
2538 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
2539 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, " ");
2540 for(spec = (*ptr->qualifiers).first; spec; spec = spec->next)
2541 {
2542 OutputSpecifier(spec, f, 0x0);
2543 if(spec->next)
2544 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
2545 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
2546
2547 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
2548 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, " ");
2549 }
2550 }
2551 if(ptr->pointer)
2552 {
2553 OutputPointer(ptr->pointer, f);
2554 }
2555 }
2556
2557 static void OutputAttrib(struct Attrib * attr, struct __ecereNameSpace__ecere__com__Instance * f);
2558
2559 static void OutputExtDecl(struct ExtDecl * extDecl, struct __ecereNameSpace__ecere__com__Instance * f);
2560
2561 extern void ProcessExpressionType(struct Expression * exp);
2562
2563 extern void ComputeExpression(struct Expression * exp);
2564
2565 static void OutputDeclarator(struct Declarator * decl, struct __ecereNameSpace__ecere__com__Instance * f)
2566 {
2567 switch(decl->type)
2568 {
2569 case 0:
2570 if(decl->declarator)
2571 {
2572 OutputDeclarator(decl->declarator, f);
2573 }
2574 if(decl->structDecl.exp)
2575 {
2576 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
2577 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
2578
2579 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
2580 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, " : ");
2581 OutputExpression(decl->structDecl.exp, f);
2582 }
2583 if(decl->structDecl.posExp)
2584 {
2585 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
2586 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
2587
2588 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
2589 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, " : ");
2590 OutputExpression(decl->structDecl.posExp, f);
2591 }
2592 if(decl->structDecl.attrib)
2593 {
2594 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
2595 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
2596
2597 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
2598 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, " ");
2599 OutputAttrib(decl->structDecl.attrib, f);
2600 }
2601 break;
2602 case 1:
2603 OutputIdentifier(decl->identifier, f);
2604 break;
2605 case 2:
2606 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
2607 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
2608
2609 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
2610 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, "(");
2611 OutputDeclarator(decl->declarator, f);
2612 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
2613 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
2614
2615 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
2616 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, ")");
2617 break;
2618 case 6:
2619 if(decl->extended.extended)
2620 OutputExtDecl(decl->extended.extended, f);
2621 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
2622 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
2623
2624 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
2625 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, " ");
2626 OutputDeclarator(decl->declarator, f);
2627 break;
2628 case 7:
2629 OutputDeclarator(decl->declarator, f);
2630 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
2631 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
2632
2633 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
2634 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, " ");
2635 if(decl->extended.extended)
2636 OutputExtDecl(decl->extended.extended, f);
2637 break;
2638 case 3:
2639 if(decl->declarator)
2640 {
2641 OutputDeclarator(decl->declarator, f);
2642 }
2643 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
2644 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
2645
2646 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
2647 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, "[");
2648 if(decl->array.exp)
2649 {
2650 ProcessExpressionType(decl->array.exp);
2651 ComputeExpression(decl->array.exp);
2652 OutputExpression(decl->array.exp, f);
2653 }
2654 else if(decl->array.enumClass)
2655 {
2656 struct Symbol * _class = decl->array.enumClass->symbol;
2657
2658 if(_class && _class->registered)
2659 {
2660 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "%d", (int)__ecereNameSpace__ecere__com__eClass_GetProperty(_class->registered, "enumSize"));
2661 }
2662 }
2663 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
2664 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
2665
2666 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
2667 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, "]");
2668 break;
2669 case 4:
2670 {
2671 struct TypeName * param;
2672
2673 if(decl->declarator)
2674 OutputDeclarator(decl->declarator, f);
2675 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
2676 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
2677
2678 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
2679 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, "(");
2680 if(decl->function.parameters && (*decl->function.parameters).first)
2681 {
2682 for(param = (*decl->function.parameters).first; param; param = param->next)
2683 {
2684 OutputTypeName(param, f, 0x0);
2685 if(param->next)
2686 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
2687 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
2688
2689 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
2690 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, ", ");
2691 }
2692 }
2693 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
2694 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
2695
2696 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
2697 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, ")");
2698 break;
2699 }
2700 case 5:
2701 if(decl->pointer.pointer)
2702 OutputPointer(decl->pointer.pointer, f);
2703 if(decl->declarator)
2704 {
2705 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
2706 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
2707
2708 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
2709 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, " ");
2710 OutputDeclarator(decl->declarator, f);
2711 }
2712 break;
2713 }
2714 }
2715
2716 static void OutputEnumerator(struct Enumerator * enumerator, struct __ecereNameSpace__ecere__com__Instance * f)
2717 {
2718 OutputIdentifier(enumerator->id, f);
2719 if(enumerator->exp)
2720 {
2721 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
2722 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
2723
2724 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
2725 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, " = ");
2726 OutputExpression(enumerator->exp, f);
2727 }
2728 }
2729
2730 static void OutputAttribute(struct Attribute * attr, struct __ecereNameSpace__ecere__com__Instance * f)
2731 {
2732 if(attr->attr)
2733 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
2734 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
2735
2736 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
2737 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, attr->attr);
2738 if(attr->exp)
2739 {
2740 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
2741 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
2742
2743 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
2744 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, " ");
2745 OutputExpression(attr->exp, f);
2746 }
2747 }
2748
2749 static void OutputAttrib(struct Attrib * attr, struct __ecereNameSpace__ecere__com__Instance * f)
2750 {
2751 switch(attr->type)
2752 {
2753 case ATTRIB:
2754 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
2755 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
2756
2757 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
2758 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, "__attribute__((");
2759 break;
2760 case __ATTRIB:
2761 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
2762 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
2763
2764 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
2765 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, "__attribute((");
2766 break;
2767 case ATTRIB_DEP:
2768 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
2769 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
2770
2771 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
2772 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, "__attribute_deprecated__((");
2773 break;
2774 }
2775 if(attr->attribs)
2776 {
2777 struct Attribute * attrib;
2778
2779 for(attrib = (*attr->attribs).first; attrib; attrib = attrib->next)
2780 {
2781 if(attrib->prev)
2782 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
2783 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
2784
2785 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
2786 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, " ");
2787 OutputAttribute(attrib, f);
2788 }
2789 }
2790 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
2791 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
2792
2793 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
2794 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, "))");
2795 }
2796
2797 static void OutputExtDecl(struct ExtDecl * extDecl, struct __ecereNameSpace__ecere__com__Instance * f)
2798 {
2799 if(extDecl->type == 0 && extDecl->s)
2800 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
2801 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
2802
2803 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
2804 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, extDecl->s);
2805 else if(extDecl->type == 1)
2806 OutputAttrib(extDecl->attr, f);
2807 }
2808
2809 extern struct Symbol * FindClass(char *  name);
2810
2811 static void OutputClassDef(struct ClassDef * def, struct __ecereNameSpace__ecere__com__Instance * f);
2812
2813 static void OutputSpecifier(struct Specifier * spec, struct __ecereNameSpace__ecere__com__Instance * f, unsigned int typeName)
2814 {
2815 switch(spec->type)
2816 {
2817 case 0:
2818 switch(spec->specifier)
2819 {
2820 case TYPEDEF:
2821 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
2822 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
2823
2824 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
2825 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, "typedef");
2826 break;
2827 case EXTERN:
2828 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
2829 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
2830
2831 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
2832 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, "extern");
2833 break;
2834 case STATIC:
2835 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
2836 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
2837
2838 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
2839 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, "static");
2840 break;
2841 case AUTO:
2842 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
2843 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
2844
2845 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
2846 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, "auto");
2847 break;
2848 case REGISTER:
2849 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
2850 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
2851
2852 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
2853 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, "register");
2854 break;
2855 case THREAD:
2856 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
2857 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
2858
2859 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
2860 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, "__thread");
2861 break;
2862 case CONST:
2863 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
2864 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
2865
2866 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
2867 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, "const");
2868 break;
2869 case VOLATILE:
2870 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
2871 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
2872
2873 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
2874 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, "volatile");
2875 break;
2876 case VOID:
2877 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
2878 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
2879
2880 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
2881 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, "void");
2882 break;
2883 case CHAR:
2884 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
2885 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
2886
2887 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
2888 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, "char");
2889 break;
2890 case _BOOL:
2891 case BOOL:
2892 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
2893 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
2894
2895 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
2896 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, "_Bool");
2897 break;
2898 case _COMPLEX:
2899 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
2900 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
2901
2902 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
2903 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, "_Complex");
2904 break;
2905 case _IMAGINARY:
2906 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
2907 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
2908
2909 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
2910 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, "_Imaginary");
2911 break;
2912 case RESTRICT:
2913 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
2914 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
2915
2916 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
2917 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, "restrict");
2918 break;
2919 case SHORT:
2920 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
2921 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
2922
2923 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
2924 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, "short");
2925 break;
2926 case INT:
2927 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
2928 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
2929
2930 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
2931 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, "int");
2932 break;
2933 case UINT:
2934 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
2935 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
2936
2937 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
2938 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, typeName ? "uint" : "unsigned int");
2939 break;
2940 case INT64:
2941 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
2942 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
2943
2944 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
2945 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, typeName ? "int64" : "long long");
2946 break;
2947 case VALIST:
2948 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
2949 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
2950
2951 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
2952 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, "__builtin_va_list");
2953 break;
2954 case LONG:
2955 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
2956 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
2957
2958 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
2959 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, "long");
2960 break;
2961 case FLOAT:
2962 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
2963 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
2964
2965 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
2966 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, "float");
2967 break;
2968 case DOUBLE:
2969 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
2970 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
2971
2972 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
2973 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, "double");
2974 break;
2975 case SIGNED:
2976 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
2977 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
2978
2979 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
2980 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, "signed");
2981 break;
2982 case UNSIGNED:
2983 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
2984 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
2985
2986 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
2987 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, "unsigned");
2988 break;
2989 case TYPED_OBJECT:
2990 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
2991 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
2992
2993 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
2994 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, "typed_object");
2995 break;
2996 case ANY_OBJECT:
2997 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
2998 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
2999
3000 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
3001 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, "any_object");
3002 break;
3003 case CLASS:
3004 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
3005 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
3006
3007 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
3008 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, "class");
3009 break;
3010 case THISCLASS:
3011 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
3012 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
3013
3014 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
3015 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, "thisclass");
3016 break;
3017 }
3018 break;
3019 case 5:
3020 if(spec->extDecl)
3021 OutputExtDecl(spec->extDecl, f);
3022 break;
3023 case 1:
3024 if(spec->name && !strcmp(spec->name, "class"))
3025 {
3026 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
3027 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
3028
3029 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
3030 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, "typed_object");
3031 }
3032 else
3033 {
3034 struct Symbol * symbol = spec->symbol;
3035
3036 if(!symbol && spec->name)
3037 symbol = FindClass(spec->name);
3038 if(symbol)
3039 {
3040 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
3041 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
3042
3043 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
3044 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, symbol->string ? symbol->string : "(null)");
3045 }
3046 else if(spec->name)
3047 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
3048 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
3049
3050 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
3051 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, spec->name);
3052 }
3053 break;
3054 case 2:
3055 {
3056 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
3057 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
3058
3059 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
3060 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, "enum");
3061 if(spec->id)
3062 {
3063 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
3064 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
3065
3066 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
3067 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, " ");
3068 OutputIdentifier(spec->id, f);
3069 }
3070 if(spec->list)
3071 {
3072 struct Enumerator * enumerator;
3073
3074 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
3075 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
3076
3077 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
3078 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, "\n{\n");
3079 outputLine += 2;
3080 for(enumerator = (*spec->list).first; enumerator; enumerator = enumerator->next)
3081 {
3082 OutputEnumerator(enumerator, f);
3083 if(enumerator->next)
3084 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
3085 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
3086
3087 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
3088 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, ", ");
3089 }
3090 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
3091 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
3092
3093 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
3094 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, "\n}");
3095 outputLine++;
3096 }
3097 break;
3098 }
3099 case 3:
3100 case 4:
3101 {
3102 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
3103 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
3104
3105 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
3106 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, (spec->type == 3) ? "struct" : "union");
3107 if(spec->extDeclStruct)
3108 {
3109 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
3110 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
3111
3112 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
3113 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, " ");
3114 OutputExtDecl(spec->extDeclStruct, f);
3115 }
3116 if(spec->id)
3117 {
3118 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
3119 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
3120
3121 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
3122 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, " ");
3123 OutputIdentifier(spec->id, f);
3124 }
3125 if(spec->definitions)
3126 {
3127 struct ClassDef * def;
3128
3129 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
3130 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
3131
3132 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
3133 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, "\n{\n");
3134 outputLine += 2;
3135 for(def = (*spec->definitions).first; def; def = def->next)
3136 {
3137 OutputClassDef(def, f);
3138 }
3139 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
3140 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
3141
3142 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
3143 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, "} __attribute__ ((gcc_struct))");
3144 }
3145 break;
3146 }
3147 case 6:
3148 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
3149 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
3150
3151 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
3152 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, "__typeof(");
3153 OutputExpression(spec->expression, f);
3154 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
3155 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
3156
3157 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
3158 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, ")");
3159 break;
3160 case 7:
3161 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
3162 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
3163
3164 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
3165 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, "subclass(");
3166 OutputSpecifier(spec->_class, f, 0x0);
3167 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
3168 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
3169
3170 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
3171 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, ")");
3172 break;
3173 case 8:
3174 OutputIdentifier(spec->templateParameter->identifier, f);
3175 break;
3176 }
3177 }
3178
3179 static void OutputInitializer(struct Initializer * initializer, struct __ecereNameSpace__ecere__com__Instance * f)
3180 {
3181 char name[274] = "";
3182 char origName[274] = "";
3183
3184 if(inCompiler)
3185 {
3186 GetSourceName(name, initializer->loc.start.included ? GetIncludeFileFromID(initializer->loc.start.included) : (((void *)0)));
3187 __ecereNameSpace__ecere__sys__PathCat(origName, outputFile);
3188 __ecereNameSpace__ecere__sys__ChangeCh(origName, '\\', '/');
3189 }
3190 switch(initializer->type)
3191 {
3192 case 1:
3193 {
3194 struct Initializer * init;
3195
3196 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
3197 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
3198
3199 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
3200 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, "\n{\n");
3201 outputLine += 2;
3202 if(inCompiler && outputLineNumbers && initializer->loc.start.line)
3203 {
3204 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "\n#line %d \"%s\"\n", initializer->loc.start.line, name);
3205 outputLine += 2;
3206 }
3207 for(init = (*initializer->list).first; init; init = init->next)
3208 {
3209 OutputInitializer(init, f);
3210 if(init->next)
3211 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
3212 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
3213
3214 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
3215 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, ", ");
3216 }
3217 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
3218 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
3219
3220 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
3221 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, "\n}");
3222 if(inCompiler && outputLineNumbers && initializer->loc.start.line)
3223 {
3224 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "\n#line %d \"%s\"\n", initializer->loc.start.line, name);
3225 outputLine += 2;
3226 }
3227 outputLine++;
3228 break;
3229 }
3230 case 0:
3231 if(initializer->exp)
3232 OutputExpression(initializer->exp, f);
3233 break;
3234 }
3235 }
3236
3237 static void OutputInitDeclarator(struct InitDeclarator * decl, struct __ecereNameSpace__ecere__com__Instance * f)
3238 {
3239 OutputDeclarator(decl->declarator, f);
3240 if(decl->initializer)
3241 {
3242 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
3243 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
3244
3245 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
3246 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, " = ");
3247 OutputInitializer(decl->initializer, f);
3248 }
3249 }
3250
3251 static void OutputDeclaration(struct Declaration * decl, struct __ecereNameSpace__ecere__com__Instance * f)
3252 {
3253 struct Specifier * spec;
3254 char origName[274] = "";
3255
3256 switch(decl->type)
3257 {
3258 case 1:
3259 {
3260 struct InitDeclarator * d;
3261
3262 if(inCompiler)
3263 {
3264 __ecereNameSpace__ecere__sys__PathCat(origName, outputFile);
3265 __ecereNameSpace__ecere__sys__ChangeCh(origName, '\\', '/');
3266 }
3267 if(decl->declarators && (*decl->declarators).first)
3268 {
3269 for(d = (*decl->declarators).first; d; d = d->next)
3270 if(d->initializer)
3271 {
3272 char name[274] = "";
3273
3274 GetSourceName(name, decl->loc.start.included ? GetIncludeFileFromID(decl->loc.start.included) : (((void *)0)));
3275 if(inCompiler && outputLineNumbers && decl->loc.start.line)
3276 {
3277 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "\n#line %d \"%s\"\n", decl->loc.start.line, name);
3278 outputLine += 2;
3279 }
3280 break;
3281 }
3282 }
3283 if(decl->specifiers)
3284 {
3285 unsigned int inTypeDef = 0x0;
3286
3287 for(spec = (*decl->specifiers).first; spec; spec = spec->next)
3288 {
3289 if(spec->type == 0 && spec->specifier == TYPEDEF)
3290 inTypeDef = 0x1;
3291 OutputSpecifier(spec, f, inTypeDef && !spec->next);
3292 if(spec->next)
3293 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
3294 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
3295
3296 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
3297 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, " ");
3298 }
3299 }
3300 if(decl->declarators && (*decl->declarators).first)
3301 {
3302 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
3303 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
3304
3305 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
3306 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, " ");
3307 for(d = (*decl->declarators).first; d; d = d->next)
3308 {
3309 OutputInitDeclarator(d, f);
3310 if(d->next)
3311 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
3312 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
3313
3314 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
3315 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, ", ");
3316 }
3317 }
3318 break;
3319 }
3320 case 0:
3321 {
3322 if(decl->specifiers)
3323 {
3324 for(spec = (*decl->specifiers).first; spec; spec = spec->next)
3325 {
3326 OutputSpecifier(spec, f, 0x0);
3327 if(spec->next)
3328 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
3329 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
3330
3331 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
3332 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, " ");
3333 }
3334 }
3335 if(decl->declarators)
3336 {
3337 struct Declarator * d;
3338
3339 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
3340 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
3341
3342 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
3343 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, " ");
3344 for(d = (*decl->declarators).first; d; d = d->next)
3345 {
3346 OutputDeclarator(d, f);
3347 if(d->next)
3348 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
3349 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
3350
3351 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
3352 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, ", ");
3353 }
3354 }
3355 if(decl->extStorage)
3356 {
3357 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
3358 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
3359
3360 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
3361 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, " ");
3362 OutputSpecifier(decl->extStorage, f, 0x0);
3363 }
3364 break;
3365 }
3366 case 2:
3367 if(decl->inst)
3368 {
3369 OutputInstance(decl->inst, f);
3370 }
3371 break;
3372 case 3:
3373 return ;
3374 }
3375 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
3376 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
3377
3378 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
3379 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, ";\n");
3380 outputLine++;
3381 if(inCompiler && outputLineNumbers && decl->loc.start.line && decl->type == 1)
3382 {
3383 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "\n#line %d \"%s\"\n", outputLine + 2, origName);
3384 outputLine += 2;
3385 }
3386 }
3387
3388 static struct FunctionDefinition * curFunction;
3389
3390 extern struct Identifier * GetDeclId(struct Declarator * decl);
3391
3392 static void OutputFunction(struct FunctionDefinition * func, struct __ecereNameSpace__ecere__com__Instance * f)
3393 {
3394 struct FunctionDefinition * oldFunc = curFunction;
3395
3396 curFunction = func;
3397 if(func->specifiers)
3398 {
3399 struct Specifier * spec;
3400
3401 for(spec = (*func->specifiers).first; spec; spec = spec->next)
3402 {
3403 OutputSpecifier(spec, f, 0x0);
3404 if(spec->next)
3405 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
3406 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
3407
3408 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
3409 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, " ");
3410 }
3411 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
3412 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
3413
3414 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
3415 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, " ");
3416 }
3417 if(func->declarator)
3418 OutputDeclarator(func->declarator, f);
3419 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
3420 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
3421
3422 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
3423 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, "\n");
3424 outputLine++;
3425 if(func->declarations)
3426 {
3427 struct Declaration * decl;
3428
3429 for(decl = (*func->declarations).first; decl; decl = decl->next)
3430 {
3431 OutputDeclaration(decl, f);
3432 }
3433 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
3434 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
3435
3436 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
3437 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, "\n");
3438 outputLine++;
3439 }
3440 if(func->body)
3441 {
3442 if(inCompiler && memoryGuard)
3443 {
3444 char name[1024] = "";
3445 struct Identifier * id = GetDeclId(func->declarator);
3446
3447 GetSourceName(name, func->loc.start.included ? GetIncludeFileFromID(func->loc.start.included) : (((void *)0)));
3448 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "{\n");
3449 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "   __ecereNameSpace__ecere__com__MemoryGuard_PushLoc(\"%s:%s\");\n", name, id->string);
3450 outputLine += 2;
3451 }
3452 OutputStatement(func->body, f);
3453 if(inCompiler && memoryGuard)
3454 {
3455 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "   __ecereNameSpace__ecere__com__MemoryGuard_PopLoc();\n");
3456 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "}\n");
3457 outputLine += 2;
3458 }
3459 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
3460 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
3461
3462 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
3463 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, "\n");
3464 outputLine++;
3465 }
3466 curFunction = oldFunc;
3467 }
3468
3469 static void OutputMemberInit(struct MemberInit * init, struct __ecereNameSpace__ecere__com__Instance * f)
3470 {
3471 if(init->identifiers)
3472 {
3473 if((*init->identifiers).count > 1)
3474 {
3475 struct Identifier * id;
3476
3477 for(id = (*init->identifiers).first; id; id = id->next)
3478 {
3479 OutputIdentifier(id, f);
3480 if(id->next)
3481 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
3482 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
3483
3484 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
3485 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, ".");
3486 }
3487 }
3488 else if((*init->identifiers).first)
3489 OutputIdentifier((*init->identifiers).first, f);
3490 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
3491 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
3492
3493 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
3494 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, " = ");
3495 }
3496 if(init->initializer)
3497 OutputInitializer(init->initializer, f);
3498 }
3499
3500 static void OutputClassFunction(struct ClassFunction * func, struct __ecereNameSpace__ecere__com__Instance * f);
3501
3502 static void OutputMembersInit(struct MembersInit * init, struct __ecereNameSpace__ecere__com__Instance * f)
3503 {
3504 switch(init->type)
3505 {
3506 case 0:
3507 {
3508 struct MemberInit * member;
3509
3510 if(init->dataMembers)
3511 {
3512 for(member = (*init->dataMembers).first; member; member = member->next)
3513 {
3514 OutputMemberInit(member, f);
3515 if(member->next)
3516 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
3517 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
3518
3519 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
3520 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, ", ");
3521 }
3522 }
3523 break;
3524 }
3525 case 1:
3526 OutputClassFunction(init->function, f);
3527 break;
3528 }
3529 }
3530
3531 static void OutputInstance(struct Instantiation * inst, struct __ecereNameSpace__ecere__com__Instance * f)
3532 {
3533 if(inst->_class)
3534 OutputSpecifier(inst->_class, f, 0x0);
3535 if(inst->exp)
3536 {
3537 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
3538 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
3539
3540 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
3541 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, " ");
3542 OutputExpression(inst->exp, f);
3543 }
3544 if(inst->members && (*inst->members).count > 1)
3545 {
3546 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
3547 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
3548
3549 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
3550 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, "\n{\n");
3551 outputLine += 2;
3552 }
3553 else if(inst->members)
3554 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
3555 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
3556
3557 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
3558 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, " { ");
3559 else
3560 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
3561 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
3562
3563 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
3564 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, "{");
3565 if(inst->members)
3566 {
3567 struct MembersInit * init;
3568
3569 for(init = (*inst->members).first; init; init = init->next)
3570 {
3571 OutputMembersInit(init, f);
3572 if(init->type == 0 && init->next)
3573 {
3574 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
3575 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
3576
3577 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
3578 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, ";\n");
3579 outputLine++;
3580 }
3581 }
3582 }
3583 if(inst->members)
3584 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
3585 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
3586
3587 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
3588 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, " }");
3589 else
3590 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
3591 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
3592
3593 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
3594 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, "}");
3595 }
3596
3597 static void OutputClassFunction(struct ClassFunction * func, struct __ecereNameSpace__ecere__com__Instance * f)
3598 {
3599 if(func->specifiers)
3600 {
3601 struct Specifier * spec;
3602
3603 for(spec = (*func->specifiers).first; spec; spec = spec->next)
3604 {
3605 OutputSpecifier(spec, f, 0x0);
3606 if(spec->next)
3607 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
3608 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
3609
3610 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
3611 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, " ");
3612 }
3613 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
3614 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
3615
3616 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
3617 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, " ");
3618 }
3619 if(func->declarator)
3620 OutputDeclarator(func->declarator, f);
3621 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
3622 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
3623
3624 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
3625 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, "\n");
3626 outputLine++;
3627 if(func->declarations)
3628 {
3629 struct Declaration * decl;
3630
3631 for(decl = (*func->declarations).first; decl; decl = decl->next)
3632 {
3633 OutputDeclaration(decl, f);
3634 }
3635 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
3636 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
3637
3638 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
3639 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, "\n");
3640 outputLine++;
3641 }
3642 if(func->body)
3643 {
3644 OutputStatement(func->body, f);
3645 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
3646 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
3647
3648 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
3649 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, "\n");
3650 outputLine++;
3651 }
3652 else
3653 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
3654 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
3655
3656 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
3657 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, ";");
3658 }
3659
3660 static void OutputClassDef(struct ClassDef * def, struct __ecereNameSpace__ecere__com__Instance * f)
3661 {
3662 switch(def->type)
3663 {
3664 case 2:
3665 if(def->decl)
3666 {
3667 OutputDeclaration(def->decl, f);
3668 if(def->next && def->next->type != 2)
3669 {
3670 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
3671 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
3672
3673 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
3674 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, "\n");
3675 outputLine++;
3676 }
3677 }
3678 break;
3679 case 1:
3680 {
3681 struct MemberInit * init;
3682
3683 for(init = (*def->defProperties).first; init; init = init->next)
3684 {
3685 OutputMemberInit(init, f);
3686 if(init->next)
3687 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
3688 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
3689
3690 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
3691 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, ", ");
3692 }
3693 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
3694 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
3695
3696 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
3697 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, ";\n\n");
3698 outputLine += 2;
3699 break;
3700 }
3701 case 0:
3702 OutputClassFunction(def->function, f);
3703 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
3704 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
3705
3706 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
3707 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, "\n");
3708 outputLine++;
3709 break;
3710 }
3711 }
3712
3713 static void OutputClass(struct ClassDefinition * _class, struct __ecereNameSpace__ecere__com__Instance * f)
3714 {
3715 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
3716 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
3717
3718 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
3719 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, "class ");
3720 OutputSpecifier(_class->_class, f, 0x0);
3721 if(_class->baseSpecs)
3722 {
3723 struct Specifier * spec;
3724
3725 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
3726 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
3727
3728 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
3729 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, " : ");
3730 for(spec = (*_class->baseSpecs).first; spec; spec = spec->next)
3731 {
3732 OutputSpecifier(spec, f, 0x0);
3733 }
3734 }
3735 if(_class->definitions)
3736 {
3737 struct ClassDef * def;
3738
3739 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
3740 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
3741
3742 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
3743 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, "\n{\n");
3744 outputLine += 2;
3745 for(def = (*_class->definitions).first; def; def = def->next)
3746 {
3747 OutputClassDef(def, f);
3748 }
3749 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
3750 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
3751
3752 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
3753 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, "}\n");
3754 outputLine++;
3755 }
3756 else
3757 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
3758 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
3759
3760 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
3761 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, ";");
3762 }
3763
3764 void OutputTree(struct __ecereNameSpace__ecere__sys__OldList * ast, struct __ecereNameSpace__ecere__com__Instance * f)
3765 {
3766 struct External * external;
3767
3768 outputLine = 31;
3769 for(external = ast->first; external; external = external->next)
3770 {
3771 switch(external->type)
3772 {
3773 case 0:
3774 OutputFunction(external->function, f);
3775 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
3776 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
3777
3778 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
3779 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, "\n");
3780 outputLine++;
3781 break;
3782 case 1:
3783 OutputDeclaration(external->declaration, f);
3784 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
3785 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
3786
3787 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
3788 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, "\n");
3789 outputLine++;
3790 break;
3791 case 2:
3792 OutputClass(external->_class, f);
3793 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))__extension__ ({
3794 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
3795
3796 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
3797 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, "\n");
3798 outputLine++;
3799 break;
3800 }
3801 }
3802 }
3803
3804 extern char *  __ecereNameSpace__ecere__sys__TrimRSpaces(char *  string, char *  output);
3805
3806 extern void *  __ecereNameSpace__ecere__com__eInstance_New(struct __ecereNameSpace__ecere__com__Class * _class);
3807
3808 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__sys__TempFile;
3809
3810 int __ecereVMethodID___ecereNameSpace__ecere__sys__File_GetSize;
3811
3812 int __ecereVMethodID___ecereNameSpace__ecere__sys__File_Seek;
3813
3814 int __ecereVMethodID___ecereNameSpace__ecere__sys__File_Read;
3815
3816 extern void __ecereNameSpace__ecere__com__eInstance_DecRef(struct __ecereNameSpace__ecere__com__Instance * instance);
3817
3818 char * StringFromSpecDecl(struct __ecereNameSpace__ecere__sys__OldList * specs, struct Declarator * decl)
3819 {
3820 char * string;
3821 struct TypeName * typeName = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_TypeName);
3822 struct __ecereNameSpace__ecere__com__Instance * f = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass___ecereNameSpace__ecere__sys__TempFile);
3823 unsigned int size;
3824
3825 typeName->qualifiers = specs;
3826 typeName->declarator = decl;
3827 OutputTypeName(typeName, f, 0x1);
3828 ((typeName ? (__ecereClass_TypeName->Destructor ? __ecereClass_TypeName->Destructor(typeName) : 0, __ecereNameSpace__ecere__com__eSystem_Delete(typeName)) : 0), typeName = 0);
3829 size = ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *))__extension__ ({
3830 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
3831
3832 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
3833 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_GetSize])(f);
3834 string = __ecereNameSpace__ecere__com__eSystem_New(sizeof(char) * (size + 1));
3835 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, int pos, int mode))__extension__ ({
3836 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
3837
3838 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
3839 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Seek])(f, 0, 0);
3840 ((int (*)(struct __ecereNameSpace__ecere__com__Instance *, void *  buffer, unsigned int size, unsigned int count))__extension__ ({
3841 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
3842
3843 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
3844 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Read])(f, string, 1, (unsigned int)size);
3845 string[size] = '\0';
3846 __ecereNameSpace__ecere__sys__TrimRSpaces(string, string);
3847 (__ecereNameSpace__ecere__com__eInstance_DecRef(f), f = 0);
3848 return string;
3849 }
3850
3851 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__GlobalFunction;
3852
3853 struct __ecereNameSpace__ecere__com__GlobalFunction;
3854
3855 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);
3856
3857 void __ecereRegisterModule_output(struct __ecereNameSpace__ecere__com__Instance * module)
3858 {
3859 struct __ecereNameSpace__ecere__com__Class * class;
3860
3861 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("SetMemoryGuard", "void SetMemoryGuard(bool b)", SetMemoryGuard, module, 1);
3862 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("GetMemoryGuard", "bool GetMemoryGuard(void)", GetMemoryGuard, module, 1);
3863 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("OutputTypeName", "void OutputTypeName(TypeName type, ecere::sys::File f, bool typeName)", OutputTypeName, module, 1);
3864 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("OutputExpression", "void OutputExpression(Expression exp, ecere::sys::File f)", OutputExpression, module, 1);
3865 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("OutputTree", "void OutputTree(ecere::sys::OldList ast, ecere::sys::File f)", OutputTree, module, 1);
3866 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("StringFromSpecDecl", "char * StringFromSpecDecl(ecere::sys::OldList specs, Declarator decl)", StringFromSpecDecl, module, 1);
3867 }
3868
3869 void __ecereUnregisterModule_output(struct __ecereNameSpace__ecere__com__Instance * module)
3870 {
3871
3872 }
3873