compiler/libec: (#99) Avoiding anon struct/unions in favor of supporting GCC 4.4...
[sdk] / compiler / bootstrap / libec / bootstrap / freeAst.c
1 /* Code generated from eC source file: freeAst.ec */
2 #if defined(__GNUC__)
3 typedef long long int64;
4 typedef unsigned long long uint64;
5 #ifndef _WIN32
6 #define __declspec(x)
7 #endif
8 #elif defined(__TINYC__)
9 #include <stdarg.h>
10 #define __builtin_va_list va_list
11 #define __builtin_va_start va_start
12 #define __builtin_va_end va_end
13 #ifdef _WIN32
14 #define strcasecmp stricmp
15 #define strncasecmp strnicmp
16 #define __declspec(x) __attribute__((x))
17 #else
18 #define __declspec(x)
19 #endif
20 typedef long long int64;
21 typedef unsigned long long uint64;
22 #else
23 typedef __int64 int64;
24 typedef unsigned __int64 uint64;
25 #endif
26 #ifdef __BIG_ENDIAN__
27 #define __ENDIAN_PAD(x) (8 - (x))
28 #else
29 #define __ENDIAN_PAD(x) 0
30 #endif
31 #include <stdint.h>
32 #include <sys/types.h>
33
34 #if /*defined(_W64) || */(defined(__WORDSIZE) && __WORDSIZE == 8) || defined(__x86_64__)
35 #define _64BIT 1
36 #else
37 #define _64BIT 0
38 #endif
39
40 #define arch_PointerSize                  sizeof(void *)
41 #define structSize_Instance               (_64BIT ? 24 : 12)
42 #define structSize_Module                 (_64BIT ? 560 : 300)
43
44 extern void *  __ecereNameSpace__ecere__com__eSystem_New(unsigned int size);
45
46 extern void *  __ecereNameSpace__ecere__com__eSystem_New0(unsigned int size);
47
48 extern void *  __ecereNameSpace__ecere__com__eSystem_Renew(void *  memory, unsigned int size);
49
50 extern void *  __ecereNameSpace__ecere__com__eSystem_Renew0(void *  memory, unsigned int size);
51
52 extern void __ecereNameSpace__ecere__com__eSystem_Delete(void *  memory);
53
54 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__sys__BTNode;
55
56 struct __ecereNameSpace__ecere__sys__BTNode;
57
58 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__sys__BinaryTree;
59
60 struct __ecereNameSpace__ecere__sys__BinaryTree
61 {
62 struct __ecereNameSpace__ecere__sys__BTNode * root;
63 int count;
64 int (*  CompareKey)(struct __ecereNameSpace__ecere__sys__BinaryTree * tree, uintptr_t a, uintptr_t b);
65 void (*  FreeKey)(void *  key);
66 } __attribute__ ((gcc_struct));
67
68 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__sys__OldList;
69
70 struct __ecereNameSpace__ecere__sys__OldList
71 {
72 void *  first;
73 void *  last;
74 int count;
75 unsigned int offset;
76 unsigned int circ;
77 } __attribute__ ((gcc_struct));
78
79 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__Method;
80
81 struct __ecereNameSpace__ecere__com__Method
82 {
83 const char *  name;
84 struct __ecereNameSpace__ecere__com__Method * parent;
85 struct __ecereNameSpace__ecere__com__Method * left;
86 struct __ecereNameSpace__ecere__com__Method * right;
87 int depth;
88 int (*  function)();
89 int vid;
90 int type;
91 struct __ecereNameSpace__ecere__com__Class * _class;
92 void *  symbol;
93 const char *  dataTypeString;
94 struct Type * dataType;
95 int memberAccess;
96 } __attribute__ ((gcc_struct));
97
98 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__Property;
99
100 struct __ecereNameSpace__ecere__com__Property
101 {
102 struct __ecereNameSpace__ecere__com__Property * prev;
103 struct __ecereNameSpace__ecere__com__Property * next;
104 const char *  name;
105 unsigned int isProperty;
106 int memberAccess;
107 int id;
108 struct __ecereNameSpace__ecere__com__Class * _class;
109 const char *  dataTypeString;
110 struct __ecereNameSpace__ecere__com__Class * dataTypeClass;
111 struct Type * dataType;
112 void (*  Set)(void * , int);
113 int (*  Get)(void * );
114 unsigned int (*  IsSet)(void * );
115 void *  data;
116 void *  symbol;
117 int vid;
118 unsigned int conversion;
119 unsigned int watcherOffset;
120 const char *  category;
121 unsigned int compiled;
122 unsigned int selfWatchable;
123 unsigned int isWatchable;
124 } __attribute__ ((gcc_struct));
125
126 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_CodePosition;
127
128 struct CodePosition
129 {
130 int line;
131 int charPos;
132 int pos;
133 int included;
134 } __attribute__ ((gcc_struct));
135
136 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Location;
137
138 struct Location
139 {
140 struct CodePosition start;
141 struct CodePosition end;
142 } __attribute__ ((gcc_struct));
143
144 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Attrib;
145
146 struct Attrib
147 {
148 struct Location loc;
149 int type;
150 struct __ecereNameSpace__ecere__sys__OldList *  attribs;
151 } __attribute__ ((gcc_struct));
152
153 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_ExtDecl;
154
155 struct ExtDecl
156 {
157 struct Location loc;
158 int type;
159 union
160 {
161 char * s;
162 struct Attrib * attr;
163 } __attribute__ ((gcc_struct)) __anon1;
164 } __attribute__ ((gcc_struct));
165
166 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_ClassDefinition;
167
168 struct ClassDefinition
169 {
170 struct ClassDefinition * prev;
171 struct ClassDefinition * next;
172 struct Location loc;
173 struct Specifier * _class;
174 struct __ecereNameSpace__ecere__sys__OldList *  baseSpecs;
175 struct __ecereNameSpace__ecere__sys__OldList *  definitions;
176 struct Symbol * symbol;
177 struct Location blockStart;
178 struct Location nameLoc;
179 int endid;
180 int declMode;
181 unsigned int deleteWatchable;
182 } __attribute__ ((gcc_struct));
183
184 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Context;
185
186 struct Context
187 {
188 struct Context * parent;
189 struct __ecereNameSpace__ecere__sys__BinaryTree types;
190 struct __ecereNameSpace__ecere__sys__BinaryTree classes;
191 struct __ecereNameSpace__ecere__sys__BinaryTree symbols;
192 struct __ecereNameSpace__ecere__sys__BinaryTree structSymbols;
193 int nextID;
194 int simpleID;
195 struct __ecereNameSpace__ecere__sys__BinaryTree templateTypes;
196 struct ClassDefinition * classDef;
197 unsigned int templateTypesOnly;
198 unsigned int hasNameSpace;
199 } __attribute__ ((gcc_struct));
200
201 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Instantiation;
202
203 struct Instantiation
204 {
205 struct Instantiation * prev;
206 struct Instantiation * next;
207 struct Location loc;
208 struct Specifier * _class;
209 struct Expression * exp;
210 struct __ecereNameSpace__ecere__sys__OldList *  members;
211 struct Symbol * symbol;
212 unsigned int fullSet;
213 unsigned int isConstant;
214 unsigned char *  data;
215 struct Location nameLoc;
216 struct Location insideLoc;
217 unsigned int built;
218 } __attribute__ ((gcc_struct));
219
220 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Declaration;
221
222 struct Declaration
223 {
224 struct Declaration * prev;
225 struct Declaration * next;
226 struct Location loc;
227 int type;
228 union
229 {
230 struct
231 {
232 struct __ecereNameSpace__ecere__sys__OldList *  specifiers;
233 struct __ecereNameSpace__ecere__sys__OldList *  declarators;
234 } __attribute__ ((gcc_struct)) __anon1;
235 struct Instantiation * inst;
236 struct
237 {
238 struct Identifier * id;
239 struct Expression * exp;
240 } __attribute__ ((gcc_struct)) __anon2;
241 } __attribute__ ((gcc_struct)) __anon1;
242 struct Specifier * extStorage;
243 struct Symbol * symbol;
244 int declMode;
245 } __attribute__ ((gcc_struct));
246
247 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Statement;
248
249 struct Statement
250 {
251 struct Statement * prev;
252 struct Statement * next;
253 struct Location loc;
254 int type;
255 union
256 {
257 struct __ecereNameSpace__ecere__sys__OldList *  expressions;
258 struct
259 {
260 struct Identifier * id;
261 struct Statement * stmt;
262 } __attribute__ ((gcc_struct)) labeled;
263 struct
264 {
265 struct Expression * exp;
266 struct Statement * stmt;
267 } __attribute__ ((gcc_struct)) caseStmt;
268 struct
269 {
270 struct __ecereNameSpace__ecere__sys__OldList * declarations;
271 struct __ecereNameSpace__ecere__sys__OldList * statements;
272 struct Context * context;
273 unsigned int isSwitch;
274 } __attribute__ ((gcc_struct)) compound;
275 struct
276 {
277 struct __ecereNameSpace__ecere__sys__OldList * exp;
278 struct Statement * stmt;
279 struct Statement * elseStmt;
280 } __attribute__ ((gcc_struct)) ifStmt;
281 struct
282 {
283 struct __ecereNameSpace__ecere__sys__OldList * exp;
284 struct Statement * stmt;
285 } __attribute__ ((gcc_struct)) switchStmt;
286 struct
287 {
288 struct __ecereNameSpace__ecere__sys__OldList * exp;
289 struct Statement * stmt;
290 } __attribute__ ((gcc_struct)) whileStmt;
291 struct
292 {
293 struct __ecereNameSpace__ecere__sys__OldList * exp;
294 struct Statement * stmt;
295 } __attribute__ ((gcc_struct)) doWhile;
296 struct
297 {
298 struct Statement * init;
299 struct Statement * check;
300 struct __ecereNameSpace__ecere__sys__OldList * increment;
301 struct Statement * stmt;
302 } __attribute__ ((gcc_struct)) forStmt;
303 struct
304 {
305 struct Identifier * id;
306 } __attribute__ ((gcc_struct)) gotoStmt;
307 struct
308 {
309 struct Specifier * spec;
310 char * statements;
311 struct __ecereNameSpace__ecere__sys__OldList * inputFields;
312 struct __ecereNameSpace__ecere__sys__OldList * outputFields;
313 struct __ecereNameSpace__ecere__sys__OldList * clobberedFields;
314 } __attribute__ ((gcc_struct)) asmStmt;
315 struct
316 {
317 struct Expression * watcher;
318 struct Expression * object;
319 struct __ecereNameSpace__ecere__sys__OldList * watches;
320 } __attribute__ ((gcc_struct)) _watch;
321 struct
322 {
323 struct Identifier * id;
324 struct __ecereNameSpace__ecere__sys__OldList * exp;
325 struct __ecereNameSpace__ecere__sys__OldList * filter;
326 struct Statement * stmt;
327 } __attribute__ ((gcc_struct)) forEachStmt;
328 struct Declaration * decl;
329 } __attribute__ ((gcc_struct)) __anon1;
330 } __attribute__ ((gcc_struct));
331
332 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_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 } __attribute__ ((gcc_struct));
344
345 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Initializer;
346
347 struct Initializer
348 {
349 struct Initializer * prev;
350 struct Initializer * next;
351 struct Location loc;
352 int type;
353 union
354 {
355 struct Expression * exp;
356 struct __ecereNameSpace__ecere__sys__OldList *  list;
357 } __attribute__ ((gcc_struct)) __anon1;
358 unsigned int isConstant;
359 struct Identifier * id;
360 } __attribute__ ((gcc_struct));
361
362 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__DataValue;
363
364 struct __ecereNameSpace__ecere__com__DataValue
365 {
366 union
367 {
368 char c;
369 unsigned char uc;
370 short s;
371 unsigned short us;
372 int i;
373 unsigned int ui;
374 void *  p;
375 float f;
376 double d;
377 long long i64;
378 uint64 ui64;
379 } __attribute__ ((gcc_struct)) __anon1;
380 } __attribute__ ((gcc_struct));
381
382 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Expression;
383
384 struct Expression
385 {
386 struct Expression * prev;
387 struct Expression * next;
388 struct Location loc;
389 int type;
390 union
391 {
392 struct
393 {
394 char *  constant;
395 struct Identifier * identifier;
396 } __attribute__ ((gcc_struct)) __anon1;
397 struct Statement * compound;
398 struct Instantiation * instance;
399 struct
400 {
401 char *  string;
402 unsigned int intlString;
403 } __attribute__ ((gcc_struct)) __anon2;
404 struct __ecereNameSpace__ecere__sys__OldList *  list;
405 struct
406 {
407 struct __ecereNameSpace__ecere__sys__OldList * specifiers;
408 struct Declarator * decl;
409 } __attribute__ ((gcc_struct)) _classExp;
410 struct
411 {
412 struct Identifier * id;
413 } __attribute__ ((gcc_struct)) classData;
414 struct
415 {
416 struct Expression * exp;
417 struct __ecereNameSpace__ecere__sys__OldList * arguments;
418 struct Location argLoc;
419 } __attribute__ ((gcc_struct)) call;
420 struct
421 {
422 struct Expression * exp;
423 struct __ecereNameSpace__ecere__sys__OldList * index;
424 } __attribute__ ((gcc_struct)) index;
425 struct
426 {
427 struct Expression * exp;
428 struct Identifier * member;
429 int memberType;
430 unsigned int thisPtr;
431 } __attribute__ ((gcc_struct)) member;
432 struct
433 {
434 int op;
435 struct Expression * exp1;
436 struct Expression * exp2;
437 } __attribute__ ((gcc_struct)) op;
438 struct TypeName * typeName;
439 struct Specifier * _class;
440 struct
441 {
442 struct TypeName * typeName;
443 struct Expression * exp;
444 } __attribute__ ((gcc_struct)) cast;
445 struct
446 {
447 struct Expression * cond;
448 struct __ecereNameSpace__ecere__sys__OldList * exp;
449 struct Expression * elseExp;
450 } __attribute__ ((gcc_struct)) cond;
451 struct
452 {
453 struct TypeName * typeName;
454 struct Expression * size;
455 } __attribute__ ((gcc_struct)) _new;
456 struct
457 {
458 struct TypeName * typeName;
459 struct Expression * size;
460 struct Expression * exp;
461 } __attribute__ ((gcc_struct)) _renew;
462 struct
463 {
464 char * table;
465 struct Identifier * id;
466 } __attribute__ ((gcc_struct)) db;
467 struct
468 {
469 struct Expression * ds;
470 struct Expression * name;
471 } __attribute__ ((gcc_struct)) dbopen;
472 struct
473 {
474 struct TypeName * typeName;
475 struct Initializer * initializer;
476 } __attribute__ ((gcc_struct)) initializer;
477 struct
478 {
479 struct Expression * exp;
480 struct TypeName * typeName;
481 } __attribute__ ((gcc_struct)) vaArg;
482 } __attribute__ ((gcc_struct)) __anon1;
483 unsigned int debugValue;
484 struct __ecereNameSpace__ecere__com__DataValue val;
485 uint64 address;
486 unsigned int hasAddress;
487 struct Type * expType;
488 struct Type * destType;
489 unsigned int usage;
490 int tempCount;
491 unsigned int byReference;
492 unsigned int isConstant;
493 unsigned int addedThis;
494 unsigned int needCast;
495 unsigned int thisPtr;
496 unsigned int opDestType;
497 } __attribute__ ((gcc_struct));
498
499 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_TemplateDatatype;
500
501 struct TemplateDatatype
502 {
503 struct __ecereNameSpace__ecere__sys__OldList *  specifiers;
504 struct Declarator * decl;
505 } __attribute__ ((gcc_struct));
506
507 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_TemplateArgument;
508
509 struct TemplateArgument
510 {
511 struct TemplateArgument * prev;
512 struct TemplateArgument * next;
513 struct Location loc;
514 struct Identifier * name;
515 int type;
516 union
517 {
518 struct Expression * expression;
519 struct Identifier * identifier;
520 struct TemplateDatatype * templateDatatype;
521 } __attribute__ ((gcc_struct)) __anon1;
522 } __attribute__ ((gcc_struct));
523
524 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_TemplateParameter;
525
526 struct TemplateParameter
527 {
528 struct TemplateParameter * prev;
529 struct TemplateParameter * next;
530 struct Location loc;
531 int type;
532 struct Identifier * identifier;
533 union
534 {
535 struct TemplateDatatype * dataType;
536 int memberType;
537 } __attribute__ ((gcc_struct)) __anon1;
538 struct TemplateArgument * defaultArgument;
539 const char *  dataTypeString;
540 struct Type * baseType;
541 } __attribute__ ((gcc_struct));
542
543 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Specifier;
544
545 struct Specifier
546 {
547 struct Specifier * prev;
548 struct Specifier * next;
549 struct Location loc;
550 int type;
551 union
552 {
553 int specifier;
554 struct
555 {
556 struct ExtDecl * extDecl;
557 char *  name;
558 struct Symbol * symbol;
559 struct __ecereNameSpace__ecere__sys__OldList *  templateArgs;
560 } __attribute__ ((gcc_struct)) __anon1;
561 struct
562 {
563 struct Identifier * id;
564 struct __ecereNameSpace__ecere__sys__OldList *  list;
565 struct __ecereNameSpace__ecere__sys__OldList *  baseSpecs;
566 struct __ecereNameSpace__ecere__sys__OldList *  definitions;
567 unsigned int addNameSpace;
568 struct Context * ctx;
569 struct ExtDecl * extDeclStruct;
570 } __attribute__ ((gcc_struct)) __anon2;
571 struct Expression * expression;
572 struct Specifier * _class;
573 struct TemplateParameter * templateParameter;
574 } __attribute__ ((gcc_struct)) __anon1;
575 } __attribute__ ((gcc_struct));
576
577 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Identifier;
578
579 struct Identifier
580 {
581 struct Identifier * prev;
582 struct Identifier * next;
583 struct Location loc;
584 struct Symbol * classSym;
585 struct Specifier * _class;
586 char *  string;
587 struct Identifier * badID;
588 } __attribute__ ((gcc_struct));
589
590 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Pointer;
591
592 struct Pointer
593 {
594 struct Pointer * prev;
595 struct Pointer * next;
596 struct Location loc;
597 struct __ecereNameSpace__ecere__sys__OldList *  qualifiers;
598 struct Pointer * pointer;
599 } __attribute__ ((gcc_struct));
600
601 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Declarator;
602
603 struct Declarator
604 {
605 struct Declarator * prev;
606 struct Declarator * next;
607 struct Location loc;
608 int type;
609 struct Symbol * symbol;
610 struct Declarator * declarator;
611 union
612 {
613 struct Identifier * identifier;
614 struct
615 {
616 struct Expression * exp;
617 struct Expression * posExp;
618 struct Attrib * attrib;
619 } __attribute__ ((gcc_struct)) structDecl;
620 struct
621 {
622 struct Expression * exp;
623 struct Specifier * enumClass;
624 } __attribute__ ((gcc_struct)) array;
625 struct
626 {
627 struct __ecereNameSpace__ecere__sys__OldList * parameters;
628 } __attribute__ ((gcc_struct)) function;
629 struct
630 {
631 struct Pointer * pointer;
632 } __attribute__ ((gcc_struct)) pointer;
633 struct
634 {
635 struct ExtDecl * extended;
636 } __attribute__ ((gcc_struct)) extended;
637 } __attribute__ ((gcc_struct)) __anon1;
638 } __attribute__ ((gcc_struct));
639
640 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_FunctionDefinition;
641
642 struct FunctionDefinition
643 {
644 struct FunctionDefinition * prev;
645 struct FunctionDefinition * next;
646 struct Location loc;
647 struct __ecereNameSpace__ecere__sys__OldList *  specifiers;
648 struct Declarator * declarator;
649 struct __ecereNameSpace__ecere__sys__OldList *  declarations;
650 struct Statement * body;
651 struct __ecereNameSpace__ecere__com__Class * _class;
652 struct __ecereNameSpace__ecere__sys__OldList attached;
653 int declMode;
654 struct Type * type;
655 struct Symbol * propSet;
656 int tempCount;
657 unsigned int propertyNoThis;
658 } __attribute__ ((gcc_struct));
659
660 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_DBTableDef;
661
662 struct DBTableDef
663 {
664 char *  name;
665 struct Symbol * symbol;
666 struct __ecereNameSpace__ecere__sys__OldList *  definitions;
667 int declMode;
668 } __attribute__ ((gcc_struct));
669
670 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_External;
671
672 struct External
673 {
674 struct External * prev;
675 struct External * next;
676 struct Location loc;
677 int type;
678 struct Symbol * symbol;
679 union
680 {
681 struct FunctionDefinition * function;
682 struct ClassDefinition * _class;
683 struct Declaration * declaration;
684 char *  importString;
685 struct Identifier * id;
686 struct DBTableDef * table;
687 } __attribute__ ((gcc_struct)) __anon1;
688 int importType;
689 } __attribute__ ((gcc_struct));
690
691 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_ModuleImport;
692
693 struct ModuleImport
694 {
695 struct ModuleImport * prev;
696 struct ModuleImport * next;
697 char *  name;
698 struct __ecereNameSpace__ecere__sys__OldList classes;
699 struct __ecereNameSpace__ecere__sys__OldList functions;
700 int importType;
701 int importAccess;
702 } __attribute__ ((gcc_struct));
703
704 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_ClassImport;
705
706 struct ClassImport
707 {
708 struct ClassImport * prev;
709 struct ClassImport * next;
710 char *  name;
711 struct __ecereNameSpace__ecere__sys__OldList methods;
712 struct __ecereNameSpace__ecere__sys__OldList properties;
713 unsigned int itself;
714 int isRemote;
715 } __attribute__ ((gcc_struct));
716
717 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Symbol;
718
719 struct Symbol
720 {
721 char *  string;
722 struct Symbol * parent;
723 struct Symbol * left;
724 struct Symbol * right;
725 int depth;
726 struct Type * type;
727 union
728 {
729 struct __ecereNameSpace__ecere__com__Method * method;
730 struct __ecereNameSpace__ecere__com__Property * _property;
731 struct __ecereNameSpace__ecere__com__Class * registered;
732 } __attribute__ ((gcc_struct)) __anon1;
733 int id;
734 int idCode;
735 union
736 {
737 struct
738 {
739 struct External * pointerExternal;
740 struct External * structExternal;
741 } __attribute__ ((gcc_struct)) __anon1;
742 struct
743 {
744 struct External * externalGet;
745 struct External * externalSet;
746 struct External * externalPtr;
747 struct External * externalIsSet;
748 } __attribute__ ((gcc_struct)) __anon2;
749 struct
750 {
751 struct External * methodExternal;
752 struct External * methodCodeExternal;
753 } __attribute__ ((gcc_struct)) __anon3;
754 } __attribute__ ((gcc_struct)) __anon2;
755 unsigned int imported;
756 unsigned int declaredStructSym;
757 struct __ecereNameSpace__ecere__com__Class * _class;
758 unsigned int declaredStruct;
759 unsigned int needConstructor;
760 unsigned int needDestructor;
761 char *  constructorName;
762 char *  structName;
763 char *  className;
764 char *  destructorName;
765 struct ModuleImport * module;
766 struct ClassImport * _import;
767 struct Location nameLoc;
768 unsigned int isParam;
769 unsigned int isRemote;
770 unsigned int isStruct;
771 unsigned int fireWatchersDone;
772 int declaring;
773 unsigned int classData;
774 unsigned int isStatic;
775 char *  shortName;
776 struct __ecereNameSpace__ecere__sys__OldList *  templateParams;
777 struct __ecereNameSpace__ecere__sys__OldList templatedClasses;
778 struct Context * ctx;
779 int isIterator;
780 struct Expression * propCategory;
781 } __attribute__ ((gcc_struct));
782
783 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Type;
784
785 struct Type
786 {
787 struct Type * prev;
788 struct Type * next;
789 int refCount;
790 union
791 {
792 struct Symbol * _class;
793 struct
794 {
795 struct __ecereNameSpace__ecere__sys__OldList members;
796 char *  enumName;
797 } __attribute__ ((gcc_struct)) __anon1;
798 struct
799 {
800 struct Type * returnType;
801 struct __ecereNameSpace__ecere__sys__OldList params;
802 struct Symbol * thisClass;
803 unsigned int staticMethod;
804 struct TemplateParameter * thisClassTemplate;
805 } __attribute__ ((gcc_struct)) __anon2;
806 struct
807 {
808 struct __ecereNameSpace__ecere__com__Method * method;
809 struct __ecereNameSpace__ecere__com__Class * methodClass;
810 struct __ecereNameSpace__ecere__com__Class * usedClass;
811 } __attribute__ ((gcc_struct)) __anon3;
812 struct
813 {
814 struct Type * arrayType;
815 int arraySize;
816 struct Expression * arraySizeExp;
817 unsigned int freeExp;
818 struct Symbol * enumClass;
819 } __attribute__ ((gcc_struct)) __anon4;
820 struct Type * type;
821 struct TemplateParameter * templateParameter;
822 } __attribute__ ((gcc_struct)) __anon1;
823 int kind;
824 unsigned int size;
825 char *  name;
826 char *  typeName;
827 int classObjectType;
828 int alignment;
829 unsigned int offset;
830 int bitFieldCount;
831 int count;
832 unsigned int isSigned : 1;
833 unsigned int constant : 1;
834 unsigned int truth : 1;
835 unsigned int byReference : 1;
836 unsigned int extraParam : 1;
837 unsigned int directClassAccess : 1;
838 unsigned int computing : 1;
839 unsigned int keepCast : 1;
840 unsigned int passAsTemplate : 1;
841 unsigned int dllExport : 1;
842 unsigned int attrStdcall : 1;
843 unsigned int declaredWithStruct : 1;
844 unsigned int typedByReference : 1;
845 unsigned int casted : 1;
846 } __attribute__ ((gcc_struct));
847
848 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__Class;
849
850 struct __ecereNameSpace__ecere__com__Class
851 {
852 struct __ecereNameSpace__ecere__com__Class * prev;
853 struct __ecereNameSpace__ecere__com__Class * next;
854 const char *  name;
855 int offset;
856 int structSize;
857 int (* *  _vTbl)();
858 int vTblSize;
859 int (*  Constructor)(struct __ecereNameSpace__ecere__com__Instance *);
860 void (*  Destructor)(struct __ecereNameSpace__ecere__com__Instance *);
861 int offsetClass;
862 int sizeClass;
863 struct __ecereNameSpace__ecere__com__Class * base;
864 struct __ecereNameSpace__ecere__sys__BinaryTree methods;
865 struct __ecereNameSpace__ecere__sys__BinaryTree members;
866 struct __ecereNameSpace__ecere__sys__BinaryTree prop;
867 struct __ecereNameSpace__ecere__sys__OldList membersAndProperties;
868 struct __ecereNameSpace__ecere__sys__BinaryTree classProperties;
869 struct __ecereNameSpace__ecere__sys__OldList derivatives;
870 int memberID;
871 int startMemberID;
872 int type;
873 struct __ecereNameSpace__ecere__com__Instance * module;
874 struct __ecereNameSpace__ecere__com__NameSpace *  nameSpace;
875 const char *  dataTypeString;
876 struct Type * dataType;
877 int typeSize;
878 int defaultAlignment;
879 void (*  Initialize)();
880 int memberOffset;
881 struct __ecereNameSpace__ecere__sys__OldList selfWatchers;
882 const char *  designerClass;
883 unsigned int noExpansion;
884 const char *  defaultProperty;
885 unsigned int comRedefinition;
886 int count;
887 int isRemote;
888 unsigned int internalDecl;
889 void *  data;
890 unsigned int computeSize;
891 int structAlignment;
892 int destructionWatchOffset;
893 unsigned int fixed;
894 struct __ecereNameSpace__ecere__sys__OldList delayedCPValues;
895 int inheritanceAccess;
896 const char *  fullName;
897 void *  symbol;
898 struct __ecereNameSpace__ecere__sys__OldList conversions;
899 struct __ecereNameSpace__ecere__sys__OldList templateParams;
900 struct __ecereNameSpace__ecere__com__ClassTemplateArgument *  templateArgs;
901 struct __ecereNameSpace__ecere__com__Class * templateClass;
902 struct __ecereNameSpace__ecere__sys__OldList templatized;
903 int numParams;
904 unsigned int isInstanceClass;
905 unsigned int byValueSystemClass;
906 } __attribute__ ((gcc_struct));
907
908 extern long long __ecereNameSpace__ecere__com__eClass_GetProperty(struct __ecereNameSpace__ecere__com__Class * _class, const char *  name);
909
910 extern void __ecereNameSpace__ecere__com__eClass_SetProperty(struct __ecereNameSpace__ecere__com__Class * _class, const char *  name, long long value);
911
912 extern void __ecereNameSpace__ecere__com__eInstance_FireSelfWatchers(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property);
913
914 extern void __ecereNameSpace__ecere__com__eInstance_SetMethod(struct __ecereNameSpace__ecere__com__Instance * instance, const char *  name, void *  function);
915
916 extern void __ecereNameSpace__ecere__com__eInstance_IncRef(struct __ecereNameSpace__ecere__com__Instance * instance);
917
918 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);
919
920 extern void __ecereNameSpace__ecere__com__eInstance_Watch(void *  instance, struct __ecereNameSpace__ecere__com__Property * _property, void *  object, void (*  callback)(void * , void * ));
921
922 extern void __ecereNameSpace__ecere__com__eInstance_FireWatchers(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property);
923
924 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__Instance;
925
926 struct __ecereNameSpace__ecere__com__Instance
927 {
928 int (* *  _vTbl)();
929 struct __ecereNameSpace__ecere__com__Class * _class;
930 int _refCount;
931 } __attribute__ ((gcc_struct));
932
933 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__DataMember;
934
935 struct __ecereNameSpace__ecere__com__DataMember
936 {
937 struct __ecereNameSpace__ecere__com__DataMember * prev;
938 struct __ecereNameSpace__ecere__com__DataMember * next;
939 const char *  name;
940 unsigned int isProperty;
941 int memberAccess;
942 int id;
943 struct __ecereNameSpace__ecere__com__Class * _class;
944 const char *  dataTypeString;
945 struct __ecereNameSpace__ecere__com__Class * dataTypeClass;
946 struct Type * dataType;
947 int type;
948 int offset;
949 int memberID;
950 struct __ecereNameSpace__ecere__sys__OldList members;
951 struct __ecereNameSpace__ecere__sys__BinaryTree membersAlpha;
952 int memberOffset;
953 int structAlignment;
954 } __attribute__ ((gcc_struct));
955
956 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__SerialBuffer;
957
958 struct __ecereNameSpace__ecere__com__SerialBuffer
959 {
960 unsigned char *  _buffer;
961 unsigned int count;
962 unsigned int _size;
963 unsigned int pos;
964 } __attribute__ ((gcc_struct));
965
966 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__ClassTemplateArgument;
967
968 struct __ecereNameSpace__ecere__com__ClassTemplateArgument
969 {
970 union
971 {
972 struct
973 {
974 const char *  dataTypeString;
975 struct __ecereNameSpace__ecere__com__Class * dataTypeClass;
976 } __attribute__ ((gcc_struct)) __anon1;
977 struct __ecereNameSpace__ecere__com__DataValue expression;
978 struct
979 {
980 const char *  memberString;
981 union
982 {
983 struct __ecereNameSpace__ecere__com__DataMember * member;
984 struct __ecereNameSpace__ecere__com__Property * prop;
985 struct __ecereNameSpace__ecere__com__Method * method;
986 } __attribute__ ((gcc_struct)) __anon1;
987 } __attribute__ ((gcc_struct)) __anon2;
988 } __attribute__ ((gcc_struct)) __anon1;
989 } __attribute__ ((gcc_struct));
990
991 void __ecereMethod___ecereNameSpace__ecere__sys__OldList_Remove(struct __ecereNameSpace__ecere__sys__OldList * this, void *  item);
992
993 void FreeList(struct __ecereNameSpace__ecere__sys__OldList * list, void (* FreeFunction)(void *))
994 {
995 if(list != (((void *)0)))
996 {
997 struct __ecereNameSpace__ecere__sys__Item * item;
998
999 while((item = list->first))
1000 {
1001 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Remove(list, item);
1002 FreeFunction(item);
1003 }
1004 (__ecereNameSpace__ecere__com__eSystem_Delete(list), list = 0);
1005 }
1006 }
1007
1008 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__sys__NamedLink;
1009
1010 struct __ecereNameSpace__ecere__sys__NamedLink
1011 {
1012 struct __ecereNameSpace__ecere__sys__NamedLink * prev;
1013 struct __ecereNameSpace__ecere__sys__NamedLink * next;
1014 char *  name;
1015 void *  data;
1016 } __attribute__ ((gcc_struct));
1017
1018 void FreeExpression(struct Expression * exp);
1019
1020 void FreeType(struct Type * type)
1021 {
1022 if(type)
1023 {
1024 type->refCount--;
1025 if(type->refCount <= 0)
1026 {
1027 switch(type->kind)
1028 {
1029 case 15:
1030 {
1031 struct __ecereNameSpace__ecere__sys__NamedLink * member, * next;
1032
1033 if(type->__anon1.__anon1.enumName)
1034 (__ecereNameSpace__ecere__com__eSystem_Delete(type->__anon1.__anon1.enumName), type->__anon1.__anon1.enumName = 0);
1035 for(member = type->__anon1.__anon1.members.first; member; member = next)
1036 {
1037 next = member->next;
1038 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Remove(&type->__anon1.__anon1.members, member);
1039 (__ecereNameSpace__ecere__com__eSystem_Delete(member->name), member->name = 0);
1040 ((member ? (__ecereClass___ecereNameSpace__ecere__sys__NamedLink->Destructor ? __ecereClass___ecereNameSpace__ecere__sys__NamedLink->Destructor((void *)member) : 0, __ecereNameSpace__ecere__com__eSystem_Delete(member)) : 0), member = 0);
1041 }
1042 break;
1043 }
1044 case 9:
1045 case 10:
1046 {
1047 struct Type * member, * next;
1048
1049 (__ecereNameSpace__ecere__com__eSystem_Delete(type->__anon1.__anon1.enumName), type->__anon1.__anon1.enumName = 0);
1050 for(member = type->__anon1.__anon1.members.first; member; member = next)
1051 {
1052 next = member->next;
1053 if(member->refCount == 1)
1054 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Remove(&type->__anon1.__anon1.members, member);
1055 FreeType(member);
1056 }
1057 break;
1058 }
1059 case 11:
1060 {
1061 struct Type * param, * next;
1062
1063 if(type->__anon1.__anon2.returnType)
1064 FreeType(type->__anon1.__anon2.returnType);
1065 for(param = type->__anon1.__anon2.params.first; param; param = next)
1066 {
1067 next = param->next;
1068 FreeType(param);
1069 }
1070 break;
1071 }
1072 case 12:
1073 if(type->__anon1.__anon4.freeExp && type->__anon1.__anon4.arraySizeExp)
1074 FreeExpression(type->__anon1.__anon4.arraySizeExp);
1075 case 13:
1076 if(type->__anon1.type)
1077 FreeType(type->__anon1.type);
1078 break;
1079 }
1080 (__ecereNameSpace__ecere__com__eSystem_Delete(type->name), type->name = 0);
1081 (__ecereNameSpace__ecere__com__eSystem_Delete(type->typeName), type->typeName = 0);
1082 ((type ? (__ecereClass_Type->Destructor ? __ecereClass_Type->Destructor((void *)type) : 0, __ecereNameSpace__ecere__com__eSystem_Delete(type)) : 0), type = 0);
1083 }
1084 }
1085 }
1086
1087 void FreeTemplateParameter(struct TemplateParameter * param);
1088
1089 void FreeContext(struct Context * context);
1090
1091 void __ecereMethod___ecereNameSpace__ecere__sys__OldList_Delete(struct __ecereNameSpace__ecere__sys__OldList * this, void *  item);
1092
1093 void FreeSymbol(struct Symbol * symbol)
1094 {
1095 struct __ecereNameSpace__ecere__sys__OldLink * link;
1096
1097 if(symbol->propCategory)
1098 FreeExpression(symbol->propCategory);
1099 FreeType(symbol->type);
1100 while((link = symbol->templatedClasses.first))
1101 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Delete(&symbol->templatedClasses, link);
1102 (__ecereNameSpace__ecere__com__eSystem_Delete(symbol->string), symbol->string = 0);
1103 if(symbol->templateParams)
1104 FreeList(symbol->templateParams, FreeTemplateParameter);
1105 (__ecereNameSpace__ecere__com__eSystem_Delete(symbol->constructorName), symbol->constructorName = 0);
1106 (__ecereNameSpace__ecere__com__eSystem_Delete(symbol->structName), symbol->structName = 0);
1107 (__ecereNameSpace__ecere__com__eSystem_Delete(symbol->className), symbol->className = 0);
1108 (__ecereNameSpace__ecere__com__eSystem_Delete(symbol->destructorName), symbol->destructorName = 0);
1109 (__ecereNameSpace__ecere__com__eSystem_Delete(symbol->shortName), symbol->shortName = 0);
1110 if(symbol->ctx)
1111 {
1112 FreeContext(symbol->ctx);
1113 ((symbol->ctx ? (__ecereClass_Context->Destructor ? __ecereClass_Context->Destructor((void *)symbol->ctx) : 0, __ecereNameSpace__ecere__com__eSystem_Delete(symbol->ctx)) : 0), symbol->ctx = 0);
1114 }
1115 ((symbol ? (__ecereClass_Symbol->Destructor ? __ecereClass_Symbol->Destructor((void *)symbol) : 0, __ecereNameSpace__ecere__com__eSystem_Delete(symbol)) : 0), symbol = 0);
1116 }
1117
1118 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_MethodImport;
1119
1120 struct MethodImport
1121 {
1122 struct MethodImport * prev;
1123 struct MethodImport * next;
1124 char *  name;
1125 unsigned int isVirtual;
1126 } __attribute__ ((gcc_struct));
1127
1128 void FreeMethodImport(struct MethodImport * imp)
1129 {
1130 (__ecereNameSpace__ecere__com__eSystem_Delete(imp->name), imp->name = 0);
1131 }
1132
1133 void FreePropertyImport(struct MethodImport * imp)
1134 {
1135 (__ecereNameSpace__ecere__com__eSystem_Delete(imp->name), imp->name = 0);
1136 }
1137
1138 void __ecereMethod___ecereNameSpace__ecere__sys__OldList_Free(struct __ecereNameSpace__ecere__sys__OldList * this, void (*  freeFn)(void * ));
1139
1140 void FreeClassImport(struct ClassImport * imp)
1141 {
1142 (__ecereNameSpace__ecere__com__eSystem_Delete(imp->name), imp->name = 0);
1143 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Free(&imp->methods, FreeMethodImport);
1144 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Free(&imp->properties, FreePropertyImport);
1145 }
1146
1147 void FreeFunctionImport(struct ClassImport * imp)
1148 {
1149 (__ecereNameSpace__ecere__com__eSystem_Delete(imp->name), imp->name = 0);
1150 }
1151
1152 void FreeModuleImport(struct ModuleImport * imp)
1153 {
1154 (__ecereNameSpace__ecere__com__eSystem_Delete(imp->name), imp->name = 0);
1155 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Free(&imp->classes, FreeClassImport);
1156 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Free(&imp->functions, FreeFunctionImport);
1157 }
1158
1159 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Definition;
1160
1161 struct Definition
1162 {
1163 struct Definition * prev;
1164 struct Definition * next;
1165 char *  name;
1166 int type;
1167 } __attribute__ ((gcc_struct));
1168
1169 void FreeModuleDefine(struct Definition * def)
1170 {
1171 (__ecereNameSpace__ecere__com__eSystem_Delete(def->name), def->name = 0);
1172 }
1173
1174 void FreeExcludedSymbols(struct __ecereNameSpace__ecere__sys__OldList * excludedSymbols)
1175 {
1176 struct Symbol * symbol;
1177
1178 while((symbol = excludedSymbols->first))
1179 {
1180 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Remove(excludedSymbols, symbol);
1181 FreeSymbol(symbol);
1182 }
1183 }
1184
1185 void FreeIdentifier(struct Identifier * id);
1186
1187 void FreeTemplateDataType(struct TemplateDatatype * type);
1188
1189 void FreeTemplateArgument(struct TemplateArgument * arg)
1190 {
1191 switch(arg->type)
1192 {
1193 case 2:
1194 if(arg->__anon1.expression)
1195 FreeExpression(arg->__anon1.expression);
1196 break;
1197 case 1:
1198 if(arg->__anon1.identifier)
1199 FreeIdentifier(arg->__anon1.identifier);
1200 break;
1201 case 0:
1202 if(arg->__anon1.templateDatatype)
1203 FreeTemplateDataType(arg->__anon1.templateDatatype);
1204 break;
1205 }
1206 if(arg->name)
1207 FreeIdentifier(arg->name);
1208 ((arg ? (__ecereClass_TemplateArgument->Destructor ? __ecereClass_TemplateArgument->Destructor((void *)arg) : 0, __ecereNameSpace__ecere__com__eSystem_Delete(arg)) : 0), arg = 0);
1209 }
1210
1211 void FreeDeclarator(struct Declarator * decl);
1212
1213 void FreeSpecifier(struct Specifier * spec);
1214
1215 void FreeTemplateDataType(struct TemplateDatatype * type)
1216 {
1217 if(type->decl)
1218 FreeDeclarator(type->decl);
1219 if(type->specifiers)
1220 FreeList(type->specifiers, FreeSpecifier);
1221 ((type ? (__ecereClass_TemplateDatatype->Destructor ? __ecereClass_TemplateDatatype->Destructor((void *)type) : 0, __ecereNameSpace__ecere__com__eSystem_Delete(type)) : 0), type = 0);
1222 }
1223
1224 void FreeTemplateParameter(struct TemplateParameter * param)
1225 {
1226 if(param->identifier)
1227 {
1228 FreeIdentifier(param->identifier);
1229 }
1230 if(param->type == 0 || param->type == 2)
1231 {
1232 if(param->__anon1.dataType)
1233 FreeTemplateDataType(param->__anon1.dataType);
1234 }
1235 if(param->defaultArgument)
1236 FreeTemplateArgument(param->defaultArgument);
1237 if(param->baseType)
1238 FreeType(param->baseType);
1239 ((param ? (__ecereClass_TemplateParameter->Destructor ? __ecereClass_TemplateParameter->Destructor((void *)param) : 0, __ecereNameSpace__ecere__com__eSystem_Delete(param)) : 0), param = 0);
1240 }
1241
1242 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_TemplatedType;
1243
1244 void FreeTemplateType(struct TemplatedType * type)
1245 {
1246 ((type ? (__ecereClass_TemplatedType->Destructor ? __ecereClass_TemplatedType->Destructor((void *)type) : 0, __ecereClass___ecereNameSpace__ecere__sys__BTNode->Destructor ? __ecereClass___ecereNameSpace__ecere__sys__BTNode->Destructor((void *)type) : 0, __ecereNameSpace__ecere__com__eSystem_Delete(type)) : 0), type = 0);
1247 }
1248
1249 extern struct Context * curContext;
1250
1251 extern struct Context * globalContext;
1252
1253 void __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Remove(struct __ecereNameSpace__ecere__sys__BinaryTree * this, struct __ecereNameSpace__ecere__sys__BTNode * node);
1254
1255 void FreeContext(struct Context * context)
1256 {
1257 struct Symbol * symbol;
1258
1259 if(context == curContext)
1260 curContext = globalContext;
1261 while((symbol = (struct Symbol *)context->types.root))
1262 {
1263 __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Remove(&context->types, (struct __ecereNameSpace__ecere__sys__BTNode *)symbol);
1264 FreeSymbol(symbol);
1265 }
1266 while((symbol = (struct Symbol *)context->classes.root))
1267 {
1268 __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Remove(&context->classes, (struct __ecereNameSpace__ecere__sys__BTNode *)symbol);
1269 FreeSymbol(symbol);
1270 }
1271 while((symbol = (struct Symbol *)context->symbols.root))
1272 {
1273 __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Remove(&context->symbols, (struct __ecereNameSpace__ecere__sys__BTNode *)symbol);
1274 FreeSymbol(symbol);
1275 }
1276 while((symbol = (struct Symbol *)context->structSymbols.root))
1277 {
1278 __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Remove(&context->structSymbols, (struct __ecereNameSpace__ecere__sys__BTNode *)symbol);
1279 FreeSymbol(symbol);
1280 }
1281 while((symbol = (struct Symbol *)context->templateTypes.root))
1282 {
1283 __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Remove(&context->templateTypes, (struct __ecereNameSpace__ecere__sys__BTNode *)symbol);
1284 FreeTemplateType((struct TemplatedType *)symbol);
1285 }
1286 context->nextID = 0;
1287 context->simpleID = 0;
1288 context->parent = (((void *)0));
1289 }
1290
1291 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Enumerator;
1292
1293 struct Enumerator
1294 {
1295 struct Enumerator * prev;
1296 struct Enumerator * next;
1297 struct Location loc;
1298 struct Identifier * id;
1299 struct Expression * exp;
1300 } __attribute__ ((gcc_struct));
1301
1302 void FreeEnumerator(struct Enumerator * enumerator)
1303 {
1304 if(enumerator->id)
1305 FreeIdentifier(enumerator->id);
1306 if(enumerator->exp)
1307 FreeExpression(enumerator->exp);
1308 ((enumerator ? (__ecereClass_Enumerator->Destructor ? __ecereClass_Enumerator->Destructor((void *)enumerator) : 0, __ecereNameSpace__ecere__com__eSystem_Delete(enumerator)) : 0), enumerator = 0);
1309 }
1310
1311 void FreeSpecifierContents(struct Specifier * spec);
1312
1313 void FreeSpecifier(struct Specifier * spec)
1314 {
1315 if(spec)
1316 {
1317 FreeSpecifierContents(spec);
1318 ((spec ? (__ecereClass_Specifier->Destructor ? __ecereClass_Specifier->Destructor((void *)spec) : 0, __ecereNameSpace__ecere__com__eSystem_Delete(spec)) : 0), spec = 0);
1319 }
1320 }
1321
1322 void FreeExtDecl(struct ExtDecl * extDecl);
1323
1324 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_ClassFunction;
1325
1326 struct ClassFunction
1327 {
1328 struct ClassFunction * prev;
1329 struct ClassFunction * next;
1330 struct Location loc;
1331 struct __ecereNameSpace__ecere__sys__OldList *  specifiers;
1332 struct Declarator * declarator;
1333 struct __ecereNameSpace__ecere__sys__OldList *  declarations;
1334 struct Statement * body;
1335 struct __ecereNameSpace__ecere__com__Class * _class;
1336 struct __ecereNameSpace__ecere__sys__OldList attached;
1337 int declMode;
1338 struct Type * type;
1339 struct Symbol * propSet;
1340 unsigned int isVirtual;
1341 unsigned int isConstructor;
1342 unsigned int isDestructor;
1343 unsigned int dontMangle;
1344 int id;
1345 int idCode;
1346 } __attribute__ ((gcc_struct));
1347
1348 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_PropertyDef;
1349
1350 struct PropertyDef
1351 {
1352 struct PropertyDef * prev;
1353 struct PropertyDef * next;
1354 struct Location loc;
1355 struct __ecereNameSpace__ecere__sys__OldList *  specifiers;
1356 struct Declarator * declarator;
1357 struct Identifier * id;
1358 struct Statement * getStmt;
1359 struct Statement * setStmt;
1360 struct Statement * issetStmt;
1361 struct Symbol * symbol;
1362 struct Expression * category;
1363 struct
1364 {
1365 unsigned int conversion : 1;
1366 unsigned int isWatchable : 1;
1367 unsigned int isDBProp : 1;
1368 } __attribute__ ((gcc_struct)) __anon1;
1369 } __attribute__ ((gcc_struct));
1370
1371 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_PropertyWatch;
1372
1373 struct PropertyWatch
1374 {
1375 struct PropertyWatch * prev;
1376 struct PropertyWatch * next;
1377 struct Location loc;
1378 struct Statement * compound;
1379 struct __ecereNameSpace__ecere__sys__OldList *  properties;
1380 unsigned int deleteWatch;
1381 } __attribute__ ((gcc_struct));
1382
1383 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_ClassDef;
1384
1385 struct ClassDef
1386 {
1387 struct ClassDef * prev;
1388 struct ClassDef * next;
1389 struct Location loc;
1390 int type;
1391 union
1392 {
1393 struct Declaration * decl;
1394 struct ClassFunction * function;
1395 struct __ecereNameSpace__ecere__sys__OldList *  defProperties;
1396 struct PropertyDef * propertyDef;
1397 struct PropertyWatch * propertyWatch;
1398 char *  designer;
1399 struct Identifier * defaultProperty;
1400 struct
1401 {
1402 struct Identifier * id;
1403 struct Initializer * initializer;
1404 } __attribute__ ((gcc_struct)) __anon1;
1405 } __attribute__ ((gcc_struct)) __anon1;
1406 int memberAccess;
1407 void *  object;
1408 } __attribute__ ((gcc_struct));
1409
1410 void FreeClassDef(struct ClassDef * def);
1411
1412 void FreeSpecifierContents(struct Specifier * spec)
1413 {
1414 switch(spec->type)
1415 {
1416 case 1:
1417 (__ecereNameSpace__ecere__com__eSystem_Delete(spec->__anon1.__anon1.name), spec->__anon1.__anon1.name = 0);
1418 if(spec->__anon1.__anon1.templateArgs)
1419 {
1420 FreeList(spec->__anon1.__anon1.templateArgs, FreeTemplateArgument);
1421 spec->__anon1.__anon1.templateArgs = (((void *)0));
1422 }
1423 break;
1424 case 5:
1425 if(spec->__anon1.__anon1.extDecl)
1426 {
1427 FreeExtDecl(spec->__anon1.__anon1.extDecl);
1428 spec->__anon1.__anon1.extDecl = (((void *)0));
1429 }
1430 break;
1431 case 2:
1432 if(spec->__anon1.__anon2.baseSpecs)
1433 {
1434 FreeList(spec->__anon1.__anon2.baseSpecs, FreeSpecifier);
1435 spec->__anon1.__anon2.baseSpecs = (((void *)0));
1436 }
1437 if(spec->__anon1.__anon2.id)
1438 {
1439 FreeIdentifier(spec->__anon1.__anon2.id);
1440 spec->__anon1.__anon2.id = (((void *)0));
1441 }
1442 if(spec->__anon1.__anon2.list)
1443 {
1444 FreeList(spec->__anon1.__anon2.list, FreeEnumerator);
1445 spec->__anon1.__anon2.list = (((void *)0));
1446 }
1447 if(spec->__anon1.__anon2.definitions)
1448 {
1449 FreeList(spec->__anon1.__anon2.definitions, FreeClassDef);
1450 spec->__anon1.__anon2.definitions = (((void *)0));
1451 }
1452 break;
1453 case 3:
1454 case 4:
1455 if(spec->__anon1.__anon2.id)
1456 {
1457 FreeIdentifier(spec->__anon1.__anon2.id);
1458 spec->__anon1.__anon2.id = (((void *)0));
1459 }
1460 if(spec->__anon1.__anon2.definitions)
1461 {
1462 FreeList(spec->__anon1.__anon2.definitions, FreeClassDef);
1463 spec->__anon1.__anon2.definitions = (((void *)0));
1464 }
1465 if(spec->__anon1.__anon2.baseSpecs)
1466 {
1467 FreeList(spec->__anon1.__anon2.baseSpecs, FreeSpecifier);
1468 spec->__anon1.__anon2.baseSpecs = (((void *)0));
1469 }
1470 if(spec->__anon1.__anon2.extDeclStruct)
1471 {
1472 FreeExtDecl(spec->__anon1.__anon2.extDeclStruct);
1473 spec->__anon1.__anon2.extDeclStruct = (((void *)0));
1474 }
1475 if(spec->__anon1.__anon2.ctx)
1476 {
1477 FreeContext(spec->__anon1.__anon2.ctx);
1478 ((spec->__anon1.__anon2.ctx ? (__ecereClass_Context->Destructor ? __ecereClass_Context->Destructor((void *)spec->__anon1.__anon2.ctx) : 0, __ecereNameSpace__ecere__com__eSystem_Delete(spec->__anon1.__anon2.ctx)) : 0), spec->__anon1.__anon2.ctx = 0);
1479 }
1480 break;
1481 case 7:
1482 if(spec->__anon1._class)
1483 {
1484 FreeSpecifier(spec->__anon1._class);
1485 spec->__anon1._class = (((void *)0));
1486 }
1487 break;
1488 }
1489 }
1490
1491 void FreeIdentifier(struct Identifier * id)
1492 {
1493 if(id->badID)
1494 FreeIdentifier(id->badID);
1495 (__ecereNameSpace__ecere__com__eSystem_Delete(id->string), id->string = 0);
1496 if(id->_class)
1497 FreeSpecifier(id->_class);
1498 ((id ? (__ecereClass_Identifier->Destructor ? __ecereClass_Identifier->Destructor((void *)id) : 0, __ecereNameSpace__ecere__com__eSystem_Delete(id)) : 0), id = 0);
1499 }
1500
1501 void FreeTypeName(struct TypeName * typeName)
1502 {
1503 if(typeName->qualifiers)
1504 FreeList(typeName->qualifiers, FreeSpecifier);
1505 if(typeName->declarator)
1506 FreeDeclarator(typeName->declarator);
1507 if(typeName->bitCount)
1508 FreeExpression(typeName->bitCount);
1509 ((typeName ? (__ecereClass_TypeName->Destructor ? __ecereClass_TypeName->Destructor((void *)typeName) : 0, __ecereNameSpace__ecere__com__eSystem_Delete(typeName)) : 0), typeName = 0);
1510 }
1511
1512 static void _FreeExpression(struct Expression * exp, unsigned int freePointer);
1513
1514 void FreeExpContents(struct Expression * exp)
1515 {
1516 _FreeExpression(exp, 0x0);
1517 }
1518
1519 void FreeExpression(struct Expression * exp)
1520 {
1521 _FreeExpression(exp, 0x1);
1522 }
1523
1524 void FreeInstance(struct Instantiation * inst);
1525
1526 void FreeStatement(struct Statement * stmt);
1527
1528 void FreeInitializer(struct Initializer * initializer);
1529
1530 static void _FreeExpression(struct Expression * exp, unsigned int freePointer)
1531 {
1532 switch(exp->type)
1533 {
1534 case 13:
1535 case 26:
1536 FreeExpression(exp->__anon1._new.size);
1537 FreeTypeName(exp->__anon1._new.typeName);
1538 break;
1539 case 14:
1540 case 27:
1541 FreeExpression(exp->__anon1._renew.exp);
1542 FreeExpression(exp->__anon1._renew.size);
1543 FreeTypeName(exp->__anon1._renew.typeName);
1544 break;
1545 case 2:
1546 (__ecereNameSpace__ecere__com__eSystem_Delete(exp->__anon1.__anon1.constant), exp->__anon1.__anon1.constant = 0);
1547 break;
1548 case 0:
1549 if(exp->__anon1.__anon1.identifier)
1550 FreeIdentifier(exp->__anon1.__anon1.identifier);
1551 break;
1552 case 1:
1553 if(exp->__anon1.instance)
1554 {
1555 FreeInstance(exp->__anon1.instance);
1556 exp->__anon1.instance = (((void *)0));
1557 }
1558 break;
1559 case 3:
1560 (__ecereNameSpace__ecere__com__eSystem_Delete(exp->__anon1.__anon2.string), exp->__anon1.__anon2.string = 0);
1561 break;
1562 case 4:
1563 if(exp->__anon1.op.exp1)
1564 FreeExpression(exp->__anon1.op.exp1);
1565 if(exp->__anon1.op.exp2)
1566 FreeExpression(exp->__anon1.op.exp2);
1567 break;
1568 case 5:
1569 {
1570 FreeList(exp->__anon1.list, FreeExpression);
1571 break;
1572 }
1573 case 6:
1574 {
1575 if(exp->__anon1.index.exp)
1576 FreeExpression(exp->__anon1.index.exp);
1577 if(exp->__anon1.index.index)
1578 FreeList(exp->__anon1.index.index, FreeExpression);
1579 break;
1580 }
1581 case 7:
1582 {
1583 if(exp->__anon1.call.exp)
1584 FreeExpression(exp->__anon1.call.exp);
1585 if(exp->__anon1.call.arguments)
1586 FreeList(exp->__anon1.call.arguments, FreeExpression);
1587 break;
1588 }
1589 case 8:
1590 case 9:
1591 if(exp->__anon1.member.exp)
1592 FreeExpression(exp->__anon1.member.exp);
1593 if(exp->__anon1.member.member)
1594 FreeIdentifier(exp->__anon1.member.member);
1595 break;
1596 case 10:
1597 FreeTypeName(exp->__anon1._new.typeName);
1598 break;
1599 case 36:
1600 FreeTypeName(exp->__anon1._new.typeName);
1601 break;
1602 case 11:
1603 if(exp->__anon1.cast.exp)
1604 FreeExpression(exp->__anon1.cast.exp);
1605 FreeTypeName(exp->__anon1.cast.typeName);
1606 break;
1607 case 12:
1608 {
1609 if(exp->__anon1.cond.cond)
1610 FreeExpression(exp->__anon1.cond.cond);
1611 if(exp->__anon1.cond.exp)
1612 FreeList(exp->__anon1.cond.exp, FreeExpression);
1613 if(exp->__anon1.cond.elseExp)
1614 FreeExpression(exp->__anon1.cond.elseExp);
1615 break;
1616 }
1617 case 23:
1618 {
1619 if(exp->__anon1.compound)
1620 FreeStatement(exp->__anon1.compound);
1621 break;
1622 }
1623 case 32:
1624 {
1625 if(exp->__anon1.list)
1626 FreeList(exp->__anon1.list, FreeExpression);
1627 break;
1628 }
1629 case 33:
1630 {
1631 if(exp->__anon1.initializer.typeName)
1632 FreeTypeName(exp->__anon1.initializer.typeName);
1633 if(exp->__anon1.initializer.initializer)
1634 FreeInitializer(exp->__anon1.initializer.initializer);
1635 break;
1636 }
1637 case 16:
1638 break;
1639 case 24:
1640 if(exp->__anon1._classExp.specifiers)
1641 FreeList(exp->__anon1._classExp.specifiers, FreeSpecifier);
1642 if(exp->__anon1._classExp.decl)
1643 FreeDeclarator(exp->__anon1._classExp.decl);
1644 break;
1645 case 29:
1646 case 31:
1647 case 30:
1648 if(exp->__anon1.db.id)
1649 FreeIdentifier(exp->__anon1.db.id);
1650 (__ecereNameSpace__ecere__com__eSystem_Delete(exp->__anon1.db.table), exp->__anon1.db.table = 0);
1651 break;
1652 case 28:
1653 if(exp->__anon1.dbopen.ds)
1654 FreeExpression(exp->__anon1.dbopen.ds);
1655 if(exp->__anon1.dbopen.name)
1656 FreeExpression(exp->__anon1.dbopen.name);
1657 break;
1658 case 34:
1659 if(exp->__anon1.vaArg.exp)
1660 FreeExpression(exp->__anon1.vaArg.exp);
1661 if(exp->__anon1.vaArg.typeName)
1662 FreeTypeName(exp->__anon1.vaArg.typeName);
1663 break;
1664 case 35:
1665 if(exp->__anon1.list)
1666 FreeList(exp->__anon1.list, FreeExpression);
1667 break;
1668 case 15:
1669 if(exp->__anon1._class)
1670 FreeSpecifier(exp->__anon1._class);
1671 break;
1672 case 25:
1673 if(exp->__anon1.classData.id)
1674 FreeIdentifier(exp->__anon1.classData.id);
1675 break;
1676 case 18:
1677 if(exp->__anon1.__anon1.identifier)
1678 FreeIdentifier(exp->__anon1.__anon1.identifier);
1679 break;
1680 case 20:
1681 (__ecereNameSpace__ecere__com__eSystem_Delete(exp->__anon1.__anon1.constant), exp->__anon1.__anon1.constant = 0);
1682 break;
1683 case 37:
1684 case 19:
1685 if(exp->__anon1.member.exp)
1686 FreeExpression(exp->__anon1.member.exp);
1687 if(exp->__anon1.member.member)
1688 FreeIdentifier(exp->__anon1.member.member);
1689 break;
1690 case 38:
1691 if(exp->__anon1.call.exp)
1692 FreeExpression(exp->__anon1.call.exp);
1693 if(exp->__anon1.call.arguments)
1694 FreeList(exp->__anon1.call.arguments, FreeExpression);
1695 break;
1696 case 17:
1697 case 21:
1698 case 22:
1699 break;
1700 }
1701 if(freePointer)
1702 {
1703 if(exp->expType)
1704 FreeType(exp->expType);
1705 if(exp->destType)
1706 FreeType(exp->destType);
1707 ((exp ? (__ecereClass_Expression->Destructor ? __ecereClass_Expression->Destructor((void *)exp) : 0, __ecereNameSpace__ecere__com__eSystem_Delete(exp)) : 0), exp = 0);
1708 }
1709 }
1710
1711 void FreePointer(struct Pointer * pointer)
1712 {
1713 if(pointer->pointer)
1714 FreePointer(pointer->pointer);
1715 if(pointer->qualifiers)
1716 FreeList(pointer->qualifiers, FreeSpecifier);
1717 ((pointer ? (__ecereClass_Pointer->Destructor ? __ecereClass_Pointer->Destructor((void *)pointer) : 0, __ecereNameSpace__ecere__com__eSystem_Delete(pointer)) : 0), pointer = 0);
1718 }
1719
1720 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Attribute;
1721
1722 struct Attribute
1723 {
1724 struct Attribute * prev;
1725 struct Attribute * next;
1726 struct Location loc;
1727 char * attr;
1728 struct Expression * exp;
1729 } __attribute__ ((gcc_struct));
1730
1731 void FreeAttribute(struct Attribute * attr);
1732
1733 void FreeAttrib(struct Attrib * attr)
1734 {
1735 if(attr->attribs)
1736 FreeList(attr->attribs, FreeAttribute);
1737 ((attr ? (__ecereClass_Attrib->Destructor ? __ecereClass_Attrib->Destructor((void *)attr) : 0, __ecereNameSpace__ecere__com__eSystem_Delete(attr)) : 0), attr = 0);
1738 }
1739
1740 void FreeAttribute(struct Attribute * attr)
1741 {
1742 (__ecereNameSpace__ecere__com__eSystem_Delete(attr->attr), attr->attr = 0);
1743 if(attr->exp)
1744 FreeExpression(attr->exp);
1745 ((attr ? (__ecereClass_Attribute->Destructor ? __ecereClass_Attribute->Destructor((void *)attr) : 0, __ecereNameSpace__ecere__com__eSystem_Delete(attr)) : 0), attr = 0);
1746 }
1747
1748 void FreeExtDecl(struct ExtDecl * extDecl)
1749 {
1750 if(extDecl->type == 1 && extDecl->__anon1.attr)
1751 FreeAttrib(extDecl->__anon1.attr);
1752 else if(extDecl->type == 0)
1753 (__ecereNameSpace__ecere__com__eSystem_Delete(extDecl->__anon1.s), extDecl->__anon1.s = 0);
1754 ((extDecl ? (__ecereClass_ExtDecl->Destructor ? __ecereClass_ExtDecl->Destructor((void *)extDecl) : 0, __ecereNameSpace__ecere__com__eSystem_Delete(extDecl)) : 0), extDecl = 0);
1755 }
1756
1757 void FreeDeclarator(struct Declarator * decl)
1758 {
1759 if(decl->declarator)
1760 FreeDeclarator(decl->declarator);
1761 switch(decl->type)
1762 {
1763 case 0:
1764 if(decl->__anon1.structDecl.exp)
1765 FreeExpression(decl->__anon1.structDecl.exp);
1766 if(decl->__anon1.structDecl.posExp)
1767 FreeExpression(decl->__anon1.structDecl.posExp);
1768 if(decl->__anon1.structDecl.attrib)
1769 FreeAttrib(decl->__anon1.structDecl.attrib);
1770 break;
1771 case 1:
1772 FreeIdentifier(decl->__anon1.identifier);
1773 break;
1774 case 2:
1775 break;
1776 case 3:
1777 if(decl->__anon1.array.exp)
1778 FreeExpression(decl->__anon1.array.exp);
1779 if(decl->__anon1.array.enumClass)
1780 FreeSpecifier(decl->__anon1.array.enumClass);
1781 break;
1782 case 4:
1783 FreeList(decl->__anon1.function.parameters, FreeTypeName);
1784 break;
1785 case 5:
1786 if(decl->__anon1.pointer.pointer)
1787 FreePointer(decl->__anon1.pointer.pointer);
1788 break;
1789 case 6:
1790 case 7:
1791 if(decl->__anon1.extended.extended)
1792 FreeExtDecl(decl->__anon1.extended.extended);
1793 break;
1794 }
1795 ((decl ? (__ecereClass_Declarator->Destructor ? __ecereClass_Declarator->Destructor((void *)decl) : 0, __ecereNameSpace__ecere__com__eSystem_Delete(decl)) : 0), decl = 0);
1796 }
1797
1798 void FreePropertyWatch(struct PropertyWatch * watcher)
1799 {
1800 if(watcher->properties)
1801 FreeList(watcher->properties, FreeIdentifier);
1802 if(watcher->compound)
1803 FreeStatement(watcher->compound);
1804 ((watcher ? (__ecereClass_PropertyWatch->Destructor ? __ecereClass_PropertyWatch->Destructor((void *)watcher) : 0, __ecereNameSpace__ecere__com__eSystem_Delete(watcher)) : 0), watcher = 0);
1805 }
1806
1807 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_AsmField;
1808
1809 struct AsmField
1810 {
1811 struct AsmField * prev;
1812 struct AsmField * next;
1813 struct Location loc;
1814 char *  command;
1815 struct Expression * expression;
1816 struct Identifier * symbolic;
1817 } __attribute__ ((gcc_struct));
1818
1819 void FreeAsmField(struct AsmField * field)
1820 {
1821 if(field->expression)
1822 FreeExpression(field->expression);
1823 if(field->symbolic)
1824 FreeIdentifier(field->symbolic);
1825 (__ecereNameSpace__ecere__com__eSystem_Delete(field->command), field->command = 0);
1826 ((field ? (__ecereClass_AsmField->Destructor ? __ecereClass_AsmField->Destructor((void *)field) : 0, __ecereNameSpace__ecere__com__eSystem_Delete(field)) : 0), field = 0);
1827 }
1828
1829 void FreeDeclaration(struct Declaration * decl);
1830
1831 void FreeStatement(struct Statement * stmt)
1832 {
1833 switch(stmt->type)
1834 {
1835 case 13:
1836 {
1837 if(stmt->__anon1.asmStmt.spec)
1838 FreeSpecifier(stmt->__anon1.asmStmt.spec);
1839 if(stmt->__anon1.asmStmt.inputFields)
1840 FreeList(stmt->__anon1.asmStmt.inputFields, FreeAsmField);
1841 if(stmt->__anon1.asmStmt.outputFields)
1842 FreeList(stmt->__anon1.asmStmt.outputFields, FreeAsmField);
1843 if(stmt->__anon1.asmStmt.clobberedFields)
1844 FreeList(stmt->__anon1.asmStmt.clobberedFields, FreeAsmField);
1845 (__ecereNameSpace__ecere__com__eSystem_Delete(stmt->__anon1.asmStmt.statements), stmt->__anon1.asmStmt.statements = 0);
1846 break;
1847 }
1848 case 0:
1849 if(stmt->__anon1.labeled.stmt)
1850 FreeStatement(stmt->__anon1.labeled.stmt);
1851 break;
1852 case 1:
1853 if(stmt->__anon1.caseStmt.exp)
1854 FreeExpression(stmt->__anon1.caseStmt.exp);
1855 if(stmt->__anon1.caseStmt.stmt)
1856 FreeStatement(stmt->__anon1.caseStmt.stmt);
1857 break;
1858 case 14:
1859 if(stmt->__anon1.decl)
1860 FreeDeclaration(stmt->__anon1.decl);
1861 break;
1862 case 2:
1863 {
1864 if(stmt->__anon1.compound.declarations)
1865 FreeList(stmt->__anon1.compound.declarations, FreeDeclaration);
1866 if(stmt->__anon1.compound.statements)
1867 FreeList(stmt->__anon1.compound.statements, FreeStatement);
1868 if(stmt->__anon1.compound.context)
1869 {
1870 FreeContext(stmt->__anon1.compound.context);
1871 ((stmt->__anon1.compound.context ? (__ecereClass_Context->Destructor ? __ecereClass_Context->Destructor((void *)stmt->__anon1.compound.context) : 0, __ecereNameSpace__ecere__com__eSystem_Delete(stmt->__anon1.compound.context)) : 0), stmt->__anon1.compound.context = 0);
1872 }
1873 break;
1874 }
1875 case 3:
1876 {
1877 if(stmt->__anon1.expressions)
1878 FreeList(stmt->__anon1.expressions, FreeExpression);
1879 break;
1880 }
1881 case 4:
1882 {
1883 if(stmt->__anon1.ifStmt.exp)
1884 FreeList(stmt->__anon1.ifStmt.exp, FreeExpression);
1885 if(stmt->__anon1.ifStmt.stmt)
1886 FreeStatement(stmt->__anon1.ifStmt.stmt);
1887 if(stmt->__anon1.ifStmt.elseStmt)
1888 FreeStatement(stmt->__anon1.ifStmt.elseStmt);
1889 break;
1890 }
1891 case 5:
1892 {
1893 if(stmt->__anon1.switchStmt.exp)
1894 FreeList(stmt->__anon1.switchStmt.exp, FreeExpression);
1895 if(stmt->__anon1.switchStmt.stmt)
1896 FreeStatement(stmt->__anon1.switchStmt.stmt);
1897 break;
1898 }
1899 case 6:
1900 {
1901 if(stmt->__anon1.whileStmt.exp)
1902 FreeList(stmt->__anon1.whileStmt.exp, FreeExpression);
1903 if(stmt->__anon1.whileStmt.stmt)
1904 FreeStatement(stmt->__anon1.whileStmt.stmt);
1905 break;
1906 }
1907 case 7:
1908 {
1909 if(stmt->__anon1.doWhile.stmt)
1910 FreeStatement(stmt->__anon1.doWhile.stmt);
1911 if(stmt->__anon1.doWhile.exp)
1912 FreeList(stmt->__anon1.doWhile.exp, FreeExpression);
1913 break;
1914 }
1915 case 8:
1916 {
1917 if(stmt->__anon1.forStmt.init)
1918 FreeStatement(stmt->__anon1.forStmt.init);
1919 if(stmt->__anon1.forStmt.check)
1920 FreeStatement(stmt->__anon1.forStmt.check);
1921 if(stmt->__anon1.forStmt.increment)
1922 FreeList(stmt->__anon1.forStmt.increment, FreeExpression);
1923 if(stmt->__anon1.forStmt.stmt)
1924 FreeStatement(stmt->__anon1.forStmt.stmt);
1925 break;
1926 }
1927 case 18:
1928 {
1929 if(stmt->__anon1.forEachStmt.id)
1930 FreeIdentifier(stmt->__anon1.forEachStmt.id);
1931 if(stmt->__anon1.forEachStmt.exp)
1932 FreeList(stmt->__anon1.forEachStmt.exp, FreeExpression);
1933 if(stmt->__anon1.forEachStmt.filter)
1934 FreeList(stmt->__anon1.forEachStmt.filter, FreeExpression);
1935 if(stmt->__anon1.forEachStmt.stmt)
1936 FreeStatement(stmt->__anon1.forEachStmt.stmt);
1937 break;
1938 }
1939 case 9:
1940 break;
1941 case 10:
1942 break;
1943 case 11:
1944 break;
1945 case 12:
1946 if(stmt->__anon1.expressions)
1947 FreeList(stmt->__anon1.expressions, FreeExpression);
1948 break;
1949 case 17:
1950 case 15:
1951 case 16:
1952 {
1953 if(stmt->__anon1._watch.watcher)
1954 FreeExpression(stmt->__anon1._watch.watcher);
1955 if(stmt->__anon1._watch.object)
1956 FreeExpression(stmt->__anon1._watch.object);
1957 if(stmt->__anon1._watch.watches)
1958 FreeList(stmt->__anon1._watch.watches, (stmt->type == 17) ? FreePropertyWatch : FreeIdentifier);
1959 break;
1960 }
1961 }
1962 ((stmt ? (__ecereClass_Statement->Destructor ? __ecereClass_Statement->Destructor((void *)stmt) : 0, __ecereNameSpace__ecere__com__eSystem_Delete(stmt)) : 0), stmt = 0);
1963 }
1964
1965 void FreeInitializer(struct Initializer * initializer)
1966 {
1967 switch(initializer->type)
1968 {
1969 case 1:
1970 {
1971 FreeList(initializer->__anon1.list, FreeInitializer);
1972 break;
1973 }
1974 case 0:
1975 if(initializer->__anon1.exp)
1976 FreeExpression(initializer->__anon1.exp);
1977 if(initializer->id)
1978 FreeIdentifier(initializer->id);
1979 break;
1980 }
1981 ((initializer ? (__ecereClass_Initializer->Destructor ? __ecereClass_Initializer->Destructor((void *)initializer) : 0, __ecereNameSpace__ecere__com__eSystem_Delete(initializer)) : 0), initializer = 0);
1982 }
1983
1984 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_InitDeclarator;
1985
1986 struct InitDeclarator
1987 {
1988 struct InitDeclarator * prev;
1989 struct InitDeclarator * next;
1990 struct Location loc;
1991 struct Declarator * declarator;
1992 struct Initializer * initializer;
1993 } __attribute__ ((gcc_struct));
1994
1995 void FreeInitDeclarator(struct InitDeclarator * decl)
1996 {
1997 if(decl->declarator)
1998 FreeDeclarator(decl->declarator);
1999 if(decl->initializer)
2000 FreeInitializer(decl->initializer);
2001 ((decl ? (__ecereClass_InitDeclarator->Destructor ? __ecereClass_InitDeclarator->Destructor((void *)decl) : 0, __ecereNameSpace__ecere__com__eSystem_Delete(decl)) : 0), decl = 0);
2002 }
2003
2004 void FreeDeclaration(struct Declaration * decl)
2005 {
2006 if(decl->symbol && !decl->symbol->type)
2007 {
2008 }
2009 switch(decl->type)
2010 {
2011 case 0:
2012 {
2013 if(decl->__anon1.__anon1.specifiers)
2014 FreeList(decl->__anon1.__anon1.specifiers, FreeSpecifier);
2015 if(decl->__anon1.__anon1.declarators)
2016 FreeList(decl->__anon1.__anon1.declarators, FreeDeclarator);
2017 if(decl->extStorage)
2018 FreeSpecifier(decl->extStorage);
2019 break;
2020 }
2021 case 1:
2022 {
2023 if(decl->__anon1.__anon1.specifiers)
2024 FreeList(decl->__anon1.__anon1.specifiers, FreeSpecifier);
2025 if(decl->__anon1.__anon1.declarators)
2026 FreeList(decl->__anon1.__anon1.declarators, FreeInitDeclarator);
2027 break;
2028 }
2029 case 2:
2030 if(decl->__anon1.inst)
2031 FreeInstance(decl->__anon1.inst);
2032 break;
2033 case 3:
2034 {
2035 if(decl->__anon1.__anon2.exp)
2036 FreeExpression(decl->__anon1.__anon2.exp);
2037 if(decl->__anon1.__anon2.id)
2038 FreeIdentifier(decl->__anon1.__anon2.id);
2039 break;
2040 }
2041 }
2042 ((decl ? (__ecereClass_Declaration->Destructor ? __ecereClass_Declaration->Destructor((void *)decl) : 0, __ecereNameSpace__ecere__com__eSystem_Delete(decl)) : 0), decl = 0);
2043 }
2044
2045 void FreeFunction(struct FunctionDefinition * func)
2046 {
2047 if(func->body)
2048 FreeStatement(func->body);
2049 if(func->declarator)
2050 FreeDeclarator(func->declarator);
2051 if(func->specifiers)
2052 FreeList(func->specifiers, FreeSpecifier);
2053 if(func->declarations)
2054 FreeList(func->declarations, FreeDeclaration);
2055 if(func->type)
2056 FreeType(func->type);
2057 ((func ? (__ecereClass_FunctionDefinition->Destructor ? __ecereClass_FunctionDefinition->Destructor((void *)func) : 0, __ecereNameSpace__ecere__com__eSystem_Delete(func)) : 0), func = 0);
2058 }
2059
2060 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_MemberInit;
2061
2062 struct MemberInit
2063 {
2064 struct MemberInit * prev;
2065 struct MemberInit * next;
2066 struct Location loc;
2067 struct Location realLoc;
2068 struct __ecereNameSpace__ecere__sys__OldList *  identifiers;
2069 struct Initializer * initializer;
2070 unsigned int used;
2071 unsigned int variable;
2072 unsigned int takeOutExp;
2073 } __attribute__ ((gcc_struct));
2074
2075 void FreeMemberInit(struct MemberInit * init)
2076 {
2077 if(init->initializer)
2078 FreeInitializer(init->initializer);
2079 if(init->identifiers)
2080 FreeList(init->identifiers, FreeIdentifier);
2081 ((init ? (__ecereClass_MemberInit->Destructor ? __ecereClass_MemberInit->Destructor((void *)init) : 0, __ecereNameSpace__ecere__com__eSystem_Delete(init)) : 0), init = 0);
2082 }
2083
2084 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_MembersInit;
2085
2086 struct MembersInit
2087 {
2088 struct MembersInit * prev;
2089 struct MembersInit * next;
2090 struct Location loc;
2091 int type;
2092 union
2093 {
2094 struct __ecereNameSpace__ecere__sys__OldList *  dataMembers;
2095 struct ClassFunction * function;
2096 } __attribute__ ((gcc_struct)) __anon1;
2097 } __attribute__ ((gcc_struct));
2098
2099 void FreeClassFunction(struct ClassFunction * func);
2100
2101 void FreeMembersInit(struct MembersInit * init)
2102 {
2103 if(init->type == 0 && init->__anon1.dataMembers)
2104 FreeList(init->__anon1.dataMembers, FreeMemberInit);
2105 if(init->type == 1 && init->__anon1.function)
2106 {
2107 FreeClassFunction(init->__anon1.function);
2108 }
2109 ((init ? (__ecereClass_MembersInit->Destructor ? __ecereClass_MembersInit->Destructor((void *)init) : 0, __ecereNameSpace__ecere__com__eSystem_Delete(init)) : 0), init = 0);
2110 }
2111
2112 extern struct Symbol * FindClass(const char *  name);
2113
2114 extern void __ecereNameSpace__ecere__com__eInstance_DecRef(struct __ecereNameSpace__ecere__com__Instance * instance);
2115
2116 void FreeInstance(struct Instantiation * inst)
2117 {
2118 if(inst->members)
2119 {
2120 FreeList(inst->members, FreeMembersInit);
2121 }
2122 if(inst->exp)
2123 FreeExpression(inst->exp);
2124 if(inst->data)
2125 {
2126 struct Symbol * classSym = FindClass(inst->_class->__anon1.__anon1.name);
2127 struct __ecereNameSpace__ecere__com__Class * _class = classSym ? classSym->__anon1.registered : (((void *)0));
2128
2129 if(_class)
2130 {
2131 if(_class->type == 0)
2132 {
2133 struct __ecereNameSpace__ecere__com__Instance * instance = (struct __ecereNameSpace__ecere__com__Instance *)inst->data;
2134
2135 (__ecereNameSpace__ecere__com__eInstance_DecRef(instance), instance = 0);
2136 }
2137 else if(_class->type == 5)
2138 {
2139 if(_class->Destructor)
2140 _class->Destructor((struct __ecereNameSpace__ecere__com__Instance *)inst->data);
2141 (__ecereNameSpace__ecere__com__eSystem_Delete(inst->data), inst->data = 0);
2142 }
2143 else if(_class->type == 1)
2144 {
2145 (__ecereNameSpace__ecere__com__eSystem_Delete(inst->data), inst->data = 0);
2146 }
2147 }
2148 else
2149 {
2150 struct __ecereNameSpace__ecere__com__Instance * instance = (struct __ecereNameSpace__ecere__com__Instance *)inst->data;
2151
2152 (__ecereNameSpace__ecere__com__eInstance_DecRef(instance), instance = 0);
2153 }
2154 }
2155 if(inst->_class)
2156 FreeSpecifier(inst->_class);
2157 ((inst ? (__ecereClass_Instantiation->Destructor ? __ecereClass_Instantiation->Destructor((void *)inst) : 0, __ecereNameSpace__ecere__com__eSystem_Delete(inst)) : 0), inst = 0);
2158 }
2159
2160 void FreeClassFunction(struct ClassFunction * func)
2161 {
2162 if(func->declarator && func->declarator->symbol)
2163 {
2164 }
2165 if(func->type)
2166 FreeType(func->type);
2167 if(func->body)
2168 FreeStatement(func->body);
2169 if(func->declarator)
2170 FreeDeclarator(func->declarator);
2171 if(func->specifiers)
2172 FreeList(func->specifiers, FreeSpecifier);
2173 if(func->declarations)
2174 FreeList(func->declarations, FreeDeclaration);
2175 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Free(&func->attached, (((void *)0)));
2176 ((func ? (__ecereClass_ClassFunction->Destructor ? __ecereClass_ClassFunction->Destructor((void *)func) : 0, __ecereNameSpace__ecere__com__eSystem_Delete(func)) : 0), func = 0);
2177 }
2178
2179 void FreeProperty(struct PropertyDef * def)
2180 {
2181 if(def->specifiers)
2182 FreeList(def->specifiers, FreeSpecifier);
2183 if(def->declarator)
2184 FreeDeclarator(def->declarator);
2185 if(def->id)
2186 FreeIdentifier(def->id);
2187 if(def->getStmt)
2188 FreeStatement(def->getStmt);
2189 if(def->setStmt)
2190 FreeStatement(def->setStmt);
2191 if(def->issetStmt)
2192 FreeStatement(def->issetStmt);
2193 if(def->category)
2194 FreeExpression(def->category);
2195 if(def->symbol)
2196 {
2197 }
2198 ((def ? (__ecereClass_PropertyDef->Destructor ? __ecereClass_PropertyDef->Destructor((void *)def) : 0, __ecereNameSpace__ecere__com__eSystem_Delete(def)) : 0), def = 0);
2199 }
2200
2201 void FreeClassDef(struct ClassDef * def)
2202 {
2203 switch(def->type)
2204 {
2205 case 2:
2206 if(def->__anon1.decl)
2207 FreeDeclaration(def->__anon1.decl);
2208 break;
2209 case 1:
2210 {
2211 FreeList(def->__anon1.defProperties, FreeMemberInit);
2212 break;
2213 }
2214 case 0:
2215 if(def->__anon1.function)
2216 FreeClassFunction(def->__anon1.function);
2217 break;
2218 case 3:
2219 if(def->__anon1.propertyDef)
2220 FreeProperty(def->__anon1.propertyDef);
2221 break;
2222 case 10:
2223 if(def->__anon1.propertyDef)
2224 FreeProperty(def->__anon1.propertyDef);
2225 break;
2226 case 13:
2227 break;
2228 case 9:
2229 {
2230 if(def->__anon1.decl)
2231 FreeDeclaration(def->__anon1.decl);
2232 break;
2233 }
2234 case 5:
2235 {
2236 (__ecereNameSpace__ecere__com__eSystem_Delete(def->__anon1.designer), def->__anon1.designer = 0);
2237 break;
2238 }
2239 case 7:
2240 break;
2241 case 6:
2242 break;
2243 case 11:
2244 if(def->__anon1.__anon1.id)
2245 FreeIdentifier(def->__anon1.__anon1.id);
2246 if(def->__anon1.__anon1.initializer)
2247 FreeInitializer(def->__anon1.__anon1.initializer);
2248 break;
2249 case 8:
2250 {
2251 if(def->__anon1.defaultProperty)
2252 FreeIdentifier(def->__anon1.defaultProperty);
2253 break;
2254 }
2255 case 12:
2256 break;
2257 case 4:
2258 {
2259 if(def->__anon1.propertyWatch)
2260 FreePropertyWatch(def->__anon1.propertyWatch);
2261 break;
2262 }
2263 }
2264 ((def ? (__ecereClass_ClassDef->Destructor ? __ecereClass_ClassDef->Destructor((void *)def) : 0, __ecereNameSpace__ecere__com__eSystem_Delete(def)) : 0), def = 0);
2265 }
2266
2267 void FreeClass(struct ClassDefinition * _class)
2268 {
2269 if(_class->definitions)
2270 FreeList(_class->definitions, FreeClassDef);
2271 if(_class->_class)
2272 FreeSpecifier(_class->_class);
2273 if(_class->baseSpecs)
2274 FreeList(_class->baseSpecs, FreeSpecifier);
2275 ((_class ? (__ecereClass_ClassDefinition->Destructor ? __ecereClass_ClassDefinition->Destructor((void *)_class) : 0, __ecereNameSpace__ecere__com__eSystem_Delete(_class)) : 0), _class = 0);
2276 }
2277
2278 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_DBIndexItem;
2279
2280 struct DBIndexItem
2281 {
2282 struct DBIndexItem * prev;
2283 struct DBIndexItem * next;
2284 struct Identifier * id;
2285 int order;
2286 } __attribute__ ((gcc_struct));
2287
2288 void FreeDBIndexItem(struct DBIndexItem * item)
2289 {
2290 if(item->id)
2291 FreeIdentifier(item->id);
2292 ((item ? (__ecereClass_DBIndexItem->Destructor ? __ecereClass_DBIndexItem->Destructor((void *)item) : 0, __ecereNameSpace__ecere__com__eSystem_Delete(item)) : 0), item = 0);
2293 }
2294
2295 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_DBTableEntry;
2296
2297 struct DBTableEntry
2298 {
2299 struct DBTableEntry * prev;
2300 struct DBTableEntry * next;
2301 int type;
2302 struct Identifier * id;
2303 union
2304 {
2305 struct
2306 {
2307 struct TypeName * dataType;
2308 char *  name;
2309 } __attribute__ ((gcc_struct)) __anon1;
2310 struct __ecereNameSpace__ecere__sys__OldList *  items;
2311 } __attribute__ ((gcc_struct)) __anon1;
2312 } __attribute__ ((gcc_struct));
2313
2314 void FreeDBTableEntry(struct DBTableEntry * entry)
2315 {
2316 if(entry->id)
2317 FreeIdentifier(entry->id);
2318 switch(entry->type)
2319 {
2320 case 0:
2321 if(entry->__anon1.__anon1.dataType)
2322 FreeTypeName(entry->__anon1.__anon1.dataType);
2323 if(entry->__anon1.__anon1.name)
2324 (__ecereNameSpace__ecere__com__eSystem_Delete(entry->__anon1.__anon1.name), entry->__anon1.__anon1.name = 0);
2325 break;
2326 case 1:
2327 if(entry->__anon1.items)
2328 FreeList(entry->__anon1.items, FreeDBIndexItem);
2329 break;
2330 }
2331 ((entry ? (__ecereClass_DBTableEntry->Destructor ? __ecereClass_DBTableEntry->Destructor((void *)entry) : 0, __ecereNameSpace__ecere__com__eSystem_Delete(entry)) : 0), entry = 0);
2332 }
2333
2334 void FreeDBTable(struct DBTableDef * table)
2335 {
2336 if(table->definitions)
2337 FreeList(table->definitions, FreeDBTableEntry);
2338 if(table->name)
2339 (__ecereNameSpace__ecere__com__eSystem_Delete(table->name), table->name = 0);
2340 ((table ? (__ecereClass_DBTableDef->Destructor ? __ecereClass_DBTableDef->Destructor((void *)table) : 0, __ecereNameSpace__ecere__com__eSystem_Delete(table)) : 0), table = 0);
2341 }
2342
2343 void FreeExternal(struct External * external)
2344 {
2345 switch(external->type)
2346 {
2347 case 0:
2348 if(external->__anon1.function)
2349 FreeFunction(external->__anon1.function);
2350 break;
2351 case 1:
2352 if(external->__anon1.declaration)
2353 FreeDeclaration(external->__anon1.declaration);
2354 break;
2355 case 2:
2356 if(external->__anon1._class)
2357 FreeClass(external->__anon1._class);
2358 break;
2359 case 3:
2360 (__ecereNameSpace__ecere__com__eSystem_Delete(external->__anon1.importString), external->__anon1.importString = 0);
2361 break;
2362 case 4:
2363 FreeIdentifier(external->__anon1.id);
2364 break;
2365 case 5:
2366 if(external->__anon1.table)
2367 FreeDBTable(external->__anon1.table);
2368 break;
2369 }
2370 ((external ? (__ecereClass_External->Destructor ? __ecereClass_External->Destructor((void *)external) : 0, __ecereNameSpace__ecere__com__eSystem_Delete(external)) : 0), external = 0);
2371 }
2372
2373 void FreeASTTree(struct __ecereNameSpace__ecere__sys__OldList * ast)
2374 {
2375 if(ast != (((void *)0)))
2376 {
2377 struct External * external;
2378
2379 while((external = ast->first))
2380 {
2381 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Remove(ast, external);
2382 FreeExternal(external);
2383 }
2384 (__ecereNameSpace__ecere__com__eSystem_Delete(ast), ast = 0);
2385 }
2386 }
2387
2388 static void FreeDataMember(struct __ecereNameSpace__ecere__com__DataMember * parentMember)
2389 {
2390 struct __ecereNameSpace__ecere__com__DataMember * dataMember;
2391
2392 for(dataMember = parentMember->members.first; dataMember; dataMember = dataMember->next)
2393 {
2394 if(dataMember->type == 2 || dataMember->type == 1)
2395 FreeDataMember(dataMember);
2396 if(dataMember->dataType)
2397 {
2398 FreeType(dataMember->dataType);
2399 dataMember->dataType = (((void *)0));
2400 }
2401 }
2402 }
2403
2404 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__ClassProperty;
2405
2406 struct __ecereNameSpace__ecere__com__ClassProperty
2407 {
2408 const char *  name;
2409 struct __ecereNameSpace__ecere__com__ClassProperty * parent;
2410 struct __ecereNameSpace__ecere__com__ClassProperty * left;
2411 struct __ecereNameSpace__ecere__com__ClassProperty * right;
2412 int depth;
2413 void (*  Set)(struct __ecereNameSpace__ecere__com__Class *, long long);
2414 long long (*  Get)(struct __ecereNameSpace__ecere__com__Class *);
2415 const char *  dataTypeString;
2416 struct Type * dataType;
2417 unsigned int constant;
2418 } __attribute__ ((gcc_struct));
2419
2420 static void FreeClassProperties(struct __ecereNameSpace__ecere__com__ClassProperty * classProp)
2421 {
2422 if(classProp->left)
2423 FreeClassProperties(classProp->left);
2424 if(classProp->right)
2425 FreeClassProperties(classProp->right);
2426 if(classProp->dataType)
2427 {
2428 FreeType(classProp->dataType);
2429 classProp->dataType = (((void *)0));
2430 }
2431 }
2432
2433 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__NameSpace;
2434
2435 struct __ecereNameSpace__ecere__com__NameSpace
2436 {
2437 const char *  name;
2438 struct __ecereNameSpace__ecere__com__NameSpace *  btParent;
2439 struct __ecereNameSpace__ecere__com__NameSpace *  left;
2440 struct __ecereNameSpace__ecere__com__NameSpace *  right;
2441 int depth;
2442 struct __ecereNameSpace__ecere__com__NameSpace *  parent;
2443 struct __ecereNameSpace__ecere__sys__BinaryTree nameSpaces;
2444 struct __ecereNameSpace__ecere__sys__BinaryTree classes;
2445 struct __ecereNameSpace__ecere__sys__BinaryTree defines;
2446 struct __ecereNameSpace__ecere__sys__BinaryTree functions;
2447 } __attribute__ ((gcc_struct));
2448
2449 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__Module;
2450
2451 struct __ecereNameSpace__ecere__com__Module
2452 {
2453 struct __ecereNameSpace__ecere__com__Instance * application;
2454 struct __ecereNameSpace__ecere__sys__OldList classes;
2455 struct __ecereNameSpace__ecere__sys__OldList defines;
2456 struct __ecereNameSpace__ecere__sys__OldList functions;
2457 struct __ecereNameSpace__ecere__sys__OldList modules;
2458 struct __ecereNameSpace__ecere__com__Instance * prev;
2459 struct __ecereNameSpace__ecere__com__Instance * next;
2460 const char *  name;
2461 void *  library;
2462 void *  Unload;
2463 int importType;
2464 int origImportType;
2465 struct __ecereNameSpace__ecere__com__NameSpace privateNameSpace;
2466 struct __ecereNameSpace__ecere__com__NameSpace publicNameSpace;
2467 } __attribute__ ((gcc_struct));
2468
2469 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__ClassTemplateParameter;
2470
2471 struct __ecereNameSpace__ecere__com__ClassTemplateParameter
2472 {
2473 struct __ecereNameSpace__ecere__com__ClassTemplateParameter * prev;
2474 struct __ecereNameSpace__ecere__com__ClassTemplateParameter * next;
2475 const char *  name;
2476 int type;
2477 union
2478 {
2479 const char *  dataTypeString;
2480 int memberType;
2481 } __attribute__ ((gcc_struct)) __anon1;
2482 struct __ecereNameSpace__ecere__com__ClassTemplateArgument defaultArg;
2483 void *  param;
2484 } __attribute__ ((gcc_struct));
2485
2486 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__GlobalFunction;
2487
2488 struct __ecereNameSpace__ecere__com__GlobalFunction
2489 {
2490 struct __ecereNameSpace__ecere__com__GlobalFunction * prev;
2491 struct __ecereNameSpace__ecere__com__GlobalFunction * next;
2492 const char *  name;
2493 int (*  function)();
2494 struct __ecereNameSpace__ecere__com__Instance * module;
2495 struct __ecereNameSpace__ecere__com__NameSpace *  nameSpace;
2496 const char *  dataTypeString;
2497 struct Type * dataType;
2498 void *  symbol;
2499 } __attribute__ ((gcc_struct));
2500
2501 extern unsigned int inCompiler;
2502
2503 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__IteratorPointer;
2504
2505 struct __ecereNameSpace__ecere__com__IteratorPointer;
2506
2507 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__MapIterator;
2508
2509 struct __ecereNameSpace__ecere__com__MapIterator
2510 {
2511 struct __ecereNameSpace__ecere__com__Instance * container;
2512 struct __ecereNameSpace__ecere__com__IteratorPointer * pointer;
2513 } __attribute__ ((gcc_struct));
2514
2515 extern struct __ecereNameSpace__ecere__com__Instance * loadedModules;
2516
2517 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__Iterator;
2518
2519 struct __ecereNameSpace__ecere__com__Iterator
2520 {
2521 struct __ecereNameSpace__ecere__com__Instance * container;
2522 struct __ecereNameSpace__ecere__com__IteratorPointer * pointer;
2523 } __attribute__ ((gcc_struct));
2524
2525 extern void __ecereNameSpace__ecere__com__eModule_Unload(struct __ecereNameSpace__ecere__com__Instance * fromModule, struct __ecereNameSpace__ecere__com__Instance * module);
2526
2527 extern struct __ecereNameSpace__ecere__com__Instance * __thisModule;
2528
2529 struct __ecereNameSpace__ecere__sys__BTNode * __ecereProp___ecereNameSpace__ecere__sys__BinaryTree_Get_first(struct __ecereNameSpace__ecere__sys__BinaryTree * this);
2530
2531 extern struct __ecereNameSpace__ecere__com__Property ** __ecereProp___ecereNameSpace__ecere__sys__BinaryTree_first;
2532
2533 struct __ecereNameSpace__ecere__sys__BTNode * __ecereProp___ecereNameSpace__ecere__sys__BTNode_Get_next(struct __ecereNameSpace__ecere__sys__BTNode * this);
2534
2535 extern struct __ecereNameSpace__ecere__com__Property ** __ecereProp___ecereNameSpace__ecere__sys__BTNode_next;
2536
2537 struct __ecereNameSpace__ecere__com__Instance * __ecereProp___ecereNameSpace__ecere__com__MapIterator_Get_map(struct __ecereNameSpace__ecere__com__MapIterator * this);
2538
2539 void __ecereProp___ecereNameSpace__ecere__com__MapIterator_Set_map(struct __ecereNameSpace__ecere__com__MapIterator * this, struct __ecereNameSpace__ecere__com__Instance * value);
2540
2541 extern struct __ecereNameSpace__ecere__com__Property ** __ecereProp___ecereNameSpace__ecere__com__MapIterator_map;
2542
2543 unsigned int __ecereMethod___ecereNameSpace__ecere__com__Iterator_Next();
2544
2545 uint64 __ecereProp___ecereNameSpace__ecere__com__Iterator_Get_data(struct __ecereNameSpace__ecere__com__Iterator * this);
2546
2547 void __ecereProp___ecereNameSpace__ecere__com__Iterator_Set_data(struct __ecereNameSpace__ecere__com__Iterator * this, uint64 value);
2548
2549 extern struct __ecereNameSpace__ecere__com__Property ** __ecereProp___ecereNameSpace__ecere__com__Iterator_data;
2550
2551 int __ecereVMethodID___ecereNameSpace__ecere__com__Container_Remove;
2552
2553 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__List;
2554
2555 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__LinkList;
2556
2557 struct __ecereNameSpace__ecere__com__LinkList
2558 {
2559 void * first;
2560 void * last;
2561 int count;
2562 } __attribute__ ((gcc_struct));
2563
2564 unsigned int __ecereMethod___ecereNameSpace__ecere__com__Iterator_Index(struct __ecereNameSpace__ecere__com__Iterator * this, const uint64 index, unsigned int create);
2565
2566 int __ecereVMethodID___ecereNameSpace__ecere__com__Container_GetFirst;
2567
2568 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__Map;
2569
2570 void FreeModuleData(struct __ecereNameSpace__ecere__com__Instance * module)
2571 {
2572 struct __ecereNameSpace__ecere__com__Class * _class;
2573 struct __ecereNameSpace__ecere__com__GlobalFunction * function;
2574
2575 for(_class = ((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + structSize_Instance)))->classes.first; _class; _class = _class->next)
2576 {
2577 struct __ecereNameSpace__ecere__com__DataMember * dataMember;
2578 struct __ecereNameSpace__ecere__com__Method * method;
2579 struct __ecereNameSpace__ecere__com__ClassTemplateParameter * param;
2580
2581 if(_class->dataType)
2582 {
2583 FreeType(_class->dataType);
2584 _class->dataType = (((void *)0));
2585 }
2586 for(dataMember = _class->membersAndProperties.first; dataMember; dataMember = dataMember->next)
2587 {
2588 if(dataMember->isProperty)
2589 {
2590 struct __ecereNameSpace__ecere__com__Property * prop = (struct __ecereNameSpace__ecere__com__Property *)dataMember;
2591
2592 if(prop->symbol)
2593 {
2594 FreeSymbol(prop->symbol);
2595 }
2596 }
2597 else
2598 {
2599 if(dataMember->type == 2 || dataMember->type == 1)
2600 FreeDataMember(dataMember);
2601 }
2602 if(dataMember->dataType)
2603 {
2604 FreeType(dataMember->dataType);
2605 dataMember->dataType = (((void *)0));
2606 }
2607 }
2608 for(dataMember = _class->conversions.first; dataMember; dataMember = dataMember->next)
2609 {
2610 struct __ecereNameSpace__ecere__com__Property * prop = (struct __ecereNameSpace__ecere__com__Property *)dataMember;
2611
2612 if(prop->symbol)
2613 {
2614 FreeSymbol(prop->symbol);
2615 }
2616 if(prop->dataType)
2617 {
2618 FreeType(prop->dataType);
2619 prop->dataType = (((void *)0));
2620 }
2621 }
2622 if(__ecereProp___ecereNameSpace__ecere__sys__BinaryTree_Get_first(&_class->classProperties))
2623 FreeClassProperties((struct __ecereNameSpace__ecere__com__ClassProperty *)__ecereProp___ecereNameSpace__ecere__sys__BinaryTree_Get_first(&_class->classProperties));
2624 for(method = (struct __ecereNameSpace__ecere__com__Method *)__ecereProp___ecereNameSpace__ecere__sys__BinaryTree_Get_first(&_class->methods); method; method = (struct __ecereNameSpace__ecere__com__Method *)__ecereProp___ecereNameSpace__ecere__sys__BTNode_Get_next(((struct __ecereNameSpace__ecere__sys__BTNode *)method)))
2625 {
2626 if(method->dataType)
2627 {
2628 FreeType(method->dataType);
2629 method->dataType = (((void *)0));
2630 }
2631 if(method->symbol)
2632 {
2633 FreeSymbol(method->symbol);
2634 }
2635 }
2636 for(param = _class->templateParams.first; param; param = param->next)
2637 {
2638 if(param->param)
2639 {
2640 FreeTemplateParameter(param->param);
2641 param->param = (((void *)0));
2642 }
2643 }
2644 }
2645 for(function = ((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + structSize_Instance)))->functions.first; function; function = function->next)
2646 {
2647 if(function->dataType)
2648 FreeType(function->dataType);
2649 if(function->symbol)
2650 FreeSymbol(function->symbol);
2651 }
2652 if(!inCompiler)
2653 {
2654 struct __ecereNameSpace__ecere__com__MapIterator mapIt = (mapIt.container = (void *)0, mapIt.pointer = (void *)0, __ecereProp___ecereNameSpace__ecere__com__MapIterator_Set_map(&mapIt, loadedModules), mapIt);
2655
2656 while(__ecereMethod___ecereNameSpace__ecere__com__Iterator_Next(&mapIt))
2657 {
2658 struct __ecereNameSpace__ecere__com__Instance * list = ((struct __ecereNameSpace__ecere__com__Instance *)__ecereProp___ecereNameSpace__ecere__com__Iterator_Get_data(&mapIt));
2659 struct __ecereNameSpace__ecere__com__Iterator it =
2660 {
2661 list, 0
2662 };
2663 unsigned int found = 0x0;
2664
2665 while(__ecereMethod___ecereNameSpace__ecere__com__Iterator_Next(&it))
2666 {
2667 if(((struct __ecereNameSpace__ecere__com__Instance *)__ecereProp___ecereNameSpace__ecere__com__Iterator_Get_data(&it)) == (uint64)(module))
2668 {
2669 ((void (*)(struct __ecereNameSpace__ecere__com__Instance *, struct __ecereNameSpace__ecere__com__IteratorPointer * it))__extension__ ({
2670 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = list;
2671
2672 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__com__List->_vTbl;
2673 })[__ecereVMethodID___ecereNameSpace__ecere__com__Container_Remove])(list, it.pointer);
2674 found = 0x1;
2675 break;
2676 }
2677 }
2678 if(found)
2679 {
2680 if(((struct __ecereNameSpace__ecere__com__LinkList *)(((char *)list + structSize_Instance)))->count == 1)
2681 {
2682 struct __ecereNameSpace__ecere__com__Instance * mod = (__extension__ ({
2683 struct __ecereNameSpace__ecere__com__Iterator __internalIterator =
2684 {
2685 list, 0
2686 };
2687
2688 __ecereMethod___ecereNameSpace__ecere__com__Iterator_Index(&__internalIterator, (uint64)(((uint64)(0))), 0x0);
2689 ((struct __ecereNameSpace__ecere__com__Instance *)__ecereProp___ecereNameSpace__ecere__com__Iterator_Get_data(&__internalIterator));
2690 }));
2691
2692 ((void (*)(struct __ecereNameSpace__ecere__com__Instance *, struct __ecereNameSpace__ecere__com__IteratorPointer * it))__extension__ ({
2693 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = list;
2694
2695 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__com__List->_vTbl;
2696 })[__ecereVMethodID___ecereNameSpace__ecere__com__Container_Remove])(list, ((struct __ecereNameSpace__ecere__com__IteratorPointer * (*)(struct __ecereNameSpace__ecere__com__Instance *))__extension__ ({
2697 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = list;
2698
2699 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__com__List->_vTbl;
2700 })[__ecereVMethodID___ecereNameSpace__ecere__com__Container_GetFirst])(list));
2701 ((void (*)(struct __ecereNameSpace__ecere__com__Instance *, struct __ecereNameSpace__ecere__com__IteratorPointer * it))__extension__ ({
2702 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = loadedModules;
2703
2704 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__com__Map->_vTbl;
2705 })[__ecereVMethodID___ecereNameSpace__ecere__com__Container_Remove])(loadedModules, mapIt.pointer);
2706 (__ecereNameSpace__ecere__com__eInstance_DecRef(list), list = 0);
2707 __ecereNameSpace__ecere__com__eModule_Unload(((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + structSize_Instance)))->application, mod);
2708 }
2709 break;
2710 }
2711 }
2712 }
2713 }
2714
2715 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__Application;
2716
2717 struct __ecereNameSpace__ecere__com__Application
2718 {
2719 int argc;
2720 const char * *  argv;
2721 int exitCode;
2722 unsigned int isGUIApp;
2723 struct __ecereNameSpace__ecere__sys__OldList allModules;
2724 char *  parsedCommand;
2725 struct __ecereNameSpace__ecere__com__NameSpace systemNameSpace;
2726 } __attribute__ ((gcc_struct));
2727
2728 void FreeTypeData(struct __ecereNameSpace__ecere__com__Instance * privateModule)
2729 {
2730 struct __ecereNameSpace__ecere__com__Instance * m;
2731
2732 for(m = ((struct __ecereNameSpace__ecere__com__Application *)(((char *)((struct __ecereNameSpace__ecere__com__Module *)(((char *)privateModule + structSize_Instance)))->application + structSize_Module)))->allModules.first; m; m = ((struct __ecereNameSpace__ecere__com__Module *)(((char *)m + structSize_Instance)))->next)
2733 {
2734 FreeModuleData(m);
2735 }
2736 FreeModuleData(privateModule);
2737 }
2738
2739 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);
2740
2741 void __ecereRegisterModule_freeAst(struct __ecereNameSpace__ecere__com__Instance * module)
2742 {
2743 struct __ecereNameSpace__ecere__com__Class * class;
2744
2745 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("FreeList", "void FreeList(ecere::sys::OldList list, void (* FreeFunction)(void *))", FreeList, module, 2);
2746 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("FreeType", "void FreeType(Type type)", FreeType, module, 1);
2747 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("FreeSymbol", "void FreeSymbol(Symbol symbol)", FreeSymbol, module, 2);
2748 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("FreeMethodImport", "void FreeMethodImport(MethodImport imp)", FreeMethodImport, module, 2);
2749 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("FreePropertyImport", "void FreePropertyImport(MethodImport imp)", FreePropertyImport, module, 2);
2750 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("FreeClassImport", "void FreeClassImport(ClassImport imp)", FreeClassImport, module, 2);
2751 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("FreeFunctionImport", "void FreeFunctionImport(ClassImport imp)", FreeFunctionImport, module, 2);
2752 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("FreeModuleImport", "void FreeModuleImport(ModuleImport imp)", FreeModuleImport, module, 1);
2753 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("FreeModuleDefine", "void FreeModuleDefine(Definition def)", FreeModuleDefine, module, 1);
2754 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("FreeExcludedSymbols", "void FreeExcludedSymbols(ecere::sys::OldList excludedSymbols)", FreeExcludedSymbols, module, 1);
2755 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("FreeTemplateArgument", "void FreeTemplateArgument(TemplateArgument arg)", FreeTemplateArgument, module, 1);
2756 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("FreeTemplateDataType", "void FreeTemplateDataType(TemplateDatatype type)", FreeTemplateDataType, module, 1);
2757 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("FreeTemplateParameter", "void FreeTemplateParameter(TemplateParameter param)", FreeTemplateParameter, module, 1);
2758 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("FreeTemplateType", "void FreeTemplateType(TemplatedType type)", FreeTemplateType, module, 1);
2759 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("FreeContext", "void FreeContext(Context context)", FreeContext, module, 1);
2760 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("FreeEnumerator", "void FreeEnumerator(Enumerator enumerator)", FreeEnumerator, module, 2);
2761 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("FreeSpecifier", "void FreeSpecifier(Specifier spec)", FreeSpecifier, module, 2);
2762 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("FreeSpecifierContents", "void FreeSpecifierContents(Specifier spec)", FreeSpecifierContents, module, 2);
2763 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("FreeIdentifier", "void FreeIdentifier(Identifier id)", FreeIdentifier, module, 1);
2764 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("FreeTypeName", "void FreeTypeName(TypeName typeName)", FreeTypeName, module, 2);
2765 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("FreeExpContents", "void FreeExpContents(Expression exp)", FreeExpContents, module, 1);
2766 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("FreeExpression", "void FreeExpression(Expression exp)", FreeExpression, module, 1);
2767 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("FreePointer", "void FreePointer(Pointer pointer)", FreePointer, module, 2);
2768 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("FreeAttrib", "void FreeAttrib(Attrib attr)", FreeAttrib, module, 2);
2769 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("FreeAttribute", "void FreeAttribute(Attribute attr)", FreeAttribute, module, 2);
2770 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("FreeExtDecl", "void FreeExtDecl(ExtDecl extDecl)", FreeExtDecl, module, 2);
2771 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("FreeDeclarator", "void FreeDeclarator(Declarator decl)", FreeDeclarator, module, 2);
2772 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("FreePropertyWatch", "void FreePropertyWatch(PropertyWatch watcher)", FreePropertyWatch, module, 2);
2773 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("FreeAsmField", "void FreeAsmField(AsmField field)", FreeAsmField, module, 2);
2774 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("FreeStatement", "void FreeStatement(Statement stmt)", FreeStatement, module, 2);
2775 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("FreeInitializer", "void FreeInitializer(Initializer initializer)", FreeInitializer, module, 2);
2776 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("FreeInitDeclarator", "void FreeInitDeclarator(InitDeclarator decl)", FreeInitDeclarator, module, 2);
2777 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("FreeDeclaration", "void FreeDeclaration(Declaration decl)", FreeDeclaration, module, 2);
2778 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("FreeFunction", "void FreeFunction(FunctionDefinition func)", FreeFunction, module, 2);
2779 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("FreeMemberInit", "void FreeMemberInit(MemberInit init)", FreeMemberInit, module, 2);
2780 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("FreeMembersInit", "void FreeMembersInit(MembersInit init)", FreeMembersInit, module, 2);
2781 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("FreeInstance", "void FreeInstance(Instantiation inst)", FreeInstance, module, 1);
2782 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("FreeClassFunction", "void FreeClassFunction(ClassFunction func)", FreeClassFunction, module, 1);
2783 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("FreeProperty", "void FreeProperty(PropertyDef def)", FreeProperty, module, 2);
2784 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("FreeClassDef", "void FreeClassDef(ClassDef def)", FreeClassDef, module, 2);
2785 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("FreeClass", "void FreeClass(ClassDefinition _class)", FreeClass, module, 2);
2786 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("FreeDBIndexItem", "void FreeDBIndexItem(DBIndexItem item)", FreeDBIndexItem, module, 2);
2787 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("FreeDBTableEntry", "void FreeDBTableEntry(DBTableEntry entry)", FreeDBTableEntry, module, 2);
2788 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("FreeDBTable", "void FreeDBTable(DBTableDef table)", FreeDBTable, module, 2);
2789 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("FreeExternal", "void FreeExternal(External external)", FreeExternal, module, 2);
2790 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("FreeASTTree", "void FreeASTTree(ecere::sys::OldList ast)", FreeASTTree, module, 1);
2791 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("FreeModuleData", "void FreeModuleData(ecere::com::Module module)", FreeModuleData, module, 2);
2792 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("FreeTypeData", "void FreeTypeData(ecere::com::Module privateModule)", FreeTypeData, module, 1);
2793 }
2794
2795 void __ecereUnregisterModule_freeAst(struct __ecereNameSpace__ecere__com__Instance * module)
2796 {
2797
2798 }
2799