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