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