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;
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 unsigned int declaredWithStruct : 1;
764 } __attribute__ ((gcc_struct));
766 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__Class;
768 struct __ecereNameSpace__ecere__com__Class
770 struct __ecereNameSpace__ecere__com__Class * prev;
771 struct __ecereNameSpace__ecere__com__Class * next;
777 int (* Constructor)(struct __ecereNameSpace__ecere__com__Instance *);
778 void (* Destructor)(struct __ecereNameSpace__ecere__com__Instance *);
781 struct __ecereNameSpace__ecere__com__Class * base;
782 struct __ecereNameSpace__ecere__sys__BinaryTree methods;
783 struct __ecereNameSpace__ecere__sys__BinaryTree members;
784 struct __ecereNameSpace__ecere__sys__BinaryTree prop;
785 struct __ecereNameSpace__ecere__sys__OldList membersAndProperties;
786 struct __ecereNameSpace__ecere__sys__BinaryTree classProperties;
787 struct __ecereNameSpace__ecere__sys__OldList derivatives;
791 struct __ecereNameSpace__ecere__com__Instance * module;
792 struct __ecereNameSpace__ecere__com__NameSpace * nameSpace;
793 char * dataTypeString;
794 struct Type * dataType;
796 int defaultAlignment;
797 void (* Initialize)();
799 struct __ecereNameSpace__ecere__sys__OldList selfWatchers;
800 char * designerClass;
801 unsigned int noExpansion;
802 char * defaultProperty;
803 unsigned int comRedefinition;
805 unsigned int isRemote;
806 unsigned int internalDecl;
808 unsigned int computeSize;
810 int destructionWatchOffset;
812 struct __ecereNameSpace__ecere__sys__OldList delayedCPValues;
813 int inheritanceAccess;
816 struct __ecereNameSpace__ecere__sys__OldList conversions;
817 struct __ecereNameSpace__ecere__sys__OldList templateParams;
818 struct __ecereNameSpace__ecere__com__ClassTemplateArgument * templateArgs;
819 struct __ecereNameSpace__ecere__com__Class * templateClass;
820 struct __ecereNameSpace__ecere__sys__OldList templatized;
822 unsigned int isInstanceClass;
823 } __attribute__ ((gcc_struct));
825 extern long long __ecereNameSpace__ecere__com__eClass_GetProperty(struct __ecereNameSpace__ecere__com__Class * _class, char * name);
827 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__Instance;
829 struct __ecereNameSpace__ecere__com__Instance
832 struct __ecereNameSpace__ecere__com__Class * _class;
834 } __attribute__ ((gcc_struct));
836 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__DataMember;
838 struct __ecereNameSpace__ecere__com__DataMember
840 struct __ecereNameSpace__ecere__com__DataMember * prev;
841 struct __ecereNameSpace__ecere__com__DataMember * next;
843 unsigned int isProperty;
846 struct __ecereNameSpace__ecere__com__Class * _class;
847 char * dataTypeString;
848 struct __ecereNameSpace__ecere__com__Class * dataTypeClass;
849 struct Type * dataType;
853 struct __ecereNameSpace__ecere__sys__OldList members;
854 struct __ecereNameSpace__ecere__sys__BinaryTree membersAlpha;
857 } __attribute__ ((gcc_struct));
859 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__SerialBuffer;
861 struct __ecereNameSpace__ecere__com__SerialBuffer
863 unsigned char * _buffer;
867 } __attribute__ ((gcc_struct));
869 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__ClassTemplateArgument;
871 struct __ecereNameSpace__ecere__com__ClassTemplateArgument
877 char * dataTypeString;
878 struct __ecereNameSpace__ecere__com__Class * dataTypeClass;
879 } __attribute__ ((gcc_struct));
880 struct __ecereNameSpace__ecere__com__DataValue expression;
886 struct __ecereNameSpace__ecere__com__DataMember * member;
887 struct __ecereNameSpace__ecere__com__Property * prop;
888 struct __ecereNameSpace__ecere__com__Method * method;
889 } __attribute__ ((gcc_struct));
890 } __attribute__ ((gcc_struct));
891 } __attribute__ ((gcc_struct));
892 } __attribute__ ((gcc_struct));
896 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
899 typedef union YYSTYPE
904 struct Identifier * id;
905 struct Expression * exp;
906 struct Specifier * specifier;
907 struct __ecereNameSpace__ecere__sys__OldList * list;
908 struct Enumerator * enumerator;
909 struct Declarator * declarator;
910 struct Pointer * pointer;
911 struct Initializer * initializer;
912 struct InitDeclarator * initDeclarator;
913 struct TypeName * typeName;
914 struct Declaration * declaration;
915 struct Statement * stmt;
916 struct FunctionDefinition * function;
917 struct External * external;
918 struct Context * context;
919 struct AsmField * asmField;
920 struct Attrib * attrib;
921 struct ExtDecl * extDecl;
922 struct Attribute * attribute;
923 struct Instantiation * instance;
924 struct MembersInit * membersInit;
925 struct MemberInit * memberInit;
926 struct ClassFunction * classFunction;
927 struct ClassDefinition * _class;
928 struct ClassDef * classDef;
929 struct PropertyDef * prop;
931 struct Symbol * symbol;
932 struct PropertyWatch * propertyWatch;
933 struct TemplateParameter * templateParameter;
934 struct TemplateArgument * templateArgument;
935 struct TemplateDatatype * templateDatatype;
936 struct DBTableEntry * dbtableEntry;
937 struct DBIndexItem * dbindexItem;
938 struct DBTableDef * dbtableDef;
939 } __attribute__ ((gcc_struct)) YYSTYPE;
941 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Enumerator;
945 struct Enumerator * prev;
946 struct Enumerator * next;
948 struct Identifier * id;
949 struct Expression * exp;
950 } __attribute__ ((gcc_struct));
952 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_InitDeclarator;
954 struct InitDeclarator;
956 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_AsmField;
960 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Attribute;
964 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_ClassFunction;
968 struct ClassFunction * prev;
969 struct ClassFunction * next;
971 struct __ecereNameSpace__ecere__sys__OldList * specifiers;
972 struct Declarator * declarator;
973 struct __ecereNameSpace__ecere__sys__OldList * declarations;
974 struct Statement * body;
975 struct __ecereNameSpace__ecere__com__Class * _class;
976 struct __ecereNameSpace__ecere__sys__OldList attached;
979 struct Symbol * propSet;
980 unsigned int isVirtual;
981 unsigned int isConstructor;
982 unsigned int isDestructor;
983 unsigned int dontMangle;
986 } __attribute__ ((gcc_struct));
988 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_MembersInit;
992 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_MemberInit;
996 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_PropertyDef;
1000 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_PropertyWatch;
1002 struct PropertyWatch
1004 struct PropertyWatch * prev;
1005 struct PropertyWatch * next;
1006 struct Location loc;
1007 struct Statement * compound;
1008 struct __ecereNameSpace__ecere__sys__OldList * properties;
1009 unsigned int deleteWatch;
1010 } __attribute__ ((gcc_struct));
1012 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_ClassDef;
1016 struct ClassDef * prev;
1017 struct ClassDef * next;
1018 struct Location loc;
1022 struct Declaration * decl;
1023 struct ClassFunction * function;
1024 struct __ecereNameSpace__ecere__sys__OldList * defProperties;
1025 struct PropertyDef * propertyDef;
1026 struct PropertyWatch * propertyWatch;
1028 struct Identifier * defaultProperty;
1031 struct Identifier * id;
1032 struct Initializer * initializer;
1033 } __attribute__ ((gcc_struct));
1034 } __attribute__ ((gcc_struct));
1037 } __attribute__ ((gcc_struct));
1039 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_DBTableEntry;
1041 struct DBTableEntry;
1043 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_DBIndexItem;
1047 extern YYSTYPE yylval;
1049 extern struct Location yylloc;
1051 static struct Statement * registerModuleBody;
1053 static struct External * registerModuleExternal;
1055 static struct Statement * unregisterModuleBody;
1057 static struct External * unregisterModuleExternal;
1059 extern int propWatcherID;
1061 unsigned int buildingECERECOM = 0x0;
1063 void SetBuildingEcereCom(unsigned int b)
1065 buildingECERECOM = b;
1068 unsigned int GetBuildingEcereCom()
1070 return buildingECERECOM;
1073 unsigned int buildingECERECOMModule = 0x0;
1075 void SetBuildingEcereComModule(unsigned int b)
1077 buildingECERECOMModule = b;
1080 unsigned int GetBuildingEcereComModule()
1082 return buildingECERECOMModule;
1085 extern struct Identifier * GetDeclId(struct Declarator * decl);
1087 extern unsigned int inCompiler;
1089 extern struct __ecereNameSpace__ecere__sys__OldList * MkList(void);
1091 extern struct Specifier * MkSpecifier(int specifier);
1093 extern void ReplaceThisClassSpecifiers(struct __ecereNameSpace__ecere__sys__OldList * specs, struct __ecereNameSpace__ecere__com__Class * _class);
1095 extern struct FunctionDefinition * _MkFunction(struct __ecereNameSpace__ecere__sys__OldList * specifiers, struct Declarator * declarator, struct __ecereNameSpace__ecere__sys__OldList * declarationList, unsigned int errorOnOmit);
1097 extern void ProcessFunctionBody(struct FunctionDefinition * func, struct Statement * body);
1099 extern struct External * MkExternalFunction(struct FunctionDefinition * function);
1101 extern void ProcessMethodType(struct __ecereNameSpace__ecere__com__Method * method);
1103 extern struct __ecereNameSpace__ecere__com__ClassTemplateArgument * FindTemplateArg(struct __ecereNameSpace__ecere__com__Class * _class, struct TemplateParameter * param);
1105 extern struct Type * ProcessTypeString(char * string, unsigned int staticMethod);
1107 extern struct Symbol * FindClass(char * name);
1109 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);
1111 extern void Compiler_Error(char * format, ...);
1113 extern char * __ecereNameSpace__ecere__GetTranslatedString(struct __ecereNameSpace__ecere__com__Instance * module, char * string, char * stringAndContext);
1115 extern struct __ecereNameSpace__ecere__com__Instance * __thisModule;
1117 extern struct Declarator * GetFuncDecl(struct Declarator * decl);
1119 extern void FreeType(struct Type * type);
1121 extern void FreeExternal(struct External * external);
1123 extern struct Context * globalContext;
1125 extern struct __ecereNameSpace__ecere__sys__OldList * excludedSymbols;
1127 extern struct Declarator * CopyDeclarator(struct Declarator * declarator);
1129 extern struct __ecereNameSpace__ecere__sys__OldList * CopyList(struct __ecereNameSpace__ecere__sys__OldList * source, void * (* CopyFunction)(void * ));
1131 extern struct Specifier * CopySpecifier(struct Specifier * spec);
1133 unsigned int __ecereMethod___ecereNameSpace__ecere__sys__OldList_Insert(struct __ecereNameSpace__ecere__sys__OldList * this, void * prevItem, void * item);
1135 void __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Remove(struct __ecereNameSpace__ecere__sys__BinaryTree * this, struct __ecereNameSpace__ecere__sys__BTNode * node);
1137 void __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add(struct __ecereNameSpace__ecere__sys__OldList * this, void * item);
1139 struct External * ProcessClassFunction(struct __ecereNameSpace__ecere__com__Class * owningClass, struct ClassFunction * func, struct __ecereNameSpace__ecere__sys__OldList * defs, struct External * after, unsigned int makeStatic)
1141 struct Identifier * id = GetDeclId(func->declarator);
1142 struct Type * type = (((void *)0));
1143 struct Symbol * symbol;
1144 struct External * external = (((void *)0));
1146 if(defs && func->declarator)
1148 struct FunctionDefinition * function = (((void *)0));
1149 struct Symbol * propSymbol;
1150 int symid = func->declarator->symbol->id;
1151 int symidCode = func->declarator->symbol->idCode;
1155 if(!func->specifiers)
1156 func->specifiers = MkList();
1158 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Insert((&*func->specifiers), (((void *)0)), MkSpecifier(STATIC));
1160 propSymbol = func->declarator->symbol;
1161 ReplaceThisClassSpecifiers(func->specifiers, owningClass);
1162 if(propSymbol->externalGet == (struct External *)func)
1163 func->declarator->symbol = (((void *)0));
1164 else if(propSymbol->externalSet == (struct External *)func)
1166 func->declarator->symbol = (((void *)0));
1169 else if(propSymbol->externalIsSet == (struct External *)func)
1171 func->declarator->symbol = (((void *)0));
1175 function = _MkFunction(func->specifiers, func->declarator, (((void *)0)), 0x0);
1176 function->propSet = func->propSet;
1177 function->type = func->type;
1179 func->type->refCount++;
1180 ProcessFunctionBody(function, func->body);
1181 external = MkExternalFunction(function);
1182 external->symbol = func->declarator->symbol;
1183 external->function->_class = func->_class;
1185 symbol = func->declarator->symbol;
1187 symbol->idCode = symidCode;
1188 if(!func->dontMangle)
1190 struct __ecereNameSpace__ecere__com__Method * method = func->declarator->symbol->method;
1192 func->declarator->symbol->methodExternal = external;
1193 if(method && method->symbol)
1194 ((struct Symbol *)method->symbol)->methodCodeExternal = external;
1195 if(method && method->type == 1)
1197 struct Type * methodDataType;
1199 ProcessMethodType(method);
1200 methodDataType = method->dataType;
1201 type = symbol->type;
1202 if(!type->staticMethod && !type->thisClass && !type->thisClassTemplate)
1204 if(method->dataType->thisClassTemplate)
1206 if(owningClass->templateArgs)
1208 struct __ecereNameSpace__ecere__com__ClassTemplateArgument * arg = FindTemplateArg(owningClass, method->dataType->thisClassTemplate);
1210 type->byReference = method->dataType->byReference;
1211 methodDataType = ProcessTypeString(method->dataTypeString, 0x0);
1212 type->thisClass = methodDataType->thisClass = arg ? FindClass((*arg).dataTypeString) : (((void *)0));
1215 else if(method->dataType->staticMethod)
1216 type->staticMethod = 0x1;
1217 else if(method->dataType->thisClass)
1219 type->thisClass = method->dataType->thisClass;
1220 type->byReference = method->dataType->byReference;
1224 if(!owningClass->symbol)
1225 owningClass->symbol = FindClass(owningClass->fullName);
1226 type->thisClass = owningClass->symbol;
1227 type->extraParam = 0x1;
1231 if(!MatchTypes(type, methodDataType, (((void *)0)), owningClass, method->_class, 0x1, 0x1, 0x1, 0x0))
1233 Compiler_Error(__ecereNameSpace__ecere__GetTranslatedString(__thisModule, "Incompatible virtual function %s\n", (((void *)0))), method->name);
1237 struct Type * typeParam;
1238 struct Declarator * funcDecl = GetFuncDecl(func->declarator);
1240 if(funcDecl->function.parameters && (*funcDecl->function.parameters).first)
1242 struct TypeName * param = (*funcDecl->function.parameters).first;
1244 for(typeParam = methodDataType->params.first; typeParam && param; typeParam = typeParam->next)
1246 if(typeParam->classObjectType)
1248 param->classObjectType = typeParam->classObjectType;
1249 if(param->declarator && param->declarator->symbol)
1250 param->declarator->symbol->type->classObjectType = typeParam->classObjectType;
1252 param = param ? param->next : (((void *)0));
1256 if(methodDataType != method->dataType)
1257 FreeType(methodDataType);
1261 type = symbol->type;
1262 if(!type->staticMethod && !type->thisClass)
1264 if(owningClass && !owningClass->symbol)
1265 owningClass->symbol = FindClass(owningClass->fullName);
1266 type->thisClass = owningClass ? FindClass(owningClass->fullName) : (((void *)0));
1272 if(symbol->type && !symbol->type->staticMethod && !symbol->type->thisClass)
1274 if(!owningClass->symbol)
1275 owningClass->symbol = FindClass(owningClass->fullName);
1276 symbol->type->thisClass = owningClass->symbol;
1278 if(propSymbol->externalSet == (struct External *)func && propSymbol->_property && propSymbol->_property->conversion)
1280 if(symbol->type->thisClass && symbol->type->classObjectType != 1)
1282 if(owningClass->type != 1)
1283 symbol->type->thisClass = (((void *)0));
1286 if(propSymbol->externalGet == (struct External *)func)
1288 propSymbol->externalGet = external;
1290 else if(propSymbol->externalSet == (struct External *)func)
1292 propSymbol->externalSet = external;
1294 else if(propSymbol->externalIsSet == (struct External *)func)
1296 propSymbol->externalIsSet = external;
1306 func->declarator = (((void *)0));
1307 func->specifiers = (((void *)0));
1308 func->body = (((void *)0));
1309 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Insert(defs, after, external);
1313 struct __ecereNameSpace__ecere__com__Method * method = func->declarator->symbol->method;
1315 if(method && method->symbol)
1316 ((struct Symbol *)method->symbol)->methodCodeExternal = (((void *)0));
1317 if(func->declarator->symbol && func->declarator->symbol->methodExternal == external)
1318 func->declarator->symbol->methodExternal = (((void *)0));
1319 func->declarator = (((void *)0));
1320 func->specifiers = (((void *)0));
1321 FreeExternal(external);
1326 __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Remove(&globalContext->symbols, (struct __ecereNameSpace__ecere__sys__BTNode *)symbol);
1327 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*excludedSymbols), symbol);
1328 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Insert(defs, after, external);
1329 external->function->declarator = CopyDeclarator(external->function->declarator);
1330 external->function->specifiers = CopyList(external->function->specifiers, CopySpecifier);
1331 external->function->body = (((void *)0));
1337 extern struct Statement * MkCompoundStmt(struct __ecereNameSpace__ecere__sys__OldList * declarations, struct __ecereNameSpace__ecere__sys__OldList * statements);
1339 extern void ListAdd(struct __ecereNameSpace__ecere__sys__OldList * list, void * item);
1341 extern struct Declaration * MkDeclaration(struct __ecereNameSpace__ecere__sys__OldList * specifiers, struct __ecereNameSpace__ecere__sys__OldList * initDeclarators);
1343 extern struct __ecereNameSpace__ecere__sys__OldList * MkListOne(void * item);
1345 extern struct Specifier * MkSpecifierName(char * name);
1347 extern struct InitDeclarator * MkInitDeclarator(struct Declarator * declarator, struct Initializer * initializer);
1349 extern struct Declarator * MkDeclaratorIdentifier(struct Identifier * id);
1351 extern struct Identifier * MkIdentifier(char * string);
1353 extern struct TypeName * MkTypeName(struct __ecereNameSpace__ecere__sys__OldList * qualifiers, struct Declarator * declarator);
1355 extern char * __ecereNameSpace__ecere__sys__GetLastDirectory(char * string, char * output);
1357 extern char * outputFile;
1359 extern unsigned int __ecereNameSpace__ecere__sys__StripExtension(char * string);
1361 extern void FixModuleName(char * moduleName);
1363 extern int sprintf(char * , char * , ...);
1365 extern struct Declarator * MkDeclaratorFunction(struct Declarator * declarator, struct __ecereNameSpace__ecere__sys__OldList * parameters);
1367 extern struct __ecereNameSpace__ecere__sys__OldList * ast;
1369 extern void * __ecereNameSpace__ecere__com__eInstance_New(struct __ecereNameSpace__ecere__com__Class * _class);
1371 void CreateRegisterModuleBody()
1373 if(!registerModuleBody && inCompiler)
1375 char registerName[1024], moduleName[274];
1376 struct __ecereNameSpace__ecere__sys__OldList * specifiers;
1377 struct Declarator * declarator;
1378 struct TypeName * moduleParam;
1380 registerModuleBody = MkCompoundStmt(MkList(), MkList());
1381 registerModuleBody->compound.context = __extension__ ({
1382 struct Context * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Context);
1384 __ecereInstance1->parent = globalContext, __ecereInstance1;
1386 ListAdd(registerModuleBody->compound.declarations, MkDeclaration(MkListOne(MkSpecifierName("ecere::com::Class")), MkListOne(MkInitDeclarator(MkDeclaratorIdentifier(MkIdentifier("class")), (((void *)0))))));
1387 specifiers = MkList();
1388 ListAdd(specifiers, MkSpecifier(VOID));
1389 moduleParam = MkTypeName(MkListOne(MkSpecifierName("Module")), MkDeclaratorIdentifier(MkIdentifier("module")));
1390 __ecereNameSpace__ecere__sys__GetLastDirectory(outputFile, moduleName);
1391 __ecereNameSpace__ecere__sys__StripExtension(moduleName);
1392 FixModuleName(moduleName);
1393 sprintf(registerName, "__ecereRegisterModule_%s", moduleName);
1394 declarator = MkDeclaratorFunction(MkDeclaratorIdentifier(MkIdentifier(registerName)), MkListOne(moduleParam));
1396 struct FunctionDefinition * function = _MkFunction(specifiers, declarator, (((void *)0)), 0x0);
1398 ProcessFunctionBody(function, registerModuleBody);
1399 function->declMode = 0;
1402 ListAdd(ast, (registerModuleExternal = MkExternalFunction(function)));
1405 if(!unregisterModuleBody && inCompiler)
1407 char registerName[1024], moduleName[274];
1408 struct __ecereNameSpace__ecere__sys__OldList * specifiers;
1409 struct Declarator * declarator;
1410 struct TypeName * moduleParam;
1412 unregisterModuleBody = MkCompoundStmt(MkList(), MkList());
1413 unregisterModuleBody->compound.context = __extension__ ({
1414 struct Context * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Context);
1416 __ecereInstance1->parent = globalContext, __ecereInstance1;
1418 specifiers = MkList();
1419 ListAdd(specifiers, MkSpecifier(VOID));
1420 moduleParam = MkTypeName(MkListOne(MkSpecifierName("Module")), MkDeclaratorIdentifier(MkIdentifier("module")));
1421 __ecereNameSpace__ecere__sys__GetLastDirectory(outputFile, moduleName);
1422 __ecereNameSpace__ecere__sys__StripExtension(moduleName);
1423 FixModuleName(moduleName);
1424 sprintf(registerName, "__ecereUnregisterModule_%s", moduleName);
1425 declarator = MkDeclaratorFunction(MkDeclaratorIdentifier(MkIdentifier(registerName)), MkListOne(moduleParam));
1427 struct FunctionDefinition * function = _MkFunction(specifiers, declarator, (((void *)0)), 0x0);
1429 ProcessFunctionBody(function, unregisterModuleBody);
1430 function->declMode = 0;
1433 ListAdd(ast, (unregisterModuleExternal = MkExternalFunction(function)));
1438 extern struct Expression * MkExpIdentifier(struct Identifier * id);
1440 extern struct Expression * MkExpConstant(char * string);
1442 extern char * QMkString(char * source);
1444 extern struct Expression * MkExpString(char * string);
1446 extern char * strcpy(char * , const char * );
1448 extern void FullClassNameCat(char * output, char * className, unsigned int includeTemplateParams);
1450 extern char * strcat(char * , const char * );
1452 extern void MangleClassName(char * className);
1454 extern struct Statement * MkExpressionStmt(struct __ecereNameSpace__ecere__sys__OldList * expressions);
1456 extern struct Expression * MkExpOp(struct Expression * exp1, int op, struct Expression * exp2);
1458 extern struct Expression * MkExpCall(struct Expression * expression, struct __ecereNameSpace__ecere__sys__OldList * arguments);
1460 extern struct Expression * MkExpMember(struct Expression * expression, struct Identifier * member);
1462 extern struct Expression * MkExpCast(struct TypeName * typeName, struct Expression * expression);
1464 extern struct Declarator * MkDeclaratorPointer(struct Pointer * pointer, struct Declarator * declarator);
1466 extern struct Pointer * MkPointer(struct __ecereNameSpace__ecere__sys__OldList * qualifiers, struct Pointer * pointer);
1468 extern struct Expression * CopyExpression(struct Expression * exp);
1470 extern struct Statement * MkIfStmt(struct __ecereNameSpace__ecere__sys__OldList * exp, struct Statement * statement, struct Statement * elseStmt);
1472 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__BitMember;
1474 struct __ecereNameSpace__ecere__com__BitMember
1476 struct __ecereNameSpace__ecere__com__BitMember * prev;
1477 struct __ecereNameSpace__ecere__com__BitMember * next;
1479 unsigned int isProperty;
1482 struct __ecereNameSpace__ecere__com__Class * _class;
1483 char * dataTypeString;
1484 struct __ecereNameSpace__ecere__com__Class * dataTypeClass;
1485 struct Type * dataType;
1490 } __attribute__ ((gcc_struct));
1492 extern int ComputeTypeSize(struct Type * type);
1494 extern struct Context * curContext;
1496 extern struct Context * PushContext(void);
1498 extern struct Initializer * MkInitializerAssignment(struct Expression * exp);
1500 extern void PopContext(struct Context * ctx);
1502 extern struct Expression * MkExpCondition(struct Expression * cond, struct __ecereNameSpace__ecere__sys__OldList * expressions, struct Expression * elseExp);
1504 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__ClassProperty;
1506 struct __ecereNameSpace__ecere__com__ClassProperty
1509 struct __ecereNameSpace__ecere__com__ClassProperty * parent;
1510 struct __ecereNameSpace__ecere__com__ClassProperty * left;
1511 struct __ecereNameSpace__ecere__com__ClassProperty * right;
1513 void (* Set)(struct __ecereNameSpace__ecere__com__Class *, long long);
1514 long long (* Get)(struct __ecereNameSpace__ecere__com__Class *);
1515 char * dataTypeString;
1516 struct Type * dataType;
1517 unsigned int constant;
1518 } __attribute__ ((gcc_struct));
1520 struct __ecereNameSpace__ecere__sys__BTNode * __ecereProp___ecereNameSpace__ecere__sys__BinaryTree_Get_first(struct __ecereNameSpace__ecere__sys__BinaryTree * this);
1522 extern struct __ecereNameSpace__ecere__com__Property ** __ecereProp___ecereNameSpace__ecere__sys__BinaryTree_first;
1524 struct __ecereNameSpace__ecere__sys__BTNode * __ecereProp___ecereNameSpace__ecere__sys__BTNode_Get_next(struct __ecereNameSpace__ecere__sys__BTNode * this);
1526 extern struct __ecereNameSpace__ecere__com__Property ** __ecereProp___ecereNameSpace__ecere__sys__BTNode_next;
1528 void RegisterMembersAndProperties(struct __ecereNameSpace__ecere__com__Class * regClass, unsigned int isMember, char * className, struct Statement * statement)
1530 struct __ecereNameSpace__ecere__com__DataMember * dataMember = isMember ? (struct __ecereNameSpace__ecere__com__DataMember *)regClass : (((void *)0));
1531 struct __ecereNameSpace__ecere__com__DataMember * member;
1532 struct __ecereNameSpace__ecere__com__Property * prop;
1533 struct Expression * exp;
1534 struct Statement * stmt;
1535 char dataMemberSize[16];
1536 unsigned int lastOffset = 0;
1538 unsigned int privateMembers = 0x0;
1540 sprintf(dataMemberSize, "%d", (int)sizeof(struct __ecereNameSpace__ecere__com__DataMember *));
1543 for(prop = regClass->conversions.first; prop; prop = prop->next)
1545 struct __ecereNameSpace__ecere__sys__OldList * args = MkList();
1548 ListAdd(args, MkExpIdentifier(MkIdentifier(className)));
1549 ListAdd(args, MkExpConstant("0"));
1551 char * string = QMkString(prop->dataTypeString);
1553 ListAdd(args, MkExpString(string));
1554 (__ecereNameSpace__ecere__com__eSystem_Delete(string), string = 0);
1558 strcpy(name, "__ecereProp_");
1559 FullClassNameCat(name, regClass->fullName, 0x0);
1560 strcat(name, "_Set_");
1561 FullClassNameCat(name, prop->name, 0x1);
1562 MangleClassName(name);
1563 ListAdd(args, MkExpIdentifier(MkIdentifier(name)));
1566 ListAdd(args, MkExpConstant("0"));
1569 strcpy(name, "__ecereProp_");
1570 FullClassNameCat(name, regClass->fullName, 0x0);
1571 strcat(name, "_Get_");
1572 FullClassNameCat(name, prop->name, 0x1);
1573 MangleClassName(name);
1574 ListAdd(args, MkExpIdentifier(MkIdentifier(name)));
1577 ListAdd(args, MkExpConstant("0"));
1578 switch(prop->memberAccess)
1581 ListAdd(args, MkExpIdentifier(MkIdentifier("staticAccess")));
1584 ListAdd(args, MkExpIdentifier(MkIdentifier("privateAccess")));
1588 ListAdd(args, MkExpIdentifier(MkIdentifier("publicAccess")));
1591 strcpy(name, "__ecereProp_");
1592 FullClassNameCat(name, regClass->fullName, 0x0);
1594 FullClassNameCat(name, prop->name, 0x1);
1595 MangleClassName(name);
1596 stmt = MkExpressionStmt(MkListOne(MkExpOp(MkExpIdentifier(MkIdentifier(name)), '=', MkExpCall(MkExpIdentifier(MkIdentifier("eClass_AddProperty")), args))));
1597 ListAdd(registerModuleBody->compound.statements, stmt);
1600 for(member = isMember ? dataMember->members.first : regClass->membersAndProperties.first; member; member = member->next)
1602 if(member->isProperty)
1604 prop = (struct __ecereNameSpace__ecere__com__Property *)member;
1606 struct __ecereNameSpace__ecere__sys__OldList * args = MkList();
1607 char name[1024], nameM[1024];
1608 char * string = QMkString(prop->name);
1610 ListAdd(args, MkExpIdentifier(MkIdentifier(className)));
1611 ListAdd(args, MkExpString(string));
1612 (__ecereNameSpace__ecere__com__eSystem_Delete(string), string = 0);
1614 char * string = QMkString(prop->dataTypeString);
1616 ListAdd(args, MkExpString(string));
1617 (__ecereNameSpace__ecere__com__eSystem_Delete(string), string = 0);
1621 strcpy(name, "__ecereProp_");
1622 FullClassNameCat(name, regClass->fullName, 0x0);
1623 strcat(name, "_Set_");
1624 FullClassNameCat(name, prop->name, 0x1);
1625 MangleClassName(name);
1626 ListAdd(args, MkExpIdentifier(MkIdentifier(name)));
1629 ListAdd(args, MkExpConstant("0"));
1632 strcpy(name, "__ecereProp_");
1633 FullClassNameCat(name, regClass->fullName, 0x0);
1634 strcat(name, "_Get_");
1635 FullClassNameCat(name, prop->name, 0x1);
1636 MangleClassName(name);
1637 ListAdd(args, MkExpIdentifier(MkIdentifier(name)));
1640 ListAdd(args, MkExpConstant("0"));
1641 switch(prop->memberAccess)
1644 ListAdd(args, MkExpIdentifier(MkIdentifier("staticAccess")));
1647 ListAdd(args, MkExpIdentifier(MkIdentifier("privateAccess")));
1651 ListAdd(args, MkExpIdentifier(MkIdentifier("publicAccess")));
1654 strcpy(name, "__ecereProp_");
1655 FullClassNameCat(name, regClass->fullName, 0x0);
1657 FullClassNameCat(name, prop->name, 0x1);
1658 MangleClassName(name);
1659 strcpy(nameM, "__ecerePropM_");
1660 FullClassNameCat(nameM, regClass->fullName, 0x0);
1662 FullClassNameCat(nameM, prop->name, 0x1);
1663 MangleClassName(nameM);
1664 if(prop->dataTypeString)
1666 stmt = MkExpressionStmt(MkListOne(MkExpOp(MkExpIdentifier(MkIdentifier(nameM)), '=', MkExpCall(MkExpIdentifier(MkIdentifier("eClass_AddProperty")), args))));
1670 stmt = MkExpressionStmt(MkListOne(MkExpCall(MkExpIdentifier(MkIdentifier("eClass_AddProperty")), args)));
1672 ListAdd(registerModuleBody->compound.statements, stmt);
1677 strcpy(name, "__ecereProp_");
1678 FullClassNameCat(name, regClass->fullName, 0x1);
1679 strcat(name, "_IsSet_");
1680 FullClassNameCat(name, prop->name, 0x0);
1681 MangleClassName(name);
1682 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))))));
1683 ListAdd(registerModuleBody->compound.statements, stmt);
1685 if(prop->symbol && ((struct Symbol *)prop->symbol)->propCategory)
1687 stmt = MkExpressionStmt(MkListOne(MkExpOp(MkExpMember(MkExpIdentifier(MkIdentifier(nameM)), MkIdentifier("category")), '=', CopyExpression(((struct Symbol *)prop->symbol)->propCategory))));
1688 ListAdd(registerModuleBody->compound.statements, stmt);
1690 if(prop->dataTypeString)
1692 struct __ecereNameSpace__ecere__sys__OldList * list = MkList();
1694 ListAdd(list, MkExpOp(MkExpIdentifier(MkIdentifier(name)), '=', MkExpIdentifier(MkIdentifier(nameM))));
1695 ListAdd(list, MkExpOp(MkExpIdentifier(MkIdentifier(nameM)), '=', MkExpCast(MkTypeName(MkListOne(MkSpecifier(VOID)), MkDeclaratorPointer(MkPointer((((void *)0)), (((void *)0))), (((void *)0)))), MkExpConstant("0"))));
1696 stmt = MkIfStmt(MkListOne(MkExpOp(MkExpMember(MkExpIdentifier(MkIdentifier("module")), MkIdentifier("application")), EQ_OP, MkExpMember(MkExpIdentifier(MkIdentifier("__thisModule")), MkIdentifier("application")))), MkExpressionStmt(list), (((void *)0)));
1697 ListAdd(registerModuleBody->compound.statements, stmt);
1698 stmt = MkExpressionStmt(MkListOne(MkExpOp(MkExpIdentifier(MkIdentifier(nameM)), '=', MkExpCast(MkTypeName(MkListOne(MkSpecifier(VOID)), MkDeclaratorPointer(MkPointer((((void *)0)), (((void *)0))), (((void *)0)))), MkExpConstant("0")))));
1699 ListAdd(unregisterModuleBody->compound.statements, stmt);
1703 else if(member->type == 0 && !isMember && regClass->type == 2)
1705 struct __ecereNameSpace__ecere__com__BitMember * bitMember = (struct __ecereNameSpace__ecere__com__BitMember *)member;
1706 struct __ecereNameSpace__ecere__sys__OldList * args = MkList();
1708 ListAdd(args, MkExpIdentifier(MkIdentifier(className)));
1710 char * string = QMkString(bitMember->name);
1712 ListAdd(args, MkExpString(string));
1713 (__ecereNameSpace__ecere__com__eSystem_Delete(string), string = 0);
1716 char * string = QMkString(bitMember->dataTypeString);
1718 ListAdd(args, MkExpString(string));
1719 (__ecereNameSpace__ecere__com__eSystem_Delete(string), string = 0);
1724 sprintf(string, "%d", bitMember->size);
1725 ListAdd(args, (exp = MkExpConstant(string)));
1730 sprintf(string, "%d", bitMember->pos);
1731 ListAdd(args, (exp = MkExpConstant(string)));
1733 switch(member->memberAccess)
1736 ListAdd(args, MkExpIdentifier(MkIdentifier("staticAccess")));
1739 ListAdd(args, MkExpIdentifier(MkIdentifier("privateAccess")));
1743 ListAdd(args, MkExpIdentifier(MkIdentifier("publicAccess")));
1746 stmt = MkExpressionStmt(MkListOne(MkExpCall(MkExpIdentifier(MkIdentifier("eClass_AddBitMember")), args)));
1747 ListAdd(statement->compound.statements, stmt);
1749 else if(member->memberAccess == 1 || (member->type == 0 && !member->dataTypeString))
1751 struct __ecereNameSpace__ecere__sys__OldList * args;
1755 unsigned int offset = member->offset - lastOffset;
1758 ListAdd(args, MkExpIdentifier(MkIdentifier(className)));
1762 sprintf(string, "\"__ecerePrivateData%d\"", privateID++);
1763 ListAdd(args, MkExpString(string));
1768 sprintf(string, "\"byte[%d]\"", offset);
1769 ListAdd(args, MkExpString(string));
1774 sprintf(string, "%d", offset);
1775 ListAdd(args, (exp = MkExpConstant(string)));
1777 ListAdd(args, (exp = MkExpConstant("1")));
1778 ListAdd(args, MkExpIdentifier(MkIdentifier("privateAccess")));
1779 stmt = MkExpressionStmt(MkListOne(MkExpCall(MkExpIdentifier(MkIdentifier(isMember ? "eMember_AddDataMember" : "eClass_AddDataMember")), args)));
1780 ListAdd(statement->compound.statements, stmt);
1781 privateMembers = 0x0;
1783 if(member->type == 0)
1785 if(!member->dataType)
1786 member->dataType = ProcessTypeString(member->dataTypeString, 0x0);
1787 ComputeTypeSize(member->dataType);
1789 ListAdd(args, MkExpIdentifier(MkIdentifier(className)));
1791 char * string = QMkString(member->name);
1793 ListAdd(args, MkExpString(string));
1794 (__ecereNameSpace__ecere__com__eSystem_Delete(string), string = 0);
1797 char * string = QMkString(member->dataTypeString);
1799 ListAdd(args, MkExpString(string));
1800 (__ecereNameSpace__ecere__com__eSystem_Delete(string), string = 0);
1805 sprintf(string, "%d", member->dataType->size);
1806 ListAdd(args, (exp = MkExpConstant(string)));
1811 sprintf(string, "%d", member->dataType->alignment);
1812 ListAdd(args, (exp = MkExpConstant(string)));
1814 switch(member->memberAccess)
1817 ListAdd(args, MkExpIdentifier(MkIdentifier("staticAccess")));
1820 ListAdd(args, MkExpIdentifier(MkIdentifier("privateAccess")));
1824 ListAdd(args, MkExpIdentifier(MkIdentifier("publicAccess")));
1827 stmt = MkExpressionStmt(MkListOne(MkExpCall(MkExpIdentifier(MkIdentifier(isMember ? "eMember_AddDataMember" : "eClass_AddDataMember")), args)));
1828 ListAdd(statement->compound.statements, stmt);
1829 lastOffset = member->offset + member->dataType->size;
1833 static int memberCount = 0;
1834 struct Context * context;
1835 struct Statement * compound;
1836 char memberName[256];
1838 sprintf(memberName, "dataMember%d", memberCount);
1840 curContext = statement->compound.context;
1841 context = PushContext();
1842 args = MkListOne(MkExpIdentifier(MkIdentifier((member->type == 1) ? "unionMember" : "structMember")));
1843 switch(member->memberAccess)
1846 ListAdd(args, MkExpIdentifier(MkIdentifier("staticAccess")));
1849 ListAdd(args, MkExpIdentifier(MkIdentifier("privateAccess")));
1853 ListAdd(args, MkExpIdentifier(MkIdentifier("publicAccess")));
1856 compound = MkCompoundStmt(MkListOne(MkDeclaration(MkListOne(MkSpecifierName("DataMember")), MkListOne(MkInitDeclarator(MkDeclaratorIdentifier(MkIdentifier(memberName)), MkInitializerAssignment(MkExpCall(MkExpIdentifier(MkIdentifier("eMember_New")), args)))))), MkList());
1857 compound->compound.context = context;
1859 ListAdd(args, MkExpIdentifier(MkIdentifier(className)));
1860 ListAdd(args, MkExpIdentifier(MkIdentifier(memberName)));
1861 RegisterMembersAndProperties((struct __ecereNameSpace__ecere__com__Class *)member, 0x1, memberName, compound);
1863 stmt = MkExpressionStmt(MkListOne(MkExpCall(MkExpIdentifier(MkIdentifier("eMember_AddMember")), args)));
1865 stmt = MkExpressionStmt(MkListOne(MkExpCall(MkExpIdentifier(MkIdentifier("eClass_AddMember")), args)));
1866 ListAdd(compound->compound.statements, stmt);
1867 PopContext(context);
1868 ListAdd(statement->compound.statements, compound);
1870 lastOffset = member->offset + member->memberOffset;
1874 privateMembers = 0x1;
1878 struct __ecereNameSpace__ecere__com__ClassProperty * classProperty;
1880 for(prop = regClass->membersAndProperties.first; prop; prop = prop->next)
1882 if(prop->isProperty && prop->isWatchable)
1884 struct __ecereNameSpace__ecere__sys__OldList * args;
1885 char name[1024], nameM[1024];
1887 strcpy(name, "__ecereProp_");
1888 FullClassNameCat(name, regClass->fullName, 0x1);
1890 FullClassNameCat(name, prop->name, 0x0);
1891 MangleClassName(name);
1892 strcpy(nameM, "__ecerePropM_");
1893 FullClassNameCat(nameM, regClass->fullName, 0x1);
1895 FullClassNameCat(nameM, prop->name, 0x0);
1896 MangleClassName(nameM);
1897 args = MkListOne(MkExpCondition(MkExpIdentifier(MkIdentifier(nameM)), MkListOne(MkExpIdentifier(MkIdentifier(nameM))), MkExpIdentifier(MkIdentifier(name))));
1898 stmt = MkExpressionStmt(MkListOne(MkExpCall(MkExpIdentifier(MkIdentifier("eProperty_Watchable")), args)));
1899 ListAdd(registerModuleBody->compound.statements, stmt);
1902 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)))
1904 struct __ecereNameSpace__ecere__sys__OldList * args = MkList();
1906 char * string = QMkString(classProperty->name);
1908 ListAdd(args, MkExpIdentifier(MkIdentifier(className)));
1909 ListAdd(args, MkExpString(string));
1910 (__ecereNameSpace__ecere__com__eSystem_Delete(string), string = 0);
1912 char * string = QMkString(classProperty->dataTypeString);
1914 ListAdd(args, MkExpString(string));
1915 (__ecereNameSpace__ecere__com__eSystem_Delete(string), string = 0);
1917 if(classProperty->Set)
1919 strcpy(name, "__ecereClassProp_");
1920 FullClassNameCat(name, regClass->fullName, 0x1);
1921 strcat(name, "_Set_");
1922 strcat(name, classProperty->name);
1923 MangleClassName(name);
1924 ListAdd(args, MkExpIdentifier(MkIdentifier(name)));
1927 ListAdd(args, MkExpConstant("0"));
1928 if(classProperty->Get)
1930 strcpy(name, "__ecereClassProp_");
1931 FullClassNameCat(name, regClass->fullName, 0x1);
1932 strcat(name, "_Get_");
1933 strcat(name, classProperty->name);
1934 MangleClassName(name);
1935 ListAdd(args, MkExpIdentifier(MkIdentifier(name)));
1938 ListAdd(args, MkExpConstant("0"));
1939 stmt = MkExpressionStmt(MkListOne(MkExpCall(MkExpIdentifier(MkIdentifier("eClass_AddClassProperty")), args)));
1940 ListAdd(registerModuleBody->compound.statements, stmt);
1945 extern struct External * curExternal;
1947 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__NameSpace;
1949 struct __ecereNameSpace__ecere__com__NameSpace
1952 struct __ecereNameSpace__ecere__com__NameSpace * btParent;
1953 struct __ecereNameSpace__ecere__com__NameSpace * left;
1954 struct __ecereNameSpace__ecere__com__NameSpace * right;
1956 struct __ecereNameSpace__ecere__com__NameSpace * parent;
1957 struct __ecereNameSpace__ecere__sys__BinaryTree nameSpaces;
1958 struct __ecereNameSpace__ecere__sys__BinaryTree classes;
1959 struct __ecereNameSpace__ecere__sys__BinaryTree defines;
1960 struct __ecereNameSpace__ecere__sys__BinaryTree functions;
1961 } __attribute__ ((gcc_struct));
1963 void GetNameSpaceString(struct __ecereNameSpace__ecere__com__NameSpace * ns, char * string)
1966 GetNameSpaceString(ns->parent, string);
1969 strcat(string, ns->name);
1970 strcat(string, "::");
1974 extern unsigned int parsingType;
1976 extern void ProcessExpressionType(struct Expression * exp);
1978 extern void ComputeExpression(struct Expression * exp);
1980 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_OpTable;
1984 unsigned int (* Add)(struct Expression *, struct Operand *, struct Operand *);
1985 unsigned int (* Sub)(struct Expression *, struct Operand *, struct Operand *);
1986 unsigned int (* Mul)(struct Expression *, struct Operand *, struct Operand *);
1987 unsigned int (* Div)(struct Expression *, struct Operand *, struct Operand *);
1988 unsigned int (* Mod)(struct Expression *, struct Operand *, struct Operand *);
1989 unsigned int (* Neg)(struct Expression *, struct Operand *);
1990 unsigned int (* Inc)(struct Expression *, struct Operand *);
1991 unsigned int (* Dec)(struct Expression *, struct Operand *);
1992 unsigned int (* Asign)(struct Expression *, struct Operand *, struct Operand *);
1993 unsigned int (* AddAsign)(struct Expression *, struct Operand *, struct Operand *);
1994 unsigned int (* SubAsign)(struct Expression *, struct Operand *, struct Operand *);
1995 unsigned int (* MulAsign)(struct Expression *, struct Operand *, struct Operand *);
1996 unsigned int (* DivAsign)(struct Expression *, struct Operand *, struct Operand *);
1997 unsigned int (* ModAsign)(struct Expression *, struct Operand *, struct Operand *);
1998 unsigned int (* BitAnd)(struct Expression *, struct Operand *, struct Operand *);
1999 unsigned int (* BitOr)(struct Expression *, struct Operand *, struct Operand *);
2000 unsigned int (* BitXor)(struct Expression *, struct Operand *, struct Operand *);
2001 unsigned int (* LShift)(struct Expression *, struct Operand *, struct Operand *);
2002 unsigned int (* RShift)(struct Expression *, struct Operand *, struct Operand *);
2003 unsigned int (* BitNot)(struct Expression *, struct Operand *);
2004 unsigned int (* AndAsign)(struct Expression *, struct Operand *, struct Operand *);
2005 unsigned int (* OrAsign)(struct Expression *, struct Operand *, struct Operand *);
2006 unsigned int (* XorAsign)(struct Expression *, struct Operand *, struct Operand *);
2007 unsigned int (* LShiftAsign)(struct Expression *, struct Operand *, struct Operand *);
2008 unsigned int (* RShiftAsign)(struct Expression *, struct Operand *, struct Operand *);
2009 unsigned int (* Not)(struct Expression *, struct Operand *);
2010 unsigned int (* Equ)(struct Expression *, struct Operand *, struct Operand *);
2011 unsigned int (* Nqu)(struct Expression *, struct Operand *, struct Operand *);
2012 unsigned int (* And)(struct Expression *, struct Operand *, struct Operand *);
2013 unsigned int (* Or)(struct Expression *, struct Operand *, struct Operand *);
2014 unsigned int (* Grt)(struct Expression *, struct Operand *, struct Operand *);
2015 unsigned int (* Sma)(struct Expression *, struct Operand *, struct Operand *);
2016 unsigned int (* GrtEqu)(struct Expression *, struct Operand *, struct Operand *);
2017 unsigned int (* SmaEqu)(struct Expression *, struct Operand *, struct Operand *);
2018 unsigned int (* Cond)(struct Expression *, struct Operand *, struct Operand *, struct Operand *);
2019 } __attribute__ ((gcc_struct));
2021 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Operand;
2027 unsigned int ptrSize;
2040 } __attribute__ ((gcc_struct));
2042 } __attribute__ ((gcc_struct));
2044 extern struct Operand GetOperand(struct Expression * exp);
2046 extern void __ecereNameSpace__ecere__com__eEnum_AddFixedValue(struct __ecereNameSpace__ecere__com__Class * _class, char * string, int value);
2048 extern int __ecereNameSpace__ecere__com__eEnum_AddValue(struct __ecereNameSpace__ecere__com__Class * _class, char * string);
2050 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__sys__OldLink;
2052 struct __ecereNameSpace__ecere__sys__OldLink
2054 struct __ecereNameSpace__ecere__sys__OldLink * prev;
2055 struct __ecereNameSpace__ecere__sys__OldLink * next;
2057 } __attribute__ ((gcc_struct));
2059 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__EnumClassData;
2061 struct __ecereNameSpace__ecere__com__EnumClassData
2063 struct __ecereNameSpace__ecere__sys__OldList values;
2065 } __attribute__ ((gcc_struct));
2067 extern struct ClassFunction * MkClassFunction(struct __ecereNameSpace__ecere__sys__OldList * specifiers, struct Specifier * _class, struct Declarator * decl, struct __ecereNameSpace__ecere__sys__OldList * declList);
2069 extern void ProcessClassFunctionBody(struct ClassFunction * func, struct Statement * body);
2071 extern struct External * MkExternalDeclaration(struct Declaration * declaration);
2073 extern struct ClassDef * MkClassDefFunction(struct ClassFunction * function);
2075 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);
2077 extern struct __ecereNameSpace__ecere__com__Instance * privateModule;
2079 extern void FreePropertyWatch(struct PropertyWatch * watcher);
2081 extern char * sourceFile;
2083 extern void __ecereNameSpace__ecere__sys__ChangeCh(char * string, char ch1, char ch2);
2085 extern struct Type * ProcessType(struct __ecereNameSpace__ecere__sys__OldList * specs, struct Declarator * decl);
2087 extern void PrintType(struct Type * type, char * string, unsigned int printName, unsigned int fullName);
2089 extern struct Expression * MkExpTypeSize(struct TypeName * typeName);
2091 extern struct Specifier * MkStructOrUnion(int type, struct Identifier * id, struct __ecereNameSpace__ecere__sys__OldList * definitions);
2093 extern unsigned int DummyMethod(void);
2095 extern void DeclareMethod(struct __ecereNameSpace__ecere__com__Method * method, char * name);
2097 extern struct __ecereNameSpace__ecere__com__Class * __ecereNameSpace__ecere__com__eSystem_FindClass(struct __ecereNameSpace__ecere__com__Instance * module, char * name);
2099 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__sys__NamedLink;
2101 struct __ecereNameSpace__ecere__sys__NamedLink
2103 struct __ecereNameSpace__ecere__sys__NamedLink * prev;
2104 struct __ecereNameSpace__ecere__sys__NamedLink * next;
2107 } __attribute__ ((gcc_struct));
2109 extern char * StringFromSpecDecl(struct __ecereNameSpace__ecere__sys__OldList * specs, struct Declarator * decl);
2111 extern size_t strlen(const char * );
2113 extern struct MemberInit * MkMemberInit(struct __ecereNameSpace__ecere__sys__OldList * ids, struct Initializer * initializer);
2115 extern char * PrintUInt64(uint64 result);
2117 extern struct Expression * MkExpInstance(struct Instantiation * inst);
2119 extern struct Instantiation * MkInstantiation(struct Specifier * _class, struct Expression * exp, struct __ecereNameSpace__ecere__sys__OldList * members);
2121 extern struct MembersInit * MkMembersInitList(struct __ecereNameSpace__ecere__sys__OldList * dataMembers);
2123 int __ecereVMethodID_class_OnGetString;
2125 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__TemplateMemberType;
2127 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)
2129 struct ClassDef * def;
2130 struct __ecereNameSpace__ecere__com__Class * regClass = symbol->registered;
2134 classType = regClass->type;
2135 if(classType == 4 && enumValues && (inCompiler || !buildingECERECOMModule))
2137 struct Enumerator * e;
2139 for(e = enumValues->first; e; e = e->next)
2143 struct Type * destType = (destType = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Type), destType->kind = 3, destType->refCount = 1, destType);
2145 e->exp->destType = destType;
2147 ProcessExpressionType(e->exp);
2149 if(!e->exp->expType)
2152 destType->_class = symbol;
2153 ProcessExpressionType(e->exp);
2155 ComputeExpression(e->exp);
2156 if(e->exp->isConstant && e->exp->type == 2)
2158 struct Operand op = GetOperand(e->exp);
2172 __ecereNameSpace__ecere__com__eEnum_AddFixedValue(regClass, e->id->string, value);
2175 __ecereNameSpace__ecere__com__eEnum_AddValue(regClass, e->id->string);
2178 __ecereNameSpace__ecere__com__eEnum_AddValue(regClass, e->id->string);
2181 struct __ecereNameSpace__ecere__com__EnumClassData * baseData = regClass->data;
2182 struct __ecereNameSpace__ecere__sys__OldLink * deriv;
2184 for(deriv = regClass->derivatives.first; deriv; deriv = deriv->next)
2186 struct __ecereNameSpace__ecere__com__Class * c = deriv->data;
2188 if(c && c->type == 4)
2190 struct __ecereNameSpace__ecere__com__EnumClassData * data = c->data;
2192 data->largest = baseData->largest;
2197 if(definitions != (((void *)0)))
2201 for(def = definitions->first; def; def = def->next)
2203 if(def->type == 4 && def->propertyWatch)
2205 struct PropertyWatch * propWatch = def->propertyWatch;
2206 struct ClassFunction * func;
2207 char watcherName[1024];
2208 struct Identifier * propID;
2209 struct Statement * stmt = MkExpressionStmt(MkList());
2210 struct Declarator * decl;
2212 sprintf(watcherName, "__ecerePropertySelfWatcher_%d", propWatcherID++);
2213 for(propID = (*propWatch->properties).first; propID; propID = propID->next)
2215 strcat(watcherName, "_");
2216 strcat(watcherName, propID->string);
2218 decl = MkDeclaratorFunction(MkDeclaratorIdentifier(MkIdentifier(watcherName)), MkListOne(MkTypeName(MkListOne(MkSpecifier(VOID)), (((void *)0)))));
2219 func = MkClassFunction(MkListOne(MkSpecifier(VOID)), (((void *)0)), decl, (((void *)0)));
2220 ProcessClassFunctionBody(func, propWatch->compound);
2221 decl->symbol = __extension__ ({
2222 struct Symbol * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Symbol);
2224 __ecereInstance1->id = symbol->id, __ecereInstance1->idCode = symbol->idCode, __ecereInstance1;
2226 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*excludedSymbols), decl->symbol);
2227 func->id = symbol->id;
2228 func->idCode = symbol->idCode;
2229 func->dontMangle = 0x1;
2231 struct External * externalDecl = MkExternalDeclaration((((void *)0)));
2232 struct Declaration * decl;
2233 struct __ecereNameSpace__ecere__sys__OldList * specifiers = MkList();
2235 ListAdd(specifiers, MkSpecifier(STATIC));
2236 ListAdd(specifiers, MkSpecifier(VOID));
2237 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Insert((&*ast), curExternal->prev, externalDecl);
2238 decl = MkDeclaration(specifiers, MkListOne(MkInitDeclarator(MkDeclaratorFunction(MkDeclaratorIdentifier(MkIdentifier(watcherName)), MkListOne(MkTypeName(MkListOne(MkSpecifierName(regClass->fullName)), (((void *)0))))), (((void *)0)))));
2239 externalDecl->declaration = decl;
2240 if(decl->symbol && !decl->symbol->methodExternal)
2242 decl->symbol->methodExternal = externalDecl;
2243 decl->symbol->id = symbol->id;
2244 decl->symbol->idCode = symbol->idCode;
2247 propWatch->compound = (((void *)0));
2248 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Insert(definitions, (((void *)0)), MkClassDefFunction(func));
2250 stmt->expressions = MkList();
2251 for(propID = (*propWatch->properties).first; propID; propID = propID->next)
2253 struct __ecereNameSpace__ecere__com__Property * prop = __ecereNameSpace__ecere__com__eClass_FindProperty(regClass, propID->string, privateModule);
2257 struct __ecereNameSpace__ecere__sys__OldList * args = MkList();
2259 ListAdd(args, MkExpIdentifier(MkIdentifier("class")));
2260 ListAdd(args, MkExpString(QMkString(propID->string)));
2261 ListAdd(args, MkExpIdentifier(MkIdentifier(watcherName)));
2262 ListAdd(stmt->expressions, MkExpCall(MkExpIdentifier(MkIdentifier("eProperty_SelfWatch")), args));
2265 Compiler_Error(__ecereNameSpace__ecere__GetTranslatedString(__thisModule, "Property %s not found in class %s\n", (((void *)0))), propID->string, regClass->fullName);
2267 FreePropertyWatch(def->propertyWatch);
2268 def->propertyWatch = (struct PropertyWatch *)stmt;
2272 for(def = definitions->first; def; def = def->next)
2276 ProcessClassFunction(regClass, def->function, defs, external->prev, declMode == 3);
2280 if(inCompiler && symbol->id != (((int)0x7fffffff)) && regClass)
2282 struct Statement * stmt;
2283 struct __ecereNameSpace__ecere__sys__OldList * args = MkList();
2284 struct __ecereNameSpace__ecere__com__Method * method;
2285 struct Expression * exp;
2286 char * registerFunction = (((void *)0));
2287 int inheritanceAccess = 1;
2289 CreateRegisterModuleBody();
2290 curExternal = registerModuleExternal;
2291 switch(regClass->type)
2294 ListAdd(args, MkExpIdentifier(MkIdentifier("structClass")));
2297 ListAdd(args, MkExpIdentifier(MkIdentifier("bitClass")));
2300 ListAdd(args, MkExpIdentifier(MkIdentifier("enumClass")));
2303 ListAdd(args, MkExpIdentifier(MkIdentifier("noHeadClass")));
2306 ListAdd(args, MkExpIdentifier(MkIdentifier("unitClass")));
2309 ListAdd(args, MkExpIdentifier(MkIdentifier("normalClass")));
2313 char nameSpace[1024] = "";
2314 char className[1024] = "";
2317 GetNameSpaceString(regClass->nameSpace, nameSpace);
2320 __ecereNameSpace__ecere__sys__GetLastDirectory(sourceFile, className);
2321 __ecereNameSpace__ecere__sys__ChangeCh(className, '.', '_');
2322 strcat(className, "}");
2324 strcat(className, nameSpace);
2325 strcat(className, regClass->name);
2326 string = QMkString(className);
2327 ListAdd(args, MkExpString(string));
2328 (__ecereNameSpace__ecere__com__eSystem_Delete(string), string = 0);
2330 if(baseSpecs != (((void *)0)))
2332 struct Type * baseType = ProcessType(baseSpecs, (((void *)0)));
2334 if(baseType->kind != 9 && baseType->kind != 10)
2336 char baseName[1024] = "";
2339 if(baseType->kind == 8 && baseType->_class && baseType->_class->isStatic)
2341 __ecereNameSpace__ecere__sys__GetLastDirectory(sourceFile, baseName);
2342 __ecereNameSpace__ecere__sys__ChangeCh(baseName, '.', '_');
2343 strcat(baseName, "}");
2344 strcat(baseName, baseType->_class->string);
2347 PrintType(baseType, baseName, 0x0, 0x1);
2348 string = QMkString(baseName);
2349 ListAdd(args, MkExpString(string));
2350 (__ecereNameSpace__ecere__com__eSystem_Delete(string), string = 0);
2353 ListAdd(args, MkExpConstant("0"));
2355 if(((struct Specifier *)baseSpecs->first)->type == 0 && ((struct Specifier *)baseSpecs->first)->specifier == PRIVATE)
2356 inheritanceAccess = 2;
2359 ListAdd(args, MkExpConstant("0"));
2360 if(regClass->type == 1 || regClass->type == 0 || regClass->type == 5)
2362 struct __ecereNameSpace__ecere__com__DataMember * member = (((void *)0));
2365 struct __ecereNameSpace__ecere__com__Class * base;
2367 for(base = regClass->base; base && base->type != 1000; base = base->next)
2369 for(member = base->membersAndProperties.first; member; member = member->next)
2370 if(!member->isProperty)
2376 if(regClass->type == 1 && symbol->declaredStruct && member)
2378 char baseStructName[1024];
2380 baseStructName[0] = (char)0;
2381 strcpy(baseStructName, (regClass->base->templateClass ? regClass->base->templateClass : regClass->base)->fullName);
2382 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))))));
2385 ListAdd(args, symbol->declaredStruct ? MkExpTypeSize(MkTypeName(MkListOne(MkStructOrUnion(3, MkIdentifier(symbol->structName), (((void *)0)))), (((void *)0)))) : MkExpConstant("0"));
2389 ListAdd(args, MkExpConstant("0"));
2392 char classDataStructName[1024];
2394 strcpy(classDataStructName, "__ecereClassData_");
2395 FullClassNameCat(classDataStructName, symbol->string, 0x0);
2396 ListAdd(args, symbol->classData ? MkExpTypeSize(MkTypeName(MkListOne(MkStructOrUnion(3, MkIdentifier(classDataStructName), (((void *)0)))), (((void *)0)))) : MkExpConstant("0"));
2398 if(regClass->type == 0 || regClass->type == 5)
2400 ListAdd(args, symbol->needConstructor ? MkExpIdentifier(MkIdentifier(symbol->constructorName)) : MkExpConstant("0"));
2401 ListAdd(args, symbol->needDestructor ? MkExpIdentifier(MkIdentifier(symbol->destructorName)) : MkExpConstant("0"));
2405 ListAdd(args, MkExpConstant("0"));
2406 ListAdd(args, MkExpConstant("0"));
2408 ListAdd(args, MkExpIdentifier(MkIdentifier("module")));
2412 ListAdd(args, MkExpIdentifier(MkIdentifier("staticAccess")));
2415 ListAdd(args, MkExpIdentifier(MkIdentifier("privateAccess")));
2419 ListAdd(args, MkExpIdentifier(MkIdentifier(buildingECERECOMModule ? "baseSystemAccess" : "publicAccess")));
2422 switch(inheritanceAccess)
2425 ListAdd(args, MkExpIdentifier(MkIdentifier("privateAccess")));
2429 ListAdd(args, MkExpIdentifier(MkIdentifier("publicAccess")));
2432 registerFunction = "eSystem_RegisterClass";
2433 stmt = MkExpressionStmt(MkListOne(MkExpOp(MkExpIdentifier(MkIdentifier("class")), '=', MkExpCall((exp = MkExpIdentifier(MkIdentifier(registerFunction))), args))));
2434 ListAdd(registerModuleBody->compound.statements, stmt);
2435 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)));
2436 ListAdd(registerModuleBody->compound.statements, stmt);
2437 if(external && external->type == 2 && external->_class->deleteWatchable)
2439 args = MkListOne(MkExpIdentifier(MkIdentifier("class")));
2440 stmt = MkExpressionStmt(MkListOne(MkExpCall(MkExpIdentifier(MkIdentifier("eClass_DestructionWatchable")), args)));
2441 ListAdd(registerModuleBody->compound.statements, stmt);
2445 struct __ecereNameSpace__ecere__com__Class * base = regClass->base;
2448 for(c = 0; c < base->vTblSize; c++)
2450 struct Symbol * method = (struct Symbol *)regClass->_vTbl[c];
2452 if((void *)method != DummyMethod && base->_vTbl[c] != (void *)method && method->methodExternal)
2454 struct External * external = method->methodExternal;
2455 struct __ecereNameSpace__ecere__sys__OldList * args = MkList();
2456 struct Identifier * id = external->function ? GetDeclId(external->function->declarator) : (((void *)0));
2458 ListAdd(args, MkExpIdentifier(MkIdentifier("class")));
2460 char * string = QMkString(method->method->name);
2462 ListAdd(args, MkExpString(string));
2463 (__ecereNameSpace__ecere__com__eSystem_Delete(string), string = 0);
2465 ListAdd(args, MkExpConstant("0"));
2466 ListAdd(args, (exp = MkExpIdentifier(MkIdentifier(id->string))));
2467 ListAdd(args, MkExpIdentifier(MkIdentifier("publicAccess")));
2468 exp->expType = __extension__ ({
2469 struct Type * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Type);
2471 __ecereInstance1->refCount = 1, __ecereInstance1;
2473 stmt = MkExpressionStmt(MkListOne(MkExpCall(MkExpIdentifier(MkIdentifier("eClass_AddMethod")), args)));
2474 ListAdd(registerModuleBody->compound.statements, stmt);
2481 for(c = regClass->base ? regClass->base->vTblSize : 0; c < regClass->vTblSize; c++)
2483 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)))
2485 if(method->type == 1 && method->_class == regClass && method->vid == c)
2488 struct Expression * exp;
2489 struct External * external = method->symbol ? ((struct Symbol *)method->symbol)->methodCodeExternal : (((void *)0));
2490 struct __ecereNameSpace__ecere__sys__OldList * args = MkList();
2491 struct Identifier * id = (external && external->function) ? GetDeclId(external->function->declarator) : (((void *)0));
2493 ListAdd(args, MkExpIdentifier(MkIdentifier("class")));
2495 char * string = QMkString(method->name);
2497 ListAdd(args, MkExpString(string));
2498 (__ecereNameSpace__ecere__com__eSystem_Delete(string), string = 0);
2501 char * string = QMkString(method->dataTypeString);
2503 ListAdd(args, MkExpString(string));
2504 (__ecereNameSpace__ecere__com__eSystem_Delete(string), string = 0);
2506 if(id && external->function->body)
2508 ListAdd(args, (exp = MkExpIdentifier(MkIdentifier(id->string))));
2509 exp->expType = __extension__ ({
2510 struct Type * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Type);
2512 __ecereInstance1->refCount = 1, __ecereInstance1;
2517 ListAdd(args, (exp = MkExpConstant("0")));
2519 switch(method->memberAccess)
2522 ListAdd(args, MkExpIdentifier(MkIdentifier("staticAccess")));
2525 ListAdd(args, MkExpIdentifier(MkIdentifier("privateAccess")));
2529 ListAdd(args, MkExpIdentifier(MkIdentifier("publicAccess")));
2532 strcpy(name, "__ecereVMethodID_");
2533 FullClassNameCat(name, method->_class->fullName, 0x0);
2535 strcat(name, method->name);
2536 exp = MkExpCall(MkExpIdentifier(MkIdentifier("eClass_AddVirtualMethod")), args);
2537 stmt = MkExpressionStmt(MkListOne(exp));
2538 DeclareMethod(method, name);
2539 ListAdd(registerModuleBody->compound.statements, stmt);
2544 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)))
2546 if(method->type == 1 && method->_class == regClass)
2548 else if(method->memberAccess == 1 || !method->dataTypeString)
2550 struct External * external = method->symbol ? ((struct Symbol *)method->symbol)->methodCodeExternal : (((void *)0));
2551 struct __ecereNameSpace__ecere__sys__OldList * args = MkList();
2552 struct Identifier * id = (external && external->function) ? GetDeclId(external->function->declarator) : (((void *)0));
2554 ListAdd(args, MkExpIdentifier(MkIdentifier("class")));
2556 char * string = QMkString(method->name);
2558 ListAdd(args, MkExpString(string));
2559 (__ecereNameSpace__ecere__com__eSystem_Delete(string), string = 0);
2562 char * string = QMkString(method->dataTypeString);
2564 ListAdd(args, MkExpString(string));
2565 (__ecereNameSpace__ecere__com__eSystem_Delete(string), string = 0);
2567 if(id && external->function->body)
2569 ListAdd(args, (exp = MkExpIdentifier(MkIdentifier(id->string))));
2570 exp->expType = __extension__ ({
2571 struct Type * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Type);
2573 __ecereInstance1->refCount = 1, __ecereInstance1;
2578 ListAdd(args, (exp = MkExpConstant("0")));
2580 switch(method->memberAccess)
2583 ListAdd(args, MkExpIdentifier(MkIdentifier("staticAccess")));
2586 ListAdd(args, MkExpIdentifier(MkIdentifier("privateAccess")));
2590 ListAdd(args, MkExpIdentifier(MkIdentifier("publicAccess")));
2593 stmt = MkExpressionStmt(MkListOne(MkExpCall(MkExpIdentifier(MkIdentifier("eClass_AddMethod")), args)));
2594 ListAdd(registerModuleBody->compound.statements, stmt);
2597 RegisterMembersAndProperties(regClass, 0x0, "class", registerModuleBody);
2600 struct __ecereNameSpace__ecere__sys__NamedLink * value;
2601 struct __ecereNameSpace__ecere__com__Class * enumClass = __ecereNameSpace__ecere__com__eSystem_FindClass(privateModule, "enum");
2602 struct __ecereNameSpace__ecere__com__EnumClassData * e = (regClass ? ((void *)(((char *)regClass->data) + enumClass->offsetClass)) : (((void *)0)));
2604 for(value = e->values.first; value; value = value->next)
2606 struct __ecereNameSpace__ecere__sys__OldList * args = MkList();
2608 ListAdd(args, MkExpIdentifier(MkIdentifier("class")));
2610 char * string = QMkString(value->name);
2612 ListAdd(args, MkExpString(string));
2613 (__ecereNameSpace__ecere__com__eSystem_Delete(string), string = 0);
2618 sprintf(temp, "%d", (int)value->data);
2619 ListAdd(args, MkExpConstant(temp));
2621 stmt = MkExpressionStmt(MkListOne(MkExpCall(MkExpIdentifier(MkIdentifier("eEnum_AddFixedValue")), args)));
2622 ListAdd(registerModuleBody->compound.statements, stmt);
2625 if(symbol->templateParams)
2627 struct TemplateParameter * param;
2629 for(param = (*symbol->templateParams).first; param; param = param->next)
2631 struct __ecereNameSpace__ecere__sys__OldList * args = MkList();
2633 ListAdd(args, MkExpIdentifier(MkIdentifier("class")));
2635 char * string = QMkString(param->identifier->string);
2637 ListAdd(args, MkExpString(string));
2638 (__ecereNameSpace__ecere__com__eSystem_Delete(string), string = 0);
2640 ListAdd(args, MkExpIdentifier(MkIdentifier((param->type == 0) ? "type" : ((param->type == 1) ? "identifier" : "expression"))));
2646 char * typeString = param->dataType ? StringFromSpecDecl(param->dataType->specifiers, param->dataType->decl) : (((void *)0));
2647 char * string = QMkString(typeString);
2649 ListAdd(args, MkExpString(string));
2650 (__ecereNameSpace__ecere__com__eSystem_Delete(typeString), typeString = 0);
2651 (__ecereNameSpace__ecere__com__eSystem_Delete(string), string = 0);
2656 char memberTypeString[132] = "TemplateMemberType::";
2657 unsigned int needClass = 0x1;
2659 ((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);
2660 ListAdd(args, MkExpCast(MkTypeName(MkListOne(MkSpecifier(VOID)), MkDeclaratorPointer(MkPointer((((void *)0)), (((void *)0))), (((void *)0)))), MkExpIdentifier(MkIdentifier(memberTypeString))));
2664 if(param->defaultArgument)
2666 struct __ecereNameSpace__ecere__sys__OldList * members = MkList();
2672 char * typeString = param->defaultArgument->templateDatatype ? StringFromSpecDecl(param->defaultArgument->templateDatatype->specifiers, param->defaultArgument->templateDatatype->decl) : (((void *)0));
2673 char * string = QMkString(typeString);
2675 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*members), MkMemberInit(MkListOne(MkIdentifier("dataTypeString")), MkInitializerAssignment(MkExpString(string))));
2676 (__ecereNameSpace__ecere__com__eSystem_Delete(typeString), typeString = 0);
2677 (__ecereNameSpace__ecere__com__eSystem_Delete(string), string = 0);
2682 char memberString[1024];
2685 memberString[0] = '\0';
2686 if(param->defaultArgument->identifier->_class)
2688 if(param->defaultArgument->identifier->_class->type == 8)
2689 strcpy(memberString, param->defaultArgument->identifier->_class->templateParameter->identifier->string);
2690 else if(param->defaultArgument->identifier->_class->name)
2691 strcpy(memberString, param->defaultArgument->identifier->_class->name);
2694 strcat(memberString, "::");
2695 strcat(memberString, param->defaultArgument->identifier->string);
2696 string = QMkString(memberString);
2697 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*members), MkMemberInit(MkListOne(MkIdentifier("dataTypeString")), MkInitializerAssignment(MkExpString(string))));
2698 (__ecereNameSpace__ecere__com__eSystem_Delete(string), string = 0);
2707 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
2710 struct __ecereNameSpace__ecere__sys__OldList * ids = MkList();
2712 char * string = (((void *)0));
2714 op = GetOperand(param->defaultArgument->expression);
2715 ui64String = PrintUInt64(op.ui64);
2716 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*ids), MkIdentifier("expression"));
2717 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*ids), MkIdentifier("ui64"));
2718 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*members), MkMemberInit(ids, MkInitializerAssignment(MkExpConstant(ui64String))));
2719 (__ecereNameSpace__ecere__com__eSystem_Delete(string), string = 0);
2720 (__ecereNameSpace__ecere__com__eSystem_Delete(ui64String), ui64String = 0);
2724 ListAdd(args, MkExpInstance(MkInstantiation(MkSpecifierName("ClassTemplateArgument"), (((void *)0)), MkListOne(MkMembersInitList(members)))));
2727 ListAdd(args, MkExpIdentifier(MkIdentifier("null")));
2728 stmt = MkExpressionStmt(MkListOne(MkExpCall(MkExpIdentifier(MkIdentifier("eClass_AddTemplateParameter")), args)));
2729 ListAdd(registerModuleBody->compound.statements, stmt);
2731 stmt = MkExpressionStmt(MkListOne(MkExpCall(MkExpIdentifier(MkIdentifier("eClass_DoneAddingTemplateParameters")), MkListOne(MkExpIdentifier(MkIdentifier("class"))))));
2732 ListAdd(registerModuleBody->compound.statements, stmt);
2734 if(definitions != (((void *)0)))
2736 for(def = definitions->first; def; def = def->next)
2738 if(def->type == 4 && def->propertyWatch)
2740 ListAdd(registerModuleBody->compound.statements, (struct Statement *)def->propertyWatch);
2741 def->propertyWatch = (((void *)0));
2743 else if(def->type == 5)
2745 stmt = MkIfStmt(MkListOne(MkExpIdentifier(MkIdentifier("class"))), MkExpressionStmt(MkListOne(MkExpOp(MkExpMember(MkExpIdentifier(MkIdentifier("class")), MkIdentifier("designerClass")), '=', MkExpString(QMkString(def->designer))))), (((void *)0)));
2746 ListAdd(registerModuleBody->compound.statements, stmt);
2748 else if(def->type == 6)
2750 stmt = MkIfStmt(MkListOne(MkExpIdentifier(MkIdentifier("class"))), MkExpressionStmt(MkListOne(MkExpOp(MkExpMember(MkExpIdentifier(MkIdentifier("class")), MkIdentifier("noExpansion")), '=', MkExpConstant("1")))), (((void *)0)));
2751 ListAdd(registerModuleBody->compound.statements, stmt);
2753 else if(def->type == 7)
2755 stmt = MkIfStmt(MkListOne(MkExpIdentifier(MkIdentifier("class"))), MkExpressionStmt(MkListOne(MkExpOp(MkExpMember(MkExpIdentifier(MkIdentifier("class")), MkIdentifier("fixed")), '=', MkExpConstant("1")))), (((void *)0)));
2756 ListAdd(registerModuleBody->compound.statements, stmt);
2758 regClass->fixed = 0x1;
2760 else if(def->type == 8)
2762 stmt = MkIfStmt(MkListOne(MkExpIdentifier(MkIdentifier("class"))), MkExpressionStmt(MkListOne(MkExpOp(MkExpMember(MkExpIdentifier(MkIdentifier("class")), MkIdentifier("defaultProperty")), '=', MkExpString(QMkString(def->defaultProperty->string))))), (((void *)0)));
2763 ListAdd(registerModuleBody->compound.statements, stmt);
2765 else if(def->type == 11)
2767 struct __ecereNameSpace__ecere__sys__OldList * args = MkList();
2769 ListAdd(args, MkExpIdentifier(MkIdentifier("class")));
2770 ListAdd(args, MkExpString(QMkString(def->id->string)));
2771 ListAdd(args, MkExpCast(MkTypeName(MkListOne(MkSpecifier(INT64)), (((void *)0))), def->initializer->exp));
2772 def->initializer->exp = (((void *)0));
2773 stmt = MkExpressionStmt(MkListOne(MkExpCall(MkExpIdentifier(MkIdentifier("ecere::com::eClass_SetProperty")), args)));
2774 ListAdd(registerModuleBody->compound.statements, stmt);
2782 extern int strcmp(const char * , const char * );
2784 extern void PrintExpression(struct Expression * exp, char * string);
2786 void __ecereMethod___ecereNameSpace__ecere__sys__OldList_Remove(struct __ecereNameSpace__ecere__sys__OldList * this, void * item);
2788 void ProcessClassDefinitions()
2790 struct External * external, * next;
2792 CreateRegisterModuleBody();
2795 for(external = (*ast).first; external; external = next)
2797 next = external->next;
2798 curExternal = external;
2799 if(external->type == 2)
2801 struct ClassDefinition * _class = external->_class;
2803 if(_class->definitions)
2805 ProcessClass(0, _class->definitions, _class->symbol, _class->baseSpecs, (((void *)0)), ast, external, _class->declMode);
2809 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Remove((&*ast), external);
2810 FreeExternal(external);
2813 else if(external->type == 0)
2815 unsigned int setStaticMethod = 0x0;
2817 if(external->symbol && !external->symbol->type->thisClass && !external->symbol->type->staticMethod)
2819 external->symbol->type->staticMethod = 0x1;
2820 setStaticMethod = 0x1;
2824 struct FunctionDefinition * function = external->function;
2825 struct Statement * stmt;
2826 struct __ecereNameSpace__ecere__sys__OldList * args;
2828 if(!strcmp(function->declarator->symbol->string, "__on_register_module"))
2830 ListAdd(registerModuleBody->compound.statements, function->body);
2831 function->body->compound.context->parent = registerModuleBody->compound.context;
2832 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Remove((&*ast), external);
2833 function->body = (((void *)0));
2834 FreeExternal(external);
2837 if(function->declMode != 2 && function->declMode != 1)
2840 CreateRegisterModuleBody();
2842 char * string = QMkString(function->declarator->symbol->string);
2844 ListAdd(args, MkExpString(string));
2845 (__ecereNameSpace__ecere__com__eSystem_Delete(string), string = 0);
2849 char type[1024] = "";
2852 function->declarator->symbol->type->staticMethod = 0x0;
2853 PrintType(function->declarator->symbol->type, type, 0x1, 0x1);
2855 function->declarator->symbol->type->staticMethod = 0x1;
2856 string = QMkString(type);
2857 ListAdd(args, MkExpString(string));
2858 (__ecereNameSpace__ecere__com__eSystem_Delete(string), string = 0);
2861 ListAdd(args, MkExpIdentifier(MkIdentifier(function->declarator->symbol->string)));
2863 ListAdd(args, MkExpIdentifier(MkIdentifier("module")));
2864 switch(function->declMode)
2867 ListAdd(args, MkExpIdentifier(MkIdentifier("staticAccess")));
2870 ListAdd(args, MkExpIdentifier(MkIdentifier("privateAccess")));
2874 ListAdd(args, MkExpIdentifier(MkIdentifier(buildingECERECOMModule ? "baseSystemAccess" : "publicAccess")));
2877 stmt = MkExpressionStmt(MkListOne(MkExpCall((MkExpIdentifier(MkIdentifier("eSystem_RegisterFunction"))), args)));
2878 ListAdd(registerModuleBody->compound.statements, stmt);
2881 else if(external->type == 1)
2883 struct Declaration * declaration = external->declaration;
2885 if(external->symbol)
2887 if(external->symbol->type && external->symbol->type->kind == 11 && !external->symbol->type->thisClass)
2888 external->symbol->type->staticMethod = 0x1;
2890 if(external->symbol && declaration->type == 1)
2892 if(declaration->specifiers)
2894 struct Specifier * specifier;
2895 unsigned int removeExternal = 0x0;
2897 for(specifier = (*declaration->specifiers).first; specifier; specifier = specifier->next)
2899 if((specifier->type == 2 || specifier->type == 3 || specifier->type == 4) && specifier->id && specifier->id->string && (declaration->declMode || specifier->baseSpecs || (specifier->type == 2 && specifier->definitions)))
2901 struct Symbol * symbol = FindClass(specifier->id->string);
2907 if(specifier->type == 2)
2911 removeExternal = 0x1;
2912 symbol->ctx = specifier->ctx;
2913 specifier->ctx = (((void *)0));
2914 ProcessClass(classType, specifier->definitions, symbol, specifier->baseSpecs, specifier->list, ast, external, declaration->declMode);
2918 if(inCompiler && removeExternal)
2920 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Remove((&*ast), external);
2921 FreeExternal(external);
2925 else if(declaration->type == 3)
2927 if(inCompiler && declaration->declMode != 3)
2929 struct Statement * stmt;
2930 struct __ecereNameSpace__ecere__sys__OldList * args = MkList();
2932 CreateRegisterModuleBody();
2934 char * string = QMkString(declaration->id->string);
2936 ListAdd(args, MkExpString(string));
2937 (__ecereNameSpace__ecere__com__eSystem_Delete(string), string = 0);
2941 char type[1024] = "";
2943 PrintExpression(declaration->exp, type);
2944 string = QMkString(type);
2945 ListAdd(args, MkExpString(string));
2946 (__ecereNameSpace__ecere__com__eSystem_Delete(string), string = 0);
2948 ListAdd(args, MkExpIdentifier(MkIdentifier("module")));
2949 switch(declaration->declMode)
2952 ListAdd(args, MkExpIdentifier(MkIdentifier("staticAccess")));
2955 ListAdd(args, MkExpIdentifier(MkIdentifier("privateAccess")));
2959 ListAdd(args, MkExpIdentifier(MkIdentifier(buildingECERECOMModule ? "baseSystemAccess" : "publicAccess")));
2962 stmt = MkExpressionStmt(MkListOne(MkExpCall((MkExpIdentifier(MkIdentifier("eSystem_RegisterDefine"))), args)));
2963 ListAdd(registerModuleBody->compound.statements, stmt);
2971 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__GlobalFunction;
2973 struct __ecereNameSpace__ecere__com__GlobalFunction;
2975 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);
2977 void __ecereRegisterModule_pass1(struct __ecereNameSpace__ecere__com__Instance * module)
2979 struct __ecereNameSpace__ecere__com__Class * class;
2981 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("SetBuildingEcereCom", "void SetBuildingEcereCom(bool b)", SetBuildingEcereCom, module, 1);
2982 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("GetBuildingEcereCom", "bool GetBuildingEcereCom(void)", GetBuildingEcereCom, module, 1);
2983 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("SetBuildingEcereComModule", "void SetBuildingEcereComModule(bool b)", SetBuildingEcereComModule, module, 1);
2984 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("GetBuildingEcereComModule", "bool GetBuildingEcereComModule(void)", GetBuildingEcereComModule, module, 1);
2985 __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);
2986 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("CreateRegisterModuleBody", "void CreateRegisterModuleBody(void)", CreateRegisterModuleBody, module, 2);
2987 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("RegisterMembersAndProperties", "void RegisterMembersAndProperties(ecere::com::Class regClass, bool isMember, char * className, Statement statement)", RegisterMembersAndProperties, module, 2);
2988 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("GetNameSpaceString", "void GetNameSpaceString(ecere::com::NameSpace ns, char * string)", GetNameSpaceString, module, 2);
2989 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ProcessClassDefinitions", "void ProcessClassDefinitions(void)", ProcessClassDefinitions, module, 1);
2992 void __ecereUnregisterModule_pass1(struct __ecereNameSpace__ecere__com__Instance * module)