2 typedef long long int64;
3 typedef unsigned long long uint64;
7 #elif defined(__TINYC__)
9 #define __builtin_va_list va_list
10 #define __builtin_va_start va_start
11 #define __builtin_va_end va_end
13 #define strcasecmp stricmp
14 #define strncasecmp strnicmp
15 #define __declspec(x) __attribute__((x))
19 typedef long long int64;
20 typedef unsigned long long uint64;
22 typedef __int64 int64;
23 typedef unsigned __int64 uint64;
26 #define __ENDIAN_PAD(x) (8 - (x))
28 #define __ENDIAN_PAD(x) 0
31 #include <sys/types.h>
32 extern void * __ecereNameSpace__ecere__com__eSystem_New(unsigned int size);
34 extern void * __ecereNameSpace__ecere__com__eSystem_New0(unsigned int size);
36 extern void * __ecereNameSpace__ecere__com__eSystem_Renew(void * memory, unsigned int size);
38 extern void * __ecereNameSpace__ecere__com__eSystem_Renew0(void * memory, unsigned int size);
40 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__sys__BTNode;
42 struct __ecereNameSpace__ecere__sys__BTNode;
44 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__sys__BinaryTree;
46 struct __ecereNameSpace__ecere__sys__BinaryTree
48 struct __ecereNameSpace__ecere__sys__BTNode * root;
50 int (* CompareKey)(struct __ecereNameSpace__ecere__sys__BinaryTree * tree, uintptr_t a, uintptr_t b);
51 void (* FreeKey)(void * key);
52 } __attribute__ ((gcc_struct));
54 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__sys__OldList;
56 struct __ecereNameSpace__ecere__sys__OldList
63 } __attribute__ ((gcc_struct));
65 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__Method;
67 struct __ecereNameSpace__ecere__com__Method
70 struct __ecereNameSpace__ecere__com__Method * parent;
71 struct __ecereNameSpace__ecere__com__Method * left;
72 struct __ecereNameSpace__ecere__com__Method * right;
77 struct __ecereNameSpace__ecere__com__Class * _class;
79 char * dataTypeString;
80 struct Type * dataType;
82 } __attribute__ ((gcc_struct));
84 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__Property;
86 struct __ecereNameSpace__ecere__com__Property
88 struct __ecereNameSpace__ecere__com__Property * prev;
89 struct __ecereNameSpace__ecere__com__Property * next;
91 unsigned int isProperty;
94 struct __ecereNameSpace__ecere__com__Class * _class;
95 char * dataTypeString;
96 struct __ecereNameSpace__ecere__com__Class * dataTypeClass;
97 struct Type * dataType;
98 void (* Set)(void * , int);
100 unsigned int (* IsSet)(void * );
104 unsigned int conversion;
105 unsigned int watcherOffset;
107 unsigned int compiled;
108 unsigned int selfWatchable;
109 unsigned int isWatchable;
110 } __attribute__ ((gcc_struct));
112 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_CodePosition;
119 unsigned int included;
120 } __attribute__ ((gcc_struct));
122 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Location;
126 struct CodePosition start;
127 struct CodePosition end;
128 } __attribute__ ((gcc_struct));
130 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Attrib;
134 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_ExtDecl;
138 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_ClassDefinition;
140 struct ClassDefinition
142 struct ClassDefinition * prev;
143 struct ClassDefinition * next;
145 struct Specifier * _class;
146 struct __ecereNameSpace__ecere__sys__OldList * baseSpecs;
147 struct __ecereNameSpace__ecere__sys__OldList * definitions;
148 struct Symbol * symbol;
149 struct Location blockStart;
150 struct Location nameLoc;
153 unsigned int deleteWatchable;
154 } __attribute__ ((gcc_struct));
156 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Context;
160 struct Context * parent;
161 struct __ecereNameSpace__ecere__sys__BinaryTree types;
162 struct __ecereNameSpace__ecere__sys__BinaryTree classes;
163 struct __ecereNameSpace__ecere__sys__BinaryTree symbols;
164 struct __ecereNameSpace__ecere__sys__BinaryTree structSymbols;
167 struct __ecereNameSpace__ecere__sys__BinaryTree templateTypes;
168 struct ClassDefinition * classDef;
169 unsigned int templateTypesOnly;
170 unsigned int hasNameSpace;
171 } __attribute__ ((gcc_struct));
173 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Instantiation;
175 struct Instantiation;
177 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Declaration;
181 struct Declaration * prev;
182 struct Declaration * next;
189 struct __ecereNameSpace__ecere__sys__OldList * specifiers;
190 struct __ecereNameSpace__ecere__sys__OldList * declarators;
191 } __attribute__ ((gcc_struct));
192 struct Instantiation * inst;
195 struct Identifier * id;
196 struct Expression * exp;
197 } __attribute__ ((gcc_struct));
198 } __attribute__ ((gcc_struct));
199 struct Specifier * extStorage;
200 struct Symbol * symbol;
202 } __attribute__ ((gcc_struct));
204 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Statement;
208 struct Statement * prev;
209 struct Statement * next;
214 struct __ecereNameSpace__ecere__sys__OldList * expressions;
217 struct Identifier * id;
218 struct Statement * stmt;
219 } __attribute__ ((gcc_struct)) labeled;
222 struct Expression * exp;
223 struct Statement * stmt;
224 } __attribute__ ((gcc_struct)) caseStmt;
227 struct __ecereNameSpace__ecere__sys__OldList * declarations;
228 struct __ecereNameSpace__ecere__sys__OldList * statements;
229 struct Context * context;
230 unsigned int isSwitch;
231 } __attribute__ ((gcc_struct)) compound;
234 struct __ecereNameSpace__ecere__sys__OldList * exp;
235 struct Statement * stmt;
236 struct Statement * elseStmt;
237 } __attribute__ ((gcc_struct)) ifStmt;
240 struct __ecereNameSpace__ecere__sys__OldList * exp;
241 struct Statement * stmt;
242 } __attribute__ ((gcc_struct)) switchStmt;
245 struct __ecereNameSpace__ecere__sys__OldList * exp;
246 struct Statement * stmt;
247 } __attribute__ ((gcc_struct)) whileStmt;
250 struct __ecereNameSpace__ecere__sys__OldList * exp;
251 struct Statement * stmt;
252 } __attribute__ ((gcc_struct)) doWhile;
255 struct Statement * init;
256 struct Statement * check;
257 struct __ecereNameSpace__ecere__sys__OldList * increment;
258 struct Statement * stmt;
259 } __attribute__ ((gcc_struct)) forStmt;
262 struct Identifier * id;
263 } __attribute__ ((gcc_struct)) gotoStmt;
266 struct Specifier * spec;
268 struct __ecereNameSpace__ecere__sys__OldList * inputFields;
269 struct __ecereNameSpace__ecere__sys__OldList * outputFields;
270 struct __ecereNameSpace__ecere__sys__OldList * clobberedFields;
271 } __attribute__ ((gcc_struct)) asmStmt;
274 struct Expression * watcher;
275 struct Expression * object;
276 struct __ecereNameSpace__ecere__sys__OldList * watches;
277 } __attribute__ ((gcc_struct)) _watch;
280 struct Identifier * id;
281 struct __ecereNameSpace__ecere__sys__OldList * exp;
282 struct __ecereNameSpace__ecere__sys__OldList * filter;
283 struct Statement * stmt;
284 } __attribute__ ((gcc_struct)) forEachStmt;
285 struct Declaration * decl;
286 } __attribute__ ((gcc_struct));
287 } __attribute__ ((gcc_struct));
289 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_TypeName;
293 struct TypeName * prev;
294 struct TypeName * next;
296 struct __ecereNameSpace__ecere__sys__OldList * qualifiers;
297 struct Declarator * declarator;
299 struct Expression * bitCount;
300 } __attribute__ ((gcc_struct));
302 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Initializer;
306 struct Initializer * prev;
307 struct Initializer * next;
312 struct Expression * exp;
313 struct __ecereNameSpace__ecere__sys__OldList * list;
314 } __attribute__ ((gcc_struct));
315 unsigned int isConstant;
316 } __attribute__ ((gcc_struct));
318 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__DataValue;
320 struct __ecereNameSpace__ecere__com__DataValue
335 } __attribute__ ((gcc_struct));
336 } __attribute__ ((gcc_struct));
338 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Expression;
342 struct Expression * prev;
343 struct Expression * next;
351 struct Identifier * identifier;
352 } __attribute__ ((gcc_struct));
353 struct Statement * compound;
354 struct Instantiation * instance;
356 struct __ecereNameSpace__ecere__sys__OldList * list;
359 struct __ecereNameSpace__ecere__sys__OldList * specifiers;
360 struct Declarator * decl;
361 } __attribute__ ((gcc_struct)) _classExp;
364 struct Identifier * id;
365 } __attribute__ ((gcc_struct)) classData;
368 struct Expression * exp;
369 struct __ecereNameSpace__ecere__sys__OldList * arguments;
370 struct Location argLoc;
371 } __attribute__ ((gcc_struct)) call;
374 struct Expression * exp;
375 struct __ecereNameSpace__ecere__sys__OldList * index;
376 } __attribute__ ((gcc_struct)) index;
379 struct Expression * exp;
380 struct Identifier * member;
382 unsigned int thisPtr;
383 } __attribute__ ((gcc_struct)) member;
387 struct Expression * exp1;
388 struct Expression * exp2;
389 } __attribute__ ((gcc_struct)) op;
390 struct TypeName * typeName;
391 struct Specifier * _class;
394 struct TypeName * typeName;
395 struct Expression * exp;
396 } __attribute__ ((gcc_struct)) cast;
399 struct Expression * cond;
400 struct __ecereNameSpace__ecere__sys__OldList * exp;
401 struct Expression * elseExp;
402 } __attribute__ ((gcc_struct)) cond;
405 struct TypeName * typeName;
406 struct Expression * size;
407 } __attribute__ ((gcc_struct)) _new;
410 struct TypeName * typeName;
411 struct Expression * size;
412 struct Expression * exp;
413 } __attribute__ ((gcc_struct)) _renew;
417 struct Identifier * id;
418 } __attribute__ ((gcc_struct)) db;
421 struct Expression * ds;
422 struct Expression * name;
423 } __attribute__ ((gcc_struct)) dbopen;
426 struct TypeName * typeName;
427 struct Initializer * initializer;
428 } __attribute__ ((gcc_struct)) initializer;
431 struct Expression * exp;
432 struct TypeName * typeName;
433 } __attribute__ ((gcc_struct)) vaArg;
434 } __attribute__ ((gcc_struct));
435 unsigned int debugValue;
436 struct __ecereNameSpace__ecere__com__DataValue val;
438 unsigned int hasAddress;
439 struct Type * expType;
440 struct Type * destType;
443 unsigned int byReference;
444 unsigned int isConstant;
445 unsigned int addedThis;
446 unsigned int needCast;
447 unsigned int thisPtr;
448 } __attribute__ ((gcc_struct));
450 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_TemplateDatatype;
452 struct TemplateDatatype
454 struct __ecereNameSpace__ecere__sys__OldList * specifiers;
455 struct Declarator * decl;
456 } __attribute__ ((gcc_struct));
458 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_TemplateArgument;
460 struct TemplateArgument
462 struct TemplateArgument * prev;
463 struct TemplateArgument * next;
465 struct Identifier * name;
469 struct Expression * expression;
470 struct Identifier * identifier;
471 struct TemplateDatatype * templateDatatype;
472 } __attribute__ ((gcc_struct));
473 } __attribute__ ((gcc_struct));
475 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_TemplateParameter;
477 struct TemplateParameter
479 struct TemplateParameter * prev;
480 struct TemplateParameter * next;
483 struct Identifier * identifier;
486 struct TemplateDatatype * dataType;
488 } __attribute__ ((gcc_struct));
489 struct TemplateArgument * defaultArgument;
490 char * dataTypeString;
491 struct Type * baseType;
492 } __attribute__ ((gcc_struct));
494 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Specifier;
498 struct Specifier * prev;
499 struct Specifier * next;
507 struct ExtDecl * extDecl;
509 struct Symbol * symbol;
510 struct __ecereNameSpace__ecere__sys__OldList * templateArgs;
511 } __attribute__ ((gcc_struct));
514 struct Identifier * id;
515 struct __ecereNameSpace__ecere__sys__OldList * list;
516 struct __ecereNameSpace__ecere__sys__OldList * baseSpecs;
517 struct __ecereNameSpace__ecere__sys__OldList * definitions;
518 unsigned int addNameSpace;
519 struct Context * ctx;
520 struct ExtDecl * extDeclStruct;
521 } __attribute__ ((gcc_struct));
522 struct Expression * expression;
523 struct Specifier * _class;
524 struct TemplateParameter * templateParameter;
525 } __attribute__ ((gcc_struct));
526 } __attribute__ ((gcc_struct));
528 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Identifier;
532 struct Identifier * prev;
533 struct Identifier * next;
535 struct Symbol * classSym;
536 struct Specifier * _class;
538 struct Identifier * badID;
539 } __attribute__ ((gcc_struct));
541 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Pointer;
545 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Declarator;
549 struct Declarator * prev;
550 struct Declarator * next;
553 struct Symbol * symbol;
554 struct Declarator * declarator;
557 struct Identifier * identifier;
560 struct Expression * exp;
561 struct Expression * posExp;
562 struct Attrib * attrib;
563 } __attribute__ ((gcc_struct)) structDecl;
566 struct Expression * exp;
567 struct Specifier * enumClass;
568 } __attribute__ ((gcc_struct)) array;
571 struct __ecereNameSpace__ecere__sys__OldList * parameters;
572 } __attribute__ ((gcc_struct)) function;
575 struct Pointer * pointer;
576 } __attribute__ ((gcc_struct)) pointer;
579 struct ExtDecl * extended;
580 } __attribute__ ((gcc_struct)) extended;
581 } __attribute__ ((gcc_struct));
582 } __attribute__ ((gcc_struct));
584 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_FunctionDefinition;
586 struct FunctionDefinition
588 struct FunctionDefinition * prev;
589 struct FunctionDefinition * next;
591 struct __ecereNameSpace__ecere__sys__OldList * specifiers;
592 struct Declarator * declarator;
593 struct __ecereNameSpace__ecere__sys__OldList * declarations;
594 struct Statement * body;
595 struct __ecereNameSpace__ecere__com__Class * _class;
596 struct __ecereNameSpace__ecere__sys__OldList attached;
599 struct Symbol * propSet;
601 unsigned int propertyNoThis;
602 } __attribute__ ((gcc_struct));
604 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_DBTableDef;
608 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_External;
612 struct External * prev;
613 struct External * next;
616 struct Symbol * symbol;
619 struct FunctionDefinition * function;
620 struct ClassDefinition * _class;
621 struct Declaration * declaration;
623 struct Identifier * id;
624 struct DBTableDef * table;
625 } __attribute__ ((gcc_struct));
627 } __attribute__ ((gcc_struct));
629 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_ModuleImport;
633 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_ClassImport;
637 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Symbol;
642 struct Symbol * parent;
643 struct Symbol * left;
644 struct Symbol * right;
649 struct __ecereNameSpace__ecere__com__Method * method;
650 struct __ecereNameSpace__ecere__com__Property * _property;
651 struct __ecereNameSpace__ecere__com__Class * registered;
652 } __attribute__ ((gcc_struct));
659 struct External * pointerExternal;
660 struct External * structExternal;
661 } __attribute__ ((gcc_struct));
664 struct External * externalGet;
665 struct External * externalSet;
666 struct External * externalPtr;
667 struct External * externalIsSet;
668 } __attribute__ ((gcc_struct));
671 struct External * methodExternal;
672 struct External * methodCodeExternal;
673 } __attribute__ ((gcc_struct));
674 } __attribute__ ((gcc_struct));
675 unsigned int imported;
676 unsigned int declaredStructSym;
677 struct __ecereNameSpace__ecere__com__Class * _class;
678 unsigned int declaredStruct;
679 unsigned int needConstructor;
680 unsigned int needDestructor;
681 char * constructorName;
684 char * destructorName;
685 struct ModuleImport * module;
686 struct ClassImport * _import;
687 struct Location nameLoc;
688 unsigned int isParam;
689 unsigned int isRemote;
690 unsigned int isStruct;
691 unsigned int fireWatchersDone;
693 unsigned int classData;
694 unsigned int isStatic;
696 struct __ecereNameSpace__ecere__sys__OldList * templateParams;
697 struct __ecereNameSpace__ecere__sys__OldList templatedClasses;
698 struct Context * ctx;
700 struct Expression * propCategory;
701 } __attribute__ ((gcc_struct));
703 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Type;
712 struct Symbol * _class;
715 struct __ecereNameSpace__ecere__sys__OldList members;
717 } __attribute__ ((gcc_struct));
720 struct Type * returnType;
721 struct __ecereNameSpace__ecere__sys__OldList params;
722 struct Symbol * thisClass;
723 unsigned int staticMethod;
724 struct TemplateParameter * thisClassTemplate;
725 } __attribute__ ((gcc_struct));
728 struct __ecereNameSpace__ecere__com__Method * method;
729 struct __ecereNameSpace__ecere__com__Class * methodClass;
730 struct __ecereNameSpace__ecere__com__Class * usedClass;
731 } __attribute__ ((gcc_struct));
734 struct Type * arrayType;
736 struct Expression * arraySizeExp;
737 unsigned int freeExp;
738 struct Symbol * enumClass;
739 } __attribute__ ((gcc_struct));
741 struct TemplateParameter * templateParameter;
742 } __attribute__ ((gcc_struct));
752 unsigned int isSigned : 1;
753 unsigned int constant : 1;
754 unsigned int truth : 1;
755 unsigned int byReference : 1;
756 unsigned int extraParam : 1;
757 unsigned int directClassAccess : 1;
758 unsigned int computing : 1;
759 unsigned int keepCast : 1;
760 unsigned int passAsTemplate : 1;
761 unsigned int dllExport : 1;
762 unsigned int attrStdcall : 1;
763 } __attribute__ ((gcc_struct));
765 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__Class;
767 struct __ecereNameSpace__ecere__com__Class
769 struct __ecereNameSpace__ecere__com__Class * prev;
770 struct __ecereNameSpace__ecere__com__Class * next;
776 int (* Constructor)(struct __ecereNameSpace__ecere__com__Instance *);
777 void (* Destructor)(struct __ecereNameSpace__ecere__com__Instance *);
780 struct __ecereNameSpace__ecere__com__Class * base;
781 struct __ecereNameSpace__ecere__sys__BinaryTree methods;
782 struct __ecereNameSpace__ecere__sys__BinaryTree members;
783 struct __ecereNameSpace__ecere__sys__BinaryTree prop;
784 struct __ecereNameSpace__ecere__sys__OldList membersAndProperties;
785 struct __ecereNameSpace__ecere__sys__BinaryTree classProperties;
786 struct __ecereNameSpace__ecere__sys__OldList derivatives;
790 struct __ecereNameSpace__ecere__com__Instance * module;
791 struct __ecereNameSpace__ecere__com__NameSpace * nameSpace;
792 char * dataTypeString;
793 struct Type * dataType;
795 int defaultAlignment;
796 void (* Initialize)();
798 struct __ecereNameSpace__ecere__sys__OldList selfWatchers;
799 char * designerClass;
800 unsigned int noExpansion;
801 char * defaultProperty;
802 unsigned int comRedefinition;
804 unsigned int isRemote;
805 unsigned int internalDecl;
807 unsigned int computeSize;
809 int destructionWatchOffset;
811 struct __ecereNameSpace__ecere__sys__OldList delayedCPValues;
812 int inheritanceAccess;
815 struct __ecereNameSpace__ecere__sys__OldList conversions;
816 struct __ecereNameSpace__ecere__sys__OldList templateParams;
817 struct __ecereNameSpace__ecere__com__ClassTemplateArgument * templateArgs;
818 struct __ecereNameSpace__ecere__com__Class * templateClass;
819 struct __ecereNameSpace__ecere__sys__OldList templatized;
821 unsigned int isInstanceClass;
822 } __attribute__ ((gcc_struct));
824 extern long long __ecereNameSpace__ecere__com__eClass_GetProperty(struct __ecereNameSpace__ecere__com__Class * _class, char * name);
826 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__Instance;
828 struct __ecereNameSpace__ecere__com__Instance
831 struct __ecereNameSpace__ecere__com__Class * _class;
833 } __attribute__ ((gcc_struct));
835 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__DataMember;
837 struct __ecereNameSpace__ecere__com__DataMember
839 struct __ecereNameSpace__ecere__com__DataMember * prev;
840 struct __ecereNameSpace__ecere__com__DataMember * next;
842 unsigned int isProperty;
845 struct __ecereNameSpace__ecere__com__Class * _class;
846 char * dataTypeString;
847 struct __ecereNameSpace__ecere__com__Class * dataTypeClass;
848 struct Type * dataType;
852 struct __ecereNameSpace__ecere__sys__OldList members;
853 struct __ecereNameSpace__ecere__sys__BinaryTree membersAlpha;
856 } __attribute__ ((gcc_struct));
858 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__SerialBuffer;
860 struct __ecereNameSpace__ecere__com__SerialBuffer
862 unsigned char * _buffer;
866 } __attribute__ ((gcc_struct));
868 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__ClassTemplateArgument;
870 struct __ecereNameSpace__ecere__com__ClassTemplateArgument
876 char * dataTypeString;
877 struct __ecereNameSpace__ecere__com__Class * dataTypeClass;
878 } __attribute__ ((gcc_struct));
879 struct __ecereNameSpace__ecere__com__DataValue expression;
885 struct __ecereNameSpace__ecere__com__DataMember * member;
886 struct __ecereNameSpace__ecere__com__Property * prop;
887 struct __ecereNameSpace__ecere__com__Method * method;
888 } __attribute__ ((gcc_struct));
889 } __attribute__ ((gcc_struct));
890 } __attribute__ ((gcc_struct));
891 } __attribute__ ((gcc_struct));
895 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
898 typedef union YYSTYPE
903 struct Identifier * id;
904 struct Expression * exp;
905 struct Specifier * specifier;
906 struct __ecereNameSpace__ecere__sys__OldList * list;
907 struct Enumerator * enumerator;
908 struct Declarator * declarator;
909 struct Pointer * pointer;
910 struct Initializer * initializer;
911 struct InitDeclarator * initDeclarator;
912 struct TypeName * typeName;
913 struct Declaration * declaration;
914 struct Statement * stmt;
915 struct FunctionDefinition * function;
916 struct External * external;
917 struct Context * context;
918 struct AsmField * asmField;
919 struct Attrib * attrib;
920 struct ExtDecl * extDecl;
921 struct Attribute * attribute;
922 struct Instantiation * instance;
923 struct MembersInit * membersInit;
924 struct MemberInit * memberInit;
925 struct ClassFunction * classFunction;
926 struct ClassDefinition * _class;
927 struct ClassDef * classDef;
928 struct PropertyDef * prop;
930 struct Symbol * symbol;
931 struct PropertyWatch * propertyWatch;
932 struct TemplateParameter * templateParameter;
933 struct TemplateArgument * templateArgument;
934 struct TemplateDatatype * templateDatatype;
935 struct DBTableEntry * dbtableEntry;
936 struct DBIndexItem * dbindexItem;
937 struct DBTableDef * dbtableDef;
938 } __attribute__ ((gcc_struct)) YYSTYPE;
940 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Enumerator;
944 struct Enumerator * prev;
945 struct Enumerator * next;
947 struct Identifier * id;
948 struct Expression * exp;
949 } __attribute__ ((gcc_struct));
951 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_InitDeclarator;
953 struct InitDeclarator;
955 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_AsmField;
959 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Attribute;
963 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_ClassFunction;
967 struct ClassFunction * prev;
968 struct ClassFunction * next;
970 struct __ecereNameSpace__ecere__sys__OldList * specifiers;
971 struct Declarator * declarator;
972 struct __ecereNameSpace__ecere__sys__OldList * declarations;
973 struct Statement * body;
974 struct __ecereNameSpace__ecere__com__Class * _class;
975 struct __ecereNameSpace__ecere__sys__OldList attached;
978 struct Symbol * propSet;
979 unsigned int isVirtual;
980 unsigned int isConstructor;
981 unsigned int isDestructor;
982 unsigned int dontMangle;
985 } __attribute__ ((gcc_struct));
987 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_MembersInit;
991 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_MemberInit;
995 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_PropertyDef;
999 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_PropertyWatch;
1001 struct PropertyWatch
1003 struct PropertyWatch * prev;
1004 struct PropertyWatch * next;
1005 struct Location loc;
1006 struct Statement * compound;
1007 struct __ecereNameSpace__ecere__sys__OldList * properties;
1008 unsigned int deleteWatch;
1009 } __attribute__ ((gcc_struct));
1011 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_ClassDef;
1015 struct ClassDef * prev;
1016 struct ClassDef * next;
1017 struct Location loc;
1021 struct Declaration * decl;
1022 struct ClassFunction * function;
1023 struct __ecereNameSpace__ecere__sys__OldList * defProperties;
1024 struct PropertyDef * propertyDef;
1025 struct PropertyWatch * propertyWatch;
1027 struct Identifier * defaultProperty;
1030 struct Identifier * id;
1031 struct Initializer * initializer;
1032 } __attribute__ ((gcc_struct));
1033 } __attribute__ ((gcc_struct));
1036 } __attribute__ ((gcc_struct));
1038 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_DBTableEntry;
1040 struct DBTableEntry;
1042 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_DBIndexItem;
1046 extern YYSTYPE yylval;
1048 extern struct Location yylloc;
1050 static struct Statement * registerModuleBody;
1052 static struct External * registerModuleExternal;
1054 static struct Statement * unregisterModuleBody;
1056 static struct External * unregisterModuleExternal;
1058 extern int propWatcherID;
1060 unsigned int buildingECERECOM = 0x0;
1062 void SetBuildingEcereCom(unsigned int b)
1064 buildingECERECOM = b;
1067 unsigned int GetBuildingEcereCom()
1069 return buildingECERECOM;
1072 unsigned int buildingECERECOMModule = 0x0;
1074 void SetBuildingEcereComModule(unsigned int b)
1076 buildingECERECOMModule = b;
1079 unsigned int GetBuildingEcereComModule()
1081 return buildingECERECOMModule;
1084 extern struct Identifier * GetDeclId(struct Declarator * decl);
1086 extern unsigned int inCompiler;
1088 extern struct __ecereNameSpace__ecere__sys__OldList * MkList(void);
1090 extern struct Specifier * MkSpecifier(int specifier);
1092 extern void ReplaceThisClassSpecifiers(struct __ecereNameSpace__ecere__sys__OldList * specs, struct __ecereNameSpace__ecere__com__Class * _class);
1094 extern struct FunctionDefinition * _MkFunction(struct __ecereNameSpace__ecere__sys__OldList * specifiers, struct Declarator * declarator, struct __ecereNameSpace__ecere__sys__OldList * declarationList, unsigned int errorOnOmit);
1096 extern void ProcessFunctionBody(struct FunctionDefinition * func, struct Statement * body);
1098 extern struct External * MkExternalFunction(struct FunctionDefinition * function);
1100 extern void ProcessMethodType(struct __ecereNameSpace__ecere__com__Method * method);
1102 extern struct __ecereNameSpace__ecere__com__ClassTemplateArgument * FindTemplateArg(struct __ecereNameSpace__ecere__com__Class * _class, struct TemplateParameter * param);
1104 extern struct Type * ProcessTypeString(char * string, unsigned int staticMethod);
1106 extern struct Symbol * FindClass(char * name);
1108 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);
1110 extern void Compiler_Error(char * format, ...);
1112 extern char * __ecereNameSpace__ecere__GetTranslatedString(struct __ecereNameSpace__ecere__com__Instance * module, char * string, char * stringAndContext);
1114 extern struct __ecereNameSpace__ecere__com__Instance * __thisModule;
1116 extern struct Declarator * GetFuncDecl(struct Declarator * decl);
1118 extern void FreeType(struct Type * type);
1120 extern void FreeExternal(struct External * external);
1122 extern struct Context * globalContext;
1124 extern struct __ecereNameSpace__ecere__sys__OldList * excludedSymbols;
1126 extern struct Declarator * CopyDeclarator(struct Declarator * declarator);
1128 extern struct __ecereNameSpace__ecere__sys__OldList * CopyList(struct __ecereNameSpace__ecere__sys__OldList * source, void * (* CopyFunction)(void * ));
1130 extern struct Specifier * CopySpecifier(struct Specifier * spec);
1132 unsigned int __ecereMethod___ecereNameSpace__ecere__sys__OldList_Insert(struct __ecereNameSpace__ecere__sys__OldList * this, void * prevItem, void * item);
1134 void __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Remove(struct __ecereNameSpace__ecere__sys__BinaryTree * this, struct __ecereNameSpace__ecere__sys__BTNode * node);
1136 void __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add(struct __ecereNameSpace__ecere__sys__OldList * this, void * item);
1138 struct External * ProcessClassFunction(struct __ecereNameSpace__ecere__com__Class * owningClass, struct ClassFunction * func, struct __ecereNameSpace__ecere__sys__OldList * defs, struct External * after, unsigned int makeStatic)
1140 struct Identifier * id = GetDeclId(func->declarator);
1141 struct Type * type = (((void *)0));
1142 struct Symbol * symbol;
1143 struct External * external = (((void *)0));
1145 if(defs && func->declarator)
1147 struct FunctionDefinition * function = (((void *)0));
1148 struct Symbol * propSymbol;
1149 int symid = func->declarator->symbol->id;
1150 int symidCode = func->declarator->symbol->idCode;
1154 if(!func->specifiers)
1155 func->specifiers = MkList();
1157 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Insert((&*func->specifiers), (((void *)0)), MkSpecifier(STATIC));
1159 propSymbol = func->declarator->symbol;
1160 ReplaceThisClassSpecifiers(func->specifiers, owningClass);
1161 if(propSymbol->externalGet == (struct External *)func)
1162 func->declarator->symbol = (((void *)0));
1163 else if(propSymbol->externalSet == (struct External *)func)
1165 func->declarator->symbol = (((void *)0));
1168 else if(propSymbol->externalIsSet == (struct External *)func)
1170 func->declarator->symbol = (((void *)0));
1174 function = _MkFunction(func->specifiers, func->declarator, (((void *)0)), 0x0);
1175 function->propSet = func->propSet;
1176 function->type = func->type;
1178 func->type->refCount++;
1179 ProcessFunctionBody(function, func->body);
1180 external = MkExternalFunction(function);
1181 external->symbol = func->declarator->symbol;
1182 external->function->_class = func->_class;
1184 symbol = func->declarator->symbol;
1186 symbol->idCode = symidCode;
1187 if(!func->dontMangle)
1189 struct __ecereNameSpace__ecere__com__Method * method = func->declarator->symbol->method;
1191 func->declarator->symbol->methodExternal = external;
1192 if(method && method->symbol)
1193 ((struct Symbol *)method->symbol)->methodCodeExternal = external;
1194 if(method && method->type == 1)
1196 struct Type * methodDataType;
1198 ProcessMethodType(method);
1199 methodDataType = method->dataType;
1200 type = symbol->type;
1201 if(!type->staticMethod && !type->thisClass && !type->thisClassTemplate)
1203 if(method->dataType->thisClassTemplate)
1205 if(owningClass->templateArgs)
1207 struct __ecereNameSpace__ecere__com__ClassTemplateArgument * arg = FindTemplateArg(owningClass, method->dataType->thisClassTemplate);
1209 type->byReference = method->dataType->byReference;
1210 methodDataType = ProcessTypeString(method->dataTypeString, 0x0);
1211 type->thisClass = methodDataType->thisClass = arg ? FindClass((*arg).dataTypeString) : (((void *)0));
1214 else if(method->dataType->staticMethod)
1215 type->staticMethod = 0x1;
1216 else if(method->dataType->thisClass)
1218 type->thisClass = method->dataType->thisClass;
1219 type->byReference = method->dataType->byReference;
1223 if(!owningClass->symbol)
1224 owningClass->symbol = FindClass(owningClass->fullName);
1225 type->thisClass = owningClass->symbol;
1226 type->extraParam = 0x1;
1230 if(!MatchTypes(type, methodDataType, (((void *)0)), owningClass, method->_class, 0x1, 0x1, 0x1, 0x0))
1232 Compiler_Error(__ecereNameSpace__ecere__GetTranslatedString(__thisModule, "Incompatible virtual function %s\n", (((void *)0))), method->name);
1236 struct Type * typeParam;
1237 struct Declarator * funcDecl = GetFuncDecl(func->declarator);
1239 if(funcDecl->function.parameters)
1241 struct TypeName * param = (*funcDecl->function.parameters).first;
1243 for(typeParam = methodDataType->params.first; typeParam; typeParam = typeParam->next)
1245 if(typeParam->classObjectType)
1247 param->classObjectType = typeParam->classObjectType;
1248 if(param->declarator && param->declarator->symbol)
1249 param->declarator->symbol->type->classObjectType = typeParam->classObjectType;
1251 param = param->next;
1255 if(methodDataType != method->dataType)
1256 FreeType(methodDataType);
1260 type = symbol->type;
1261 if(!type->staticMethod && !type->thisClass)
1263 if(owningClass && !owningClass->symbol)
1264 owningClass->symbol = FindClass(owningClass->fullName);
1265 type->thisClass = owningClass ? FindClass(owningClass->fullName) : (((void *)0));
1271 if(symbol->type && !symbol->type->staticMethod && !symbol->type->thisClass)
1273 if(!owningClass->symbol)
1274 owningClass->symbol = FindClass(owningClass->fullName);
1275 symbol->type->thisClass = owningClass->symbol;
1277 if(propSymbol->externalSet == (struct External *)func && propSymbol->_property && propSymbol->_property->conversion)
1279 if(symbol->type->thisClass && symbol->type->classObjectType != 1)
1281 if(owningClass->type != 1)
1282 symbol->type->thisClass = (((void *)0));
1285 if(propSymbol->externalGet == (struct External *)func)
1287 propSymbol->externalGet = external;
1289 else if(propSymbol->externalSet == (struct External *)func)
1291 propSymbol->externalSet = external;
1293 else if(propSymbol->externalIsSet == (struct External *)func)
1295 propSymbol->externalIsSet = external;
1305 func->declarator = (((void *)0));
1306 func->specifiers = (((void *)0));
1307 func->body = (((void *)0));
1308 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Insert(defs, after, external);
1312 struct __ecereNameSpace__ecere__com__Method * method = func->declarator->symbol->method;
1314 if(method && method->symbol)
1315 ((struct Symbol *)method->symbol)->methodCodeExternal = (((void *)0));
1316 func->declarator = (((void *)0));
1317 func->specifiers = (((void *)0));
1318 FreeExternal(external);
1323 __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Remove(&globalContext->symbols, (struct __ecereNameSpace__ecere__sys__BTNode *)symbol);
1324 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*excludedSymbols), symbol);
1325 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Insert(defs, after, external);
1326 external->function->declarator = CopyDeclarator(external->function->declarator);
1327 external->function->specifiers = CopyList(external->function->specifiers, CopySpecifier);
1328 external->function->body = (((void *)0));
1334 extern struct Statement * MkCompoundStmt(struct __ecereNameSpace__ecere__sys__OldList * declarations, struct __ecereNameSpace__ecere__sys__OldList * statements);
1336 extern void ListAdd(struct __ecereNameSpace__ecere__sys__OldList * list, void * item);
1338 extern struct Declaration * MkDeclaration(struct __ecereNameSpace__ecere__sys__OldList * specifiers, struct __ecereNameSpace__ecere__sys__OldList * initDeclarators);
1340 extern struct __ecereNameSpace__ecere__sys__OldList * MkListOne(void * item);
1342 extern struct Specifier * MkSpecifierName(char * name);
1344 extern struct InitDeclarator * MkInitDeclarator(struct Declarator * declarator, struct Initializer * initializer);
1346 extern struct Declarator * MkDeclaratorIdentifier(struct Identifier * id);
1348 extern struct Identifier * MkIdentifier(char * string);
1350 extern struct TypeName * MkTypeName(struct __ecereNameSpace__ecere__sys__OldList * qualifiers, struct Declarator * declarator);
1352 extern char * __ecereNameSpace__ecere__sys__GetLastDirectory(char * string, char * output);
1354 extern char * outputFile;
1356 extern unsigned int __ecereNameSpace__ecere__sys__StripExtension(char * string);
1358 extern void __ecereNameSpace__ecere__sys__ChangeCh(char * string, char ch1, char ch2);
1360 extern int sprintf(char * , char * , ...);
1362 extern struct Declarator * MkDeclaratorFunction(struct Declarator * declarator, struct __ecereNameSpace__ecere__sys__OldList * parameters);
1364 extern struct __ecereNameSpace__ecere__sys__OldList * ast;
1366 extern void * __ecereNameSpace__ecere__com__eInstance_New(struct __ecereNameSpace__ecere__com__Class * _class);
1368 void CreateRegisterModuleBody()
1370 if(!registerModuleBody && inCompiler)
1372 char registerName[1024], moduleName[274];
1373 struct __ecereNameSpace__ecere__sys__OldList * specifiers;
1374 struct Declarator * declarator;
1375 struct TypeName * moduleParam;
1377 registerModuleBody = MkCompoundStmt(MkList(), MkList());
1378 registerModuleBody->compound.context = __extension__ ({
1379 struct Context * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Context);
1381 __ecereInstance1->parent = globalContext, __ecereInstance1;
1383 ListAdd(registerModuleBody->compound.declarations, MkDeclaration(MkListOne(MkSpecifierName("ecere::com::Class")), MkListOne(MkInitDeclarator(MkDeclaratorIdentifier(MkIdentifier("class")), (((void *)0))))));
1384 specifiers = MkList();
1385 ListAdd(specifiers, MkSpecifier(VOID));
1386 moduleParam = MkTypeName(MkListOne(MkSpecifierName("Module")), MkDeclaratorIdentifier(MkIdentifier("module")));
1387 __ecereNameSpace__ecere__sys__GetLastDirectory(outputFile, moduleName);
1388 __ecereNameSpace__ecere__sys__StripExtension(moduleName);
1389 __ecereNameSpace__ecere__sys__ChangeCh(moduleName, '.', '_');
1390 __ecereNameSpace__ecere__sys__ChangeCh(moduleName, ' ', '_');
1391 __ecereNameSpace__ecere__sys__ChangeCh(moduleName, '-', '_');
1392 sprintf(registerName, "__ecereRegisterModule_%s", moduleName);
1393 declarator = MkDeclaratorFunction(MkDeclaratorIdentifier(MkIdentifier(registerName)), MkListOne(moduleParam));
1395 struct FunctionDefinition * function = _MkFunction(specifiers, declarator, (((void *)0)), 0x0);
1397 ProcessFunctionBody(function, registerModuleBody);
1398 function->declMode = 0;
1401 ListAdd(ast, (registerModuleExternal = MkExternalFunction(function)));
1404 if(!unregisterModuleBody && inCompiler)
1406 char registerName[1024], moduleName[274];
1407 struct __ecereNameSpace__ecere__sys__OldList * specifiers;
1408 struct Declarator * declarator;
1409 struct TypeName * moduleParam;
1411 unregisterModuleBody = MkCompoundStmt(MkList(), MkList());
1412 unregisterModuleBody->compound.context = __extension__ ({
1413 struct Context * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Context);
1415 __ecereInstance1->parent = globalContext, __ecereInstance1;
1417 specifiers = MkList();
1418 ListAdd(specifiers, MkSpecifier(VOID));
1419 moduleParam = MkTypeName(MkListOne(MkSpecifierName("Module")), MkDeclaratorIdentifier(MkIdentifier("module")));
1420 __ecereNameSpace__ecere__sys__GetLastDirectory(outputFile, moduleName);
1421 __ecereNameSpace__ecere__sys__StripExtension(moduleName);
1422 __ecereNameSpace__ecere__sys__ChangeCh(moduleName, '.', '_');
1423 __ecereNameSpace__ecere__sys__ChangeCh(moduleName, ' ', '_');
1424 __ecereNameSpace__ecere__sys__ChangeCh(moduleName, '-', '_');
1425 sprintf(registerName, "__ecereUnregisterModule_%s", moduleName);
1426 declarator = MkDeclaratorFunction(MkDeclaratorIdentifier(MkIdentifier(registerName)), MkListOne(moduleParam));
1428 struct FunctionDefinition * function = _MkFunction(specifiers, declarator, (((void *)0)), 0x0);
1430 ProcessFunctionBody(function, unregisterModuleBody);
1431 function->declMode = 0;
1434 ListAdd(ast, (unregisterModuleExternal = MkExternalFunction(function)));
1439 extern struct Expression * MkExpIdentifier(struct Identifier * id);
1441 extern struct Expression * MkExpConstant(char * string);
1443 extern char * QMkString(char * source);
1445 extern struct Expression * MkExpString(char * string);
1447 extern char * strcpy(char * , const char * );
1449 extern void FullClassNameCat(char * output, char * className, unsigned int includeTemplateParams);
1451 extern char * strcat(char * , const char * );
1453 extern void MangleClassName(char * className);
1455 extern struct Statement * MkExpressionStmt(struct __ecereNameSpace__ecere__sys__OldList * expressions);
1457 extern struct Expression * MkExpOp(struct Expression * exp1, int op, struct Expression * exp2);
1459 extern struct Expression * MkExpCall(struct Expression * expression, struct __ecereNameSpace__ecere__sys__OldList * arguments);
1461 extern struct Expression * MkExpMember(struct Expression * expression, struct Identifier * member);
1463 extern struct Expression * MkExpCast(struct TypeName * typeName, struct Expression * expression);
1465 extern struct Declarator * MkDeclaratorPointer(struct Pointer * pointer, struct Declarator * declarator);
1467 extern struct Pointer * MkPointer(struct __ecereNameSpace__ecere__sys__OldList * qualifiers, struct Pointer * pointer);
1469 extern struct Expression * CopyExpression(struct Expression * exp);
1471 extern struct Statement * MkIfStmt(struct __ecereNameSpace__ecere__sys__OldList * exp, struct Statement * statement, struct Statement * elseStmt);
1473 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__BitMember;
1475 struct __ecereNameSpace__ecere__com__BitMember
1477 struct __ecereNameSpace__ecere__com__BitMember * prev;
1478 struct __ecereNameSpace__ecere__com__BitMember * next;
1480 unsigned int isProperty;
1483 struct __ecereNameSpace__ecere__com__Class * _class;
1484 char * dataTypeString;
1485 struct __ecereNameSpace__ecere__com__Class * dataTypeClass;
1486 struct Type * dataType;
1491 } __attribute__ ((gcc_struct));
1493 extern int ComputeTypeSize(struct Type * type);
1495 extern struct Context * curContext;
1497 extern struct Context * PushContext(void);
1499 extern struct Initializer * MkInitializerAssignment(struct Expression * exp);
1501 extern void PopContext(struct Context * ctx);
1503 extern struct Expression * MkExpCondition(struct Expression * cond, struct __ecereNameSpace__ecere__sys__OldList * expressions, struct Expression * elseExp);
1505 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__ClassProperty;
1507 struct __ecereNameSpace__ecere__com__ClassProperty
1510 struct __ecereNameSpace__ecere__com__ClassProperty * parent;
1511 struct __ecereNameSpace__ecere__com__ClassProperty * left;
1512 struct __ecereNameSpace__ecere__com__ClassProperty * right;
1514 void (* Set)(struct __ecereNameSpace__ecere__com__Class *, long long);
1515 long long (* Get)(struct __ecereNameSpace__ecere__com__Class *);
1516 char * dataTypeString;
1517 struct Type * dataType;
1518 unsigned int constant;
1519 } __attribute__ ((gcc_struct));
1521 struct __ecereNameSpace__ecere__sys__BTNode * __ecereProp___ecereNameSpace__ecere__sys__BinaryTree_Get_first(struct __ecereNameSpace__ecere__sys__BinaryTree * this);
1523 extern struct __ecereNameSpace__ecere__com__Property ** __ecereProp___ecereNameSpace__ecere__sys__BinaryTree_first;
1525 struct __ecereNameSpace__ecere__sys__BTNode * __ecereProp___ecereNameSpace__ecere__sys__BTNode_Get_next(struct __ecereNameSpace__ecere__sys__BTNode * this);
1527 extern struct __ecereNameSpace__ecere__com__Property ** __ecereProp___ecereNameSpace__ecere__sys__BTNode_next;
1529 void RegisterMembersAndProperties(struct __ecereNameSpace__ecere__com__Class * regClass, unsigned int isMember, char * className, struct Statement * statement)
1531 struct __ecereNameSpace__ecere__com__DataMember * dataMember = isMember ? (struct __ecereNameSpace__ecere__com__DataMember *)regClass : (((void *)0));
1532 struct __ecereNameSpace__ecere__com__DataMember * member;
1533 struct __ecereNameSpace__ecere__com__Property * prop;
1534 struct Expression * exp;
1535 struct Statement * stmt;
1536 char dataMemberSize[16];
1537 unsigned int lastOffset = 0;
1539 unsigned int privateMembers = 0x0;
1541 sprintf(dataMemberSize, "%d", (int)sizeof(struct __ecereNameSpace__ecere__com__DataMember *));
1544 for(prop = regClass->conversions.first; prop; prop = prop->next)
1546 struct __ecereNameSpace__ecere__sys__OldList * args = MkList();
1549 ListAdd(args, MkExpIdentifier(MkIdentifier(className)));
1550 ListAdd(args, MkExpConstant("0"));
1552 char * string = QMkString(prop->dataTypeString);
1554 ListAdd(args, MkExpString(string));
1555 (__ecereNameSpace__ecere__com__eSystem_Delete(string), string = 0);
1559 strcpy(name, "__ecereProp_");
1560 FullClassNameCat(name, regClass->fullName, 0x0);
1561 strcat(name, "_Set_");
1562 FullClassNameCat(name, prop->name, 0x1);
1563 MangleClassName(name);
1564 ListAdd(args, MkExpIdentifier(MkIdentifier(name)));
1567 ListAdd(args, MkExpConstant("0"));
1570 strcpy(name, "__ecereProp_");
1571 FullClassNameCat(name, regClass->fullName, 0x0);
1572 strcat(name, "_Get_");
1573 FullClassNameCat(name, prop->name, 0x1);
1574 MangleClassName(name);
1575 ListAdd(args, MkExpIdentifier(MkIdentifier(name)));
1578 ListAdd(args, MkExpConstant("0"));
1579 switch(prop->memberAccess)
1582 ListAdd(args, MkExpIdentifier(MkIdentifier("staticAccess")));
1585 ListAdd(args, MkExpIdentifier(MkIdentifier("privateAccess")));
1589 ListAdd(args, MkExpIdentifier(MkIdentifier("publicAccess")));
1592 strcpy(name, "__ecereProp_");
1593 FullClassNameCat(name, regClass->fullName, 0x0);
1595 FullClassNameCat(name, prop->name, 0x1);
1596 MangleClassName(name);
1597 stmt = MkExpressionStmt(MkListOne(MkExpOp(MkExpIdentifier(MkIdentifier(name)), '=', MkExpCall(MkExpIdentifier(MkIdentifier("eClass_AddProperty")), args))));
1598 ListAdd(registerModuleBody->compound.statements, stmt);
1601 for(member = isMember ? dataMember->members.first : regClass->membersAndProperties.first; member; member = member->next)
1603 if(member->isProperty)
1605 prop = (struct __ecereNameSpace__ecere__com__Property *)member;
1607 struct __ecereNameSpace__ecere__sys__OldList * args = MkList();
1608 char name[1024], nameM[1024];
1609 char * string = QMkString(prop->name);
1611 ListAdd(args, MkExpIdentifier(MkIdentifier(className)));
1612 ListAdd(args, MkExpString(string));
1613 (__ecereNameSpace__ecere__com__eSystem_Delete(string), string = 0);
1615 char * string = QMkString(prop->dataTypeString);
1617 ListAdd(args, MkExpString(string));
1618 (__ecereNameSpace__ecere__com__eSystem_Delete(string), string = 0);
1622 strcpy(name, "__ecereProp_");
1623 FullClassNameCat(name, regClass->fullName, 0x0);
1624 strcat(name, "_Set_");
1625 FullClassNameCat(name, prop->name, 0x1);
1626 MangleClassName(name);
1627 ListAdd(args, MkExpIdentifier(MkIdentifier(name)));
1630 ListAdd(args, MkExpConstant("0"));
1633 strcpy(name, "__ecereProp_");
1634 FullClassNameCat(name, regClass->fullName, 0x0);
1635 strcat(name, "_Get_");
1636 FullClassNameCat(name, prop->name, 0x1);
1637 MangleClassName(name);
1638 ListAdd(args, MkExpIdentifier(MkIdentifier(name)));
1641 ListAdd(args, MkExpConstant("0"));
1642 switch(prop->memberAccess)
1645 ListAdd(args, MkExpIdentifier(MkIdentifier("staticAccess")));
1648 ListAdd(args, MkExpIdentifier(MkIdentifier("privateAccess")));
1652 ListAdd(args, MkExpIdentifier(MkIdentifier("publicAccess")));
1655 strcpy(name, "__ecereProp_");
1656 FullClassNameCat(name, regClass->fullName, 0x0);
1658 FullClassNameCat(name, prop->name, 0x1);
1659 MangleClassName(name);
1660 strcpy(nameM, "__ecerePropM_");
1661 FullClassNameCat(nameM, regClass->fullName, 0x0);
1663 FullClassNameCat(nameM, prop->name, 0x1);
1664 MangleClassName(nameM);
1665 if(prop->dataTypeString)
1667 stmt = MkExpressionStmt(MkListOne(MkExpOp(MkExpIdentifier(MkIdentifier(nameM)), '=', MkExpCall(MkExpIdentifier(MkIdentifier("eClass_AddProperty")), args))));
1671 stmt = MkExpressionStmt(MkListOne(MkExpCall(MkExpIdentifier(MkIdentifier("eClass_AddProperty")), args)));
1673 ListAdd(registerModuleBody->compound.statements, stmt);
1678 strcpy(name, "__ecereProp_");
1679 FullClassNameCat(name, regClass->fullName, 0x1);
1680 strcat(name, "_IsSet_");
1681 FullClassNameCat(name, prop->name, 0x0);
1682 MangleClassName(name);
1683 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))))));
1684 ListAdd(registerModuleBody->compound.statements, stmt);
1686 if(prop->symbol && ((struct Symbol *)prop->symbol)->propCategory)
1688 stmt = MkExpressionStmt(MkListOne(MkExpOp(MkExpMember(MkExpIdentifier(MkIdentifier(nameM)), MkIdentifier("category")), '=', CopyExpression(((struct Symbol *)prop->symbol)->propCategory))));
1689 ListAdd(registerModuleBody->compound.statements, stmt);
1691 if(prop->dataTypeString)
1693 struct __ecereNameSpace__ecere__sys__OldList * list = MkList();
1695 ListAdd(list, MkExpOp(MkExpIdentifier(MkIdentifier(name)), '=', MkExpIdentifier(MkIdentifier(nameM))));
1696 ListAdd(list, MkExpOp(MkExpIdentifier(MkIdentifier(nameM)), '=', MkExpCast(MkTypeName(MkListOne(MkSpecifier(VOID)), MkDeclaratorPointer(MkPointer((((void *)0)), (((void *)0))), (((void *)0)))), MkExpConstant("0"))));
1697 stmt = MkIfStmt(MkListOne(MkExpOp(MkExpMember(MkExpIdentifier(MkIdentifier("module")), MkIdentifier("application")), EQ_OP, MkExpMember(MkExpIdentifier(MkIdentifier("__thisModule")), MkIdentifier("application")))), MkExpressionStmt(list), (((void *)0)));
1698 ListAdd(registerModuleBody->compound.statements, stmt);
1699 stmt = MkExpressionStmt(MkListOne(MkExpOp(MkExpIdentifier(MkIdentifier(nameM)), '=', MkExpCast(MkTypeName(MkListOne(MkSpecifier(VOID)), MkDeclaratorPointer(MkPointer((((void *)0)), (((void *)0))), (((void *)0)))), MkExpConstant("0")))));
1700 ListAdd(unregisterModuleBody->compound.statements, stmt);
1704 else if(member->type == 0 && !isMember && regClass->type == 2)
1706 struct __ecereNameSpace__ecere__com__BitMember * bitMember = (struct __ecereNameSpace__ecere__com__BitMember *)member;
1707 struct __ecereNameSpace__ecere__sys__OldList * args = MkList();
1709 ListAdd(args, MkExpIdentifier(MkIdentifier(className)));
1711 char * string = QMkString(bitMember->name);
1713 ListAdd(args, MkExpString(string));
1714 (__ecereNameSpace__ecere__com__eSystem_Delete(string), string = 0);
1717 char * string = QMkString(bitMember->dataTypeString);
1719 ListAdd(args, MkExpString(string));
1720 (__ecereNameSpace__ecere__com__eSystem_Delete(string), string = 0);
1725 sprintf(string, "%d", bitMember->size);
1726 ListAdd(args, (exp = MkExpConstant(string)));
1731 sprintf(string, "%d", bitMember->pos);
1732 ListAdd(args, (exp = MkExpConstant(string)));
1734 switch(member->memberAccess)
1737 ListAdd(args, MkExpIdentifier(MkIdentifier("staticAccess")));
1740 ListAdd(args, MkExpIdentifier(MkIdentifier("privateAccess")));
1744 ListAdd(args, MkExpIdentifier(MkIdentifier("publicAccess")));
1747 stmt = MkExpressionStmt(MkListOne(MkExpCall(MkExpIdentifier(MkIdentifier("eClass_AddBitMember")), args)));
1748 ListAdd(statement->compound.statements, stmt);
1750 else if(member->memberAccess == 1 || (member->type == 0 && !member->dataTypeString))
1752 struct __ecereNameSpace__ecere__sys__OldList * args;
1756 unsigned int offset = member->offset - lastOffset;
1759 ListAdd(args, MkExpIdentifier(MkIdentifier(className)));
1763 sprintf(string, "\"__ecerePrivateData%d\"", privateID++);
1764 ListAdd(args, MkExpString(string));
1769 sprintf(string, "\"byte[%d]\"", offset);
1770 ListAdd(args, MkExpString(string));
1775 sprintf(string, "%d", offset);
1776 ListAdd(args, (exp = MkExpConstant(string)));
1778 ListAdd(args, (exp = MkExpConstant("1")));
1779 ListAdd(args, MkExpIdentifier(MkIdentifier("privateAccess")));
1780 stmt = MkExpressionStmt(MkListOne(MkExpCall(MkExpIdentifier(MkIdentifier(isMember ? "eMember_AddDataMember" : "eClass_AddDataMember")), args)));
1781 ListAdd(statement->compound.statements, stmt);
1782 privateMembers = 0x0;
1784 if(member->type == 0)
1786 if(!member->dataType)
1787 member->dataType = ProcessTypeString(member->dataTypeString, 0x0);
1788 ComputeTypeSize(member->dataType);
1790 ListAdd(args, MkExpIdentifier(MkIdentifier(className)));
1792 char * string = QMkString(member->name);
1794 ListAdd(args, MkExpString(string));
1795 (__ecereNameSpace__ecere__com__eSystem_Delete(string), string = 0);
1798 char * string = QMkString(member->dataTypeString);
1800 ListAdd(args, MkExpString(string));
1801 (__ecereNameSpace__ecere__com__eSystem_Delete(string), string = 0);
1806 sprintf(string, "%d", member->dataType->size);
1807 ListAdd(args, (exp = MkExpConstant(string)));
1812 sprintf(string, "%d", member->dataType->alignment);
1813 ListAdd(args, (exp = MkExpConstant(string)));
1815 switch(member->memberAccess)
1818 ListAdd(args, MkExpIdentifier(MkIdentifier("staticAccess")));
1821 ListAdd(args, MkExpIdentifier(MkIdentifier("privateAccess")));
1825 ListAdd(args, MkExpIdentifier(MkIdentifier("publicAccess")));
1828 stmt = MkExpressionStmt(MkListOne(MkExpCall(MkExpIdentifier(MkIdentifier(isMember ? "eMember_AddDataMember" : "eClass_AddDataMember")), args)));
1829 ListAdd(statement->compound.statements, stmt);
1830 lastOffset = member->offset + member->dataType->size;
1834 static int memberCount = 0;
1835 struct Context * context;
1836 struct Statement * compound;
1837 char memberName[256];
1839 sprintf(memberName, "dataMember%d", memberCount);
1841 curContext = statement->compound.context;
1842 context = PushContext();
1843 args = MkListOne(MkExpIdentifier(MkIdentifier((member->type == 1) ? "unionMember" : "structMember")));
1844 switch(member->memberAccess)
1847 ListAdd(args, MkExpIdentifier(MkIdentifier("staticAccess")));
1850 ListAdd(args, MkExpIdentifier(MkIdentifier("privateAccess")));
1854 ListAdd(args, MkExpIdentifier(MkIdentifier("publicAccess")));
1857 compound = MkCompoundStmt(MkListOne(MkDeclaration(MkListOne(MkSpecifierName("DataMember")), MkListOne(MkInitDeclarator(MkDeclaratorIdentifier(MkIdentifier(memberName)), MkInitializerAssignment(MkExpCall(MkExpIdentifier(MkIdentifier("eMember_New")), args)))))), MkList());
1858 compound->compound.context = context;
1860 ListAdd(args, MkExpIdentifier(MkIdentifier(className)));
1861 ListAdd(args, MkExpIdentifier(MkIdentifier(memberName)));
1862 RegisterMembersAndProperties((struct __ecereNameSpace__ecere__com__Class *)member, 0x1, memberName, compound);
1864 stmt = MkExpressionStmt(MkListOne(MkExpCall(MkExpIdentifier(MkIdentifier("eMember_AddMember")), args)));
1866 stmt = MkExpressionStmt(MkListOne(MkExpCall(MkExpIdentifier(MkIdentifier("eClass_AddMember")), args)));
1867 ListAdd(compound->compound.statements, stmt);
1868 PopContext(context);
1869 ListAdd(statement->compound.statements, compound);
1871 lastOffset = member->offset + member->memberOffset;
1875 privateMembers = 0x1;
1879 struct __ecereNameSpace__ecere__com__ClassProperty * classProperty;
1881 for(prop = regClass->membersAndProperties.first; prop; prop = prop->next)
1883 if(prop->isProperty && prop->isWatchable)
1885 struct __ecereNameSpace__ecere__sys__OldList * args;
1886 char name[1024], nameM[1024];
1888 strcpy(name, "__ecereProp_");
1889 FullClassNameCat(name, regClass->fullName, 0x1);
1891 FullClassNameCat(name, prop->name, 0x0);
1892 MangleClassName(name);
1893 strcpy(nameM, "__ecerePropM_");
1894 FullClassNameCat(nameM, regClass->fullName, 0x1);
1896 FullClassNameCat(nameM, prop->name, 0x0);
1897 MangleClassName(nameM);
1898 args = MkListOne(MkExpCondition(MkExpIdentifier(MkIdentifier(nameM)), MkListOne(MkExpIdentifier(MkIdentifier(nameM))), MkExpIdentifier(MkIdentifier(name))));
1899 stmt = MkExpressionStmt(MkListOne(MkExpCall(MkExpIdentifier(MkIdentifier("eProperty_Watchable")), args)));
1900 ListAdd(registerModuleBody->compound.statements, stmt);
1903 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)))
1905 struct __ecereNameSpace__ecere__sys__OldList * args = MkList();
1907 char * string = QMkString(classProperty->name);
1909 ListAdd(args, MkExpIdentifier(MkIdentifier(className)));
1910 ListAdd(args, MkExpString(string));
1911 (__ecereNameSpace__ecere__com__eSystem_Delete(string), string = 0);
1913 char * string = QMkString(classProperty->dataTypeString);
1915 ListAdd(args, MkExpString(string));
1916 (__ecereNameSpace__ecere__com__eSystem_Delete(string), string = 0);
1918 if(classProperty->Set)
1920 strcpy(name, "__ecereClassProp_");
1921 FullClassNameCat(name, regClass->fullName, 0x1);
1922 strcat(name, "_Set_");
1923 strcat(name, classProperty->name);
1924 MangleClassName(name);
1925 ListAdd(args, MkExpIdentifier(MkIdentifier(name)));
1928 ListAdd(args, MkExpConstant("0"));
1929 if(classProperty->Get)
1931 strcpy(name, "__ecereClassProp_");
1932 FullClassNameCat(name, regClass->fullName, 0x1);
1933 strcat(name, "_Get_");
1934 strcat(name, classProperty->name);
1935 MangleClassName(name);
1936 ListAdd(args, MkExpIdentifier(MkIdentifier(name)));
1939 ListAdd(args, MkExpConstant("0"));
1940 stmt = MkExpressionStmt(MkListOne(MkExpCall(MkExpIdentifier(MkIdentifier("eClass_AddClassProperty")), args)));
1941 ListAdd(registerModuleBody->compound.statements, stmt);
1946 extern struct External * curExternal;
1948 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__NameSpace;
1950 struct __ecereNameSpace__ecere__com__NameSpace
1953 struct __ecereNameSpace__ecere__com__NameSpace * btParent;
1954 struct __ecereNameSpace__ecere__com__NameSpace * left;
1955 struct __ecereNameSpace__ecere__com__NameSpace * right;
1957 struct __ecereNameSpace__ecere__com__NameSpace * parent;
1958 struct __ecereNameSpace__ecere__sys__BinaryTree nameSpaces;
1959 struct __ecereNameSpace__ecere__sys__BinaryTree classes;
1960 struct __ecereNameSpace__ecere__sys__BinaryTree defines;
1961 struct __ecereNameSpace__ecere__sys__BinaryTree functions;
1962 } __attribute__ ((gcc_struct));
1964 void GetNameSpaceString(struct __ecereNameSpace__ecere__com__NameSpace * ns, char * string)
1967 GetNameSpaceString(ns->parent, string);
1970 strcat(string, ns->name);
1971 strcat(string, "::");
1975 extern unsigned int parsingType;
1977 extern void ProcessExpressionType(struct Expression * exp);
1979 extern void ComputeExpression(struct Expression * exp);
1981 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_OpTable;
1985 unsigned int (* Add)(struct Expression *, struct Operand *, struct Operand *);
1986 unsigned int (* Sub)(struct Expression *, struct Operand *, struct Operand *);
1987 unsigned int (* Mul)(struct Expression *, struct Operand *, struct Operand *);
1988 unsigned int (* Div)(struct Expression *, struct Operand *, struct Operand *);
1989 unsigned int (* Mod)(struct Expression *, struct Operand *, struct Operand *);
1990 unsigned int (* Neg)(struct Expression *, struct Operand *);
1991 unsigned int (* Inc)(struct Expression *, struct Operand *);
1992 unsigned int (* Dec)(struct Expression *, struct Operand *);
1993 unsigned int (* Asign)(struct Expression *, struct Operand *, struct Operand *);
1994 unsigned int (* AddAsign)(struct Expression *, struct Operand *, struct Operand *);
1995 unsigned int (* SubAsign)(struct Expression *, struct Operand *, struct Operand *);
1996 unsigned int (* MulAsign)(struct Expression *, struct Operand *, struct Operand *);
1997 unsigned int (* DivAsign)(struct Expression *, struct Operand *, struct Operand *);
1998 unsigned int (* ModAsign)(struct Expression *, struct Operand *, struct Operand *);
1999 unsigned int (* BitAnd)(struct Expression *, struct Operand *, struct Operand *);
2000 unsigned int (* BitOr)(struct Expression *, struct Operand *, struct Operand *);
2001 unsigned int (* BitXor)(struct Expression *, struct Operand *, struct Operand *);
2002 unsigned int (* LShift)(struct Expression *, struct Operand *, struct Operand *);
2003 unsigned int (* RShift)(struct Expression *, struct Operand *, struct Operand *);
2004 unsigned int (* BitNot)(struct Expression *, struct Operand *);
2005 unsigned int (* AndAsign)(struct Expression *, struct Operand *, struct Operand *);
2006 unsigned int (* OrAsign)(struct Expression *, struct Operand *, struct Operand *);
2007 unsigned int (* XorAsign)(struct Expression *, struct Operand *, struct Operand *);
2008 unsigned int (* LShiftAsign)(struct Expression *, struct Operand *, struct Operand *);
2009 unsigned int (* RShiftAsign)(struct Expression *, struct Operand *, struct Operand *);
2010 unsigned int (* Not)(struct Expression *, struct Operand *);
2011 unsigned int (* Equ)(struct Expression *, struct Operand *, struct Operand *);
2012 unsigned int (* Nqu)(struct Expression *, struct Operand *, struct Operand *);
2013 unsigned int (* And)(struct Expression *, struct Operand *, struct Operand *);
2014 unsigned int (* Or)(struct Expression *, struct Operand *, struct Operand *);
2015 unsigned int (* Grt)(struct Expression *, struct Operand *, struct Operand *);
2016 unsigned int (* Sma)(struct Expression *, struct Operand *, struct Operand *);
2017 unsigned int (* GrtEqu)(struct Expression *, struct Operand *, struct Operand *);
2018 unsigned int (* SmaEqu)(struct Expression *, struct Operand *, struct Operand *);
2019 unsigned int (* Cond)(struct Expression *, struct Operand *, struct Operand *, struct Operand *);
2020 } __attribute__ ((gcc_struct));
2022 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Operand;
2028 unsigned int ptrSize;
2041 } __attribute__ ((gcc_struct));
2043 } __attribute__ ((gcc_struct));
2045 extern struct Operand GetOperand(struct Expression * exp);
2047 extern void __ecereNameSpace__ecere__com__eEnum_AddFixedValue(struct __ecereNameSpace__ecere__com__Class * _class, char * string, int value);
2049 extern int __ecereNameSpace__ecere__com__eEnum_AddValue(struct __ecereNameSpace__ecere__com__Class * _class, char * string);
2051 extern struct ClassFunction * MkClassFunction(struct __ecereNameSpace__ecere__sys__OldList * specifiers, struct Specifier * _class, struct Declarator * decl, struct __ecereNameSpace__ecere__sys__OldList * declList);
2053 extern void ProcessClassFunctionBody(struct ClassFunction * func, struct Statement * body);
2055 extern struct External * MkExternalDeclaration(struct Declaration * declaration);
2057 extern struct ClassDef * MkClassDefFunction(struct ClassFunction * function);
2059 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);
2061 extern struct __ecereNameSpace__ecere__com__Instance * privateModule;
2063 extern void FreePropertyWatch(struct PropertyWatch * watcher);
2065 extern char * sourceFile;
2067 extern struct Type * ProcessType(struct __ecereNameSpace__ecere__sys__OldList * specs, struct Declarator * decl);
2069 extern void PrintType(struct Type * type, char * string, unsigned int printName, unsigned int fullName);
2071 extern struct Expression * MkExpTypeSize(struct TypeName * typeName);
2073 extern struct Specifier * MkStructOrUnion(int type, struct Identifier * id, struct __ecereNameSpace__ecere__sys__OldList * definitions);
2075 extern unsigned int DummyMethod(void);
2077 extern void DeclareMethod(struct __ecereNameSpace__ecere__com__Method * method, char * name);
2079 extern struct __ecereNameSpace__ecere__com__Class * __ecereNameSpace__ecere__com__eSystem_FindClass(struct __ecereNameSpace__ecere__com__Instance * module, char * name);
2081 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__EnumClassData;
2083 struct __ecereNameSpace__ecere__com__EnumClassData
2085 struct __ecereNameSpace__ecere__sys__OldList values;
2087 } __attribute__ ((gcc_struct));
2089 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__sys__NamedLink;
2091 struct __ecereNameSpace__ecere__sys__NamedLink
2093 struct __ecereNameSpace__ecere__sys__NamedLink * prev;
2094 struct __ecereNameSpace__ecere__sys__NamedLink * next;
2097 } __attribute__ ((gcc_struct));
2099 extern char * StringFromSpecDecl(struct __ecereNameSpace__ecere__sys__OldList * specs, struct Declarator * decl);
2101 extern size_t strlen(const char * );
2103 extern struct MemberInit * MkMemberInit(struct __ecereNameSpace__ecere__sys__OldList * ids, struct Initializer * initializer);
2105 extern char * PrintUInt64(uint64 result);
2107 extern struct Expression * MkExpInstance(struct Instantiation * inst);
2109 extern struct Instantiation * MkInstantiation(struct Specifier * _class, struct Expression * exp, struct __ecereNameSpace__ecere__sys__OldList * members);
2111 extern struct MembersInit * MkMembersInitList(struct __ecereNameSpace__ecere__sys__OldList * dataMembers);
2113 int __ecereVMethodID_class_OnGetString;
2115 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__TemplateMemberType;
2117 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)
2119 struct ClassDef * def;
2120 struct __ecereNameSpace__ecere__com__Class * regClass = symbol->registered;
2124 classType = regClass->type;
2125 if(classType == 4 && enumValues && (inCompiler || !buildingECERECOMModule))
2127 struct Enumerator * e;
2129 for(e = enumValues->first; e; e = e->next)
2133 struct Type * destType = (destType = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Type), destType->kind = 3, destType->refCount = 1, destType);
2135 e->exp->destType = destType;
2137 ProcessExpressionType(e->exp);
2139 if(!e->exp->expType)
2142 destType->_class = symbol;
2143 ProcessExpressionType(e->exp);
2145 ComputeExpression(e->exp);
2146 if(e->exp->isConstant && e->exp->type == 2)
2148 struct Operand op = GetOperand(e->exp);
2162 __ecereNameSpace__ecere__com__eEnum_AddFixedValue(regClass, e->id->string, value);
2165 __ecereNameSpace__ecere__com__eEnum_AddValue(regClass, e->id->string);
2168 __ecereNameSpace__ecere__com__eEnum_AddValue(regClass, e->id->string);
2171 if(definitions != (((void *)0)))
2175 for(def = definitions->first; def; def = def->next)
2177 if(def->type == 4 && def->propertyWatch)
2179 struct PropertyWatch * propWatch = def->propertyWatch;
2180 struct ClassFunction * func;
2181 char watcherName[1024];
2182 struct Identifier * propID;
2183 struct Statement * stmt = MkExpressionStmt(MkList());
2184 struct Declarator * decl;
2186 sprintf(watcherName, "__ecerePropertySelfWatcher_%d", propWatcherID++);
2187 for(propID = (*propWatch->properties).first; propID; propID = propID->next)
2189 strcat(watcherName, "_");
2190 strcat(watcherName, propID->string);
2192 decl = MkDeclaratorFunction(MkDeclaratorIdentifier(MkIdentifier(watcherName)), MkListOne(MkTypeName(MkListOne(MkSpecifier(VOID)), (((void *)0)))));
2193 func = MkClassFunction(MkListOne(MkSpecifier(VOID)), (((void *)0)), decl, (((void *)0)));
2194 ProcessClassFunctionBody(func, propWatch->compound);
2195 decl->symbol = __extension__ ({
2196 struct Symbol * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Symbol);
2198 __ecereInstance1->id = symbol->id, __ecereInstance1->idCode = symbol->idCode, __ecereInstance1;
2200 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*excludedSymbols), decl->symbol);
2201 func->id = symbol->id;
2202 func->idCode = symbol->idCode;
2203 func->dontMangle = 0x1;
2205 struct External * externalDecl = MkExternalDeclaration((((void *)0)));
2206 struct Declaration * decl;
2207 struct __ecereNameSpace__ecere__sys__OldList * specifiers = MkList();
2209 ListAdd(specifiers, MkSpecifier(STATIC));
2210 ListAdd(specifiers, MkSpecifier(VOID));
2211 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Insert((&*ast), curExternal->prev, externalDecl);
2212 decl = MkDeclaration(specifiers, MkListOne(MkInitDeclarator(MkDeclaratorFunction(MkDeclaratorIdentifier(MkIdentifier(watcherName)), MkListOne(MkTypeName(MkListOne(MkSpecifierName(regClass->fullName)), (((void *)0))))), (((void *)0)))));
2213 externalDecl->declaration = decl;
2214 if(decl->symbol && !decl->symbol->methodExternal)
2216 decl->symbol->methodExternal = externalDecl;
2217 decl->symbol->id = symbol->id;
2218 decl->symbol->idCode = symbol->idCode;
2221 propWatch->compound = (((void *)0));
2222 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Insert(definitions, (((void *)0)), MkClassDefFunction(func));
2224 stmt->expressions = MkList();
2225 for(propID = (*propWatch->properties).first; propID; propID = propID->next)
2227 struct __ecereNameSpace__ecere__com__Property * prop = __ecereNameSpace__ecere__com__eClass_FindProperty(regClass, propID->string, privateModule);
2231 struct __ecereNameSpace__ecere__sys__OldList * args = MkList();
2233 ListAdd(args, MkExpIdentifier(MkIdentifier("class")));
2234 ListAdd(args, MkExpString(QMkString(propID->string)));
2235 ListAdd(args, MkExpIdentifier(MkIdentifier(watcherName)));
2236 ListAdd(stmt->expressions, MkExpCall(MkExpIdentifier(MkIdentifier("eProperty_SelfWatch")), args));
2239 Compiler_Error(__ecereNameSpace__ecere__GetTranslatedString(__thisModule, "Property %s not found in class %s\n", (((void *)0))), propID->string, regClass->fullName);
2241 FreePropertyWatch(def->propertyWatch);
2242 def->propertyWatch = (struct PropertyWatch *)stmt;
2246 for(def = definitions->first; def; def = def->next)
2250 ProcessClassFunction(regClass, def->function, defs, external->prev, declMode == 3);
2254 if(inCompiler && symbol->id != (((int)0x7fffffff)) && regClass)
2256 struct Statement * stmt;
2257 struct __ecereNameSpace__ecere__sys__OldList * args = MkList();
2258 struct __ecereNameSpace__ecere__com__Method * method;
2259 struct Expression * exp;
2260 char * registerFunction = (((void *)0));
2261 int inheritanceAccess = 1;
2263 CreateRegisterModuleBody();
2264 curExternal = registerModuleExternal;
2265 switch(regClass->type)
2268 ListAdd(args, MkExpIdentifier(MkIdentifier("structClass")));
2271 ListAdd(args, MkExpIdentifier(MkIdentifier("bitClass")));
2274 ListAdd(args, MkExpIdentifier(MkIdentifier("enumClass")));
2277 ListAdd(args, MkExpIdentifier(MkIdentifier("noHeadClass")));
2280 ListAdd(args, MkExpIdentifier(MkIdentifier("unitClass")));
2283 ListAdd(args, MkExpIdentifier(MkIdentifier("normalClass")));
2287 char nameSpace[1024] = "";
2288 char className[1024] = "";
2291 GetNameSpaceString(regClass->nameSpace, nameSpace);
2294 __ecereNameSpace__ecere__sys__GetLastDirectory(sourceFile, className);
2295 __ecereNameSpace__ecere__sys__ChangeCh(className, '.', '_');
2296 strcat(className, "}");
2298 strcat(className, nameSpace);
2299 strcat(className, regClass->name);
2300 string = QMkString(className);
2301 ListAdd(args, MkExpString(string));
2302 (__ecereNameSpace__ecere__com__eSystem_Delete(string), string = 0);
2304 if(baseSpecs != (((void *)0)))
2306 struct Type * baseType = ProcessType(baseSpecs, (((void *)0)));
2308 if(baseType->kind != 9 && baseType->kind != 10)
2310 char baseName[1024] = "";
2313 if(baseType->kind == 8 && baseType->_class && baseType->_class->isStatic)
2315 __ecereNameSpace__ecere__sys__GetLastDirectory(sourceFile, baseName);
2316 __ecereNameSpace__ecere__sys__ChangeCh(baseName, '.', '_');
2317 strcat(baseName, "}");
2318 strcat(baseName, baseType->_class->string);
2321 PrintType(baseType, baseName, 0x0, 0x1);
2322 string = QMkString(baseName);
2323 ListAdd(args, MkExpString(string));
2324 (__ecereNameSpace__ecere__com__eSystem_Delete(string), string = 0);
2327 ListAdd(args, MkExpConstant("0"));
2329 if(((struct Specifier *)baseSpecs->first)->type == 0 && ((struct Specifier *)baseSpecs->first)->specifier == PRIVATE)
2330 inheritanceAccess = 2;
2333 ListAdd(args, MkExpConstant("0"));
2334 if(regClass->type == 1 || regClass->type == 0 || regClass->type == 5)
2336 struct __ecereNameSpace__ecere__com__DataMember * member = (((void *)0));
2339 struct __ecereNameSpace__ecere__com__Class * base;
2341 for(base = regClass->base; base && base->type != 1000; base = base->next)
2343 for(member = base->membersAndProperties.first; member; member = member->next)
2344 if(!member->isProperty)
2350 if(regClass->type == 1 && symbol->declaredStruct && member)
2352 char baseStructName[1024];
2354 baseStructName[0] = (char)0;
2355 strcpy(baseStructName, (regClass->base->templateClass ? regClass->base->templateClass : regClass->base)->fullName);
2356 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))))));
2359 ListAdd(args, symbol->declaredStruct ? MkExpTypeSize(MkTypeName(MkListOne(MkStructOrUnion(3, MkIdentifier(symbol->structName), (((void *)0)))), (((void *)0)))) : MkExpConstant("0"));
2363 ListAdd(args, MkExpConstant("0"));
2366 char classDataStructName[1024];
2368 strcpy(classDataStructName, "__ecereClassData_");
2369 FullClassNameCat(classDataStructName, symbol->string, 0x0);
2370 ListAdd(args, symbol->classData ? MkExpTypeSize(MkTypeName(MkListOne(MkStructOrUnion(3, MkIdentifier(classDataStructName), (((void *)0)))), (((void *)0)))) : MkExpConstant("0"));
2372 if(regClass->type == 0 || regClass->type == 5)
2374 ListAdd(args, symbol->needConstructor ? MkExpIdentifier(MkIdentifier(symbol->constructorName)) : MkExpConstant("0"));
2375 ListAdd(args, symbol->needDestructor ? MkExpIdentifier(MkIdentifier(symbol->destructorName)) : MkExpConstant("0"));
2379 ListAdd(args, MkExpConstant("0"));
2380 ListAdd(args, MkExpConstant("0"));
2382 ListAdd(args, MkExpIdentifier(MkIdentifier("module")));
2386 ListAdd(args, MkExpIdentifier(MkIdentifier("staticAccess")));
2389 ListAdd(args, MkExpIdentifier(MkIdentifier("privateAccess")));
2393 ListAdd(args, MkExpIdentifier(MkIdentifier(buildingECERECOMModule ? "baseSystemAccess" : "publicAccess")));
2396 switch(inheritanceAccess)
2399 ListAdd(args, MkExpIdentifier(MkIdentifier("privateAccess")));
2403 ListAdd(args, MkExpIdentifier(MkIdentifier("publicAccess")));
2406 registerFunction = "eSystem_RegisterClass";
2407 stmt = MkExpressionStmt(MkListOne(MkExpOp(MkExpIdentifier(MkIdentifier("class")), '=', MkExpCall((exp = MkExpIdentifier(MkIdentifier(registerFunction))), args))));
2408 ListAdd(registerModuleBody->compound.statements, stmt);
2409 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)));
2410 ListAdd(registerModuleBody->compound.statements, stmt);
2411 if(external && external->type == 2 && external->_class->deleteWatchable)
2413 args = MkListOne(MkExpIdentifier(MkIdentifier("class")));
2414 stmt = MkExpressionStmt(MkListOne(MkExpCall(MkExpIdentifier(MkIdentifier("eClass_DestructionWatchable")), args)));
2415 ListAdd(registerModuleBody->compound.statements, stmt);
2419 struct __ecereNameSpace__ecere__com__Class * base = regClass->base;
2422 for(c = 0; c < base->vTblSize; c++)
2424 struct Symbol * method = (struct Symbol *)regClass->_vTbl[c];
2426 if((void *)method != DummyMethod && base->_vTbl[c] != (void *)method)
2428 struct External * external = method->methodExternal;
2429 struct __ecereNameSpace__ecere__sys__OldList * args = MkList();
2430 struct Identifier * id = external->function ? GetDeclId(external->function->declarator) : (((void *)0));
2432 ListAdd(args, MkExpIdentifier(MkIdentifier("class")));
2434 char * string = QMkString(method->method->name);
2436 ListAdd(args, MkExpString(string));
2437 (__ecereNameSpace__ecere__com__eSystem_Delete(string), string = 0);
2439 ListAdd(args, MkExpConstant("0"));
2440 ListAdd(args, (exp = MkExpIdentifier(MkIdentifier(id->string))));
2441 ListAdd(args, MkExpIdentifier(MkIdentifier("publicAccess")));
2442 exp->expType = __extension__ ({
2443 struct Type * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Type);
2445 __ecereInstance1->refCount = 1, __ecereInstance1;
2447 stmt = MkExpressionStmt(MkListOne(MkExpCall(MkExpIdentifier(MkIdentifier("eClass_AddMethod")), args)));
2448 ListAdd(registerModuleBody->compound.statements, stmt);
2455 for(c = regClass->base ? regClass->base->vTblSize : 0; c < regClass->vTblSize; c++)
2457 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)))
2459 if(method->type == 1 && method->_class == regClass && method->vid == c)
2462 struct Expression * exp;
2463 struct External * external = method->symbol ? ((struct Symbol *)method->symbol)->methodCodeExternal : (((void *)0));
2464 struct __ecereNameSpace__ecere__sys__OldList * args = MkList();
2465 struct Identifier * id = (external && external->function) ? GetDeclId(external->function->declarator) : (((void *)0));
2467 ListAdd(args, MkExpIdentifier(MkIdentifier("class")));
2469 char * string = QMkString(method->name);
2471 ListAdd(args, MkExpString(string));
2472 (__ecereNameSpace__ecere__com__eSystem_Delete(string), string = 0);
2475 char * string = QMkString(method->dataTypeString);
2477 ListAdd(args, MkExpString(string));
2478 (__ecereNameSpace__ecere__com__eSystem_Delete(string), string = 0);
2480 if(id && external->function->body)
2482 ListAdd(args, (exp = MkExpIdentifier(MkIdentifier(id->string))));
2483 exp->expType = __extension__ ({
2484 struct Type * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Type);
2486 __ecereInstance1->refCount = 1, __ecereInstance1;
2491 ListAdd(args, (exp = MkExpConstant("0")));
2493 switch(method->memberAccess)
2496 ListAdd(args, MkExpIdentifier(MkIdentifier("staticAccess")));
2499 ListAdd(args, MkExpIdentifier(MkIdentifier("privateAccess")));
2503 ListAdd(args, MkExpIdentifier(MkIdentifier("publicAccess")));
2506 strcpy(name, "__ecereVMethodID_");
2507 FullClassNameCat(name, method->_class->fullName, 0x0);
2509 strcat(name, method->name);
2510 exp = MkExpCall(MkExpIdentifier(MkIdentifier("eClass_AddVirtualMethod")), args);
2511 stmt = MkExpressionStmt(MkListOne(exp));
2512 DeclareMethod(method, name);
2513 ListAdd(registerModuleBody->compound.statements, stmt);
2518 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)))
2520 if(method->type == 1 && method->_class == regClass)
2522 else if(method->memberAccess == 1 || !method->dataTypeString)
2524 struct External * external = method->symbol ? ((struct Symbol *)method->symbol)->methodCodeExternal : (((void *)0));
2525 struct __ecereNameSpace__ecere__sys__OldList * args = MkList();
2526 struct Identifier * id = (external && external->function) ? GetDeclId(external->function->declarator) : (((void *)0));
2528 ListAdd(args, MkExpIdentifier(MkIdentifier("class")));
2530 char * string = QMkString(method->name);
2532 ListAdd(args, MkExpString(string));
2533 (__ecereNameSpace__ecere__com__eSystem_Delete(string), string = 0);
2536 char * string = QMkString(method->dataTypeString);
2538 ListAdd(args, MkExpString(string));
2539 (__ecereNameSpace__ecere__com__eSystem_Delete(string), string = 0);
2541 if(id && external->function->body)
2543 ListAdd(args, (exp = MkExpIdentifier(MkIdentifier(id->string))));
2544 exp->expType = __extension__ ({
2545 struct Type * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Type);
2547 __ecereInstance1->refCount = 1, __ecereInstance1;
2552 ListAdd(args, (exp = MkExpConstant("0")));
2554 switch(method->memberAccess)
2557 ListAdd(args, MkExpIdentifier(MkIdentifier("staticAccess")));
2560 ListAdd(args, MkExpIdentifier(MkIdentifier("privateAccess")));
2564 ListAdd(args, MkExpIdentifier(MkIdentifier("publicAccess")));
2567 stmt = MkExpressionStmt(MkListOne(MkExpCall(MkExpIdentifier(MkIdentifier("eClass_AddMethod")), args)));
2568 ListAdd(registerModuleBody->compound.statements, stmt);
2571 RegisterMembersAndProperties(regClass, 0x0, "class", registerModuleBody);
2574 struct __ecereNameSpace__ecere__sys__NamedLink * value;
2575 struct __ecereNameSpace__ecere__com__Class * enumClass = __ecereNameSpace__ecere__com__eSystem_FindClass(privateModule, "enum");
2576 struct __ecereNameSpace__ecere__com__EnumClassData * e = (regClass ? ((void *)(((char *)regClass->data) + enumClass->offsetClass)) : (((void *)0)));
2578 for(value = e->values.first; value; value = value->next)
2580 struct __ecereNameSpace__ecere__sys__OldList * args = MkList();
2582 ListAdd(args, MkExpIdentifier(MkIdentifier("class")));
2584 char * string = QMkString(value->name);
2586 ListAdd(args, MkExpString(string));
2587 (__ecereNameSpace__ecere__com__eSystem_Delete(string), string = 0);
2592 sprintf(temp, "%d", (int)value->data);
2593 ListAdd(args, MkExpConstant(temp));
2595 stmt = MkExpressionStmt(MkListOne(MkExpCall(MkExpIdentifier(MkIdentifier("eEnum_AddFixedValue")), args)));
2596 ListAdd(registerModuleBody->compound.statements, stmt);
2599 if(symbol->templateParams)
2601 struct TemplateParameter * param;
2603 for(param = (*symbol->templateParams).first; param; param = param->next)
2605 struct __ecereNameSpace__ecere__sys__OldList * args = MkList();
2607 ListAdd(args, MkExpIdentifier(MkIdentifier("class")));
2609 char * string = QMkString(param->identifier->string);
2611 ListAdd(args, MkExpString(string));
2612 (__ecereNameSpace__ecere__com__eSystem_Delete(string), string = 0);
2614 ListAdd(args, MkExpIdentifier(MkIdentifier((param->type == 0) ? "type" : ((param->type == 1) ? "identifier" : "expression"))));
2620 char * typeString = param->dataType ? StringFromSpecDecl(param->dataType->specifiers, param->dataType->decl) : (((void *)0));
2621 char * string = QMkString(typeString);
2623 ListAdd(args, MkExpString(string));
2624 (__ecereNameSpace__ecere__com__eSystem_Delete(typeString), typeString = 0);
2625 (__ecereNameSpace__ecere__com__eSystem_Delete(string), string = 0);
2630 char memberTypeString[132] = "TemplateMemberType::";
2631 unsigned int needClass = 0x1;
2633 ((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);
2634 ListAdd(args, MkExpCast(MkTypeName(MkListOne(MkSpecifier(VOID)), MkDeclaratorPointer(MkPointer((((void *)0)), (((void *)0))), (((void *)0)))), MkExpIdentifier(MkIdentifier(memberTypeString))));
2638 if(param->defaultArgument)
2640 struct __ecereNameSpace__ecere__sys__OldList * members = MkList();
2646 char * typeString = param->defaultArgument->templateDatatype ? StringFromSpecDecl(param->defaultArgument->templateDatatype->specifiers, param->defaultArgument->templateDatatype->decl) : (((void *)0));
2647 char * string = QMkString(typeString);
2649 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*members), MkMemberInit(MkListOne(MkIdentifier("dataTypeString")), MkInitializerAssignment(MkExpString(string))));
2650 (__ecereNameSpace__ecere__com__eSystem_Delete(typeString), typeString = 0);
2651 (__ecereNameSpace__ecere__com__eSystem_Delete(string), string = 0);
2656 char memberString[1024];
2659 memberString[0] = '\0';
2660 if(param->defaultArgument->identifier->_class)
2662 if(param->defaultArgument->identifier->_class->type == 8)
2663 strcpy(memberString, param->defaultArgument->identifier->_class->templateParameter->identifier->string);
2664 else if(param->defaultArgument->identifier->_class->name)
2665 strcpy(memberString, param->defaultArgument->identifier->_class->name);
2668 strcat(memberString, "::");
2669 strcat(memberString, param->defaultArgument->identifier->string);
2670 string = QMkString(memberString);
2671 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*members), MkMemberInit(MkListOne(MkIdentifier("dataTypeString")), MkInitializerAssignment(MkExpString(string))));
2672 (__ecereNameSpace__ecere__com__eSystem_Delete(string), string = 0);
2681 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
2684 struct __ecereNameSpace__ecere__sys__OldList * ids = MkList();
2686 char * string = (((void *)0));
2688 op = GetOperand(param->defaultArgument->expression);
2689 ui64String = PrintUInt64(op.ui64);
2690 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*ids), MkIdentifier("expression"));
2691 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*ids), MkIdentifier("ui64"));
2692 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*members), MkMemberInit(ids, MkInitializerAssignment(MkExpConstant(ui64String))));
2693 (__ecereNameSpace__ecere__com__eSystem_Delete(string), string = 0);
2694 (__ecereNameSpace__ecere__com__eSystem_Delete(ui64String), ui64String = 0);
2698 ListAdd(args, MkExpInstance(MkInstantiation(MkSpecifierName("ClassTemplateArgument"), (((void *)0)), MkListOne(MkMembersInitList(members)))));
2701 ListAdd(args, MkExpIdentifier(MkIdentifier("null")));
2702 stmt = MkExpressionStmt(MkListOne(MkExpCall(MkExpIdentifier(MkIdentifier("eClass_AddTemplateParameter")), args)));
2703 ListAdd(registerModuleBody->compound.statements, stmt);
2705 stmt = MkExpressionStmt(MkListOne(MkExpCall(MkExpIdentifier(MkIdentifier("eClass_DoneAddingTemplateParameters")), MkListOne(MkExpIdentifier(MkIdentifier("class"))))));
2706 ListAdd(registerModuleBody->compound.statements, stmt);
2708 if(definitions != (((void *)0)))
2710 for(def = definitions->first; def; def = def->next)
2712 if(def->type == 4 && def->propertyWatch)
2714 ListAdd(registerModuleBody->compound.statements, (struct Statement *)def->propertyWatch);
2715 def->propertyWatch = (((void *)0));
2717 else if(def->type == 5)
2719 stmt = MkIfStmt(MkListOne(MkExpIdentifier(MkIdentifier("class"))), MkExpressionStmt(MkListOne(MkExpOp(MkExpMember(MkExpIdentifier(MkIdentifier("class")), MkIdentifier("designerClass")), '=', MkExpString(QMkString(def->designer))))), (((void *)0)));
2720 ListAdd(registerModuleBody->compound.statements, stmt);
2722 else if(def->type == 6)
2724 stmt = MkIfStmt(MkListOne(MkExpIdentifier(MkIdentifier("class"))), MkExpressionStmt(MkListOne(MkExpOp(MkExpMember(MkExpIdentifier(MkIdentifier("class")), MkIdentifier("noExpansion")), '=', MkExpConstant("1")))), (((void *)0)));
2725 ListAdd(registerModuleBody->compound.statements, stmt);
2727 else if(def->type == 7)
2729 stmt = MkIfStmt(MkListOne(MkExpIdentifier(MkIdentifier("class"))), MkExpressionStmt(MkListOne(MkExpOp(MkExpMember(MkExpIdentifier(MkIdentifier("class")), MkIdentifier("fixed")), '=', MkExpConstant("1")))), (((void *)0)));
2730 ListAdd(registerModuleBody->compound.statements, stmt);
2732 regClass->fixed = 0x1;
2734 else if(def->type == 8)
2736 stmt = MkIfStmt(MkListOne(MkExpIdentifier(MkIdentifier("class"))), MkExpressionStmt(MkListOne(MkExpOp(MkExpMember(MkExpIdentifier(MkIdentifier("class")), MkIdentifier("defaultProperty")), '=', MkExpString(QMkString(def->defaultProperty->string))))), (((void *)0)));
2737 ListAdd(registerModuleBody->compound.statements, stmt);
2739 else if(def->type == 11)
2741 struct __ecereNameSpace__ecere__sys__OldList * args = MkList();
2743 ListAdd(args, MkExpIdentifier(MkIdentifier("class")));
2744 ListAdd(args, MkExpString(QMkString(def->id->string)));
2745 ListAdd(args, MkExpCast(MkTypeName(MkListOne(MkSpecifier(INT64)), (((void *)0))), def->initializer->exp));
2746 def->initializer->exp = (((void *)0));
2747 stmt = MkExpressionStmt(MkListOne(MkExpCall(MkExpIdentifier(MkIdentifier("ecere::com::eClass_SetProperty")), args)));
2748 ListAdd(registerModuleBody->compound.statements, stmt);
2756 extern int strcmp(const char * , const char * );
2758 extern void PrintExpression(struct Expression * exp, char * string);
2760 void __ecereMethod___ecereNameSpace__ecere__sys__OldList_Remove(struct __ecereNameSpace__ecere__sys__OldList * this, void * item);
2762 void ProcessClassDefinitions()
2764 struct External * external, * next;
2766 CreateRegisterModuleBody();
2769 for(external = (*ast).first; external; external = next)
2771 next = external->next;
2772 curExternal = external;
2773 if(external->type == 2)
2775 struct ClassDefinition * _class = external->_class;
2777 if(_class->definitions)
2779 ProcessClass(0, _class->definitions, _class->symbol, _class->baseSpecs, (((void *)0)), ast, external, _class->declMode);
2783 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Remove((&*ast), external);
2784 FreeExternal(external);
2787 else if(external->type == 0)
2789 unsigned int setStaticMethod = 0x0;
2791 if(external->symbol && !external->symbol->type->thisClass && !external->symbol->type->staticMethod)
2793 external->symbol->type->staticMethod = 0x1;
2794 setStaticMethod = 0x1;
2798 struct FunctionDefinition * function = external->function;
2799 struct Statement * stmt;
2800 struct __ecereNameSpace__ecere__sys__OldList * args;
2802 if(!strcmp(function->declarator->symbol->string, "__on_register_module"))
2804 ListAdd(registerModuleBody->compound.statements, function->body);
2805 function->body->compound.context->parent = registerModuleBody->compound.context;
2806 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Remove((&*ast), external);
2807 function->body = (((void *)0));
2808 FreeExternal(external);
2811 if(function->declMode != 2 && function->declMode != 1)
2814 CreateRegisterModuleBody();
2816 char * string = QMkString(function->declarator->symbol->string);
2818 ListAdd(args, MkExpString(string));
2819 (__ecereNameSpace__ecere__com__eSystem_Delete(string), string = 0);
2823 char type[1024] = "";
2826 function->declarator->symbol->type->staticMethod = 0x0;
2827 PrintType(function->declarator->symbol->type, type, 0x1, 0x1);
2829 function->declarator->symbol->type->staticMethod = 0x1;
2830 string = QMkString(type);
2831 ListAdd(args, MkExpString(string));
2832 (__ecereNameSpace__ecere__com__eSystem_Delete(string), string = 0);
2835 ListAdd(args, MkExpIdentifier(MkIdentifier(function->declarator->symbol->string)));
2837 ListAdd(args, MkExpIdentifier(MkIdentifier("module")));
2838 switch(function->declMode)
2841 ListAdd(args, MkExpIdentifier(MkIdentifier("staticAccess")));
2844 ListAdd(args, MkExpIdentifier(MkIdentifier("privateAccess")));
2848 ListAdd(args, MkExpIdentifier(MkIdentifier(buildingECERECOMModule ? "baseSystemAccess" : "publicAccess")));
2851 stmt = MkExpressionStmt(MkListOne(MkExpCall((MkExpIdentifier(MkIdentifier("eSystem_RegisterFunction"))), args)));
2852 ListAdd(registerModuleBody->compound.statements, stmt);
2855 else if(external->type == 1)
2857 struct Declaration * declaration = external->declaration;
2859 if(external->symbol)
2861 if(external->symbol->type && external->symbol->type->kind == 11 && !external->symbol->type->thisClass)
2862 external->symbol->type->staticMethod = 0x1;
2864 if(external->symbol && declaration->type == 1)
2866 if(declaration->specifiers)
2868 struct Specifier * specifier;
2869 unsigned int removeExternal = 0x0;
2871 for(specifier = (*declaration->specifiers).first; specifier; specifier = specifier->next)
2873 if((specifier->type == 2 || specifier->type == 3 || specifier->type == 4) && specifier->id && specifier->id->string && (declaration->declMode || specifier->baseSpecs || (specifier->type == 2 && specifier->definitions)))
2875 struct Symbol * symbol = FindClass(specifier->id->string);
2881 if(specifier->type == 2)
2885 removeExternal = 0x1;
2886 symbol->ctx = specifier->ctx;
2887 specifier->ctx = (((void *)0));
2888 ProcessClass(classType, specifier->definitions, symbol, specifier->baseSpecs, specifier->list, ast, external, declaration->declMode);
2892 if(inCompiler && removeExternal)
2894 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Remove((&*ast), external);
2895 FreeExternal(external);
2899 else if(declaration->type == 3)
2901 if(inCompiler && declaration->declMode != 3)
2903 struct Statement * stmt;
2904 struct __ecereNameSpace__ecere__sys__OldList * args = MkList();
2906 CreateRegisterModuleBody();
2908 char * string = QMkString(declaration->id->string);
2910 ListAdd(args, MkExpString(string));
2911 (__ecereNameSpace__ecere__com__eSystem_Delete(string), string = 0);
2915 char type[1024] = "";
2917 PrintExpression(declaration->exp, type);
2918 string = QMkString(type);
2919 ListAdd(args, MkExpString(string));
2920 (__ecereNameSpace__ecere__com__eSystem_Delete(string), string = 0);
2922 ListAdd(args, MkExpIdentifier(MkIdentifier("module")));
2923 switch(declaration->declMode)
2926 ListAdd(args, MkExpIdentifier(MkIdentifier("staticAccess")));
2929 ListAdd(args, MkExpIdentifier(MkIdentifier("privateAccess")));
2933 ListAdd(args, MkExpIdentifier(MkIdentifier(buildingECERECOMModule ? "baseSystemAccess" : "publicAccess")));
2936 stmt = MkExpressionStmt(MkListOne(MkExpCall((MkExpIdentifier(MkIdentifier("eSystem_RegisterDefine"))), args)));
2937 ListAdd(registerModuleBody->compound.statements, stmt);
2945 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__GlobalFunction;
2947 struct __ecereNameSpace__ecere__com__GlobalFunction;
2949 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);
2951 void __ecereRegisterModule_pass1(struct __ecereNameSpace__ecere__com__Instance * module)
2953 struct __ecereNameSpace__ecere__com__Class * class;
2955 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("SetBuildingEcereCom", "void SetBuildingEcereCom(bool b)", SetBuildingEcereCom, module, 1);
2956 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("GetBuildingEcereCom", "bool GetBuildingEcereCom(void)", GetBuildingEcereCom, module, 1);
2957 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("SetBuildingEcereComModule", "void SetBuildingEcereComModule(bool b)", SetBuildingEcereComModule, module, 1);
2958 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("GetBuildingEcereComModule", "bool GetBuildingEcereComModule(void)", GetBuildingEcereComModule, module, 1);
2959 __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);
2960 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("CreateRegisterModuleBody", "void CreateRegisterModuleBody(void)", CreateRegisterModuleBody, module, 2);
2961 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("RegisterMembersAndProperties", "void RegisterMembersAndProperties(ecere::com::Class regClass, bool isMember, char * className, Statement statement)", RegisterMembersAndProperties, module, 2);
2962 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("GetNameSpaceString", "void GetNameSpaceString(ecere::com::NameSpace ns, char * string)", GetNameSpaceString, module, 2);
2963 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ProcessClassDefinitions", "void ProcessClassDefinitions(void)", ProcessClassDefinitions, module, 1);
2966 void __ecereUnregisterModule_pass1(struct __ecereNameSpace__ecere__com__Instance * module)