1 /* Code generated from eC source file: pass16.ec */
3 typedef long long int64;
4 typedef unsigned long long uint64;
8 #elif defined(__TINYC__)
10 #define __builtin_va_list va_list
11 #define __builtin_va_start va_start
12 #define __builtin_va_end va_end
14 #define strcasecmp stricmp
15 #define strncasecmp strnicmp
16 #define __declspec(x) __attribute__((x))
20 typedef long long int64;
21 typedef unsigned long long uint64;
23 typedef __int64 int64;
24 typedef unsigned __int64 uint64;
27 #define __ENDIAN_PAD(x) (8 - (x))
29 #define __ENDIAN_PAD(x) 0
32 #include <sys/types.h>
33 extern void * __ecereNameSpace__ecere__com__eSystem_New(unsigned int size);
35 extern void * __ecereNameSpace__ecere__com__eSystem_New0(unsigned int size);
37 extern void * __ecereNameSpace__ecere__com__eSystem_Renew(void * memory, unsigned int size);
39 extern void * __ecereNameSpace__ecere__com__eSystem_Renew0(void * memory, unsigned int size);
41 extern void __ecereNameSpace__ecere__com__eSystem_Delete(void * memory);
43 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__sys__BTNode;
45 struct __ecereNameSpace__ecere__sys__BTNode;
47 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__sys__BinaryTree;
49 struct __ecereNameSpace__ecere__sys__BinaryTree
51 struct __ecereNameSpace__ecere__sys__BTNode * root;
53 int (* CompareKey)(struct __ecereNameSpace__ecere__sys__BinaryTree * tree, uintptr_t a, uintptr_t b);
54 void (* FreeKey)(void * key);
55 } __attribute__ ((gcc_struct));
57 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__sys__OldList;
59 struct __ecereNameSpace__ecere__sys__OldList
66 } __attribute__ ((gcc_struct));
68 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__Method;
70 struct __ecereNameSpace__ecere__com__Method
73 struct __ecereNameSpace__ecere__com__Method * parent;
74 struct __ecereNameSpace__ecere__com__Method * left;
75 struct __ecereNameSpace__ecere__com__Method * right;
80 struct __ecereNameSpace__ecere__com__Class * _class;
82 const char * dataTypeString;
83 struct Type * dataType;
85 } __attribute__ ((gcc_struct));
87 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__Property;
89 struct __ecereNameSpace__ecere__com__Property
91 struct __ecereNameSpace__ecere__com__Property * prev;
92 struct __ecereNameSpace__ecere__com__Property * next;
94 unsigned int isProperty;
97 struct __ecereNameSpace__ecere__com__Class * _class;
98 const char * dataTypeString;
99 struct __ecereNameSpace__ecere__com__Class * dataTypeClass;
100 struct Type * dataType;
101 void (* Set)(void * , int);
102 int (* Get)(void * );
103 unsigned int (* IsSet)(void * );
107 unsigned int conversion;
108 unsigned int watcherOffset;
109 const char * category;
110 unsigned int compiled;
111 unsigned int selfWatchable;
112 unsigned int isWatchable;
113 } __attribute__ ((gcc_struct));
115 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_CodePosition;
123 } __attribute__ ((gcc_struct));
125 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Location;
129 struct CodePosition start;
130 struct CodePosition end;
131 } __attribute__ ((gcc_struct));
133 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Attrib;
137 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_ExtDecl;
141 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_ClassDefinition;
143 struct ClassDefinition
145 struct ClassDefinition * prev;
146 struct ClassDefinition * next;
148 struct Specifier * _class;
149 struct __ecereNameSpace__ecere__sys__OldList * baseSpecs;
150 struct __ecereNameSpace__ecere__sys__OldList * definitions;
151 struct Symbol * symbol;
152 struct Location blockStart;
153 struct Location nameLoc;
156 unsigned int deleteWatchable;
157 } __attribute__ ((gcc_struct));
159 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Context;
163 struct Context * parent;
164 struct __ecereNameSpace__ecere__sys__BinaryTree types;
165 struct __ecereNameSpace__ecere__sys__BinaryTree classes;
166 struct __ecereNameSpace__ecere__sys__BinaryTree symbols;
167 struct __ecereNameSpace__ecere__sys__BinaryTree structSymbols;
170 struct __ecereNameSpace__ecere__sys__BinaryTree templateTypes;
171 struct ClassDefinition * classDef;
172 unsigned int templateTypesOnly;
173 unsigned int hasNameSpace;
174 } __attribute__ ((gcc_struct));
176 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Instantiation;
180 struct Instantiation * prev;
181 struct Instantiation * next;
183 struct Specifier * _class;
184 struct Expression * exp;
185 struct __ecereNameSpace__ecere__sys__OldList * members;
186 struct Symbol * symbol;
187 unsigned int fullSet;
188 unsigned int isConstant;
189 unsigned char * data;
190 struct Location nameLoc;
191 struct Location insideLoc;
193 } __attribute__ ((gcc_struct));
195 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Declaration;
199 struct Declaration * prev;
200 struct Declaration * next;
207 struct __ecereNameSpace__ecere__sys__OldList * specifiers;
208 struct __ecereNameSpace__ecere__sys__OldList * declarators;
209 } __attribute__ ((gcc_struct));
210 struct Instantiation * inst;
213 struct Identifier * id;
214 struct Expression * exp;
215 } __attribute__ ((gcc_struct));
216 } __attribute__ ((gcc_struct));
217 struct Specifier * extStorage;
218 struct Symbol * symbol;
220 } __attribute__ ((gcc_struct));
222 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Statement;
226 struct Statement * prev;
227 struct Statement * next;
232 struct __ecereNameSpace__ecere__sys__OldList * expressions;
235 struct Identifier * id;
236 struct Statement * stmt;
237 } __attribute__ ((gcc_struct)) labeled;
240 struct Expression * exp;
241 struct Statement * stmt;
242 } __attribute__ ((gcc_struct)) caseStmt;
245 struct __ecereNameSpace__ecere__sys__OldList * declarations;
246 struct __ecereNameSpace__ecere__sys__OldList * statements;
247 struct Context * context;
248 unsigned int isSwitch;
249 } __attribute__ ((gcc_struct)) compound;
252 struct __ecereNameSpace__ecere__sys__OldList * exp;
253 struct Statement * stmt;
254 struct Statement * elseStmt;
255 } __attribute__ ((gcc_struct)) ifStmt;
258 struct __ecereNameSpace__ecere__sys__OldList * exp;
259 struct Statement * stmt;
260 } __attribute__ ((gcc_struct)) switchStmt;
263 struct __ecereNameSpace__ecere__sys__OldList * exp;
264 struct Statement * stmt;
265 } __attribute__ ((gcc_struct)) whileStmt;
268 struct __ecereNameSpace__ecere__sys__OldList * exp;
269 struct Statement * stmt;
270 } __attribute__ ((gcc_struct)) doWhile;
273 struct Statement * init;
274 struct Statement * check;
275 struct __ecereNameSpace__ecere__sys__OldList * increment;
276 struct Statement * stmt;
277 } __attribute__ ((gcc_struct)) forStmt;
280 struct Identifier * id;
281 } __attribute__ ((gcc_struct)) gotoStmt;
284 struct Specifier * spec;
286 struct __ecereNameSpace__ecere__sys__OldList * inputFields;
287 struct __ecereNameSpace__ecere__sys__OldList * outputFields;
288 struct __ecereNameSpace__ecere__sys__OldList * clobberedFields;
289 } __attribute__ ((gcc_struct)) asmStmt;
292 struct Expression * watcher;
293 struct Expression * object;
294 struct __ecereNameSpace__ecere__sys__OldList * watches;
295 } __attribute__ ((gcc_struct)) _watch;
298 struct Identifier * id;
299 struct __ecereNameSpace__ecere__sys__OldList * exp;
300 struct __ecereNameSpace__ecere__sys__OldList * filter;
301 struct Statement * stmt;
302 } __attribute__ ((gcc_struct)) forEachStmt;
303 struct Declaration * decl;
304 } __attribute__ ((gcc_struct));
305 } __attribute__ ((gcc_struct));
307 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_TypeName;
311 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Initializer;
315 struct Initializer * prev;
316 struct Initializer * next;
321 struct Expression * exp;
322 struct __ecereNameSpace__ecere__sys__OldList * list;
323 } __attribute__ ((gcc_struct));
324 unsigned int isConstant;
325 struct Identifier * id;
326 } __attribute__ ((gcc_struct));
328 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__DataValue;
330 struct __ecereNameSpace__ecere__com__DataValue
345 } __attribute__ ((gcc_struct));
346 } __attribute__ ((gcc_struct));
348 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Expression;
352 struct Expression * prev;
353 struct Expression * next;
361 struct Identifier * identifier;
362 } __attribute__ ((gcc_struct));
363 struct Statement * compound;
364 struct Instantiation * instance;
368 unsigned int intlString;
369 } __attribute__ ((gcc_struct));
370 struct __ecereNameSpace__ecere__sys__OldList * list;
373 struct __ecereNameSpace__ecere__sys__OldList * specifiers;
374 struct Declarator * decl;
375 } __attribute__ ((gcc_struct)) _classExp;
378 struct Identifier * id;
379 } __attribute__ ((gcc_struct)) classData;
382 struct Expression * exp;
383 struct __ecereNameSpace__ecere__sys__OldList * arguments;
384 struct Location argLoc;
385 } __attribute__ ((gcc_struct)) call;
388 struct Expression * exp;
389 struct __ecereNameSpace__ecere__sys__OldList * index;
390 } __attribute__ ((gcc_struct)) index;
393 struct Expression * exp;
394 struct Identifier * member;
396 unsigned int thisPtr;
397 } __attribute__ ((gcc_struct)) member;
401 struct Expression * exp1;
402 struct Expression * exp2;
403 } __attribute__ ((gcc_struct)) op;
404 struct TypeName * typeName;
405 struct Specifier * _class;
408 struct TypeName * typeName;
409 struct Expression * exp;
410 } __attribute__ ((gcc_struct)) cast;
413 struct Expression * cond;
414 struct __ecereNameSpace__ecere__sys__OldList * exp;
415 struct Expression * elseExp;
416 } __attribute__ ((gcc_struct)) cond;
419 struct TypeName * typeName;
420 struct Expression * size;
421 } __attribute__ ((gcc_struct)) _new;
424 struct TypeName * typeName;
425 struct Expression * size;
426 struct Expression * exp;
427 } __attribute__ ((gcc_struct)) _renew;
431 struct Identifier * id;
432 } __attribute__ ((gcc_struct)) db;
435 struct Expression * ds;
436 struct Expression * name;
437 } __attribute__ ((gcc_struct)) dbopen;
440 struct TypeName * typeName;
441 struct Initializer * initializer;
442 } __attribute__ ((gcc_struct)) initializer;
445 struct Expression * exp;
446 struct TypeName * typeName;
447 } __attribute__ ((gcc_struct)) vaArg;
448 } __attribute__ ((gcc_struct));
449 unsigned int debugValue;
450 struct __ecereNameSpace__ecere__com__DataValue val;
452 unsigned int hasAddress;
453 struct Type * expType;
454 struct Type * destType;
457 unsigned int byReference;
458 unsigned int isConstant;
459 unsigned int addedThis;
460 unsigned int needCast;
461 unsigned int thisPtr;
462 unsigned int opDestType;
463 } __attribute__ ((gcc_struct));
465 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_TemplateDatatype;
467 struct TemplateDatatype;
469 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_TemplateArgument;
471 struct TemplateArgument;
473 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_TemplateParameter;
475 struct TemplateParameter;
477 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Specifier;
481 struct Specifier * prev;
482 struct Specifier * next;
490 struct ExtDecl * extDecl;
492 struct Symbol * symbol;
493 struct __ecereNameSpace__ecere__sys__OldList * templateArgs;
494 } __attribute__ ((gcc_struct));
497 struct Identifier * id;
498 struct __ecereNameSpace__ecere__sys__OldList * list;
499 struct __ecereNameSpace__ecere__sys__OldList * baseSpecs;
500 struct __ecereNameSpace__ecere__sys__OldList * definitions;
501 unsigned int addNameSpace;
502 struct Context * ctx;
503 struct ExtDecl * extDeclStruct;
504 } __attribute__ ((gcc_struct));
505 struct Expression * expression;
506 struct Specifier * _class;
507 struct TemplateParameter * templateParameter;
508 } __attribute__ ((gcc_struct));
509 } __attribute__ ((gcc_struct));
511 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Identifier;
515 struct Identifier * prev;
516 struct Identifier * next;
518 struct Symbol * classSym;
519 struct Specifier * _class;
521 struct Identifier * badID;
522 } __attribute__ ((gcc_struct));
524 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Pointer;
528 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Declarator;
532 struct Declarator * prev;
533 struct Declarator * next;
536 struct Symbol * symbol;
537 struct Declarator * declarator;
540 struct Identifier * identifier;
543 struct Expression * exp;
544 struct Expression * posExp;
545 struct Attrib * attrib;
546 } __attribute__ ((gcc_struct)) structDecl;
549 struct Expression * exp;
550 struct Specifier * enumClass;
551 } __attribute__ ((gcc_struct)) array;
554 struct __ecereNameSpace__ecere__sys__OldList * parameters;
555 } __attribute__ ((gcc_struct)) function;
558 struct Pointer * pointer;
559 } __attribute__ ((gcc_struct)) pointer;
562 struct ExtDecl * extended;
563 } __attribute__ ((gcc_struct)) extended;
564 } __attribute__ ((gcc_struct));
565 } __attribute__ ((gcc_struct));
567 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_FunctionDefinition;
569 struct FunctionDefinition
571 struct FunctionDefinition * prev;
572 struct FunctionDefinition * next;
574 struct __ecereNameSpace__ecere__sys__OldList * specifiers;
575 struct Declarator * declarator;
576 struct __ecereNameSpace__ecere__sys__OldList * declarations;
577 struct Statement * body;
578 struct __ecereNameSpace__ecere__com__Class * _class;
579 struct __ecereNameSpace__ecere__sys__OldList attached;
582 struct Symbol * propSet;
584 unsigned int propertyNoThis;
585 } __attribute__ ((gcc_struct));
587 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_DBTableDef;
591 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_External;
595 struct External * prev;
596 struct External * next;
599 struct Symbol * symbol;
602 struct FunctionDefinition * function;
603 struct ClassDefinition * _class;
604 struct Declaration * declaration;
606 struct Identifier * id;
607 struct DBTableDef * table;
608 } __attribute__ ((gcc_struct));
610 } __attribute__ ((gcc_struct));
612 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_ModuleImport;
616 struct ModuleImport * prev;
617 struct ModuleImport * next;
619 struct __ecereNameSpace__ecere__sys__OldList classes;
620 struct __ecereNameSpace__ecere__sys__OldList functions;
623 } __attribute__ ((gcc_struct));
625 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_ClassImport;
629 struct ClassImport * prev;
630 struct ClassImport * next;
632 struct __ecereNameSpace__ecere__sys__OldList methods;
633 struct __ecereNameSpace__ecere__sys__OldList properties;
636 } __attribute__ ((gcc_struct));
638 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Symbol;
643 struct Symbol * parent;
644 struct Symbol * left;
645 struct Symbol * right;
650 struct __ecereNameSpace__ecere__com__Method * method;
651 struct __ecereNameSpace__ecere__com__Property * _property;
652 struct __ecereNameSpace__ecere__com__Class * registered;
653 } __attribute__ ((gcc_struct));
660 struct External * pointerExternal;
661 struct External * structExternal;
662 } __attribute__ ((gcc_struct));
665 struct External * externalGet;
666 struct External * externalSet;
667 struct External * externalPtr;
668 struct External * externalIsSet;
669 } __attribute__ ((gcc_struct));
672 struct External * methodExternal;
673 struct External * methodCodeExternal;
674 } __attribute__ ((gcc_struct));
675 } __attribute__ ((gcc_struct));
676 unsigned int imported;
677 unsigned int declaredStructSym;
678 struct __ecereNameSpace__ecere__com__Class * _class;
679 unsigned int declaredStruct;
680 unsigned int needConstructor;
681 unsigned int needDestructor;
682 char * constructorName;
685 char * destructorName;
686 struct ModuleImport * module;
687 struct ClassImport * _import;
688 struct Location nameLoc;
689 unsigned int isParam;
690 unsigned int isRemote;
691 unsigned int isStruct;
692 unsigned int fireWatchersDone;
694 unsigned int classData;
695 unsigned int isStatic;
697 struct __ecereNameSpace__ecere__sys__OldList * templateParams;
698 struct __ecereNameSpace__ecere__sys__OldList templatedClasses;
699 struct Context * ctx;
701 struct Expression * propCategory;
702 } __attribute__ ((gcc_struct));
704 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Type;
713 struct Symbol * _class;
716 struct __ecereNameSpace__ecere__sys__OldList members;
718 } __attribute__ ((gcc_struct));
721 struct Type * returnType;
722 struct __ecereNameSpace__ecere__sys__OldList params;
723 struct Symbol * thisClass;
724 unsigned int staticMethod;
725 struct TemplateParameter * thisClassTemplate;
726 } __attribute__ ((gcc_struct));
729 struct __ecereNameSpace__ecere__com__Method * method;
730 struct __ecereNameSpace__ecere__com__Class * methodClass;
731 struct __ecereNameSpace__ecere__com__Class * usedClass;
732 } __attribute__ ((gcc_struct));
735 struct Type * arrayType;
737 struct Expression * arraySizeExp;
738 unsigned int freeExp;
739 struct Symbol * enumClass;
740 } __attribute__ ((gcc_struct));
742 struct TemplateParameter * templateParameter;
743 } __attribute__ ((gcc_struct));
753 unsigned int isSigned : 1;
754 unsigned int constant : 1;
755 unsigned int truth : 1;
756 unsigned int byReference : 1;
757 unsigned int extraParam : 1;
758 unsigned int directClassAccess : 1;
759 unsigned int computing : 1;
760 unsigned int keepCast : 1;
761 unsigned int passAsTemplate : 1;
762 unsigned int dllExport : 1;
763 unsigned int attrStdcall : 1;
764 unsigned int declaredWithStruct : 1;
765 unsigned int typedByReference : 1;
766 unsigned int casted : 1;
767 } __attribute__ ((gcc_struct));
769 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__Class;
771 struct __ecereNameSpace__ecere__com__Class
773 struct __ecereNameSpace__ecere__com__Class * prev;
774 struct __ecereNameSpace__ecere__com__Class * next;
780 int (* Constructor)(struct __ecereNameSpace__ecere__com__Instance *);
781 void (* Destructor)(struct __ecereNameSpace__ecere__com__Instance *);
784 struct __ecereNameSpace__ecere__com__Class * base;
785 struct __ecereNameSpace__ecere__sys__BinaryTree methods;
786 struct __ecereNameSpace__ecere__sys__BinaryTree members;
787 struct __ecereNameSpace__ecere__sys__BinaryTree prop;
788 struct __ecereNameSpace__ecere__sys__OldList membersAndProperties;
789 struct __ecereNameSpace__ecere__sys__BinaryTree classProperties;
790 struct __ecereNameSpace__ecere__sys__OldList derivatives;
794 struct __ecereNameSpace__ecere__com__Instance * module;
795 struct __ecereNameSpace__ecere__com__NameSpace * nameSpace;
796 const char * dataTypeString;
797 struct Type * dataType;
799 int defaultAlignment;
800 void (* Initialize)();
802 struct __ecereNameSpace__ecere__sys__OldList selfWatchers;
803 const char * designerClass;
804 unsigned int noExpansion;
805 const char * defaultProperty;
806 unsigned int comRedefinition;
809 unsigned int internalDecl;
811 unsigned int computeSize;
813 int destructionWatchOffset;
815 struct __ecereNameSpace__ecere__sys__OldList delayedCPValues;
816 int inheritanceAccess;
817 const char * fullName;
819 struct __ecereNameSpace__ecere__sys__OldList conversions;
820 struct __ecereNameSpace__ecere__sys__OldList templateParams;
821 struct __ecereNameSpace__ecere__com__ClassTemplateArgument * templateArgs;
822 struct __ecereNameSpace__ecere__com__Class * templateClass;
823 struct __ecereNameSpace__ecere__sys__OldList templatized;
825 unsigned int isInstanceClass;
826 unsigned int byValueSystemClass;
827 } __attribute__ ((gcc_struct));
829 extern long long __ecereNameSpace__ecere__com__eClass_GetProperty(struct __ecereNameSpace__ecere__com__Class * _class, const char * name);
831 extern void __ecereNameSpace__ecere__com__eClass_SetProperty(struct __ecereNameSpace__ecere__com__Class * _class, const char * name, long long value);
833 extern void __ecereNameSpace__ecere__com__eInstance_FireSelfWatchers(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property);
835 extern void __ecereNameSpace__ecere__com__eInstance_SetMethod(struct __ecereNameSpace__ecere__com__Instance * instance, const char * name, void * function);
837 extern void __ecereNameSpace__ecere__com__eInstance_IncRef(struct __ecereNameSpace__ecere__com__Instance * instance);
839 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);
841 extern void __ecereNameSpace__ecere__com__eInstance_Watch(void * instance, struct __ecereNameSpace__ecere__com__Property * _property, void * object, void (* callback)(void * , void * ));
843 extern void __ecereNameSpace__ecere__com__eInstance_FireWatchers(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property);
845 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__Instance;
847 struct __ecereNameSpace__ecere__com__Instance
850 struct __ecereNameSpace__ecere__com__Class * _class;
852 } __attribute__ ((gcc_struct));
854 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__DataMember;
856 struct __ecereNameSpace__ecere__com__DataMember
858 struct __ecereNameSpace__ecere__com__DataMember * prev;
859 struct __ecereNameSpace__ecere__com__DataMember * next;
861 unsigned int isProperty;
864 struct __ecereNameSpace__ecere__com__Class * _class;
865 const char * dataTypeString;
866 struct __ecereNameSpace__ecere__com__Class * dataTypeClass;
867 struct Type * dataType;
871 struct __ecereNameSpace__ecere__sys__OldList members;
872 struct __ecereNameSpace__ecere__sys__BinaryTree membersAlpha;
875 } __attribute__ ((gcc_struct));
877 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__SerialBuffer;
879 struct __ecereNameSpace__ecere__com__SerialBuffer
881 unsigned char * _buffer;
885 } __attribute__ ((gcc_struct));
887 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__ClassTemplateArgument;
889 struct __ecereNameSpace__ecere__com__ClassTemplateArgument
895 const char * dataTypeString;
896 struct __ecereNameSpace__ecere__com__Class * dataTypeClass;
897 } __attribute__ ((gcc_struct));
898 struct __ecereNameSpace__ecere__com__DataValue expression;
901 const char * memberString;
904 struct __ecereNameSpace__ecere__com__DataMember * member;
905 struct __ecereNameSpace__ecere__com__Property * prop;
906 struct __ecereNameSpace__ecere__com__Method * method;
907 } __attribute__ ((gcc_struct));
908 } __attribute__ ((gcc_struct));
909 } __attribute__ ((gcc_struct));
910 } __attribute__ ((gcc_struct));
914 IDENTIFIER = 258, CONSTANT = 259, STRING_LITERAL = 260, SIZEOF = 261, PTR_OP = 262, INC_OP = 263, DEC_OP = 264, LEFT_OP = 265, RIGHT_OP = 266, LE_OP = 267, GE_OP = 268, EQ_OP = 269, NE_OP = 270, AND_OP = 271, OR_OP = 272, MUL_ASSIGN = 273, DIV_ASSIGN = 274, MOD_ASSIGN = 275, ADD_ASSIGN = 276, SUB_ASSIGN = 277, LEFT_ASSIGN = 278, RIGHT_ASSIGN = 279, AND_ASSIGN = 280, XOR_ASSIGN = 281, OR_ASSIGN = 282, TYPE_NAME = 283, TYPEDEF = 284, EXTERN = 285, STATIC = 286, AUTO = 287, REGISTER = 288, CHAR = 289, SHORT = 290, INT = 291, UINT = 292, INT64 = 293, LONG = 294, SIGNED = 295, UNSIGNED = 296, FLOAT = 297, DOUBLE = 298, CONST = 299, VOLATILE = 300, VOID = 301, VALIST = 302, STRUCT = 303, UNION = 304, ENUM = 305, ELLIPSIS = 306, CASE = 307, DEFAULT = 308, IF = 309, SWITCH = 310, WHILE = 311, DO = 312, FOR = 313, GOTO = 314, CONTINUE = 315, BREAK = 316, RETURN = 317, IFX = 318, ELSE = 319, CLASS = 320, THISCLASS = 321, CLASS_NAME = 322, PROPERTY = 323, SETPROP = 324, GETPROP = 325, NEWOP = 326, RENEW = 327, DELETE = 328, EXT_DECL = 329, EXT_STORAGE = 330, IMPORT = 331, DEFINE = 332, VIRTUAL = 333, ATTRIB = 334, PUBLIC = 335, PRIVATE = 336, TYPED_OBJECT = 337, ANY_OBJECT = 338, _INCREF = 339, EXTENSION = 340, ASM = 341, TYPEOF = 342, WATCH = 343, STOPWATCHING = 344, FIREWATCHERS = 345, WATCHABLE = 346, CLASS_DESIGNER = 347, CLASS_NO_EXPANSION = 348, CLASS_FIXED = 349, ISPROPSET = 350, CLASS_DEFAULT_PROPERTY = 351, PROPERTY_CATEGORY = 352, CLASS_DATA = 353, CLASS_PROPERTY = 354, SUBCLASS = 355, NAMESPACE = 356, NEW0OP = 357, RENEW0 = 358, VAARG = 359, DBTABLE = 360, DBFIELD = 361, DBINDEX = 362, DATABASE_OPEN = 363, ALIGNOF = 364, ATTRIB_DEP = 365, __ATTRIB = 366, BOOL = 367, _BOOL = 368, _COMPLEX = 369, _IMAGINARY = 370, RESTRICT = 371, THREAD = 372
917 typedef union YYSTYPE
922 struct Identifier * id;
923 struct Expression * exp;
924 struct Specifier * specifier;
925 struct __ecereNameSpace__ecere__sys__OldList * list;
926 struct Enumerator * enumerator;
927 struct Declarator * declarator;
928 struct Pointer * pointer;
929 struct Initializer * initializer;
930 struct InitDeclarator * initDeclarator;
931 struct TypeName * typeName;
932 struct Declaration * declaration;
933 struct Statement * stmt;
934 struct FunctionDefinition * function;
935 struct External * external;
936 struct Context * context;
937 struct AsmField * asmField;
938 struct Attrib * attrib;
939 struct ExtDecl * extDecl;
940 struct Attribute * attribute;
941 struct Instantiation * instance;
942 struct MembersInit * membersInit;
943 struct MemberInit * memberInit;
944 struct ClassFunction * classFunction;
945 struct ClassDefinition * _class;
946 struct ClassDef * classDef;
947 struct PropertyDef * prop;
949 struct Symbol * symbol;
950 struct PropertyWatch * propertyWatch;
951 struct TemplateParameter * templateParameter;
952 struct TemplateArgument * templateArgument;
953 struct TemplateDatatype * templateDatatype;
954 struct DBTableEntry * dbtableEntry;
955 struct DBIndexItem * dbindexItem;
956 struct DBTableDef * dbtableDef;
957 } __attribute__ ((gcc_struct)) YYSTYPE;
959 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Enumerator;
963 struct Enumerator * prev;
964 struct Enumerator * next;
966 struct Identifier * id;
967 struct Expression * exp;
968 } __attribute__ ((gcc_struct));
970 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_InitDeclarator;
972 struct InitDeclarator
974 struct InitDeclarator * prev;
975 struct InitDeclarator * next;
977 struct Declarator * declarator;
978 struct Initializer * initializer;
979 } __attribute__ ((gcc_struct));
981 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_AsmField;
985 struct AsmField * prev;
986 struct AsmField * next;
989 struct Expression * expression;
990 struct Identifier * symbolic;
991 } __attribute__ ((gcc_struct));
993 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Attribute;
997 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_ClassFunction;
1001 struct ClassFunction * prev;
1002 struct ClassFunction * next;
1003 struct Location loc;
1004 struct __ecereNameSpace__ecere__sys__OldList * specifiers;
1005 struct Declarator * declarator;
1006 struct __ecereNameSpace__ecere__sys__OldList * declarations;
1007 struct Statement * body;
1008 struct __ecereNameSpace__ecere__com__Class * _class;
1009 struct __ecereNameSpace__ecere__sys__OldList attached;
1012 struct Symbol * propSet;
1013 unsigned int isVirtual;
1014 unsigned int isConstructor;
1015 unsigned int isDestructor;
1016 unsigned int dontMangle;
1019 } __attribute__ ((gcc_struct));
1021 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_MembersInit;
1025 struct MembersInit * prev;
1026 struct MembersInit * next;
1027 struct Location loc;
1031 struct __ecereNameSpace__ecere__sys__OldList * dataMembers;
1032 struct ClassFunction * function;
1033 } __attribute__ ((gcc_struct));
1034 } __attribute__ ((gcc_struct));
1036 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_MemberInit;
1040 struct MemberInit * prev;
1041 struct MemberInit * next;
1042 struct Location loc;
1043 struct Location realLoc;
1044 struct __ecereNameSpace__ecere__sys__OldList * identifiers;
1045 struct Initializer * initializer;
1047 unsigned int variable;
1048 unsigned int takeOutExp;
1049 } __attribute__ ((gcc_struct));
1051 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_PropertyDef;
1055 struct PropertyDef * prev;
1056 struct PropertyDef * next;
1057 struct Location loc;
1058 struct __ecereNameSpace__ecere__sys__OldList * specifiers;
1059 struct Declarator * declarator;
1060 struct Identifier * id;
1061 struct Statement * getStmt;
1062 struct Statement * setStmt;
1063 struct Statement * issetStmt;
1064 struct Symbol * symbol;
1065 struct Expression * category;
1068 unsigned int conversion : 1;
1069 unsigned int isWatchable : 1;
1070 unsigned int isDBProp : 1;
1071 } __attribute__ ((gcc_struct));
1072 } __attribute__ ((gcc_struct));
1074 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_PropertyWatch;
1076 struct PropertyWatch
1078 struct PropertyWatch * prev;
1079 struct PropertyWatch * next;
1080 struct Location loc;
1081 struct Statement * compound;
1082 struct __ecereNameSpace__ecere__sys__OldList * properties;
1083 unsigned int deleteWatch;
1084 } __attribute__ ((gcc_struct));
1086 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_ClassDef;
1090 struct ClassDef * prev;
1091 struct ClassDef * next;
1092 struct Location loc;
1096 struct Declaration * decl;
1097 struct ClassFunction * function;
1098 struct __ecereNameSpace__ecere__sys__OldList * defProperties;
1099 struct PropertyDef * propertyDef;
1100 struct PropertyWatch * propertyWatch;
1102 struct Identifier * defaultProperty;
1105 struct Identifier * id;
1106 struct Initializer * initializer;
1107 } __attribute__ ((gcc_struct));
1108 } __attribute__ ((gcc_struct));
1111 } __attribute__ ((gcc_struct));
1113 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_DBTableEntry;
1115 struct DBTableEntry;
1117 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_DBIndexItem;
1121 extern YYSTYPE yylval;
1123 extern struct Location yylloc;
1125 extern struct External * curExternal;
1127 static struct Statement * curCompound;
1129 static struct Statement * createInstancesBody;
1131 static struct Statement * destroyInstancesBody;
1133 extern unsigned int inCompiler;
1135 extern struct Statement * MkCompoundStmt(struct __ecereNameSpace__ecere__sys__OldList * declarations, struct __ecereNameSpace__ecere__sys__OldList * statements);
1137 extern struct __ecereNameSpace__ecere__sys__OldList * MkList(void);
1139 extern struct Context * globalContext;
1141 extern void ListAdd(struct __ecereNameSpace__ecere__sys__OldList * list, void * item);
1143 extern struct Specifier * MkSpecifier(int specifier);
1145 extern char * __ecereNameSpace__ecere__sys__GetLastDirectory(const char * string, char * output);
1147 extern const char * outputFile;
1149 extern unsigned int __ecereNameSpace__ecere__sys__StripExtension(char * string);
1151 extern void FixModuleName(char * moduleName);
1153 extern int sprintf(char * , const char * , ...);
1155 extern struct Declarator * MkDeclaratorFunction(struct Declarator * declarator, struct __ecereNameSpace__ecere__sys__OldList * parameters);
1157 extern struct Declarator * MkDeclaratorIdentifier(struct Identifier * id);
1159 extern struct Identifier * MkIdentifier(const char * string);
1161 extern struct FunctionDefinition * _MkFunction(struct __ecereNameSpace__ecere__sys__OldList * specifiers, struct Declarator * declarator, struct __ecereNameSpace__ecere__sys__OldList * declarationList, unsigned int errorOnOmit);
1163 extern void ProcessFunctionBody(struct FunctionDefinition * func, struct Statement * body);
1165 extern struct __ecereNameSpace__ecere__sys__OldList * ast;
1167 extern struct External * MkExternalFunction(struct FunctionDefinition * function);
1169 extern void * __ecereNameSpace__ecere__com__eInstance_New(struct __ecereNameSpace__ecere__com__Class * _class);
1171 static void CreateInstancesBody()
1173 if(inCompiler && !createInstancesBody)
1175 char registerName[1024], moduleName[274];
1176 struct __ecereNameSpace__ecere__sys__OldList * specifiers;
1177 struct Declarator * declarator;
1179 createInstancesBody = MkCompoundStmt((((void *)0)), MkList());
1180 createInstancesBody->compound.context = __extension__ ({
1181 struct Context * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Context);
1183 __ecereInstance1->parent = globalContext, __ecereInstance1;
1185 specifiers = MkList();
1186 ListAdd(specifiers, MkSpecifier(VOID));
1187 __ecereNameSpace__ecere__sys__GetLastDirectory(outputFile, moduleName);
1188 __ecereNameSpace__ecere__sys__StripExtension(moduleName);
1189 FixModuleName(moduleName);
1190 sprintf(registerName, "__ecereCreateModuleInstances_%s", moduleName);
1191 declarator = MkDeclaratorFunction(MkDeclaratorIdentifier(MkIdentifier(registerName)), (((void *)0)));
1193 struct FunctionDefinition * function = _MkFunction(specifiers, declarator, (((void *)0)), 0x0);
1195 ProcessFunctionBody(function, createInstancesBody);
1196 ListAdd(ast, MkExternalFunction(function));
1198 destroyInstancesBody = MkCompoundStmt((((void *)0)), MkList());
1199 destroyInstancesBody->compound.context = __extension__ ({
1200 struct Context * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Context);
1202 __ecereInstance1->parent = globalContext, __ecereInstance1;
1204 specifiers = MkList();
1205 ListAdd(specifiers, MkSpecifier(VOID));
1206 sprintf(registerName, "__ecereDestroyModuleInstances_%s", moduleName);
1207 declarator = MkDeclaratorFunction(MkDeclaratorIdentifier(MkIdentifier(registerName)), (((void *)0)));
1209 struct FunctionDefinition * function = _MkFunction(specifiers, declarator, (((void *)0)), 0x0);
1211 ProcessFunctionBody(function, destroyInstancesBody);
1212 ListAdd(ast, MkExternalFunction(function));
1217 static void ProcessInitializer(struct Initializer * init);
1219 static void ProcessMemberInitData(struct MemberInit * member)
1221 if(member->initializer)
1222 ProcessInitializer(member->initializer);
1225 static void ProcessFunction(struct FunctionDefinition * function);
1227 static void ProcessInstantiation(struct Instantiation * inst)
1229 if(inst->members && (*inst->members).first)
1231 struct MembersInit * members;
1233 for(members = (*inst->members).first; members; members = members->next)
1235 if(members->type == 0)
1237 if(members->dataMembers)
1239 struct MemberInit * member;
1241 for(member = (*members->dataMembers).first; member; member = member->next)
1242 ProcessMemberInitData(member);
1245 else if(members->type == 1)
1247 ProcessFunction((struct FunctionDefinition *)members->function);
1253 extern struct __ecereNameSpace__ecere__com__Property * __ecereNameSpace__ecere__com__eClass_FindProperty(struct __ecereNameSpace__ecere__com__Class * _class, const char * name, struct __ecereNameSpace__ecere__com__Instance * module);
1255 extern struct __ecereNameSpace__ecere__com__Instance * privateModule;
1257 extern struct __ecereNameSpace__ecere__com__DataMember * __ecereNameSpace__ecere__com__eClass_FindDataMember(struct __ecereNameSpace__ecere__com__Class * _class, const char * name, struct __ecereNameSpace__ecere__com__Instance * module, struct __ecereNameSpace__ecere__com__DataMember ** subMemberStack, int * subMemberStackPos);
1259 extern void * memcpy(void * , const void * , size_t size);
1261 extern void __ecereNameSpace__ecere__com__eClass_FindNextMember(struct __ecereNameSpace__ecere__com__Class * _class, struct __ecereNameSpace__ecere__com__Class ** curClass, struct __ecereNameSpace__ecere__com__DataMember ** curMember, struct __ecereNameSpace__ecere__com__DataMember ** subMemberStack, int * subMemberStackPos);
1263 extern struct Expression * CopyExpression(struct Expression * exp);
1265 extern struct Expression * MkExpConstant(const char * string);
1267 extern struct Expression * MkExpMember(struct Expression * expression, struct Identifier * member);
1269 extern struct Expression * MkExpOp(struct Expression * exp1, int op, struct Expression * exp2);
1271 extern void FreeType(struct Type * type);
1273 extern void ProcessExpressionType(struct Expression * exp);
1275 static void ProcessExpression(struct Expression * exp);
1277 static unsigned int ProcessInstMembers_SimpleMemberEnsure(struct __ecereNameSpace__ecere__com__DataMember * parentMember, struct Instantiation * inst, struct Expression * instExp, struct __ecereNameSpace__ecere__sys__OldList * list, unsigned int zeroOut)
1279 struct Symbol * classSym = inst->_class->symbol;
1280 unsigned int fullSet = 0x1;
1281 struct __ecereNameSpace__ecere__com__DataMember * dataMember;
1283 for(dataMember = parentMember->members.first; dataMember; dataMember = dataMember->next)
1285 if(!dataMember->isProperty)
1287 if(!dataMember->name && (dataMember->type == 1 || dataMember->type == 2))
1289 if(!ProcessInstMembers_SimpleMemberEnsure(dataMember, inst, instExp, list, zeroOut))
1294 unsigned int memberFilled = 0x0;
1296 if(inst->members && (*inst->members).first)
1298 struct __ecereNameSpace__ecere__com__Class * curClass = (((void *)0));
1299 struct __ecereNameSpace__ecere__com__DataMember * curMember = (((void *)0));
1300 struct __ecereNameSpace__ecere__com__DataMember * subMemberStack[256];
1301 int subMemberStackPos = 0;
1302 struct MembersInit * members;
1304 for(members = (*inst->members).first; members; members = members->next)
1306 if(members->type == 0)
1308 struct MemberInit * member = (((void *)0));
1310 for(member = (*members->dataMembers).first; member; member = member->next)
1312 if(member->identifiers)
1314 struct Identifier * firstID = (*member->identifiers).first;
1315 struct __ecereNameSpace__ecere__com__DataMember * _subMemberStack[256];
1316 int _subMemberStackPos = 0;
1317 struct __ecereNameSpace__ecere__com__DataMember * thisMember = (struct __ecereNameSpace__ecere__com__DataMember *)__ecereNameSpace__ecere__com__eClass_FindProperty(classSym->registered, firstID->string, privateModule);
1320 thisMember = __ecereNameSpace__ecere__com__eClass_FindDataMember(classSym->registered, firstID->string, privateModule, _subMemberStack, &_subMemberStackPos);
1323 if(thisMember && thisMember->memberAccess == 1)
1325 curMember = thisMember;
1326 curClass = curMember->_class;
1327 memcpy(subMemberStack, _subMemberStack, sizeof(struct __ecereNameSpace__ecere__com__DataMember *) * _subMemberStackPos);
1328 subMemberStackPos = _subMemberStackPos;
1330 if(!firstID->next && thisMember == dataMember)
1339 __ecereNameSpace__ecere__com__eClass_FindNextMember(classSym->registered, &curClass, &curMember, subMemberStack, &subMemberStackPos);
1340 if(curMember == dataMember)
1358 struct Expression * instExpCopy = CopyExpression(instExp);
1359 struct Expression * memberExp;
1360 struct Expression * setExp;
1361 struct Expression * value = MkExpConstant("0");
1363 memberExp = MkExpMember(instExpCopy, MkIdentifier(dataMember->name));
1364 memberExp->member.memberType = 3;
1365 value->usage = (value->usage & ~0x1) | (((unsigned int)0x1) << 0);
1366 setExp = MkExpOp(memberExp, '=', value);
1367 value->loc = inst->loc;
1368 setExp->loc = inst->loc;
1369 FreeType(instExpCopy->expType);
1370 instExpCopy->expType = instExp->expType;
1371 if(instExp->expType)
1372 instExp->expType->refCount++;
1373 ProcessExpressionType(setExp);
1374 ProcessExpression(setExp);
1375 ListAdd(list, setExp);
1385 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__BitMember;
1387 struct __ecereNameSpace__ecere__com__BitMember
1389 struct __ecereNameSpace__ecere__com__BitMember * prev;
1390 struct __ecereNameSpace__ecere__com__BitMember * next;
1392 unsigned int isProperty;
1395 struct __ecereNameSpace__ecere__com__Class * _class;
1396 const char * dataTypeString;
1397 struct __ecereNameSpace__ecere__com__Class * dataTypeClass;
1398 struct Type * dataType;
1403 } __attribute__ ((gcc_struct));
1405 extern struct Declarator * SpecDeclFromString(const char * string, struct __ecereNameSpace__ecere__sys__OldList * specs, struct Declarator * baseDecl);
1407 extern struct Expression * MkExpBrackets(struct __ecereNameSpace__ecere__sys__OldList * expressions);
1409 extern struct __ecereNameSpace__ecere__sys__OldList * MkListOne(void * item);
1411 extern struct Expression * MkExpCast(struct TypeName * typeName, struct Expression * expression);
1413 extern struct TypeName * MkTypeName(struct __ecereNameSpace__ecere__sys__OldList * qualifiers, struct Declarator * declarator);
1415 extern void FreeInitializer(struct Initializer * initializer);
1417 extern void DeclareProperty(struct __ecereNameSpace__ecere__com__Property * prop, char * setName, char * getName);
1419 extern struct Expression * MkExpCall(struct Expression * expression, struct __ecereNameSpace__ecere__sys__OldList * arguments);
1421 extern struct Expression * MkExpIdentifier(struct Identifier * id);
1423 extern struct Type * MkClassType(const char * name);
1425 extern struct TypeName * QMkClass(const char * spec, struct Declarator * decl);
1427 extern struct __ecereNameSpace__ecere__com__Method * __ecereNameSpace__ecere__com__eClass_FindMethod(struct __ecereNameSpace__ecere__com__Class * _class, const char * name, struct __ecereNameSpace__ecere__com__Instance * module);
1429 extern void FreeExpression(struct Expression * exp);
1431 void __ecereMethod___ecereNameSpace__ecere__sys__OldList_Clear(struct __ecereNameSpace__ecere__sys__OldList * this);
1433 static unsigned int ProcessInstMembers(struct Instantiation * inst, struct Expression * instExp, struct __ecereNameSpace__ecere__sys__OldList * list, unsigned int zeroOut)
1435 struct MembersInit * members;
1436 struct Symbol * classSym = inst->_class->symbol;
1437 unsigned int fullSet = 0x1, convert = 0x0;
1439 if(classSym && classSym->registered && classSym->registered->type == 2)
1441 struct Expression * exp = (((void *)0));
1443 if(inst->members && (*inst->members).first)
1445 struct __ecereNameSpace__ecere__com__Class * _class = (((void *)0));
1447 while(_class != classSym->registered)
1449 struct __ecereNameSpace__ecere__com__BitMember * bitMember = (((void *)0));
1450 struct __ecereNameSpace__ecere__com__Class * lastClass = _class;
1452 for(_class = classSym->registered; _class->base != lastClass && _class->base->type != 1000; _class = _class->base)
1454 for(bitMember = _class->membersAndProperties.first; bitMember; bitMember = bitMember->next)
1456 struct __ecereNameSpace__ecere__com__BitMember * curMember = (((void *)0));
1457 struct __ecereNameSpace__ecere__com__Class * curClass = (((void *)0));
1458 struct __ecereNameSpace__ecere__com__DataMember * subMemberStack[256];
1459 int subMemberStackPos = 0;
1460 struct MemberInit * member = (((void *)0));
1461 unsigned int found = 0x0;
1463 for(members = (*inst->members).first; members; members = members->next)
1465 if(members->type == 0)
1467 for(member = (*members->dataMembers).first; member; member = member->next)
1469 if(member->identifiers)
1471 struct Identifier * firstID = (*member->identifiers).first;
1472 struct __ecereNameSpace__ecere__com__DataMember * _subMemberStack[256];
1473 int _subMemberStackPos = 0;
1474 struct __ecereNameSpace__ecere__com__BitMember * thisMember = (struct __ecereNameSpace__ecere__com__BitMember *)__ecereNameSpace__ecere__com__eClass_FindDataMember(_class, firstID->string, privateModule, _subMemberStack, &_subMemberStackPos);
1478 thisMember = (struct __ecereNameSpace__ecere__com__BitMember *)__ecereNameSpace__ecere__com__eClass_FindProperty(_class, firstID->string, privateModule);
1480 if(thisMember && thisMember->memberAccess == 1)
1482 curMember = thisMember;
1483 curClass = curMember->_class;
1484 memcpy(subMemberStack, _subMemberStack, sizeof(struct __ecereNameSpace__ecere__com__DataMember *) * _subMemberStackPos);
1485 subMemberStackPos = _subMemberStackPos;
1487 if(thisMember == bitMember)
1495 __ecereNameSpace__ecere__com__eClass_FindNextMember(classSym->registered, &curClass, (struct __ecereNameSpace__ecere__com__DataMember **)&curMember, subMemberStack, &subMemberStackPos);
1496 if(curMember == bitMember)
1509 if(!bitMember->isProperty)
1511 struct Expression * part = (((void *)0));
1512 struct __ecereNameSpace__ecere__sys__OldList * specs = MkList();
1513 struct Declarator * decl;
1515 decl = SpecDeclFromString(_class->dataTypeString, specs, (((void *)0)));
1516 ProcessInitializer(member->initializer);
1517 if(member->initializer && member->initializer->type == 0)
1523 sprintf(pos, "%d", bitMember->pos);
1524 part = MkExpBrackets(MkListOne(MkExpOp(MkExpBrackets(MkListOne(MkExpCast(MkTypeName(specs, decl), MkExpBrackets(MkListOne(member->initializer->exp))))), LEFT_OP, MkExpConstant(pos))));
1527 part = MkExpBrackets(MkListOne(MkExpCast(MkTypeName(specs, decl), MkExpBrackets(MkListOne(member->initializer->exp)))));
1528 member->initializer->exp = (((void *)0));
1529 FreeInitializer(member->initializer);
1530 member->initializer = (((void *)0));
1533 exp = MkExpOp(exp, '|', part);
1539 char setName[1024], getName[1024];
1541 DeclareProperty((struct __ecereNameSpace__ecere__com__Property *)bitMember, setName, getName);
1542 if(member->initializer && member->initializer->type == 0)
1544 exp = MkExpCall(MkExpIdentifier(MkIdentifier(setName)), MkListOne(member->initializer->exp));
1545 member->initializer->exp = (((void *)0));
1546 FreeInitializer(member->initializer);
1547 member->initializer = (((void *)0));
1555 exp = MkExpBrackets(MkListOne(exp));
1557 exp = MkExpConstant("0");
1558 exp->expType = MkClassType(classSym->string);
1559 ProcessExpression(exp);
1562 else if(classSym && classSym->registered && classSym->registered->type == 3)
1564 struct __ecereNameSpace__ecere__com__Class * _class = classSym->registered;
1565 struct Expression * exp = (((void *)0));
1567 if(inst->members && (*inst->members).first)
1569 struct MemberInit * member = (((void *)0));
1570 struct __ecereNameSpace__ecere__com__Property * prop = (((void *)0));
1571 unsigned int found = 0x0;
1573 for(members = (*inst->members).first; members; members = members->next)
1575 if(members->type == 0)
1577 for(member = (*members->dataMembers).first; member; member = member->next)
1579 if(member->identifiers)
1581 struct Identifier * firstID = (*member->identifiers).first;
1583 prop = __ecereNameSpace__ecere__com__eClass_FindProperty(_class, firstID->string, privateModule);
1589 prop = (((void *)0));
1605 char setName[1024], getName[1024];
1607 DeclareProperty(prop, setName, getName);
1608 if(member->initializer && member->initializer->type == 0)
1610 exp = MkExpCall(MkExpIdentifier(MkIdentifier(setName)), MkListOne(member->initializer->exp));
1611 member->initializer->exp = (((void *)0));
1612 FreeInitializer(member->initializer);
1613 member->initializer = (((void *)0));
1618 ProcessInitializer(member->initializer);
1619 if(member->initializer && member->initializer->type == 0)
1621 exp = MkExpCast(QMkClass(_class->fullName, (((void *)0))), MkExpBrackets(MkListOne(member->initializer->exp)));
1622 member->initializer->exp = (((void *)0));
1623 FreeInitializer(member->initializer);
1624 member->initializer = (((void *)0));
1630 exp = MkExpBrackets(MkListOne(exp));
1632 exp = MkExpConstant("0");
1633 ProcessExpression(exp);
1636 else if(classSym && classSym->registered)
1638 if(classSym->registered->type == 1)
1640 struct __ecereNameSpace__ecere__com__Class * _class = (((void *)0));
1642 while(_class != classSym->registered)
1644 struct __ecereNameSpace__ecere__com__DataMember * dataMember;
1645 struct __ecereNameSpace__ecere__com__Class * lastClass = _class;
1647 for(_class = classSym->registered; _class->base != lastClass && _class->base->type != 1000; _class = _class->base)
1649 if(_class->structSize != _class->memberOffset)
1651 for(dataMember = _class->membersAndProperties.first; dataMember; dataMember = dataMember->next)
1653 if(!dataMember->isProperty)
1655 if(!dataMember->name && (dataMember->type == 1 || dataMember->type == 2))
1657 if(!ProcessInstMembers_SimpleMemberEnsure(dataMember, inst, instExp, list, zeroOut))
1662 unsigned int memberFilled = 0x0;
1664 if(inst->members && (*inst->members).first)
1666 struct __ecereNameSpace__ecere__com__Class * curClass = (((void *)0));
1667 struct __ecereNameSpace__ecere__com__DataMember * curMember = (((void *)0));
1668 struct __ecereNameSpace__ecere__com__DataMember * subMemberStack[256];
1669 int subMemberStackPos = 0;
1671 for(members = (*inst->members).first; members; members = members->next)
1673 if(members->type == 0 && members->dataMembers)
1675 struct MemberInit * member = (((void *)0));
1677 for(member = (*members->dataMembers).first; member; member = member->next)
1679 if(member->identifiers)
1681 struct __ecereNameSpace__ecere__com__DataMember * _subMemberStack[256];
1682 int _subMemberStackPos = 0;
1683 struct Identifier * firstID = (*member->identifiers).first;
1684 struct __ecereNameSpace__ecere__com__DataMember * thisMember = (struct __ecereNameSpace__ecere__com__DataMember *)__ecereNameSpace__ecere__com__eClass_FindProperty(classSym->registered, firstID->string, privateModule);
1687 thisMember = __ecereNameSpace__ecere__com__eClass_FindDataMember(classSym->registered, firstID->string, privateModule, _subMemberStack, &_subMemberStackPos);
1690 if(thisMember->memberAccess == 1)
1692 curMember = thisMember;
1693 curClass = curMember->_class;
1694 memcpy(subMemberStack, _subMemberStack, sizeof(struct __ecereNameSpace__ecere__com__DataMember *) * _subMemberStackPos);
1695 subMemberStackPos = _subMemberStackPos;
1697 if(!firstID->next && curMember == dataMember)
1706 __ecereNameSpace__ecere__com__eClass_FindNextMember(classSym->registered, &curClass, &curMember, subMemberStack, &subMemberStackPos);
1707 if(curMember == dataMember)
1725 struct Expression * instExpCopy = CopyExpression(instExp);
1726 struct Expression * memberExp;
1727 struct Expression * setExp;
1728 struct Expression * value = MkExpConstant("0");
1730 memberExp = MkExpMember(instExpCopy, MkIdentifier(dataMember->name));
1731 memberExp->member.memberType = 3;
1732 value->usage = (value->usage & ~0x1) | (((unsigned int)0x1) << 0);
1733 setExp = MkExpOp(memberExp, '=', value);
1734 value->loc = inst->loc;
1735 setExp->loc = inst->loc;
1736 FreeType(instExpCopy->expType);
1737 instExpCopy->expType = instExp->expType;
1738 if(instExp->expType)
1739 instExp->expType->refCount++;
1740 ProcessExpressionType(setExp);
1741 ProcessExpression(setExp);
1742 ListAdd(list, setExp);
1751 if(inst->members && (*inst->members).first)
1753 struct __ecereNameSpace__ecere__com__Class * curClass = (((void *)0));
1754 struct __ecereNameSpace__ecere__com__DataMember * curMember = (((void *)0));
1755 struct __ecereNameSpace__ecere__com__DataMember * subMemberStack[256];
1756 int subMemberStackPos = 0;
1758 for(members = (*inst->members).first; members; members = members->next)
1760 if(members->type == 0 && members->dataMembers)
1762 struct MemberInit * member = (((void *)0));
1763 struct __ecereNameSpace__ecere__com__Method * method = (((void *)0));
1765 for(member = (*members->dataMembers).first; member; member = member->next)
1767 struct Identifier * ident = (((void *)0));
1768 struct __ecereNameSpace__ecere__com__DataMember * thisMember = (((void *)0));
1770 if(member->identifiers)
1772 struct __ecereNameSpace__ecere__com__DataMember * _subMemberStack[256];
1773 int _subMemberStackPos = 0;
1774 struct Identifier * firstID = (*member->identifiers).first;
1776 thisMember = (struct __ecereNameSpace__ecere__com__DataMember *)__ecereNameSpace__ecere__com__eClass_FindProperty(classSym->registered, firstID->string, privateModule);
1778 thisMember = __ecereNameSpace__ecere__com__eClass_FindDataMember(classSym->registered, firstID->string, privateModule, _subMemberStack, &_subMemberStackPos);
1782 if(thisMember->memberAccess == 1)
1784 curMember = thisMember;
1785 curClass = curMember->_class;
1786 memcpy(subMemberStack, _subMemberStack, sizeof(struct __ecereNameSpace__ecere__com__DataMember *) * _subMemberStackPos);
1787 subMemberStackPos = _subMemberStackPos;
1790 else if(classSym->registered->type != 1)
1792 method = __ecereNameSpace__ecere__com__eClass_FindMethod(classSym->registered, ident->string, privateModule);
1793 if(!method || method->type != 1)
1794 method = (((void *)0));
1799 __ecereNameSpace__ecere__com__eClass_FindNextMember(classSym->registered, &curClass, &curMember, subMemberStack, &subMemberStackPos);
1800 thisMember = curMember;
1802 if(instExp && (thisMember || method))
1804 struct Expression * instExpCopy = CopyExpression(instExp);
1805 struct Expression * setExp = (((void *)0));
1807 instExpCopy->tempCount = instExp->tempCount;
1809 ident = MkIdentifier(thisMember->name);
1812 struct Expression * memberExp;
1813 unsigned int freeMemberExp = 0x0;
1815 if(thisMember && thisMember->isProperty && ((struct __ecereNameSpace__ecere__com__Property *)thisMember)->conversion)
1817 if(member->identifiers && (*member->identifiers).count > 1)
1819 struct Identifier * id = (*member->identifiers).first;
1821 memberExp = MkExpMember(instExpCopy, id);
1822 for(id = id->next; id; id = id->next)
1823 memberExp = MkExpMember(memberExp, id);
1826 memberExp = MkExpMember(instExpCopy, ident);
1827 if(member->initializer && member->initializer->type == 0 && member->initializer->exp)
1829 member->initializer->exp->usage = (member->initializer->exp->usage & ~0x1) | (((unsigned int)0x1) << 0);
1830 setExp = MkExpOp(memberExp, '=', member->initializer->exp);
1831 member->initializer->exp = (((void *)0));
1832 FreeInitializer(member->initializer);
1833 member->initializer = (((void *)0));
1837 freeMemberExp = 0x1;
1839 memberExp->loc = inst->loc;
1840 if(member->identifiers)
1841 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Clear((&*member->identifiers));
1843 setExp->loc = inst->loc;
1844 FreeType(instExpCopy->expType);
1845 instExpCopy->expType = instExp->expType;
1846 if(instExp->expType)
1847 instExp->expType->refCount++;
1850 ProcessExpressionType(setExp);
1851 ProcessExpression(setExp);
1852 ListAdd(list, setExp);
1855 FreeExpression(memberExp);
1863 return fullSet || convert;
1866 extern struct ModuleImport * mainModule;
1868 extern char * __ecereNameSpace__ecere__sys__CopyString(const char * string);
1870 extern struct Specifier * MkStructOrUnion(int type, struct Identifier * id, struct __ecereNameSpace__ecere__sys__OldList * definitions);
1872 extern struct Declarator * MkDeclaratorPointer(struct Pointer * pointer, struct Declarator * declarator);
1874 extern struct Pointer * MkPointer(struct __ecereNameSpace__ecere__sys__OldList * qualifiers, struct Pointer * pointer);
1876 extern struct InitDeclarator * MkInitDeclarator(struct Declarator * declarator, struct Initializer * initializer);
1878 extern struct Declaration * MkDeclaration(struct __ecereNameSpace__ecere__sys__OldList * specifiers, struct __ecereNameSpace__ecere__sys__OldList * initDeclarators);
1880 extern struct External * MkExternalDeclaration(struct Declaration * declaration);
1882 extern void DeclareStruct(const char * name, unsigned int skipNoHead);
1884 void __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add(struct __ecereNameSpace__ecere__sys__OldList * this, void * item);
1886 unsigned int __ecereMethod___ecereNameSpace__ecere__sys__OldList_Insert(struct __ecereNameSpace__ecere__sys__OldList * this, void * prevItem, void * item);
1888 void __ecereMethod___ecereNameSpace__ecere__sys__OldList_Move(struct __ecereNameSpace__ecere__sys__OldList * this, void * item, void * prevItem);
1890 void DeclareClass(struct Symbol * classSym, const char * className)
1892 if(classSym && classSym->id == (((int)0x7fffffff)))
1894 struct Declaration * decl;
1895 struct __ecereNameSpace__ecere__sys__OldList * specifiers, * declarators;
1896 struct Declarator * d;
1898 if(!classSym->_import)
1900 if(!classSym->module)
1901 classSym->module = mainModule;
1902 if(!classSym->module)
1904 classSym->_import = __extension__ ({
1905 struct ClassImport * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_ClassImport);
1907 __ecereInstance1->isRemote = classSym->registered ? classSym->registered->isRemote : 0, __ecereInstance1->name = __ecereNameSpace__ecere__sys__CopyString(classSym->string), __ecereInstance1;
1909 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add(&classSym->module->classes, classSym->_import);
1911 classSym->_import->itself = 0x1;
1912 specifiers = MkList();
1913 declarators = MkList();
1914 ListAdd(specifiers, MkSpecifier(EXTERN));
1915 ListAdd(specifiers, MkStructOrUnion(3, MkIdentifier("__ecereNameSpace__ecere__com__Class"), (((void *)0))));
1916 d = MkDeclaratorPointer(MkPointer((((void *)0)), (((void *)0))), MkDeclaratorIdentifier(MkIdentifier(className)));
1917 ListAdd(declarators, MkInitDeclarator(d, (((void *)0))));
1918 decl = MkDeclaration(specifiers, declarators);
1921 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Insert((&*ast), curExternal->prev, (classSym->pointerExternal = MkExternalDeclaration(decl)));
1922 classSym->id = curExternal->symbol ? curExternal->symbol->idCode : 0;
1923 classSym->idCode = classSym->id;
1926 else if(classSym && curExternal && curExternal->symbol->idCode < classSym->id)
1928 if(classSym->structExternal)
1929 DeclareStruct(classSym->string, classSym->registered && classSym->registered->type == 5);
1930 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Move((&*ast), classSym->pointerExternal, curExternal->prev);
1931 if(classSym->structExternal)
1932 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Move((&*ast), classSym->structExternal, classSym->pointerExternal);
1933 classSym->id = curExternal->symbol->idCode;
1934 classSym->idCode = classSym->id;
1938 void ProcessExpressionInstPass(struct Expression * exp)
1940 ProcessExpression(exp);
1943 extern struct Context * curContext;
1945 static unsigned int ProcessBracketInst(struct Instantiation * inst, struct __ecereNameSpace__ecere__sys__OldList * list);
1947 extern struct Specifier * MkSpecifierName(const char * name);
1949 extern struct Initializer * MkInitializerList(struct __ecereNameSpace__ecere__sys__OldList * list);
1951 extern struct Declaration * MkDeclarationInst(struct Instantiation * inst);
1953 extern struct Instantiation * MkInstantiation(struct Specifier * _class, struct Expression * exp, struct __ecereNameSpace__ecere__sys__OldList * members);
1955 extern struct Specifier * CopySpecifier(struct Specifier * spec);
1957 extern struct Expression * QMkExpId(const char * id);
1959 static void ProcessDeclaration(struct Declaration * decl);
1961 extern char * strcpy(char * , const char * );
1963 extern struct Symbol * FindClass(const char * name);
1965 extern void FullClassNameCat(char * output, const char * className, unsigned int includeTemplateParams);
1967 extern void MangleClassName(char * className);
1969 static struct Declaration * curDecl;
1971 static int declTempCount;
1973 extern struct Context * PushContext(void);
1975 extern struct Declaration * QMkDeclaration(const char * name, struct InitDeclarator * initDecl);
1977 extern struct Initializer * MkInitializerAssignment(struct Expression * exp);
1979 extern struct Statement * MkExpressionStmt(struct __ecereNameSpace__ecere__sys__OldList * expressions);
1981 extern void PopContext(struct Context * ctx);
1983 extern void FreeInstance(struct Instantiation * inst);
1985 extern struct Type * ProcessTypeString(const char * string, unsigned int staticMethod);
1987 extern void ProcessMethodType(struct __ecereNameSpace__ecere__com__Method * method);
1989 static void ProcessStatement(struct Statement * stmt);
1991 extern void CheckTemplateTypes(struct Expression * exp);
1993 void __ecereMethod___ecereNameSpace__ecere__sys__OldList_Remove(struct __ecereNameSpace__ecere__sys__OldList * this, void * item);
1995 void __ecereMethod___ecereNameSpace__ecere__sys__OldList_Free(struct __ecereNameSpace__ecere__sys__OldList * this, void (* freeFn)(void * ));
1997 static void ProcessExpression(struct Expression * exp)
2005 struct Instantiation * inst = exp->instance;
2007 if(inCompiler && inst->_class)
2009 char className[1024];
2010 struct Symbol * classSym = inst->_class->symbol;
2011 struct Expression * instExp;
2013 if(classSym && classSym->registered && classSym->registered->type == 2)
2017 struct __ecereNameSpace__ecere__sys__OldList list =
2022 ProcessInstMembers(inst, (((void *)0)), &list, 0x0);
2023 ProcessExpression(inst->exp);
2026 exp->op.exp1 = inst->exp;
2027 exp->op.exp2 = list.first;
2028 inst->exp = (((void *)0));
2032 struct Type * expType = exp->expType;
2033 struct Expression * prev = exp->prev, * next = exp->next;
2034 struct __ecereNameSpace__ecere__sys__OldList list =
2039 ProcessInstMembers(inst, (((void *)0)), &list, 0x0);
2040 FreeType(exp->destType);
2041 *exp = *(struct Expression *)list.first;
2043 struct Expression * firstExp = list.first;
2045 ((firstExp ? (__ecereClass_Expression->Destructor ? __ecereClass_Expression->Destructor((void *)firstExp) : 0, __ecereNameSpace__ecere__com__eSystem_Delete(firstExp)) : 0), firstExp = 0);
2047 FreeType(exp->destType);
2048 exp->destType = expType;
2053 else if(classSym && classSym->registered && (classSym->registered->type == 3 || classSym->registered->type == 4))
2057 struct __ecereNameSpace__ecere__sys__OldList list =
2061 struct Expression * e;
2063 ProcessInstMembers(inst, (((void *)0)), &list, 0x0);
2064 ProcessExpression(inst->exp);
2067 exp->op.exp1 = inst->exp;
2068 exp->op.exp2 = list.first;
2069 inst->exp = (((void *)0));
2070 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Remove(&list, list.first);
2071 while((e = list.first))
2073 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Remove(&list, e);
2079 struct Expression * prev = exp->prev, * next = exp->next;
2080 struct Type * expType = exp->expType;
2081 struct __ecereNameSpace__ecere__sys__OldList list =
2086 ProcessInstMembers(inst, (((void *)0)), &list, 0x0);
2089 struct Expression * e = list.first;
2091 FreeType(exp->destType);
2093 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Remove(&list, e);
2094 ((e ? (__ecereClass_Expression->Destructor ? __ecereClass_Expression->Destructor((void *)e) : 0, __ecereNameSpace__ecere__com__eSystem_Delete(e)) : 0), e = 0);
2095 exp->expType = expType;
2098 while((e = list.first))
2100 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Remove(&list, e);
2107 exp->constant = __ecereNameSpace__ecere__sys__CopyString("0");
2111 else if(classSym && classSym->registered && classSym->registered->type == 1)
2116 exp->list = MkList();
2117 ProcessInstMembers(inst, inst->exp, exp->list, 0x0);
2118 ProcessExpression(inst->exp);
2119 if(!(*exp->list).count)
2122 (__ecereNameSpace__ecere__com__eSystem_Delete(exp->list), exp->list = 0);
2127 struct Declaration * decl;
2128 struct Declaration * dummyDecl;
2131 dummyDecl = MkDeclaration((((void *)0)), (((void *)0)));
2132 if(!curCompound->compound.declarations)
2133 curCompound->compound.declarations = MkList();
2134 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Insert((&*curCompound->compound.declarations), (((void *)0)), dummyDecl);
2135 sprintf(className, "__simpleStruct%d", curContext->simpleID++);
2137 struct __ecereNameSpace__ecere__sys__OldList * list = MkList();
2139 if(inst->isConstant && ProcessBracketInst(inst, list))
2141 decl = MkDeclaration(MkList(), MkList());
2142 ListAdd(decl->specifiers, MkSpecifierName(inst->_class->name));
2143 ListAdd(decl->declarators, MkInitDeclarator(MkDeclaratorIdentifier(MkIdentifier(className)), MkInitializerList(list)));
2145 exp->identifier = MkIdentifier(className);
2149 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Free((&*list), (((void *)0)));
2150 (__ecereNameSpace__ecere__com__eSystem_Delete(list), list = 0);
2151 decl = MkDeclarationInst(MkInstantiation(CopySpecifier(inst->_class), MkExpIdentifier(MkIdentifier(className)), (((void *)0))));
2153 exp->list = MkList();
2154 instExp = QMkExpId(className);
2155 instExp->loc = exp->loc;
2156 instExp->expType = MkClassType(inst->_class->name);
2157 decl->inst->fullSet = ProcessInstMembers(inst, instExp, exp->list, 0x0);
2158 ListAdd(exp->list, instExp);
2161 FreeType(exp->expType);
2162 exp->expType = MkClassType(inst->_class->name);
2164 void * prev = dummyDecl->prev, * next = dummyDecl->next;
2167 dummyDecl->prev = prev;
2168 dummyDecl->next = next;
2169 ((decl ? (__ecereClass_Declaration->Destructor ? __ecereClass_Declaration->Destructor((void *)decl) : 0, __ecereNameSpace__ecere__com__eSystem_Delete(decl)) : 0), decl = 0);
2172 ProcessDeclaration(decl);
2178 struct Expression * newCall;
2180 if(classSym && classSym->registered && classSym->registered->type == 5 && (classSym->registered->templateClass ? classSym->registered->templateClass->fixed : classSym->registered->fixed))
2184 sprintf(size, "%d", classSym->registered->templateClass ? classSym->registered->templateClass->structSize : classSym->registered->structSize);
2185 newCall = MkExpCall(QMkExpId("ecere::com::eSystem_New0"), MkListOne(MkExpConstant(size)));
2186 newCall->byReference = 0x1;
2190 strcpy(className, "__ecereClass_");
2191 if(classSym && classSym->registered && classSym->registered->type == 5 && classSym->registered->templateClass)
2193 classSym = FindClass(classSym->registered->templateClass->fullName);
2194 FullClassNameCat(className, classSym->string, 0x1);
2197 FullClassNameCat(className, inst->_class->name, 0x1);
2198 MangleClassName(className);
2199 DeclareClass(classSym, className);
2200 newCall = MkExpCall(QMkExpId("ecere::com::eInstance_New"), MkListOne(QMkExpId(className)));
2201 ProcessExpressionType(newCall);
2202 newCall->byReference = 0x1;
2206 if(inst->members && (*inst->members).first)
2209 exp->list = MkList();
2212 ListAdd(exp->list, MkExpOp(inst->exp, '=', newCall));
2215 FreeExpression(newCall);
2216 ProcessInstMembers(inst, inst->exp, exp->list, 0x0);
2218 FreeExpression(inst->exp);
2224 exp->op.exp1 = inst->exp;
2225 exp->op.exp2 = newCall;
2226 ProcessExpression(inst->exp);
2228 inst->exp = (((void *)0));
2232 if(inst->members && (*inst->members).first)
2234 int __simpleStruct0;
2235 char ecereTemp[100];
2236 struct MembersInit * members;
2237 int tempCount = exp->tempCount;
2238 struct __ecereNameSpace__ecere__sys__OldList * expList;
2240 for(members = (*inst->members).first; members; members = members->next)
2242 if(members->type == 0 && members->dataMembers)
2244 struct MemberInit * member;
2246 for(member = (*members->dataMembers).first; member; member = member->next)
2248 if(member->initializer && member->initializer->type == 0)
2250 int __simpleStruct0;
2252 ProcessMemberInitData(member);
2253 tempCount = (__simpleStruct0 = member->initializer->exp->tempCount, (tempCount > __simpleStruct0) ? tempCount : __simpleStruct0);
2259 tempCount = ((tempCount > declTempCount) ? tempCount : declTempCount);
2261 curExternal->function->tempCount = (__simpleStruct0 = curExternal->function->tempCount, (__simpleStruct0 > tempCount) ? __simpleStruct0 : tempCount);
2262 sprintf(ecereTemp, "__ecereInstance%d", tempCount);
2264 exp->compound = MkCompoundStmt((((void *)0)), (((void *)0)));
2265 exp->compound->compound.context = PushContext();
2266 exp->compound->compound.context->simpleID = exp->compound->compound.context->parent->simpleID;
2267 exp->compound->compound.declarations = MkListOne(QMkDeclaration(inst->_class->name, MkInitDeclarator(MkDeclaratorIdentifier(MkIdentifier(ecereTemp)), MkInitializerAssignment(newCall))));
2268 exp->compound->compound.statements = MkListOne(MkExpressionStmt((expList = MkList())));
2269 instExp = QMkExpId(ecereTemp);
2270 instExp->tempCount = tempCount;
2271 instExp->expType = MkClassType(inst->_class->name);
2272 instExp->byReference = 0x1;
2273 ProcessInstMembers(inst, instExp, expList, 0x0);
2274 FreeExpression(instExp);
2277 struct Expression * tmpExp = QMkExpId(ecereTemp);
2279 tmpExp->byReference = 0x1;
2280 ListAdd(expList, tmpExp);
2282 exp->tempCount = tempCount;
2284 declTempCount = ((declTempCount > tempCount) ? declTempCount : tempCount);
2285 PopContext(exp->compound->compound.context);
2289 FreeType(newCall->destType);
2290 FreeType(newCall->expType);
2291 newCall->destType = exp->destType;
2292 newCall->expType = exp->expType;
2294 ((newCall ? (__ecereClass_Expression->Destructor ? __ecereClass_Expression->Destructor((void *)newCall) : 0, __ecereNameSpace__ecere__com__eSystem_Delete(newCall)) : 0), newCall = 0);
2302 ProcessInstantiation(inst);
2311 ProcessExpression(exp->_new.size);
2315 ProcessExpression(exp->_renew.size);
2316 ProcessExpression(exp->_renew.exp);
2324 exp->op.exp2->usage = (exp->op.exp2->usage & ~0x1) | (((unsigned int)0x1) << 0);
2326 exp->op.exp1->usage = (exp->op.exp1->usage & ~0x2) | (((unsigned int)0x1) << 1);
2339 exp->op.exp2->usage = (exp->op.exp2->usage & ~0x1) | (((unsigned int)0x1) << 0);
2341 exp->op.exp1->usage = (exp->op.exp1->usage & ~0x2) | (((unsigned int)0x1) << 1);
2346 exp->op.exp1->usage = (exp->op.exp1->usage & ~0x2) | (((unsigned int)0x1) << 1);
2348 if(exp->op.exp1 && exp->op.exp2)
2350 exp->op.exp1->usage = (exp->op.exp1->usage & ~0x1) | (((unsigned int)0x1) << 0);
2351 exp->op.exp2->usage = (exp->op.exp2->usage & ~0x1) | (((unsigned int)0x1) << 0);
2359 exp->op.exp1->usage = (exp->op.exp1->usage & ~0x1) | (((unsigned int)0x1) << 0);
2364 exp->op.exp2->usage = (exp->op.exp2->usage & ~0x1) | (((unsigned int)0x1) << 0);
2381 exp->op.exp1->usage = (exp->op.exp1->usage & ~0x1) | (((unsigned int)0x1) << 0);
2383 exp->op.exp2->usage = (exp->op.exp2->usage & ~0x1) | (((unsigned int)0x1) << 0);
2388 ProcessExpression(exp->op.exp1);
2393 exp->op.exp2->tempCount = exp->op.exp1->tempCount;
2394 ProcessExpression(exp->op.exp2);
2401 struct Expression * e;
2403 for(e = (*exp->list).first; e; e = e->next)
2405 int __simpleStruct2, __simpleStruct3;
2406 int __simpleStruct0, __simpleStruct1;
2408 e->tempCount = (__simpleStruct0 = e->tempCount, __simpleStruct1 = exp->tempCount, (__simpleStruct0 > __simpleStruct1) ? __simpleStruct0 : __simpleStruct1);
2411 e->usage |= (exp->usage & ((((unsigned int)(0x1)) | (((unsigned int)(0x1)) << 2))));
2413 ProcessExpression(e);
2414 exp->tempCount = (__simpleStruct2 = exp->tempCount, __simpleStruct3 = e->tempCount, (__simpleStruct2 > __simpleStruct3) ? __simpleStruct2 : __simpleStruct3);
2420 struct Expression * e;
2422 exp->index.exp->usage = (exp->index.exp->usage & ~0x1) | (((unsigned int)0x1) << 0);
2423 ProcessExpression(exp->index.exp);
2424 for(e = (*exp->index.index).first; e; e = e->next)
2427 e->usage = (e->usage & ~0x1) | (((unsigned int)0x1) << 0);
2428 ProcessExpression(e);
2430 exp->tempCount = exp->index.exp->tempCount;
2435 struct Expression * e;
2437 ProcessExpression(exp->call.exp);
2438 if(exp->call.arguments)
2440 for(e = (*exp->call.arguments).first; e; e = e->next)
2442 e->usage = (e->usage & ~0x1) | (((unsigned int)0x1) << 0);
2443 e->usage = (e->usage & ~0x4) | (((unsigned int)0x1) << 2);
2444 ProcessExpression(e);
2451 exp->member.exp->usage = (exp->member.exp->usage & ~0x1) | (((unsigned int)0x1) << 0);
2452 ProcessExpression(exp->member.exp);
2453 if(!exp->member.memberType)
2455 struct Type * type = exp->member.exp->expType;
2457 if((type && type->kind == 8 && exp->member.member))
2459 struct __ecereNameSpace__ecere__com__Class * _class = (exp->member.member->_class && exp->member.member->classSym) ? exp->member.member->classSym->registered : (type->_class ? type->_class->registered : (((void *)0)));
2460 struct __ecereNameSpace__ecere__com__Property * prop = (((void *)0));
2461 struct __ecereNameSpace__ecere__com__Method * method = (((void *)0));
2462 struct __ecereNameSpace__ecere__com__DataMember * member = (((void *)0));
2463 struct __ecereNameSpace__ecere__com__Property * revConvert = (((void *)0));
2465 if(exp->member.thisPtr)
2467 member = __ecereNameSpace__ecere__com__eClass_FindDataMember(_class, exp->member.member->string, privateModule, (((void *)0)), (((void *)0)));
2469 prop = __ecereNameSpace__ecere__com__eClass_FindProperty(_class, exp->member.member->string, privateModule);
2473 prop = __ecereNameSpace__ecere__com__eClass_FindProperty(_class, exp->member.member->string, (((void *)0)));
2475 member = __ecereNameSpace__ecere__com__eClass_FindDataMember(_class, exp->member.member->string, (((void *)0)), (((void *)0)), (((void *)0)));
2476 if(!prop && !member)
2478 method = __ecereNameSpace__ecere__com__eClass_FindMethod(_class, exp->member.member->string, (((void *)0)));
2481 prop = __ecereNameSpace__ecere__com__eClass_FindProperty(_class, exp->member.member->string, privateModule);
2483 member = __ecereNameSpace__ecere__com__eClass_FindDataMember(_class, exp->member.member->string, privateModule, (((void *)0)), (((void *)0)));
2487 if(!prop && !member && !method)
2488 method = __ecereNameSpace__ecere__com__eClass_FindMethod(_class, exp->member.member->string, privateModule);
2489 if(!prop && !member && !method)
2491 struct Symbol * classSym = FindClass(exp->member.member->string);
2495 struct __ecereNameSpace__ecere__com__Class * convertClass = classSym->registered;
2498 revConvert = __ecereNameSpace__ecere__com__eClass_FindProperty(convertClass, _class->fullName, privateModule);
2503 exp->member.memberType = 1;
2505 prop->dataType = ProcessTypeString(prop->dataTypeString, 0x0);
2506 FreeType(exp->expType);
2507 exp->expType = prop->dataType;
2509 prop->dataType->refCount++;
2513 exp->member.memberType = 2;
2514 if(!method->dataType)
2515 ProcessMethodType(method);
2516 FreeType(exp->expType);
2517 exp->expType = method->dataType;
2518 if(method->dataType)
2519 method->dataType->refCount++;
2523 exp->member.memberType = 3;
2524 DeclareStruct(_class->fullName, 0x0);
2525 if(!member->dataType)
2526 member->dataType = ProcessTypeString(member->dataTypeString, 0x0);
2527 FreeType(exp->expType);
2528 exp->expType = member->dataType;
2529 if(member->dataType)
2530 member->dataType->refCount++;
2534 exp->member.memberType = 4;
2535 FreeType(exp->expType);
2536 exp->expType = MkClassType(revConvert->_class->fullName);
2546 exp->cast.exp->usage = (exp->cast.exp->usage & ~0x1) | (((unsigned int)0x1) << 0);
2547 ProcessExpression(exp->cast.exp);
2552 struct Expression * e;
2554 if(((unsigned int)((exp->usage & 0x1) >> 0)))
2555 exp->cond.cond->usage = (exp->cond.cond->usage & ~0x1) | (((unsigned int)0x1) << 0);
2556 ProcessExpression(exp->cond.cond);
2557 for(e = (*exp->cond.exp).first; e; e = e->next)
2559 if(!e->next && ((unsigned int)((exp->usage & 0x1) >> 0)))
2560 e->usage = (e->usage & ~0x1) | (((unsigned int)0x1) << 0);
2561 ProcessExpression(e);
2563 if(exp->cond.elseExp)
2565 if(((unsigned int)((exp->usage & 0x1) >> 0)))
2566 exp->cond.elseExp->usage = (exp->cond.elseExp->usage & ~0x1) | (((unsigned int)0x1) << 0);
2567 ProcessExpression(exp->cond.elseExp);
2573 if(exp->compound->compound.statements && ((struct Statement *)(*exp->compound->compound.statements).last)->type == 3 && ((struct Statement *)(*exp->compound->compound.statements).last)->expressions && (*((struct Statement *)(*exp->compound->compound.statements).last)->expressions).last)
2575 ((struct Expression *)(*((struct Statement *)(*exp->compound->compound.statements).last)->expressions).last)->usage = exp->usage;
2577 ProcessStatement(exp->compound);
2582 ProcessExpression(exp->vaArg.exp);
2587 ProcessInitializer(exp->initializer.initializer);
2591 CheckTemplateTypes(exp);
2594 static void ProcessInitializer(struct Initializer * init)
2599 init->exp->usage = (init->exp->usage & ~0x1) | (((unsigned int)0x1) << 0);
2600 ProcessExpression(init->exp);
2604 struct Initializer * i;
2606 for(i = (*init->list).first; i; i = i->next)
2607 ProcessInitializer(i);
2613 static void ProcessSpecifier(struct Specifier * spec)
2625 struct Enumerator * e;
2629 for(e = (*spec->list).first; e; e = e->next)
2632 ProcessExpression(e->exp);
2640 if(spec->definitions)
2642 struct ClassDef * def;
2644 for(def = (*spec->definitions).first; def; def = def->next)
2646 if(def->type == 2 && def->decl && def->decl->type == 0)
2647 ProcessDeclaration(def->decl);
2655 extern void FreeList(struct __ecereNameSpace__ecere__sys__OldList * list, void (* FreeFunction)(void * ));
2657 extern struct Specifier * _MkSpecifierName(const char * name, struct Symbol * symbol, struct __ecereNameSpace__ecere__sys__OldList * templateArgs);
2659 extern struct Identifier * CopyIdentifier(struct Identifier * id);
2661 extern struct MemberInit * MkMemberInit(struct __ecereNameSpace__ecere__sys__OldList * ids, struct Initializer * initializer);
2663 extern int strcmp(const char * , const char * );
2665 extern struct Expression * MkExpInstance(struct Instantiation * inst);
2667 extern struct MembersInit * MkMembersInitList(struct __ecereNameSpace__ecere__sys__OldList * dataMembers);
2669 static unsigned int ProcessBracketInst_DataMember(struct __ecereNameSpace__ecere__com__DataMember * parentMember, struct Instantiation * inst, struct __ecereNameSpace__ecere__sys__OldList * list, struct __ecereNameSpace__ecere__com__DataMember * namedParentMember, unsigned int parentMemberSet)
2671 struct Symbol * classSym = inst->_class->symbol;
2672 struct __ecereNameSpace__ecere__com__DataMember * dataMember = (((void *)0));
2673 unsigned int someMemberSet = 0x0;
2675 for(dataMember = parentMember->members.first; dataMember; dataMember = dataMember->next)
2677 struct MembersInit * members;
2678 struct MemberInit * member = (((void *)0));
2680 if(!dataMember->name && (dataMember->type == 1 || dataMember->type == 2))
2682 struct __ecereNameSpace__ecere__sys__OldList * subList = 0;
2684 if(!ProcessBracketInst_DataMember(dataMember, inst, subList ? subList : list, dataMember->name ? dataMember : namedParentMember, someMemberSet || parentMemberSet))
2687 FreeList(subList, FreeInitializer);
2690 if(subList && (*subList).count)
2692 ListAdd(list, MkInitializerList(subList));
2693 someMemberSet = 0x1;
2698 someMemberSet = 0x1;
2699 (__ecereNameSpace__ecere__com__eSystem_Delete(subList), subList = 0);
2704 struct __ecereNameSpace__ecere__com__Class * curClass = (((void *)0));
2705 struct __ecereNameSpace__ecere__com__DataMember * curMember = (((void *)0));
2706 struct __ecereNameSpace__ecere__com__DataMember * subMemberStack[256];
2707 int subMemberStackPos = 0;
2708 unsigned int found = 0x0;
2710 if(inst->members && (*inst->members).first)
2712 for(members = (*inst->members).first; members; members = members->next)
2714 if(members->type == 0)
2716 for(member = (*members->dataMembers).first; member; member = member->next)
2718 if(member->identifiers)
2720 struct Identifier * firstID = (*member->identifiers).first;
2721 struct __ecereNameSpace__ecere__com__DataMember * _subMemberStack[256];
2722 int _subMemberStackPos = 0;
2723 struct __ecereNameSpace__ecere__com__DataMember * thisMember;
2725 thisMember = firstID ? (struct __ecereNameSpace__ecere__com__DataMember *)__ecereNameSpace__ecere__com__eClass_FindProperty(classSym->registered, firstID->string, privateModule) : (((void *)0));
2726 if(!thisMember && firstID)
2727 thisMember = __ecereNameSpace__ecere__com__eClass_FindDataMember(classSym->registered, firstID->string, privateModule, _subMemberStack, &_subMemberStackPos);
2728 if(thisMember && thisMember->memberAccess == 1)
2730 curMember = thisMember;
2731 curClass = curMember->_class;
2732 memcpy(subMemberStack, _subMemberStack, sizeof(struct __ecereNameSpace__ecere__com__DataMember *) * _subMemberStackPos);
2733 subMemberStackPos = _subMemberStackPos;
2735 if(dataMember == thisMember)
2737 if((*member->identifiers).count > 1 && member->initializer && member->initializer->type == 0)
2739 struct __ecereNameSpace__ecere__sys__OldList * partList = MkList();
2740 struct Symbol * symbol;
2741 struct Specifier * spec;
2742 struct MembersInit * nextMembers;
2743 struct MemberInit * next = member->next;
2745 if(!dataMember->dataType)
2746 dataMember->dataType = ProcessTypeString(dataMember->dataTypeString, 0x0);
2747 symbol = (dataMember->dataType && dataMember->dataType->kind == 8) ? dataMember->dataType->_class : (((void *)0));
2748 spec = _MkSpecifierName(dataMember->dataTypeString, symbol, (((void *)0)));
2750 struct __ecereNameSpace__ecere__sys__OldList * identifiers = MkList();
2751 struct Identifier * id;
2753 for(id = ((struct Identifier *)(*member->identifiers).first)->next; id; id = id->next)
2754 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*identifiers), CopyIdentifier(id));
2755 ListAdd(partList, MkMemberInit(identifiers, MkInitializerAssignment(member->initializer->exp)));
2757 for(nextMembers = members; nextMembers; nextMembers = nextMembers->next)
2759 if(!nextMembers->dataMembers)
2761 if(members != nextMembers)
2762 next = (*nextMembers->dataMembers).first;
2763 if(nextMembers->type == 0)
2765 struct MemberInit * nextMember;
2767 for(nextMember = next; nextMember; nextMember = next, next = nextMember ? nextMember->next : (((void *)0)))
2769 struct Identifier * nextID = (*nextMember->identifiers).first;
2771 if(nextMember->identifiers && (*nextMember->identifiers).count > 1 && !strcmp(firstID->string, nextID->string))
2773 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Remove((&*nextMembers->dataMembers), nextMember);
2774 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Remove((&*nextMember->identifiers), nextID);
2775 ListAdd(partList, nextMember);
2780 member->initializer->exp = MkExpInstance(MkInstantiation(spec, (((void *)0)), MkListOne(MkMembersInitList(partList))));
2788 __ecereNameSpace__ecere__com__eClass_FindNextMember(classSym->registered, &curClass, &curMember, subMemberStack, &subMemberStackPos);
2789 if(curMember == dataMember)
2801 if(member && member->initializer && member->initializer->type == 0)
2803 struct Initializer * init = (init = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Initializer), init->loc = yylloc, init);
2805 if(namedParentMember->type == 1 && dataMember->name)
2806 init->id = MkIdentifier(dataMember->name);
2807 if(member->initializer->exp->type == 1 && member->initializer->exp->expType && member->initializer->exp->expType->_class->registered->type == 1)
2809 struct __ecereNameSpace__ecere__sys__OldList * subList = MkList();
2811 ProcessBracketInst(member->initializer->exp->instance, subList);
2812 FreeExpression(member->initializer->exp);
2813 if((*subList).count)
2816 init->list = subList;
2820 FreeInitializer(init);
2821 init = (((void *)0));
2826 member->initializer->exp->usage = (member->initializer->exp->usage & ~0x1) | (((unsigned int)0x1) << 0);
2827 ProcessExpression(member->initializer->exp);
2829 init->exp = member->initializer->exp;
2832 ListAdd(list, init);
2833 member->initializer->exp = (((void *)0));
2834 FreeInitializer(member->initializer);
2835 member->initializer = (((void *)0));
2836 someMemberSet = 0x1;
2838 else if(member && member->initializer && member->initializer->type == 1)
2840 if(namedParentMember->type == 1 && dataMember->name)
2841 member->initializer->id = MkIdentifier(dataMember->name);
2842 ListAdd(list, member->initializer);
2843 member->initializer = (((void *)0));
2844 someMemberSet = 0x1;
2846 else if(dataMember && dataMember->dataTypeString && parentMember->type != 1 && namedParentMember->type != 1)
2848 struct Symbol * classSym;
2849 struct Initializer * init = (init = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Initializer), init->loc = yylloc, init);
2851 if(namedParentMember->type == 1 && dataMember->name)
2852 init->id = MkIdentifier(dataMember->name);
2853 if(!dataMember->dataType)
2854 dataMember->dataType = ProcessTypeString(dataMember->dataTypeString, 0x0);
2855 classSym = (dataMember->dataType && dataMember->dataType->kind == 8) ? dataMember->dataType->_class : (((void *)0));
2856 if(classSym && classSym->registered && classSym->registered->type == 1)
2858 struct __ecereNameSpace__ecere__sys__OldList * subList = MkList();
2859 struct Specifier * spec = _MkSpecifierName(dataMember->dataTypeString, classSym, (((void *)0)));
2860 struct Instantiation * inst = MkInstantiation(spec, (((void *)0)), (((void *)0)));
2862 ProcessBracketInst(inst, subList);
2864 if((*subList).count)
2867 init->list = subList;
2871 FreeInitializer(init);
2872 init = (((void *)0));
2878 init->exp = MkExpConstant("0");
2880 someMemberSet = 0x1;
2882 ListAdd(list, init);
2886 if(parentMember->type == 1 && !someMemberSet && !parentMemberSet)
2888 struct Symbol * classSym;
2889 struct Initializer * init = (init = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Initializer), init->loc = yylloc, init);
2891 dataMember = parentMember->members.first;
2892 if(namedParentMember->type == 1 && dataMember->name)
2893 init->id = MkIdentifier(dataMember->name);
2894 if(!dataMember->dataType && dataMember->dataTypeString)
2895 dataMember->dataType = ProcessTypeString(dataMember->dataTypeString, 0x0);
2896 classSym = (dataMember->dataType && dataMember->dataType->kind == 8) ? dataMember->dataType->_class : (((void *)0));
2897 if(classSym && classSym->registered && classSym->registered->type == 1)
2899 struct __ecereNameSpace__ecere__sys__OldList * subList = MkList();
2900 struct Specifier * spec = _MkSpecifierName(dataMember->dataTypeString, classSym, (((void *)0)));
2901 struct Instantiation * inst = MkInstantiation(spec, (((void *)0)), (((void *)0)));
2903 ProcessBracketInst(inst, subList);
2906 init->list = subList;
2911 init->exp = MkExpConstant("0");
2913 ListAdd(list, init);
2918 extern void Compiler_Error(const char * format, ...);
2920 extern const char * __ecereNameSpace__ecere__GetTranslatedString(const char * name, const char * string, const char * stringAndContext);
2922 static unsigned int ProcessBracketInst(struct Instantiation * inst, struct __ecereNameSpace__ecere__sys__OldList * list)
2924 static int recursionCount = 0;
2925 struct Symbol * classSym = inst->_class->symbol;
2926 struct __ecereNameSpace__ecere__com__Class * _class = (((void *)0));
2928 if(recursionCount > 500)
2931 while(_class != classSym->registered)
2933 struct __ecereNameSpace__ecere__com__DataMember * dataMember;
2934 struct __ecereNameSpace__ecere__com__Class * lastClass = _class;
2936 for(_class = classSym->registered; _class->base != lastClass && _class->base->type != 1000; _class = _class->base)
2938 for(dataMember = _class->membersAndProperties.first; dataMember; dataMember = dataMember->next)
2940 if(!dataMember->isProperty && !dataMember->name && (dataMember->type == 1 || dataMember->type == 2))
2942 struct __ecereNameSpace__ecere__sys__OldList * subList = 0;
2944 if(!ProcessBracketInst_DataMember(dataMember, inst, subList ? subList : list, dataMember, 0x0))
2947 FreeList(subList, FreeInitializer);
2951 if(dataMember->type == 2 || (subList && (*subList).count))
2952 ListAdd(list, MkInitializerList(subList));
2954 (__ecereNameSpace__ecere__com__eSystem_Delete(subList), subList = 0);
2958 struct MembersInit * members;
2959 struct MemberInit * member = (((void *)0));
2960 unsigned int found = 0x0;
2962 if(inst->members && (*inst->members).first)
2964 struct __ecereNameSpace__ecere__com__DataMember * curMember = (((void *)0));
2965 struct __ecereNameSpace__ecere__com__Class * curClass = (((void *)0));
2966 struct __ecereNameSpace__ecere__com__DataMember * subMemberStack[256];
2967 int subMemberStackPos = 0;
2969 for(members = (*inst->members).first; members; members = members->next)
2971 if(members->type == 0)
2973 for(member = (*members->dataMembers).first; member; member = member->next)
2975 struct Identifier * firstID = member->identifiers ? (*member->identifiers).first : (((void *)0));
2979 struct __ecereNameSpace__ecere__com__DataMember * _subMemberStack[256];
2980 int _subMemberStackPos = 0;
2981 struct __ecereNameSpace__ecere__com__DataMember * thisMember = (struct __ecereNameSpace__ecere__com__DataMember *)__ecereNameSpace__ecere__com__eClass_FindProperty(classSym->registered, firstID->string, privateModule);
2984 thisMember = __ecereNameSpace__ecere__com__eClass_FindDataMember(classSym->registered, firstID->string, privateModule, _subMemberStack, &_subMemberStackPos);
2987 curMember = thisMember;
2988 curClass = curMember->_class;
2989 memcpy(subMemberStack, _subMemberStack, sizeof(struct __ecereNameSpace__ecere__com__DataMember *) * _subMemberStackPos);
2990 subMemberStackPos = _subMemberStackPos;
2992 if(curMember == dataMember)
2994 if(dataMember->isProperty)
2996 if(!((struct __ecereNameSpace__ecere__com__Property *)dataMember)->Set)
2998 Compiler_Error(__ecereNameSpace__ecere__GetTranslatedString("ec", "No set defined for property %s\n", (((void *)0))), dataMember->name);
3004 if((*member->identifiers).count > 1 && member->initializer && member->initializer->type == 0)
3006 struct __ecereNameSpace__ecere__sys__OldList * partList = MkList();
3007 struct Specifier * spec;
3008 struct MembersInit * nextMembers;
3009 struct MemberInit * next = member->next;
3010 struct Symbol * symbol;
3012 if(!dataMember->dataType)
3013 dataMember->dataType = ProcessTypeString(dataMember->dataTypeString, 0x0);
3014 symbol = (dataMember->dataType && dataMember->dataType->kind == 8) ? dataMember->dataType->_class : (((void *)0));
3015 spec = _MkSpecifierName(dataMember->dataTypeString, symbol, (((void *)0)));
3016 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Remove((&*member->identifiers), firstID);
3017 ListAdd(partList, MkMemberInit(member->identifiers, MkInitializerAssignment(member->initializer->exp)));
3018 for(nextMembers = members; nextMembers; nextMembers = nextMembers->next)
3020 if(!nextMembers->dataMembers)
3022 if(members != nextMembers)
3023 next = (*nextMembers->dataMembers).first;
3024 if(nextMembers->type == 0)
3026 struct MemberInit * nextMember;
3028 for(nextMember = next; nextMember; nextMember = next, next = nextMember ? nextMember->next : (((void *)0)))
3030 struct Identifier * nextID = (*nextMember->identifiers).first;
3032 if(nextMember->identifiers && (*nextMember->identifiers).count > 1 && !strcmp(firstID->string, nextID->string))
3034 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Remove((&*nextMembers->dataMembers), nextMember);
3035 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Remove((&*nextMember->identifiers), nextID);
3036 ListAdd(partList, nextMember);
3041 member->initializer->exp = MkExpInstance(MkInstantiation(spec, (((void *)0)), MkListOne(MkMembersInitList(partList))));
3042 member->identifiers = (((void *)0));
3050 __ecereNameSpace__ecere__com__eClass_FindNextMember(classSym->registered, &curClass, &curMember, subMemberStack, &subMemberStackPos);
3051 if(curMember == dataMember)
3053 if(dataMember->isProperty)
3055 if(!((struct __ecereNameSpace__ecere__com__Property *)dataMember)->Set)
3057 Compiler_Error(__ecereNameSpace__ecere__GetTranslatedString("ec", "No set defined for property %s\n", (((void *)0))), dataMember->name);
3073 if(dataMember->isProperty)
3075 if(member && member->initializer && member->initializer->type == 0)
3077 if(member->initializer->exp->type == 1 && member->initializer->exp->expType && member->initializer->exp->expType->_class && member->initializer->exp->expType->_class->registered && member->initializer->exp->expType->_class->registered->type == 1)
3079 struct __ecereNameSpace__ecere__sys__OldList * subList = MkList();
3081 ProcessBracketInst(member->initializer->exp->instance, subList);
3082 FreeExpression(member->initializer->exp);
3083 member->initializer->exp = (((void *)0));
3084 ListAdd(list, MkInitializerList(subList));
3088 member->initializer->exp->usage = (member->initializer->exp->usage & ~0x1) | (((unsigned int)0x1) << 0);
3089 ProcessExpression(member->initializer->exp);
3090 ListAdd(list, MkInitializerAssignment(CopyExpression(member->initializer->exp)));
3092 member->takeOutExp = 0x1;
3094 else if(member && member->initializer && member->initializer->type == 1)
3096 ListAdd(list, member->initializer);
3097 member->initializer = (((void *)0));
3099 else if(dataMember && dataMember->dataTypeString)
3101 struct Symbol * classSym;
3103 if(!dataMember->dataType)
3104 dataMember->dataType = ProcessTypeString(dataMember->dataTypeString, 0x0);
3105 classSym = (dataMember->dataType && dataMember->dataType->kind == 8) ? dataMember->dataType->_class : (((void *)0));
3106 if(classSym && classSym->registered && classSym->registered->type == 1)
3108 struct __ecereNameSpace__ecere__sys__OldList * subList = MkList();
3109 struct Specifier * spec = _MkSpecifierName(dataMember->dataTypeString, classSym, (((void *)0)));
3110 struct Instantiation * inst = MkInstantiation(spec, (((void *)0)), (((void *)0)));
3112 ProcessBracketInst(inst, subList);
3114 ListAdd(list, MkInitializerList(subList));
3116 else if(dataMember->dataType->kind == 12)
3117 ListAdd(list, MkInitializerList(MkListOne(MkInitializerAssignment(MkExpConstant("0")))));
3119 ListAdd(list, MkInitializerAssignment(MkExpConstant("0")));
3124 if(inst->members && (*inst->members).first)
3126 struct MembersInit * members;
3127 struct MemberInit * member = (((void *)0));
3129 for(members = (*inst->members).first; members; members = members->next)
3131 if(members->type == 0)
3133 for(member = (*members->dataMembers).first; member; member = member->next)
3135 if(member->takeOutExp)
3137 FreeInitializer(member->initializer);
3138 member->initializer = (((void *)0));
3148 static void ProcessDeclaration(struct Declaration * decl)
3160 if(decl->specifiers)
3162 struct Specifier * s;
3164 for(s = (*decl->specifiers).first; s; s = s->next)
3166 ProcessSpecifier(s);
3169 if(decl->declarators)
3171 struct InitDeclarator * d;
3173 for(d = (*decl->declarators).first; d; d = d->next)
3176 ProcessInitializer(d->initializer);
3181 curDecl = (((void *)0));
3188 struct Instantiation * inst = decl->inst;
3192 struct Symbol * classSym = inst->_class->symbol;
3196 struct Statement * stmt;
3198 if(!inst->isConstant || (classSym && classSym->registered && (classSym->registered->type == 0 || classSym->registered->type == 5)))
3201 decl->specifiers = MkListOne(MkSpecifierName(inst->_class->name));
3202 if(decl->declMode == 3)
3204 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Insert((&*decl->specifiers), (((void *)0)), MkSpecifier(STATIC));
3206 decl->declarators = MkListOne(MkInitDeclarator(MkDeclaratorIdentifier(MkIdentifier(inst->exp->identifier->string)), (((void *)0))));
3207 ProcessDeclaration(decl);
3208 CreateInstancesBody();
3210 struct Expression * exp = MkExpInstance(inst);
3212 stmt = MkExpressionStmt(MkListOne(exp));
3213 ListAdd(createInstancesBody->compound.statements, stmt);
3214 ProcessExpressionType(exp);
3216 if(classSym && classSym->registered && (classSym->registered->type == 0))
3218 ListAdd(createInstancesBody->compound.statements, MkExpressionStmt(MkListOne(MkExpCall(MkExpIdentifier(MkIdentifier("ecere::com::eInstance_IncRef")), MkListOne(CopyExpression(inst->exp))))));
3220 struct Expression * exp = MkExpOp((((void *)0)), DELETE, CopyExpression(inst->exp));
3222 ListAdd(destroyInstancesBody->compound.statements, MkExpressionStmt(MkListOne(exp)));
3223 ProcessExpressionType(exp);
3226 else if(classSym && classSym->registered && (classSym->registered->type == 5))
3228 struct Expression * exp = MkExpOp((((void *)0)), DELETE, CopyExpression(inst->exp));
3230 ListAdd(destroyInstancesBody->compound.statements, MkExpressionStmt(MkListOne(exp)));
3231 ProcessExpressionType(exp);
3237 CreateInstancesBody();
3241 char className[1024];
3243 className[0] = (char)0;
3245 decl->specifiers = MkList();
3246 decl->declarators = MkList();
3247 if(classSym && classSym->registered && classSym->registered->type == 2)
3249 struct __ecereNameSpace__ecere__sys__OldList list =
3254 ProcessInstMembers(inst, inst->exp, &list, 0x0);
3255 ProcessExpression(inst->exp);
3256 ListAdd(decl->specifiers, MkSpecifierName(inst->_class->name));
3257 ListAdd(decl->declarators, MkInitDeclarator(MkDeclaratorIdentifier(inst->exp->identifier), MkInitializerAssignment(list.first)));
3258 inst->exp->identifier = (((void *)0));
3260 else if(classSym && classSym->registered && classSym->registered->type == 3)
3262 struct __ecereNameSpace__ecere__sys__OldList list =
3267 ProcessInstMembers(inst, inst->exp, &list, 0x0);
3268 ProcessExpression(inst->exp);
3269 ListAdd(decl->specifiers, MkSpecifierName(inst->_class->name));
3270 ListAdd(decl->declarators, MkInitDeclarator(MkDeclaratorIdentifier(inst->exp->identifier), MkInitializerAssignment(list.first)));
3271 inst->exp->identifier = (((void *)0));
3273 else if(classSym && classSym->registered && classSym->registered->type == 1)
3275 struct Expression * exp;
3277 DeclareStruct(inst->_class->name, 0x0);
3278 ProcessExpression(inst->exp);
3282 ListAdd(decl->specifiers, MkSpecifierName(inst->_class->name));
3283 ListAdd(decl->declarators, MkInitDeclarator(MkDeclaratorIdentifier(inst->exp->identifier), (((void *)0))));
3284 inst->exp->identifier = (((void *)0));
3288 struct __ecereNameSpace__ecere__sys__OldList * list = MkList();
3290 if(ProcessBracketInst(inst, list))
3292 ListAdd(decl->specifiers, MkSpecifierName(inst->_class->name));
3293 ListAdd(decl->declarators, MkInitDeclarator(MkDeclaratorIdentifier(inst->exp->identifier), MkInitializerList(list)));
3294 inst->exp->identifier = (((void *)0));
3298 FreeList(list, FreeInitializer);
3299 exp = MkExpBrackets(MkList());
3300 ProcessInstMembers(inst, inst->exp, exp->list, 0x1);
3301 ListAdd(exp->list, CopyExpression(inst->exp));
3302 ListAdd(decl->specifiers, MkSpecifierName(inst->_class->name));
3303 ListAdd(decl->declarators, MkInitDeclarator(MkDeclaratorIdentifier(inst->exp->identifier), MkInitializerAssignment(exp)));
3304 inst->exp->identifier = (((void *)0));
3311 struct Expression * newCall;
3313 strcpy(className, "__ecereClass_");
3314 if(classSym && classSym->registered && classSym->registered->type == 5 && classSym->registered->templateClass)
3316 classSym = FindClass(classSym->registered->templateClass->fullName);
3317 FullClassNameCat(className, classSym->string, 0x1);
3320 FullClassNameCat(className, inst->_class->name, 0x1);
3321 MangleClassName(className);
3323 DeclareClass(classSym, className);
3324 if(classSym && classSym->registered && classSym->registered->type == 5 && (classSym->registered->templateClass ? classSym->registered->templateClass->fixed : classSym->registered->fixed))
3328 sprintf(size, "%d", classSym->registered->templateClass ? classSym->registered->templateClass->structSize : classSym->registered->structSize);
3329 newCall = MkExpCall(QMkExpId("ecere::com::eSystem_New0"), MkListOne(MkExpConstant(size)));
3333 newCall = MkExpCall(QMkExpId("ecere::com::eInstance_New"), MkListOne(QMkExpId(className)));
3334 ProcessExpressionType(newCall);
3335 newCall->byReference = 0x1;
3339 struct Expression * exp, * newExp;
3340 struct Identifier * id = CopyIdentifier(inst->exp->identifier);
3342 if(inst->members && (*inst->members).first)
3344 newExp = MkExpOp(CopyExpression(inst->exp), '=', newCall);
3345 exp = MkExpBrackets(MkList());
3346 ListAdd(exp->list, newExp);
3347 ProcessInstMembers(inst, inst->exp, exp->list, 0x0);
3348 ListAdd(exp->list, inst->exp);
3349 ProcessExpression(inst->exp);
3350 inst->exp = (((void *)0));
3354 ListAdd(decl->specifiers, MkSpecifierName(inst->_class->name));
3355 ListAdd(decl->declarators, MkInitDeclarator(MkDeclaratorIdentifier(id), MkInitializerAssignment(exp)));
3358 FreeExpression(newCall);
3364 ProcessInstantiation(inst);
3369 if(decl->specifiers)
3371 struct Specifier * spec;
3373 for(spec = (*decl->specifiers).first; spec; spec = spec->next)
3374 ProcessSpecifier(spec);
3381 static void ProcessStatement(struct Statement * stmt)
3387 if(stmt->labeled.stmt)
3388 ProcessStatement(stmt->labeled.stmt);
3391 if(stmt->caseStmt.exp)
3392 ProcessExpression(stmt->caseStmt.exp);
3393 if(stmt->caseStmt.stmt)
3394 ProcessStatement(stmt->caseStmt.stmt);
3398 if(stmt->compound.context)
3400 struct Declaration * decl;
3401 struct Statement * s;
3402 struct Statement * prevCompound = curCompound;
3403 struct Context * prevContext = curContext;
3405 if(!stmt->compound.isSwitch)
3408 curContext = stmt->compound.context;
3410 if(stmt->compound.declarations)
3412 for(decl = (*stmt->compound.declarations).first; decl; decl = decl->next)
3413 ProcessDeclaration(decl);
3415 if(stmt->compound.statements)
3417 for(s = (*stmt->compound.statements).first; s; s = s->next)
3419 ProcessStatement(s);
3422 curCompound = prevCompound;
3423 curContext = prevContext;
3429 struct Expression * exp;
3431 if(stmt->expressions)
3433 for(exp = (*stmt->expressions).first; exp; exp = exp->next)
3435 ProcessExpression(exp);
3442 struct Expression * exp;
3444 ((struct Expression *)(*stmt->ifStmt.exp).last)->usage = (((struct Expression *)(*stmt->ifStmt.exp).last)->usage & ~0x1) | (((unsigned int)0x1) << 0);
3445 for(exp = (*stmt->ifStmt.exp).first; exp; exp = exp->next)
3447 ProcessExpression(exp);
3449 if(stmt->ifStmt.stmt)
3450 ProcessStatement(stmt->ifStmt.stmt);
3451 if(stmt->ifStmt.elseStmt)
3452 ProcessStatement(stmt->ifStmt.elseStmt);
3457 struct Expression * exp;
3459 ((struct Expression *)(*stmt->switchStmt.exp).last)->usage = (((struct Expression *)(*stmt->switchStmt.exp).last)->usage & ~0x1) | (((unsigned int)0x1) << 0);
3460 for(exp = (*stmt->switchStmt.exp).first; exp; exp = exp->next)
3461 ProcessExpression(exp);
3462 ProcessStatement(stmt->switchStmt.stmt);
3467 if(stmt->whileStmt.exp)
3469 struct Expression * exp;
3471 ((struct Expression *)(*stmt->whileStmt.exp).last)->usage = (((struct Expression *)(*stmt->whileStmt.exp).last)->usage & ~0x1) | (((unsigned int)0x1) << 0);
3472 for(exp = (*stmt->whileStmt.exp).first; exp; exp = exp->next)
3474 ProcessExpression(exp);
3477 if(stmt->whileStmt.stmt)
3478 ProcessStatement(stmt->whileStmt.stmt);
3483 if(stmt->doWhile.exp)
3485 struct Expression * exp;
3487 ((struct Expression *)(*stmt->doWhile.exp).last)->usage = (((struct Expression *)(*stmt->doWhile.exp).last)->usage & ~0x1) | (((unsigned int)0x1) << 0);
3488 for(exp = (*stmt->doWhile.exp).first; exp; exp = exp->next)
3490 ProcessExpression(exp);
3493 if(stmt->doWhile.stmt)
3494 ProcessStatement(stmt->doWhile.stmt);
3499 struct Expression * exp;
3501 if(stmt->forStmt.init)
3502 ProcessStatement(stmt->forStmt.init);
3503 if(stmt->forStmt.check && stmt->forStmt.check->expressions)
3505 ((struct Expression *)(*stmt->forStmt.check->expressions).last)->usage = (((struct Expression *)(*stmt->forStmt.check->expressions).last)->usage & ~0x1) | (((unsigned int)0x1) << 0);
3507 if(stmt->forStmt.check)
3508 ProcessStatement(stmt->forStmt.check);
3509 if(stmt->forStmt.increment)
3511 for(exp = (*stmt->forStmt.increment).first; exp; exp = exp->next)
3512 ProcessExpression(exp);
3514 if(stmt->forStmt.stmt)
3515 ProcessStatement(stmt->forStmt.stmt);
3526 struct Expression * exp;
3528 if(stmt->expressions && (*stmt->expressions).last)
3530 ((struct Expression *)(*stmt->expressions).last)->usage = (((struct Expression *)(*stmt->expressions).last)->usage & ~0x1) | (((unsigned int)0x1) << 0);
3531 for(exp = (*stmt->expressions).first; exp; exp = exp->next)
3533 ProcessExpression(exp);
3540 ProcessDeclaration(stmt->decl);
3545 struct AsmField * field;
3547 if(stmt->asmStmt.inputFields)
3549 for(field = (*stmt->asmStmt.inputFields).first; field; field = field->next)
3550 if(field->expression)
3551 ProcessExpression(field->expression);
3553 if(stmt->asmStmt.outputFields)
3555 for(field = (*stmt->asmStmt.outputFields).first; field; field = field->next)
3556 if(field->expression)
3557 ProcessExpression(field->expression);
3559 if(stmt->asmStmt.clobberedFields)
3561 for(field = (*stmt->asmStmt.clobberedFields).first; field; field = field->next)
3562 if(field->expression)
3563 ProcessExpression(field->expression);
3570 static void ProcessFunction(struct FunctionDefinition * function)
3574 yylloc = function->loc;
3575 ProcessStatement(function->body);
3579 extern struct Type * MkClassTypeSymbol(struct Symbol * symbol);
3581 extern void FreeSymbol(struct Symbol * symbol);
3583 unsigned int __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Add(struct __ecereNameSpace__ecere__sys__BinaryTree * this, struct __ecereNameSpace__ecere__sys__BTNode * node);
3585 void __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Remove(struct __ecereNameSpace__ecere__sys__BinaryTree * this, struct __ecereNameSpace__ecere__sys__BTNode * node);
3587 void ProcessInstantiations()
3589 struct External * external;
3591 for(external = (*ast).first; external; external = external->next)
3593 curExternal = external;
3594 if(external->type == 1)
3596 if(external->declaration)
3597 ProcessDeclaration(external->declaration);
3599 else if(external->type == 0)
3601 ProcessFunction(external->function);
3603 else if(external->type == 2)
3605 struct ClassDefinition * _class = external->_class;
3607 if(_class->definitions)
3609 struct ClassDef * def;
3611 for(def = (*_class->definitions).first; def; def = def->next)
3615 curExternal = def->function->declarator ? def->function->declarator->symbol->pointerExternal : external;
3616 ProcessFunction((struct FunctionDefinition *)def->function);
3618 else if(def->type == 2 && def->decl->type == 2)
3620 ProcessInstantiation(def->decl->inst);
3622 else if(def->type == 1 && def->defProperties)
3624 struct MemberInit * defProperty;
3625 struct Symbol * thisSymbol = (thisSymbol = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Symbol), thisSymbol->string = __ecereNameSpace__ecere__sys__CopyString("this"), thisSymbol->type = MkClassTypeSymbol(_class->symbol), thisSymbol);
3627 __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Add(&globalContext->symbols, (struct __ecereNameSpace__ecere__sys__BTNode *)thisSymbol);
3628 for(defProperty = (*def->defProperties).first; defProperty; defProperty = defProperty->next)
3630 ProcessMemberInitData(defProperty);
3632 __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Remove(&globalContext->symbols, (struct __ecereNameSpace__ecere__sys__BTNode *)thisSymbol);
3633 FreeSymbol(thisSymbol);
3635 else if(def->type == 3 && def->propertyDef)
3637 struct PropertyDef * prop = def->propertyDef;
3638 struct Symbol * thisSymbol = (thisSymbol = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Symbol), thisSymbol->string = __ecereNameSpace__ecere__sys__CopyString("this"), thisSymbol->type = MkClassTypeSymbol(_class->symbol), thisSymbol);
3640 __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Add(&globalContext->symbols, (struct __ecereNameSpace__ecere__sys__BTNode *)thisSymbol);
3643 curExternal = prop->symbol ? prop->symbol->externalSet : (((void *)0));
3644 ProcessStatement(prop->setStmt);
3648 curExternal = prop->symbol ? prop->symbol->externalGet : (((void *)0));
3649 ProcessStatement(prop->getStmt);
3653 curExternal = prop->symbol ? prop->symbol->externalIsSet : (((void *)0));
3654 ProcessStatement(prop->issetStmt);
3656 __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Remove(&globalContext->symbols, (struct __ecereNameSpace__ecere__sys__BTNode *)thisSymbol);
3657 FreeSymbol(thisSymbol);
3659 else if(def->type == 4 && def->propertyWatch)
3661 struct PropertyWatch * propertyWatch = def->propertyWatch;
3662 struct Symbol * thisSymbol = (thisSymbol = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Symbol), thisSymbol->string = __ecereNameSpace__ecere__sys__CopyString("this"), thisSymbol->type = MkClassTypeSymbol(_class->symbol), thisSymbol);
3664 __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Add(&globalContext->symbols, (struct __ecereNameSpace__ecere__sys__BTNode *)thisSymbol);
3665 if(propertyWatch->compound)
3667 __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Add(&propertyWatch->compound->compound.context->symbols, (struct __ecereNameSpace__ecere__sys__BTNode *)thisSymbol);
3668 curExternal = (((void *)0));
3669 ProcessStatement(propertyWatch->compound);
3671 __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Remove(&globalContext->symbols, (struct __ecereNameSpace__ecere__sys__BTNode *)thisSymbol);
3672 FreeSymbol(thisSymbol);
3680 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__GlobalFunction;
3682 struct __ecereNameSpace__ecere__com__GlobalFunction;
3684 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);
3686 void __ecereRegisterModule_pass16(struct __ecereNameSpace__ecere__com__Instance * module)
3688 struct __ecereNameSpace__ecere__com__Class * class;
3690 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("DeclareClass", "void DeclareClass(Symbol classSym, const char * className)", DeclareClass, module, 1);
3691 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ProcessExpressionInstPass", "void ProcessExpressionInstPass(Expression exp)", ProcessExpressionInstPass, module, 2);
3692 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ProcessInstantiations", "void ProcessInstantiations(void)", ProcessInstantiations, module, 1);
3695 void __ecereUnregisterModule_pass16(struct __ecereNameSpace__ecere__com__Instance * module)