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