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