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