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