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