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