1 /* Code generated from eC source file: pass1.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>
34 #if /*defined(_W64) || */(defined(__WORDSIZE) && __WORDSIZE == 8) || defined(__x86_64__)
40 #define arch_PointerSize sizeof(void *)
41 #define structSize_Instance (_64BIT ? 24 : 12)
43 extern void * __ecereNameSpace__ecere__com__eSystem_New(unsigned int size);
45 extern void * __ecereNameSpace__ecere__com__eSystem_New0(unsigned int size);
47 extern void * __ecereNameSpace__ecere__com__eSystem_Renew(void * memory, unsigned int size);
49 extern void * __ecereNameSpace__ecere__com__eSystem_Renew0(void * memory, unsigned int size);
51 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__sys__BTNode;
53 struct __ecereNameSpace__ecere__sys__BTNode;
55 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__sys__BinaryTree;
57 struct __ecereNameSpace__ecere__sys__BinaryTree
59 struct __ecereNameSpace__ecere__sys__BTNode * root;
61 int (* CompareKey)(struct __ecereNameSpace__ecere__sys__BinaryTree * tree, uintptr_t a, uintptr_t b);
62 void (* FreeKey)(void * key);
63 } __attribute__ ((gcc_struct));
65 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__sys__OldList;
67 struct __ecereNameSpace__ecere__sys__OldList
74 } __attribute__ ((gcc_struct));
76 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__Method;
78 struct __ecereNameSpace__ecere__com__Method
81 struct __ecereNameSpace__ecere__com__Method * parent;
82 struct __ecereNameSpace__ecere__com__Method * left;
83 struct __ecereNameSpace__ecere__com__Method * right;
88 struct __ecereNameSpace__ecere__com__Class * _class;
90 char * dataTypeString;
91 struct Type * dataType;
93 } __attribute__ ((gcc_struct));
95 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__Property;
97 struct __ecereNameSpace__ecere__com__Property
99 struct __ecereNameSpace__ecere__com__Property * prev;
100 struct __ecereNameSpace__ecere__com__Property * next;
102 unsigned int isProperty;
105 struct __ecereNameSpace__ecere__com__Class * _class;
106 char * dataTypeString;
107 struct __ecereNameSpace__ecere__com__Class * dataTypeClass;
108 struct Type * dataType;
109 void (* Set)(void * , int);
110 int (* Get)(void * );
111 unsigned int (* IsSet)(void * );
115 unsigned int conversion;
116 unsigned int watcherOffset;
118 unsigned int compiled;
119 unsigned int selfWatchable;
120 unsigned int isWatchable;
121 } __attribute__ ((gcc_struct));
123 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_CodePosition;
131 } __attribute__ ((gcc_struct));
133 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Location;
137 struct CodePosition start;
138 struct CodePosition end;
139 } __attribute__ ((gcc_struct));
141 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Attrib;
145 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_ExtDecl;
149 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_ClassDefinition;
151 struct ClassDefinition
153 struct ClassDefinition * prev;
154 struct ClassDefinition * next;
156 struct Specifier * _class;
157 struct __ecereNameSpace__ecere__sys__OldList * baseSpecs;
158 struct __ecereNameSpace__ecere__sys__OldList * definitions;
159 struct Symbol * symbol;
160 struct Location blockStart;
161 struct Location nameLoc;
164 unsigned int deleteWatchable;
165 } __attribute__ ((gcc_struct));
167 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Context;
171 struct Context * parent;
172 struct __ecereNameSpace__ecere__sys__BinaryTree types;
173 struct __ecereNameSpace__ecere__sys__BinaryTree classes;
174 struct __ecereNameSpace__ecere__sys__BinaryTree symbols;
175 struct __ecereNameSpace__ecere__sys__BinaryTree structSymbols;
178 struct __ecereNameSpace__ecere__sys__BinaryTree templateTypes;
179 struct ClassDefinition * classDef;
180 unsigned int templateTypesOnly;
181 unsigned int hasNameSpace;
182 } __attribute__ ((gcc_struct));
184 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Instantiation;
186 struct Instantiation;
188 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Declaration;
192 struct Declaration * prev;
193 struct Declaration * next;
200 struct __ecereNameSpace__ecere__sys__OldList * specifiers;
201 struct __ecereNameSpace__ecere__sys__OldList * declarators;
202 } __attribute__ ((gcc_struct));
203 struct Instantiation * inst;
206 struct Identifier * id;
207 struct Expression * exp;
208 } __attribute__ ((gcc_struct));
209 } __attribute__ ((gcc_struct));
210 struct Specifier * extStorage;
211 struct Symbol * symbol;
213 } __attribute__ ((gcc_struct));
215 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Statement;
219 struct Statement * prev;
220 struct Statement * next;
225 struct __ecereNameSpace__ecere__sys__OldList * expressions;
228 struct Identifier * id;
229 struct Statement * stmt;
230 } __attribute__ ((gcc_struct)) labeled;
233 struct Expression * exp;
234 struct Statement * stmt;
235 } __attribute__ ((gcc_struct)) caseStmt;
238 struct __ecereNameSpace__ecere__sys__OldList * declarations;
239 struct __ecereNameSpace__ecere__sys__OldList * statements;
240 struct Context * context;
241 unsigned int isSwitch;
242 } __attribute__ ((gcc_struct)) compound;
245 struct __ecereNameSpace__ecere__sys__OldList * exp;
246 struct Statement * stmt;
247 struct Statement * elseStmt;
248 } __attribute__ ((gcc_struct)) ifStmt;
251 struct __ecereNameSpace__ecere__sys__OldList * exp;
252 struct Statement * stmt;
253 } __attribute__ ((gcc_struct)) switchStmt;
256 struct __ecereNameSpace__ecere__sys__OldList * exp;
257 struct Statement * stmt;
258 } __attribute__ ((gcc_struct)) whileStmt;
261 struct __ecereNameSpace__ecere__sys__OldList * exp;
262 struct Statement * stmt;
263 } __attribute__ ((gcc_struct)) doWhile;
266 struct Statement * init;
267 struct Statement * check;
268 struct __ecereNameSpace__ecere__sys__OldList * increment;
269 struct Statement * stmt;
270 } __attribute__ ((gcc_struct)) forStmt;
273 struct Identifier * id;
274 } __attribute__ ((gcc_struct)) gotoStmt;
277 struct Specifier * spec;
279 struct __ecereNameSpace__ecere__sys__OldList * inputFields;
280 struct __ecereNameSpace__ecere__sys__OldList * outputFields;
281 struct __ecereNameSpace__ecere__sys__OldList * clobberedFields;
282 } __attribute__ ((gcc_struct)) asmStmt;
285 struct Expression * watcher;
286 struct Expression * object;
287 struct __ecereNameSpace__ecere__sys__OldList * watches;
288 } __attribute__ ((gcc_struct)) _watch;
291 struct Identifier * id;
292 struct __ecereNameSpace__ecere__sys__OldList * exp;
293 struct __ecereNameSpace__ecere__sys__OldList * filter;
294 struct Statement * stmt;
295 } __attribute__ ((gcc_struct)) forEachStmt;
296 struct Declaration * decl;
297 } __attribute__ ((gcc_struct));
298 } __attribute__ ((gcc_struct));
300 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_TypeName;
304 struct TypeName * prev;
305 struct TypeName * next;
307 struct __ecereNameSpace__ecere__sys__OldList * qualifiers;
308 struct Declarator * declarator;
310 struct Expression * bitCount;
311 } __attribute__ ((gcc_struct));
313 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Initializer;
317 struct Initializer * prev;
318 struct Initializer * next;
323 struct Expression * exp;
324 struct __ecereNameSpace__ecere__sys__OldList * list;
325 } __attribute__ ((gcc_struct));
326 unsigned int isConstant;
327 } __attribute__ ((gcc_struct));
329 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__DataValue;
331 struct __ecereNameSpace__ecere__com__DataValue
346 } __attribute__ ((gcc_struct));
347 } __attribute__ ((gcc_struct));
349 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Expression;
353 struct Expression * prev;
354 struct Expression * next;
362 struct Identifier * identifier;
363 } __attribute__ ((gcc_struct));
364 struct Statement * compound;
365 struct Instantiation * instance;
367 struct __ecereNameSpace__ecere__sys__OldList * list;
370 struct __ecereNameSpace__ecere__sys__OldList * specifiers;
371 struct Declarator * decl;
372 } __attribute__ ((gcc_struct)) _classExp;
375 struct Identifier * id;
376 } __attribute__ ((gcc_struct)) classData;
379 struct Expression * exp;
380 struct __ecereNameSpace__ecere__sys__OldList * arguments;
381 struct Location argLoc;
382 } __attribute__ ((gcc_struct)) call;
385 struct Expression * exp;
386 struct __ecereNameSpace__ecere__sys__OldList * index;
387 } __attribute__ ((gcc_struct)) index;
390 struct Expression * exp;
391 struct Identifier * member;
393 unsigned int thisPtr;
394 } __attribute__ ((gcc_struct)) member;
398 struct Expression * exp1;
399 struct Expression * exp2;
400 } __attribute__ ((gcc_struct)) op;
401 struct TypeName * typeName;
402 struct Specifier * _class;
405 struct TypeName * typeName;
406 struct Expression * exp;
407 } __attribute__ ((gcc_struct)) cast;
410 struct Expression * cond;
411 struct __ecereNameSpace__ecere__sys__OldList * exp;
412 struct Expression * elseExp;
413 } __attribute__ ((gcc_struct)) cond;
416 struct TypeName * typeName;
417 struct Expression * size;
418 } __attribute__ ((gcc_struct)) _new;
421 struct TypeName * typeName;
422 struct Expression * size;
423 struct Expression * exp;
424 } __attribute__ ((gcc_struct)) _renew;
428 struct Identifier * id;
429 } __attribute__ ((gcc_struct)) db;
432 struct Expression * ds;
433 struct Expression * name;
434 } __attribute__ ((gcc_struct)) dbopen;
437 struct TypeName * typeName;
438 struct Initializer * initializer;
439 } __attribute__ ((gcc_struct)) initializer;
442 struct Expression * exp;
443 struct TypeName * typeName;
444 } __attribute__ ((gcc_struct)) vaArg;
445 } __attribute__ ((gcc_struct));
446 unsigned int debugValue;
447 struct __ecereNameSpace__ecere__com__DataValue val;
449 unsigned int hasAddress;
450 struct Type * expType;
451 struct Type * destType;
454 unsigned int byReference;
455 unsigned int isConstant;
456 unsigned int addedThis;
457 unsigned int needCast;
458 unsigned int thisPtr;
459 } __attribute__ ((gcc_struct));
461 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_TemplateDatatype;
463 struct TemplateDatatype
465 struct __ecereNameSpace__ecere__sys__OldList * specifiers;
466 struct Declarator * decl;
467 } __attribute__ ((gcc_struct));
469 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_TemplateArgument;
471 struct TemplateArgument
473 struct TemplateArgument * prev;
474 struct TemplateArgument * next;
476 struct Identifier * name;
480 struct Expression * expression;
481 struct Identifier * identifier;
482 struct TemplateDatatype * templateDatatype;
483 } __attribute__ ((gcc_struct));
484 } __attribute__ ((gcc_struct));
486 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_TemplateParameter;
488 struct TemplateParameter
490 struct TemplateParameter * prev;
491 struct TemplateParameter * next;
494 struct Identifier * identifier;
497 struct TemplateDatatype * dataType;
499 } __attribute__ ((gcc_struct));
500 struct TemplateArgument * defaultArgument;
501 char * dataTypeString;
502 struct Type * baseType;
503 } __attribute__ ((gcc_struct));
505 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Specifier;
509 struct Specifier * prev;
510 struct Specifier * next;
518 struct ExtDecl * extDecl;
520 struct Symbol * symbol;
521 struct __ecereNameSpace__ecere__sys__OldList * templateArgs;
522 } __attribute__ ((gcc_struct));
525 struct Identifier * id;
526 struct __ecereNameSpace__ecere__sys__OldList * list;
527 struct __ecereNameSpace__ecere__sys__OldList * baseSpecs;
528 struct __ecereNameSpace__ecere__sys__OldList * definitions;
529 unsigned int addNameSpace;
530 struct Context * ctx;
531 struct ExtDecl * extDeclStruct;
532 } __attribute__ ((gcc_struct));
533 struct Expression * expression;
534 struct Specifier * _class;
535 struct TemplateParameter * templateParameter;
536 } __attribute__ ((gcc_struct));
537 } __attribute__ ((gcc_struct));
539 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Identifier;
543 struct Identifier * prev;
544 struct Identifier * next;
546 struct Symbol * classSym;
547 struct Specifier * _class;
549 struct Identifier * badID;
550 } __attribute__ ((gcc_struct));
552 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Pointer;
556 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Declarator;
560 struct Declarator * prev;
561 struct Declarator * next;
564 struct Symbol * symbol;
565 struct Declarator * declarator;
568 struct Identifier * identifier;
571 struct Expression * exp;
572 struct Expression * posExp;
573 struct Attrib * attrib;
574 } __attribute__ ((gcc_struct)) structDecl;
577 struct Expression * exp;
578 struct Specifier * enumClass;
579 } __attribute__ ((gcc_struct)) array;
582 struct __ecereNameSpace__ecere__sys__OldList * parameters;
583 } __attribute__ ((gcc_struct)) function;
586 struct Pointer * pointer;
587 } __attribute__ ((gcc_struct)) pointer;
590 struct ExtDecl * extended;
591 } __attribute__ ((gcc_struct)) extended;
592 } __attribute__ ((gcc_struct));
593 } __attribute__ ((gcc_struct));
595 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_FunctionDefinition;
597 struct FunctionDefinition
599 struct FunctionDefinition * prev;
600 struct FunctionDefinition * next;
602 struct __ecereNameSpace__ecere__sys__OldList * specifiers;
603 struct Declarator * declarator;
604 struct __ecereNameSpace__ecere__sys__OldList * declarations;
605 struct Statement * body;
606 struct __ecereNameSpace__ecere__com__Class * _class;
607 struct __ecereNameSpace__ecere__sys__OldList attached;
610 struct Symbol * propSet;
612 unsigned int propertyNoThis;
613 } __attribute__ ((gcc_struct));
615 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_DBTableDef;
619 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_External;
623 struct External * prev;
624 struct External * next;
627 struct Symbol * symbol;
630 struct FunctionDefinition * function;
631 struct ClassDefinition * _class;
632 struct Declaration * declaration;
634 struct Identifier * id;
635 struct DBTableDef * table;
636 } __attribute__ ((gcc_struct));
638 } __attribute__ ((gcc_struct));
640 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_ModuleImport;
644 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_ClassImport;
648 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Symbol;
653 struct Symbol * parent;
654 struct Symbol * left;
655 struct Symbol * right;
660 struct __ecereNameSpace__ecere__com__Method * method;
661 struct __ecereNameSpace__ecere__com__Property * _property;
662 struct __ecereNameSpace__ecere__com__Class * registered;
663 } __attribute__ ((gcc_struct));
670 struct External * pointerExternal;
671 struct External * structExternal;
672 } __attribute__ ((gcc_struct));
675 struct External * externalGet;
676 struct External * externalSet;
677 struct External * externalPtr;
678 struct External * externalIsSet;
679 } __attribute__ ((gcc_struct));
682 struct External * methodExternal;
683 struct External * methodCodeExternal;
684 } __attribute__ ((gcc_struct));
685 } __attribute__ ((gcc_struct));
686 unsigned int imported;
687 unsigned int declaredStructSym;
688 struct __ecereNameSpace__ecere__com__Class * _class;
689 unsigned int declaredStruct;
690 unsigned int needConstructor;
691 unsigned int needDestructor;
692 char * constructorName;
695 char * destructorName;
696 struct ModuleImport * module;
697 struct ClassImport * _import;
698 struct Location nameLoc;
699 unsigned int isParam;
700 unsigned int isRemote;
701 unsigned int isStruct;
702 unsigned int fireWatchersDone;
704 unsigned int classData;
705 unsigned int isStatic;
707 struct __ecereNameSpace__ecere__sys__OldList * templateParams;
708 struct __ecereNameSpace__ecere__sys__OldList templatedClasses;
709 struct Context * ctx;
711 struct Expression * propCategory;
712 } __attribute__ ((gcc_struct));
714 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Type;
723 struct Symbol * _class;
726 struct __ecereNameSpace__ecere__sys__OldList members;
728 } __attribute__ ((gcc_struct));
731 struct Type * returnType;
732 struct __ecereNameSpace__ecere__sys__OldList params;
733 struct Symbol * thisClass;
734 unsigned int staticMethod;
735 struct TemplateParameter * thisClassTemplate;
736 } __attribute__ ((gcc_struct));
739 struct __ecereNameSpace__ecere__com__Method * method;
740 struct __ecereNameSpace__ecere__com__Class * methodClass;
741 struct __ecereNameSpace__ecere__com__Class * usedClass;
742 } __attribute__ ((gcc_struct));
745 struct Type * arrayType;
747 struct Expression * arraySizeExp;
748 unsigned int freeExp;
749 struct Symbol * enumClass;
750 } __attribute__ ((gcc_struct));
752 struct TemplateParameter * templateParameter;
753 } __attribute__ ((gcc_struct));
763 unsigned int isSigned : 1;
764 unsigned int constant : 1;
765 unsigned int truth : 1;
766 unsigned int byReference : 1;
767 unsigned int extraParam : 1;
768 unsigned int directClassAccess : 1;
769 unsigned int computing : 1;
770 unsigned int keepCast : 1;
771 unsigned int passAsTemplate : 1;
772 unsigned int dllExport : 1;
773 unsigned int attrStdcall : 1;
774 unsigned int declaredWithStruct : 1;
775 unsigned int typedByReference : 1;
776 } __attribute__ ((gcc_struct));
778 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__Class;
780 struct __ecereNameSpace__ecere__com__Class
782 struct __ecereNameSpace__ecere__com__Class * prev;
783 struct __ecereNameSpace__ecere__com__Class * next;
789 int (* Constructor)(struct __ecereNameSpace__ecere__com__Instance *);
790 void (* Destructor)(struct __ecereNameSpace__ecere__com__Instance *);
793 struct __ecereNameSpace__ecere__com__Class * base;
794 struct __ecereNameSpace__ecere__sys__BinaryTree methods;
795 struct __ecereNameSpace__ecere__sys__BinaryTree members;
796 struct __ecereNameSpace__ecere__sys__BinaryTree prop;
797 struct __ecereNameSpace__ecere__sys__OldList membersAndProperties;
798 struct __ecereNameSpace__ecere__sys__BinaryTree classProperties;
799 struct __ecereNameSpace__ecere__sys__OldList derivatives;
803 struct __ecereNameSpace__ecere__com__Instance * module;
804 struct __ecereNameSpace__ecere__com__NameSpace * nameSpace;
805 char * dataTypeString;
806 struct Type * dataType;
808 int defaultAlignment;
809 void (* Initialize)();
811 struct __ecereNameSpace__ecere__sys__OldList selfWatchers;
812 char * designerClass;
813 unsigned int noExpansion;
814 char * defaultProperty;
815 unsigned int comRedefinition;
817 unsigned int isRemote;
818 unsigned int internalDecl;
820 unsigned int computeSize;
822 int destructionWatchOffset;
824 struct __ecereNameSpace__ecere__sys__OldList delayedCPValues;
825 int inheritanceAccess;
828 struct __ecereNameSpace__ecere__sys__OldList conversions;
829 struct __ecereNameSpace__ecere__sys__OldList templateParams;
830 struct __ecereNameSpace__ecere__com__ClassTemplateArgument * templateArgs;
831 struct __ecereNameSpace__ecere__com__Class * templateClass;
832 struct __ecereNameSpace__ecere__sys__OldList templatized;
834 unsigned int isInstanceClass;
835 unsigned int byValueSystemClass;
836 } __attribute__ ((gcc_struct));
838 extern long long __ecereNameSpace__ecere__com__eClass_GetProperty(struct __ecereNameSpace__ecere__com__Class * _class, char * name);
840 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__Instance;
842 struct __ecereNameSpace__ecere__com__Instance
845 struct __ecereNameSpace__ecere__com__Class * _class;
847 } __attribute__ ((gcc_struct));
849 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__DataMember;
851 struct __ecereNameSpace__ecere__com__DataMember
853 struct __ecereNameSpace__ecere__com__DataMember * prev;
854 struct __ecereNameSpace__ecere__com__DataMember * next;
856 unsigned int isProperty;
859 struct __ecereNameSpace__ecere__com__Class * _class;
860 char * dataTypeString;
861 struct __ecereNameSpace__ecere__com__Class * dataTypeClass;
862 struct Type * dataType;
866 struct __ecereNameSpace__ecere__sys__OldList members;
867 struct __ecereNameSpace__ecere__sys__BinaryTree membersAlpha;
870 } __attribute__ ((gcc_struct));
872 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__SerialBuffer;
874 struct __ecereNameSpace__ecere__com__SerialBuffer
876 unsigned char * _buffer;
880 } __attribute__ ((gcc_struct));
882 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__ClassTemplateArgument;
884 struct __ecereNameSpace__ecere__com__ClassTemplateArgument
890 char * dataTypeString;
891 struct __ecereNameSpace__ecere__com__Class * dataTypeClass;
892 } __attribute__ ((gcc_struct));
893 struct __ecereNameSpace__ecere__com__DataValue expression;
899 struct __ecereNameSpace__ecere__com__DataMember * member;
900 struct __ecereNameSpace__ecere__com__Property * prop;
901 struct __ecereNameSpace__ecere__com__Method * method;
902 } __attribute__ ((gcc_struct));
903 } __attribute__ ((gcc_struct));
904 } __attribute__ ((gcc_struct));
905 } __attribute__ ((gcc_struct));
909 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
912 typedef union YYSTYPE
917 struct Identifier * id;
918 struct Expression * exp;
919 struct Specifier * specifier;
920 struct __ecereNameSpace__ecere__sys__OldList * list;
921 struct Enumerator * enumerator;
922 struct Declarator * declarator;
923 struct Pointer * pointer;
924 struct Initializer * initializer;
925 struct InitDeclarator * initDeclarator;
926 struct TypeName * typeName;
927 struct Declaration * declaration;
928 struct Statement * stmt;
929 struct FunctionDefinition * function;
930 struct External * external;
931 struct Context * context;
932 struct AsmField * asmField;
933 struct Attrib * attrib;
934 struct ExtDecl * extDecl;
935 struct Attribute * attribute;
936 struct Instantiation * instance;
937 struct MembersInit * membersInit;
938 struct MemberInit * memberInit;
939 struct ClassFunction * classFunction;
940 struct ClassDefinition * _class;
941 struct ClassDef * classDef;
942 struct PropertyDef * prop;
944 struct Symbol * symbol;
945 struct PropertyWatch * propertyWatch;
946 struct TemplateParameter * templateParameter;
947 struct TemplateArgument * templateArgument;
948 struct TemplateDatatype * templateDatatype;
949 struct DBTableEntry * dbtableEntry;
950 struct DBIndexItem * dbindexItem;
951 struct DBTableDef * dbtableDef;
952 } __attribute__ ((gcc_struct)) YYSTYPE;
954 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Enumerator;
958 struct Enumerator * prev;
959 struct Enumerator * next;
961 struct Identifier * id;
962 struct Expression * exp;
963 } __attribute__ ((gcc_struct));
965 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_InitDeclarator;
967 struct InitDeclarator;
969 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_AsmField;
973 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Attribute;
977 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_ClassFunction;
981 struct ClassFunction * prev;
982 struct ClassFunction * next;
984 struct __ecereNameSpace__ecere__sys__OldList * specifiers;
985 struct Declarator * declarator;
986 struct __ecereNameSpace__ecere__sys__OldList * declarations;
987 struct Statement * body;
988 struct __ecereNameSpace__ecere__com__Class * _class;
989 struct __ecereNameSpace__ecere__sys__OldList attached;
992 struct Symbol * propSet;
993 unsigned int isVirtual;
994 unsigned int isConstructor;
995 unsigned int isDestructor;
996 unsigned int dontMangle;
999 } __attribute__ ((gcc_struct));
1001 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_MembersInit;
1005 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_MemberInit;
1009 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_PropertyDef;
1013 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_PropertyWatch;
1015 struct PropertyWatch
1017 struct PropertyWatch * prev;
1018 struct PropertyWatch * next;
1019 struct Location loc;
1020 struct Statement * compound;
1021 struct __ecereNameSpace__ecere__sys__OldList * properties;
1022 unsigned int deleteWatch;
1023 } __attribute__ ((gcc_struct));
1025 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_ClassDef;
1029 struct ClassDef * prev;
1030 struct ClassDef * next;
1031 struct Location loc;
1035 struct Declaration * decl;
1036 struct ClassFunction * function;
1037 struct __ecereNameSpace__ecere__sys__OldList * defProperties;
1038 struct PropertyDef * propertyDef;
1039 struct PropertyWatch * propertyWatch;
1041 struct Identifier * defaultProperty;
1044 struct Identifier * id;
1045 struct Initializer * initializer;
1046 } __attribute__ ((gcc_struct));
1047 } __attribute__ ((gcc_struct));
1050 } __attribute__ ((gcc_struct));
1052 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_DBTableEntry;
1054 struct DBTableEntry;
1056 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_DBIndexItem;
1060 extern YYSTYPE yylval;
1062 extern struct Location yylloc;
1064 static struct Statement * registerModuleBody;
1066 static struct External * registerModuleExternal;
1068 static struct Statement * unregisterModuleBody;
1070 static struct External * unregisterModuleExternal;
1072 extern int propWatcherID;
1074 unsigned int buildingECERECOM = 0x0;
1076 void SetBuildingEcereCom(unsigned int b)
1078 buildingECERECOM = b;
1081 unsigned int GetBuildingEcereCom()
1083 return buildingECERECOM;
1086 unsigned int buildingECERECOMModule = 0x0;
1088 void SetBuildingEcereComModule(unsigned int b)
1090 buildingECERECOMModule = b;
1093 unsigned int GetBuildingEcereComModule()
1095 return buildingECERECOMModule;
1098 extern struct Identifier * GetDeclId(struct Declarator * decl);
1100 extern unsigned int inCompiler;
1102 extern struct __ecereNameSpace__ecere__sys__OldList * MkList(void);
1104 extern struct Specifier * MkSpecifier(int specifier);
1106 extern void ReplaceThisClassSpecifiers(struct __ecereNameSpace__ecere__sys__OldList * specs, struct __ecereNameSpace__ecere__com__Class * _class);
1108 extern struct FunctionDefinition * _MkFunction(struct __ecereNameSpace__ecere__sys__OldList * specifiers, struct Declarator * declarator, struct __ecereNameSpace__ecere__sys__OldList * declarationList, unsigned int errorOnOmit);
1110 extern void ProcessFunctionBody(struct FunctionDefinition * func, struct Statement * body);
1112 extern struct External * MkExternalFunction(struct FunctionDefinition * function);
1114 extern void ProcessMethodType(struct __ecereNameSpace__ecere__com__Method * method);
1116 extern struct __ecereNameSpace__ecere__com__ClassTemplateArgument * FindTemplateArg(struct __ecereNameSpace__ecere__com__Class * _class, struct TemplateParameter * param);
1118 extern struct Type * ProcessTypeString(char * string, unsigned int staticMethod);
1120 extern struct Symbol * FindClass(char * name);
1122 extern unsigned int MatchTypes(struct Type * source, struct Type * dest, struct __ecereNameSpace__ecere__sys__OldList * conversions, struct __ecereNameSpace__ecere__com__Class * owningClassSource, struct __ecereNameSpace__ecere__com__Class * owningClassDest, unsigned int doConversion, unsigned int enumBaseType, unsigned int acceptReversedParams, unsigned int isConversionExploration);
1124 extern void Compiler_Error(char * format, ...);
1126 extern char * __ecereNameSpace__ecere__GetTranslatedString(struct __ecereNameSpace__ecere__com__Instance * module, char * string, char * stringAndContext);
1128 extern struct __ecereNameSpace__ecere__com__Instance * __thisModule;
1130 extern struct Declarator * GetFuncDecl(struct Declarator * decl);
1132 extern void FreeType(struct Type * type);
1134 extern void FreeExternal(struct External * external);
1136 extern struct Context * globalContext;
1138 extern struct __ecereNameSpace__ecere__sys__OldList * excludedSymbols;
1140 extern struct Declarator * CopyDeclarator(struct Declarator * declarator);
1142 extern struct __ecereNameSpace__ecere__sys__OldList * CopyList(struct __ecereNameSpace__ecere__sys__OldList * source, void * (* CopyFunction)(void * ));
1144 extern struct Specifier * CopySpecifier(struct Specifier * spec);
1146 unsigned int __ecereMethod___ecereNameSpace__ecere__sys__OldList_Insert(struct __ecereNameSpace__ecere__sys__OldList * this, void * prevItem, void * item);
1148 void __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Remove(struct __ecereNameSpace__ecere__sys__BinaryTree * this, struct __ecereNameSpace__ecere__sys__BTNode * node);
1150 void __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add(struct __ecereNameSpace__ecere__sys__OldList * this, void * item);
1152 struct External * ProcessClassFunction(struct __ecereNameSpace__ecere__com__Class * owningClass, struct ClassFunction * func, struct __ecereNameSpace__ecere__sys__OldList * defs, struct External * after, unsigned int makeStatic)
1154 struct Identifier * id = GetDeclId(func->declarator);
1155 struct Type * type = (((void *)0));
1156 struct Symbol * symbol;
1157 struct External * external = (((void *)0));
1159 if(defs && func->declarator)
1161 struct FunctionDefinition * function = (((void *)0));
1162 struct Symbol * propSymbol;
1163 int symid = func->declarator->symbol->id;
1164 int symidCode = func->declarator->symbol->idCode;
1168 if(!func->specifiers)
1169 func->specifiers = MkList();
1171 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Insert((&*func->specifiers), (((void *)0)), MkSpecifier(STATIC));
1173 propSymbol = func->declarator->symbol;
1174 ReplaceThisClassSpecifiers(func->specifiers, owningClass);
1175 if(propSymbol->externalGet == (struct External *)func)
1176 func->declarator->symbol = (((void *)0));
1177 else if(propSymbol->externalSet == (struct External *)func)
1179 func->declarator->symbol = (((void *)0));
1182 else if(propSymbol->externalIsSet == (struct External *)func)
1184 func->declarator->symbol = (((void *)0));
1188 function = _MkFunction(func->specifiers, func->declarator, (((void *)0)), 0x0);
1189 function->propSet = func->propSet;
1190 function->type = func->type;
1192 func->type->refCount++;
1193 ProcessFunctionBody(function, func->body);
1194 external = MkExternalFunction(function);
1195 external->symbol = func->declarator->symbol;
1196 external->function->_class = func->_class;
1198 symbol = func->declarator->symbol;
1200 symbol->idCode = symidCode;
1201 if(!func->dontMangle)
1203 struct __ecereNameSpace__ecere__com__Method * method = func->declarator->symbol->method;
1205 func->declarator->symbol->methodExternal = external;
1206 if(method && method->symbol)
1207 ((struct Symbol *)method->symbol)->methodCodeExternal = external;
1208 if(method && method->type == 1)
1210 struct Type * methodDataType;
1212 ProcessMethodType(method);
1213 methodDataType = method->dataType;
1214 type = symbol->type;
1215 if(!type->staticMethod && !type->thisClass && !type->thisClassTemplate)
1217 if(method->dataType->thisClassTemplate)
1219 if(owningClass->templateArgs)
1221 struct __ecereNameSpace__ecere__com__ClassTemplateArgument * arg = FindTemplateArg(owningClass, method->dataType->thisClassTemplate);
1223 type->byReference = method->dataType->byReference;
1224 methodDataType = ProcessTypeString(method->dataTypeString, 0x0);
1225 type->thisClass = methodDataType->thisClass = arg ? FindClass((*arg).dataTypeString) : (((void *)0));
1228 else if(method->dataType->staticMethod)
1229 type->staticMethod = 0x1;
1230 else if(method->dataType->thisClass)
1232 type->thisClass = method->dataType->thisClass;
1233 type->byReference = method->dataType->byReference;
1237 if(!owningClass->symbol)
1238 owningClass->symbol = FindClass(owningClass->fullName);
1239 type->thisClass = owningClass->symbol;
1240 type->extraParam = 0x1;
1244 if(!MatchTypes(type, methodDataType, (((void *)0)), owningClass, method->_class, 0x1, 0x1, 0x1, 0x0))
1246 Compiler_Error(__ecereNameSpace__ecere__GetTranslatedString(__thisModule, "Incompatible virtual function %s\n", (((void *)0))), method->name);
1250 struct Type * typeParam;
1251 struct Declarator * funcDecl = GetFuncDecl(func->declarator);
1253 if(funcDecl->function.parameters && (*funcDecl->function.parameters).first)
1255 struct TypeName * param = (*funcDecl->function.parameters).first;
1257 for(typeParam = methodDataType->params.first; typeParam && param; typeParam = typeParam->next)
1259 if(typeParam->classObjectType)
1261 param->classObjectType = typeParam->classObjectType;
1262 if(param->declarator && param->declarator->symbol)
1263 param->declarator->symbol->type->classObjectType = typeParam->classObjectType;
1265 param = param ? param->next : (((void *)0));
1269 if(methodDataType != method->dataType)
1270 FreeType(methodDataType);
1274 type = symbol->type;
1275 if(!type->staticMethod && !type->thisClass)
1277 if(owningClass && !owningClass->symbol)
1278 owningClass->symbol = FindClass(owningClass->fullName);
1279 type->thisClass = owningClass ? FindClass(owningClass->fullName) : (((void *)0));
1285 if(symbol->type && !symbol->type->staticMethod && !symbol->type->thisClass)
1287 if(!owningClass->symbol)
1288 owningClass->symbol = FindClass(owningClass->fullName);
1289 symbol->type->thisClass = owningClass->symbol;
1291 if(propSymbol->externalSet == (struct External *)func && propSymbol->_property && propSymbol->_property->conversion)
1293 if(symbol->type->thisClass && symbol->type->classObjectType != 1)
1295 if(owningClass->type != 1)
1296 symbol->type->thisClass = (((void *)0));
1299 if(propSymbol->externalGet == (struct External *)func)
1301 propSymbol->externalGet = external;
1303 else if(propSymbol->externalSet == (struct External *)func)
1305 propSymbol->externalSet = external;
1307 else if(propSymbol->externalIsSet == (struct External *)func)
1309 propSymbol->externalIsSet = external;
1319 func->declarator = (((void *)0));
1320 func->specifiers = (((void *)0));
1321 func->body = (((void *)0));
1322 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Insert(defs, after, external);
1326 struct __ecereNameSpace__ecere__com__Method * method = func->declarator->symbol->method;
1328 if(method && method->symbol)
1329 ((struct Symbol *)method->symbol)->methodCodeExternal = (((void *)0));
1330 if(func->declarator->symbol && func->declarator->symbol->methodExternal == external)
1331 func->declarator->symbol->methodExternal = (((void *)0));
1332 func->declarator = (((void *)0));
1333 func->specifiers = (((void *)0));
1334 FreeExternal(external);
1339 __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Remove(&globalContext->symbols, (struct __ecereNameSpace__ecere__sys__BTNode *)symbol);
1340 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*excludedSymbols), symbol);
1341 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Insert(defs, after, external);
1342 external->function->declarator = CopyDeclarator(external->function->declarator);
1343 external->function->specifiers = CopyList(external->function->specifiers, CopySpecifier);
1344 external->function->body = (((void *)0));
1350 extern struct Statement * MkCompoundStmt(struct __ecereNameSpace__ecere__sys__OldList * declarations, struct __ecereNameSpace__ecere__sys__OldList * statements);
1352 extern void ListAdd(struct __ecereNameSpace__ecere__sys__OldList * list, void * item);
1354 extern struct Declaration * MkDeclaration(struct __ecereNameSpace__ecere__sys__OldList * specifiers, struct __ecereNameSpace__ecere__sys__OldList * initDeclarators);
1356 extern struct __ecereNameSpace__ecere__sys__OldList * MkListOne(void * item);
1358 extern struct Specifier * MkSpecifierName(char * name);
1360 extern struct InitDeclarator * MkInitDeclarator(struct Declarator * declarator, struct Initializer * initializer);
1362 extern struct Declarator * MkDeclaratorIdentifier(struct Identifier * id);
1364 extern struct Identifier * MkIdentifier(char * string);
1366 extern struct TypeName * MkTypeName(struct __ecereNameSpace__ecere__sys__OldList * qualifiers, struct Declarator * declarator);
1368 extern char * __ecereNameSpace__ecere__sys__GetLastDirectory(char * string, char * output);
1370 extern char * outputFile;
1372 extern unsigned int __ecereNameSpace__ecere__sys__StripExtension(char * string);
1374 extern void FixModuleName(char * moduleName);
1376 extern int sprintf(char * , char * , ...);
1378 extern struct Declarator * MkDeclaratorFunction(struct Declarator * declarator, struct __ecereNameSpace__ecere__sys__OldList * parameters);
1380 extern struct __ecereNameSpace__ecere__sys__OldList * ast;
1382 extern void * __ecereNameSpace__ecere__com__eInstance_New(struct __ecereNameSpace__ecere__com__Class * _class);
1384 void CreateRegisterModuleBody()
1386 if(!registerModuleBody && inCompiler)
1388 char registerName[1024], moduleName[274];
1389 struct __ecereNameSpace__ecere__sys__OldList * specifiers;
1390 struct Declarator * declarator;
1391 struct TypeName * moduleParam;
1393 registerModuleBody = MkCompoundStmt(MkList(), MkList());
1394 registerModuleBody->compound.context = __extension__ ({
1395 struct Context * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Context);
1397 __ecereInstance1->parent = globalContext, __ecereInstance1;
1399 ListAdd(registerModuleBody->compound.declarations, MkDeclaration(MkListOne(MkSpecifierName("ecere::com::Class")), MkListOne(MkInitDeclarator(MkDeclaratorIdentifier(MkIdentifier("class")), (((void *)0))))));
1400 specifiers = MkList();
1401 ListAdd(specifiers, MkSpecifier(VOID));
1402 moduleParam = MkTypeName(MkListOne(MkSpecifierName("Module")), MkDeclaratorIdentifier(MkIdentifier("module")));
1403 __ecereNameSpace__ecere__sys__GetLastDirectory(outputFile, moduleName);
1404 __ecereNameSpace__ecere__sys__StripExtension(moduleName);
1405 FixModuleName(moduleName);
1406 sprintf(registerName, "__ecereRegisterModule_%s", moduleName);
1407 declarator = MkDeclaratorFunction(MkDeclaratorIdentifier(MkIdentifier(registerName)), MkListOne(moduleParam));
1409 struct FunctionDefinition * function = _MkFunction(specifiers, declarator, (((void *)0)), 0x0);
1411 ProcessFunctionBody(function, registerModuleBody);
1412 function->declMode = 0;
1415 ListAdd(ast, (registerModuleExternal = MkExternalFunction(function)));
1418 if(!unregisterModuleBody && inCompiler)
1420 char registerName[1024], moduleName[274];
1421 struct __ecereNameSpace__ecere__sys__OldList * specifiers;
1422 struct Declarator * declarator;
1423 struct TypeName * moduleParam;
1425 unregisterModuleBody = MkCompoundStmt(MkList(), MkList());
1426 unregisterModuleBody->compound.context = __extension__ ({
1427 struct Context * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Context);
1429 __ecereInstance1->parent = globalContext, __ecereInstance1;
1431 specifiers = MkList();
1432 ListAdd(specifiers, MkSpecifier(VOID));
1433 moduleParam = MkTypeName(MkListOne(MkSpecifierName("Module")), MkDeclaratorIdentifier(MkIdentifier("module")));
1434 __ecereNameSpace__ecere__sys__GetLastDirectory(outputFile, moduleName);
1435 __ecereNameSpace__ecere__sys__StripExtension(moduleName);
1436 FixModuleName(moduleName);
1437 sprintf(registerName, "__ecereUnregisterModule_%s", moduleName);
1438 declarator = MkDeclaratorFunction(MkDeclaratorIdentifier(MkIdentifier(registerName)), MkListOne(moduleParam));
1440 struct FunctionDefinition * function = _MkFunction(specifiers, declarator, (((void *)0)), 0x0);
1442 ProcessFunctionBody(function, unregisterModuleBody);
1443 function->declMode = 0;
1446 ListAdd(ast, (unregisterModuleExternal = MkExternalFunction(function)));
1451 extern struct Expression * MkExpIdentifier(struct Identifier * id);
1453 extern struct Expression * MkExpConstant(char * string);
1455 extern char * QMkString(char * source);
1457 extern struct Expression * MkExpString(char * string);
1459 extern char * strcpy(char * , const char * );
1461 extern void FullClassNameCat(char * output, char * className, unsigned int includeTemplateParams);
1463 extern char * strcat(char * , const char * );
1465 extern void MangleClassName(char * className);
1467 extern struct Statement * MkExpressionStmt(struct __ecereNameSpace__ecere__sys__OldList * expressions);
1469 extern struct Expression * MkExpOp(struct Expression * exp1, int op, struct Expression * exp2);
1471 extern struct Expression * MkExpCall(struct Expression * expression, struct __ecereNameSpace__ecere__sys__OldList * arguments);
1473 extern struct Expression * MkExpMember(struct Expression * expression, struct Identifier * member);
1475 extern struct Expression * MkExpCast(struct TypeName * typeName, struct Expression * expression);
1477 extern struct Declarator * MkDeclaratorPointer(struct Pointer * pointer, struct Declarator * declarator);
1479 extern struct Pointer * MkPointer(struct __ecereNameSpace__ecere__sys__OldList * qualifiers, struct Pointer * pointer);
1481 extern struct Expression * CopyExpression(struct Expression * exp);
1483 extern struct Statement * MkIfStmt(struct __ecereNameSpace__ecere__sys__OldList * exp, struct Statement * statement, struct Statement * elseStmt);
1485 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__BitMember;
1487 struct __ecereNameSpace__ecere__com__BitMember
1489 struct __ecereNameSpace__ecere__com__BitMember * prev;
1490 struct __ecereNameSpace__ecere__com__BitMember * next;
1492 unsigned int isProperty;
1495 struct __ecereNameSpace__ecere__com__Class * _class;
1496 char * dataTypeString;
1497 struct __ecereNameSpace__ecere__com__Class * dataTypeClass;
1498 struct Type * dataType;
1503 } __attribute__ ((gcc_struct));
1505 extern int ComputeTypeSize(struct Type * type);
1507 extern struct Context * curContext;
1509 extern struct Context * PushContext(void);
1511 extern struct Initializer * MkInitializerAssignment(struct Expression * exp);
1513 extern void PopContext(struct Context * ctx);
1515 extern struct Expression * MkExpCondition(struct Expression * cond, struct __ecereNameSpace__ecere__sys__OldList * expressions, struct Expression * elseExp);
1517 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__ClassProperty;
1519 struct __ecereNameSpace__ecere__com__ClassProperty
1522 struct __ecereNameSpace__ecere__com__ClassProperty * parent;
1523 struct __ecereNameSpace__ecere__com__ClassProperty * left;
1524 struct __ecereNameSpace__ecere__com__ClassProperty * right;
1526 void (* Set)(struct __ecereNameSpace__ecere__com__Class *, long long);
1527 long long (* Get)(struct __ecereNameSpace__ecere__com__Class *);
1528 char * dataTypeString;
1529 struct Type * dataType;
1530 unsigned int constant;
1531 } __attribute__ ((gcc_struct));
1533 struct __ecereNameSpace__ecere__sys__BTNode * __ecereProp___ecereNameSpace__ecere__sys__BinaryTree_Get_first(struct __ecereNameSpace__ecere__sys__BinaryTree * this);
1535 extern struct __ecereNameSpace__ecere__com__Property ** __ecereProp___ecereNameSpace__ecere__sys__BinaryTree_first;
1537 struct __ecereNameSpace__ecere__sys__BTNode * __ecereProp___ecereNameSpace__ecere__sys__BTNode_Get_next(struct __ecereNameSpace__ecere__sys__BTNode * this);
1539 extern struct __ecereNameSpace__ecere__com__Property ** __ecereProp___ecereNameSpace__ecere__sys__BTNode_next;
1541 void RegisterMembersAndProperties(struct __ecereNameSpace__ecere__com__Class * regClass, unsigned int isMember, char * className, struct Statement * statement)
1543 struct __ecereNameSpace__ecere__com__DataMember * dataMember = isMember ? (struct __ecereNameSpace__ecere__com__DataMember *)regClass : (((void *)0));
1544 struct __ecereNameSpace__ecere__com__DataMember * member;
1545 struct __ecereNameSpace__ecere__com__Property * prop;
1546 struct Expression * exp;
1547 struct Statement * stmt;
1548 char dataMemberSize[16];
1549 unsigned int lastOffset = 0;
1551 unsigned int privateMembers = 0x0;
1553 sprintf(dataMemberSize, "%d", (int)sizeof(struct __ecereNameSpace__ecere__com__DataMember *));
1556 for(prop = regClass->conversions.first; prop; prop = prop->next)
1558 struct __ecereNameSpace__ecere__sys__OldList * args = MkList();
1561 ListAdd(args, MkExpIdentifier(MkIdentifier(className)));
1562 ListAdd(args, MkExpConstant("0"));
1564 char * string = QMkString(prop->dataTypeString);
1566 ListAdd(args, MkExpString(string));
1567 (__ecereNameSpace__ecere__com__eSystem_Delete(string), string = 0);
1571 strcpy(name, "__ecereProp_");
1572 FullClassNameCat(name, regClass->fullName, 0x0);
1573 strcat(name, "_Set_");
1574 FullClassNameCat(name, prop->name, 0x1);
1575 MangleClassName(name);
1576 ListAdd(args, MkExpIdentifier(MkIdentifier(name)));
1579 ListAdd(args, MkExpConstant("0"));
1582 strcpy(name, "__ecereProp_");
1583 FullClassNameCat(name, regClass->fullName, 0x0);
1584 strcat(name, "_Get_");
1585 FullClassNameCat(name, prop->name, 0x1);
1586 MangleClassName(name);
1587 ListAdd(args, MkExpIdentifier(MkIdentifier(name)));
1590 ListAdd(args, MkExpConstant("0"));
1591 switch(prop->memberAccess)
1594 ListAdd(args, MkExpIdentifier(MkIdentifier("staticAccess")));
1597 ListAdd(args, MkExpIdentifier(MkIdentifier("privateAccess")));
1601 ListAdd(args, MkExpIdentifier(MkIdentifier("publicAccess")));
1604 strcpy(name, "__ecereProp_");
1605 FullClassNameCat(name, regClass->fullName, 0x0);
1607 FullClassNameCat(name, prop->name, 0x1);
1608 MangleClassName(name);
1609 stmt = MkExpressionStmt(MkListOne(MkExpOp(MkExpIdentifier(MkIdentifier(name)), '=', MkExpCall(MkExpIdentifier(MkIdentifier("eClass_AddProperty")), args))));
1610 ListAdd(registerModuleBody->compound.statements, stmt);
1613 for(member = isMember ? dataMember->members.first : regClass->membersAndProperties.first; member; member = member->next)
1615 if(member->isProperty)
1617 prop = (struct __ecereNameSpace__ecere__com__Property *)member;
1619 struct __ecereNameSpace__ecere__sys__OldList * args = MkList();
1620 char name[1024], nameM[1024];
1621 char * string = QMkString(prop->name);
1623 ListAdd(args, MkExpIdentifier(MkIdentifier(className)));
1624 ListAdd(args, MkExpString(string));
1625 (__ecereNameSpace__ecere__com__eSystem_Delete(string), string = 0);
1627 char * string = QMkString(prop->dataTypeString);
1629 ListAdd(args, MkExpString(string));
1630 (__ecereNameSpace__ecere__com__eSystem_Delete(string), string = 0);
1634 strcpy(name, "__ecereProp_");
1635 FullClassNameCat(name, regClass->fullName, 0x0);
1636 strcat(name, "_Set_");
1637 FullClassNameCat(name, prop->name, 0x1);
1638 MangleClassName(name);
1639 ListAdd(args, MkExpIdentifier(MkIdentifier(name)));
1642 ListAdd(args, MkExpConstant("0"));
1645 strcpy(name, "__ecereProp_");
1646 FullClassNameCat(name, regClass->fullName, 0x0);
1647 strcat(name, "_Get_");
1648 FullClassNameCat(name, prop->name, 0x1);
1649 MangleClassName(name);
1650 ListAdd(args, MkExpIdentifier(MkIdentifier(name)));
1653 ListAdd(args, MkExpConstant("0"));
1654 switch(prop->memberAccess)
1657 ListAdd(args, MkExpIdentifier(MkIdentifier("staticAccess")));
1660 ListAdd(args, MkExpIdentifier(MkIdentifier("privateAccess")));
1664 ListAdd(args, MkExpIdentifier(MkIdentifier("publicAccess")));
1667 strcpy(name, "__ecereProp_");
1668 FullClassNameCat(name, regClass->fullName, 0x0);
1670 FullClassNameCat(name, prop->name, 0x1);
1671 MangleClassName(name);
1672 strcpy(nameM, "__ecerePropM_");
1673 FullClassNameCat(nameM, regClass->fullName, 0x0);
1675 FullClassNameCat(nameM, prop->name, 0x1);
1676 MangleClassName(nameM);
1677 if(prop->dataTypeString)
1679 stmt = MkExpressionStmt(MkListOne(MkExpOp(MkExpIdentifier(MkIdentifier(nameM)), '=', MkExpCall(MkExpIdentifier(MkIdentifier("eClass_AddProperty")), args))));
1683 stmt = MkExpressionStmt(MkListOne(MkExpCall(MkExpIdentifier(MkIdentifier("eClass_AddProperty")), args)));
1685 ListAdd(registerModuleBody->compound.statements, stmt);
1690 strcpy(name, "__ecereProp_");
1691 FullClassNameCat(name, regClass->fullName, 0x1);
1692 strcat(name, "_IsSet_");
1693 FullClassNameCat(name, prop->name, 0x0);
1694 MangleClassName(name);
1695 stmt = MkExpressionStmt(MkListOne(MkExpOp(MkExpMember(MkExpIdentifier(MkIdentifier(nameM)), MkIdentifier("IsSet")), '=', MkExpCast(MkTypeName(MkListOne(MkSpecifier(VOID)), MkDeclaratorPointer(MkPointer((((void *)0)), (((void *)0))), (((void *)0)))), MkExpIdentifier(MkIdentifier(name))))));
1696 ListAdd(registerModuleBody->compound.statements, stmt);
1698 if(prop->symbol && ((struct Symbol *)prop->symbol)->propCategory)
1700 stmt = MkExpressionStmt(MkListOne(MkExpOp(MkExpMember(MkExpIdentifier(MkIdentifier(nameM)), MkIdentifier("category")), '=', CopyExpression(((struct Symbol *)prop->symbol)->propCategory))));
1701 ListAdd(registerModuleBody->compound.statements, stmt);
1703 if(prop->dataTypeString)
1705 struct __ecereNameSpace__ecere__sys__OldList * list = MkList();
1707 ListAdd(list, MkExpOp(MkExpIdentifier(MkIdentifier(name)), '=', MkExpIdentifier(MkIdentifier(nameM))));
1708 ListAdd(list, MkExpOp(MkExpIdentifier(MkIdentifier(nameM)), '=', MkExpCast(MkTypeName(MkListOne(MkSpecifier(VOID)), MkDeclaratorPointer(MkPointer((((void *)0)), (((void *)0))), (((void *)0)))), MkExpConstant("0"))));
1709 stmt = MkIfStmt(MkListOne(MkExpOp(MkExpMember(MkExpIdentifier(MkIdentifier("module")), MkIdentifier("application")), EQ_OP, MkExpMember(MkExpIdentifier(MkIdentifier("__thisModule")), MkIdentifier("application")))), MkExpressionStmt(list), (((void *)0)));
1710 ListAdd(registerModuleBody->compound.statements, stmt);
1711 stmt = MkExpressionStmt(MkListOne(MkExpOp(MkExpIdentifier(MkIdentifier(nameM)), '=', MkExpCast(MkTypeName(MkListOne(MkSpecifier(VOID)), MkDeclaratorPointer(MkPointer((((void *)0)), (((void *)0))), (((void *)0)))), MkExpConstant("0")))));
1712 ListAdd(unregisterModuleBody->compound.statements, stmt);
1716 else if(member->type == 0 && !isMember && regClass->type == 2)
1718 struct __ecereNameSpace__ecere__com__BitMember * bitMember = (struct __ecereNameSpace__ecere__com__BitMember *)member;
1719 struct __ecereNameSpace__ecere__sys__OldList * args = MkList();
1721 ListAdd(args, MkExpIdentifier(MkIdentifier(className)));
1723 char * string = QMkString(bitMember->name);
1725 ListAdd(args, MkExpString(string));
1726 (__ecereNameSpace__ecere__com__eSystem_Delete(string), string = 0);
1729 char * string = QMkString(bitMember->dataTypeString);
1731 ListAdd(args, MkExpString(string));
1732 (__ecereNameSpace__ecere__com__eSystem_Delete(string), string = 0);
1737 sprintf(string, "%d", bitMember->size);
1738 ListAdd(args, (exp = MkExpConstant(string)));
1743 sprintf(string, "%d", bitMember->pos);
1744 ListAdd(args, (exp = MkExpConstant(string)));
1746 switch(member->memberAccess)
1749 ListAdd(args, MkExpIdentifier(MkIdentifier("staticAccess")));
1752 ListAdd(args, MkExpIdentifier(MkIdentifier("privateAccess")));
1756 ListAdd(args, MkExpIdentifier(MkIdentifier("publicAccess")));
1759 stmt = MkExpressionStmt(MkListOne(MkExpCall(MkExpIdentifier(MkIdentifier("eClass_AddBitMember")), args)));
1760 ListAdd(statement->compound.statements, stmt);
1762 else if(member->memberAccess == 1 || (member->type == 0 && !member->dataTypeString))
1764 struct __ecereNameSpace__ecere__sys__OldList * args;
1768 unsigned int offset = member->offset - lastOffset;
1771 ListAdd(args, MkExpIdentifier(MkIdentifier(className)));
1775 sprintf(string, "\"__ecerePrivateData%d\"", privateID++);
1776 ListAdd(args, MkExpString(string));
1781 sprintf(string, "\"byte[%d]\"", offset);
1782 ListAdd(args, MkExpString(string));
1787 sprintf(string, "%d", offset);
1788 ListAdd(args, (exp = MkExpConstant(string)));
1790 ListAdd(args, (exp = MkExpConstant("1")));
1791 ListAdd(args, MkExpIdentifier(MkIdentifier("privateAccess")));
1792 stmt = MkExpressionStmt(MkListOne(MkExpCall(MkExpIdentifier(MkIdentifier(isMember ? "eMember_AddDataMember" : "eClass_AddDataMember")), args)));
1793 ListAdd(statement->compound.statements, stmt);
1794 privateMembers = 0x0;
1796 if(member->type == 0)
1798 if(!member->dataType)
1799 member->dataType = ProcessTypeString(member->dataTypeString, 0x0);
1800 ComputeTypeSize(member->dataType);
1802 ListAdd(args, MkExpIdentifier(MkIdentifier(className)));
1804 char * string = QMkString(member->name);
1806 ListAdd(args, MkExpString(string));
1807 (__ecereNameSpace__ecere__com__eSystem_Delete(string), string = 0);
1810 char * string = QMkString(member->dataTypeString);
1812 ListAdd(args, MkExpString(string));
1813 (__ecereNameSpace__ecere__com__eSystem_Delete(string), string = 0);
1818 sprintf(string, "%d", member->dataType->size);
1819 ListAdd(args, (exp = MkExpConstant(string)));
1824 sprintf(string, "%d", member->dataType->alignment);
1825 ListAdd(args, (exp = MkExpConstant(string)));
1827 switch(member->memberAccess)
1830 ListAdd(args, MkExpIdentifier(MkIdentifier("staticAccess")));
1833 ListAdd(args, MkExpIdentifier(MkIdentifier("privateAccess")));
1837 ListAdd(args, MkExpIdentifier(MkIdentifier("publicAccess")));
1840 stmt = MkExpressionStmt(MkListOne(MkExpCall(MkExpIdentifier(MkIdentifier(isMember ? "eMember_AddDataMember" : "eClass_AddDataMember")), args)));
1841 ListAdd(statement->compound.statements, stmt);
1842 lastOffset = member->offset + member->dataType->size;
1846 static int memberCount = 0;
1847 struct Context * context;
1848 struct Statement * compound;
1849 char memberName[256];
1851 sprintf(memberName, "dataMember%d", memberCount);
1853 curContext = statement->compound.context;
1854 context = PushContext();
1855 args = MkListOne(MkExpIdentifier(MkIdentifier((member->type == 1) ? "unionMember" : "structMember")));
1856 switch(member->memberAccess)
1859 ListAdd(args, MkExpIdentifier(MkIdentifier("staticAccess")));
1862 ListAdd(args, MkExpIdentifier(MkIdentifier("privateAccess")));
1866 ListAdd(args, MkExpIdentifier(MkIdentifier("publicAccess")));
1869 compound = MkCompoundStmt(MkListOne(MkDeclaration(MkListOne(MkSpecifierName("DataMember")), MkListOne(MkInitDeclarator(MkDeclaratorIdentifier(MkIdentifier(memberName)), MkInitializerAssignment(MkExpCall(MkExpIdentifier(MkIdentifier("eMember_New")), args)))))), MkList());
1870 compound->compound.context = context;
1872 ListAdd(args, MkExpIdentifier(MkIdentifier(className)));
1873 ListAdd(args, MkExpIdentifier(MkIdentifier(memberName)));
1874 RegisterMembersAndProperties((struct __ecereNameSpace__ecere__com__Class *)member, 0x1, memberName, compound);
1876 stmt = MkExpressionStmt(MkListOne(MkExpCall(MkExpIdentifier(MkIdentifier("eMember_AddMember")), args)));
1878 stmt = MkExpressionStmt(MkListOne(MkExpCall(MkExpIdentifier(MkIdentifier("eClass_AddMember")), args)));
1879 ListAdd(compound->compound.statements, stmt);
1880 PopContext(context);
1881 ListAdd(statement->compound.statements, compound);
1883 lastOffset = member->offset + member->memberOffset;
1887 privateMembers = 0x1;
1891 struct __ecereNameSpace__ecere__com__ClassProperty * classProperty;
1893 for(prop = regClass->membersAndProperties.first; prop; prop = prop->next)
1895 if(prop->isProperty && prop->isWatchable)
1897 struct __ecereNameSpace__ecere__sys__OldList * args;
1898 char name[1024], nameM[1024];
1900 strcpy(name, "__ecereProp_");
1901 FullClassNameCat(name, regClass->fullName, 0x1);
1903 FullClassNameCat(name, prop->name, 0x0);
1904 MangleClassName(name);
1905 strcpy(nameM, "__ecerePropM_");
1906 FullClassNameCat(nameM, regClass->fullName, 0x1);
1908 FullClassNameCat(nameM, prop->name, 0x0);
1909 MangleClassName(nameM);
1910 args = MkListOne(MkExpCondition(MkExpIdentifier(MkIdentifier(nameM)), MkListOne(MkExpIdentifier(MkIdentifier(nameM))), MkExpIdentifier(MkIdentifier(name))));
1911 stmt = MkExpressionStmt(MkListOne(MkExpCall(MkExpIdentifier(MkIdentifier("eProperty_Watchable")), args)));
1912 ListAdd(registerModuleBody->compound.statements, stmt);
1915 for(classProperty = (struct __ecereNameSpace__ecere__com__ClassProperty *)__ecereProp___ecereNameSpace__ecere__sys__BinaryTree_Get_first(®Class->classProperties); classProperty; classProperty = (struct __ecereNameSpace__ecere__com__ClassProperty *)__ecereProp___ecereNameSpace__ecere__sys__BTNode_Get_next(((struct __ecereNameSpace__ecere__sys__BTNode *)classProperty)))
1917 struct __ecereNameSpace__ecere__sys__OldList * args = MkList();
1919 char * string = QMkString(classProperty->name);
1921 ListAdd(args, MkExpIdentifier(MkIdentifier(className)));
1922 ListAdd(args, MkExpString(string));
1923 (__ecereNameSpace__ecere__com__eSystem_Delete(string), string = 0);
1925 char * string = QMkString(classProperty->dataTypeString);
1927 ListAdd(args, MkExpString(string));
1928 (__ecereNameSpace__ecere__com__eSystem_Delete(string), string = 0);
1930 if(classProperty->Set)
1932 strcpy(name, "__ecereClassProp_");
1933 FullClassNameCat(name, regClass->fullName, 0x1);
1934 strcat(name, "_Set_");
1935 strcat(name, classProperty->name);
1936 MangleClassName(name);
1937 ListAdd(args, MkExpIdentifier(MkIdentifier(name)));
1940 ListAdd(args, MkExpConstant("0"));
1941 if(classProperty->Get)
1943 strcpy(name, "__ecereClassProp_");
1944 FullClassNameCat(name, regClass->fullName, 0x1);
1945 strcat(name, "_Get_");
1946 strcat(name, classProperty->name);
1947 MangleClassName(name);
1948 ListAdd(args, MkExpIdentifier(MkIdentifier(name)));
1951 ListAdd(args, MkExpConstant("0"));
1952 stmt = MkExpressionStmt(MkListOne(MkExpCall(MkExpIdentifier(MkIdentifier("eClass_AddClassProperty")), args)));
1953 ListAdd(registerModuleBody->compound.statements, stmt);
1958 extern struct External * curExternal;
1960 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__NameSpace;
1962 struct __ecereNameSpace__ecere__com__NameSpace
1965 struct __ecereNameSpace__ecere__com__NameSpace * btParent;
1966 struct __ecereNameSpace__ecere__com__NameSpace * left;
1967 struct __ecereNameSpace__ecere__com__NameSpace * right;
1969 struct __ecereNameSpace__ecere__com__NameSpace * parent;
1970 struct __ecereNameSpace__ecere__sys__BinaryTree nameSpaces;
1971 struct __ecereNameSpace__ecere__sys__BinaryTree classes;
1972 struct __ecereNameSpace__ecere__sys__BinaryTree defines;
1973 struct __ecereNameSpace__ecere__sys__BinaryTree functions;
1974 } __attribute__ ((gcc_struct));
1976 void GetNameSpaceString(struct __ecereNameSpace__ecere__com__NameSpace * ns, char * string)
1979 GetNameSpaceString(ns->parent, string);
1982 strcat(string, ns->name);
1983 strcat(string, "::");
1987 extern unsigned int parsingType;
1989 extern void ProcessExpressionType(struct Expression * exp);
1991 extern void ComputeExpression(struct Expression * exp);
1993 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_OpTable;
1997 unsigned int (* Add)(struct Expression *, struct Operand *, struct Operand *);
1998 unsigned int (* Sub)(struct Expression *, struct Operand *, struct Operand *);
1999 unsigned int (* Mul)(struct Expression *, struct Operand *, struct Operand *);
2000 unsigned int (* Div)(struct Expression *, struct Operand *, struct Operand *);
2001 unsigned int (* Mod)(struct Expression *, struct Operand *, struct Operand *);
2002 unsigned int (* Neg)(struct Expression *, struct Operand *);
2003 unsigned int (* Inc)(struct Expression *, struct Operand *);
2004 unsigned int (* Dec)(struct Expression *, struct Operand *);
2005 unsigned int (* Asign)(struct Expression *, struct Operand *, struct Operand *);
2006 unsigned int (* AddAsign)(struct Expression *, struct Operand *, struct Operand *);
2007 unsigned int (* SubAsign)(struct Expression *, struct Operand *, struct Operand *);
2008 unsigned int (* MulAsign)(struct Expression *, struct Operand *, struct Operand *);
2009 unsigned int (* DivAsign)(struct Expression *, struct Operand *, struct Operand *);
2010 unsigned int (* ModAsign)(struct Expression *, struct Operand *, struct Operand *);
2011 unsigned int (* BitAnd)(struct Expression *, struct Operand *, struct Operand *);
2012 unsigned int (* BitOr)(struct Expression *, struct Operand *, struct Operand *);
2013 unsigned int (* BitXor)(struct Expression *, struct Operand *, struct Operand *);
2014 unsigned int (* LShift)(struct Expression *, struct Operand *, struct Operand *);
2015 unsigned int (* RShift)(struct Expression *, struct Operand *, struct Operand *);
2016 unsigned int (* BitNot)(struct Expression *, struct Operand *);
2017 unsigned int (* AndAsign)(struct Expression *, struct Operand *, struct Operand *);
2018 unsigned int (* OrAsign)(struct Expression *, struct Operand *, struct Operand *);
2019 unsigned int (* XorAsign)(struct Expression *, struct Operand *, struct Operand *);
2020 unsigned int (* LShiftAsign)(struct Expression *, struct Operand *, struct Operand *);
2021 unsigned int (* RShiftAsign)(struct Expression *, struct Operand *, struct Operand *);
2022 unsigned int (* Not)(struct Expression *, struct Operand *);
2023 unsigned int (* Equ)(struct Expression *, struct Operand *, struct Operand *);
2024 unsigned int (* Nqu)(struct Expression *, struct Operand *, struct Operand *);
2025 unsigned int (* And)(struct Expression *, struct Operand *, struct Operand *);
2026 unsigned int (* Or)(struct Expression *, struct Operand *, struct Operand *);
2027 unsigned int (* Grt)(struct Expression *, struct Operand *, struct Operand *);
2028 unsigned int (* Sma)(struct Expression *, struct Operand *, struct Operand *);
2029 unsigned int (* GrtEqu)(struct Expression *, struct Operand *, struct Operand *);
2030 unsigned int (* SmaEqu)(struct Expression *, struct Operand *, struct Operand *);
2031 unsigned int (* Cond)(struct Expression *, struct Operand *, struct Operand *, struct Operand *);
2032 } __attribute__ ((gcc_struct));
2034 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Operand;
2040 unsigned int ptrSize;
2053 } __attribute__ ((gcc_struct));
2055 } __attribute__ ((gcc_struct));
2057 extern struct Operand GetOperand(struct Expression * exp);
2059 extern void __ecereNameSpace__ecere__com__eEnum_AddFixedValue(struct __ecereNameSpace__ecere__com__Class * _class, char * string, int value);
2061 extern int __ecereNameSpace__ecere__com__eEnum_AddValue(struct __ecereNameSpace__ecere__com__Class * _class, char * string);
2063 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__sys__OldLink;
2065 struct __ecereNameSpace__ecere__sys__OldLink
2067 struct __ecereNameSpace__ecere__sys__OldLink * prev;
2068 struct __ecereNameSpace__ecere__sys__OldLink * next;
2070 } __attribute__ ((gcc_struct));
2072 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__EnumClassData;
2074 struct __ecereNameSpace__ecere__com__EnumClassData
2076 struct __ecereNameSpace__ecere__sys__OldList values;
2078 } __attribute__ ((gcc_struct));
2080 extern struct ClassFunction * MkClassFunction(struct __ecereNameSpace__ecere__sys__OldList * specifiers, struct Specifier * _class, struct Declarator * decl, struct __ecereNameSpace__ecere__sys__OldList * declList);
2082 extern void ProcessClassFunctionBody(struct ClassFunction * func, struct Statement * body);
2084 extern struct External * MkExternalDeclaration(struct Declaration * declaration);
2086 extern struct ClassDef * MkClassDefFunction(struct ClassFunction * function);
2088 extern struct __ecereNameSpace__ecere__com__Property * __ecereNameSpace__ecere__com__eClass_FindProperty(struct __ecereNameSpace__ecere__com__Class * _class, char * name, struct __ecereNameSpace__ecere__com__Instance * module);
2090 extern struct __ecereNameSpace__ecere__com__Instance * privateModule;
2092 extern void FreePropertyWatch(struct PropertyWatch * watcher);
2094 extern char * sourceFile;
2096 extern void __ecereNameSpace__ecere__sys__ChangeCh(char * string, char ch1, char ch2);
2098 extern struct Type * ProcessType(struct __ecereNameSpace__ecere__sys__OldList * specs, struct Declarator * decl);
2100 extern void PrintType(struct Type * type, char * string, unsigned int printName, unsigned int fullName);
2102 extern struct Expression * MkExpTypeSize(struct TypeName * typeName);
2104 extern struct Specifier * MkStructOrUnion(int type, struct Identifier * id, struct __ecereNameSpace__ecere__sys__OldList * definitions);
2106 extern unsigned int DummyMethod(void);
2108 extern void DeclareMethod(struct __ecereNameSpace__ecere__com__Method * method, char * name);
2110 extern struct __ecereNameSpace__ecere__com__Class * __ecereNameSpace__ecere__com__eSystem_FindClass(struct __ecereNameSpace__ecere__com__Instance * module, char * name);
2112 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__sys__NamedLink;
2114 struct __ecereNameSpace__ecere__sys__NamedLink
2116 struct __ecereNameSpace__ecere__sys__NamedLink * prev;
2117 struct __ecereNameSpace__ecere__sys__NamedLink * next;
2120 } __attribute__ ((gcc_struct));
2122 extern char * StringFromSpecDecl(struct __ecereNameSpace__ecere__sys__OldList * specs, struct Declarator * decl);
2124 extern size_t strlen(const char * );
2126 extern struct MemberInit * MkMemberInit(struct __ecereNameSpace__ecere__sys__OldList * ids, struct Initializer * initializer);
2128 extern char * PrintUInt64(uint64 result);
2130 extern struct Expression * MkExpInstance(struct Instantiation * inst);
2132 extern struct Instantiation * MkInstantiation(struct Specifier * _class, struct Expression * exp, struct __ecereNameSpace__ecere__sys__OldList * members);
2134 extern struct MembersInit * MkMembersInitList(struct __ecereNameSpace__ecere__sys__OldList * dataMembers);
2136 static struct __ecereNameSpace__ecere__com__Instance * classPropValues;
2138 static struct __ecereNameSpace__ecere__com__Class * __ecereClass_ClassPropertyValue;
2140 struct ClassPropertyValue
2142 struct __ecereNameSpace__ecere__com__Class * regClass;
2143 struct Identifier * id;
2144 struct Expression * exp;
2145 } __attribute__ ((gcc_struct));
2147 int __ecereVMethodID_class_OnGetString;
2149 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__TemplateMemberType;
2151 int __ecereVMethodID___ecereNameSpace__ecere__com__Container_Add;
2153 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__List;
2155 static void ProcessClass(int classType, struct __ecereNameSpace__ecere__sys__OldList * definitions, struct Symbol * symbol, struct __ecereNameSpace__ecere__sys__OldList * baseSpecs, struct __ecereNameSpace__ecere__sys__OldList * enumValues, struct __ecereNameSpace__ecere__sys__OldList * defs, struct External * external, int declMode)
2157 struct ClassDef * def;
2158 struct __ecereNameSpace__ecere__com__Class * regClass = symbol->registered;
2162 classType = regClass->type;
2163 if(classType == 4 && enumValues && (inCompiler || !buildingECERECOMModule))
2165 struct Enumerator * e;
2167 for(e = enumValues->first; e; e = e->next)
2171 struct Type * destType = (destType = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Type), destType->kind = 3, destType->refCount = 1, destType);
2173 e->exp->destType = destType;
2175 ProcessExpressionType(e->exp);
2177 if(!e->exp->expType)
2180 destType->_class = symbol;
2181 ProcessExpressionType(e->exp);
2183 ComputeExpression(e->exp);
2184 if(e->exp->isConstant && e->exp->type == 2)
2186 struct Operand op = GetOperand(e->exp);
2200 __ecereNameSpace__ecere__com__eEnum_AddFixedValue(regClass, e->id->string, value);
2203 __ecereNameSpace__ecere__com__eEnum_AddValue(regClass, e->id->string);
2206 __ecereNameSpace__ecere__com__eEnum_AddValue(regClass, e->id->string);
2209 struct __ecereNameSpace__ecere__com__EnumClassData * baseData = regClass->data;
2210 struct __ecereNameSpace__ecere__sys__OldLink * deriv;
2212 for(deriv = regClass->derivatives.first; deriv; deriv = deriv->next)
2214 struct __ecereNameSpace__ecere__com__Class * c = deriv->data;
2216 if(c && c->type == 4)
2218 struct __ecereNameSpace__ecere__com__EnumClassData * data = c->data;
2220 data->largest = baseData->largest;
2225 if(definitions != (((void *)0)))
2229 for(def = definitions->first; def; def = def->next)
2231 if(def->type == 4 && def->propertyWatch)
2233 struct PropertyWatch * propWatch = def->propertyWatch;
2234 struct ClassFunction * func;
2235 char watcherName[1024];
2236 struct Identifier * propID;
2237 struct Statement * stmt = MkExpressionStmt(MkList());
2238 struct Declarator * decl;
2240 sprintf(watcherName, "__ecerePropertySelfWatcher_%d", propWatcherID++);
2241 for(propID = (*propWatch->properties).first; propID; propID = propID->next)
2243 strcat(watcherName, "_");
2244 strcat(watcherName, propID->string);
2246 decl = MkDeclaratorFunction(MkDeclaratorIdentifier(MkIdentifier(watcherName)), MkListOne(MkTypeName(MkListOne(MkSpecifier(VOID)), (((void *)0)))));
2247 func = MkClassFunction(MkListOne(MkSpecifier(VOID)), (((void *)0)), decl, (((void *)0)));
2248 ProcessClassFunctionBody(func, propWatch->compound);
2249 decl->symbol = __extension__ ({
2250 struct Symbol * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Symbol);
2252 __ecereInstance1->id = symbol->id, __ecereInstance1->idCode = symbol->idCode, __ecereInstance1;
2254 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*excludedSymbols), decl->symbol);
2255 func->id = symbol->id;
2256 func->idCode = symbol->idCode;
2257 func->dontMangle = 0x1;
2259 struct External * externalDecl = MkExternalDeclaration((((void *)0)));
2260 struct Declaration * decl;
2261 struct __ecereNameSpace__ecere__sys__OldList * specifiers = MkList();
2263 ListAdd(specifiers, MkSpecifier(STATIC));
2264 ListAdd(specifiers, MkSpecifier(VOID));
2265 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Insert((&*ast), curExternal->prev, externalDecl);
2266 decl = MkDeclaration(specifiers, MkListOne(MkInitDeclarator(MkDeclaratorFunction(MkDeclaratorIdentifier(MkIdentifier(watcherName)), MkListOne(MkTypeName(MkListOne(MkSpecifierName(regClass->fullName)), (((void *)0))))), (((void *)0)))));
2267 externalDecl->declaration = decl;
2268 if(decl->symbol && !decl->symbol->methodExternal)
2270 decl->symbol->methodExternal = externalDecl;
2271 decl->symbol->id = symbol->id;
2272 decl->symbol->idCode = symbol->idCode;
2275 propWatch->compound = (((void *)0));
2276 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Insert(definitions, (((void *)0)), MkClassDefFunction(func));
2278 stmt->expressions = MkList();
2279 for(propID = (*propWatch->properties).first; propID; propID = propID->next)
2281 struct __ecereNameSpace__ecere__com__Property * prop = __ecereNameSpace__ecere__com__eClass_FindProperty(regClass, propID->string, privateModule);
2285 struct __ecereNameSpace__ecere__sys__OldList * args = MkList();
2287 ListAdd(args, MkExpIdentifier(MkIdentifier("class")));
2288 ListAdd(args, MkExpString(QMkString(propID->string)));
2289 ListAdd(args, MkExpIdentifier(MkIdentifier(watcherName)));
2290 ListAdd(stmt->expressions, MkExpCall(MkExpIdentifier(MkIdentifier("eProperty_SelfWatch")), args));
2293 Compiler_Error(__ecereNameSpace__ecere__GetTranslatedString(__thisModule, "Property %s not found in class %s\n", (((void *)0))), propID->string, regClass->fullName);
2295 FreePropertyWatch(def->propertyWatch);
2296 def->propertyWatch = (struct PropertyWatch *)stmt;
2300 for(def = definitions->first; def; def = def->next)
2304 ProcessClassFunction(regClass, def->function, defs, external->prev, declMode == 3);
2308 if(inCompiler && symbol->id != (((int)0x7fffffff)) && regClass)
2310 struct Statement * stmt;
2311 struct __ecereNameSpace__ecere__sys__OldList * args = MkList();
2312 struct __ecereNameSpace__ecere__com__Method * method;
2313 struct Expression * exp;
2314 char * registerFunction = (((void *)0));
2315 int inheritanceAccess = 1;
2317 CreateRegisterModuleBody();
2318 curExternal = registerModuleExternal;
2319 switch(regClass->type)
2322 ListAdd(args, MkExpIdentifier(MkIdentifier("structClass")));
2325 ListAdd(args, MkExpIdentifier(MkIdentifier("bitClass")));
2328 ListAdd(args, MkExpIdentifier(MkIdentifier("enumClass")));
2331 ListAdd(args, MkExpIdentifier(MkIdentifier("noHeadClass")));
2334 ListAdd(args, MkExpIdentifier(MkIdentifier("unitClass")));
2337 ListAdd(args, MkExpIdentifier(MkIdentifier("normalClass")));
2341 char nameSpace[1024] = "";
2342 char className[1024] = "";
2345 GetNameSpaceString(regClass->nameSpace, nameSpace);
2348 __ecereNameSpace__ecere__sys__GetLastDirectory(sourceFile, className);
2349 __ecereNameSpace__ecere__sys__ChangeCh(className, '.', '_');
2350 strcat(className, "}");
2352 strcat(className, nameSpace);
2353 strcat(className, regClass->name);
2354 string = QMkString(className);
2355 ListAdd(args, MkExpString(string));
2356 (__ecereNameSpace__ecere__com__eSystem_Delete(string), string = 0);
2358 if(baseSpecs != (((void *)0)))
2360 struct Type * baseType = ProcessType(baseSpecs, (((void *)0)));
2362 if(baseType->kind != 9 && baseType->kind != 10)
2364 char baseName[1024] = "";
2367 if(baseType->kind == 8 && baseType->_class && baseType->_class->isStatic)
2369 __ecereNameSpace__ecere__sys__GetLastDirectory(sourceFile, baseName);
2370 __ecereNameSpace__ecere__sys__ChangeCh(baseName, '.', '_');
2371 strcat(baseName, "}");
2372 strcat(baseName, baseType->_class->string);
2375 PrintType(baseType, baseName, 0x0, 0x1);
2376 string = QMkString(baseName);
2377 ListAdd(args, MkExpString(string));
2378 (__ecereNameSpace__ecere__com__eSystem_Delete(string), string = 0);
2381 ListAdd(args, MkExpConstant("0"));
2383 if(((struct Specifier *)baseSpecs->first)->type == 0 && ((struct Specifier *)baseSpecs->first)->specifier == PRIVATE)
2384 inheritanceAccess = 2;
2387 ListAdd(args, MkExpConstant("0"));
2388 if(regClass->type == 1 || regClass->type == 0 || regClass->type == 5)
2390 struct __ecereNameSpace__ecere__com__DataMember * member = (((void *)0));
2393 struct __ecereNameSpace__ecere__com__Class * base;
2395 for(base = regClass->base; base && base->type != 1000; base = base->next)
2397 for(member = base->membersAndProperties.first; member; member = member->next)
2398 if(!member->isProperty)
2404 if(regClass->type == 1 && symbol->declaredStruct && member)
2406 char baseStructName[1024];
2408 baseStructName[0] = (char)0;
2409 strcpy(baseStructName, (regClass->base->templateClass ? regClass->base->templateClass : regClass->base)->fullName);
2410 ListAdd(args, MkExpOp(MkExpTypeSize(MkTypeName(MkListOne(MkStructOrUnion(3, MkIdentifier(symbol->structName), (((void *)0)))), (((void *)0)))), '-', MkExpTypeSize(MkTypeName(MkListOne(MkStructOrUnion(3, MkIdentifier(baseStructName), (((void *)0)))), (((void *)0))))));
2413 ListAdd(args, symbol->declaredStruct ? MkExpTypeSize(MkTypeName(MkListOne(MkStructOrUnion(3, MkIdentifier(symbol->structName), (((void *)0)))), (((void *)0)))) : MkExpConstant("0"));
2417 ListAdd(args, MkExpConstant("0"));
2420 char classDataStructName[1024];
2422 strcpy(classDataStructName, "__ecereClassData_");
2423 FullClassNameCat(classDataStructName, symbol->string, 0x0);
2424 ListAdd(args, symbol->classData ? MkExpTypeSize(MkTypeName(MkListOne(MkStructOrUnion(3, MkIdentifier(classDataStructName), (((void *)0)))), (((void *)0)))) : MkExpConstant("0"));
2426 if(regClass->type == 0 || regClass->type == 5)
2428 ListAdd(args, symbol->needConstructor ? MkExpIdentifier(MkIdentifier(symbol->constructorName)) : MkExpConstant("0"));
2429 ListAdd(args, symbol->needDestructor ? MkExpIdentifier(MkIdentifier(symbol->destructorName)) : MkExpConstant("0"));
2433 ListAdd(args, MkExpConstant("0"));
2434 ListAdd(args, MkExpConstant("0"));
2436 ListAdd(args, MkExpIdentifier(MkIdentifier("module")));
2440 ListAdd(args, MkExpIdentifier(MkIdentifier("staticAccess")));
2443 ListAdd(args, MkExpIdentifier(MkIdentifier("privateAccess")));
2447 ListAdd(args, MkExpIdentifier(MkIdentifier(buildingECERECOMModule ? "baseSystemAccess" : "publicAccess")));
2450 switch(inheritanceAccess)
2453 ListAdd(args, MkExpIdentifier(MkIdentifier("privateAccess")));
2457 ListAdd(args, MkExpIdentifier(MkIdentifier("publicAccess")));
2460 registerFunction = "eSystem_RegisterClass";
2461 stmt = MkExpressionStmt(MkListOne(MkExpOp(MkExpIdentifier(MkIdentifier("class")), '=', MkExpCall((exp = MkExpIdentifier(MkIdentifier(registerFunction))), args))));
2462 ListAdd(registerModuleBody->compound.statements, stmt);
2463 stmt = MkIfStmt(MkListOne(MkExpOp(MkExpOp(MkExpMember(MkExpIdentifier(MkIdentifier("module")), MkIdentifier("application")), EQ_OP, MkExpMember(MkExpIdentifier(MkIdentifier("__thisModule")), MkIdentifier("application"))), AND_OP, MkExpIdentifier(MkIdentifier("class")))), MkExpressionStmt(MkListOne(MkExpOp(MkExpIdentifier(MkIdentifier(symbol->className)), '=', MkExpIdentifier(MkIdentifier("class"))))), (((void *)0)));
2464 ListAdd(registerModuleBody->compound.statements, stmt);
2465 if(external && external->type == 2 && external->_class->deleteWatchable)
2467 args = MkListOne(MkExpIdentifier(MkIdentifier("class")));
2468 stmt = MkExpressionStmt(MkListOne(MkExpCall(MkExpIdentifier(MkIdentifier("eClass_DestructionWatchable")), args)));
2469 ListAdd(registerModuleBody->compound.statements, stmt);
2473 struct __ecereNameSpace__ecere__com__Class * base = regClass->base;
2476 for(c = 0; c < base->vTblSize; c++)
2478 struct Symbol * method = (struct Symbol *)regClass->_vTbl[c];
2480 if((void *)method != DummyMethod && base->_vTbl[c] != (void *)method && method->methodExternal)
2482 struct External * external = method->methodExternal;
2483 struct __ecereNameSpace__ecere__sys__OldList * args = MkList();
2484 struct Identifier * id = external->function ? GetDeclId(external->function->declarator) : (((void *)0));
2486 ListAdd(args, MkExpIdentifier(MkIdentifier("class")));
2488 char * string = QMkString(method->method->name);
2490 ListAdd(args, MkExpString(string));
2491 (__ecereNameSpace__ecere__com__eSystem_Delete(string), string = 0);
2493 ListAdd(args, MkExpConstant("0"));
2494 ListAdd(args, (exp = MkExpIdentifier(MkIdentifier(id->string))));
2495 ListAdd(args, MkExpIdentifier(MkIdentifier("publicAccess")));
2496 exp->expType = __extension__ ({
2497 struct Type * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Type);
2499 __ecereInstance1->refCount = 1, __ecereInstance1;
2501 stmt = MkExpressionStmt(MkListOne(MkExpCall(MkExpIdentifier(MkIdentifier("eClass_AddMethod")), args)));
2502 ListAdd(registerModuleBody->compound.statements, stmt);
2509 for(c = regClass->base ? regClass->base->vTblSize : 0; c < regClass->vTblSize; c++)
2511 for(method = (struct __ecereNameSpace__ecere__com__Method *)__ecereProp___ecereNameSpace__ecere__sys__BinaryTree_Get_first(®Class->methods); method; method = (struct __ecereNameSpace__ecere__com__Method *)__ecereProp___ecereNameSpace__ecere__sys__BTNode_Get_next(((struct __ecereNameSpace__ecere__sys__BTNode *)method)))
2513 if(method->type == 1 && method->_class == regClass && method->vid == c)
2516 struct Expression * exp;
2517 struct External * external = method->symbol ? ((struct Symbol *)method->symbol)->methodCodeExternal : (((void *)0));
2518 struct __ecereNameSpace__ecere__sys__OldList * args = MkList();
2519 struct Identifier * id = (external && external->function) ? GetDeclId(external->function->declarator) : (((void *)0));
2521 ListAdd(args, MkExpIdentifier(MkIdentifier("class")));
2523 char * string = QMkString(method->name);
2525 ListAdd(args, MkExpString(string));
2526 (__ecereNameSpace__ecere__com__eSystem_Delete(string), string = 0);
2529 char * string = QMkString(method->dataTypeString);
2531 ListAdd(args, MkExpString(string));
2532 (__ecereNameSpace__ecere__com__eSystem_Delete(string), string = 0);
2534 if(id && external->function->body)
2536 ListAdd(args, (exp = MkExpIdentifier(MkIdentifier(id->string))));
2537 exp->expType = __extension__ ({
2538 struct Type * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Type);
2540 __ecereInstance1->refCount = 1, __ecereInstance1;
2545 ListAdd(args, (exp = MkExpConstant("0")));
2547 switch(method->memberAccess)
2550 ListAdd(args, MkExpIdentifier(MkIdentifier("staticAccess")));
2553 ListAdd(args, MkExpIdentifier(MkIdentifier("privateAccess")));
2557 ListAdd(args, MkExpIdentifier(MkIdentifier("publicAccess")));
2560 strcpy(name, "__ecereVMethodID_");
2561 FullClassNameCat(name, method->_class->fullName, 0x0);
2563 strcat(name, method->name);
2564 exp = MkExpCall(MkExpIdentifier(MkIdentifier("eClass_AddVirtualMethod")), args);
2565 stmt = MkExpressionStmt(MkListOne(exp));
2566 DeclareMethod(method, name);
2567 ListAdd(registerModuleBody->compound.statements, stmt);
2572 for(method = (struct __ecereNameSpace__ecere__com__Method *)__ecereProp___ecereNameSpace__ecere__sys__BinaryTree_Get_first(®Class->methods); method; method = (struct __ecereNameSpace__ecere__com__Method *)__ecereProp___ecereNameSpace__ecere__sys__BTNode_Get_next(((struct __ecereNameSpace__ecere__sys__BTNode *)method)))
2574 if(method->type == 1 && method->_class == regClass)
2576 else if(method->memberAccess == 1 || !method->dataTypeString)
2578 struct External * external = method->symbol ? ((struct Symbol *)method->symbol)->methodCodeExternal : (((void *)0));
2579 struct __ecereNameSpace__ecere__sys__OldList * args = MkList();
2580 struct Identifier * id = (external && external->function) ? GetDeclId(external->function->declarator) : (((void *)0));
2582 ListAdd(args, MkExpIdentifier(MkIdentifier("class")));
2584 char * string = QMkString(method->name);
2586 ListAdd(args, MkExpString(string));
2587 (__ecereNameSpace__ecere__com__eSystem_Delete(string), string = 0);
2590 char * string = QMkString(method->dataTypeString);
2592 ListAdd(args, MkExpString(string));
2593 (__ecereNameSpace__ecere__com__eSystem_Delete(string), string = 0);
2595 if(id && external->function->body)
2597 ListAdd(args, (exp = MkExpIdentifier(MkIdentifier(id->string))));
2598 exp->expType = __extension__ ({
2599 struct Type * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Type);
2601 __ecereInstance1->refCount = 1, __ecereInstance1;
2606 ListAdd(args, (exp = MkExpConstant("0")));
2608 switch(method->memberAccess)
2611 ListAdd(args, MkExpIdentifier(MkIdentifier("staticAccess")));
2614 ListAdd(args, MkExpIdentifier(MkIdentifier("privateAccess")));
2618 ListAdd(args, MkExpIdentifier(MkIdentifier("publicAccess")));
2621 stmt = MkExpressionStmt(MkListOne(MkExpCall(MkExpIdentifier(MkIdentifier("eClass_AddMethod")), args)));
2622 ListAdd(registerModuleBody->compound.statements, stmt);
2625 RegisterMembersAndProperties(regClass, 0x0, "class", registerModuleBody);
2628 struct __ecereNameSpace__ecere__sys__NamedLink * value;
2629 struct __ecereNameSpace__ecere__com__Class * enumClass = __ecereNameSpace__ecere__com__eSystem_FindClass(privateModule, "enum");
2630 struct __ecereNameSpace__ecere__com__EnumClassData * e = (regClass ? ((void *)(((char *)regClass->data) + enumClass->offsetClass)) : (((void *)0)));
2632 for(value = e->values.first; value; value = value->next)
2634 struct __ecereNameSpace__ecere__sys__OldList * args = MkList();
2636 ListAdd(args, MkExpIdentifier(MkIdentifier("class")));
2638 char * string = QMkString(value->name);
2640 ListAdd(args, MkExpString(string));
2641 (__ecereNameSpace__ecere__com__eSystem_Delete(string), string = 0);
2646 sprintf(temp, "%d", (int)value->data);
2647 ListAdd(args, MkExpConstant(temp));
2649 stmt = MkExpressionStmt(MkListOne(MkExpCall(MkExpIdentifier(MkIdentifier("eEnum_AddFixedValue")), args)));
2650 ListAdd(registerModuleBody->compound.statements, stmt);
2653 if(symbol->templateParams)
2655 struct TemplateParameter * param;
2657 for(param = (*symbol->templateParams).first; param; param = param->next)
2659 struct __ecereNameSpace__ecere__sys__OldList * args = MkList();
2661 ListAdd(args, MkExpIdentifier(MkIdentifier("class")));
2663 char * string = QMkString(param->identifier->string);
2665 ListAdd(args, MkExpString(string));
2666 (__ecereNameSpace__ecere__com__eSystem_Delete(string), string = 0);
2668 ListAdd(args, MkExpIdentifier(MkIdentifier((param->type == 0) ? "type" : ((param->type == 1) ? "identifier" : "expression"))));
2674 char * typeString = param->dataType ? StringFromSpecDecl(param->dataType->specifiers, param->dataType->decl) : (((void *)0));
2675 char * string = QMkString(typeString);
2677 ListAdd(args, MkExpString(string));
2678 (__ecereNameSpace__ecere__com__eSystem_Delete(typeString), typeString = 0);
2679 (__ecereNameSpace__ecere__com__eSystem_Delete(string), string = 0);
2684 char memberTypeString[132] = "TemplateMemberType::";
2685 unsigned int needClass = 0x1;
2687 ((char * (*)(struct __ecereNameSpace__ecere__com__Class *, void *, char * tempString, void * fieldData, unsigned int * needClass))__ecereClass___ecereNameSpace__ecere__com__TemplateMemberType->_vTbl[__ecereVMethodID_class_OnGetString])(__ecereClass___ecereNameSpace__ecere__com__TemplateMemberType, ¶m->memberType, memberTypeString + strlen(memberTypeString), (((void *)0)), &needClass);
2688 ListAdd(args, MkExpCast(MkTypeName(MkListOne(MkSpecifier(VOID)), MkDeclaratorPointer(MkPointer((((void *)0)), (((void *)0))), (((void *)0)))), MkExpIdentifier(MkIdentifier(memberTypeString))));
2692 if(param->defaultArgument)
2694 struct __ecereNameSpace__ecere__sys__OldList * members = MkList();
2700 char * typeString = param->defaultArgument->templateDatatype ? StringFromSpecDecl(param->defaultArgument->templateDatatype->specifiers, param->defaultArgument->templateDatatype->decl) : (((void *)0));
2701 char * string = QMkString(typeString);
2703 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*members), MkMemberInit(MkListOne(MkIdentifier("dataTypeString")), MkInitializerAssignment(MkExpString(string))));
2704 (__ecereNameSpace__ecere__com__eSystem_Delete(typeString), typeString = 0);
2705 (__ecereNameSpace__ecere__com__eSystem_Delete(string), string = 0);
2710 char memberString[1024];
2713 memberString[0] = '\0';
2714 if(param->defaultArgument->identifier->_class)
2716 if(param->defaultArgument->identifier->_class->type == 8)
2717 strcpy(memberString, param->defaultArgument->identifier->_class->templateParameter->identifier->string);
2718 else if(param->defaultArgument->identifier->_class->name)
2719 strcpy(memberString, param->defaultArgument->identifier->_class->name);
2722 strcat(memberString, "::");
2723 strcat(memberString, param->defaultArgument->identifier->string);
2724 string = QMkString(memberString);
2725 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*members), MkMemberInit(MkListOne(MkIdentifier("dataTypeString")), MkInitializerAssignment(MkExpString(string))));
2726 (__ecereNameSpace__ecere__com__eSystem_Delete(string), string = 0);
2735 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
2738 struct __ecereNameSpace__ecere__sys__OldList * ids = MkList();
2740 char * string = (((void *)0));
2742 op = GetOperand(param->defaultArgument->expression);
2743 ui64String = PrintUInt64(op.ui64);
2744 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*ids), MkIdentifier("expression"));
2745 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*ids), MkIdentifier("ui64"));
2746 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*members), MkMemberInit(ids, MkInitializerAssignment(MkExpConstant(ui64String))));
2747 (__ecereNameSpace__ecere__com__eSystem_Delete(string), string = 0);
2748 (__ecereNameSpace__ecere__com__eSystem_Delete(ui64String), ui64String = 0);
2752 ListAdd(args, MkExpInstance(MkInstantiation(MkSpecifierName("ClassTemplateArgument"), (((void *)0)), MkListOne(MkMembersInitList(members)))));
2755 ListAdd(args, MkExpIdentifier(MkIdentifier("null")));
2756 stmt = MkExpressionStmt(MkListOne(MkExpCall(MkExpIdentifier(MkIdentifier("eClass_AddTemplateParameter")), args)));
2757 ListAdd(registerModuleBody->compound.statements, stmt);
2759 stmt = MkExpressionStmt(MkListOne(MkExpCall(MkExpIdentifier(MkIdentifier("eClass_DoneAddingTemplateParameters")), MkListOne(MkExpIdentifier(MkIdentifier("class"))))));
2760 ListAdd(registerModuleBody->compound.statements, stmt);
2762 if(definitions != (((void *)0)))
2764 for(def = definitions->first; def; def = def->next)
2766 if(def->type == 4 && def->propertyWatch)
2768 ListAdd(registerModuleBody->compound.statements, (struct Statement *)def->propertyWatch);
2769 def->propertyWatch = (((void *)0));
2771 else if(def->type == 5)
2773 stmt = MkIfStmt(MkListOne(MkExpIdentifier(MkIdentifier("class"))), MkExpressionStmt(MkListOne(MkExpOp(MkExpMember(MkExpIdentifier(MkIdentifier("class")), MkIdentifier("designerClass")), '=', MkExpString(QMkString(def->designer))))), (((void *)0)));
2774 ListAdd(registerModuleBody->compound.statements, stmt);
2776 else if(def->type == 6)
2778 stmt = MkIfStmt(MkListOne(MkExpIdentifier(MkIdentifier("class"))), MkExpressionStmt(MkListOne(MkExpOp(MkExpMember(MkExpIdentifier(MkIdentifier("class")), MkIdentifier("noExpansion")), '=', MkExpConstant("1")))), (((void *)0)));
2779 ListAdd(registerModuleBody->compound.statements, stmt);
2781 else if(def->type == 7)
2783 stmt = MkIfStmt(MkListOne(MkExpIdentifier(MkIdentifier("class"))), MkExpressionStmt(MkListOne(MkExpOp(MkExpMember(MkExpIdentifier(MkIdentifier("class")), MkIdentifier("fixed")), '=', MkExpConstant("1")))), (((void *)0)));
2784 ListAdd(registerModuleBody->compound.statements, stmt);
2786 regClass->fixed = 0x1;
2788 else if(def->type == 8)
2790 stmt = MkIfStmt(MkListOne(MkExpIdentifier(MkIdentifier("class"))), MkExpressionStmt(MkListOne(MkExpOp(MkExpMember(MkExpIdentifier(MkIdentifier("class")), MkIdentifier("defaultProperty")), '=', MkExpString(QMkString(def->defaultProperty->string))))), (((void *)0)));
2791 ListAdd(registerModuleBody->compound.statements, stmt);
2793 else if(def->type == 11)
2795 ((struct __ecereNameSpace__ecere__com__IteratorPointer * (*)(struct __ecereNameSpace__ecere__com__Instance *, uint64 value))__extension__ ({
2796 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = classPropValues;
2798 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__com__List->_vTbl;
2799 })[__ecereVMethodID___ecereNameSpace__ecere__com__Container_Add])(classPropValues, (uint64)(__extension__ ({
2800 struct __ecereNameSpace__ecere__com__Instance * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_ClassPropertyValue);
2802 ((struct ClassPropertyValue *)(((char *)__ecereInstance1 + __ecereClass_ClassPropertyValue->offset)))->regClass = regClass, ((struct ClassPropertyValue *)(((char *)__ecereInstance1 + __ecereClass_ClassPropertyValue->offset)))->id = def->id, ((struct ClassPropertyValue *)(((char *)__ecereInstance1 + __ecereClass_ClassPropertyValue->offset)))->exp = def->initializer->exp, __ecereInstance1;
2804 def->id = (((void *)0));
2805 def->initializer->exp = (((void *)0));
2813 extern void FreeIdentifier(struct Identifier * id);
2815 void __ecereDestructor_ClassPropertyValue(struct __ecereNameSpace__ecere__com__Instance * this)
2817 struct ClassPropertyValue * __ecerePointer_ClassPropertyValue = (struct ClassPropertyValue *)(this ? (((char *)this) + __ecereClass_ClassPropertyValue->offset) : 0);
2820 FreeIdentifier(__ecerePointer_ClassPropertyValue->id);
2824 extern int strcmp(const char * , const char * );
2826 extern void PrintExpression(struct Expression * exp, char * string);
2828 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__IteratorPointer;
2830 struct __ecereNameSpace__ecere__com__IteratorPointer;
2832 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__Iterator;
2834 struct __ecereNameSpace__ecere__com__Iterator
2836 struct __ecereNameSpace__ecere__com__Instance * container;
2837 struct __ecereNameSpace__ecere__com__IteratorPointer * pointer;
2838 } __attribute__ ((gcc_struct));
2840 void __ecereMethod___ecereNameSpace__ecere__sys__OldList_Remove(struct __ecereNameSpace__ecere__sys__OldList * this, void * item);
2842 unsigned int __ecereMethod___ecereNameSpace__ecere__com__Iterator_Next();
2844 uint64 __ecereProp___ecereNameSpace__ecere__com__Iterator_Get_data(struct __ecereNameSpace__ecere__com__Iterator * this);
2846 void __ecereProp___ecereNameSpace__ecere__com__Iterator_Set_data(struct __ecereNameSpace__ecere__com__Iterator * this, uint64 value);
2848 extern struct __ecereNameSpace__ecere__com__Property ** __ecereProp___ecereNameSpace__ecere__com__Iterator_data;
2850 int __ecereVMethodID___ecereNameSpace__ecere__com__Container_Free;
2852 void ProcessClassDefinitions()
2854 struct External * external, * next;
2856 CreateRegisterModuleBody();
2859 for(external = (*ast).first; external; external = next)
2861 next = external->next;
2862 curExternal = external;
2863 if(external->type == 2)
2865 struct ClassDefinition * _class = external->_class;
2867 if(_class->definitions)
2869 ProcessClass(0, _class->definitions, _class->symbol, _class->baseSpecs, (((void *)0)), ast, external, _class->declMode);
2873 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Remove((&*ast), external);
2874 FreeExternal(external);
2877 else if(external->type == 0)
2879 unsigned int setStaticMethod = 0x0;
2881 if(external->symbol && !external->symbol->type->thisClass && !external->symbol->type->staticMethod)
2883 external->symbol->type->staticMethod = 0x1;
2884 setStaticMethod = 0x1;
2888 struct FunctionDefinition * function = external->function;
2889 struct Statement * stmt;
2890 struct __ecereNameSpace__ecere__sys__OldList * args;
2892 if(!strcmp(function->declarator->symbol->string, "__on_register_module"))
2894 ListAdd(registerModuleBody->compound.statements, function->body);
2895 function->body->compound.context->parent = registerModuleBody->compound.context;
2896 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Remove((&*ast), external);
2897 function->body = (((void *)0));
2898 FreeExternal(external);
2901 if(function->declMode != 2 && function->declMode != 1)
2904 CreateRegisterModuleBody();
2906 char * string = QMkString(function->declarator->symbol->string);
2908 ListAdd(args, MkExpString(string));
2909 (__ecereNameSpace__ecere__com__eSystem_Delete(string), string = 0);
2913 char type[1024] = "";
2916 function->declarator->symbol->type->staticMethod = 0x0;
2917 PrintType(function->declarator->symbol->type, type, 0x1, 0x1);
2919 function->declarator->symbol->type->staticMethod = 0x1;
2920 string = QMkString(type);
2921 ListAdd(args, MkExpString(string));
2922 (__ecereNameSpace__ecere__com__eSystem_Delete(string), string = 0);
2925 ListAdd(args, MkExpIdentifier(MkIdentifier(function->declarator->symbol->string)));
2927 ListAdd(args, MkExpIdentifier(MkIdentifier("module")));
2928 switch(function->declMode)
2931 ListAdd(args, MkExpIdentifier(MkIdentifier("staticAccess")));
2934 ListAdd(args, MkExpIdentifier(MkIdentifier("privateAccess")));
2938 ListAdd(args, MkExpIdentifier(MkIdentifier(buildingECERECOMModule ? "baseSystemAccess" : "publicAccess")));
2941 stmt = MkExpressionStmt(MkListOne(MkExpCall((MkExpIdentifier(MkIdentifier("eSystem_RegisterFunction"))), args)));
2942 ListAdd(registerModuleBody->compound.statements, stmt);
2945 else if(external->type == 1)
2947 struct Declaration * declaration = external->declaration;
2949 if(external->symbol)
2951 if(external->symbol->type && external->symbol->type->kind == 11 && !external->symbol->type->thisClass)
2952 external->symbol->type->staticMethod = 0x1;
2954 if(external->symbol && declaration->type == 1)
2956 if(declaration->specifiers)
2958 struct Specifier * specifier;
2959 unsigned int removeExternal = 0x0;
2961 for(specifier = (*declaration->specifiers).first; specifier; specifier = specifier->next)
2963 if((specifier->type == 2 || specifier->type == 3 || specifier->type == 4) && specifier->id && specifier->id->string && (declaration->declMode || specifier->baseSpecs || (specifier->type == 2 && specifier->definitions)))
2965 struct Symbol * symbol = FindClass(specifier->id->string);
2971 if(specifier->type == 2)
2975 removeExternal = 0x1;
2976 symbol->ctx = specifier->ctx;
2977 specifier->ctx = (((void *)0));
2978 ProcessClass(classType, specifier->definitions, symbol, specifier->baseSpecs, specifier->list, ast, external, declaration->declMode);
2982 if(inCompiler && removeExternal)
2984 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Remove((&*ast), external);
2985 FreeExternal(external);
2989 else if(declaration->type == 3)
2991 if(inCompiler && declaration->declMode != 3)
2993 struct Statement * stmt;
2994 struct __ecereNameSpace__ecere__sys__OldList * args = MkList();
2996 CreateRegisterModuleBody();
2998 char * string = QMkString(declaration->id->string);
3000 ListAdd(args, MkExpString(string));
3001 (__ecereNameSpace__ecere__com__eSystem_Delete(string), string = 0);
3005 char type[1024] = "";
3007 PrintExpression(declaration->exp, type);
3008 string = QMkString(type);
3009 ListAdd(args, MkExpString(string));
3010 (__ecereNameSpace__ecere__com__eSystem_Delete(string), string = 0);
3012 ListAdd(args, MkExpIdentifier(MkIdentifier("module")));
3013 switch(declaration->declMode)
3016 ListAdd(args, MkExpIdentifier(MkIdentifier("staticAccess")));
3019 ListAdd(args, MkExpIdentifier(MkIdentifier("privateAccess")));
3023 ListAdd(args, MkExpIdentifier(MkIdentifier(buildingECERECOMModule ? "baseSystemAccess" : "publicAccess")));
3026 stmt = MkExpressionStmt(MkListOne(MkExpCall((MkExpIdentifier(MkIdentifier("eSystem_RegisterDefine"))), args)));
3027 ListAdd(registerModuleBody->compound.statements, stmt);
3033 struct __ecereNameSpace__ecere__com__Iterator v =
3035 (classPropValues), 0
3038 while(__ecereMethod___ecereNameSpace__ecere__com__Iterator_Next(&v))
3040 struct __ecereNameSpace__ecere__sys__OldList * findClassArgs = MkList();
3041 struct __ecereNameSpace__ecere__sys__OldList * args = MkList();
3042 struct Statement * compoundStmt;
3044 ListAdd(findClassArgs, MkExpIdentifier(MkIdentifier("module")));
3045 ListAdd(findClassArgs, MkExpString(QMkString(__extension__ ({
3046 char * __ecTemp1 = (((struct __ecereNameSpace__ecere__com__Instance *)__ecereProp___ecereNameSpace__ecere__com__Iterator_Get_data(&v)));
3048 ((struct ClassPropertyValue *)(__ecTemp1 + __ecereClass_ClassPropertyValue->offset));
3049 })->regClass->name)));
3050 ListAdd(args, MkExpIdentifier(MkIdentifier("_class")));
3051 ListAdd(args, MkExpString(QMkString(__extension__ ({
3052 char * __ecTemp1 = (((struct __ecereNameSpace__ecere__com__Instance *)__ecereProp___ecereNameSpace__ecere__com__Iterator_Get_data(&v)));
3054 ((struct ClassPropertyValue *)(__ecTemp1 + __ecereClass_ClassPropertyValue->offset));
3056 ListAdd(args, MkExpCast(MkTypeName(MkListOne(MkSpecifier(INT64)), (((void *)0))), __extension__ ({
3057 char * __ecTemp1 = (((struct __ecereNameSpace__ecere__com__Instance *)__ecereProp___ecereNameSpace__ecere__com__Iterator_Get_data(&v)));
3059 ((struct ClassPropertyValue *)(__ecTemp1 + __ecereClass_ClassPropertyValue->offset));
3061 compoundStmt = MkCompoundStmt(MkListOne(MkDeclaration(MkListOne(MkSpecifierName("ecere::com::Class")), MkListOne(MkInitDeclarator(MkDeclaratorIdentifier(MkIdentifier("_class")), MkInitializerAssignment(MkExpCall(MkExpIdentifier(MkIdentifier("ecere::com::eSystem_FindClass")), findClassArgs)))))), MkListOne(MkExpressionStmt(MkListOne(MkExpCall(MkExpIdentifier(MkIdentifier("ecere::com::eClass_SetProperty")), args)))));
3062 compoundStmt->compound.context = __extension__ ({
3063 struct Context * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Context);
3065 __ecereInstance1->parent = registerModuleBody->compound.context, __ecereInstance1;
3067 ListAdd(registerModuleBody->compound.statements, compoundStmt);
3070 ((void (*)(struct __ecereNameSpace__ecere__com__Instance *))__extension__ ({
3071 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = classPropValues;
3073 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__com__List->_vTbl;
3074 })[__ecereVMethodID___ecereNameSpace__ecere__com__Container_Free])(classPropValues);
3078 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__GlobalFunction;
3080 struct __ecereNameSpace__ecere__com__GlobalFunction;
3082 extern struct __ecereNameSpace__ecere__com__GlobalFunction * __ecereNameSpace__ecere__com__eSystem_RegisterFunction(char * name, char * type, void * func, struct __ecereNameSpace__ecere__com__Instance * module, int declMode);
3084 extern struct __ecereNameSpace__ecere__com__Class * __ecereNameSpace__ecere__com__eSystem_RegisterClass(int type, char * name, char * baseName, int size, int sizeClass, unsigned int (* Constructor)(void * ), void (* Destructor)(void * ), struct __ecereNameSpace__ecere__com__Instance * module, int declMode, int inheritanceAccess);
3086 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__Module;
3088 struct __ecereNameSpace__ecere__com__Module
3090 struct __ecereNameSpace__ecere__com__Instance * application;
3091 struct __ecereNameSpace__ecere__sys__OldList classes;
3092 struct __ecereNameSpace__ecere__sys__OldList defines;
3093 struct __ecereNameSpace__ecere__sys__OldList functions;
3094 struct __ecereNameSpace__ecere__sys__OldList modules;
3095 struct __ecereNameSpace__ecere__com__Instance * prev;
3096 struct __ecereNameSpace__ecere__com__Instance * next;
3102 struct __ecereNameSpace__ecere__com__NameSpace privateNameSpace;
3103 struct __ecereNameSpace__ecere__com__NameSpace publicNameSpace;
3104 } __attribute__ ((gcc_struct));
3106 void __ecereRegisterModule_pass1(struct __ecereNameSpace__ecere__com__Instance * module)
3108 struct __ecereNameSpace__ecere__com__Class * class;
3110 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("SetBuildingEcereCom", "void SetBuildingEcereCom(bool b)", SetBuildingEcereCom, module, 1);
3111 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("GetBuildingEcereCom", "bool GetBuildingEcereCom(void)", GetBuildingEcereCom, module, 1);
3112 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("SetBuildingEcereComModule", "void SetBuildingEcereComModule(bool b)", SetBuildingEcereComModule, module, 1);
3113 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("GetBuildingEcereComModule", "bool GetBuildingEcereComModule(void)", GetBuildingEcereComModule, module, 1);
3114 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ProcessClassFunction", "External ProcessClassFunction(ecere::com::Class owningClass, ClassFunction func, ecere::sys::OldList defs, External after, bool makeStatic)", ProcessClassFunction, module, 2);
3115 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("CreateRegisterModuleBody", "void CreateRegisterModuleBody(void)", CreateRegisterModuleBody, module, 2);
3116 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("RegisterMembersAndProperties", "void RegisterMembersAndProperties(ecere::com::Class regClass, bool isMember, char * className, Statement statement)", RegisterMembersAndProperties, module, 2);
3117 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("GetNameSpaceString", "void GetNameSpaceString(ecere::com::NameSpace ns, char * string)", GetNameSpaceString, module, 2);
3118 class = __ecereNameSpace__ecere__com__eSystem_RegisterClass(0, "ClassPropertyValue", 0, sizeof(struct ClassPropertyValue), 0, 0, __ecereDestructor_ClassPropertyValue, module, 2, 1);
3119 if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + structSize_Instance)))->application == ((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + structSize_Instance)))->application && class)
3120 __ecereClass_ClassPropertyValue = class;
3121 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ProcessClassDefinitions", "void ProcessClassDefinitions(void)", ProcessClassDefinitions, module, 1);
3124 void __ecereUnregisterModule_pass1(struct __ecereNameSpace__ecere__com__Instance * module)
3129 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__List_TPL_ClassPropertyValue_;
3131 void __ecereCreateModuleInstances_pass1()
3133 classPropValues = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass___ecereNameSpace__ecere__com__List_TPL_ClassPropertyValue_);
3134 __ecereNameSpace__ecere__com__eInstance_IncRef(classPropValues);
3137 extern void __ecereNameSpace__ecere__com__eInstance_DecRef(struct __ecereNameSpace__ecere__com__Instance * instance);
3139 void __ecereDestroyModuleInstances_pass1()
3141 (__ecereNameSpace__ecere__com__eInstance_DecRef(classPropValues), classPropValues = 0);