2 typedef long long int64;
3 typedef unsigned long long uint64;
7 #elif defined(__TINYC__)
9 #define __builtin_va_list va_list
10 #define __builtin_va_start va_start
11 #define __builtin_va_end va_end
13 #define strcasecmp stricmp
14 #define strncasecmp strnicmp
15 #define __declspec(x) __attribute__((x))
19 typedef long long int64;
20 typedef unsigned long long uint64;
22 typedef __int64 int64;
23 typedef unsigned __int64 uint64;
26 #define __ENDIAN_PAD(x) (8 - (x))
28 #define __ENDIAN_PAD(x) 0
31 #include <sys/types.h>
32 extern void * __ecereNameSpace__ecere__com__eSystem_New(unsigned int size);
34 extern void * __ecereNameSpace__ecere__com__eSystem_New0(unsigned int size);
36 extern void * __ecereNameSpace__ecere__com__eSystem_Renew(void * memory, unsigned int size);
38 extern void * __ecereNameSpace__ecere__com__eSystem_Renew0(void * memory, unsigned int size);
40 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__sys__BTNode;
42 struct __ecereNameSpace__ecere__sys__BTNode;
44 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__sys__BinaryTree;
46 struct __ecereNameSpace__ecere__sys__BinaryTree
48 struct __ecereNameSpace__ecere__sys__BTNode * root;
50 int (* CompareKey)(struct __ecereNameSpace__ecere__sys__BinaryTree * tree, uintptr_t a, uintptr_t b);
51 void (* FreeKey)(void * key);
52 } __attribute__ ((gcc_struct));
54 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__sys__OldList;
56 struct __ecereNameSpace__ecere__sys__OldList
63 } __attribute__ ((gcc_struct));
65 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__Method;
67 struct __ecereNameSpace__ecere__com__Method
70 struct __ecereNameSpace__ecere__com__Method * parent;
71 struct __ecereNameSpace__ecere__com__Method * left;
72 struct __ecereNameSpace__ecere__com__Method * right;
77 struct __ecereNameSpace__ecere__com__Class * _class;
79 char * dataTypeString;
80 struct Type * dataType;
82 } __attribute__ ((gcc_struct));
84 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__Property;
86 struct __ecereNameSpace__ecere__com__Property
88 struct __ecereNameSpace__ecere__com__Property * prev;
89 struct __ecereNameSpace__ecere__com__Property * next;
91 unsigned int isProperty;
94 struct __ecereNameSpace__ecere__com__Class * _class;
95 char * dataTypeString;
96 struct __ecereNameSpace__ecere__com__Class * dataTypeClass;
97 struct Type * dataType;
98 void (* Set)(void * , int);
100 unsigned int (* IsSet)(void * );
104 unsigned int conversion;
105 unsigned int watcherOffset;
107 unsigned int compiled;
108 unsigned int selfWatchable;
109 unsigned int isWatchable;
110 } __attribute__ ((gcc_struct));
112 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_CodePosition;
119 unsigned int included;
120 } __attribute__ ((gcc_struct));
122 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Location;
126 struct CodePosition start;
127 struct CodePosition end;
128 } __attribute__ ((gcc_struct));
130 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Attrib;
134 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_ExtDecl;
138 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_ClassDefinition;
140 struct ClassDefinition
142 struct ClassDefinition * prev;
143 struct ClassDefinition * next;
145 struct Specifier * _class;
146 struct __ecereNameSpace__ecere__sys__OldList * baseSpecs;
147 struct __ecereNameSpace__ecere__sys__OldList * definitions;
148 struct Symbol * symbol;
149 struct Location blockStart;
150 struct Location nameLoc;
153 unsigned int deleteWatchable;
154 } __attribute__ ((gcc_struct));
156 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Context;
160 struct Context * parent;
161 struct __ecereNameSpace__ecere__sys__BinaryTree types;
162 struct __ecereNameSpace__ecere__sys__BinaryTree classes;
163 struct __ecereNameSpace__ecere__sys__BinaryTree symbols;
164 struct __ecereNameSpace__ecere__sys__BinaryTree structSymbols;
167 struct __ecereNameSpace__ecere__sys__BinaryTree templateTypes;
168 struct ClassDefinition * classDef;
169 unsigned int templateTypesOnly;
170 unsigned int hasNameSpace;
171 } __attribute__ ((gcc_struct));
173 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Instantiation;
175 struct Instantiation;
177 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Declaration;
181 struct Declaration * prev;
182 struct Declaration * next;
189 struct __ecereNameSpace__ecere__sys__OldList * specifiers;
190 struct __ecereNameSpace__ecere__sys__OldList * declarators;
191 } __attribute__ ((gcc_struct));
192 struct Instantiation * inst;
195 struct Identifier * id;
196 struct Expression * exp;
197 } __attribute__ ((gcc_struct));
198 } __attribute__ ((gcc_struct));
199 struct Specifier * extStorage;
200 struct Symbol * symbol;
202 } __attribute__ ((gcc_struct));
204 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Statement;
208 struct Statement * prev;
209 struct Statement * next;
214 struct __ecereNameSpace__ecere__sys__OldList * expressions;
217 struct Identifier * id;
218 struct Statement * stmt;
219 } __attribute__ ((gcc_struct)) labeled;
222 struct Expression * exp;
223 struct Statement * stmt;
224 } __attribute__ ((gcc_struct)) caseStmt;
227 struct __ecereNameSpace__ecere__sys__OldList * declarations;
228 struct __ecereNameSpace__ecere__sys__OldList * statements;
229 struct Context * context;
230 unsigned int isSwitch;
231 } __attribute__ ((gcc_struct)) compound;
234 struct __ecereNameSpace__ecere__sys__OldList * exp;
235 struct Statement * stmt;
236 struct Statement * elseStmt;
237 } __attribute__ ((gcc_struct)) ifStmt;
240 struct __ecereNameSpace__ecere__sys__OldList * exp;
241 struct Statement * stmt;
242 } __attribute__ ((gcc_struct)) switchStmt;
245 struct __ecereNameSpace__ecere__sys__OldList * exp;
246 struct Statement * stmt;
247 } __attribute__ ((gcc_struct)) whileStmt;
250 struct __ecereNameSpace__ecere__sys__OldList * exp;
251 struct Statement * stmt;
252 } __attribute__ ((gcc_struct)) doWhile;
255 struct Statement * init;
256 struct Statement * check;
257 struct __ecereNameSpace__ecere__sys__OldList * increment;
258 struct Statement * stmt;
259 } __attribute__ ((gcc_struct)) forStmt;
262 struct Identifier * id;
263 } __attribute__ ((gcc_struct)) gotoStmt;
266 struct Specifier * spec;
268 struct __ecereNameSpace__ecere__sys__OldList * inputFields;
269 struct __ecereNameSpace__ecere__sys__OldList * outputFields;
270 struct __ecereNameSpace__ecere__sys__OldList * clobberedFields;
271 } __attribute__ ((gcc_struct)) asmStmt;
274 struct Expression * watcher;
275 struct Expression * object;
276 struct __ecereNameSpace__ecere__sys__OldList * watches;
277 } __attribute__ ((gcc_struct)) _watch;
280 struct Identifier * id;
281 struct __ecereNameSpace__ecere__sys__OldList * exp;
282 struct __ecereNameSpace__ecere__sys__OldList * filter;
283 struct Statement * stmt;
284 } __attribute__ ((gcc_struct)) forEachStmt;
285 struct Declaration * decl;
286 } __attribute__ ((gcc_struct));
287 } __attribute__ ((gcc_struct));
289 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_TypeName;
293 struct TypeName * prev;
294 struct TypeName * next;
296 struct __ecereNameSpace__ecere__sys__OldList * qualifiers;
297 struct Declarator * declarator;
299 struct Expression * bitCount;
300 } __attribute__ ((gcc_struct));
302 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Initializer;
306 struct Initializer * prev;
307 struct Initializer * next;
312 struct Expression * exp;
313 struct __ecereNameSpace__ecere__sys__OldList * list;
314 } __attribute__ ((gcc_struct));
315 unsigned int isConstant;
316 } __attribute__ ((gcc_struct));
318 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__DataValue;
320 struct __ecereNameSpace__ecere__com__DataValue
335 } __attribute__ ((gcc_struct));
336 } __attribute__ ((gcc_struct));
338 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Expression;
342 struct Expression * prev;
343 struct Expression * next;
351 struct Identifier * identifier;
352 } __attribute__ ((gcc_struct));
353 struct Statement * compound;
354 struct Instantiation * instance;
356 struct __ecereNameSpace__ecere__sys__OldList * list;
359 struct __ecereNameSpace__ecere__sys__OldList * specifiers;
360 struct Declarator * decl;
361 } __attribute__ ((gcc_struct)) _classExp;
364 struct Identifier * id;
365 } __attribute__ ((gcc_struct)) classData;
368 struct Expression * exp;
369 struct __ecereNameSpace__ecere__sys__OldList * arguments;
370 struct Location argLoc;
371 } __attribute__ ((gcc_struct)) call;
374 struct Expression * exp;
375 struct __ecereNameSpace__ecere__sys__OldList * index;
376 } __attribute__ ((gcc_struct)) index;
379 struct Expression * exp;
380 struct Identifier * member;
382 unsigned int thisPtr;
383 } __attribute__ ((gcc_struct)) member;
387 struct Expression * exp1;
388 struct Expression * exp2;
389 } __attribute__ ((gcc_struct)) op;
390 struct TypeName * typeName;
391 struct Specifier * _class;
394 struct TypeName * typeName;
395 struct Expression * exp;
396 } __attribute__ ((gcc_struct)) cast;
399 struct Expression * cond;
400 struct __ecereNameSpace__ecere__sys__OldList * exp;
401 struct Expression * elseExp;
402 } __attribute__ ((gcc_struct)) cond;
405 struct TypeName * typeName;
406 struct Expression * size;
407 } __attribute__ ((gcc_struct)) _new;
410 struct TypeName * typeName;
411 struct Expression * size;
412 struct Expression * exp;
413 } __attribute__ ((gcc_struct)) _renew;
417 struct Identifier * id;
418 } __attribute__ ((gcc_struct)) db;
421 struct Expression * ds;
422 struct Expression * name;
423 } __attribute__ ((gcc_struct)) dbopen;
426 struct TypeName * typeName;
427 struct Initializer * initializer;
428 } __attribute__ ((gcc_struct)) initializer;
431 struct Expression * exp;
432 struct TypeName * typeName;
433 } __attribute__ ((gcc_struct)) vaArg;
434 } __attribute__ ((gcc_struct));
435 unsigned int debugValue;
436 struct __ecereNameSpace__ecere__com__DataValue val;
438 unsigned int hasAddress;
439 struct Type * expType;
440 struct Type * destType;
443 unsigned int byReference;
444 unsigned int isConstant;
445 unsigned int addedThis;
446 unsigned int needCast;
447 unsigned int thisPtr;
448 } __attribute__ ((gcc_struct));
450 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_TemplateDatatype;
452 struct TemplateDatatype
454 struct __ecereNameSpace__ecere__sys__OldList * specifiers;
455 struct Declarator * decl;
456 } __attribute__ ((gcc_struct));
458 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_TemplateArgument;
460 struct TemplateArgument
462 struct TemplateArgument * prev;
463 struct TemplateArgument * next;
465 struct Identifier * name;
469 struct Expression * expression;
470 struct Identifier * identifier;
471 struct TemplateDatatype * templateDatatype;
472 } __attribute__ ((gcc_struct));
473 } __attribute__ ((gcc_struct));
475 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_TemplateParameter;
477 struct TemplateParameter
479 struct TemplateParameter * prev;
480 struct TemplateParameter * next;
483 struct Identifier * identifier;
486 struct TemplateDatatype * dataType;
488 } __attribute__ ((gcc_struct));
489 struct TemplateArgument * defaultArgument;
490 char * dataTypeString;
491 struct Type * baseType;
492 } __attribute__ ((gcc_struct));
494 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Specifier;
498 struct Specifier * prev;
499 struct Specifier * next;
507 struct ExtDecl * extDecl;
509 struct Symbol * symbol;
510 struct __ecereNameSpace__ecere__sys__OldList * templateArgs;
511 } __attribute__ ((gcc_struct));
514 struct Identifier * id;
515 struct __ecereNameSpace__ecere__sys__OldList * list;
516 struct __ecereNameSpace__ecere__sys__OldList * baseSpecs;
517 struct __ecereNameSpace__ecere__sys__OldList * definitions;
518 unsigned int addNameSpace;
519 struct Context * ctx;
520 struct ExtDecl * extDeclStruct;
521 } __attribute__ ((gcc_struct));
522 struct Expression * expression;
523 struct Specifier * _class;
524 struct TemplateParameter * templateParameter;
525 } __attribute__ ((gcc_struct));
526 } __attribute__ ((gcc_struct));
528 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Identifier;
532 struct Identifier * prev;
533 struct Identifier * next;
535 struct Symbol * classSym;
536 struct Specifier * _class;
538 struct Identifier * badID;
539 } __attribute__ ((gcc_struct));
541 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Pointer;
545 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Declarator;
549 struct Declarator * prev;
550 struct Declarator * next;
553 struct Symbol * symbol;
554 struct Declarator * declarator;
557 struct Identifier * identifier;
560 struct Expression * exp;
561 struct Expression * posExp;
562 struct Attrib * attrib;
563 } __attribute__ ((gcc_struct)) structDecl;
566 struct Expression * exp;
567 struct Specifier * enumClass;
568 } __attribute__ ((gcc_struct)) array;
571 struct __ecereNameSpace__ecere__sys__OldList * parameters;
572 } __attribute__ ((gcc_struct)) function;
575 struct Pointer * pointer;
576 } __attribute__ ((gcc_struct)) pointer;
579 struct ExtDecl * extended;
580 } __attribute__ ((gcc_struct)) extended;
581 } __attribute__ ((gcc_struct));
582 } __attribute__ ((gcc_struct));
584 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_FunctionDefinition;
586 struct FunctionDefinition
588 struct FunctionDefinition * prev;
589 struct FunctionDefinition * next;
591 struct __ecereNameSpace__ecere__sys__OldList * specifiers;
592 struct Declarator * declarator;
593 struct __ecereNameSpace__ecere__sys__OldList * declarations;
594 struct Statement * body;
595 struct __ecereNameSpace__ecere__com__Class * _class;
596 struct __ecereNameSpace__ecere__sys__OldList attached;
599 struct Symbol * propSet;
601 unsigned int propertyNoThis;
602 } __attribute__ ((gcc_struct));
604 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_DBTableDef;
608 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_External;
612 struct External * prev;
613 struct External * next;
616 struct Symbol * symbol;
619 struct FunctionDefinition * function;
620 struct ClassDefinition * _class;
621 struct Declaration * declaration;
623 struct Identifier * id;
624 struct DBTableDef * table;
625 } __attribute__ ((gcc_struct));
627 } __attribute__ ((gcc_struct));
629 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_ModuleImport;
633 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_ClassImport;
637 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Symbol;
642 struct Symbol * parent;
643 struct Symbol * left;
644 struct Symbol * right;
649 struct __ecereNameSpace__ecere__com__Method * method;
650 struct __ecereNameSpace__ecere__com__Property * _property;
651 struct __ecereNameSpace__ecere__com__Class * registered;
652 } __attribute__ ((gcc_struct));
659 struct External * pointerExternal;
660 struct External * structExternal;
661 } __attribute__ ((gcc_struct));
664 struct External * externalGet;
665 struct External * externalSet;
666 struct External * externalPtr;
667 struct External * externalIsSet;
668 } __attribute__ ((gcc_struct));
671 struct External * methodExternal;
672 struct External * methodCodeExternal;
673 } __attribute__ ((gcc_struct));
674 } __attribute__ ((gcc_struct));
675 unsigned int imported;
676 unsigned int declaredStructSym;
677 struct __ecereNameSpace__ecere__com__Class * _class;
678 unsigned int declaredStruct;
679 unsigned int needConstructor;
680 unsigned int needDestructor;
681 char * constructorName;
684 char * destructorName;
685 struct ModuleImport * module;
686 struct ClassImport * _import;
687 struct Location nameLoc;
688 unsigned int isParam;
689 unsigned int isRemote;
690 unsigned int isStruct;
691 unsigned int fireWatchersDone;
693 unsigned int classData;
694 unsigned int isStatic;
696 struct __ecereNameSpace__ecere__sys__OldList * templateParams;
697 struct __ecereNameSpace__ecere__sys__OldList templatedClasses;
698 struct Context * ctx;
700 struct Expression * propCategory;
701 } __attribute__ ((gcc_struct));
703 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Type;
712 struct Symbol * _class;
715 struct __ecereNameSpace__ecere__sys__OldList members;
717 } __attribute__ ((gcc_struct));
720 struct Type * returnType;
721 struct __ecereNameSpace__ecere__sys__OldList params;
722 struct Symbol * thisClass;
723 unsigned int staticMethod;
724 struct TemplateParameter * thisClassTemplate;
725 } __attribute__ ((gcc_struct));
728 struct __ecereNameSpace__ecere__com__Method * method;
729 struct __ecereNameSpace__ecere__com__Class * methodClass;
730 struct __ecereNameSpace__ecere__com__Class * usedClass;
731 } __attribute__ ((gcc_struct));
734 struct Type * arrayType;
736 struct Expression * arraySizeExp;
737 unsigned int freeExp;
738 struct Symbol * enumClass;
739 } __attribute__ ((gcc_struct));
741 struct TemplateParameter * templateParameter;
742 } __attribute__ ((gcc_struct));
743 unsigned int isSigned;
745 unsigned int constant;
752 unsigned int byReference;
753 unsigned int extraParam;
755 unsigned int directClassAccess;
756 unsigned int computing;
757 unsigned int dllExport;
759 unsigned int keepCast;
760 unsigned int passAsTemplate;
762 } __attribute__ ((gcc_struct));
764 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__Class;
766 struct __ecereNameSpace__ecere__com__Class
768 struct __ecereNameSpace__ecere__com__Class * prev;
769 struct __ecereNameSpace__ecere__com__Class * next;
775 int (* Constructor)(struct __ecereNameSpace__ecere__com__Instance *);
776 void (* Destructor)(struct __ecereNameSpace__ecere__com__Instance *);
779 struct __ecereNameSpace__ecere__com__Class * base;
780 struct __ecereNameSpace__ecere__sys__BinaryTree methods;
781 struct __ecereNameSpace__ecere__sys__BinaryTree members;
782 struct __ecereNameSpace__ecere__sys__BinaryTree prop;
783 struct __ecereNameSpace__ecere__sys__OldList membersAndProperties;
784 struct __ecereNameSpace__ecere__sys__BinaryTree classProperties;
785 struct __ecereNameSpace__ecere__sys__OldList derivatives;
789 struct __ecereNameSpace__ecere__com__Instance * module;
790 struct __ecereNameSpace__ecere__com__NameSpace * nameSpace;
791 char * dataTypeString;
792 struct Type * dataType;
794 int defaultAlignment;
795 void (* Initialize)();
797 struct __ecereNameSpace__ecere__sys__OldList selfWatchers;
798 char * designerClass;
799 unsigned int noExpansion;
800 char * defaultProperty;
801 unsigned int comRedefinition;
803 unsigned int isRemote;
804 unsigned int internalDecl;
806 unsigned int computeSize;
808 int destructionWatchOffset;
810 struct __ecereNameSpace__ecere__sys__OldList delayedCPValues;
811 int inheritanceAccess;
814 struct __ecereNameSpace__ecere__sys__OldList conversions;
815 struct __ecereNameSpace__ecere__sys__OldList templateParams;
816 struct __ecereNameSpace__ecere__com__ClassTemplateArgument * templateArgs;
817 struct __ecereNameSpace__ecere__com__Class * templateClass;
818 struct __ecereNameSpace__ecere__sys__OldList templatized;
820 } __attribute__ ((gcc_struct));
822 extern long long __ecereNameSpace__ecere__com__eClass_GetProperty(struct __ecereNameSpace__ecere__com__Class * _class, char * name);
824 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__Instance;
826 struct __ecereNameSpace__ecere__com__Instance
829 struct __ecereNameSpace__ecere__com__Class * _class;
831 } __attribute__ ((gcc_struct));
833 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__DataMember;
835 struct __ecereNameSpace__ecere__com__DataMember
837 struct __ecereNameSpace__ecere__com__DataMember * prev;
838 struct __ecereNameSpace__ecere__com__DataMember * next;
840 unsigned int isProperty;
843 struct __ecereNameSpace__ecere__com__Class * _class;
844 char * dataTypeString;
845 struct __ecereNameSpace__ecere__com__Class * dataTypeClass;
846 struct Type * dataType;
850 struct __ecereNameSpace__ecere__sys__OldList members;
851 struct __ecereNameSpace__ecere__sys__BinaryTree membersAlpha;
854 } __attribute__ ((gcc_struct));
856 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__SerialBuffer;
858 struct __ecereNameSpace__ecere__com__SerialBuffer
860 unsigned char * _buffer;
864 } __attribute__ ((gcc_struct));
866 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__ClassTemplateArgument;
868 struct __ecereNameSpace__ecere__com__ClassTemplateArgument
874 char * dataTypeString;
875 struct __ecereNameSpace__ecere__com__Class * dataTypeClass;
876 } __attribute__ ((gcc_struct));
877 struct __ecereNameSpace__ecere__com__DataValue expression;
883 struct __ecereNameSpace__ecere__com__DataMember * member;
884 struct __ecereNameSpace__ecere__com__Property * prop;
885 struct __ecereNameSpace__ecere__com__Method * method;
886 } __attribute__ ((gcc_struct));
887 } __attribute__ ((gcc_struct));
888 } __attribute__ ((gcc_struct));
889 } __attribute__ ((gcc_struct));
893 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
896 typedef union YYSTYPE
901 struct Identifier * id;
902 struct Expression * exp;
903 struct Specifier * specifier;
904 struct __ecereNameSpace__ecere__sys__OldList * list;
905 struct Enumerator * enumerator;
906 struct Declarator * declarator;
907 struct Pointer * pointer;
908 struct Initializer * initializer;
909 struct InitDeclarator * initDeclarator;
910 struct TypeName * typeName;
911 struct Declaration * declaration;
912 struct Statement * stmt;
913 struct FunctionDefinition * function;
914 struct External * external;
915 struct Context * context;
916 struct AsmField * asmField;
917 struct Attrib * attrib;
918 struct ExtDecl * extDecl;
919 struct Attribute * attribute;
920 struct Instantiation * instance;
921 struct MembersInit * membersInit;
922 struct MemberInit * memberInit;
923 struct ClassFunction * classFunction;
924 struct ClassDefinition * _class;
925 struct ClassDef * classDef;
926 struct PropertyDef * prop;
928 struct Symbol * symbol;
929 struct PropertyWatch * propertyWatch;
930 struct TemplateParameter * templateParameter;
931 struct TemplateArgument * templateArgument;
932 struct TemplateDatatype * templateDatatype;
933 struct DBTableEntry * dbtableEntry;
934 struct DBIndexItem * dbindexItem;
935 struct DBTableDef * dbtableDef;
936 } __attribute__ ((gcc_struct)) YYSTYPE;
938 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Enumerator;
942 struct Enumerator * prev;
943 struct Enumerator * next;
945 struct Identifier * id;
946 struct Expression * exp;
947 } __attribute__ ((gcc_struct));
949 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_InitDeclarator;
951 struct InitDeclarator;
953 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_AsmField;
957 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Attribute;
961 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_ClassFunction;
965 struct ClassFunction * prev;
966 struct ClassFunction * next;
968 struct __ecereNameSpace__ecere__sys__OldList * specifiers;
969 struct Declarator * declarator;
970 struct __ecereNameSpace__ecere__sys__OldList * declarations;
971 struct Statement * body;
972 struct __ecereNameSpace__ecere__com__Class * _class;
973 struct __ecereNameSpace__ecere__sys__OldList attached;
976 struct Symbol * propSet;
977 unsigned int isVirtual;
978 unsigned int isConstructor;
979 unsigned int isDestructor;
980 unsigned int dontMangle;
983 } __attribute__ ((gcc_struct));
985 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_MembersInit;
989 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_MemberInit;
993 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_PropertyDef;
997 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_PropertyWatch;
1001 struct PropertyWatch * prev;
1002 struct PropertyWatch * next;
1003 struct Location loc;
1004 struct Statement * compound;
1005 struct __ecereNameSpace__ecere__sys__OldList * properties;
1006 unsigned int deleteWatch;
1007 } __attribute__ ((gcc_struct));
1009 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_ClassDef;
1013 struct ClassDef * prev;
1014 struct ClassDef * next;
1015 struct Location loc;
1019 struct Declaration * decl;
1020 struct ClassFunction * function;
1021 struct __ecereNameSpace__ecere__sys__OldList * defProperties;
1022 struct PropertyDef * propertyDef;
1023 struct PropertyWatch * propertyWatch;
1025 struct Identifier * defaultProperty;
1028 struct Identifier * id;
1029 struct Initializer * initializer;
1030 } __attribute__ ((gcc_struct));
1031 } __attribute__ ((gcc_struct));
1034 } __attribute__ ((gcc_struct));
1036 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_DBTableEntry;
1038 struct DBTableEntry;
1040 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_DBIndexItem;
1044 extern YYSTYPE yylval;
1046 extern struct Location yylloc;
1048 static struct Statement * registerModuleBody;
1050 static struct External * registerModuleExternal;
1052 static struct Statement * unregisterModuleBody;
1054 static struct External * unregisterModuleExternal;
1056 extern int propWatcherID;
1058 unsigned int buildingECERECOM = 0x0;
1060 void SetBuildingEcereCom(unsigned int b)
1062 buildingECERECOM = b;
1065 unsigned int GetBuildingEcereCom()
1067 return buildingECERECOM;
1070 unsigned int buildingECERECOMModule = 0x0;
1072 void SetBuildingEcereComModule(unsigned int b)
1074 buildingECERECOMModule = b;
1077 unsigned int GetBuildingEcereComModule()
1079 return buildingECERECOMModule;
1082 extern struct Identifier * GetDeclId(struct Declarator * decl);
1084 extern unsigned int inCompiler;
1086 extern struct __ecereNameSpace__ecere__sys__OldList * MkList(void);
1088 extern struct Specifier * MkSpecifier(int specifier);
1090 extern void ReplaceThisClassSpecifiers(struct __ecereNameSpace__ecere__sys__OldList * specs, struct __ecereNameSpace__ecere__com__Class * _class);
1092 extern struct FunctionDefinition * MkFunction(struct __ecereNameSpace__ecere__sys__OldList * specifiers, struct Declarator * declarator, struct __ecereNameSpace__ecere__sys__OldList * declarationList);
1094 extern void ProcessFunctionBody(struct FunctionDefinition * func, struct Statement * body);
1096 extern struct External * MkExternalFunction(struct FunctionDefinition * function);
1098 extern void ProcessMethodType(struct __ecereNameSpace__ecere__com__Method * method);
1100 extern struct __ecereNameSpace__ecere__com__ClassTemplateArgument * FindTemplateArg(struct __ecereNameSpace__ecere__com__Class * _class, struct TemplateParameter * param);
1102 extern struct Type * ProcessTypeString(char * string, unsigned int staticMethod);
1104 extern struct Symbol * FindClass(char * name);
1106 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);
1108 extern void Compiler_Error(char * format, ...);
1110 extern char * __ecereNameSpace__ecere__GetTranslatedString(struct __ecereNameSpace__ecere__com__Instance * module, char * string, char * stringAndContext);
1112 extern struct __ecereNameSpace__ecere__com__Instance * __thisModule;
1114 extern struct Declarator * GetFuncDecl(struct Declarator * decl);
1116 extern void FreeType(struct Type * type);
1118 extern void FreeExternal(struct External * external);
1120 extern struct Context * globalContext;
1122 extern struct __ecereNameSpace__ecere__sys__OldList * excludedSymbols;
1124 extern struct Declarator * CopyDeclarator(struct Declarator * declarator);
1126 extern struct __ecereNameSpace__ecere__sys__OldList * CopyList(struct __ecereNameSpace__ecere__sys__OldList * source, void * (* )(void * ));
1128 extern struct Specifier * CopySpecifier(struct Specifier * spec);
1130 unsigned int __ecereMethod___ecereNameSpace__ecere__sys__OldList_Insert(struct __ecereNameSpace__ecere__sys__OldList * this, void * prevItem, void * item);
1132 void __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Remove(struct __ecereNameSpace__ecere__sys__BinaryTree * this, struct __ecereNameSpace__ecere__sys__BTNode * node);
1134 void __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add(struct __ecereNameSpace__ecere__sys__OldList * this, void * item);
1136 struct External * ProcessClassFunction(struct __ecereNameSpace__ecere__com__Class * owningClass, struct ClassFunction * func, struct __ecereNameSpace__ecere__sys__OldList * defs, struct External * after, unsigned int makeStatic)
1138 struct Identifier * id = GetDeclId(func->declarator);
1139 struct Type * type = (((void *)0));
1140 struct Symbol * symbol;
1141 struct External * external = (((void *)0));
1143 if(defs && func->declarator)
1145 struct FunctionDefinition * function = (((void *)0));
1146 struct Symbol * propSymbol;
1147 int symid = func->declarator->symbol->id;
1148 int symidCode = func->declarator->symbol->idCode;
1152 if(!func->specifiers)
1153 func->specifiers = MkList();
1155 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Insert((&*func->specifiers), (((void *)0)), MkSpecifier(STATIC));
1157 propSymbol = func->declarator->symbol;
1158 ReplaceThisClassSpecifiers(func->specifiers, owningClass);
1159 if(propSymbol->externalGet == (struct External *)func)
1160 func->declarator->symbol = (((void *)0));
1161 else if(propSymbol->externalSet == (struct External *)func)
1163 func->declarator->symbol = (((void *)0));
1166 else if(propSymbol->externalIsSet == (struct External *)func)
1168 func->declarator->symbol = (((void *)0));
1172 function = MkFunction(func->specifiers, func->declarator, (((void *)0)));
1173 function->propSet = func->propSet;
1174 function->type = func->type;
1176 func->type->refCount++;
1177 ProcessFunctionBody(function, func->body);
1178 external = MkExternalFunction(function);
1179 external->symbol = func->declarator->symbol;
1180 external->function->_class = func->_class;
1182 symbol = func->declarator->symbol;
1184 symbol->idCode = symidCode;
1185 if(!func->dontMangle)
1187 struct __ecereNameSpace__ecere__com__Method * method = func->declarator->symbol->method;
1189 func->declarator->symbol->methodExternal = external;
1190 if(method && method->symbol)
1191 ((struct Symbol *)method->symbol)->methodCodeExternal = external;
1192 if(method && method->type == 1)
1194 struct Type * methodDataType;
1196 ProcessMethodType(method);
1197 methodDataType = method->dataType;
1198 type = symbol->type;
1199 if(!type->staticMethod && !type->thisClass && !type->thisClassTemplate)
1201 if(method->dataType->thisClassTemplate)
1203 if(owningClass->templateArgs)
1205 struct __ecereNameSpace__ecere__com__ClassTemplateArgument * arg = FindTemplateArg(owningClass, method->dataType->thisClassTemplate);
1207 type->byReference = method->dataType->byReference;
1208 methodDataType = ProcessTypeString(method->dataTypeString, 0x0);
1209 type->thisClass = methodDataType->thisClass = arg ? FindClass((*arg).dataTypeString) : (((void *)0));
1212 else if(method->dataType->staticMethod)
1213 type->staticMethod = 0x1;
1214 else if(method->dataType->thisClass)
1216 type->thisClass = method->dataType->thisClass;
1217 type->byReference = method->dataType->byReference;
1221 if(!owningClass->symbol)
1222 owningClass->symbol = FindClass(owningClass->fullName);
1223 type->thisClass = owningClass->symbol;
1224 type->extraParam = 0x1;
1228 if(!MatchTypes(type, methodDataType, (((void *)0)), owningClass, method->_class, 0x1, 0x1, 0x1, 0x0))
1230 Compiler_Error(__ecereNameSpace__ecere__GetTranslatedString(__thisModule, "Incompatible virtual function %s\n", (((void *)0))), method->name);
1234 struct Type * typeParam;
1235 struct Declarator * funcDecl = GetFuncDecl(func->declarator);
1237 if(funcDecl->function.parameters)
1239 struct TypeName * param = (*funcDecl->function.parameters).first;
1241 for(typeParam = methodDataType->params.first; typeParam; typeParam = typeParam->next)
1243 if(typeParam->classObjectType)
1245 param->classObjectType = typeParam->classObjectType;
1246 if(param->declarator && param->declarator->symbol)
1247 param->declarator->symbol->type->classObjectType = typeParam->classObjectType;
1249 param = param->next;
1253 if(methodDataType != method->dataType)
1254 FreeType(methodDataType);
1258 type = symbol->type;
1259 if(!type->staticMethod && !type->thisClass)
1261 if(owningClass && !owningClass->symbol)
1262 owningClass->symbol = FindClass(owningClass->fullName);
1263 type->thisClass = owningClass ? FindClass(owningClass->fullName) : (((void *)0));
1269 if(symbol->type && !symbol->type->staticMethod && !symbol->type->thisClass)
1271 if(!owningClass->symbol)
1272 owningClass->symbol = FindClass(owningClass->fullName);
1273 symbol->type->thisClass = owningClass->symbol;
1275 if(propSymbol->externalSet == (struct External *)func && propSymbol->_property && propSymbol->_property->conversion)
1277 if(symbol->type->thisClass && symbol->type->classObjectType != 1)
1279 if(owningClass->type != 1)
1280 symbol->type->thisClass = (((void *)0));
1283 if(propSymbol->externalGet == (struct External *)func)
1285 propSymbol->externalGet = external;
1287 else if(propSymbol->externalSet == (struct External *)func)
1289 propSymbol->externalSet = external;
1291 else if(propSymbol->externalIsSet == (struct External *)func)
1293 propSymbol->externalIsSet = external;
1303 func->declarator = (((void *)0));
1304 func->specifiers = (((void *)0));
1305 func->body = (((void *)0));
1306 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Insert(defs, after, external);
1310 struct __ecereNameSpace__ecere__com__Method * method = func->declarator->symbol->method;
1312 if(method && method->symbol)
1313 ((struct Symbol *)method->symbol)->methodCodeExternal = (((void *)0));
1314 func->declarator = (((void *)0));
1315 func->specifiers = (((void *)0));
1316 FreeExternal(external);
1321 __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Remove(&globalContext->symbols, (struct __ecereNameSpace__ecere__sys__BTNode *)symbol);
1322 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*excludedSymbols), symbol);
1323 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Insert(defs, after, external);
1324 external->function->declarator = CopyDeclarator(external->function->declarator);
1325 external->function->specifiers = CopyList(external->function->specifiers, CopySpecifier);
1326 external->function->body = (((void *)0));
1332 extern struct Statement * MkCompoundStmt(struct __ecereNameSpace__ecere__sys__OldList * declarations, struct __ecereNameSpace__ecere__sys__OldList * statements);
1334 extern void ListAdd(struct __ecereNameSpace__ecere__sys__OldList * list, void * item);
1336 extern struct Declaration * MkDeclaration(struct __ecereNameSpace__ecere__sys__OldList * specifiers, struct __ecereNameSpace__ecere__sys__OldList * initDeclarators);
1338 extern struct __ecereNameSpace__ecere__sys__OldList * MkListOne(void * item);
1340 extern struct Specifier * MkSpecifierName(char * name);
1342 extern struct InitDeclarator * MkInitDeclarator(struct Declarator * declarator, struct Initializer * initializer);
1344 extern struct Declarator * MkDeclaratorIdentifier(struct Identifier * id);
1346 extern struct Identifier * MkIdentifier(char * string);
1348 extern struct TypeName * MkTypeName(struct __ecereNameSpace__ecere__sys__OldList * qualifiers, struct Declarator * declarator);
1350 extern char * __ecereNameSpace__ecere__sys__GetLastDirectory(char * string, char * output);
1352 extern char * outputFile;
1354 extern unsigned int __ecereNameSpace__ecere__sys__StripExtension(char * string);
1356 extern void __ecereNameSpace__ecere__sys__ChangeCh(char * string, char ch1, char ch2);
1358 extern int sprintf(char * , char * , ...);
1360 extern struct Declarator * MkDeclaratorFunction(struct Declarator * declarator, struct __ecereNameSpace__ecere__sys__OldList * parameters);
1362 extern struct __ecereNameSpace__ecere__sys__OldList * ast;
1364 extern void * __ecereNameSpace__ecere__com__eInstance_New(struct __ecereNameSpace__ecere__com__Class * _class);
1366 void CreateRegisterModuleBody()
1368 if(!registerModuleBody && inCompiler)
1370 char registerName[1024], moduleName[274];
1371 struct __ecereNameSpace__ecere__sys__OldList * specifiers;
1372 struct Declarator * declarator;
1373 struct TypeName * moduleParam;
1375 registerModuleBody = MkCompoundStmt(MkList(), MkList());
1376 registerModuleBody->compound.context = __extension__ ({
1377 struct Context * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Context);
1379 __ecereInstance1->parent = globalContext, __ecereInstance1;
1381 ListAdd(registerModuleBody->compound.declarations, MkDeclaration(MkListOne(MkSpecifierName("ecere::com::Class")), MkListOne(MkInitDeclarator(MkDeclaratorIdentifier(MkIdentifier("class")), (((void *)0))))));
1382 specifiers = MkList();
1383 ListAdd(specifiers, MkSpecifier(VOID));
1384 moduleParam = MkTypeName(MkListOne(MkSpecifierName("Module")), MkDeclaratorIdentifier(MkIdentifier("module")));
1385 __ecereNameSpace__ecere__sys__GetLastDirectory(outputFile, moduleName);
1386 __ecereNameSpace__ecere__sys__StripExtension(moduleName);
1387 __ecereNameSpace__ecere__sys__ChangeCh(moduleName, '.', '_');
1388 __ecereNameSpace__ecere__sys__ChangeCh(moduleName, ' ', '_');
1389 __ecereNameSpace__ecere__sys__ChangeCh(moduleName, '-', '_');
1390 sprintf(registerName, "__ecereRegisterModule_%s", moduleName);
1391 declarator = MkDeclaratorFunction(MkDeclaratorIdentifier(MkIdentifier(registerName)), MkListOne(moduleParam));
1393 struct FunctionDefinition * function = MkFunction(specifiers, declarator, (((void *)0)));
1395 ProcessFunctionBody(function, registerModuleBody);
1396 function->declMode = 0;
1399 ListAdd(ast, (registerModuleExternal = MkExternalFunction(function)));
1402 if(!unregisterModuleBody && inCompiler)
1404 char registerName[1024], moduleName[274];
1405 struct __ecereNameSpace__ecere__sys__OldList * specifiers;
1406 struct Declarator * declarator;
1407 struct TypeName * moduleParam;
1409 unregisterModuleBody = MkCompoundStmt(MkList(), MkList());
1410 unregisterModuleBody->compound.context = __extension__ ({
1411 struct Context * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Context);
1413 __ecereInstance1->parent = globalContext, __ecereInstance1;
1415 specifiers = MkList();
1416 ListAdd(specifiers, MkSpecifier(VOID));
1417 moduleParam = MkTypeName(MkListOne(MkSpecifierName("Module")), MkDeclaratorIdentifier(MkIdentifier("module")));
1418 __ecereNameSpace__ecere__sys__GetLastDirectory(outputFile, moduleName);
1419 __ecereNameSpace__ecere__sys__StripExtension(moduleName);
1420 __ecereNameSpace__ecere__sys__ChangeCh(moduleName, '.', '_');
1421 __ecereNameSpace__ecere__sys__ChangeCh(moduleName, ' ', '_');
1422 __ecereNameSpace__ecere__sys__ChangeCh(moduleName, '-', '_');
1423 sprintf(registerName, "__ecereUnregisterModule_%s", moduleName);
1424 declarator = MkDeclaratorFunction(MkDeclaratorIdentifier(MkIdentifier(registerName)), MkListOne(moduleParam));
1426 struct FunctionDefinition * function = MkFunction(specifiers, declarator, (((void *)0)));
1428 ProcessFunctionBody(function, unregisterModuleBody);
1429 function->declMode = 0;
1432 ListAdd(ast, (unregisterModuleExternal = MkExternalFunction(function)));
1437 extern struct Expression * MkExpIdentifier(struct Identifier * id);
1439 extern struct Expression * MkExpConstant(char * string);
1441 extern char * QMkString(char * source);
1443 extern struct Expression * MkExpString(char * string);
1445 extern char * strcpy(char * , const char * );
1447 extern void FullClassNameCat(char * output, char * className, unsigned int includeTemplateParams);
1449 extern char * strcat(char * , const char * );
1451 extern void MangleClassName(char * className);
1453 extern struct Statement * MkExpressionStmt(struct __ecereNameSpace__ecere__sys__OldList * expressions);
1455 extern struct Expression * MkExpOp(struct Expression * exp1, int op, struct Expression * exp2);
1457 extern struct Expression * MkExpCall(struct Expression * expression, struct __ecereNameSpace__ecere__sys__OldList * arguments);
1459 extern struct Expression * MkExpMember(struct Expression * expression, struct Identifier * member);
1461 extern struct Expression * MkExpCast(struct TypeName * typeName, struct Expression * expression);
1463 extern struct Declarator * MkDeclaratorPointer(struct Pointer * pointer, struct Declarator * declarator);
1465 extern struct Pointer * MkPointer(struct __ecereNameSpace__ecere__sys__OldList * qualifiers, struct Pointer * pointer);
1467 extern struct Expression * CopyExpression(struct Expression * exp);
1469 extern struct Statement * MkIfStmt(struct __ecereNameSpace__ecere__sys__OldList * exp, struct Statement * statement, struct Statement * elseStmt);
1471 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__BitMember;
1473 struct __ecereNameSpace__ecere__com__BitMember
1475 struct __ecereNameSpace__ecere__com__BitMember * prev;
1476 struct __ecereNameSpace__ecere__com__BitMember * next;
1478 unsigned int isProperty;
1481 struct __ecereNameSpace__ecere__com__Class * _class;
1482 char * dataTypeString;
1483 struct __ecereNameSpace__ecere__com__Class * dataTypeClass;
1484 struct Type * dataType;
1489 } __attribute__ ((gcc_struct));
1491 extern int ComputeTypeSize(struct Type * type);
1493 extern struct Context * curContext;
1495 extern struct Context * PushContext(void);
1497 extern struct Initializer * MkInitializerAssignment(struct Expression * exp);
1499 extern void PopContext(struct Context * ctx);
1501 extern struct Expression * MkExpCondition(struct Expression * cond, struct __ecereNameSpace__ecere__sys__OldList * expressions, struct Expression * elseExp);
1503 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__ClassProperty;
1505 struct __ecereNameSpace__ecere__com__ClassProperty
1508 struct __ecereNameSpace__ecere__com__ClassProperty * parent;
1509 struct __ecereNameSpace__ecere__com__ClassProperty * left;
1510 struct __ecereNameSpace__ecere__com__ClassProperty * right;
1512 void (* Set)(struct __ecereNameSpace__ecere__com__Class *, long long);
1513 long long (* Get)(struct __ecereNameSpace__ecere__com__Class *);
1514 char * dataTypeString;
1515 struct Type * dataType;
1516 unsigned int constant;
1517 } __attribute__ ((gcc_struct));
1519 struct __ecereNameSpace__ecere__sys__BTNode * __ecereProp___ecereNameSpace__ecere__sys__BinaryTree_Get_first(struct __ecereNameSpace__ecere__sys__BinaryTree * this);
1521 extern struct __ecereNameSpace__ecere__com__Property ** __ecereProp___ecereNameSpace__ecere__sys__BinaryTree_first;
1523 struct __ecereNameSpace__ecere__sys__BTNode * __ecereProp___ecereNameSpace__ecere__sys__BTNode_Get_next(struct __ecereNameSpace__ecere__sys__BTNode * this);
1525 extern struct __ecereNameSpace__ecere__com__Property ** __ecereProp___ecereNameSpace__ecere__sys__BTNode_next;
1527 void RegisterMembersAndProperties(struct __ecereNameSpace__ecere__com__Class * regClass, unsigned int isMember, char * className, struct Statement * statement)
1529 struct __ecereNameSpace__ecere__com__DataMember * dataMember = isMember ? (struct __ecereNameSpace__ecere__com__DataMember *)regClass : (((void *)0));
1530 struct __ecereNameSpace__ecere__com__DataMember * member;
1531 struct __ecereNameSpace__ecere__com__Property * prop;
1532 struct Expression * exp;
1533 struct Statement * stmt;
1534 char dataMemberSize[16];
1535 unsigned int lastOffset = 0;
1537 unsigned int privateMembers = 0x0;
1539 sprintf(dataMemberSize, "%d", (int)sizeof(struct __ecereNameSpace__ecere__com__DataMember *));
1542 for(prop = regClass->conversions.first; prop; prop = prop->next)
1544 struct __ecereNameSpace__ecere__sys__OldList * args = MkList();
1547 ListAdd(args, MkExpIdentifier(MkIdentifier(className)));
1548 ListAdd(args, MkExpConstant("0"));
1550 char * string = QMkString(prop->dataTypeString);
1552 ListAdd(args, MkExpString(string));
1553 (__ecereNameSpace__ecere__com__eSystem_Delete(string), string = 0);
1557 strcpy(name, "__ecereProp_");
1558 FullClassNameCat(name, regClass->fullName, 0x0);
1559 strcat(name, "_Set_");
1560 FullClassNameCat(name, prop->name, 0x1);
1561 MangleClassName(name);
1562 ListAdd(args, MkExpIdentifier(MkIdentifier(name)));
1565 ListAdd(args, MkExpConstant("0"));
1568 strcpy(name, "__ecereProp_");
1569 FullClassNameCat(name, regClass->fullName, 0x0);
1570 strcat(name, "_Get_");
1571 FullClassNameCat(name, prop->name, 0x1);
1572 MangleClassName(name);
1573 ListAdd(args, MkExpIdentifier(MkIdentifier(name)));
1576 ListAdd(args, MkExpConstant("0"));
1577 switch(prop->memberAccess)
1580 ListAdd(args, MkExpIdentifier(MkIdentifier("staticAccess")));
1583 ListAdd(args, MkExpIdentifier(MkIdentifier("privateAccess")));
1587 ListAdd(args, MkExpIdentifier(MkIdentifier("publicAccess")));
1590 strcpy(name, "__ecereProp_");
1591 FullClassNameCat(name, regClass->fullName, 0x0);
1593 FullClassNameCat(name, prop->name, 0x1);
1594 MangleClassName(name);
1595 stmt = MkExpressionStmt(MkListOne(MkExpOp(MkExpIdentifier(MkIdentifier(name)), '=', MkExpCall(MkExpIdentifier(MkIdentifier("eClass_AddProperty")), args))));
1596 ListAdd(registerModuleBody->compound.statements, stmt);
1599 for(member = isMember ? dataMember->members.first : regClass->membersAndProperties.first; member; member = member->next)
1601 if(member->isProperty)
1603 prop = (struct __ecereNameSpace__ecere__com__Property *)member;
1605 struct __ecereNameSpace__ecere__sys__OldList * args = MkList();
1606 char name[1024], nameM[1024];
1607 char * string = QMkString(prop->name);
1609 ListAdd(args, MkExpIdentifier(MkIdentifier(className)));
1610 ListAdd(args, MkExpString(string));
1611 (__ecereNameSpace__ecere__com__eSystem_Delete(string), string = 0);
1613 char * string = QMkString(prop->dataTypeString);
1615 ListAdd(args, MkExpString(string));
1616 (__ecereNameSpace__ecere__com__eSystem_Delete(string), string = 0);
1620 strcpy(name, "__ecereProp_");
1621 FullClassNameCat(name, regClass->fullName, 0x0);
1622 strcat(name, "_Set_");
1623 FullClassNameCat(name, prop->name, 0x1);
1624 MangleClassName(name);
1625 ListAdd(args, MkExpIdentifier(MkIdentifier(name)));
1628 ListAdd(args, MkExpConstant("0"));
1631 strcpy(name, "__ecereProp_");
1632 FullClassNameCat(name, regClass->fullName, 0x0);
1633 strcat(name, "_Get_");
1634 FullClassNameCat(name, prop->name, 0x1);
1635 MangleClassName(name);
1636 ListAdd(args, MkExpIdentifier(MkIdentifier(name)));
1639 ListAdd(args, MkExpConstant("0"));
1640 switch(prop->memberAccess)
1643 ListAdd(args, MkExpIdentifier(MkIdentifier("staticAccess")));
1646 ListAdd(args, MkExpIdentifier(MkIdentifier("privateAccess")));
1650 ListAdd(args, MkExpIdentifier(MkIdentifier("publicAccess")));
1653 strcpy(name, "__ecereProp_");
1654 FullClassNameCat(name, regClass->fullName, 0x0);
1656 FullClassNameCat(name, prop->name, 0x1);
1657 MangleClassName(name);
1658 strcpy(nameM, "__ecerePropM_");
1659 FullClassNameCat(nameM, regClass->fullName, 0x0);
1661 FullClassNameCat(nameM, prop->name, 0x1);
1662 MangleClassName(nameM);
1663 if(prop->dataTypeString)
1665 stmt = MkExpressionStmt(MkListOne(MkExpOp(MkExpIdentifier(MkIdentifier(nameM)), '=', MkExpCall(MkExpIdentifier(MkIdentifier("eClass_AddProperty")), args))));
1669 stmt = MkExpressionStmt(MkListOne(MkExpCall(MkExpIdentifier(MkIdentifier("eClass_AddProperty")), args)));
1671 ListAdd(registerModuleBody->compound.statements, stmt);
1676 strcpy(name, "__ecereProp_");
1677 FullClassNameCat(name, regClass->fullName, 0x1);
1678 strcat(name, "_IsSet_");
1679 FullClassNameCat(name, prop->name, 0x0);
1680 MangleClassName(name);
1681 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))))));
1682 ListAdd(registerModuleBody->compound.statements, stmt);
1684 if(((struct Symbol *)prop->symbol)->propCategory)
1686 stmt = MkExpressionStmt(MkListOne(MkExpOp(MkExpMember(MkExpIdentifier(MkIdentifier(nameM)), MkIdentifier("category")), '=', CopyExpression(((struct Symbol *)prop->symbol)->propCategory))));
1687 ListAdd(registerModuleBody->compound.statements, stmt);
1689 if(prop->dataTypeString)
1691 struct __ecereNameSpace__ecere__sys__OldList * list = MkList();
1693 ListAdd(list, MkExpOp(MkExpIdentifier(MkIdentifier(name)), '=', MkExpIdentifier(MkIdentifier(nameM))));
1694 ListAdd(list, MkExpOp(MkExpIdentifier(MkIdentifier(nameM)), '=', MkExpCast(MkTypeName(MkListOne(MkSpecifier(VOID)), MkDeclaratorPointer(MkPointer((((void *)0)), (((void *)0))), (((void *)0)))), MkExpConstant("0"))));
1695 stmt = MkIfStmt(MkListOne(MkExpOp(MkExpMember(MkExpIdentifier(MkIdentifier("module")), MkIdentifier("application")), EQ_OP, MkExpMember(MkExpIdentifier(MkIdentifier("__thisModule")), MkIdentifier("application")))), MkExpressionStmt(list), (((void *)0)));
1696 ListAdd(registerModuleBody->compound.statements, stmt);
1697 stmt = MkExpressionStmt(MkListOne(MkExpOp(MkExpIdentifier(MkIdentifier(nameM)), '=', MkExpCast(MkTypeName(MkListOne(MkSpecifier(VOID)), MkDeclaratorPointer(MkPointer((((void *)0)), (((void *)0))), (((void *)0)))), MkExpConstant("0")))));
1698 ListAdd(unregisterModuleBody->compound.statements, stmt);
1702 else if(member->type == 0 && !isMember && regClass->type == 2)
1704 struct __ecereNameSpace__ecere__com__BitMember * bitMember = (struct __ecereNameSpace__ecere__com__BitMember *)member;
1705 struct __ecereNameSpace__ecere__sys__OldList * args = MkList();
1707 ListAdd(args, MkExpIdentifier(MkIdentifier(className)));
1709 char * string = QMkString(bitMember->name);
1711 ListAdd(args, MkExpString(string));
1712 (__ecereNameSpace__ecere__com__eSystem_Delete(string), string = 0);
1715 char * string = QMkString(bitMember->dataTypeString);
1717 ListAdd(args, MkExpString(string));
1718 (__ecereNameSpace__ecere__com__eSystem_Delete(string), string = 0);
1723 sprintf(string, "%d", bitMember->size);
1724 ListAdd(args, (exp = MkExpConstant(string)));
1729 sprintf(string, "%d", bitMember->pos);
1730 ListAdd(args, (exp = MkExpConstant(string)));
1732 switch(member->memberAccess)
1735 ListAdd(args, MkExpIdentifier(MkIdentifier("staticAccess")));
1738 ListAdd(args, MkExpIdentifier(MkIdentifier("privateAccess")));
1742 ListAdd(args, MkExpIdentifier(MkIdentifier("publicAccess")));
1745 stmt = MkExpressionStmt(MkListOne(MkExpCall(MkExpIdentifier(MkIdentifier("eClass_AddBitMember")), args)));
1746 ListAdd(statement->compound.statements, stmt);
1748 else if(member->memberAccess == 1 || (member->type == 0 && !member->dataTypeString))
1750 struct __ecereNameSpace__ecere__sys__OldList * args;
1754 unsigned int offset = member->offset - lastOffset;
1757 ListAdd(args, MkExpIdentifier(MkIdentifier(className)));
1761 sprintf(string, "\"__ecerePrivateData%d\"", privateID++);
1762 ListAdd(args, MkExpString(string));
1767 sprintf(string, "\"byte[%d]\"", offset);
1768 ListAdd(args, MkExpString(string));
1773 sprintf(string, "%d", offset);
1774 ListAdd(args, (exp = MkExpConstant(string)));
1776 ListAdd(args, (exp = MkExpConstant("1")));
1777 ListAdd(args, MkExpIdentifier(MkIdentifier("privateAccess")));
1778 stmt = MkExpressionStmt(MkListOne(MkExpCall(MkExpIdentifier(MkIdentifier(isMember ? "eMember_AddDataMember" : "eClass_AddDataMember")), args)));
1779 ListAdd(statement->compound.statements, stmt);
1780 privateMembers = 0x0;
1782 if(member->type == 0)
1784 if(!member->dataType)
1785 member->dataType = ProcessTypeString(member->dataTypeString, 0x0);
1786 ComputeTypeSize(member->dataType);
1788 ListAdd(args, MkExpIdentifier(MkIdentifier(className)));
1790 char * string = QMkString(member->name);
1792 ListAdd(args, MkExpString(string));
1793 (__ecereNameSpace__ecere__com__eSystem_Delete(string), string = 0);
1796 char * string = QMkString(member->dataTypeString);
1798 ListAdd(args, MkExpString(string));
1799 (__ecereNameSpace__ecere__com__eSystem_Delete(string), string = 0);
1804 sprintf(string, "%d", member->dataType->size);
1805 ListAdd(args, (exp = MkExpConstant(string)));
1810 sprintf(string, "%d", member->dataType->alignment);
1811 ListAdd(args, (exp = MkExpConstant(string)));
1813 switch(member->memberAccess)
1816 ListAdd(args, MkExpIdentifier(MkIdentifier("staticAccess")));
1819 ListAdd(args, MkExpIdentifier(MkIdentifier("privateAccess")));
1823 ListAdd(args, MkExpIdentifier(MkIdentifier("publicAccess")));
1826 stmt = MkExpressionStmt(MkListOne(MkExpCall(MkExpIdentifier(MkIdentifier(isMember ? "eMember_AddDataMember" : "eClass_AddDataMember")), args)));
1827 ListAdd(statement->compound.statements, stmt);
1828 lastOffset = member->offset + member->dataType->size;
1832 static int memberCount = 0;
1833 struct Context * context;
1834 struct Statement * compound;
1835 char memberName[256];
1837 sprintf(memberName, "dataMember%d", memberCount);
1839 curContext = statement->compound.context;
1840 context = PushContext();
1841 args = MkListOne(MkExpIdentifier(MkIdentifier((member->type == 1) ? "unionMember" : "structMember")));
1842 switch(member->memberAccess)
1845 ListAdd(args, MkExpIdentifier(MkIdentifier("staticAccess")));
1848 ListAdd(args, MkExpIdentifier(MkIdentifier("privateAccess")));
1852 ListAdd(args, MkExpIdentifier(MkIdentifier("publicAccess")));
1855 compound = MkCompoundStmt(MkListOne(MkDeclaration(MkListOne(MkSpecifierName("DataMember")), MkListOne(MkInitDeclarator(MkDeclaratorIdentifier(MkIdentifier(memberName)), MkInitializerAssignment(MkExpCall(MkExpIdentifier(MkIdentifier("eMember_New")), args)))))), MkList());
1856 compound->compound.context = context;
1858 ListAdd(args, MkExpIdentifier(MkIdentifier(className)));
1859 ListAdd(args, MkExpIdentifier(MkIdentifier(memberName)));
1860 RegisterMembersAndProperties((struct __ecereNameSpace__ecere__com__Class *)member, 0x1, memberName, compound);
1862 stmt = MkExpressionStmt(MkListOne(MkExpCall(MkExpIdentifier(MkIdentifier("eMember_AddMember")), args)));
1864 stmt = MkExpressionStmt(MkListOne(MkExpCall(MkExpIdentifier(MkIdentifier("eClass_AddMember")), args)));
1865 ListAdd(compound->compound.statements, stmt);
1866 PopContext(context);
1867 ListAdd(statement->compound.statements, compound);
1869 lastOffset = member->offset + member->memberOffset;
1873 privateMembers = 0x1;
1877 struct __ecereNameSpace__ecere__com__ClassProperty * classProperty;
1879 for(prop = regClass->membersAndProperties.first; prop; prop = prop->next)
1881 if(prop->isProperty && prop->isWatchable)
1883 struct __ecereNameSpace__ecere__sys__OldList * args;
1884 char name[1024], nameM[1024];
1886 strcpy(name, "__ecereProp_");
1887 FullClassNameCat(name, regClass->fullName, 0x1);
1889 FullClassNameCat(name, prop->name, 0x0);
1890 MangleClassName(name);
1891 strcpy(nameM, "__ecerePropM_");
1892 FullClassNameCat(nameM, regClass->fullName, 0x1);
1894 FullClassNameCat(nameM, prop->name, 0x0);
1895 MangleClassName(nameM);
1896 args = MkListOne(MkExpCondition(MkExpIdentifier(MkIdentifier(nameM)), MkListOne(MkExpIdentifier(MkIdentifier(nameM))), MkExpIdentifier(MkIdentifier(name))));
1897 stmt = MkExpressionStmt(MkListOne(MkExpCall(MkExpIdentifier(MkIdentifier("eProperty_Watchable")), args)));
1898 ListAdd(registerModuleBody->compound.statements, stmt);
1901 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)))
1903 struct __ecereNameSpace__ecere__sys__OldList * args = MkList();
1905 char * string = QMkString(classProperty->name);
1907 ListAdd(args, MkExpIdentifier(MkIdentifier(className)));
1908 ListAdd(args, MkExpString(string));
1909 (__ecereNameSpace__ecere__com__eSystem_Delete(string), string = 0);
1911 char * string = QMkString(classProperty->dataTypeString);
1913 ListAdd(args, MkExpString(string));
1914 (__ecereNameSpace__ecere__com__eSystem_Delete(string), string = 0);
1916 if(classProperty->Set)
1918 strcpy(name, "__ecereClassProp_");
1919 FullClassNameCat(name, regClass->fullName, 0x1);
1920 strcat(name, "_Set_");
1921 strcat(name, classProperty->name);
1922 MangleClassName(name);
1923 ListAdd(args, MkExpIdentifier(MkIdentifier(name)));
1926 ListAdd(args, MkExpConstant("0"));
1927 if(classProperty->Get)
1929 strcpy(name, "__ecereClassProp_");
1930 FullClassNameCat(name, regClass->fullName, 0x1);
1931 strcat(name, "_Get_");
1932 strcat(name, classProperty->name);
1933 MangleClassName(name);
1934 ListAdd(args, MkExpIdentifier(MkIdentifier(name)));
1937 ListAdd(args, MkExpConstant("0"));
1938 stmt = MkExpressionStmt(MkListOne(MkExpCall(MkExpIdentifier(MkIdentifier("eClass_AddClassProperty")), args)));
1939 ListAdd(registerModuleBody->compound.statements, stmt);
1944 extern struct External * curExternal;
1946 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__NameSpace;
1948 struct __ecereNameSpace__ecere__com__NameSpace
1951 struct __ecereNameSpace__ecere__com__NameSpace * btParent;
1952 struct __ecereNameSpace__ecere__com__NameSpace * left;
1953 struct __ecereNameSpace__ecere__com__NameSpace * right;
1955 struct __ecereNameSpace__ecere__com__NameSpace * parent;
1956 struct __ecereNameSpace__ecere__sys__BinaryTree nameSpaces;
1957 struct __ecereNameSpace__ecere__sys__BinaryTree classes;
1958 struct __ecereNameSpace__ecere__sys__BinaryTree defines;
1959 struct __ecereNameSpace__ecere__sys__BinaryTree functions;
1960 } __attribute__ ((gcc_struct));
1962 void GetNameSpaceString(struct __ecereNameSpace__ecere__com__NameSpace * ns, char * string)
1965 GetNameSpaceString(ns->parent, string);
1968 strcat(string, ns->name);
1969 strcat(string, "::");
1973 extern unsigned int parsingType;
1975 extern void ProcessExpressionType(struct Expression * exp);
1977 extern void ComputeExpression(struct Expression * exp);
1979 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_OpTable;
1983 unsigned int (* Add)(struct Expression *, struct Operand *, struct Operand *);
1984 unsigned int (* Sub)(struct Expression *, struct Operand *, struct Operand *);
1985 unsigned int (* Mul)(struct Expression *, struct Operand *, struct Operand *);
1986 unsigned int (* Div)(struct Expression *, struct Operand *, struct Operand *);
1987 unsigned int (* Mod)(struct Expression *, struct Operand *, struct Operand *);
1988 unsigned int (* Neg)(struct Expression *, struct Operand *);
1989 unsigned int (* Inc)(struct Expression *, struct Operand *);
1990 unsigned int (* Dec)(struct Expression *, struct Operand *);
1991 unsigned int (* Asign)(struct Expression *, struct Operand *, struct Operand *);
1992 unsigned int (* AddAsign)(struct Expression *, struct Operand *, struct Operand *);
1993 unsigned int (* SubAsign)(struct Expression *, struct Operand *, struct Operand *);
1994 unsigned int (* MulAsign)(struct Expression *, struct Operand *, struct Operand *);
1995 unsigned int (* DivAsign)(struct Expression *, struct Operand *, struct Operand *);
1996 unsigned int (* ModAsign)(struct Expression *, struct Operand *, struct Operand *);
1997 unsigned int (* BitAnd)(struct Expression *, struct Operand *, struct Operand *);
1998 unsigned int (* BitOr)(struct Expression *, struct Operand *, struct Operand *);
1999 unsigned int (* BitXor)(struct Expression *, struct Operand *, struct Operand *);
2000 unsigned int (* LShift)(struct Expression *, struct Operand *, struct Operand *);
2001 unsigned int (* RShift)(struct Expression *, struct Operand *, struct Operand *);
2002 unsigned int (* BitNot)(struct Expression *, struct Operand *);
2003 unsigned int (* AndAsign)(struct Expression *, struct Operand *, struct Operand *);
2004 unsigned int (* OrAsign)(struct Expression *, struct Operand *, struct Operand *);
2005 unsigned int (* XorAsign)(struct Expression *, struct Operand *, struct Operand *);
2006 unsigned int (* LShiftAsign)(struct Expression *, struct Operand *, struct Operand *);
2007 unsigned int (* RShiftAsign)(struct Expression *, struct Operand *, struct Operand *);
2008 unsigned int (* Not)(struct Expression *, struct Operand *);
2009 unsigned int (* Equ)(struct Expression *, struct Operand *, struct Operand *);
2010 unsigned int (* Nqu)(struct Expression *, struct Operand *, struct Operand *);
2011 unsigned int (* And)(struct Expression *, struct Operand *, struct Operand *);
2012 unsigned int (* Or)(struct Expression *, struct Operand *, struct Operand *);
2013 unsigned int (* Grt)(struct Expression *, struct Operand *, struct Operand *);
2014 unsigned int (* Sma)(struct Expression *, struct Operand *, struct Operand *);
2015 unsigned int (* GrtEqu)(struct Expression *, struct Operand *, struct Operand *);
2016 unsigned int (* SmaEqu)(struct Expression *, struct Operand *, struct Operand *);
2017 unsigned int (* Cond)(struct Expression *, struct Operand *, struct Operand *, struct Operand *);
2018 } __attribute__ ((gcc_struct));
2020 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Operand;
2026 unsigned int ptrSize;
2039 } __attribute__ ((gcc_struct));
2041 } __attribute__ ((gcc_struct));
2043 extern struct Operand GetOperand(struct Expression * exp);
2045 extern void __ecereNameSpace__ecere__com__eEnum_AddFixedValue(struct __ecereNameSpace__ecere__com__Class * _class, char * string, int value);
2047 extern int __ecereNameSpace__ecere__com__eEnum_AddValue(struct __ecereNameSpace__ecere__com__Class * _class, char * string);
2049 extern struct ClassFunction * MkClassFunction(struct __ecereNameSpace__ecere__sys__OldList * specifiers, struct Specifier * _class, struct Declarator * decl, struct __ecereNameSpace__ecere__sys__OldList * declList);
2051 extern void ProcessClassFunctionBody(struct ClassFunction * func, struct Statement * body);
2053 extern struct External * MkExternalDeclaration(struct Declaration * declaration);
2055 extern struct ClassDef * MkClassDefFunction(struct ClassFunction * function);
2057 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);
2059 extern struct __ecereNameSpace__ecere__com__Instance * privateModule;
2061 extern void FreePropertyWatch(struct PropertyWatch * watcher);
2063 extern char * sourceFile;
2065 extern struct Type * ProcessType(struct __ecereNameSpace__ecere__sys__OldList * specs, struct Declarator * decl);
2067 extern void PrintType(struct Type * type, char * string, unsigned int printName, unsigned int fullName);
2069 extern struct Expression * MkExpTypeSize(struct TypeName * typeName);
2071 extern struct Specifier * MkStructOrUnion(int type, struct Identifier * id, struct __ecereNameSpace__ecere__sys__OldList * definitions);
2073 extern unsigned int DummyMethod(void);
2075 extern void DeclareMethod(struct __ecereNameSpace__ecere__com__Method * method, char * name);
2077 extern struct __ecereNameSpace__ecere__com__Class * __ecereNameSpace__ecere__com__eSystem_FindClass(struct __ecereNameSpace__ecere__com__Instance * module, char * name);
2079 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__EnumClassData;
2081 struct __ecereNameSpace__ecere__com__EnumClassData
2083 struct __ecereNameSpace__ecere__sys__OldList values;
2085 } __attribute__ ((gcc_struct));
2087 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__sys__NamedLink;
2089 struct __ecereNameSpace__ecere__sys__NamedLink
2091 struct __ecereNameSpace__ecere__sys__NamedLink * prev;
2092 struct __ecereNameSpace__ecere__sys__NamedLink * next;
2095 } __attribute__ ((gcc_struct));
2097 extern char * StringFromSpecDecl(struct __ecereNameSpace__ecere__sys__OldList * specs, struct Declarator * decl);
2099 extern size_t strlen(const char * );
2101 extern struct MemberInit * MkMemberInit(struct __ecereNameSpace__ecere__sys__OldList * ids, struct Initializer * initializer);
2103 extern char * PrintUInt64(uint64 result);
2105 extern struct Expression * MkExpInstance(struct Instantiation * inst);
2107 extern struct Instantiation * MkInstantiation(struct Specifier * _class, struct Expression * exp, struct __ecereNameSpace__ecere__sys__OldList * members);
2109 extern struct MembersInit * MkMembersInitList(struct __ecereNameSpace__ecere__sys__OldList * dataMembers);
2111 int __ecereVMethodID_class_OnGetString;
2113 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__TemplateMemberType;
2115 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)
2117 struct ClassDef * def;
2118 struct __ecereNameSpace__ecere__com__Class * regClass = symbol->registered;
2122 classType = regClass->type;
2123 if(classType == 4 && enumValues && (inCompiler || !buildingECERECOMModule))
2125 struct Enumerator * e;
2127 for(e = enumValues->first; e; e = e->next)
2131 struct Type * destType = (destType = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Type), destType->kind = 3, destType->refCount = 1, destType);
2133 e->exp->destType = destType;
2135 ProcessExpressionType(e->exp);
2137 if(!e->exp->expType)
2140 destType->_class = symbol;
2141 ProcessExpressionType(e->exp);
2143 ComputeExpression(e->exp);
2144 if(e->exp->isConstant && e->exp->type == 2)
2146 struct Operand op = GetOperand(e->exp);
2160 __ecereNameSpace__ecere__com__eEnum_AddFixedValue(regClass, e->id->string, value);
2163 __ecereNameSpace__ecere__com__eEnum_AddValue(regClass, e->id->string);
2166 __ecereNameSpace__ecere__com__eEnum_AddValue(regClass, e->id->string);
2169 if(definitions != (((void *)0)))
2173 for(def = definitions->first; def; def = def->next)
2175 if(def->type == 4 && def->propertyWatch)
2177 struct PropertyWatch * propWatch = def->propertyWatch;
2178 struct ClassFunction * func;
2179 char watcherName[1024];
2180 struct Identifier * propID;
2181 struct Statement * stmt = MkExpressionStmt(MkList());
2182 struct Declarator * decl;
2184 sprintf(watcherName, "__ecerePropertySelfWatcher_%d", propWatcherID++);
2185 for(propID = (*propWatch->properties).first; propID; propID = propID->next)
2187 strcat(watcherName, "_");
2188 strcat(watcherName, propID->string);
2190 decl = MkDeclaratorFunction(MkDeclaratorIdentifier(MkIdentifier(watcherName)), MkListOne(MkTypeName(MkListOne(MkSpecifier(VOID)), (((void *)0)))));
2191 func = MkClassFunction(MkListOne(MkSpecifier(VOID)), (((void *)0)), decl, (((void *)0)));
2192 ProcessClassFunctionBody(func, propWatch->compound);
2193 decl->symbol = __extension__ ({
2194 struct Symbol * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Symbol);
2196 __ecereInstance1->id = symbol->id, __ecereInstance1->idCode = symbol->idCode, __ecereInstance1;
2198 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*excludedSymbols), decl->symbol);
2199 func->id = symbol->id;
2200 func->idCode = symbol->idCode;
2201 func->dontMangle = 0x1;
2203 struct External * externalDecl = MkExternalDeclaration((((void *)0)));
2204 struct Declaration * decl;
2205 struct __ecereNameSpace__ecere__sys__OldList * specifiers = MkList();
2207 ListAdd(specifiers, MkSpecifier(STATIC));
2208 ListAdd(specifiers, MkSpecifier(VOID));
2209 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Insert((&*ast), curExternal->prev, externalDecl);
2210 decl = MkDeclaration(specifiers, MkListOne(MkInitDeclarator(MkDeclaratorFunction(MkDeclaratorIdentifier(MkIdentifier(watcherName)), MkListOne(MkTypeName(MkListOne(MkSpecifierName(regClass->fullName)), (((void *)0))))), (((void *)0)))));
2211 externalDecl->declaration = decl;
2212 if(decl->symbol && !decl->symbol->methodExternal)
2214 decl->symbol->methodExternal = externalDecl;
2215 decl->symbol->id = symbol->id;
2216 decl->symbol->idCode = symbol->idCode;
2219 propWatch->compound = (((void *)0));
2220 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Insert(definitions, (((void *)0)), MkClassDefFunction(func));
2222 stmt->expressions = MkList();
2223 for(propID = (*propWatch->properties).first; propID; propID = propID->next)
2225 struct __ecereNameSpace__ecere__com__Property * prop = __ecereNameSpace__ecere__com__eClass_FindProperty(regClass, propID->string, privateModule);
2229 struct __ecereNameSpace__ecere__sys__OldList * args = MkList();
2231 ListAdd(args, MkExpIdentifier(MkIdentifier("class")));
2232 ListAdd(args, MkExpString(QMkString(propID->string)));
2233 ListAdd(args, MkExpIdentifier(MkIdentifier(watcherName)));
2234 ListAdd(stmt->expressions, MkExpCall(MkExpIdentifier(MkIdentifier("eProperty_SelfWatch")), args));
2237 Compiler_Error(__ecereNameSpace__ecere__GetTranslatedString(__thisModule, "Property %s not found in class %s\n", (((void *)0))), propID->string, regClass->fullName);
2239 FreePropertyWatch(def->propertyWatch);
2240 def->propertyWatch = (struct PropertyWatch *)stmt;
2244 for(def = definitions->first; def; def = def->next)
2248 ProcessClassFunction(regClass, def->function, defs, external->prev, declMode == 3);
2252 if(inCompiler && symbol->id != (((int)0x7fffffff)) && regClass)
2254 struct Statement * stmt;
2255 struct __ecereNameSpace__ecere__sys__OldList * args = MkList();
2256 struct __ecereNameSpace__ecere__com__Method * method;
2257 struct Expression * exp;
2258 char * registerFunction = (((void *)0));
2259 int inheritanceAccess = 1;
2261 CreateRegisterModuleBody();
2262 curExternal = registerModuleExternal;
2263 switch(regClass->type)
2266 ListAdd(args, MkExpIdentifier(MkIdentifier("structClass")));
2269 ListAdd(args, MkExpIdentifier(MkIdentifier("bitClass")));
2272 ListAdd(args, MkExpIdentifier(MkIdentifier("enumClass")));
2275 ListAdd(args, MkExpIdentifier(MkIdentifier("noHeadClass")));
2278 ListAdd(args, MkExpIdentifier(MkIdentifier("unitClass")));
2281 ListAdd(args, MkExpIdentifier(MkIdentifier("normalClass")));
2285 char nameSpace[1024] = "";
2286 char className[1024] = "";
2289 GetNameSpaceString(regClass->nameSpace, nameSpace);
2292 __ecereNameSpace__ecere__sys__GetLastDirectory(sourceFile, className);
2293 __ecereNameSpace__ecere__sys__ChangeCh(className, '.', '_');
2294 strcat(className, "}");
2296 strcat(className, nameSpace);
2297 strcat(className, regClass->name);
2298 string = QMkString(className);
2299 ListAdd(args, MkExpString(string));
2300 (__ecereNameSpace__ecere__com__eSystem_Delete(string), string = 0);
2302 if(baseSpecs != (((void *)0)))
2304 struct Type * baseType = ProcessType(baseSpecs, (((void *)0)));
2306 if(baseType->kind != 9 && baseType->kind != 10)
2308 char baseName[1024] = "";
2311 if(baseType->kind == 8 && baseType->_class && baseType->_class->isStatic)
2313 __ecereNameSpace__ecere__sys__GetLastDirectory(sourceFile, baseName);
2314 __ecereNameSpace__ecere__sys__ChangeCh(baseName, '.', '_');
2315 strcat(baseName, "}");
2316 strcat(baseName, baseType->_class->string);
2319 PrintType(baseType, baseName, 0x0, 0x1);
2320 string = QMkString(baseName);
2321 ListAdd(args, MkExpString(string));
2322 (__ecereNameSpace__ecere__com__eSystem_Delete(string), string = 0);
2325 ListAdd(args, MkExpConstant("0"));
2327 if(((struct Specifier *)baseSpecs->first)->type == 0 && ((struct Specifier *)baseSpecs->first)->specifier == PRIVATE)
2328 inheritanceAccess = 2;
2331 ListAdd(args, MkExpConstant("0"));
2332 if(regClass->type == 1 || regClass->type == 0 || regClass->type == 5)
2334 struct __ecereNameSpace__ecere__com__DataMember * member = (((void *)0));
2337 struct __ecereNameSpace__ecere__com__Class * base;
2339 for(base = regClass->base; base && base->type != 1000; base = base->next)
2341 for(member = base->membersAndProperties.first; member; member = member->next)
2342 if(!member->isProperty)
2348 if(regClass->type == 1 && symbol->declaredStruct && member)
2350 char baseStructName[1024];
2352 baseStructName[0] = (char)0;
2353 strcpy(baseStructName, (regClass->base->templateClass ? regClass->base->templateClass : regClass->base)->fullName);
2354 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))))));
2357 ListAdd(args, symbol->declaredStruct ? MkExpTypeSize(MkTypeName(MkListOne(MkStructOrUnion(3, MkIdentifier(symbol->structName), (((void *)0)))), (((void *)0)))) : MkExpConstant("0"));
2361 ListAdd(args, MkExpConstant("0"));
2364 char classDataStructName[1024];
2366 strcpy(classDataStructName, "__ecereClassData_");
2367 FullClassNameCat(classDataStructName, symbol->string, 0x0);
2368 ListAdd(args, symbol->classData ? MkExpTypeSize(MkTypeName(MkListOne(MkStructOrUnion(3, MkIdentifier(classDataStructName), (((void *)0)))), (((void *)0)))) : MkExpConstant("0"));
2370 if(regClass->type == 0 || regClass->type == 5)
2372 ListAdd(args, symbol->needConstructor ? MkExpIdentifier(MkIdentifier(symbol->constructorName)) : MkExpConstant("0"));
2373 ListAdd(args, symbol->needDestructor ? MkExpIdentifier(MkIdentifier(symbol->destructorName)) : MkExpConstant("0"));
2377 ListAdd(args, MkExpConstant("0"));
2378 ListAdd(args, MkExpConstant("0"));
2380 ListAdd(args, MkExpIdentifier(MkIdentifier("module")));
2384 ListAdd(args, MkExpIdentifier(MkIdentifier("staticAccess")));
2387 ListAdd(args, MkExpIdentifier(MkIdentifier("privateAccess")));
2391 ListAdd(args, MkExpIdentifier(MkIdentifier(buildingECERECOMModule ? "baseSystemAccess" : "publicAccess")));
2394 switch(inheritanceAccess)
2397 ListAdd(args, MkExpIdentifier(MkIdentifier("privateAccess")));
2401 ListAdd(args, MkExpIdentifier(MkIdentifier("publicAccess")));
2404 registerFunction = "eSystem_RegisterClass";
2405 stmt = MkExpressionStmt(MkListOne(MkExpOp(MkExpIdentifier(MkIdentifier("class")), '=', MkExpCall((exp = MkExpIdentifier(MkIdentifier(registerFunction))), args))));
2406 ListAdd(registerModuleBody->compound.statements, stmt);
2407 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)));
2408 ListAdd(registerModuleBody->compound.statements, stmt);
2409 if(external && external->type == 2 && external->_class->deleteWatchable)
2411 args = MkListOne(MkExpIdentifier(MkIdentifier("class")));
2412 stmt = MkExpressionStmt(MkListOne(MkExpCall(MkExpIdentifier(MkIdentifier("eClass_DestructionWatchable")), args)));
2413 ListAdd(registerModuleBody->compound.statements, stmt);
2417 struct __ecereNameSpace__ecere__com__Class * base = regClass->base;
2420 for(c = 0; c < base->vTblSize; c++)
2422 struct Symbol * method = (struct Symbol *)regClass->_vTbl[c];
2424 if((void *)method != DummyMethod && base->_vTbl[c] != (void *)method)
2426 struct External * external = method->methodExternal;
2427 struct __ecereNameSpace__ecere__sys__OldList * args = MkList();
2428 struct Identifier * id = external->function ? GetDeclId(external->function->declarator) : (((void *)0));
2430 ListAdd(args, MkExpIdentifier(MkIdentifier("class")));
2432 char * string = QMkString(method->method->name);
2434 ListAdd(args, MkExpString(string));
2435 (__ecereNameSpace__ecere__com__eSystem_Delete(string), string = 0);
2437 ListAdd(args, MkExpConstant("0"));
2438 ListAdd(args, (exp = MkExpIdentifier(MkIdentifier(id->string))));
2439 ListAdd(args, MkExpIdentifier(MkIdentifier("publicAccess")));
2440 exp->expType = __extension__ ({
2441 struct Type * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Type);
2443 __ecereInstance1->refCount = 1, __ecereInstance1;
2445 stmt = MkExpressionStmt(MkListOne(MkExpCall(MkExpIdentifier(MkIdentifier("eClass_AddMethod")), args)));
2446 ListAdd(registerModuleBody->compound.statements, stmt);
2453 for(c = regClass->base ? regClass->base->vTblSize : 0; c < regClass->vTblSize; c++)
2455 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)))
2457 if(method->type == 1 && method->_class == regClass && method->vid == c)
2460 struct Expression * exp;
2461 struct External * external = method->symbol ? ((struct Symbol *)method->symbol)->methodCodeExternal : (((void *)0));
2462 struct __ecereNameSpace__ecere__sys__OldList * args = MkList();
2463 struct Identifier * id = (external && external->function) ? GetDeclId(external->function->declarator) : (((void *)0));
2465 ListAdd(args, MkExpIdentifier(MkIdentifier("class")));
2467 char * string = QMkString(method->name);
2469 ListAdd(args, MkExpString(string));
2470 (__ecereNameSpace__ecere__com__eSystem_Delete(string), string = 0);
2473 char * string = QMkString(method->dataTypeString);
2475 ListAdd(args, MkExpString(string));
2476 (__ecereNameSpace__ecere__com__eSystem_Delete(string), string = 0);
2478 if(id && external->function->body)
2480 ListAdd(args, (exp = MkExpIdentifier(MkIdentifier(id->string))));
2481 exp->expType = __extension__ ({
2482 struct Type * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Type);
2484 __ecereInstance1->refCount = 1, __ecereInstance1;
2489 ListAdd(args, (exp = MkExpConstant("0")));
2491 switch(method->memberAccess)
2494 ListAdd(args, MkExpIdentifier(MkIdentifier("staticAccess")));
2497 ListAdd(args, MkExpIdentifier(MkIdentifier("privateAccess")));
2501 ListAdd(args, MkExpIdentifier(MkIdentifier("publicAccess")));
2504 strcpy(name, "__ecereVMethodID_");
2505 FullClassNameCat(name, method->_class->fullName, 0x0);
2507 strcat(name, method->name);
2508 exp = MkExpCall(MkExpIdentifier(MkIdentifier("eClass_AddVirtualMethod")), args);
2509 stmt = MkExpressionStmt(MkListOne(exp));
2510 DeclareMethod(method, name);
2511 ListAdd(registerModuleBody->compound.statements, stmt);
2516 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)))
2518 if(method->type == 1 && method->_class == regClass)
2520 else if(method->memberAccess == 1 || !method->dataTypeString)
2522 struct External * external = method->symbol ? ((struct Symbol *)method->symbol)->methodCodeExternal : (((void *)0));
2523 struct __ecereNameSpace__ecere__sys__OldList * args = MkList();
2524 struct Identifier * id = (external && external->function) ? GetDeclId(external->function->declarator) : (((void *)0));
2526 ListAdd(args, MkExpIdentifier(MkIdentifier("class")));
2528 char * string = QMkString(method->name);
2530 ListAdd(args, MkExpString(string));
2531 (__ecereNameSpace__ecere__com__eSystem_Delete(string), string = 0);
2534 char * string = QMkString(method->dataTypeString);
2536 ListAdd(args, MkExpString(string));
2537 (__ecereNameSpace__ecere__com__eSystem_Delete(string), string = 0);
2539 if(id && external->function->body)
2541 ListAdd(args, (exp = MkExpIdentifier(MkIdentifier(id->string))));
2542 exp->expType = __extension__ ({
2543 struct Type * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Type);
2545 __ecereInstance1->refCount = 1, __ecereInstance1;
2550 ListAdd(args, (exp = MkExpConstant("0")));
2552 switch(method->memberAccess)
2555 ListAdd(args, MkExpIdentifier(MkIdentifier("staticAccess")));
2558 ListAdd(args, MkExpIdentifier(MkIdentifier("privateAccess")));
2562 ListAdd(args, MkExpIdentifier(MkIdentifier("publicAccess")));
2565 stmt = MkExpressionStmt(MkListOne(MkExpCall(MkExpIdentifier(MkIdentifier("eClass_AddMethod")), args)));
2566 ListAdd(registerModuleBody->compound.statements, stmt);
2569 RegisterMembersAndProperties(regClass, 0x0, "class", registerModuleBody);
2572 struct __ecereNameSpace__ecere__sys__NamedLink * value;
2573 struct __ecereNameSpace__ecere__com__Class * enumClass = __ecereNameSpace__ecere__com__eSystem_FindClass(privateModule, "enum");
2574 struct __ecereNameSpace__ecere__com__EnumClassData * e = (regClass ? ((void *)(((char *)regClass->data) + enumClass->offsetClass)) : (((void *)0)));
2576 for(value = e->values.first; value; value = value->next)
2578 struct __ecereNameSpace__ecere__sys__OldList * args = MkList();
2580 ListAdd(args, MkExpIdentifier(MkIdentifier("class")));
2582 char * string = QMkString(value->name);
2584 ListAdd(args, MkExpString(string));
2585 (__ecereNameSpace__ecere__com__eSystem_Delete(string), string = 0);
2590 sprintf(temp, "%d", (int)value->data);
2591 ListAdd(args, MkExpConstant(temp));
2593 stmt = MkExpressionStmt(MkListOne(MkExpCall(MkExpIdentifier(MkIdentifier("eEnum_AddFixedValue")), args)));
2594 ListAdd(registerModuleBody->compound.statements, stmt);
2597 if(symbol->templateParams)
2599 struct TemplateParameter * param;
2601 for(param = (*symbol->templateParams).first; param; param = param->next)
2603 struct __ecereNameSpace__ecere__sys__OldList * args = MkList();
2605 ListAdd(args, MkExpIdentifier(MkIdentifier("class")));
2607 char * string = QMkString(param->identifier->string);
2609 ListAdd(args, MkExpString(string));
2610 (__ecereNameSpace__ecere__com__eSystem_Delete(string), string = 0);
2612 ListAdd(args, MkExpIdentifier(MkIdentifier((param->type == 0) ? "type" : ((param->type == 1) ? "identifier" : "expression"))));
2618 char * typeString = param->dataType ? StringFromSpecDecl(param->dataType->specifiers, param->dataType->decl) : (((void *)0));
2619 char * string = QMkString(typeString);
2621 ListAdd(args, MkExpString(string));
2622 (__ecereNameSpace__ecere__com__eSystem_Delete(typeString), typeString = 0);
2623 (__ecereNameSpace__ecere__com__eSystem_Delete(string), string = 0);
2628 char memberTypeString[132] = "TemplateMemberType::";
2629 unsigned int needClass = 0x1;
2631 ((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);
2632 ListAdd(args, MkExpCast(MkTypeName(MkListOne(MkSpecifier(VOID)), MkDeclaratorPointer(MkPointer((((void *)0)), (((void *)0))), (((void *)0)))), MkExpIdentifier(MkIdentifier(memberTypeString))));
2636 if(param->defaultArgument)
2638 struct __ecereNameSpace__ecere__sys__OldList * members = MkList();
2644 char * typeString = param->defaultArgument->templateDatatype ? StringFromSpecDecl(param->defaultArgument->templateDatatype->specifiers, param->defaultArgument->templateDatatype->decl) : (((void *)0));
2645 char * string = QMkString(typeString);
2647 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*members), MkMemberInit(MkListOne(MkIdentifier("dataTypeString")), MkInitializerAssignment(MkExpString(string))));
2648 (__ecereNameSpace__ecere__com__eSystem_Delete(typeString), typeString = 0);
2649 (__ecereNameSpace__ecere__com__eSystem_Delete(string), string = 0);
2654 char memberString[1024];
2657 memberString[0] = '\0';
2658 if(param->defaultArgument->identifier->_class)
2660 if(param->defaultArgument->identifier->_class->type == 8)
2661 strcpy(memberString, param->defaultArgument->identifier->_class->templateParameter->identifier->string);
2662 else if(param->defaultArgument->identifier->_class->name)
2663 strcpy(memberString, param->defaultArgument->identifier->_class->name);
2666 strcat(memberString, "::");
2667 strcat(memberString, param->defaultArgument->identifier->string);
2668 string = QMkString(memberString);
2669 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*members), MkMemberInit(MkListOne(MkIdentifier("dataTypeString")), MkInitializerAssignment(MkExpString(string))));
2670 (__ecereNameSpace__ecere__com__eSystem_Delete(string), string = 0);
2679 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
2682 struct __ecereNameSpace__ecere__sys__OldList * ids = MkList();
2684 char * string = (((void *)0));
2686 op = GetOperand(param->defaultArgument->expression);
2687 ui64String = PrintUInt64(op.ui64);
2688 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*ids), MkIdentifier("expression"));
2689 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*ids), MkIdentifier("ui64"));
2690 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*members), MkMemberInit(ids, MkInitializerAssignment(MkExpConstant(ui64String))));
2691 (__ecereNameSpace__ecere__com__eSystem_Delete(string), string = 0);
2692 (__ecereNameSpace__ecere__com__eSystem_Delete(ui64String), ui64String = 0);
2696 ListAdd(args, MkExpInstance(MkInstantiation(MkSpecifierName("ClassTemplateArgument"), (((void *)0)), MkListOne(MkMembersInitList(members)))));
2699 ListAdd(args, MkExpIdentifier(MkIdentifier("null")));
2700 stmt = MkExpressionStmt(MkListOne(MkExpCall(MkExpIdentifier(MkIdentifier("eClass_AddTemplateParameter")), args)));
2701 ListAdd(registerModuleBody->compound.statements, stmt);
2703 stmt = MkExpressionStmt(MkListOne(MkExpCall(MkExpIdentifier(MkIdentifier("eClass_DoneAddingTemplateParameters")), MkListOne(MkExpIdentifier(MkIdentifier("class"))))));
2704 ListAdd(registerModuleBody->compound.statements, stmt);
2706 if(definitions != (((void *)0)))
2708 for(def = definitions->first; def; def = def->next)
2710 if(def->type == 4 && def->propertyWatch)
2712 ListAdd(registerModuleBody->compound.statements, (struct Statement *)def->propertyWatch);
2713 def->propertyWatch = (((void *)0));
2715 else if(def->type == 5)
2717 stmt = MkIfStmt(MkListOne(MkExpIdentifier(MkIdentifier("class"))), MkExpressionStmt(MkListOne(MkExpOp(MkExpMember(MkExpIdentifier(MkIdentifier("class")), MkIdentifier("designerClass")), '=', MkExpString(QMkString(def->designer))))), (((void *)0)));
2718 ListAdd(registerModuleBody->compound.statements, stmt);
2720 else if(def->type == 6)
2722 stmt = MkIfStmt(MkListOne(MkExpIdentifier(MkIdentifier("class"))), MkExpressionStmt(MkListOne(MkExpOp(MkExpMember(MkExpIdentifier(MkIdentifier("class")), MkIdentifier("noExpansion")), '=', MkExpConstant("1")))), (((void *)0)));
2723 ListAdd(registerModuleBody->compound.statements, stmt);
2725 else if(def->type == 7)
2727 stmt = MkIfStmt(MkListOne(MkExpIdentifier(MkIdentifier("class"))), MkExpressionStmt(MkListOne(MkExpOp(MkExpMember(MkExpIdentifier(MkIdentifier("class")), MkIdentifier("fixed")), '=', MkExpConstant("1")))), (((void *)0)));
2728 ListAdd(registerModuleBody->compound.statements, stmt);
2730 regClass->fixed = 0x1;
2732 else if(def->type == 8)
2734 stmt = MkIfStmt(MkListOne(MkExpIdentifier(MkIdentifier("class"))), MkExpressionStmt(MkListOne(MkExpOp(MkExpMember(MkExpIdentifier(MkIdentifier("class")), MkIdentifier("defaultProperty")), '=', MkExpString(QMkString(def->defaultProperty->string))))), (((void *)0)));
2735 ListAdd(registerModuleBody->compound.statements, stmt);
2737 else if(def->type == 11)
2739 struct __ecereNameSpace__ecere__sys__OldList * args = MkList();
2741 ListAdd(args, MkExpIdentifier(MkIdentifier("class")));
2742 ListAdd(args, MkExpString(QMkString(def->id->string)));
2743 ListAdd(args, MkExpCast(MkTypeName(MkListOne(MkSpecifier(INT64)), (((void *)0))), def->initializer->exp));
2744 def->initializer->exp = (((void *)0));
2745 stmt = MkExpressionStmt(MkListOne(MkExpCall(MkExpIdentifier(MkIdentifier("ecere::com::eClass_SetProperty")), args)));
2746 ListAdd(registerModuleBody->compound.statements, stmt);
2754 extern int strcmp(const char * , const char * );
2756 extern void PrintExpression(struct Expression * exp, char * string);
2758 void __ecereMethod___ecereNameSpace__ecere__sys__OldList_Remove(struct __ecereNameSpace__ecere__sys__OldList * this, void * item);
2760 void ProcessClassDefinitions()
2762 struct External * external, * next;
2764 CreateRegisterModuleBody();
2767 for(external = (*ast).first; external; external = next)
2769 next = external->next;
2770 curExternal = external;
2771 if(external->type == 2)
2773 struct ClassDefinition * _class = external->_class;
2775 if(_class->definitions)
2777 ProcessClass(0, _class->definitions, _class->symbol, _class->baseSpecs, (((void *)0)), ast, external, _class->declMode);
2781 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Remove((&*ast), external);
2782 FreeExternal(external);
2785 else if(external->type == 0)
2787 if(external->symbol && !external->symbol->type->thisClass)
2788 external->symbol->type->staticMethod = 0x1;
2791 struct FunctionDefinition * function = external->function;
2792 struct Statement * stmt;
2793 struct __ecereNameSpace__ecere__sys__OldList * args;
2795 if(!strcmp(function->declarator->symbol->string, "__on_register_module"))
2797 ListAdd(registerModuleBody->compound.statements, function->body);
2798 function->body->compound.context->parent = registerModuleBody->compound.context;
2799 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Remove((&*ast), external);
2800 function->body = (((void *)0));
2801 FreeExternal(external);
2804 if(function->declMode != 2 && function->declMode != 1)
2807 CreateRegisterModuleBody();
2809 char * string = QMkString(function->declarator->symbol->string);
2811 ListAdd(args, MkExpString(string));
2812 (__ecereNameSpace__ecere__com__eSystem_Delete(string), string = 0);
2816 char type[1024] = "";
2818 PrintType(function->declarator->symbol->type, type, 0x1, 0x1);
2819 string = QMkString(type);
2820 ListAdd(args, MkExpString(string));
2821 (__ecereNameSpace__ecere__com__eSystem_Delete(string), string = 0);
2824 ListAdd(args, MkExpIdentifier(MkIdentifier(function->declarator->symbol->string)));
2826 ListAdd(args, MkExpIdentifier(MkIdentifier("module")));
2827 switch(function->declMode)
2830 ListAdd(args, MkExpIdentifier(MkIdentifier("staticAccess")));
2833 ListAdd(args, MkExpIdentifier(MkIdentifier("privateAccess")));
2837 ListAdd(args, MkExpIdentifier(MkIdentifier(buildingECERECOMModule ? "baseSystemAccess" : "publicAccess")));
2840 stmt = MkExpressionStmt(MkListOne(MkExpCall((MkExpIdentifier(MkIdentifier("eSystem_RegisterFunction"))), args)));
2841 ListAdd(registerModuleBody->compound.statements, stmt);
2844 else if(external->type == 1)
2846 struct Declaration * declaration = external->declaration;
2848 if(external->symbol)
2850 if(external->symbol->type && external->symbol->type->kind == 11 && !external->symbol->type->thisClass)
2851 external->symbol->type->staticMethod = 0x1;
2853 if(external->symbol && declaration->type == 1)
2855 if(declaration->specifiers)
2857 struct Specifier * specifier;
2858 unsigned int removeExternal = 0x0;
2860 for(specifier = (*declaration->specifiers).first; specifier; specifier = specifier->next)
2862 if((specifier->type == 2 || specifier->type == 3 || specifier->type == 4) && specifier->id && specifier->id->string && (declaration->declMode || specifier->baseSpecs || (specifier->type == 2 && specifier->definitions)))
2864 struct Symbol * symbol = FindClass(specifier->id->string);
2870 if(specifier->type == 2)
2874 removeExternal = 0x1;
2875 symbol->ctx = specifier->ctx;
2876 specifier->ctx = (((void *)0));
2877 ProcessClass(classType, specifier->definitions, symbol, specifier->baseSpecs, specifier->list, ast, external, declaration->declMode);
2881 if(inCompiler && removeExternal)
2883 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Remove((&*ast), external);
2884 FreeExternal(external);
2888 else if(declaration->type == 3)
2890 if(inCompiler && declaration->declMode != 3)
2892 struct Statement * stmt;
2893 struct __ecereNameSpace__ecere__sys__OldList * args = MkList();
2895 CreateRegisterModuleBody();
2897 char * string = QMkString(declaration->id->string);
2899 ListAdd(args, MkExpString(string));
2900 (__ecereNameSpace__ecere__com__eSystem_Delete(string), string = 0);
2904 char type[1024] = "";
2906 PrintExpression(declaration->exp, type);
2907 string = QMkString(type);
2908 ListAdd(args, MkExpString(string));
2909 (__ecereNameSpace__ecere__com__eSystem_Delete(string), string = 0);
2911 ListAdd(args, MkExpIdentifier(MkIdentifier("module")));
2912 switch(declaration->declMode)
2915 ListAdd(args, MkExpIdentifier(MkIdentifier("staticAccess")));
2918 ListAdd(args, MkExpIdentifier(MkIdentifier("privateAccess")));
2922 ListAdd(args, MkExpIdentifier(MkIdentifier(buildingECERECOMModule ? "baseSystemAccess" : "publicAccess")));
2925 stmt = MkExpressionStmt(MkListOne(MkExpCall((MkExpIdentifier(MkIdentifier("eSystem_RegisterDefine"))), args)));
2926 ListAdd(registerModuleBody->compound.statements, stmt);
2934 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__GlobalFunction;
2936 struct __ecereNameSpace__ecere__com__GlobalFunction;
2938 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);
2940 void __ecereRegisterModule_pass1(struct __ecereNameSpace__ecere__com__Instance * module)
2942 struct __ecereNameSpace__ecere__com__Class * class;
2944 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("SetBuildingEcereCom", "void SetBuildingEcereCom(bool b)", SetBuildingEcereCom, module, 1);
2945 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("GetBuildingEcereCom", "bool GetBuildingEcereCom(void)", GetBuildingEcereCom, module, 1);
2946 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("SetBuildingEcereComModule", "void SetBuildingEcereComModule(bool b)", SetBuildingEcereComModule, module, 1);
2947 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("GetBuildingEcereComModule", "bool GetBuildingEcereComModule(void)", GetBuildingEcereComModule, module, 1);
2948 __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);
2949 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("CreateRegisterModuleBody", "void CreateRegisterModuleBody(void)", CreateRegisterModuleBody, module, 2);
2950 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("RegisterMembersAndProperties", "void RegisterMembersAndProperties(ecere::com::Class regClass, bool isMember, char * className, Statement statement)", RegisterMembersAndProperties, module, 2);
2951 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("GetNameSpaceString", "void GetNameSpaceString(ecere::com::NameSpace ns, char * string)", GetNameSpaceString, module, 2);
2952 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ProcessClassDefinitions", "void ProcessClassDefinitions(void)", ProcessClassDefinitions, module, 1);
2955 void __ecereUnregisterModule_pass1(struct __ecereNameSpace__ecere__com__Instance * module)