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