1 /* Code generated from eC source file: firstPass.ec */
3 typedef long long int64;
4 typedef unsigned long long uint64;
8 #elif defined(__TINYC__)
10 #define __builtin_va_list va_list
11 #define __builtin_va_start va_start
12 #define __builtin_va_end va_end
14 #define strcasecmp stricmp
15 #define strncasecmp strnicmp
16 #define __declspec(x) __attribute__((x))
20 typedef long long int64;
21 typedef unsigned long long uint64;
23 typedef __int64 int64;
24 typedef unsigned __int64 uint64;
27 #define __ENDIAN_PAD(x) (8 - (x))
29 #define __ENDIAN_PAD(x) 0
32 #include <sys/types.h>
33 extern void * __ecereNameSpace__ecere__com__eSystem_New(unsigned int size);
35 extern void * __ecereNameSpace__ecere__com__eSystem_New0(unsigned int size);
37 extern void * __ecereNameSpace__ecere__com__eSystem_Renew(void * memory, unsigned int size);
39 extern void * __ecereNameSpace__ecere__com__eSystem_Renew0(void * memory, unsigned int size);
41 extern void __ecereNameSpace__ecere__com__eSystem_Delete(void * memory);
43 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__sys__BTNode;
45 struct __ecereNameSpace__ecere__sys__BTNode;
47 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__sys__BinaryTree;
49 struct __ecereNameSpace__ecere__sys__BinaryTree
51 struct __ecereNameSpace__ecere__sys__BTNode * root;
53 int (* CompareKey)(struct __ecereNameSpace__ecere__sys__BinaryTree * tree, uintptr_t a, uintptr_t b);
54 void (* FreeKey)(void * key);
55 } __attribute__ ((gcc_struct));
57 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__sys__OldList;
59 struct __ecereNameSpace__ecere__sys__OldList
66 } __attribute__ ((gcc_struct));
68 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__Method;
70 struct __ecereNameSpace__ecere__com__Method
73 struct __ecereNameSpace__ecere__com__Method * parent;
74 struct __ecereNameSpace__ecere__com__Method * left;
75 struct __ecereNameSpace__ecere__com__Method * right;
80 struct __ecereNameSpace__ecere__com__Class * _class;
82 char * dataTypeString;
83 struct Type * dataType;
85 } __attribute__ ((gcc_struct));
87 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__Property;
89 struct __ecereNameSpace__ecere__com__Property
91 struct __ecereNameSpace__ecere__com__Property * prev;
92 struct __ecereNameSpace__ecere__com__Property * next;
94 unsigned int isProperty;
97 struct __ecereNameSpace__ecere__com__Class * _class;
98 char * dataTypeString;
99 struct __ecereNameSpace__ecere__com__Class * dataTypeClass;
100 struct Type * dataType;
101 void (* Set)(void * , int);
102 int (* Get)(void * );
103 unsigned int (* IsSet)(void * );
107 unsigned int conversion;
108 unsigned int watcherOffset;
110 unsigned int compiled;
111 unsigned int selfWatchable;
112 unsigned int isWatchable;
113 } __attribute__ ((gcc_struct));
115 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_CodePosition;
123 } __attribute__ ((gcc_struct));
125 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Location;
129 struct CodePosition start;
130 struct CodePosition end;
131 } __attribute__ ((gcc_struct));
133 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Attrib;
137 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_ExtDecl;
141 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_ClassDefinition;
143 struct ClassDefinition
145 struct ClassDefinition * prev;
146 struct ClassDefinition * next;
148 struct Specifier * _class;
149 struct __ecereNameSpace__ecere__sys__OldList * baseSpecs;
150 struct __ecereNameSpace__ecere__sys__OldList * definitions;
151 struct Symbol * symbol;
152 struct Location blockStart;
153 struct Location nameLoc;
156 unsigned int deleteWatchable;
157 } __attribute__ ((gcc_struct));
159 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Context;
163 struct Context * parent;
164 struct __ecereNameSpace__ecere__sys__BinaryTree types;
165 struct __ecereNameSpace__ecere__sys__BinaryTree classes;
166 struct __ecereNameSpace__ecere__sys__BinaryTree symbols;
167 struct __ecereNameSpace__ecere__sys__BinaryTree structSymbols;
170 struct __ecereNameSpace__ecere__sys__BinaryTree templateTypes;
171 struct ClassDefinition * classDef;
172 unsigned int templateTypesOnly;
173 unsigned int hasNameSpace;
174 } __attribute__ ((gcc_struct));
176 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Instantiation;
180 struct Instantiation * prev;
181 struct Instantiation * next;
183 struct Specifier * _class;
184 struct Expression * exp;
185 struct __ecereNameSpace__ecere__sys__OldList * members;
186 struct Symbol * symbol;
187 unsigned int fullSet;
188 unsigned int isConstant;
189 unsigned char * data;
190 struct Location nameLoc;
191 struct Location insideLoc;
193 } __attribute__ ((gcc_struct));
195 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Declaration;
199 struct Declaration * prev;
200 struct Declaration * next;
207 struct __ecereNameSpace__ecere__sys__OldList * specifiers;
208 struct __ecereNameSpace__ecere__sys__OldList * declarators;
209 } __attribute__ ((gcc_struct));
210 struct Instantiation * inst;
213 struct Identifier * id;
214 struct Expression * exp;
215 } __attribute__ ((gcc_struct));
216 } __attribute__ ((gcc_struct));
217 struct Specifier * extStorage;
218 struct Symbol * symbol;
220 } __attribute__ ((gcc_struct));
222 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Statement;
226 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_TypeName;
230 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Initializer;
234 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__DataValue;
236 struct __ecereNameSpace__ecere__com__DataValue
251 } __attribute__ ((gcc_struct));
252 } __attribute__ ((gcc_struct));
254 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Expression;
258 struct Expression * prev;
259 struct Expression * next;
267 struct Identifier * identifier;
268 } __attribute__ ((gcc_struct));
269 struct Statement * compound;
270 struct Instantiation * instance;
274 unsigned int intlString;
275 } __attribute__ ((gcc_struct));
276 struct __ecereNameSpace__ecere__sys__OldList * list;
279 struct __ecereNameSpace__ecere__sys__OldList * specifiers;
280 struct Declarator * decl;
281 } __attribute__ ((gcc_struct)) _classExp;
284 struct Identifier * id;
285 } __attribute__ ((gcc_struct)) classData;
288 struct Expression * exp;
289 struct __ecereNameSpace__ecere__sys__OldList * arguments;
290 struct Location argLoc;
291 } __attribute__ ((gcc_struct)) call;
294 struct Expression * exp;
295 struct __ecereNameSpace__ecere__sys__OldList * index;
296 } __attribute__ ((gcc_struct)) index;
299 struct Expression * exp;
300 struct Identifier * member;
302 unsigned int thisPtr;
303 } __attribute__ ((gcc_struct)) member;
307 struct Expression * exp1;
308 struct Expression * exp2;
309 } __attribute__ ((gcc_struct)) op;
310 struct TypeName * typeName;
311 struct Specifier * _class;
314 struct TypeName * typeName;
315 struct Expression * exp;
316 } __attribute__ ((gcc_struct)) cast;
319 struct Expression * cond;
320 struct __ecereNameSpace__ecere__sys__OldList * exp;
321 struct Expression * elseExp;
322 } __attribute__ ((gcc_struct)) cond;
325 struct TypeName * typeName;
326 struct Expression * size;
327 } __attribute__ ((gcc_struct)) _new;
330 struct TypeName * typeName;
331 struct Expression * size;
332 struct Expression * exp;
333 } __attribute__ ((gcc_struct)) _renew;
337 struct Identifier * id;
338 } __attribute__ ((gcc_struct)) db;
341 struct Expression * ds;
342 struct Expression * name;
343 } __attribute__ ((gcc_struct)) dbopen;
346 struct TypeName * typeName;
347 struct Initializer * initializer;
348 } __attribute__ ((gcc_struct)) initializer;
351 struct Expression * exp;
352 struct TypeName * typeName;
353 } __attribute__ ((gcc_struct)) vaArg;
354 } __attribute__ ((gcc_struct));
355 unsigned int debugValue;
356 struct __ecereNameSpace__ecere__com__DataValue val;
358 unsigned int hasAddress;
359 struct Type * expType;
360 struct Type * destType;
363 unsigned int byReference;
364 unsigned int isConstant;
365 unsigned int addedThis;
366 unsigned int needCast;
367 unsigned int thisPtr;
368 unsigned int opDestType;
369 } __attribute__ ((gcc_struct));
371 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_TemplateDatatype;
373 struct TemplateDatatype
375 struct __ecereNameSpace__ecere__sys__OldList * specifiers;
376 struct Declarator * decl;
377 } __attribute__ ((gcc_struct));
379 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_TemplateArgument;
381 struct TemplateArgument
383 struct TemplateArgument * prev;
384 struct TemplateArgument * next;
386 struct Identifier * name;
390 struct Expression * expression;
391 struct Identifier * identifier;
392 struct TemplateDatatype * templateDatatype;
393 } __attribute__ ((gcc_struct));
394 } __attribute__ ((gcc_struct));
396 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_TemplateParameter;
398 struct TemplateParameter
400 struct TemplateParameter * prev;
401 struct TemplateParameter * next;
404 struct Identifier * identifier;
407 struct TemplateDatatype * dataType;
409 } __attribute__ ((gcc_struct));
410 struct TemplateArgument * defaultArgument;
411 char * dataTypeString;
412 struct Type * baseType;
413 } __attribute__ ((gcc_struct));
415 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Specifier;
419 struct Specifier * prev;
420 struct Specifier * next;
428 struct ExtDecl * extDecl;
430 struct Symbol * symbol;
431 struct __ecereNameSpace__ecere__sys__OldList * templateArgs;
432 } __attribute__ ((gcc_struct));
435 struct Identifier * id;
436 struct __ecereNameSpace__ecere__sys__OldList * list;
437 struct __ecereNameSpace__ecere__sys__OldList * baseSpecs;
438 struct __ecereNameSpace__ecere__sys__OldList * definitions;
439 unsigned int addNameSpace;
440 struct Context * ctx;
441 struct ExtDecl * extDeclStruct;
442 } __attribute__ ((gcc_struct));
443 struct Expression * expression;
444 struct Specifier * _class;
445 struct TemplateParameter * templateParameter;
446 } __attribute__ ((gcc_struct));
447 } __attribute__ ((gcc_struct));
449 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Identifier;
453 struct Identifier * prev;
454 struct Identifier * next;
456 struct Symbol * classSym;
457 struct Specifier * _class;
459 struct Identifier * badID;
460 } __attribute__ ((gcc_struct));
462 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Pointer;
466 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Declarator;
470 struct Declarator * prev;
471 struct Declarator * next;
474 struct Symbol * symbol;
475 struct Declarator * declarator;
478 struct Identifier * identifier;
481 struct Expression * exp;
482 struct Expression * posExp;
483 struct Attrib * attrib;
484 } __attribute__ ((gcc_struct)) structDecl;
487 struct Expression * exp;
488 struct Specifier * enumClass;
489 } __attribute__ ((gcc_struct)) array;
492 struct __ecereNameSpace__ecere__sys__OldList * parameters;
493 } __attribute__ ((gcc_struct)) function;
496 struct Pointer * pointer;
497 } __attribute__ ((gcc_struct)) pointer;
500 struct ExtDecl * extended;
501 } __attribute__ ((gcc_struct)) extended;
502 } __attribute__ ((gcc_struct));
503 } __attribute__ ((gcc_struct));
505 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_FunctionDefinition;
507 struct FunctionDefinition;
509 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_DBTableDef;
513 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_External;
517 struct External * prev;
518 struct External * next;
521 struct Symbol * symbol;
524 struct FunctionDefinition * function;
525 struct ClassDefinition * _class;
526 struct Declaration * declaration;
528 struct Identifier * id;
529 struct DBTableDef * table;
530 } __attribute__ ((gcc_struct));
532 } __attribute__ ((gcc_struct));
534 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_ModuleImport;
538 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_ClassImport;
542 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Symbol;
547 struct Symbol * parent;
548 struct Symbol * left;
549 struct Symbol * right;
554 struct __ecereNameSpace__ecere__com__Method * method;
555 struct __ecereNameSpace__ecere__com__Property * _property;
556 struct __ecereNameSpace__ecere__com__Class * registered;
557 } __attribute__ ((gcc_struct));
564 struct External * pointerExternal;
565 struct External * structExternal;
566 } __attribute__ ((gcc_struct));
569 struct External * externalGet;
570 struct External * externalSet;
571 struct External * externalPtr;
572 struct External * externalIsSet;
573 } __attribute__ ((gcc_struct));
576 struct External * methodExternal;
577 struct External * methodCodeExternal;
578 } __attribute__ ((gcc_struct));
579 } __attribute__ ((gcc_struct));
580 unsigned int imported;
581 unsigned int declaredStructSym;
582 struct __ecereNameSpace__ecere__com__Class * _class;
583 unsigned int declaredStruct;
584 unsigned int needConstructor;
585 unsigned int needDestructor;
586 char * constructorName;
589 char * destructorName;
590 struct ModuleImport * module;
591 struct ClassImport * _import;
592 struct Location nameLoc;
593 unsigned int isParam;
594 unsigned int isRemote;
595 unsigned int isStruct;
596 unsigned int fireWatchersDone;
598 unsigned int classData;
599 unsigned int isStatic;
601 struct __ecereNameSpace__ecere__sys__OldList * templateParams;
602 struct __ecereNameSpace__ecere__sys__OldList templatedClasses;
603 struct Context * ctx;
605 struct Expression * propCategory;
606 } __attribute__ ((gcc_struct));
608 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Type;
617 struct Symbol * _class;
620 struct __ecereNameSpace__ecere__sys__OldList members;
622 } __attribute__ ((gcc_struct));
625 struct Type * returnType;
626 struct __ecereNameSpace__ecere__sys__OldList params;
627 struct Symbol * thisClass;
628 unsigned int staticMethod;
629 struct TemplateParameter * thisClassTemplate;
630 } __attribute__ ((gcc_struct));
633 struct __ecereNameSpace__ecere__com__Method * method;
634 struct __ecereNameSpace__ecere__com__Class * methodClass;
635 struct __ecereNameSpace__ecere__com__Class * usedClass;
636 } __attribute__ ((gcc_struct));
639 struct Type * arrayType;
641 struct Expression * arraySizeExp;
642 unsigned int freeExp;
643 struct Symbol * enumClass;
644 } __attribute__ ((gcc_struct));
646 struct TemplateParameter * templateParameter;
647 } __attribute__ ((gcc_struct));
657 unsigned int isSigned : 1;
658 unsigned int constant : 1;
659 unsigned int truth : 1;
660 unsigned int byReference : 1;
661 unsigned int extraParam : 1;
662 unsigned int directClassAccess : 1;
663 unsigned int computing : 1;
664 unsigned int keepCast : 1;
665 unsigned int passAsTemplate : 1;
666 unsigned int dllExport : 1;
667 unsigned int attrStdcall : 1;
668 unsigned int declaredWithStruct : 1;
669 unsigned int typedByReference : 1;
670 } __attribute__ ((gcc_struct));
672 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__Class;
674 struct __ecereNameSpace__ecere__com__Class
676 struct __ecereNameSpace__ecere__com__Class * prev;
677 struct __ecereNameSpace__ecere__com__Class * next;
683 int (* Constructor)(struct __ecereNameSpace__ecere__com__Instance *);
684 void (* Destructor)(struct __ecereNameSpace__ecere__com__Instance *);
687 struct __ecereNameSpace__ecere__com__Class * base;
688 struct __ecereNameSpace__ecere__sys__BinaryTree methods;
689 struct __ecereNameSpace__ecere__sys__BinaryTree members;
690 struct __ecereNameSpace__ecere__sys__BinaryTree prop;
691 struct __ecereNameSpace__ecere__sys__OldList membersAndProperties;
692 struct __ecereNameSpace__ecere__sys__BinaryTree classProperties;
693 struct __ecereNameSpace__ecere__sys__OldList derivatives;
697 struct __ecereNameSpace__ecere__com__Instance * module;
698 struct __ecereNameSpace__ecere__com__NameSpace * nameSpace;
699 char * dataTypeString;
700 struct Type * dataType;
702 int defaultAlignment;
703 void (* Initialize)();
705 struct __ecereNameSpace__ecere__sys__OldList selfWatchers;
706 char * designerClass;
707 unsigned int noExpansion;
708 char * defaultProperty;
709 unsigned int comRedefinition;
712 unsigned int internalDecl;
714 unsigned int computeSize;
716 int destructionWatchOffset;
718 struct __ecereNameSpace__ecere__sys__OldList delayedCPValues;
719 int inheritanceAccess;
722 struct __ecereNameSpace__ecere__sys__OldList conversions;
723 struct __ecereNameSpace__ecere__sys__OldList templateParams;
724 struct __ecereNameSpace__ecere__com__ClassTemplateArgument * templateArgs;
725 struct __ecereNameSpace__ecere__com__Class * templateClass;
726 struct __ecereNameSpace__ecere__sys__OldList templatized;
728 unsigned int isInstanceClass;
729 unsigned int byValueSystemClass;
730 } __attribute__ ((gcc_struct));
732 extern long long __ecereNameSpace__ecere__com__eClass_GetProperty(struct __ecereNameSpace__ecere__com__Class * _class, char * name);
734 extern void __ecereNameSpace__ecere__com__eClass_SetProperty(struct __ecereNameSpace__ecere__com__Class * _class, char * name, long long value);
736 extern void __ecereNameSpace__ecere__com__eInstance_FireSelfWatchers(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property);
738 extern void __ecereNameSpace__ecere__com__eInstance_SetMethod(struct __ecereNameSpace__ecere__com__Instance * instance, char * name, void * function);
740 extern void __ecereNameSpace__ecere__com__eInstance_IncRef(struct __ecereNameSpace__ecere__com__Instance * instance);
742 extern void __ecereNameSpace__ecere__com__eInstance_StopWatching(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property, struct __ecereNameSpace__ecere__com__Instance * object);
744 extern void __ecereNameSpace__ecere__com__eInstance_Watch(void * instance, struct __ecereNameSpace__ecere__com__Property * _property, void * object, void (* callback)(void * , void * ));
746 extern void __ecereNameSpace__ecere__com__eInstance_FireWatchers(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property);
748 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__Instance;
750 struct __ecereNameSpace__ecere__com__Instance
753 struct __ecereNameSpace__ecere__com__Class * _class;
755 } __attribute__ ((gcc_struct));
757 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__DataMember;
759 struct __ecereNameSpace__ecere__com__DataMember
761 struct __ecereNameSpace__ecere__com__DataMember * prev;
762 struct __ecereNameSpace__ecere__com__DataMember * next;
764 unsigned int isProperty;
767 struct __ecereNameSpace__ecere__com__Class * _class;
768 char * dataTypeString;
769 struct __ecereNameSpace__ecere__com__Class * dataTypeClass;
770 struct Type * dataType;
774 struct __ecereNameSpace__ecere__sys__OldList members;
775 struct __ecereNameSpace__ecere__sys__BinaryTree membersAlpha;
778 } __attribute__ ((gcc_struct));
780 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__SerialBuffer;
782 struct __ecereNameSpace__ecere__com__SerialBuffer
784 unsigned char * _buffer;
788 } __attribute__ ((gcc_struct));
790 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__ClassTemplateArgument;
792 struct __ecereNameSpace__ecere__com__ClassTemplateArgument
798 char * dataTypeString;
799 struct __ecereNameSpace__ecere__com__Class * dataTypeClass;
800 } __attribute__ ((gcc_struct));
801 struct __ecereNameSpace__ecere__com__DataValue expression;
807 struct __ecereNameSpace__ecere__com__DataMember * member;
808 struct __ecereNameSpace__ecere__com__Property * prop;
809 struct __ecereNameSpace__ecere__com__Method * method;
810 } __attribute__ ((gcc_struct));
811 } __attribute__ ((gcc_struct));
812 } __attribute__ ((gcc_struct));
813 } __attribute__ ((gcc_struct));
817 IDENTIFIER = 258, CONSTANT = 259, STRING_LITERAL = 260, SIZEOF = 261, PTR_OP = 262, INC_OP = 263, DEC_OP = 264, LEFT_OP = 265, RIGHT_OP = 266, LE_OP = 267, GE_OP = 268, EQ_OP = 269, NE_OP = 270, AND_OP = 271, OR_OP = 272, MUL_ASSIGN = 273, DIV_ASSIGN = 274, MOD_ASSIGN = 275, ADD_ASSIGN = 276, SUB_ASSIGN = 277, LEFT_ASSIGN = 278, RIGHT_ASSIGN = 279, AND_ASSIGN = 280, XOR_ASSIGN = 281, OR_ASSIGN = 282, TYPE_NAME = 283, TYPEDEF = 284, EXTERN = 285, STATIC = 286, AUTO = 287, REGISTER = 288, CHAR = 289, SHORT = 290, INT = 291, UINT = 292, INT64 = 293, LONG = 294, SIGNED = 295, UNSIGNED = 296, FLOAT = 297, DOUBLE = 298, CONST = 299, VOLATILE = 300, VOID = 301, VALIST = 302, STRUCT = 303, UNION = 304, ENUM = 305, ELLIPSIS = 306, CASE = 307, DEFAULT = 308, IF = 309, SWITCH = 310, WHILE = 311, DO = 312, FOR = 313, GOTO = 314, CONTINUE = 315, BREAK = 316, RETURN = 317, IFX = 318, ELSE = 319, CLASS = 320, THISCLASS = 321, CLASS_NAME = 322, PROPERTY = 323, SETPROP = 324, GETPROP = 325, NEWOP = 326, RENEW = 327, DELETE = 328, EXT_DECL = 329, EXT_STORAGE = 330, IMPORT = 331, DEFINE = 332, VIRTUAL = 333, ATTRIB = 334, PUBLIC = 335, PRIVATE = 336, TYPED_OBJECT = 337, ANY_OBJECT = 338, _INCREF = 339, EXTENSION = 340, ASM = 341, TYPEOF = 342, WATCH = 343, STOPWATCHING = 344, FIREWATCHERS = 345, WATCHABLE = 346, CLASS_DESIGNER = 347, CLASS_NO_EXPANSION = 348, CLASS_FIXED = 349, ISPROPSET = 350, CLASS_DEFAULT_PROPERTY = 351, PROPERTY_CATEGORY = 352, CLASS_DATA = 353, CLASS_PROPERTY = 354, SUBCLASS = 355, NAMESPACE = 356, NEW0OP = 357, RENEW0 = 358, VAARG = 359, DBTABLE = 360, DBFIELD = 361, DBINDEX = 362, DATABASE_OPEN = 363, ALIGNOF = 364, ATTRIB_DEP = 365, __ATTRIB = 366, BOOL = 367, _BOOL = 368, _COMPLEX = 369, _IMAGINARY = 370, RESTRICT = 371, THREAD = 372
820 typedef union YYSTYPE
825 struct Identifier * id;
826 struct Expression * exp;
827 struct Specifier * specifier;
828 struct __ecereNameSpace__ecere__sys__OldList * list;
829 struct Enumerator * enumerator;
830 struct Declarator * declarator;
831 struct Pointer * pointer;
832 struct Initializer * initializer;
833 struct InitDeclarator * initDeclarator;
834 struct TypeName * typeName;
835 struct Declaration * declaration;
836 struct Statement * stmt;
837 struct FunctionDefinition * function;
838 struct External * external;
839 struct Context * context;
840 struct AsmField * asmField;
841 struct Attrib * attrib;
842 struct ExtDecl * extDecl;
843 struct Attribute * attribute;
844 struct Instantiation * instance;
845 struct MembersInit * membersInit;
846 struct MemberInit * memberInit;
847 struct ClassFunction * classFunction;
848 struct ClassDefinition * _class;
849 struct ClassDef * classDef;
850 struct PropertyDef * prop;
852 struct Symbol * symbol;
853 struct PropertyWatch * propertyWatch;
854 struct TemplateParameter * templateParameter;
855 struct TemplateArgument * templateArgument;
856 struct TemplateDatatype * templateDatatype;
857 struct DBTableEntry * dbtableEntry;
858 struct DBIndexItem * dbindexItem;
859 struct DBTableDef * dbtableDef;
860 } __attribute__ ((gcc_struct)) YYSTYPE;
862 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Enumerator;
866 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_InitDeclarator;
868 struct InitDeclarator;
870 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_AsmField;
874 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Attribute;
878 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_ClassFunction;
882 struct ClassFunction * prev;
883 struct ClassFunction * next;
885 struct __ecereNameSpace__ecere__sys__OldList * specifiers;
886 struct Declarator * declarator;
887 struct __ecereNameSpace__ecere__sys__OldList * declarations;
888 struct Statement * body;
889 struct __ecereNameSpace__ecere__com__Class * _class;
890 struct __ecereNameSpace__ecere__sys__OldList attached;
893 struct Symbol * propSet;
894 unsigned int isVirtual;
895 unsigned int isConstructor;
896 unsigned int isDestructor;
897 unsigned int dontMangle;
900 } __attribute__ ((gcc_struct));
902 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_MembersInit;
906 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_MemberInit;
910 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_PropertyDef;
914 struct PropertyDef * prev;
915 struct PropertyDef * next;
917 struct __ecereNameSpace__ecere__sys__OldList * specifiers;
918 struct Declarator * declarator;
919 struct Identifier * id;
920 struct Statement * getStmt;
921 struct Statement * setStmt;
922 struct Statement * issetStmt;
923 struct Symbol * symbol;
924 struct Expression * category;
927 unsigned int conversion : 1;
928 unsigned int isWatchable : 1;
929 unsigned int isDBProp : 1;
930 } __attribute__ ((gcc_struct));
931 } __attribute__ ((gcc_struct));
933 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_PropertyWatch;
935 struct PropertyWatch;
937 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_ClassDef;
941 struct ClassDef * prev;
942 struct ClassDef * next;
947 struct Declaration * decl;
948 struct ClassFunction * function;
949 struct __ecereNameSpace__ecere__sys__OldList * defProperties;
950 struct PropertyDef * propertyDef;
951 struct PropertyWatch * propertyWatch;
953 struct Identifier * defaultProperty;
956 struct Identifier * id;
957 struct Initializer * initializer;
958 } __attribute__ ((gcc_struct));
959 } __attribute__ ((gcc_struct));
962 } __attribute__ ((gcc_struct));
964 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_DBTableEntry;
968 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_DBIndexItem;
972 extern YYSTYPE yylval;
974 extern struct Location yylloc;
976 extern struct Identifier * GetDeclId(struct Declarator * decl);
978 extern void ProcessExpressionType(struct Expression * exp);
980 extern void ComputeExpression(struct Expression * exp);
982 extern int strtol(char * , char * * , int base);
984 extern void FreeExpression(struct Expression * exp);
986 extern struct Type * ProcessType(struct __ecereNameSpace__ecere__sys__OldList * specs, struct Declarator * decl);
988 extern void PrintType(struct Type * type, char * string, unsigned int printName, unsigned int fullName);
990 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__BitMember;
992 struct __ecereNameSpace__ecere__com__BitMember
994 struct __ecereNameSpace__ecere__com__BitMember * prev;
995 struct __ecereNameSpace__ecere__com__BitMember * next;
997 unsigned int isProperty;
1000 struct __ecereNameSpace__ecere__com__Class * _class;
1001 char * dataTypeString;
1002 struct __ecereNameSpace__ecere__com__Class * dataTypeClass;
1003 struct Type * dataType;
1008 } __attribute__ ((gcc_struct));
1010 extern struct __ecereNameSpace__ecere__com__BitMember * __ecereNameSpace__ecere__com__eClass_AddBitMember(struct __ecereNameSpace__ecere__com__Class * _class, char * name, char * type, int bitSize, int bitPos, int declMode);
1012 extern void Compiler_Error(char * format, ...);
1014 extern char * __ecereNameSpace__ecere__GetTranslatedString(char * name, char * string, char * stringAndContext);
1016 extern void FreeType(struct Type * type);
1018 extern struct __ecereNameSpace__ecere__com__DataMember * __ecereNameSpace__ecere__com__eMember_AddDataMember(struct __ecereNameSpace__ecere__com__DataMember * member, char * name, char * type, unsigned int size, unsigned int alignment, int declMode);
1020 extern struct __ecereNameSpace__ecere__com__DataMember * __ecereNameSpace__ecere__com__eClass_AddDataMember(struct __ecereNameSpace__ecere__com__Class * _class, char * name, char * type, unsigned int size, unsigned int alignment, int declMode);
1022 extern struct __ecereNameSpace__ecere__com__DataMember * __ecereNameSpace__ecere__com__eMember_New(int type, int declMode);
1024 extern unsigned int __ecereNameSpace__ecere__com__eMember_AddMember(struct __ecereNameSpace__ecere__com__DataMember * addTo, struct __ecereNameSpace__ecere__com__DataMember * dataMember);
1026 extern unsigned int __ecereNameSpace__ecere__com__eClass_AddMember(struct __ecereNameSpace__ecere__com__Class * _class, struct __ecereNameSpace__ecere__com__DataMember * dataMember);
1028 extern struct __ecereNameSpace__ecere__sys__OldList * MkListOne(void * item);
1030 extern struct Declarator * MkDeclaratorIdentifier(struct Identifier * id);
1032 extern char * StringFromSpecDecl(struct __ecereNameSpace__ecere__sys__OldList * specs, struct Declarator * decl);
1034 extern struct __ecereNameSpace__ecere__com__Property * __ecereNameSpace__ecere__com__eClass_AddProperty(struct __ecereNameSpace__ecere__com__Class * _class, char * name, char * dataType, void * setStmt, void * getStmt, int declMode);
1036 extern unsigned int inCompiler;
1038 extern char * __ecereNameSpace__ecere__sys__CopyString(char * string);
1040 extern void __ecereNameSpace__ecere__com__eProperty_Watchable(struct __ecereNameSpace__ecere__com__Property * _property);
1042 extern int printf(char * , ...);
1044 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__ClassProperty;
1046 struct __ecereNameSpace__ecere__com__ClassProperty;
1048 extern struct __ecereNameSpace__ecere__com__ClassProperty * __ecereNameSpace__ecere__com__eClass_AddClassProperty(struct __ecereNameSpace__ecere__com__Class * _class, char * name, char * dataType, void * setStmt, void * getStmt);
1050 extern void * __ecereNameSpace__ecere__com__eInstance_New(struct __ecereNameSpace__ecere__com__Class * _class);
1052 static void AddDefinitions(struct __ecereNameSpace__ecere__com__Class * regClass, struct __ecereNameSpace__ecere__com__DataMember * member, struct __ecereNameSpace__ecere__sys__OldList * definitions)
1054 if(definitions != (((void *)0)))
1056 struct ClassDef * def;
1058 for(def = definitions->first; def; def = def->next)
1062 struct Declaration * decl = def->decl;
1063 struct __ecereNameSpace__ecere__com__DataMember * dataMember = (((void *)0));
1064 struct Type * dataType;
1068 struct Declarator * d;
1070 if(decl->declarators)
1072 for(d = (*decl->declarators).first; d; d = d->next)
1074 struct Identifier * declId = GetDeclId(d);
1078 if(regClass && regClass->type == 2)
1080 struct Expression * sizeExp = (d->type == 0) ? d->structDecl.exp : (((void *)0));
1081 struct Expression * posExp = (d->type == 0) ? d->structDecl.posExp : (((void *)0));
1082 int bitSize = 0, bitPos = -1;
1083 char dataTypeString[8192];
1085 dataTypeString[0] = (char)0;
1088 ProcessExpressionType(sizeExp);
1089 ComputeExpression(sizeExp);
1090 if(sizeExp->isConstant)
1091 bitSize = strtol(sizeExp->constant, (((void *)0)), 0);
1092 FreeExpression(sizeExp);
1096 ProcessExpressionType(posExp);
1097 ComputeExpression(posExp);
1098 if(posExp->isConstant)
1099 bitPos = strtol(posExp->constant, (((void *)0)), 0);
1100 FreeExpression(posExp);
1104 d->structDecl.posExp = (((void *)0));
1105 d->structDecl.exp = (((void *)0));
1107 dataType = ProcessType(decl->specifiers, d);
1108 PrintType(dataType, dataTypeString, 0x0, 0x1);
1110 struct __ecereNameSpace__ecere__com__BitMember * member = __ecereNameSpace__ecere__com__eClass_AddBitMember(regClass, declId->string, dataTypeString, 0, 0, def->memberAccess);
1114 member->size = bitSize;
1115 member->pos = bitPos;
1117 dataMember = (struct __ecereNameSpace__ecere__com__DataMember *)member;
1120 dataMember->dataType = dataType;
1123 Compiler_Error(__ecereNameSpace__ecere__GetTranslatedString("ec", "Member with same name already exists %s in class %s\n", (((void *)0))), declId->string, regClass->name);
1130 char typeString[8192];
1132 typeString[0] = (char)0;
1133 dataType = ProcessType(decl->specifiers, d);
1134 PrintType(dataType, typeString, 0x0, 0x1);
1137 dataMember = __ecereNameSpace__ecere__com__eMember_AddDataMember(member, declId->string, typeString, 0, 0, def->memberAccess);
1139 Compiler_Error(__ecereNameSpace__ecere__GetTranslatedString("ec", "Member with same name already exists %s in member %s\n", (((void *)0))), declId->string, member->name);
1143 dataMember = __ecereNameSpace__ecere__com__eClass_AddDataMember(regClass, declId->string, typeString, 0, 0, def->memberAccess);
1145 Compiler_Error(__ecereNameSpace__ecere__GetTranslatedString("ec", "Member with same name already exists %s in class %s\n", (((void *)0))), declId->string, regClass->name);
1148 dataMember->dataType = dataType;
1156 else if(decl->specifiers)
1158 struct Specifier * spec;
1160 for(spec = (*decl->specifiers).first; spec; spec = spec->next)
1162 if(spec->type == 3 || spec->type == 4)
1164 if(spec->definitions && !spec->id)
1166 struct __ecereNameSpace__ecere__com__DataMember * dataMember = __ecereNameSpace__ecere__com__eMember_New((spec->type == 4) ? 1 : 2, def->memberAccess);
1168 AddDefinitions((((void *)0)), dataMember, spec->definitions);
1171 __ecereNameSpace__ecere__com__eMember_AddMember(member, dataMember);
1175 __ecereNameSpace__ecere__com__eClass_AddMember(regClass, dataMember);
1178 else if(spec->definitions && spec->id)
1181 struct Identifier * id = spec->id;
1182 char typeString[8192];
1184 typeString[0] = (char)0;
1185 spec->id = (((void *)0));
1186 decl->declarators = MkListOne(MkDeclaratorIdentifier(id));
1187 dataType = ProcessType(decl->specifiers, (((void *)0)));
1188 PrintType(dataType, typeString, 0x0, 0x1);
1191 dataMember = __ecereNameSpace__ecere__com__eMember_AddDataMember(member, id->string, typeString, 0, 0, def->memberAccess);
1193 Compiler_Error(__ecereNameSpace__ecere__GetTranslatedString("ec", "Member with same name already exists %s in member %s\n", (((void *)0))), id->string, member->name);
1197 dataMember = __ecereNameSpace__ecere__com__eClass_AddDataMember(regClass, id->string, typeString, 0, 0, def->memberAccess);
1199 Compiler_Error(__ecereNameSpace__ecere__GetTranslatedString("ec", "Member with same name already exists %s in class %s\n", (((void *)0))), id->string, regClass->name);
1202 dataMember->dataType = dataType;
1211 else if(decl->type == 2)
1213 struct Instantiation * inst = decl->inst;
1214 struct Expression * exp = inst->exp;
1218 char * string = exp->identifier->string;
1221 struct Type * dataType = (dataType = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Type), dataType->kind = 8, dataType->_class = inst->_class->symbol, dataType->refCount = 1, dataType);
1225 dataMember = __ecereNameSpace__ecere__com__eMember_AddDataMember(member, string, inst->_class->name, 0, 0, def->memberAccess);
1227 Compiler_Error(__ecereNameSpace__ecere__GetTranslatedString("ec", "Member with same name already exists %s in member %s\n", (((void *)0))), string, member->name);
1231 dataMember = __ecereNameSpace__ecere__com__eClass_AddDataMember(regClass, string, inst->_class->name, 0, 0, def->memberAccess);
1233 Compiler_Error(__ecereNameSpace__ecere__GetTranslatedString("ec", "Member with same name already exists %s in class %s\n", (((void *)0))), string, regClass->name);
1236 dataMember->dataType = dataType;
1243 else if(def->type == 3 && def->propertyDef)
1245 struct PropertyDef * propertyDef = def->propertyDef;
1246 struct __ecereNameSpace__ecere__com__Property * prop;
1247 char * dataTypeString = StringFromSpecDecl(propertyDef->specifiers, propertyDef->declarator);
1249 prop = __ecereNameSpace__ecere__com__eClass_AddProperty(regClass, propertyDef->conversion ? (((void *)0)) : propertyDef->id->string, dataTypeString, inCompiler ? propertyDef->setStmt : (((void *)0)), inCompiler ? propertyDef->getStmt : (((void *)0)), def->memberAccess);
1250 (__ecereNameSpace__ecere__com__eSystem_Delete(dataTypeString), dataTypeString = 0);
1254 prop->IsSet = (void *)propertyDef->issetStmt;
1255 prop->compiled = 0x0;
1256 prop->symbol = __extension__ ({
1257 struct Symbol * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Symbol);
1259 __ecereInstance1->string = __ecereNameSpace__ecere__sys__CopyString(propertyDef->symbol->string), __ecereInstance1->id = propertyDef->symbol->id, __ecereInstance1->type = propertyDef->symbol->type, __ecereInstance1;
1261 ((struct Symbol *)prop->symbol)->propCategory = propertyDef->category;
1262 propertyDef->category = (((void *)0));
1263 if(propertyDef->isWatchable)
1264 __ecereNameSpace__ecere__com__eProperty_Watchable(prop);
1268 propertyDef->symbol->_property = prop;
1269 if(propertyDef->symbol->type)
1270 propertyDef->symbol->type->refCount++;
1272 else if(def->type == 10 && def->propertyDef)
1274 struct PropertyDef * propertyDef = def->propertyDef;
1275 struct __ecereNameSpace__ecere__com__ClassProperty * prop;
1276 char * dataTypeString = StringFromSpecDecl(propertyDef->specifiers, propertyDef->declarator);
1278 prop = __ecereNameSpace__ecere__com__eClass_AddClassProperty(regClass, propertyDef->id->string, dataTypeString, inCompiler ? propertyDef->setStmt : (((void *)0)), inCompiler ? propertyDef->getStmt : (((void *)0)));
1279 (__ecereNameSpace__ecere__com__eSystem_Delete(dataTypeString), dataTypeString = 0);
1285 extern struct __ecereNameSpace__ecere__com__Class * __ecereNameSpace__ecere__com__eSystem_FindClass(struct __ecereNameSpace__ecere__com__Instance * module, char * name);
1287 extern struct __ecereNameSpace__ecere__com__Instance * privateModule;
1289 extern struct Context * globalContext;
1291 extern struct __ecereNameSpace__ecere__sys__OldList * excludedSymbols;
1293 extern struct __ecereNameSpace__ecere__com__Class * __ecereNameSpace__ecere__com__eSystem_RegisterClass(int type, char * name, char * baseName, int size, int sizeClass, unsigned int (* Constructor)(void * ), void (* Destructor)(void * ), struct __ecereNameSpace__ecere__com__Instance * module, int declMode, int inheritanceAccess);
1295 extern unsigned int buildingECERECOMModule;
1297 extern int strcmp(const char * , const char * );
1299 extern void FreeList(struct __ecereNameSpace__ecere__sys__OldList * list, void (* FreeFunction)(void * ));
1301 extern void FreeSpecifier(struct Specifier * spec);
1303 extern struct Declarator * GetFuncDecl(struct Declarator * decl);
1305 extern struct __ecereNameSpace__ecere__com__Method * __ecereNameSpace__ecere__com__eClass_AddVirtualMethod(struct __ecereNameSpace__ecere__com__Class * _class, char * name, char * type, void * function, int declMode);
1307 extern struct __ecereNameSpace__ecere__com__Method * __ecereNameSpace__ecere__com__eClass_AddMethod(struct __ecereNameSpace__ecere__com__Class * _class, char * name, char * type, void * function, int declMode);
1309 extern char * strcpy(char * , const char * );
1311 extern char * strcat(char * , const char * );
1313 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_OpTable;
1317 unsigned int (* Add)(struct Expression *, struct Operand *, struct Operand *);
1318 unsigned int (* Sub)(struct Expression *, struct Operand *, struct Operand *);
1319 unsigned int (* Mul)(struct Expression *, struct Operand *, struct Operand *);
1320 unsigned int (* Div)(struct Expression *, struct Operand *, struct Operand *);
1321 unsigned int (* Mod)(struct Expression *, struct Operand *, struct Operand *);
1322 unsigned int (* Neg)(struct Expression *, struct Operand *);
1323 unsigned int (* Inc)(struct Expression *, struct Operand *);
1324 unsigned int (* Dec)(struct Expression *, struct Operand *);
1325 unsigned int (* Asign)(struct Expression *, struct Operand *, struct Operand *);
1326 unsigned int (* AddAsign)(struct Expression *, struct Operand *, struct Operand *);
1327 unsigned int (* SubAsign)(struct Expression *, struct Operand *, struct Operand *);
1328 unsigned int (* MulAsign)(struct Expression *, struct Operand *, struct Operand *);
1329 unsigned int (* DivAsign)(struct Expression *, struct Operand *, struct Operand *);
1330 unsigned int (* ModAsign)(struct Expression *, struct Operand *, struct Operand *);
1331 unsigned int (* BitAnd)(struct Expression *, struct Operand *, struct Operand *);
1332 unsigned int (* BitOr)(struct Expression *, struct Operand *, struct Operand *);
1333 unsigned int (* BitXor)(struct Expression *, struct Operand *, struct Operand *);
1334 unsigned int (* LShift)(struct Expression *, struct Operand *, struct Operand *);
1335 unsigned int (* RShift)(struct Expression *, struct Operand *, struct Operand *);
1336 unsigned int (* BitNot)(struct Expression *, struct Operand *);
1337 unsigned int (* AndAsign)(struct Expression *, struct Operand *, struct Operand *);
1338 unsigned int (* OrAsign)(struct Expression *, struct Operand *, struct Operand *);
1339 unsigned int (* XorAsign)(struct Expression *, struct Operand *, struct Operand *);
1340 unsigned int (* LShiftAsign)(struct Expression *, struct Operand *, struct Operand *);
1341 unsigned int (* RShiftAsign)(struct Expression *, struct Operand *, struct Operand *);
1342 unsigned int (* Not)(struct Expression *, struct Operand *);
1343 unsigned int (* Equ)(struct Expression *, struct Operand *, struct Operand *);
1344 unsigned int (* Nqu)(struct Expression *, struct Operand *, struct Operand *);
1345 unsigned int (* And)(struct Expression *, struct Operand *, struct Operand *);
1346 unsigned int (* Or)(struct Expression *, struct Operand *, struct Operand *);
1347 unsigned int (* Grt)(struct Expression *, struct Operand *, struct Operand *);
1348 unsigned int (* Sma)(struct Expression *, struct Operand *, struct Operand *);
1349 unsigned int (* GrtEqu)(struct Expression *, struct Operand *, struct Operand *);
1350 unsigned int (* SmaEqu)(struct Expression *, struct Operand *, struct Operand *);
1351 unsigned int (* Cond)(struct Expression *, struct Operand *, struct Operand *, struct Operand *);
1352 } __attribute__ ((gcc_struct));
1354 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Operand;
1360 unsigned int ptrSize;
1373 } __attribute__ ((gcc_struct));
1375 } __attribute__ ((gcc_struct));
1377 extern struct Operand GetOperand(struct Expression * exp);
1379 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__ClassTemplateParameter;
1381 struct __ecereNameSpace__ecere__com__ClassTemplateParameter;
1383 extern struct __ecereNameSpace__ecere__com__ClassTemplateParameter * __ecereNameSpace__ecere__com__eClass_AddTemplateParameter(struct __ecereNameSpace__ecere__com__Class * _class, char * name, int type, void * info, struct __ecereNameSpace__ecere__com__ClassTemplateArgument * defaultArg);
1385 extern void __ecereNameSpace__ecere__com__eClass_DoneAddingTemplateParameters(struct __ecereNameSpace__ecere__com__Class * base);
1387 void __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Remove(struct __ecereNameSpace__ecere__sys__BinaryTree * this, struct __ecereNameSpace__ecere__sys__BTNode * node);
1389 void __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add(struct __ecereNameSpace__ecere__sys__OldList * this, void * item);
1391 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 Location * loc, struct __ecereNameSpace__ecere__sys__OldList * defs, void * after, struct __ecereNameSpace__ecere__sys__OldList * initDeclarators, int declMode)
1393 struct __ecereNameSpace__ecere__com__Class * regClass;
1394 struct ClassDef * def;
1395 unsigned int redefinition = 0x0;
1397 regClass = __ecereNameSpace__ecere__com__eSystem_FindClass(privateModule, symbol->string);
1398 if(regClass && !regClass->internalDecl)
1400 if(symbol->parent || (struct Symbol *)globalContext->classes.root == symbol)
1402 __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Remove(&globalContext->classes, (struct __ecereNameSpace__ecere__sys__BTNode *)symbol);
1403 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*excludedSymbols), symbol);
1409 Compiler_Error(__ecereNameSpace__ecere__GetTranslatedString("ec", "redefinition of class %s\n", (((void *)0))), symbol->string);
1415 char baseName[1024] = "";
1416 unsigned int unitType = 0x0;
1417 unsigned int wouldBeEnum = 0x0;
1418 int inheritanceAccess = 1;
1420 if(baseSpecs != (((void *)0)))
1422 struct Type * baseType = ProcessType(baseSpecs, (((void *)0)));
1424 PrintType(baseType, baseName, 0x0, 0x1);
1425 if(baseType->kind == 8)
1427 if(baseType->_class->registered && classType == 0)
1429 if(baseType->_class->registered->type == 3)
1431 else if(baseType->_class->registered->type == 2)
1433 else if(baseType->_class->registered->type == 5)
1435 else if(baseType->_class->registered->type == 4)
1441 else if(baseType->kind == 9 || baseType->kind == 10)
1449 if(((struct Specifier *)baseSpecs->first)->type == 0 && ((struct Specifier *)baseSpecs->first)->specifier == PRIVATE)
1450 inheritanceAccess = 2;
1456 if(definitions != (((void *)0)))
1458 for(def = definitions->first; def; def = def->next)
1462 struct Declaration * decl = def->decl;
1471 if(decl->declarators)
1473 struct Declarator * d;
1475 for(d = (*decl->declarators).first; d; d = d->next)
1479 if(d->structDecl.exp)
1493 if(classType == 0 && wouldBeEnum)
1495 regClass = symbol->registered = __ecereNameSpace__ecere__com__eSystem_RegisterClass((classType == 6) ? 1 : classType, symbol->string, baseName[0] ? baseName : (((void *)0)), 0, 0, (((void *)0)), (((void *)0)), privateModule, buildingECERECOMModule ? 4 : declMode, inheritanceAccess);
1497 regClass->symbol = symbol;
1503 struct __ecereNameSpace__ecere__com__DataMember * unionMember = __ecereNameSpace__ecere__com__eMember_New(1, 1);
1505 AddDefinitions(regClass, unionMember, definitions);
1506 __ecereNameSpace__ecere__com__eClass_AddMember(regClass, unionMember);
1509 AddDefinitions(regClass, (((void *)0)), definitions);
1511 if(definitions != (((void *)0)))
1513 for(def = definitions->first; def; def = def->next)
1515 if(def->type == 0 && (def->function->isConstructor || def->function->isDestructor))
1517 struct Specifier * spec = def->function->specifiers ? (*def->function->specifiers).last : (((void *)0));
1519 if(!spec || spec->type != 1 || !spec->name || (strcmp(spec->name, regClass->name) && (!spec->symbol || !spec->symbol->registered || strcmp(spec->symbol->registered->name, regClass->name))))
1521 yylloc = def->function->loc;
1522 Compiler_Error(__ecereNameSpace__ecere__GetTranslatedString("ec", "wrong class name specified for %s\n", (((void *)0))), def->function->isConstructor ? __ecereNameSpace__ecere__GetTranslatedString("ec", "constructor", (((void *)0))) : __ecereNameSpace__ecere__GetTranslatedString("ec", "destructor", (((void *)0))));
1524 FreeList(def->function->specifiers, FreeSpecifier);
1525 def->function->specifiers = (((void *)0));
1527 if(def->type == 0 && def->function->declarator)
1529 struct ClassFunction * func = def->function;
1531 func->_class = regClass;
1532 if(!redefinition && !func->dontMangle)
1534 struct Declarator * funcDecl = GetFuncDecl(func->declarator);
1535 struct Identifier * id = GetDeclId(funcDecl);
1536 struct __ecereNameSpace__ecere__com__Method * method;
1540 char * typeString = StringFromSpecDecl(func->specifiers, func->declarator);
1542 method = __ecereNameSpace__ecere__com__eClass_AddVirtualMethod(regClass, id->string, typeString, inCompiler ? func->declarator->symbol : (((void *)0)), def->memberAccess);
1543 (__ecereNameSpace__ecere__com__eSystem_Delete(typeString), typeString = 0);
1547 char * typeString = StringFromSpecDecl(func->specifiers, func->declarator);
1549 method = __ecereNameSpace__ecere__com__eClass_AddMethod(regClass, id->string, typeString, inCompiler ? func->declarator->symbol : (((void *)0)), def->memberAccess);
1551 Compiler_Error(__ecereNameSpace__ecere__GetTranslatedString("ec", "Redefinition of method %s in class %s\n", (((void *)0))), id->string, regClass->name);
1552 (__ecereNameSpace__ecere__com__eSystem_Delete(typeString), typeString = 0);
1554 if(method && (method->type != 1 || method->_class == regClass))
1556 method->symbol = __extension__ ({
1557 struct Symbol * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Symbol);
1559 __ecereInstance1->string = __ecereNameSpace__ecere__sys__CopyString(func->declarator->symbol->string), __ecereInstance1->id = func->declarator->symbol->id, __ecereInstance1->type = func->declarator->symbol->type, __ecereInstance1->method = method, __ecereInstance1;
1561 if(func->declarator->symbol->type)
1562 func->declarator->symbol->type->refCount++;
1563 func->declarator->symbol->method = method;
1567 func->declarator->symbol->method = method;
1573 if(regClass && symbol->templateParams)
1575 struct TemplateParameter * param;
1577 for(param = (*symbol->templateParams).first; param; param = param->next)
1579 struct __ecereNameSpace__ecere__com__ClassTemplateArgument defaultArg =
1584 if(param->defaultArgument)
1589 defaultArg.dataTypeString = StringFromSpecDecl(param->defaultArgument->templateDatatype->specifiers, param->defaultArgument->templateDatatype->decl);
1593 char memberString[1024];
1595 memberString[0] = '\0';
1596 if(param->defaultArgument->identifier->_class)
1598 if(param->defaultArgument->identifier->_class->type == 8)
1600 if(param->defaultArgument->identifier->_class->templateParameter)
1601 strcpy(memberString, param->defaultArgument->identifier->_class->templateParameter->identifier->string);
1605 if(param->defaultArgument->identifier->_class->name)
1606 strcpy(memberString, param->defaultArgument->identifier->_class->name);
1611 strcat(memberString, "::");
1613 strcat(memberString, param->defaultArgument->identifier->string);
1614 defaultArg.memberString = __ecereNameSpace__ecere__sys__CopyString(memberString);
1621 param->defaultArgument->expression->destType = ProcessType(param->dataType->specifiers, param->dataType->decl);
1622 ProcessExpressionType(param->defaultArgument->expression);
1623 ComputeExpression(param->defaultArgument->expression);
1624 op = GetOperand(param->defaultArgument->expression);
1625 defaultArg.expression.ui64 = op.ui64;
1630 if(param->type == 1)
1632 __ecereNameSpace__ecere__com__eClass_AddTemplateParameter(regClass, param->identifier->string, 1, (void *)param->memberType, &defaultArg);
1636 char * typeString = param->dataType ? StringFromSpecDecl(param->dataType->specifiers, param->dataType->decl) : (((void *)0));
1638 __ecereNameSpace__ecere__com__eClass_AddTemplateParameter(regClass, param->identifier->string, param->type, typeString, &defaultArg);
1639 (__ecereNameSpace__ecere__com__eSystem_Delete(typeString), typeString = 0);
1641 if(param->type == 0 || param->type == 1)
1642 (__ecereNameSpace__ecere__com__eSystem_Delete(defaultArg.dataTypeString), defaultArg.dataTypeString = 0);
1644 __ecereNameSpace__ecere__com__eClass_DoneAddingTemplateParameters(regClass);
1648 extern struct External * curExternal;
1650 extern struct __ecereNameSpace__ecere__sys__OldList * ast;
1652 extern struct Symbol * FindType(struct Context * ctx, char * name);
1654 extern struct Symbol * FindClass(char * name);
1656 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__sys__OldLink;
1658 struct __ecereNameSpace__ecere__sys__OldLink
1660 struct __ecereNameSpace__ecere__sys__OldLink * prev;
1661 struct __ecereNameSpace__ecere__sys__OldLink * next;
1663 } __attribute__ ((gcc_struct));
1665 extern struct ModuleImport * mainModule;
1667 void PrePreProcessClassDefinitions()
1669 struct External * external, * next;
1671 curExternal = (((void *)0));
1674 for(external = (*ast).first; external; external = next)
1676 next = external->next;
1677 curExternal = external;
1678 if(external->type == 2)
1680 struct ClassDefinition * _class = external->_class;
1682 if(_class->definitions && (!_class->symbol->registered || !inCompiler))
1684 ProcessClass(0, _class->definitions, _class->symbol, _class->baseSpecs, (((void *)0)), &_class->loc, ast, external->prev, (((void *)0)), _class->declMode);
1685 _class->symbol->isStatic = _class->declMode == 3;
1688 else if(external->type == 1)
1690 struct Declaration * declaration = external->declaration;
1692 if(declaration->type == 1)
1694 if(declaration->specifiers)
1696 struct Specifier * specifier;
1698 for(specifier = (*declaration->specifiers).first; specifier; specifier = specifier->next)
1700 if((specifier->type == 2 || specifier->type == 3 || specifier->type == 4) && specifier->id && specifier->id->string && (declaration->declMode || specifier->baseSpecs || (specifier->type == 2 && specifier->definitions)))
1702 struct Symbol * type = FindType(globalContext, specifier->id->string);
1703 struct Symbol * symbol = FindClass(specifier->id->string);
1707 declaration->declMode = 0;
1710 __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Remove(&globalContext->classes, (struct __ecereNameSpace__ecere__sys__BTNode *)symbol);
1711 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*excludedSymbols), symbol);
1714 else if(symbol && !symbol->registered)
1718 if(specifier->type == 2)
1720 else if(specifier->type == 4)
1724 ProcessClass(classType, specifier->definitions, symbol, specifier->baseSpecs, specifier->list, &specifier->loc, ast, external->prev, declaration->declarators, declaration->declMode);
1725 symbol->isStatic = declaration->declMode == 3;
1732 else if(external->type == 3)
1737 for(external = (*ast).first; external; external = external->next)
1739 if(external->type == 2)
1741 struct ClassDefinition * _class = external->_class;
1745 struct __ecereNameSpace__ecere__sys__OldLink * link;
1747 for(link = _class->symbol->templatedClasses.first; link; link = link->next)
1749 struct Symbol * symbol = link->data;
1751 symbol->registered = __ecereNameSpace__ecere__com__eSystem_FindClass(privateModule, symbol->string);
1755 else if(external->type == 1)
1757 struct Declaration * declaration = external->declaration;
1759 if(declaration->type == 1)
1761 if(declaration->specifiers)
1763 struct Specifier * specifier;
1765 for(specifier = (*declaration->specifiers).first; specifier; specifier = specifier->next)
1767 if((specifier->type == 2 || specifier->type == 3 || specifier->type == 4) && specifier->id && specifier->id->string && (declaration->declMode || specifier->baseSpecs || (specifier->type == 2 && specifier->definitions)))
1769 struct Symbol * type = FindType(globalContext, specifier->id->string);
1770 struct Symbol * symbol = FindClass(specifier->id->string);
1777 struct __ecereNameSpace__ecere__sys__OldLink * link;
1779 for(link = symbol->templatedClasses.first; link; link = link->next)
1781 struct Symbol * tplSymbol = link->data;
1783 tplSymbol->registered = __ecereNameSpace__ecere__com__eSystem_FindClass(privateModule, tplSymbol->string);
1784 tplSymbol->module = symbol->module ? symbol->module : mainModule;
1797 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__GlobalFunction;
1799 struct __ecereNameSpace__ecere__com__GlobalFunction;
1801 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);
1803 void __ecereRegisterModule_firstPass(struct __ecereNameSpace__ecere__com__Instance * module)
1805 struct __ecereNameSpace__ecere__com__Class * class;
1807 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("PrePreProcessClassDefinitions", "void PrePreProcessClassDefinitions(void)", PrePreProcessClassDefinitions, module, 1);
1810 void __ecereUnregisterModule_firstPass(struct __ecereNameSpace__ecere__com__Instance * module)