2 typedef long long int64;
3 typedef unsigned long long uint64;
4 #elif defined(__TINYC__)
6 #define __builtin_va_list va_list
7 #define __builtin_va_start va_start
8 #define __builtin_va_end va_end
10 #define strcasecmp stricmp
11 #define strncasecmp strnicmp
12 #define __declspec(x) __attribute__((x))
16 typedef long long int64;
17 typedef unsigned long long uint64;
19 typedef __int64 int64;
20 typedef unsigned __int64 uint64;
23 #define __ENDIAN_PAD(x) (8 - (x))
25 #define __ENDIAN_PAD(x) 0
28 extern void * __ecereNameSpace__ecere__com__eSystem_New(unsigned int size);
30 extern void * __ecereNameSpace__ecere__com__eSystem_New0(unsigned int size);
32 extern void * __ecereNameSpace__ecere__com__eSystem_Renew(void * memory, unsigned int size);
34 extern void * __ecereNameSpace__ecere__com__eSystem_Renew0(void * memory, unsigned int size);
36 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__sys__BTNode;
38 struct __ecereNameSpace__ecere__sys__BTNode;
40 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__sys__BinaryTree;
42 struct __ecereNameSpace__ecere__sys__BinaryTree
44 struct __ecereNameSpace__ecere__sys__BTNode * root;
46 int (* CompareKey)(struct __ecereNameSpace__ecere__sys__BinaryTree * tree, uintptr_t a, uintptr_t b);
47 void (* FreeKey)(void * key);
48 } __attribute__ ((gcc_struct));
50 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__sys__OldList;
52 struct __ecereNameSpace__ecere__sys__OldList
59 } __attribute__ ((gcc_struct));
61 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__Method;
63 struct __ecereNameSpace__ecere__com__Method
66 struct __ecereNameSpace__ecere__com__Method * parent;
67 struct __ecereNameSpace__ecere__com__Method * left;
68 struct __ecereNameSpace__ecere__com__Method * right;
73 struct __ecereNameSpace__ecere__com__Class * _class;
75 char * dataTypeString;
76 struct Type * dataType;
78 } __attribute__ ((gcc_struct));
80 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__Property;
82 struct __ecereNameSpace__ecere__com__Property
84 struct __ecereNameSpace__ecere__com__Property * prev;
85 struct __ecereNameSpace__ecere__com__Property * next;
87 unsigned int isProperty;
90 struct __ecereNameSpace__ecere__com__Class * _class;
91 char * dataTypeString;
92 struct __ecereNameSpace__ecere__com__Class * dataTypeClass;
93 struct Type * dataType;
96 unsigned int (* IsSet)();
100 unsigned int conversion;
101 unsigned int watcherOffset;
103 unsigned int compiled;
104 unsigned int selfWatchable;
105 unsigned int isWatchable;
106 } __attribute__ ((gcc_struct));
108 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_CodePosition;
115 unsigned int included;
116 } __attribute__ ((gcc_struct));
118 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Location;
122 struct CodePosition start;
123 struct CodePosition end;
124 } __attribute__ ((gcc_struct));
126 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Attrib;
130 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_ExtDecl;
134 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_ClassDefinition;
136 struct ClassDefinition
138 struct ClassDefinition * prev;
139 struct ClassDefinition * next;
141 struct Specifier * _class;
142 struct __ecereNameSpace__ecere__sys__OldList * baseSpecs;
143 struct __ecereNameSpace__ecere__sys__OldList * definitions;
144 struct Symbol * symbol;
145 struct Location blockStart;
146 struct Location nameLoc;
149 unsigned int deleteWatchable;
150 } __attribute__ ((gcc_struct));
152 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Context;
156 struct Context * parent;
157 struct __ecereNameSpace__ecere__sys__BinaryTree types;
158 struct __ecereNameSpace__ecere__sys__BinaryTree classes;
159 struct __ecereNameSpace__ecere__sys__BinaryTree symbols;
160 struct __ecereNameSpace__ecere__sys__BinaryTree structSymbols;
163 struct __ecereNameSpace__ecere__sys__BinaryTree templateTypes;
164 struct ClassDefinition * classDef;
165 unsigned int templateTypesOnly;
166 unsigned int hasNameSpace;
167 } __attribute__ ((gcc_struct));
169 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Instantiation;
171 struct Instantiation;
173 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Declaration;
177 struct Declaration * prev;
178 struct Declaration * next;
185 struct __ecereNameSpace__ecere__sys__OldList * specifiers;
186 struct __ecereNameSpace__ecere__sys__OldList * declarators;
187 } __attribute__ ((gcc_struct));
188 struct Instantiation * inst;
191 struct Identifier * id;
192 struct Expression * exp;
193 } __attribute__ ((gcc_struct));
194 } __attribute__ ((gcc_struct));
195 struct Specifier * extStorage;
196 struct Symbol * symbol;
198 } __attribute__ ((gcc_struct));
200 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Statement;
204 struct Statement * prev;
205 struct Statement * next;
210 struct __ecereNameSpace__ecere__sys__OldList * expressions;
213 struct Identifier * id;
214 struct Statement * stmt;
215 } __attribute__ ((gcc_struct)) labeled;
218 struct Expression * exp;
219 struct Statement * stmt;
220 } __attribute__ ((gcc_struct)) caseStmt;
223 struct __ecereNameSpace__ecere__sys__OldList * declarations;
224 struct __ecereNameSpace__ecere__sys__OldList * statements;
225 struct Context * context;
226 unsigned int isSwitch;
227 } __attribute__ ((gcc_struct)) compound;
230 struct __ecereNameSpace__ecere__sys__OldList * exp;
231 struct Statement * stmt;
232 struct Statement * elseStmt;
233 } __attribute__ ((gcc_struct)) ifStmt;
236 struct __ecereNameSpace__ecere__sys__OldList * exp;
237 struct Statement * stmt;
238 } __attribute__ ((gcc_struct)) switchStmt;
241 struct __ecereNameSpace__ecere__sys__OldList * exp;
242 struct Statement * stmt;
243 } __attribute__ ((gcc_struct)) whileStmt;
246 struct __ecereNameSpace__ecere__sys__OldList * exp;
247 struct Statement * stmt;
248 } __attribute__ ((gcc_struct)) doWhile;
251 struct Statement * init;
252 struct Statement * check;
253 struct __ecereNameSpace__ecere__sys__OldList * increment;
254 struct Statement * stmt;
255 } __attribute__ ((gcc_struct)) forStmt;
258 struct Identifier * id;
259 } __attribute__ ((gcc_struct)) gotoStmt;
262 struct Specifier * spec;
264 struct __ecereNameSpace__ecere__sys__OldList * inputFields;
265 struct __ecereNameSpace__ecere__sys__OldList * outputFields;
266 struct __ecereNameSpace__ecere__sys__OldList * clobberedFields;
267 } __attribute__ ((gcc_struct)) asmStmt;
270 struct Expression * watcher;
271 struct Expression * object;
272 struct __ecereNameSpace__ecere__sys__OldList * watches;
273 } __attribute__ ((gcc_struct)) _watch;
276 struct Identifier * id;
277 struct __ecereNameSpace__ecere__sys__OldList * exp;
278 struct __ecereNameSpace__ecere__sys__OldList * filter;
279 struct Statement * stmt;
280 } __attribute__ ((gcc_struct)) forEachStmt;
281 struct Declaration * decl;
282 } __attribute__ ((gcc_struct));
283 } __attribute__ ((gcc_struct));
285 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_TypeName;
289 struct TypeName * prev;
290 struct TypeName * next;
292 struct __ecereNameSpace__ecere__sys__OldList * qualifiers;
293 struct Declarator * declarator;
295 struct Expression * bitCount;
296 } __attribute__ ((gcc_struct));
298 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Initializer;
302 struct Initializer * prev;
303 struct Initializer * next;
308 struct Expression * exp;
309 struct __ecereNameSpace__ecere__sys__OldList * list;
310 } __attribute__ ((gcc_struct));
311 unsigned int isConstant;
312 } __attribute__ ((gcc_struct));
314 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__DataValue;
316 struct __ecereNameSpace__ecere__com__DataValue
331 } __attribute__ ((gcc_struct));
332 } __attribute__ ((gcc_struct));
334 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Expression;
338 struct Expression * prev;
339 struct Expression * next;
347 struct Identifier * identifier;
348 } __attribute__ ((gcc_struct));
349 struct Statement * compound;
350 struct Instantiation * instance;
352 struct __ecereNameSpace__ecere__sys__OldList * list;
355 struct __ecereNameSpace__ecere__sys__OldList * specifiers;
356 struct Declarator * decl;
357 } __attribute__ ((gcc_struct)) _classExp;
360 struct Identifier * id;
361 } __attribute__ ((gcc_struct)) classData;
364 struct Expression * exp;
365 struct __ecereNameSpace__ecere__sys__OldList * arguments;
366 struct Location argLoc;
367 } __attribute__ ((gcc_struct)) call;
370 struct Expression * exp;
371 struct __ecereNameSpace__ecere__sys__OldList * index;
372 } __attribute__ ((gcc_struct)) index;
375 struct Expression * exp;
376 struct Identifier * member;
378 unsigned int thisPtr;
379 } __attribute__ ((gcc_struct)) member;
383 struct Expression * exp1;
384 struct Expression * exp2;
385 } __attribute__ ((gcc_struct)) op;
386 struct TypeName * typeName;
387 struct Specifier * _class;
390 struct TypeName * typeName;
391 struct Expression * exp;
392 } __attribute__ ((gcc_struct)) cast;
395 struct Expression * cond;
396 struct __ecereNameSpace__ecere__sys__OldList * exp;
397 struct Expression * elseExp;
398 } __attribute__ ((gcc_struct)) cond;
401 struct TypeName * typeName;
402 struct Expression * size;
403 } __attribute__ ((gcc_struct)) _new;
406 struct TypeName * typeName;
407 struct Expression * size;
408 struct Expression * exp;
409 } __attribute__ ((gcc_struct)) _renew;
413 struct Identifier * id;
414 } __attribute__ ((gcc_struct)) db;
417 struct Expression * ds;
418 struct Expression * name;
419 } __attribute__ ((gcc_struct)) dbopen;
422 struct TypeName * typeName;
423 struct Initializer * initializer;
424 } __attribute__ ((gcc_struct)) initializer;
427 struct Expression * exp;
428 struct TypeName * typeName;
429 } __attribute__ ((gcc_struct)) vaArg;
430 } __attribute__ ((gcc_struct));
431 unsigned int debugValue;
432 struct __ecereNameSpace__ecere__com__DataValue val;
433 unsigned int address;
434 unsigned int hasAddress;
435 struct Type * expType;
436 struct Type * destType;
439 unsigned int byReference;
440 unsigned int isConstant;
441 unsigned int addedThis;
442 unsigned int needCast;
443 unsigned int thisPtr;
444 } __attribute__ ((gcc_struct));
446 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_TemplateDatatype;
448 struct TemplateDatatype
450 struct __ecereNameSpace__ecere__sys__OldList * specifiers;
451 struct Declarator * decl;
452 } __attribute__ ((gcc_struct));
454 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_TemplateArgument;
456 struct TemplateArgument
458 struct TemplateArgument * prev;
459 struct TemplateArgument * next;
461 struct Identifier * name;
465 struct Expression * expression;
466 struct Identifier * identifier;
467 struct TemplateDatatype * templateDatatype;
468 } __attribute__ ((gcc_struct));
469 } __attribute__ ((gcc_struct));
471 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_TemplateParameter;
473 struct TemplateParameter
475 struct TemplateParameter * prev;
476 struct TemplateParameter * next;
479 struct Identifier * identifier;
482 struct TemplateDatatype * dataType;
484 } __attribute__ ((gcc_struct));
485 struct TemplateArgument * defaultArgument;
486 char * dataTypeString;
487 struct Type * baseType;
488 } __attribute__ ((gcc_struct));
490 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Specifier;
494 struct Specifier * prev;
495 struct Specifier * next;
503 struct ExtDecl * extDecl;
505 struct Symbol * symbol;
506 struct __ecereNameSpace__ecere__sys__OldList * templateArgs;
507 } __attribute__ ((gcc_struct));
510 struct Identifier * id;
511 struct __ecereNameSpace__ecere__sys__OldList * list;
512 struct __ecereNameSpace__ecere__sys__OldList * baseSpecs;
513 struct __ecereNameSpace__ecere__sys__OldList * definitions;
514 unsigned int addNameSpace;
515 struct Context * ctx;
516 } __attribute__ ((gcc_struct));
517 struct Expression * expression;
518 struct Specifier * _class;
519 struct TemplateParameter * templateParameter;
520 } __attribute__ ((gcc_struct));
521 } __attribute__ ((gcc_struct));
523 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Identifier;
527 struct Identifier * prev;
528 struct Identifier * next;
530 struct Symbol * classSym;
531 struct Specifier * _class;
533 struct Identifier * badID;
534 } __attribute__ ((gcc_struct));
536 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Pointer;
540 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Declarator;
544 struct Declarator * prev;
545 struct Declarator * next;
548 struct Symbol * symbol;
549 struct Declarator * declarator;
552 struct Identifier * identifier;
555 struct Expression * exp;
556 struct Expression * posExp;
557 struct Attrib * attrib;
558 } __attribute__ ((gcc_struct)) structDecl;
561 struct Expression * exp;
562 struct Specifier * enumClass;
563 } __attribute__ ((gcc_struct)) array;
566 struct __ecereNameSpace__ecere__sys__OldList * parameters;
567 } __attribute__ ((gcc_struct)) function;
570 struct Pointer * pointer;
571 } __attribute__ ((gcc_struct)) pointer;
574 struct ExtDecl * extended;
575 } __attribute__ ((gcc_struct)) extended;
576 } __attribute__ ((gcc_struct));
577 } __attribute__ ((gcc_struct));
579 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_FunctionDefinition;
581 struct FunctionDefinition
583 struct FunctionDefinition * prev;
584 struct FunctionDefinition * next;
586 struct __ecereNameSpace__ecere__sys__OldList * specifiers;
587 struct Declarator * declarator;
588 struct __ecereNameSpace__ecere__sys__OldList * declarations;
589 struct Statement * body;
590 struct __ecereNameSpace__ecere__com__Class * _class;
591 struct __ecereNameSpace__ecere__sys__OldList attached;
594 struct Symbol * propSet;
596 unsigned int propertyNoThis;
597 } __attribute__ ((gcc_struct));
599 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_DBTableDef;
603 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_External;
607 struct External * prev;
608 struct External * next;
611 struct Symbol * symbol;
614 struct FunctionDefinition * function;
615 struct ClassDefinition * _class;
616 struct Declaration * declaration;
618 struct Identifier * id;
619 struct DBTableDef * table;
620 } __attribute__ ((gcc_struct));
622 } __attribute__ ((gcc_struct));
624 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_ModuleImport;
628 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_ClassImport;
632 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Symbol;
637 struct Symbol * parent;
638 struct Symbol * left;
639 struct Symbol * right;
644 struct __ecereNameSpace__ecere__com__Method * method;
645 struct __ecereNameSpace__ecere__com__Property * _property;
646 struct __ecereNameSpace__ecere__com__Class * registered;
647 } __attribute__ ((gcc_struct));
654 struct External * pointerExternal;
655 struct External * structExternal;
656 } __attribute__ ((gcc_struct));
659 struct External * externalGet;
660 struct External * externalSet;
661 struct External * externalPtr;
662 struct External * externalIsSet;
663 } __attribute__ ((gcc_struct));
666 struct External * methodExternal;
667 struct External * methodCodeExternal;
668 } __attribute__ ((gcc_struct));
669 } __attribute__ ((gcc_struct));
670 unsigned int imported;
671 unsigned int declaredStructSym;
672 struct __ecereNameSpace__ecere__com__Class * _class;
673 unsigned int declaredStruct;
674 unsigned int needConstructor;
675 unsigned int needDestructor;
676 char * constructorName;
679 char * destructorName;
680 struct ModuleImport * module;
681 struct ClassImport * _import;
682 struct Location nameLoc;
683 unsigned int isParam;
684 unsigned int isRemote;
685 unsigned int isStruct;
686 unsigned int fireWatchersDone;
688 unsigned int classData;
689 unsigned int isStatic;
691 struct __ecereNameSpace__ecere__sys__OldList * templateParams;
692 struct __ecereNameSpace__ecere__sys__OldList templatedClasses;
693 struct Context * ctx;
695 struct Expression * propCategory;
696 } __attribute__ ((gcc_struct));
698 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Type;
707 struct Symbol * _class;
710 struct __ecereNameSpace__ecere__sys__OldList members;
712 } __attribute__ ((gcc_struct));
715 struct Type * returnType;
716 struct __ecereNameSpace__ecere__sys__OldList params;
717 struct Symbol * thisClass;
718 unsigned int staticMethod;
719 struct TemplateParameter * thisClassTemplate;
720 } __attribute__ ((gcc_struct));
723 struct __ecereNameSpace__ecere__com__Method * method;
724 struct __ecereNameSpace__ecere__com__Class * methodClass;
725 struct __ecereNameSpace__ecere__com__Class * usedClass;
726 } __attribute__ ((gcc_struct));
729 struct Type * arrayType;
731 struct Expression * arraySizeExp;
732 unsigned int freeExp;
733 struct Symbol * enumClass;
734 } __attribute__ ((gcc_struct));
736 struct TemplateParameter * templateParameter;
737 } __attribute__ ((gcc_struct));
738 unsigned int isSigned;
740 unsigned int constant;
747 unsigned int byReference;
748 unsigned int extraParam;
750 unsigned int directClassAccess;
751 unsigned int computing;
752 unsigned int dllExport;
754 unsigned int keepCast;
755 unsigned int passAsTemplate;
757 } __attribute__ ((gcc_struct));
759 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__Class;
761 struct __ecereNameSpace__ecere__com__Class
763 struct __ecereNameSpace__ecere__com__Class * prev;
764 struct __ecereNameSpace__ecere__com__Class * next;
770 int (* Constructor)(struct __ecereNameSpace__ecere__com__Instance *);
771 void (* Destructor)(struct __ecereNameSpace__ecere__com__Instance *);
774 struct __ecereNameSpace__ecere__com__Class * base;
775 struct __ecereNameSpace__ecere__sys__BinaryTree methods;
776 struct __ecereNameSpace__ecere__sys__BinaryTree members;
777 struct __ecereNameSpace__ecere__sys__BinaryTree prop;
778 struct __ecereNameSpace__ecere__sys__OldList membersAndProperties;
779 struct __ecereNameSpace__ecere__sys__BinaryTree classProperties;
780 struct __ecereNameSpace__ecere__sys__OldList derivatives;
784 struct __ecereNameSpace__ecere__com__Instance * module;
785 struct __ecereNameSpace__ecere__com__NameSpace * nameSpace;
786 char * dataTypeString;
787 struct Type * dataType;
789 int defaultAlignment;
790 void (* Initialize)();
792 struct __ecereNameSpace__ecere__sys__OldList selfWatchers;
793 char * designerClass;
794 unsigned int noExpansion;
795 char * defaultProperty;
796 unsigned int comRedefinition;
798 unsigned int isRemote;
799 unsigned int internalDecl;
801 unsigned int computeSize;
803 int destructionWatchOffset;
805 struct __ecereNameSpace__ecere__sys__OldList delayedCPValues;
806 int inheritanceAccess;
809 struct __ecereNameSpace__ecere__sys__OldList conversions;
810 struct __ecereNameSpace__ecere__sys__OldList templateParams;
811 struct __ecereNameSpace__ecere__com__ClassTemplateArgument * templateArgs;
812 struct __ecereNameSpace__ecere__com__Class * templateClass;
813 struct __ecereNameSpace__ecere__sys__OldList templatized;
815 } __attribute__ ((gcc_struct));
817 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__Instance;
819 struct __ecereNameSpace__ecere__com__Instance
822 struct __ecereNameSpace__ecere__com__Class * _class;
824 } __attribute__ ((gcc_struct));
826 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__DataMember;
828 struct __ecereNameSpace__ecere__com__DataMember
830 struct __ecereNameSpace__ecere__com__DataMember * prev;
831 struct __ecereNameSpace__ecere__com__DataMember * next;
833 unsigned int isProperty;
836 struct __ecereNameSpace__ecere__com__Class * _class;
837 char * dataTypeString;
838 struct __ecereNameSpace__ecere__com__Class * dataTypeClass;
839 struct Type * dataType;
843 struct __ecereNameSpace__ecere__sys__OldList members;
844 struct __ecereNameSpace__ecere__sys__BinaryTree membersAlpha;
847 } __attribute__ ((gcc_struct));
849 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__SerialBuffer;
851 struct __ecereNameSpace__ecere__com__SerialBuffer
853 unsigned char * _buffer;
857 } __attribute__ ((gcc_struct));
859 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__ClassTemplateArgument;
861 struct __ecereNameSpace__ecere__com__ClassTemplateArgument
867 char * dataTypeString;
868 struct __ecereNameSpace__ecere__com__Class * dataTypeClass;
869 } __attribute__ ((gcc_struct));
870 struct __ecereNameSpace__ecere__com__DataValue expression;
876 struct __ecereNameSpace__ecere__com__DataMember * member;
877 struct __ecereNameSpace__ecere__com__Property * prop;
878 struct __ecereNameSpace__ecere__com__Method * method;
879 } __attribute__ ((gcc_struct));
880 } __attribute__ ((gcc_struct));
881 } __attribute__ ((gcc_struct));
882 } __attribute__ ((gcc_struct));
886 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
889 typedef union YYSTYPE
894 struct Identifier * id;
895 struct Expression * exp;
896 struct Specifier * specifier;
897 struct __ecereNameSpace__ecere__sys__OldList * list;
898 struct Enumerator * enumerator;
899 struct Declarator * declarator;
900 struct Pointer * pointer;
901 struct Initializer * initializer;
902 struct InitDeclarator * initDeclarator;
903 struct TypeName * typeName;
904 struct Declaration * declaration;
905 struct Statement * stmt;
906 struct FunctionDefinition * function;
907 struct External * external;
908 struct Context * context;
909 struct AsmField * asmField;
910 struct Attrib * attrib;
911 struct ExtDecl * extDecl;
912 struct Attribute * attribute;
913 struct Instantiation * instance;
914 struct MembersInit * membersInit;
915 struct MemberInit * memberInit;
916 struct ClassFunction * classFunction;
917 struct ClassDefinition * _class;
918 struct ClassDef * classDef;
919 struct PropertyDef * prop;
921 struct Symbol * symbol;
922 struct PropertyWatch * propertyWatch;
923 struct TemplateParameter * templateParameter;
924 struct TemplateArgument * templateArgument;
925 struct TemplateDatatype * templateDatatype;
926 struct DBTableEntry * dbtableEntry;
927 struct DBIndexItem * dbindexItem;
928 struct DBTableDef * dbtableDef;
929 } __attribute__ ((gcc_struct)) YYSTYPE;
931 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Enumerator;
935 struct Enumerator * prev;
936 struct Enumerator * next;
938 struct Identifier * id;
939 struct Expression * exp;
940 } __attribute__ ((gcc_struct));
942 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_InitDeclarator;
944 struct InitDeclarator;
946 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_AsmField;
950 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Attribute;
954 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_ClassFunction;
958 struct ClassFunction * prev;
959 struct ClassFunction * next;
961 struct __ecereNameSpace__ecere__sys__OldList * specifiers;
962 struct Declarator * declarator;
963 struct __ecereNameSpace__ecere__sys__OldList * declarations;
964 struct Statement * body;
965 struct __ecereNameSpace__ecere__com__Class * _class;
966 struct __ecereNameSpace__ecere__sys__OldList attached;
969 struct Symbol * propSet;
970 unsigned int isVirtual;
971 unsigned int isConstructor;
972 unsigned int isDestructor;
973 unsigned int dontMangle;
976 } __attribute__ ((gcc_struct));
978 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_MembersInit;
982 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_MemberInit;
986 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_PropertyDef;
990 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_PropertyWatch;
994 struct PropertyWatch * prev;
995 struct PropertyWatch * next;
997 struct Statement * compound;
998 struct __ecereNameSpace__ecere__sys__OldList * properties;
999 unsigned int deleteWatch;
1000 } __attribute__ ((gcc_struct));
1002 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_ClassDef;
1006 struct ClassDef * prev;
1007 struct ClassDef * next;
1008 struct Location loc;
1012 struct Declaration * decl;
1013 struct ClassFunction * function;
1014 struct __ecereNameSpace__ecere__sys__OldList * defProperties;
1015 struct PropertyDef * propertyDef;
1016 struct PropertyWatch * propertyWatch;
1018 struct Identifier * defaultProperty;
1021 struct Identifier * id;
1022 struct Initializer * initializer;
1023 } __attribute__ ((gcc_struct));
1024 } __attribute__ ((gcc_struct));
1027 } __attribute__ ((gcc_struct));
1029 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_DBTableEntry;
1031 struct DBTableEntry;
1033 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_DBIndexItem;
1037 extern YYSTYPE yylval;
1039 extern struct Location yylloc;
1041 static struct Statement * registerModuleBody;
1043 static struct External * registerModuleExternal;
1045 static struct Statement * unregisterModuleBody;
1047 static struct External * unregisterModuleExternal;
1049 extern int propWatcherID;
1051 unsigned int buildingECERECOM = 0x0;
1053 void SetBuildingEcereCom(unsigned int b)
1055 buildingECERECOM = b;
1058 unsigned int GetBuildingEcereCom()
1060 return buildingECERECOM;
1063 unsigned int buildingECERECOMModule = 0x0;
1065 void SetBuildingEcereComModule(unsigned int b)
1067 buildingECERECOMModule = b;
1070 unsigned int GetBuildingEcereComModule()
1072 return buildingECERECOMModule;
1075 extern struct Identifier * GetDeclId(struct Declarator * decl);
1077 extern unsigned int inCompiler;
1079 extern struct __ecereNameSpace__ecere__sys__OldList * MkList(void);
1081 extern struct Specifier * MkSpecifier(int specifier);
1083 extern void ReplaceThisClassSpecifiers(struct __ecereNameSpace__ecere__sys__OldList * specs, struct __ecereNameSpace__ecere__com__Class * _class);
1085 extern struct FunctionDefinition * MkFunction(struct __ecereNameSpace__ecere__sys__OldList * specifiers, struct Declarator * declarator, struct __ecereNameSpace__ecere__sys__OldList * declarationList);
1087 extern void ProcessFunctionBody(struct FunctionDefinition * func, struct Statement * body);
1089 extern struct External * MkExternalFunction(struct FunctionDefinition * function);
1091 extern void ProcessMethodType(struct __ecereNameSpace__ecere__com__Method * method);
1093 extern struct __ecereNameSpace__ecere__com__ClassTemplateArgument * FindTemplateArg(struct __ecereNameSpace__ecere__com__Class * _class, struct TemplateParameter * param);
1095 extern struct Type * ProcessTypeString(char * string, unsigned int staticMethod);
1097 extern struct Symbol * FindClass(char * name);
1099 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);
1101 extern void Compiler_Error(char * format, ...);
1103 extern char * __ecereNameSpace__ecere__GetTranslatedString(struct __ecereNameSpace__ecere__com__Instance * module, char * string, char * stringAndContext);
1105 extern struct __ecereNameSpace__ecere__com__Instance * __thisModule;
1107 extern struct Declarator * GetFuncDecl(struct Declarator * decl);
1109 extern void FreeType(struct Type * type);
1111 extern void FreeExternal(struct External * external);
1113 extern struct Context * globalContext;
1115 extern struct __ecereNameSpace__ecere__sys__OldList * excludedSymbols;
1117 extern struct Declarator * CopyDeclarator(struct Declarator * declarator);
1119 extern struct __ecereNameSpace__ecere__sys__OldList * CopyList(struct __ecereNameSpace__ecere__sys__OldList * source, void * (* )(void * ));
1121 extern struct Specifier * CopySpecifier(struct Specifier * spec);
1123 unsigned int __ecereMethod___ecereNameSpace__ecere__sys__OldList_Insert(struct __ecereNameSpace__ecere__sys__OldList * this, void * prevItem, void * item);
1125 void __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Remove(struct __ecereNameSpace__ecere__sys__BinaryTree * this, struct __ecereNameSpace__ecere__sys__BTNode * node);
1127 void __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add(struct __ecereNameSpace__ecere__sys__OldList * this, void * item);
1129 struct External * ProcessClassFunction(struct __ecereNameSpace__ecere__com__Class * owningClass, struct ClassFunction * func, struct __ecereNameSpace__ecere__sys__OldList * defs, struct External * after, unsigned int makeStatic)
1131 struct Identifier * id = GetDeclId(func->declarator);
1132 struct Type * type = (((void *)0));
1133 struct Symbol * symbol;
1134 struct External * external = (((void *)0));
1136 if(defs && func->declarator)
1138 struct FunctionDefinition * function = (((void *)0));
1139 struct Symbol * propSymbol;
1140 int symid = func->declarator->symbol->id;
1141 int symidCode = func->declarator->symbol->idCode;
1145 if(!func->specifiers)
1146 func->specifiers = MkList();
1148 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Insert((&*func->specifiers), (((void *)0)), MkSpecifier(STATIC));
1150 propSymbol = func->declarator->symbol;
1151 ReplaceThisClassSpecifiers(func->specifiers, owningClass);
1152 if(propSymbol->externalGet == (struct External *)func)
1153 func->declarator->symbol = (((void *)0));
1154 else if(propSymbol->externalSet == (struct External *)func)
1156 func->declarator->symbol = (((void *)0));
1159 else if(propSymbol->externalIsSet == (struct External *)func)
1161 func->declarator->symbol = (((void *)0));
1165 function = MkFunction(func->specifiers, func->declarator, (((void *)0)));
1166 function->propSet = func->propSet;
1167 ProcessFunctionBody(function, func->body);
1168 external = MkExternalFunction(function);
1169 external->symbol = func->declarator->symbol;
1170 external->function->_class = func->_class;
1172 symbol = func->declarator->symbol;
1174 symbol->idCode = symidCode;
1175 if(!func->dontMangle)
1177 struct __ecereNameSpace__ecere__com__Method * method = func->declarator->symbol->method;
1179 func->declarator->symbol->methodExternal = external;
1180 if(method && method->symbol)
1181 ((struct Symbol *)method->symbol)->methodCodeExternal = external;
1182 if(method && method->type == 1)
1184 struct Type * methodDataType;
1186 ProcessMethodType(method);
1187 methodDataType = method->dataType;
1188 type = symbol->type;
1189 if(!type->staticMethod && !type->thisClass && !type->thisClassTemplate)
1191 if(method->dataType->thisClassTemplate)
1193 if(owningClass->templateArgs)
1195 struct __ecereNameSpace__ecere__com__ClassTemplateArgument * arg = FindTemplateArg(owningClass, method->dataType->thisClassTemplate);
1197 type->byReference = method->dataType->byReference;
1198 methodDataType = ProcessTypeString(method->dataTypeString, 0x0);
1199 type->thisClass = methodDataType->thisClass = arg ? FindClass((*arg).dataTypeString) : (((void *)0));
1202 else if(method->dataType->staticMethod)
1203 type->staticMethod = 0x1;
1204 else if(method->dataType->thisClass)
1206 type->thisClass = method->dataType->thisClass;
1207 type->byReference = method->dataType->byReference;
1211 if(!owningClass->symbol)
1212 owningClass->symbol = FindClass(owningClass->fullName);
1213 type->thisClass = owningClass->symbol;
1214 type->extraParam = 0x1;
1218 if(!MatchTypes(type, methodDataType, (((void *)0)), owningClass, method->_class, 0x1, 0x1, 0x1, 0x0))
1220 Compiler_Error(__ecereNameSpace__ecere__GetTranslatedString(__thisModule, "Incompatible virtual function %s\n", (((void *)0))), method->name);
1224 struct Type * typeParam;
1225 struct Declarator * funcDecl = GetFuncDecl(func->declarator);
1227 if(funcDecl->function.parameters)
1229 struct TypeName * param = (*funcDecl->function.parameters).first;
1231 for(typeParam = methodDataType->params.first; typeParam; typeParam = typeParam->next)
1233 if(typeParam->classObjectType)
1235 param->classObjectType = typeParam->classObjectType;
1236 if(param->declarator && param->declarator->symbol)
1237 param->declarator->symbol->type->classObjectType = typeParam->classObjectType;
1239 param = param->next;
1243 if(methodDataType != method->dataType)
1244 FreeType(methodDataType);
1248 type = symbol->type;
1249 if(!type->staticMethod && !type->thisClass)
1251 if(owningClass && !owningClass->symbol)
1252 owningClass->symbol = FindClass(owningClass->fullName);
1253 type->thisClass = owningClass ? FindClass(owningClass->fullName) : (((void *)0));
1259 if(symbol->type && !symbol->type->staticMethod && !symbol->type->thisClass)
1261 if(!owningClass->symbol)
1262 owningClass->symbol = FindClass(owningClass->fullName);
1263 symbol->type->thisClass = owningClass->symbol;
1265 if(propSymbol->externalSet == (struct External *)func && propSymbol->_property && propSymbol->_property->conversion)
1267 if(symbol->type->thisClass && symbol->type->classObjectType != 1)
1269 if(owningClass->type != 1)
1270 symbol->type->thisClass = (((void *)0));
1273 if(propSymbol->externalGet == (struct External *)func)
1275 propSymbol->externalGet = external;
1277 else if(propSymbol->externalSet == (struct External *)func)
1279 propSymbol->externalSet = external;
1281 else if(propSymbol->externalIsSet == (struct External *)func)
1283 propSymbol->externalIsSet = external;
1293 func->declarator = (((void *)0));
1294 func->specifiers = (((void *)0));
1295 func->body = (((void *)0));
1296 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Insert(defs, after, external);
1300 struct __ecereNameSpace__ecere__com__Method * method = func->declarator->symbol->method;
1302 if(method && method->symbol)
1303 ((struct Symbol *)method->symbol)->methodCodeExternal = (((void *)0));
1304 func->declarator = (((void *)0));
1305 func->specifiers = (((void *)0));
1306 FreeExternal(external);
1311 __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Remove(&globalContext->symbols, (struct __ecereNameSpace__ecere__sys__BTNode *)symbol);
1312 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*excludedSymbols), symbol);
1313 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Insert(defs, after, external);
1314 external->function->declarator = CopyDeclarator(external->function->declarator);
1315 external->function->specifiers = CopyList(external->function->specifiers, CopySpecifier);
1316 external->function->body = (((void *)0));
1322 extern struct Statement * MkCompoundStmt(struct __ecereNameSpace__ecere__sys__OldList * declarations, struct __ecereNameSpace__ecere__sys__OldList * statements);
1324 extern void ListAdd(struct __ecereNameSpace__ecere__sys__OldList * list, void * item);
1326 extern struct Declaration * MkDeclaration(struct __ecereNameSpace__ecere__sys__OldList * specifiers, struct __ecereNameSpace__ecere__sys__OldList * initDeclarators);
1328 extern struct __ecereNameSpace__ecere__sys__OldList * MkListOne(void * item);
1330 extern struct Specifier * MkSpecifierName(char * name);
1332 extern struct InitDeclarator * MkInitDeclarator(struct Declarator * declarator, struct Initializer * initializer);
1334 extern struct Declarator * MkDeclaratorIdentifier(struct Identifier * id);
1336 extern struct Identifier * MkIdentifier(char * string);
1338 extern struct TypeName * MkTypeName(struct __ecereNameSpace__ecere__sys__OldList * qualifiers, struct Declarator * declarator);
1340 extern char * __ecereNameSpace__ecere__sys__GetLastDirectory(char * string, char * output);
1342 extern char * outputFile;
1344 extern unsigned int __ecereNameSpace__ecere__sys__StripExtension(char * string);
1346 extern void __ecereNameSpace__ecere__sys__ChangeCh(char * string, char ch1, char ch2);
1348 extern int sprintf(char * , char * , ...);
1350 extern struct Declarator * MkDeclaratorFunction(struct Declarator * declarator, struct __ecereNameSpace__ecere__sys__OldList * parameters);
1352 extern struct __ecereNameSpace__ecere__sys__OldList * ast;
1354 extern void * __ecereNameSpace__ecere__com__eInstance_New(struct __ecereNameSpace__ecere__com__Class * _class);
1356 void CreateRegisterModuleBody()
1358 void * __ecereTemp1;
1360 if(!registerModuleBody && inCompiler)
1362 char registerName[1024], moduleName[274];
1363 struct __ecereNameSpace__ecere__sys__OldList * specifiers;
1364 struct Declarator * declarator;
1365 struct TypeName * moduleParam;
1367 registerModuleBody = MkCompoundStmt(MkList(), MkList());
1368 registerModuleBody->compound.context = (__ecereTemp1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Context), ((struct Context *)__ecereTemp1)->parent = globalContext, ((struct Context *)__ecereTemp1));
1369 ListAdd(registerModuleBody->compound.declarations, MkDeclaration(MkListOne(MkSpecifierName("ecere::com::Class")), MkListOne(MkInitDeclarator(MkDeclaratorIdentifier(MkIdentifier("class")), (((void *)0))))));
1370 specifiers = MkList();
1371 ListAdd(specifiers, MkSpecifier(VOID));
1372 moduleParam = MkTypeName(MkListOne(MkSpecifierName("Module")), MkDeclaratorIdentifier(MkIdentifier("module")));
1373 __ecereNameSpace__ecere__sys__GetLastDirectory(outputFile, moduleName);
1374 __ecereNameSpace__ecere__sys__StripExtension(moduleName);
1375 __ecereNameSpace__ecere__sys__ChangeCh(moduleName, '.', '_');
1376 __ecereNameSpace__ecere__sys__ChangeCh(moduleName, ' ', '_');
1377 __ecereNameSpace__ecere__sys__ChangeCh(moduleName, '-', '_');
1378 sprintf(registerName, "__ecereRegisterModule_%s", moduleName);
1379 declarator = MkDeclaratorFunction(MkDeclaratorIdentifier(MkIdentifier(registerName)), MkListOne(moduleParam));
1381 struct FunctionDefinition * function = MkFunction(specifiers, declarator, (((void *)0)));
1383 ProcessFunctionBody(function, registerModuleBody);
1384 function->declMode = 0;
1387 ListAdd(ast, (registerModuleExternal = MkExternalFunction(function)));
1390 if(!unregisterModuleBody && inCompiler)
1392 char registerName[1024], moduleName[274];
1393 struct __ecereNameSpace__ecere__sys__OldList * specifiers;
1394 struct Declarator * declarator;
1395 struct TypeName * moduleParam;
1397 unregisterModuleBody = MkCompoundStmt(MkList(), MkList());
1398 unregisterModuleBody->compound.context = (__ecereTemp1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Context), ((struct Context *)__ecereTemp1)->parent = globalContext, ((struct Context *)__ecereTemp1));
1399 specifiers = MkList();
1400 ListAdd(specifiers, MkSpecifier(VOID));
1401 moduleParam = MkTypeName(MkListOne(MkSpecifierName("Module")), MkDeclaratorIdentifier(MkIdentifier("module")));
1402 __ecereNameSpace__ecere__sys__GetLastDirectory(outputFile, moduleName);
1403 __ecereNameSpace__ecere__sys__StripExtension(moduleName);
1404 __ecereNameSpace__ecere__sys__ChangeCh(moduleName, '.', '_');
1405 __ecereNameSpace__ecere__sys__ChangeCh(moduleName, ' ', '_');
1406 __ecereNameSpace__ecere__sys__ChangeCh(moduleName, '-', '_');
1407 sprintf(registerName, "__ecereUnregisterModule_%s", moduleName);
1408 declarator = MkDeclaratorFunction(MkDeclaratorIdentifier(MkIdentifier(registerName)), MkListOne(moduleParam));
1410 struct FunctionDefinition * function = MkFunction(specifiers, declarator, (((void *)0)));
1412 ProcessFunctionBody(function, unregisterModuleBody);
1413 function->declMode = 0;
1416 ListAdd(ast, (unregisterModuleExternal = MkExternalFunction(function)));
1421 extern struct Expression * MkExpIdentifier(struct Identifier * id);
1423 extern struct Expression * MkExpConstant(char * string);
1425 extern char * QMkString(char * source);
1427 extern struct Expression * MkExpString(char * string);
1429 extern char * strcpy(char * , const char * );
1431 extern void FullClassNameCat(char * output, char * className, unsigned int includeTemplateParams);
1433 extern char * strcat(char * , const char * );
1435 extern void MangleClassName(char * className);
1437 extern struct Statement * MkExpressionStmt(struct __ecereNameSpace__ecere__sys__OldList * expressions);
1439 extern struct Expression * MkExpOp(struct Expression * exp1, int op, struct Expression * exp2);
1441 extern struct Expression * MkExpCall(struct Expression * expression, struct __ecereNameSpace__ecere__sys__OldList * arguments);
1443 extern struct Expression * MkExpMember(struct Expression * expression, struct Identifier * member);
1445 extern struct Expression * MkExpCast(struct TypeName * typeName, struct Expression * expression);
1447 extern struct Declarator * MkDeclaratorPointer(struct Pointer * pointer, struct Declarator * declarator);
1449 extern struct Pointer * MkPointer(struct __ecereNameSpace__ecere__sys__OldList * qualifiers, struct Pointer * pointer);
1451 extern struct Expression * CopyExpression(struct Expression * exp);
1453 extern struct Statement * MkIfStmt(struct __ecereNameSpace__ecere__sys__OldList * exp, struct Statement * statement, struct Statement * elseStmt);
1455 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__BitMember;
1457 struct __ecereNameSpace__ecere__com__BitMember
1459 struct __ecereNameSpace__ecere__com__BitMember * prev;
1460 struct __ecereNameSpace__ecere__com__BitMember * next;
1462 unsigned int isProperty;
1465 struct __ecereNameSpace__ecere__com__Class * _class;
1466 char * dataTypeString;
1467 struct __ecereNameSpace__ecere__com__Class * dataTypeClass;
1468 struct Type * dataType;
1473 } __attribute__ ((gcc_struct));
1475 extern int ComputeTypeSize(struct Type * type);
1477 extern struct Context * curContext;
1479 extern struct Context * PushContext(void);
1481 extern struct Initializer * MkInitializerAssignment(struct Expression * exp);
1483 extern void PopContext(struct Context * ctx);
1485 extern struct Expression * MkExpCondition(struct Expression * cond, struct __ecereNameSpace__ecere__sys__OldList * expressions, struct Expression * elseExp);
1487 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__ClassProperty;
1489 struct __ecereNameSpace__ecere__com__ClassProperty
1492 struct __ecereNameSpace__ecere__com__ClassProperty * parent;
1493 struct __ecereNameSpace__ecere__com__ClassProperty * left;
1494 struct __ecereNameSpace__ecere__com__ClassProperty * right;
1496 void (* Set)(struct __ecereNameSpace__ecere__com__Class *, int);
1497 int (* Get)(struct __ecereNameSpace__ecere__com__Class *);
1498 char * dataTypeString;
1499 struct Type * dataType;
1500 unsigned int constant;
1501 } __attribute__ ((gcc_struct));
1503 struct __ecereNameSpace__ecere__sys__BTNode * __ecereProp___ecereNameSpace__ecere__sys__BinaryTree_Get_first(struct __ecereNameSpace__ecere__sys__BinaryTree * this);
1505 extern struct __ecereNameSpace__ecere__com__Property ** __ecereProp___ecereNameSpace__ecere__sys__BinaryTree_first;
1507 struct __ecereNameSpace__ecere__sys__BTNode * __ecereProp___ecereNameSpace__ecere__sys__BTNode_Get_next(struct __ecereNameSpace__ecere__sys__BTNode * this);
1509 extern struct __ecereNameSpace__ecere__com__Property ** __ecereProp___ecereNameSpace__ecere__sys__BTNode_next;
1511 void RegisterMembersAndProperties(struct __ecereNameSpace__ecere__com__Class * regClass, unsigned int isMember, char * className, struct Statement * statement)
1513 struct __ecereNameSpace__ecere__com__DataMember * dataMember = isMember ? (struct __ecereNameSpace__ecere__com__DataMember *)regClass : (((void *)0));
1514 struct __ecereNameSpace__ecere__com__DataMember * member;
1515 struct __ecereNameSpace__ecere__com__Property * prop;
1516 struct Expression * exp;
1517 struct Statement * stmt;
1518 char dataMemberSize[16];
1519 unsigned int lastOffset = 0;
1521 unsigned int privateMembers = 0x0;
1523 sprintf(dataMemberSize, "%d", sizeof(struct __ecereNameSpace__ecere__com__DataMember *));
1526 for(prop = regClass->conversions.first; prop; prop = prop->next)
1528 struct __ecereNameSpace__ecere__sys__OldList * args = MkList();
1531 ListAdd(args, MkExpIdentifier(MkIdentifier(className)));
1532 ListAdd(args, MkExpConstant("0"));
1534 char * string = QMkString(prop->dataTypeString);
1536 ListAdd(args, MkExpString(string));
1537 (__ecereNameSpace__ecere__com__eSystem_Delete(string), string = 0);
1541 strcpy(name, "__ecereProp_");
1542 FullClassNameCat(name, regClass->fullName, 0x0);
1543 strcat(name, "_Set_");
1544 FullClassNameCat(name, prop->name, 0x1);
1545 MangleClassName(name);
1546 ListAdd(args, MkExpIdentifier(MkIdentifier(name)));
1549 ListAdd(args, MkExpConstant("0"));
1552 strcpy(name, "__ecereProp_");
1553 FullClassNameCat(name, regClass->fullName, 0x0);
1554 strcat(name, "_Get_");
1555 FullClassNameCat(name, prop->name, 0x1);
1556 MangleClassName(name);
1557 ListAdd(args, MkExpIdentifier(MkIdentifier(name)));
1560 ListAdd(args, MkExpConstant("0"));
1561 switch(prop->memberAccess)
1564 ListAdd(args, MkExpIdentifier(MkIdentifier("staticAccess")));
1567 ListAdd(args, MkExpIdentifier(MkIdentifier("privateAccess")));
1571 ListAdd(args, MkExpIdentifier(MkIdentifier("publicAccess")));
1574 strcpy(name, "__ecereProp_");
1575 FullClassNameCat(name, regClass->fullName, 0x0);
1577 FullClassNameCat(name, prop->name, 0x1);
1578 MangleClassName(name);
1579 stmt = MkExpressionStmt(MkListOne(MkExpOp(MkExpIdentifier(MkIdentifier(name)), '=', MkExpCall(MkExpIdentifier(MkIdentifier("eClass_AddProperty")), args))));
1580 ListAdd(registerModuleBody->compound.statements, stmt);
1583 for(member = isMember ? dataMember->members.first : regClass->membersAndProperties.first; member; member = member->next)
1585 if(member->isProperty)
1587 prop = (struct __ecereNameSpace__ecere__com__Property *)member;
1589 struct __ecereNameSpace__ecere__sys__OldList * args = MkList();
1590 char name[1024], nameM[1024];
1591 char * string = QMkString(prop->name);
1593 ListAdd(args, MkExpIdentifier(MkIdentifier(className)));
1594 ListAdd(args, MkExpString(string));
1595 (__ecereNameSpace__ecere__com__eSystem_Delete(string), string = 0);
1597 char * string = QMkString(prop->dataTypeString);
1599 ListAdd(args, MkExpString(string));
1600 (__ecereNameSpace__ecere__com__eSystem_Delete(string), string = 0);
1604 strcpy(name, "__ecereProp_");
1605 FullClassNameCat(name, regClass->fullName, 0x0);
1606 strcat(name, "_Set_");
1607 FullClassNameCat(name, prop->name, 0x1);
1608 MangleClassName(name);
1609 ListAdd(args, MkExpIdentifier(MkIdentifier(name)));
1612 ListAdd(args, MkExpConstant("0"));
1615 strcpy(name, "__ecereProp_");
1616 FullClassNameCat(name, regClass->fullName, 0x0);
1617 strcat(name, "_Get_");
1618 FullClassNameCat(name, prop->name, 0x1);
1619 MangleClassName(name);
1620 ListAdd(args, MkExpIdentifier(MkIdentifier(name)));
1623 ListAdd(args, MkExpConstant("0"));
1624 switch(prop->memberAccess)
1627 ListAdd(args, MkExpIdentifier(MkIdentifier("staticAccess")));
1630 ListAdd(args, MkExpIdentifier(MkIdentifier("privateAccess")));
1634 ListAdd(args, MkExpIdentifier(MkIdentifier("publicAccess")));
1637 strcpy(name, "__ecereProp_");
1638 FullClassNameCat(name, regClass->fullName, 0x0);
1640 FullClassNameCat(name, prop->name, 0x1);
1641 MangleClassName(name);
1642 strcpy(nameM, "__ecerePropM_");
1643 FullClassNameCat(nameM, regClass->fullName, 0x0);
1645 FullClassNameCat(nameM, prop->name, 0x1);
1646 MangleClassName(nameM);
1647 if(prop->dataTypeString)
1649 stmt = MkExpressionStmt(MkListOne(MkExpOp(MkExpIdentifier(MkIdentifier(nameM)), '=', MkExpCall(MkExpIdentifier(MkIdentifier("eClass_AddProperty")), args))));
1653 stmt = MkExpressionStmt(MkListOne(MkExpCall(MkExpIdentifier(MkIdentifier("eClass_AddProperty")), args)));
1655 ListAdd(registerModuleBody->compound.statements, stmt);
1660 strcpy(name, "__ecereProp_");
1661 FullClassNameCat(name, regClass->fullName, 0x1);
1662 strcat(name, "_IsSet_");
1663 FullClassNameCat(name, prop->name, 0x0);
1664 MangleClassName(name);
1665 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))))));
1666 ListAdd(registerModuleBody->compound.statements, stmt);
1668 if(((struct Symbol *)prop->symbol)->propCategory)
1670 stmt = MkExpressionStmt(MkListOne(MkExpOp(MkExpMember(MkExpIdentifier(MkIdentifier(nameM)), MkIdentifier("category")), '=', CopyExpression(((struct Symbol *)prop->symbol)->propCategory))));
1671 ListAdd(registerModuleBody->compound.statements, stmt);
1673 if(prop->dataTypeString)
1675 struct __ecereNameSpace__ecere__sys__OldList * list = MkList();
1677 ListAdd(list, MkExpOp(MkExpIdentifier(MkIdentifier(name)), '=', MkExpIdentifier(MkIdentifier(nameM))));
1678 ListAdd(list, MkExpOp(MkExpIdentifier(MkIdentifier(nameM)), '=', MkExpCast(MkTypeName(MkListOne(MkSpecifier(VOID)), MkDeclaratorPointer(MkPointer((((void *)0)), (((void *)0))), (((void *)0)))), MkExpConstant("0"))));
1679 stmt = MkIfStmt(MkListOne(MkExpOp(MkExpMember(MkExpIdentifier(MkIdentifier("module")), MkIdentifier("application")), EQ_OP, MkExpMember(MkExpIdentifier(MkIdentifier("__thisModule")), MkIdentifier("application")))), MkExpressionStmt(list), (((void *)0)));
1680 ListAdd(registerModuleBody->compound.statements, stmt);
1681 stmt = MkExpressionStmt(MkListOne(MkExpOp(MkExpIdentifier(MkIdentifier(nameM)), '=', MkExpCast(MkTypeName(MkListOne(MkSpecifier(VOID)), MkDeclaratorPointer(MkPointer((((void *)0)), (((void *)0))), (((void *)0)))), MkExpConstant("0")))));
1682 ListAdd(unregisterModuleBody->compound.statements, stmt);
1686 else if(member->type == 0 && !isMember && regClass->type == 2)
1688 struct __ecereNameSpace__ecere__com__BitMember * bitMember = (struct __ecereNameSpace__ecere__com__BitMember *)member;
1689 struct __ecereNameSpace__ecere__sys__OldList * args = MkList();
1691 ListAdd(args, MkExpIdentifier(MkIdentifier(className)));
1693 char * string = QMkString(bitMember->name);
1695 ListAdd(args, MkExpString(string));
1696 (__ecereNameSpace__ecere__com__eSystem_Delete(string), string = 0);
1699 char * string = QMkString(bitMember->dataTypeString);
1701 ListAdd(args, MkExpString(string));
1702 (__ecereNameSpace__ecere__com__eSystem_Delete(string), string = 0);
1707 sprintf(string, "%d", bitMember->size);
1708 ListAdd(args, (exp = MkExpConstant(string)));
1713 sprintf(string, "%d", bitMember->pos);
1714 ListAdd(args, (exp = MkExpConstant(string)));
1716 switch(member->memberAccess)
1719 ListAdd(args, MkExpIdentifier(MkIdentifier("staticAccess")));
1722 ListAdd(args, MkExpIdentifier(MkIdentifier("privateAccess")));
1726 ListAdd(args, MkExpIdentifier(MkIdentifier("publicAccess")));
1729 stmt = MkExpressionStmt(MkListOne(MkExpCall(MkExpIdentifier(MkIdentifier("eClass_AddBitMember")), args)));
1730 ListAdd(statement->compound.statements, stmt);
1732 else if(member->memberAccess == 1 || (member->type == 0 && !member->dataTypeString))
1734 struct __ecereNameSpace__ecere__sys__OldList * args;
1738 unsigned int offset = member->offset - lastOffset;
1741 ListAdd(args, MkExpIdentifier(MkIdentifier(className)));
1745 sprintf(string, "\"__ecerePrivateData%d\"", privateID++);
1746 ListAdd(args, MkExpString(string));
1751 sprintf(string, "\"byte[%d]\"", offset);
1752 ListAdd(args, MkExpString(string));
1757 sprintf(string, "%d", offset);
1758 ListAdd(args, (exp = MkExpConstant(string)));
1760 ListAdd(args, (exp = MkExpConstant("1")));
1761 ListAdd(args, MkExpIdentifier(MkIdentifier("privateAccess")));
1762 stmt = MkExpressionStmt(MkListOne(MkExpCall(MkExpIdentifier(MkIdentifier(isMember ? "eMember_AddDataMember" : "eClass_AddDataMember")), args)));
1763 ListAdd(statement->compound.statements, stmt);
1764 privateMembers = 0x0;
1766 if(member->type == 0)
1768 if(!member->dataType)
1769 member->dataType = ProcessTypeString(member->dataTypeString, 0x0);
1770 ComputeTypeSize(member->dataType);
1772 ListAdd(args, MkExpIdentifier(MkIdentifier(className)));
1774 char * string = QMkString(member->name);
1776 ListAdd(args, MkExpString(string));
1777 (__ecereNameSpace__ecere__com__eSystem_Delete(string), string = 0);
1780 char * string = QMkString(member->dataTypeString);
1782 ListAdd(args, MkExpString(string));
1783 (__ecereNameSpace__ecere__com__eSystem_Delete(string), string = 0);
1788 sprintf(string, "%d", member->dataType->size);
1789 ListAdd(args, (exp = MkExpConstant(string)));
1794 sprintf(string, "%d", member->dataType->alignment);
1795 ListAdd(args, (exp = MkExpConstant(string)));
1797 switch(member->memberAccess)
1800 ListAdd(args, MkExpIdentifier(MkIdentifier("staticAccess")));
1803 ListAdd(args, MkExpIdentifier(MkIdentifier("privateAccess")));
1807 ListAdd(args, MkExpIdentifier(MkIdentifier("publicAccess")));
1810 stmt = MkExpressionStmt(MkListOne(MkExpCall(MkExpIdentifier(MkIdentifier(isMember ? "eMember_AddDataMember" : "eClass_AddDataMember")), args)));
1811 ListAdd(statement->compound.statements, stmt);
1812 lastOffset = member->offset + member->dataType->size;
1816 static int memberCount = 0;
1817 struct Context * context;
1818 struct Statement * compound;
1819 char memberName[256];
1821 sprintf(memberName, "dataMember%d", memberCount);
1823 curContext = statement->compound.context;
1824 context = PushContext();
1825 args = MkListOne(MkExpIdentifier(MkIdentifier((member->type == 1) ? "unionMember" : "structMember")));
1826 switch(member->memberAccess)
1829 ListAdd(args, MkExpIdentifier(MkIdentifier("staticAccess")));
1832 ListAdd(args, MkExpIdentifier(MkIdentifier("privateAccess")));
1836 ListAdd(args, MkExpIdentifier(MkIdentifier("publicAccess")));
1839 compound = MkCompoundStmt(MkListOne(MkDeclaration(MkListOne(MkSpecifierName("DataMember")), MkListOne(MkInitDeclarator(MkDeclaratorIdentifier(MkIdentifier(memberName)), MkInitializerAssignment(MkExpCall(MkExpIdentifier(MkIdentifier("eMember_New")), args)))))), MkList());
1840 compound->compound.context = context;
1842 ListAdd(args, MkExpIdentifier(MkIdentifier(className)));
1843 ListAdd(args, MkExpIdentifier(MkIdentifier(memberName)));
1844 RegisterMembersAndProperties((struct __ecereNameSpace__ecere__com__Class *)member, 0x1, memberName, compound);
1846 stmt = MkExpressionStmt(MkListOne(MkExpCall(MkExpIdentifier(MkIdentifier("eMember_AddMember")), args)));
1848 stmt = MkExpressionStmt(MkListOne(MkExpCall(MkExpIdentifier(MkIdentifier("eClass_AddMember")), args)));
1849 ListAdd(compound->compound.statements, stmt);
1850 PopContext(context);
1851 ListAdd(statement->compound.statements, compound);
1853 lastOffset = member->offset + member->memberOffset;
1857 privateMembers = 0x1;
1861 struct __ecereNameSpace__ecere__com__ClassProperty * classProperty;
1863 for(prop = regClass->membersAndProperties.first; prop; prop = prop->next)
1865 if(prop->isProperty && prop->isWatchable)
1867 struct __ecereNameSpace__ecere__sys__OldList * args;
1868 char name[1024], nameM[1024];
1870 strcpy(name, "__ecereProp_");
1871 FullClassNameCat(name, regClass->fullName, 0x1);
1873 FullClassNameCat(name, prop->name, 0x0);
1874 MangleClassName(name);
1875 strcpy(nameM, "__ecerePropM_");
1876 FullClassNameCat(nameM, regClass->fullName, 0x1);
1878 FullClassNameCat(nameM, prop->name, 0x0);
1879 MangleClassName(nameM);
1880 args = MkListOne(MkExpCondition(MkExpIdentifier(MkIdentifier(nameM)), MkListOne(MkExpIdentifier(MkIdentifier(nameM))), MkExpIdentifier(MkIdentifier(name))));
1881 stmt = MkExpressionStmt(MkListOne(MkExpCall(MkExpIdentifier(MkIdentifier("eProperty_Watchable")), args)));
1882 ListAdd(registerModuleBody->compound.statements, stmt);
1885 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)))
1887 struct __ecereNameSpace__ecere__sys__OldList * args = MkList();
1889 char * string = QMkString(classProperty->name);
1891 ListAdd(args, MkExpIdentifier(MkIdentifier(className)));
1892 ListAdd(args, MkExpString(string));
1893 (__ecereNameSpace__ecere__com__eSystem_Delete(string), string = 0);
1895 char * string = QMkString(classProperty->dataTypeString);
1897 ListAdd(args, MkExpString(string));
1898 (__ecereNameSpace__ecere__com__eSystem_Delete(string), string = 0);
1900 if(classProperty->Set)
1902 strcpy(name, "__ecereClassProp_");
1903 FullClassNameCat(name, regClass->fullName, 0x1);
1904 strcat(name, "_Set_");
1905 strcat(name, classProperty->name);
1906 MangleClassName(name);
1907 ListAdd(args, MkExpIdentifier(MkIdentifier(name)));
1910 ListAdd(args, MkExpConstant("0"));
1911 if(classProperty->Get)
1913 strcpy(name, "__ecereClassProp_");
1914 FullClassNameCat(name, regClass->fullName, 0x1);
1915 strcat(name, "_Get_");
1916 strcat(name, classProperty->name);
1917 MangleClassName(name);
1918 ListAdd(args, MkExpIdentifier(MkIdentifier(name)));
1921 ListAdd(args, MkExpConstant("0"));
1922 stmt = MkExpressionStmt(MkListOne(MkExpCall(MkExpIdentifier(MkIdentifier("eClass_AddClassProperty")), args)));
1923 ListAdd(registerModuleBody->compound.statements, stmt);
1928 extern struct External * curExternal;
1930 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__NameSpace;
1932 struct __ecereNameSpace__ecere__com__NameSpace
1935 struct __ecereNameSpace__ecere__com__NameSpace * btParent;
1936 struct __ecereNameSpace__ecere__com__NameSpace * left;
1937 struct __ecereNameSpace__ecere__com__NameSpace * right;
1939 struct __ecereNameSpace__ecere__com__NameSpace * parent;
1940 struct __ecereNameSpace__ecere__sys__BinaryTree nameSpaces;
1941 struct __ecereNameSpace__ecere__sys__BinaryTree classes;
1942 struct __ecereNameSpace__ecere__sys__BinaryTree defines;
1943 struct __ecereNameSpace__ecere__sys__BinaryTree functions;
1944 } __attribute__ ((gcc_struct));
1946 void GetNameSpaceString(struct __ecereNameSpace__ecere__com__NameSpace * ns, char * string)
1949 GetNameSpaceString(ns->parent, string);
1952 strcat(string, ns->name);
1953 strcat(string, "::");
1957 extern unsigned int parsingType;
1959 extern void ProcessExpressionType(struct Expression * exp);
1961 extern void ComputeExpression(struct Expression * exp);
1963 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_OpTable;
1967 unsigned int (* Add)(struct Expression *, struct Operand *, struct Operand *);
1968 unsigned int (* Sub)(struct Expression *, struct Operand *, struct Operand *);
1969 unsigned int (* Mul)(struct Expression *, struct Operand *, struct Operand *);
1970 unsigned int (* Div)(struct Expression *, struct Operand *, struct Operand *);
1971 unsigned int (* Mod)(struct Expression *, struct Operand *, struct Operand *);
1972 unsigned int (* Neg)(struct Expression *, struct Operand *);
1973 unsigned int (* Inc)(struct Expression *, struct Operand *);
1974 unsigned int (* Dec)(struct Expression *, struct Operand *);
1975 unsigned int (* Asign)(struct Expression *, struct Operand *, struct Operand *);
1976 unsigned int (* AddAsign)(struct Expression *, struct Operand *, struct Operand *);
1977 unsigned int (* SubAsign)(struct Expression *, struct Operand *, struct Operand *);
1978 unsigned int (* MulAsign)(struct Expression *, struct Operand *, struct Operand *);
1979 unsigned int (* DivAsign)(struct Expression *, struct Operand *, struct Operand *);
1980 unsigned int (* ModAsign)(struct Expression *, struct Operand *, struct Operand *);
1981 unsigned int (* BitAnd)(struct Expression *, struct Operand *, struct Operand *);
1982 unsigned int (* BitOr)(struct Expression *, struct Operand *, struct Operand *);
1983 unsigned int (* BitXor)(struct Expression *, struct Operand *, struct Operand *);
1984 unsigned int (* LShift)(struct Expression *, struct Operand *, struct Operand *);
1985 unsigned int (* RShift)(struct Expression *, struct Operand *, struct Operand *);
1986 unsigned int (* BitNot)(struct Expression *, struct Operand *);
1987 unsigned int (* AndAsign)(struct Expression *, struct Operand *, struct Operand *);
1988 unsigned int (* OrAsign)(struct Expression *, struct Operand *, struct Operand *);
1989 unsigned int (* XorAsign)(struct Expression *, struct Operand *, struct Operand *);
1990 unsigned int (* LShiftAsign)(struct Expression *, struct Operand *, struct Operand *);
1991 unsigned int (* RShiftAsign)(struct Expression *, struct Operand *, struct Operand *);
1992 unsigned int (* Not)(struct Expression *, struct Operand *);
1993 unsigned int (* Equ)(struct Expression *, struct Operand *, struct Operand *);
1994 unsigned int (* Nqu)(struct Expression *, struct Operand *, struct Operand *);
1995 unsigned int (* And)(struct Expression *, struct Operand *, struct Operand *);
1996 unsigned int (* Or)(struct Expression *, struct Operand *, struct Operand *);
1997 unsigned int (* Grt)(struct Expression *, struct Operand *, struct Operand *);
1998 unsigned int (* Sma)(struct Expression *, struct Operand *, struct Operand *);
1999 unsigned int (* GrtEqu)(struct Expression *, struct Operand *, struct Operand *);
2000 unsigned int (* SmaEqu)(struct Expression *, struct Operand *, struct Operand *);
2001 unsigned int (* Cond)(struct Expression *, struct Operand *, struct Operand *, struct Operand *);
2002 } __attribute__ ((gcc_struct));
2004 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Operand;
2010 unsigned int ptrSize;
2026 } __attribute__ ((gcc_struct));
2028 } __attribute__ ((gcc_struct));
2030 extern struct Operand GetOperand(struct Expression * exp);
2032 extern void __ecereNameSpace__ecere__com__eEnum_AddFixedValue(struct __ecereNameSpace__ecere__com__Class * _class, char * string, int value);
2034 extern int __ecereNameSpace__ecere__com__eEnum_AddValue(struct __ecereNameSpace__ecere__com__Class * _class, char * string);
2036 extern struct ClassFunction * MkClassFunction(struct __ecereNameSpace__ecere__sys__OldList * specifiers, struct Specifier * _class, struct Declarator * decl, struct __ecereNameSpace__ecere__sys__OldList * declList);
2038 extern void ProcessClassFunctionBody(struct ClassFunction * func, struct Statement * body);
2040 extern struct External * MkExternalDeclaration(struct Declaration * declaration);
2042 extern struct ClassDef * MkClassDefFunction(struct ClassFunction * function);
2044 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);
2046 extern struct __ecereNameSpace__ecere__com__Instance * privateModule;
2048 extern void FreePropertyWatch(struct PropertyWatch * watcher);
2050 extern char * sourceFile;
2052 extern struct Type * ProcessType(struct __ecereNameSpace__ecere__sys__OldList * specs, struct Declarator * decl);
2054 extern void PrintType(struct Type * type, char * string, unsigned int printName, unsigned int fullName);
2056 extern struct Expression * MkExpTypeSize(struct TypeName * typeName);
2058 extern struct Specifier * MkStructOrUnion(int type, struct Identifier * id, struct __ecereNameSpace__ecere__sys__OldList * definitions);
2060 extern unsigned int DummyMethod(void);
2062 extern void DeclareMethod(struct __ecereNameSpace__ecere__com__Method * method, char * name);
2064 extern struct __ecereNameSpace__ecere__com__Class * __ecereNameSpace__ecere__com__eSystem_FindClass(struct __ecereNameSpace__ecere__com__Instance * module, char * name);
2066 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__EnumClassData;
2068 struct __ecereNameSpace__ecere__com__EnumClassData
2070 struct __ecereNameSpace__ecere__sys__OldList values;
2072 } __attribute__ ((gcc_struct));
2074 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__sys__NamedLink;
2076 struct __ecereNameSpace__ecere__sys__NamedLink
2078 struct __ecereNameSpace__ecere__sys__NamedLink * prev;
2079 struct __ecereNameSpace__ecere__sys__NamedLink * next;
2082 } __attribute__ ((gcc_struct));
2084 extern char * StringFromSpecDecl(struct __ecereNameSpace__ecere__sys__OldList * specs, struct Declarator * decl);
2086 extern int strlen(const char * );
2088 extern struct MemberInit * MkMemberInit(struct __ecereNameSpace__ecere__sys__OldList * ids, struct Initializer * initializer);
2090 extern char * PrintUInt64(uint64 result);
2092 extern struct Expression * MkExpInstance(struct Instantiation * inst);
2094 extern struct Instantiation * MkInstantiation(struct Specifier * _class, struct Expression * exp, struct __ecereNameSpace__ecere__sys__OldList * members);
2096 extern struct MembersInit * MkMembersInitList(struct __ecereNameSpace__ecere__sys__OldList * dataMembers);
2098 int __ecereVMethodID_class_OnGetString;
2100 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__TemplateMemberType;
2102 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)
2104 void * __ecereTemp1;
2105 struct ClassDef * def;
2106 struct __ecereNameSpace__ecere__com__Class * regClass = symbol->registered;
2110 classType = regClass->type;
2111 if(classType == 4 && enumValues && (inCompiler || !buildingECERECOMModule))
2113 struct Enumerator * e;
2115 for(e = enumValues->first; e; e = e->next)
2119 struct Type * destType = (destType = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Type), destType->kind = 3, destType->refCount = 1, destType);
2121 e->exp->destType = destType;
2123 ProcessExpressionType(e->exp);
2125 if(!e->exp->expType)
2128 destType->_class = symbol;
2129 ProcessExpressionType(e->exp);
2131 ComputeExpression(e->exp);
2132 if(e->exp->isConstant && e->exp->type == 2)
2134 struct Operand op = GetOperand(e->exp);
2148 __ecereNameSpace__ecere__com__eEnum_AddFixedValue(regClass, e->id->string, value);
2151 __ecereNameSpace__ecere__com__eEnum_AddValue(regClass, e->id->string);
2154 __ecereNameSpace__ecere__com__eEnum_AddValue(regClass, e->id->string);
2157 if(definitions != (((void *)0)))
2161 for(def = definitions->first; def; def = def->next)
2163 if(def->type == 4 && def->propertyWatch)
2165 struct PropertyWatch * propWatch = def->propertyWatch;
2166 struct ClassFunction * func;
2167 char watcherName[1024];
2168 struct Identifier * propID;
2169 struct Statement * stmt = MkExpressionStmt(MkList());
2170 struct Declarator * decl;
2172 sprintf(watcherName, "__ecerePropertySelfWatcher_%d", propWatcherID++);
2173 for(propID = (*propWatch->properties).first; propID; propID = propID->next)
2175 strcat(watcherName, "_");
2176 strcat(watcherName, propID->string);
2178 decl = MkDeclaratorFunction(MkDeclaratorIdentifier(MkIdentifier(watcherName)), MkListOne(MkTypeName(MkListOne(MkSpecifier(VOID)), (((void *)0)))));
2179 func = MkClassFunction(MkListOne(MkSpecifier(VOID)), (((void *)0)), decl, (((void *)0)));
2180 ProcessClassFunctionBody(func, propWatch->compound);
2181 decl->symbol = (__ecereTemp1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Symbol), ((struct Symbol *)__ecereTemp1)->id = symbol->id, ((struct Symbol *)__ecereTemp1)->idCode = symbol->idCode, ((struct Symbol *)__ecereTemp1));
2182 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*excludedSymbols), decl->symbol);
2183 func->id = symbol->id;
2184 func->idCode = symbol->idCode;
2185 func->dontMangle = 0x1;
2187 struct External * externalDecl = MkExternalDeclaration((((void *)0)));
2188 struct Declaration * decl;
2189 struct __ecereNameSpace__ecere__sys__OldList * specifiers = MkList();
2191 ListAdd(specifiers, MkSpecifier(STATIC));
2192 ListAdd(specifiers, MkSpecifier(VOID));
2193 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Insert((&*ast), curExternal->prev, externalDecl);
2194 decl = MkDeclaration(specifiers, MkListOne(MkInitDeclarator(MkDeclaratorFunction(MkDeclaratorIdentifier(MkIdentifier(watcherName)), MkListOne(MkTypeName(MkListOne(MkSpecifierName(regClass->fullName)), (((void *)0))))), (((void *)0)))));
2195 externalDecl->declaration = decl;
2196 if(decl->symbol && !decl->symbol->methodExternal)
2198 decl->symbol->methodExternal = externalDecl;
2199 decl->symbol->id = symbol->id;
2200 decl->symbol->idCode = symbol->idCode;
2203 propWatch->compound = (((void *)0));
2204 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Insert(definitions, (((void *)0)), MkClassDefFunction(func));
2206 stmt->expressions = MkList();
2207 for(propID = (*propWatch->properties).first; propID; propID = propID->next)
2209 struct __ecereNameSpace__ecere__com__Property * prop = __ecereNameSpace__ecere__com__eClass_FindProperty(regClass, propID->string, privateModule);
2213 struct __ecereNameSpace__ecere__sys__OldList * args = MkList();
2215 ListAdd(args, MkExpIdentifier(MkIdentifier("class")));
2216 ListAdd(args, MkExpString(QMkString(propID->string)));
2217 ListAdd(args, MkExpIdentifier(MkIdentifier(watcherName)));
2218 ListAdd(stmt->expressions, MkExpCall(MkExpIdentifier(MkIdentifier("eProperty_SelfWatch")), args));
2221 Compiler_Error(__ecereNameSpace__ecere__GetTranslatedString(__thisModule, "Property %s not found in class %s\n", (((void *)0))), propID->string, regClass->fullName);
2223 FreePropertyWatch(def->propertyWatch);
2224 def->propertyWatch = (struct PropertyWatch *)stmt;
2228 for(def = definitions->first; def; def = def->next)
2232 ProcessClassFunction(regClass, def->function, defs, external->prev, declMode == 3);
2236 if(inCompiler && symbol->id != (((int)0x7fffffff)) && regClass)
2238 struct Statement * stmt;
2239 struct __ecereNameSpace__ecere__sys__OldList * args = MkList();
2240 struct __ecereNameSpace__ecere__com__Method * method;
2241 struct Expression * exp;
2242 char * registerFunction = (((void *)0));
2243 int inheritanceAccess = 1;
2245 CreateRegisterModuleBody();
2246 curExternal = registerModuleExternal;
2247 switch(regClass->type)
2250 ListAdd(args, MkExpIdentifier(MkIdentifier("structClass")));
2253 ListAdd(args, MkExpIdentifier(MkIdentifier("bitClass")));
2256 ListAdd(args, MkExpIdentifier(MkIdentifier("enumClass")));
2259 ListAdd(args, MkExpIdentifier(MkIdentifier("noHeadClass")));
2262 ListAdd(args, MkExpIdentifier(MkIdentifier("unitClass")));
2265 ListAdd(args, MkExpIdentifier(MkIdentifier("normalClass")));
2269 char nameSpace[1024] = "";
2270 char className[1024] = "";
2273 GetNameSpaceString(regClass->nameSpace, nameSpace);
2276 __ecereNameSpace__ecere__sys__GetLastDirectory(sourceFile, className);
2277 __ecereNameSpace__ecere__sys__ChangeCh(className, '.', '_');
2278 strcat(className, "}");
2280 strcat(className, nameSpace);
2281 strcat(className, regClass->name);
2282 string = QMkString(className);
2283 ListAdd(args, MkExpString(string));
2284 (__ecereNameSpace__ecere__com__eSystem_Delete(string), string = 0);
2286 if(baseSpecs != (((void *)0)))
2288 struct Type * baseType = ProcessType(baseSpecs, (((void *)0)));
2290 if(baseType->kind != 9 && baseType->kind != 10)
2292 char baseName[1024] = "";
2295 if(baseType->kind == 8 && baseType->_class && baseType->_class->isStatic)
2297 __ecereNameSpace__ecere__sys__GetLastDirectory(sourceFile, baseName);
2298 __ecereNameSpace__ecere__sys__ChangeCh(baseName, '.', '_');
2299 strcat(baseName, "}");
2300 strcat(baseName, baseType->_class->string);
2303 PrintType(baseType, baseName, 0x0, 0x1);
2304 string = QMkString(baseName);
2305 ListAdd(args, MkExpString(string));
2306 (__ecereNameSpace__ecere__com__eSystem_Delete(string), string = 0);
2309 ListAdd(args, MkExpConstant("0"));
2311 if(((struct Specifier *)baseSpecs->first)->type == 0 && ((struct Specifier *)baseSpecs->first)->specifier == PRIVATE)
2312 inheritanceAccess = 2;
2315 ListAdd(args, MkExpConstant("0"));
2316 if(regClass->type == 1 || regClass->type == 0 || regClass->type == 5)
2318 struct __ecereNameSpace__ecere__com__DataMember * member = (((void *)0));
2321 struct __ecereNameSpace__ecere__com__Class * base;
2323 for(base = regClass->base; base && base->type != 1000; base = base->next)
2325 for(member = base->membersAndProperties.first; member; member = member->next)
2326 if(!member->isProperty)
2332 if(regClass->type == 1 && symbol->declaredStruct && member)
2334 char baseStructName[1024];
2336 baseStructName[0] = (char)0;
2337 strcpy(baseStructName, (regClass->base->templateClass ? regClass->base->templateClass : regClass->base)->fullName);
2338 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))))));
2341 ListAdd(args, symbol->declaredStruct ? MkExpTypeSize(MkTypeName(MkListOne(MkStructOrUnion(3, MkIdentifier(symbol->structName), (((void *)0)))), (((void *)0)))) : MkExpConstant("0"));
2345 ListAdd(args, MkExpConstant("0"));
2348 char classDataStructName[1024];
2350 strcpy(classDataStructName, "__ecereClassData_");
2351 FullClassNameCat(classDataStructName, symbol->string, 0x0);
2352 ListAdd(args, symbol->classData ? MkExpTypeSize(MkTypeName(MkListOne(MkStructOrUnion(3, MkIdentifier(classDataStructName), (((void *)0)))), (((void *)0)))) : MkExpConstant("0"));
2354 if(regClass->type == 0 || regClass->type == 5)
2356 ListAdd(args, symbol->needConstructor ? MkExpIdentifier(MkIdentifier(symbol->constructorName)) : MkExpConstant("0"));
2357 ListAdd(args, symbol->needDestructor ? MkExpIdentifier(MkIdentifier(symbol->destructorName)) : MkExpConstant("0"));
2361 ListAdd(args, MkExpConstant("0"));
2362 ListAdd(args, MkExpConstant("0"));
2364 ListAdd(args, MkExpIdentifier(MkIdentifier("module")));
2368 ListAdd(args, MkExpIdentifier(MkIdentifier("staticAccess")));
2371 ListAdd(args, MkExpIdentifier(MkIdentifier("privateAccess")));
2375 ListAdd(args, MkExpIdentifier(MkIdentifier(buildingECERECOMModule ? "baseSystemAccess" : "publicAccess")));
2378 switch(inheritanceAccess)
2381 ListAdd(args, MkExpIdentifier(MkIdentifier("privateAccess")));
2385 ListAdd(args, MkExpIdentifier(MkIdentifier("publicAccess")));
2388 registerFunction = "eSystem_RegisterClass";
2389 stmt = MkExpressionStmt(MkListOne(MkExpOp(MkExpIdentifier(MkIdentifier("class")), '=', MkExpCall((exp = MkExpIdentifier(MkIdentifier(registerFunction))), args))));
2390 ListAdd(registerModuleBody->compound.statements, stmt);
2391 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)));
2392 ListAdd(registerModuleBody->compound.statements, stmt);
2393 if(external && external->type == 2 && external->_class->deleteWatchable)
2395 args = MkListOne(MkExpIdentifier(MkIdentifier("class")));
2396 stmt = MkExpressionStmt(MkListOne(MkExpCall(MkExpIdentifier(MkIdentifier("eClass_DestructionWatchable")), args)));
2397 ListAdd(registerModuleBody->compound.statements, stmt);
2401 struct __ecereNameSpace__ecere__com__Class * base = regClass->base;
2404 for(c = 0; c < base->vTblSize; c++)
2406 struct Symbol * method = (struct Symbol *)regClass->_vTbl[c];
2408 if((void *)method != DummyMethod && base->_vTbl[c] != (void *)method)
2410 struct External * external = method->methodExternal;
2411 struct __ecereNameSpace__ecere__sys__OldList * args = MkList();
2412 struct Identifier * id = external->function ? GetDeclId(external->function->declarator) : (((void *)0));
2414 ListAdd(args, MkExpIdentifier(MkIdentifier("class")));
2416 char * string = QMkString(method->method->name);
2418 ListAdd(args, MkExpString(string));
2419 (__ecereNameSpace__ecere__com__eSystem_Delete(string), string = 0);
2421 ListAdd(args, MkExpConstant("0"));
2422 ListAdd(args, (exp = MkExpIdentifier(MkIdentifier(id->string))));
2423 ListAdd(args, MkExpIdentifier(MkIdentifier("publicAccess")));
2424 exp->expType = (__ecereTemp1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Type), ((struct Type *)__ecereTemp1)->refCount = 1, ((struct Type *)__ecereTemp1));
2425 stmt = MkExpressionStmt(MkListOne(MkExpCall(MkExpIdentifier(MkIdentifier("eClass_AddMethod")), args)));
2426 ListAdd(registerModuleBody->compound.statements, stmt);
2433 for(c = regClass->base ? regClass->base->vTblSize : 0; c < regClass->vTblSize; c++)
2435 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)))
2437 if(method->type == 1 && method->_class == regClass && method->vid == c)
2440 struct Expression * exp;
2441 struct External * external = method->symbol ? ((struct Symbol *)method->symbol)->methodCodeExternal : (((void *)0));
2442 struct __ecereNameSpace__ecere__sys__OldList * args = MkList();
2443 struct Identifier * id = (external && external->function) ? GetDeclId(external->function->declarator) : (((void *)0));
2445 ListAdd(args, MkExpIdentifier(MkIdentifier("class")));
2447 char * string = QMkString(method->name);
2449 ListAdd(args, MkExpString(string));
2450 (__ecereNameSpace__ecere__com__eSystem_Delete(string), string = 0);
2453 char * string = QMkString(method->dataTypeString);
2455 ListAdd(args, MkExpString(string));
2456 (__ecereNameSpace__ecere__com__eSystem_Delete(string), string = 0);
2458 if(id && external->function->body)
2460 ListAdd(args, (exp = MkExpIdentifier(MkIdentifier(id->string))));
2461 exp->expType = (__ecereTemp1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Type), ((struct Type *)__ecereTemp1)->refCount = 1, ((struct Type *)__ecereTemp1));
2465 ListAdd(args, (exp = MkExpConstant("0")));
2467 switch(method->memberAccess)
2470 ListAdd(args, MkExpIdentifier(MkIdentifier("staticAccess")));
2473 ListAdd(args, MkExpIdentifier(MkIdentifier("privateAccess")));
2477 ListAdd(args, MkExpIdentifier(MkIdentifier("publicAccess")));
2480 strcpy(name, "__ecereVMethodID_");
2481 FullClassNameCat(name, method->_class->fullName, 0x0);
2483 strcat(name, method->name);
2484 exp = MkExpCall(MkExpIdentifier(MkIdentifier("eClass_AddVirtualMethod")), args);
2485 stmt = MkExpressionStmt(MkListOne(exp));
2486 DeclareMethod(method, name);
2487 ListAdd(registerModuleBody->compound.statements, stmt);
2492 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)))
2494 if(method->type == 1 && method->_class == regClass)
2496 else if(method->memberAccess == 1 || !method->dataTypeString)
2498 struct External * external = method->symbol ? ((struct Symbol *)method->symbol)->methodCodeExternal : (((void *)0));
2499 struct __ecereNameSpace__ecere__sys__OldList * args = MkList();
2500 struct Identifier * id = (external && external->function) ? GetDeclId(external->function->declarator) : (((void *)0));
2502 ListAdd(args, MkExpIdentifier(MkIdentifier("class")));
2504 char * string = QMkString(method->name);
2506 ListAdd(args, MkExpString(string));
2507 (__ecereNameSpace__ecere__com__eSystem_Delete(string), string = 0);
2510 char * string = QMkString(method->dataTypeString);
2512 ListAdd(args, MkExpString(string));
2513 (__ecereNameSpace__ecere__com__eSystem_Delete(string), string = 0);
2515 if(id && external->function->body)
2517 ListAdd(args, (exp = MkExpIdentifier(MkIdentifier(id->string))));
2518 exp->expType = (__ecereTemp1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Type), ((struct Type *)__ecereTemp1)->refCount = 1, ((struct Type *)__ecereTemp1));
2522 ListAdd(args, (exp = MkExpConstant("0")));
2524 switch(method->memberAccess)
2527 ListAdd(args, MkExpIdentifier(MkIdentifier("staticAccess")));
2530 ListAdd(args, MkExpIdentifier(MkIdentifier("privateAccess")));
2534 ListAdd(args, MkExpIdentifier(MkIdentifier("publicAccess")));
2537 stmt = MkExpressionStmt(MkListOne(MkExpCall(MkExpIdentifier(MkIdentifier("eClass_AddMethod")), args)));
2538 ListAdd(registerModuleBody->compound.statements, stmt);
2541 RegisterMembersAndProperties(regClass, 0x0, "class", registerModuleBody);
2544 struct __ecereNameSpace__ecere__sys__NamedLink * value;
2545 struct __ecereNameSpace__ecere__com__Class * enumClass = __ecereNameSpace__ecere__com__eSystem_FindClass(privateModule, "enum");
2546 struct __ecereNameSpace__ecere__com__EnumClassData * e = (regClass ? ((void *)(((char *)regClass->data) + enumClass->offsetClass)) : (((void *)0)));
2548 for(value = e->values.first; value; value = value->next)
2550 struct __ecereNameSpace__ecere__sys__OldList * args = MkList();
2552 ListAdd(args, MkExpIdentifier(MkIdentifier("class")));
2554 char * string = QMkString(value->name);
2556 ListAdd(args, MkExpString(string));
2557 (__ecereNameSpace__ecere__com__eSystem_Delete(string), string = 0);
2562 sprintf(temp, "%d", value->data);
2563 ListAdd(args, MkExpConstant(temp));
2565 stmt = MkExpressionStmt(MkListOne(MkExpCall(MkExpIdentifier(MkIdentifier("eEnum_AddFixedValue")), args)));
2566 ListAdd(registerModuleBody->compound.statements, stmt);
2569 if(symbol->templateParams)
2571 struct TemplateParameter * param;
2573 for(param = (*symbol->templateParams).first; param; param = param->next)
2575 struct __ecereNameSpace__ecere__sys__OldList * args = MkList();
2577 ListAdd(args, MkExpIdentifier(MkIdentifier("class")));
2579 char * string = QMkString(param->identifier->string);
2581 ListAdd(args, MkExpString(string));
2582 (__ecereNameSpace__ecere__com__eSystem_Delete(string), string = 0);
2584 ListAdd(args, MkExpIdentifier(MkIdentifier((param->type == 0) ? "type" : ((param->type == 1) ? "identifier" : "expression"))));
2590 char * typeString = param->dataType ? StringFromSpecDecl(param->dataType->specifiers, param->dataType->decl) : (((void *)0));
2591 char * string = QMkString(typeString);
2593 ListAdd(args, MkExpString(string));
2594 (__ecereNameSpace__ecere__com__eSystem_Delete(typeString), typeString = 0);
2595 (__ecereNameSpace__ecere__com__eSystem_Delete(string), string = 0);
2600 char memberTypeString[132] = "TemplateMemberType::";
2601 unsigned int needClass = 0x1;
2603 ((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);
2604 ListAdd(args, MkExpCast(MkTypeName(MkListOne(MkSpecifier(VOID)), MkDeclaratorPointer(MkPointer((((void *)0)), (((void *)0))), (((void *)0)))), MkExpIdentifier(MkIdentifier(memberTypeString))));
2608 if(param->defaultArgument)
2610 struct __ecereNameSpace__ecere__sys__OldList * members = MkList();
2616 char * typeString = param->defaultArgument->templateDatatype ? StringFromSpecDecl(param->defaultArgument->templateDatatype->specifiers, param->defaultArgument->templateDatatype->decl) : (((void *)0));
2617 char * string = QMkString(typeString);
2619 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*members), MkMemberInit(MkListOne(MkIdentifier("dataTypeString")), MkInitializerAssignment(MkExpString(string))));
2620 (__ecereNameSpace__ecere__com__eSystem_Delete(typeString), typeString = 0);
2621 (__ecereNameSpace__ecere__com__eSystem_Delete(string), string = 0);
2626 char memberString[1024];
2629 memberString[0] = '\0';
2630 if(param->defaultArgument->identifier->_class)
2632 if(param->defaultArgument->identifier->_class->type == 8)
2633 strcpy(memberString, param->defaultArgument->identifier->_class->templateParameter->identifier->string);
2634 else if(param->defaultArgument->identifier->_class->name)
2635 strcpy(memberString, param->defaultArgument->identifier->_class->name);
2638 strcat(memberString, "::");
2639 strcat(memberString, param->defaultArgument->identifier->string);
2640 string = QMkString(memberString);
2641 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*members), MkMemberInit(MkListOne(MkIdentifier("dataTypeString")), MkInitializerAssignment(MkExpString(string))));
2642 (__ecereNameSpace__ecere__com__eSystem_Delete(string), string = 0);
2651 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
2654 struct __ecereNameSpace__ecere__sys__OldList * ids = MkList();
2656 char * string = (((void *)0));
2658 op = GetOperand(param->defaultArgument->expression);
2659 ui64String = PrintUInt64(op.ui64);
2660 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*ids), MkIdentifier("expression"));
2661 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*ids), MkIdentifier("ui64"));
2662 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*members), MkMemberInit(ids, MkInitializerAssignment(MkExpConstant(ui64String))));
2663 (__ecereNameSpace__ecere__com__eSystem_Delete(string), string = 0);
2664 (__ecereNameSpace__ecere__com__eSystem_Delete(ui64String), ui64String = 0);
2668 ListAdd(args, MkExpInstance(MkInstantiation(MkSpecifierName("ClassTemplateArgument"), (((void *)0)), MkListOne(MkMembersInitList(members)))));
2671 ListAdd(args, MkExpIdentifier(MkIdentifier("null")));
2672 stmt = MkExpressionStmt(MkListOne(MkExpCall(MkExpIdentifier(MkIdentifier("eClass_AddTemplateParameter")), args)));
2673 ListAdd(registerModuleBody->compound.statements, stmt);
2675 stmt = MkExpressionStmt(MkListOne(MkExpCall(MkExpIdentifier(MkIdentifier("eClass_DoneAddingTemplateParameters")), MkListOne(MkExpIdentifier(MkIdentifier("class"))))));
2676 ListAdd(registerModuleBody->compound.statements, stmt);
2678 if(definitions != (((void *)0)))
2680 for(def = definitions->first; def; def = def->next)
2682 if(def->type == 4 && def->propertyWatch)
2684 ListAdd(registerModuleBody->compound.statements, (struct Statement *)def->propertyWatch);
2685 def->propertyWatch = (((void *)0));
2687 else if(def->type == 5)
2689 stmt = MkIfStmt(MkListOne(MkExpIdentifier(MkIdentifier("class"))), MkExpressionStmt(MkListOne(MkExpOp(MkExpMember(MkExpIdentifier(MkIdentifier("class")), MkIdentifier("designerClass")), '=', MkExpString(QMkString(def->designer))))), (((void *)0)));
2690 ListAdd(registerModuleBody->compound.statements, stmt);
2692 else if(def->type == 6)
2694 stmt = MkIfStmt(MkListOne(MkExpIdentifier(MkIdentifier("class"))), MkExpressionStmt(MkListOne(MkExpOp(MkExpMember(MkExpIdentifier(MkIdentifier("class")), MkIdentifier("noExpansion")), '=', MkExpConstant("1")))), (((void *)0)));
2695 ListAdd(registerModuleBody->compound.statements, stmt);
2697 else if(def->type == 7)
2699 stmt = MkIfStmt(MkListOne(MkExpIdentifier(MkIdentifier("class"))), MkExpressionStmt(MkListOne(MkExpOp(MkExpMember(MkExpIdentifier(MkIdentifier("class")), MkIdentifier("fixed")), '=', MkExpConstant("1")))), (((void *)0)));
2700 ListAdd(registerModuleBody->compound.statements, stmt);
2702 regClass->fixed = 0x1;
2704 else if(def->type == 8)
2706 stmt = MkIfStmt(MkListOne(MkExpIdentifier(MkIdentifier("class"))), MkExpressionStmt(MkListOne(MkExpOp(MkExpMember(MkExpIdentifier(MkIdentifier("class")), MkIdentifier("defaultProperty")), '=', MkExpString(QMkString(def->defaultProperty->string))))), (((void *)0)));
2707 ListAdd(registerModuleBody->compound.statements, stmt);
2709 else if(def->type == 11)
2711 struct __ecereNameSpace__ecere__sys__OldList * args = MkList();
2713 ListAdd(args, MkExpIdentifier(MkIdentifier("class")));
2714 ListAdd(args, MkExpString(QMkString(def->id->string)));
2715 ListAdd(args, MkExpCast(MkTypeName(MkListOne(MkSpecifier(INT)), (((void *)0))), def->initializer->exp));
2716 def->initializer->exp = (((void *)0));
2717 stmt = MkExpressionStmt(MkListOne(MkExpCall(MkExpIdentifier(MkIdentifier("ecere::com::eClass_SetProperty")), args)));
2718 ListAdd(registerModuleBody->compound.statements, stmt);
2726 extern int strcmp(const char * , const char * );
2728 extern void PrintExpression(struct Expression * exp, char * string);
2730 void __ecereMethod___ecereNameSpace__ecere__sys__OldList_Remove(struct __ecereNameSpace__ecere__sys__OldList * this, void * item);
2732 void ProcessClassDefinitions()
2734 struct External * external, * next;
2736 CreateRegisterModuleBody();
2739 for(external = (*ast).first; external; external = next)
2741 next = external->next;
2742 curExternal = external;
2743 if(external->type == 2)
2745 struct ClassDefinition * _class = external->_class;
2747 if(_class->definitions)
2749 ProcessClass(0, _class->definitions, _class->symbol, _class->baseSpecs, (((void *)0)), ast, external, _class->declMode);
2753 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Remove((&*ast), external);
2754 FreeExternal(external);
2757 else if(external->type == 0)
2759 if(external->symbol && !external->symbol->type->thisClass)
2760 external->symbol->type->staticMethod = 0x1;
2763 struct FunctionDefinition * function = external->function;
2764 struct Statement * stmt;
2765 struct __ecereNameSpace__ecere__sys__OldList * args;
2767 if(!strcmp(function->declarator->symbol->string, "__on_register_module"))
2769 ListAdd(registerModuleBody->compound.statements, function->body);
2770 function->body->compound.context->parent = registerModuleBody->compound.context;
2771 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Remove((&*ast), external);
2772 function->body = (((void *)0));
2773 FreeExternal(external);
2776 if(function->declMode != 2 && function->declMode != 1)
2779 CreateRegisterModuleBody();
2781 char * string = QMkString(function->declarator->symbol->string);
2783 ListAdd(args, MkExpString(string));
2784 (__ecereNameSpace__ecere__com__eSystem_Delete(string), string = 0);
2788 char type[1024] = "";
2790 PrintType(function->declarator->symbol->type, type, 0x1, 0x1);
2791 string = QMkString(type);
2792 ListAdd(args, MkExpString(string));
2793 (__ecereNameSpace__ecere__com__eSystem_Delete(string), string = 0);
2796 ListAdd(args, MkExpIdentifier(MkIdentifier(function->declarator->symbol->string)));
2798 ListAdd(args, MkExpIdentifier(MkIdentifier("module")));
2799 switch(function->declMode)
2802 ListAdd(args, MkExpIdentifier(MkIdentifier("staticAccess")));
2805 ListAdd(args, MkExpIdentifier(MkIdentifier("privateAccess")));
2809 ListAdd(args, MkExpIdentifier(MkIdentifier(buildingECERECOMModule ? "baseSystemAccess" : "publicAccess")));
2812 stmt = MkExpressionStmt(MkListOne(MkExpCall((MkExpIdentifier(MkIdentifier("eSystem_RegisterFunction"))), args)));
2813 ListAdd(registerModuleBody->compound.statements, stmt);
2816 else if(external->type == 1)
2818 struct Declaration * declaration = external->declaration;
2820 if(external->symbol)
2822 if(external->symbol->type && external->symbol->type->kind == 11 && !external->symbol->type->thisClass)
2823 external->symbol->type->staticMethod = 0x1;
2825 if(external->symbol && declaration->type == 1)
2827 if(declaration->specifiers)
2829 struct Specifier * specifier;
2830 unsigned int removeExternal = 0x0;
2832 for(specifier = (*declaration->specifiers).first; specifier; specifier = specifier->next)
2834 if((specifier->type == 2 || specifier->type == 3 || specifier->type == 4) && specifier->id && specifier->id->string && (declaration->declMode || specifier->baseSpecs || (specifier->type == 2 && specifier->definitions)))
2836 struct Symbol * symbol = FindClass(specifier->id->string);
2842 if(specifier->type == 2)
2846 removeExternal = 0x1;
2847 symbol->ctx = specifier->ctx;
2848 specifier->ctx = (((void *)0));
2849 ProcessClass(classType, specifier->definitions, symbol, specifier->baseSpecs, specifier->list, ast, external, declaration->declMode);
2853 if(inCompiler && removeExternal)
2855 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Remove((&*ast), external);
2856 FreeExternal(external);
2860 else if(declaration->type == 3)
2862 if(inCompiler && declaration->declMode != 3)
2864 struct Statement * stmt;
2865 struct __ecereNameSpace__ecere__sys__OldList * args = MkList();
2867 CreateRegisterModuleBody();
2869 char * string = QMkString(declaration->id->string);
2871 ListAdd(args, MkExpString(string));
2872 (__ecereNameSpace__ecere__com__eSystem_Delete(string), string = 0);
2876 char type[1024] = "";
2878 PrintExpression(declaration->exp, type);
2879 string = QMkString(type);
2880 ListAdd(args, MkExpString(string));
2881 (__ecereNameSpace__ecere__com__eSystem_Delete(string), string = 0);
2883 ListAdd(args, MkExpIdentifier(MkIdentifier("module")));
2884 switch(declaration->declMode)
2887 ListAdd(args, MkExpIdentifier(MkIdentifier("staticAccess")));
2890 ListAdd(args, MkExpIdentifier(MkIdentifier("privateAccess")));
2894 ListAdd(args, MkExpIdentifier(MkIdentifier(buildingECERECOMModule ? "baseSystemAccess" : "publicAccess")));
2897 stmt = MkExpressionStmt(MkListOne(MkExpCall((MkExpIdentifier(MkIdentifier("eSystem_RegisterDefine"))), args)));
2898 ListAdd(registerModuleBody->compound.statements, stmt);
2906 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__GlobalFunction;
2908 struct __ecereNameSpace__ecere__com__GlobalFunction;
2910 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);
2912 void __ecereRegisterModule_pass1(struct __ecereNameSpace__ecere__com__Instance * module)
2914 struct __ecereNameSpace__ecere__com__Class * class;
2916 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("SetBuildingEcereCom", "void SetBuildingEcereCom(bool b)", SetBuildingEcereCom, module, 1);
2917 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("GetBuildingEcereCom", "bool GetBuildingEcereCom(void)", GetBuildingEcereCom, module, 1);
2918 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("SetBuildingEcereComModule", "void SetBuildingEcereComModule(bool b)", SetBuildingEcereComModule, module, 1);
2919 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("GetBuildingEcereComModule", "bool GetBuildingEcereComModule(void)", GetBuildingEcereComModule, module, 1);
2920 __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);
2921 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("CreateRegisterModuleBody", "void CreateRegisterModuleBody(void)", CreateRegisterModuleBody, module, 2);
2922 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("RegisterMembersAndProperties", "void RegisterMembersAndProperties(ecere::com::Class regClass, bool isMember, char * className, Statement statement)", RegisterMembersAndProperties, module, 2);
2923 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("GetNameSpaceString", "void GetNameSpaceString(ecere::com::NameSpace ns, char * string)", GetNameSpaceString, module, 2);
2924 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ProcessClassDefinitions", "void ProcessClassDefinitions(void)", ProcessClassDefinitions, module, 1);
2927 void __ecereUnregisterModule_pass1(struct __ecereNameSpace__ecere__com__Instance * module)