1 /* Code generated from eC source file: pass1.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>
34 #if /*defined(_W64) || */(defined(__WORDSIZE) && __WORDSIZE == 8) || defined(__x86_64__)
40 #define arch_PointerSize sizeof(void *)
41 #define structSize_Instance (_64BIT ? 24 : 12)
43 extern void * __ecereNameSpace__ecere__com__eSystem_New(unsigned int size);
45 extern void * __ecereNameSpace__ecere__com__eSystem_New0(unsigned int size);
47 extern void * __ecereNameSpace__ecere__com__eSystem_Renew(void * memory, unsigned int size);
49 extern void * __ecereNameSpace__ecere__com__eSystem_Renew0(void * memory, unsigned int size);
51 extern void __ecereNameSpace__ecere__com__eSystem_Delete(void * memory);
53 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__sys__BTNode;
55 struct __ecereNameSpace__ecere__sys__BTNode;
57 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__sys__BinaryTree;
59 struct __ecereNameSpace__ecere__sys__BinaryTree
61 struct __ecereNameSpace__ecere__sys__BTNode * root;
63 int (* CompareKey)(struct __ecereNameSpace__ecere__sys__BinaryTree * tree, uintptr_t a, uintptr_t b);
64 void (* FreeKey)(void * key);
65 } __attribute__ ((gcc_struct));
67 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__sys__OldList;
69 struct __ecereNameSpace__ecere__sys__OldList
76 } __attribute__ ((gcc_struct));
78 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__Method;
80 struct __ecereNameSpace__ecere__com__Method
83 struct __ecereNameSpace__ecere__com__Method * parent;
84 struct __ecereNameSpace__ecere__com__Method * left;
85 struct __ecereNameSpace__ecere__com__Method * right;
90 struct __ecereNameSpace__ecere__com__Class * _class;
92 char * dataTypeString;
93 struct Type * dataType;
95 } __attribute__ ((gcc_struct));
97 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__Property;
99 struct __ecereNameSpace__ecere__com__Property
101 struct __ecereNameSpace__ecere__com__Property * prev;
102 struct __ecereNameSpace__ecere__com__Property * next;
104 unsigned int isProperty;
107 struct __ecereNameSpace__ecere__com__Class * _class;
108 char * dataTypeString;
109 struct __ecereNameSpace__ecere__com__Class * dataTypeClass;
110 struct Type * dataType;
111 void (* Set)(void * , int);
112 int (* Get)(void * );
113 unsigned int (* IsSet)(void * );
117 unsigned int conversion;
118 unsigned int watcherOffset;
120 unsigned int compiled;
121 unsigned int selfWatchable;
122 unsigned int isWatchable;
123 } __attribute__ ((gcc_struct));
125 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_CodePosition;
133 } __attribute__ ((gcc_struct));
135 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Location;
139 struct CodePosition start;
140 struct CodePosition end;
141 } __attribute__ ((gcc_struct));
143 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Attrib;
147 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_ExtDecl;
151 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_ClassDefinition;
153 struct ClassDefinition
155 struct ClassDefinition * prev;
156 struct ClassDefinition * next;
158 struct Specifier * _class;
159 struct __ecereNameSpace__ecere__sys__OldList * baseSpecs;
160 struct __ecereNameSpace__ecere__sys__OldList * definitions;
161 struct Symbol * symbol;
162 struct Location blockStart;
163 struct Location nameLoc;
166 unsigned int deleteWatchable;
167 } __attribute__ ((gcc_struct));
169 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Context;
173 struct Context * parent;
174 struct __ecereNameSpace__ecere__sys__BinaryTree types;
175 struct __ecereNameSpace__ecere__sys__BinaryTree classes;
176 struct __ecereNameSpace__ecere__sys__BinaryTree symbols;
177 struct __ecereNameSpace__ecere__sys__BinaryTree structSymbols;
180 struct __ecereNameSpace__ecere__sys__BinaryTree templateTypes;
181 struct ClassDefinition * classDef;
182 unsigned int templateTypesOnly;
183 unsigned int hasNameSpace;
184 } __attribute__ ((gcc_struct));
186 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Instantiation;
188 struct Instantiation;
190 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Declaration;
194 struct Declaration * prev;
195 struct Declaration * next;
202 struct __ecereNameSpace__ecere__sys__OldList * specifiers;
203 struct __ecereNameSpace__ecere__sys__OldList * declarators;
204 } __attribute__ ((gcc_struct));
205 struct Instantiation * inst;
208 struct Identifier * id;
209 struct Expression * exp;
210 } __attribute__ ((gcc_struct));
211 } __attribute__ ((gcc_struct));
212 struct Specifier * extStorage;
213 struct Symbol * symbol;
215 } __attribute__ ((gcc_struct));
217 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Statement;
221 struct Statement * prev;
222 struct Statement * next;
227 struct __ecereNameSpace__ecere__sys__OldList * expressions;
230 struct Identifier * id;
231 struct Statement * stmt;
232 } __attribute__ ((gcc_struct)) labeled;
235 struct Expression * exp;
236 struct Statement * stmt;
237 } __attribute__ ((gcc_struct)) caseStmt;
240 struct __ecereNameSpace__ecere__sys__OldList * declarations;
241 struct __ecereNameSpace__ecere__sys__OldList * statements;
242 struct Context * context;
243 unsigned int isSwitch;
244 } __attribute__ ((gcc_struct)) compound;
247 struct __ecereNameSpace__ecere__sys__OldList * exp;
248 struct Statement * stmt;
249 struct Statement * elseStmt;
250 } __attribute__ ((gcc_struct)) ifStmt;
253 struct __ecereNameSpace__ecere__sys__OldList * exp;
254 struct Statement * stmt;
255 } __attribute__ ((gcc_struct)) switchStmt;
258 struct __ecereNameSpace__ecere__sys__OldList * exp;
259 struct Statement * stmt;
260 } __attribute__ ((gcc_struct)) whileStmt;
263 struct __ecereNameSpace__ecere__sys__OldList * exp;
264 struct Statement * stmt;
265 } __attribute__ ((gcc_struct)) doWhile;
268 struct Statement * init;
269 struct Statement * check;
270 struct __ecereNameSpace__ecere__sys__OldList * increment;
271 struct Statement * stmt;
272 } __attribute__ ((gcc_struct)) forStmt;
275 struct Identifier * id;
276 } __attribute__ ((gcc_struct)) gotoStmt;
279 struct Specifier * spec;
281 struct __ecereNameSpace__ecere__sys__OldList * inputFields;
282 struct __ecereNameSpace__ecere__sys__OldList * outputFields;
283 struct __ecereNameSpace__ecere__sys__OldList * clobberedFields;
284 } __attribute__ ((gcc_struct)) asmStmt;
287 struct Expression * watcher;
288 struct Expression * object;
289 struct __ecereNameSpace__ecere__sys__OldList * watches;
290 } __attribute__ ((gcc_struct)) _watch;
293 struct Identifier * id;
294 struct __ecereNameSpace__ecere__sys__OldList * exp;
295 struct __ecereNameSpace__ecere__sys__OldList * filter;
296 struct Statement * stmt;
297 } __attribute__ ((gcc_struct)) forEachStmt;
298 struct Declaration * decl;
299 } __attribute__ ((gcc_struct));
300 } __attribute__ ((gcc_struct));
302 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_TypeName;
306 struct TypeName * prev;
307 struct TypeName * next;
309 struct __ecereNameSpace__ecere__sys__OldList * qualifiers;
310 struct Declarator * declarator;
312 struct Expression * bitCount;
313 } __attribute__ ((gcc_struct));
315 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Initializer;
319 struct Initializer * prev;
320 struct Initializer * next;
325 struct Expression * exp;
326 struct __ecereNameSpace__ecere__sys__OldList * list;
327 } __attribute__ ((gcc_struct));
328 unsigned int isConstant;
329 struct Identifier * id;
330 } __attribute__ ((gcc_struct));
332 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__DataValue;
334 struct __ecereNameSpace__ecere__com__DataValue
349 } __attribute__ ((gcc_struct));
350 } __attribute__ ((gcc_struct));
352 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Expression;
356 struct Expression * prev;
357 struct Expression * next;
365 struct Identifier * identifier;
366 } __attribute__ ((gcc_struct));
367 struct Statement * compound;
368 struct Instantiation * instance;
372 unsigned int intlString;
373 } __attribute__ ((gcc_struct));
374 struct __ecereNameSpace__ecere__sys__OldList * list;
377 struct __ecereNameSpace__ecere__sys__OldList * specifiers;
378 struct Declarator * decl;
379 } __attribute__ ((gcc_struct)) _classExp;
382 struct Identifier * id;
383 } __attribute__ ((gcc_struct)) classData;
386 struct Expression * exp;
387 struct __ecereNameSpace__ecere__sys__OldList * arguments;
388 struct Location argLoc;
389 } __attribute__ ((gcc_struct)) call;
392 struct Expression * exp;
393 struct __ecereNameSpace__ecere__sys__OldList * index;
394 } __attribute__ ((gcc_struct)) index;
397 struct Expression * exp;
398 struct Identifier * member;
400 unsigned int thisPtr;
401 } __attribute__ ((gcc_struct)) member;
405 struct Expression * exp1;
406 struct Expression * exp2;
407 } __attribute__ ((gcc_struct)) op;
408 struct TypeName * typeName;
409 struct Specifier * _class;
412 struct TypeName * typeName;
413 struct Expression * exp;
414 } __attribute__ ((gcc_struct)) cast;
417 struct Expression * cond;
418 struct __ecereNameSpace__ecere__sys__OldList * exp;
419 struct Expression * elseExp;
420 } __attribute__ ((gcc_struct)) cond;
423 struct TypeName * typeName;
424 struct Expression * size;
425 } __attribute__ ((gcc_struct)) _new;
428 struct TypeName * typeName;
429 struct Expression * size;
430 struct Expression * exp;
431 } __attribute__ ((gcc_struct)) _renew;
435 struct Identifier * id;
436 } __attribute__ ((gcc_struct)) db;
439 struct Expression * ds;
440 struct Expression * name;
441 } __attribute__ ((gcc_struct)) dbopen;
444 struct TypeName * typeName;
445 struct Initializer * initializer;
446 } __attribute__ ((gcc_struct)) initializer;
449 struct Expression * exp;
450 struct TypeName * typeName;
451 } __attribute__ ((gcc_struct)) vaArg;
452 } __attribute__ ((gcc_struct));
453 unsigned int debugValue;
454 struct __ecereNameSpace__ecere__com__DataValue val;
456 unsigned int hasAddress;
457 struct Type * expType;
458 struct Type * destType;
461 unsigned int byReference;
462 unsigned int isConstant;
463 unsigned int addedThis;
464 unsigned int needCast;
465 unsigned int thisPtr;
466 unsigned int opDestType;
467 } __attribute__ ((gcc_struct));
469 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_TemplateDatatype;
471 struct TemplateDatatype
473 struct __ecereNameSpace__ecere__sys__OldList * specifiers;
474 struct Declarator * decl;
475 } __attribute__ ((gcc_struct));
477 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_TemplateArgument;
479 struct TemplateArgument
481 struct TemplateArgument * prev;
482 struct TemplateArgument * next;
484 struct Identifier * name;
488 struct Expression * expression;
489 struct Identifier * identifier;
490 struct TemplateDatatype * templateDatatype;
491 } __attribute__ ((gcc_struct));
492 } __attribute__ ((gcc_struct));
494 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_TemplateParameter;
496 struct TemplateParameter
498 struct TemplateParameter * prev;
499 struct TemplateParameter * next;
502 struct Identifier * identifier;
505 struct TemplateDatatype * dataType;
507 } __attribute__ ((gcc_struct));
508 struct TemplateArgument * defaultArgument;
509 char * dataTypeString;
510 struct Type * baseType;
511 } __attribute__ ((gcc_struct));
513 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Specifier;
517 struct Specifier * prev;
518 struct Specifier * next;
526 struct ExtDecl * extDecl;
528 struct Symbol * symbol;
529 struct __ecereNameSpace__ecere__sys__OldList * templateArgs;
530 } __attribute__ ((gcc_struct));
533 struct Identifier * id;
534 struct __ecereNameSpace__ecere__sys__OldList * list;
535 struct __ecereNameSpace__ecere__sys__OldList * baseSpecs;
536 struct __ecereNameSpace__ecere__sys__OldList * definitions;
537 unsigned int addNameSpace;
538 struct Context * ctx;
539 struct ExtDecl * extDeclStruct;
540 } __attribute__ ((gcc_struct));
541 struct Expression * expression;
542 struct Specifier * _class;
543 struct TemplateParameter * templateParameter;
544 } __attribute__ ((gcc_struct));
545 } __attribute__ ((gcc_struct));
547 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Identifier;
551 struct Identifier * prev;
552 struct Identifier * next;
554 struct Symbol * classSym;
555 struct Specifier * _class;
557 struct Identifier * badID;
558 } __attribute__ ((gcc_struct));
560 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Pointer;
564 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Declarator;
568 struct Declarator * prev;
569 struct Declarator * next;
572 struct Symbol * symbol;
573 struct Declarator * declarator;
576 struct Identifier * identifier;
579 struct Expression * exp;
580 struct Expression * posExp;
581 struct Attrib * attrib;
582 } __attribute__ ((gcc_struct)) structDecl;
585 struct Expression * exp;
586 struct Specifier * enumClass;
587 } __attribute__ ((gcc_struct)) array;
590 struct __ecereNameSpace__ecere__sys__OldList * parameters;
591 } __attribute__ ((gcc_struct)) function;
594 struct Pointer * pointer;
595 } __attribute__ ((gcc_struct)) pointer;
598 struct ExtDecl * extended;
599 } __attribute__ ((gcc_struct)) extended;
600 } __attribute__ ((gcc_struct));
601 } __attribute__ ((gcc_struct));
603 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_FunctionDefinition;
605 struct FunctionDefinition
607 struct FunctionDefinition * prev;
608 struct FunctionDefinition * next;
610 struct __ecereNameSpace__ecere__sys__OldList * specifiers;
611 struct Declarator * declarator;
612 struct __ecereNameSpace__ecere__sys__OldList * declarations;
613 struct Statement * body;
614 struct __ecereNameSpace__ecere__com__Class * _class;
615 struct __ecereNameSpace__ecere__sys__OldList attached;
618 struct Symbol * propSet;
620 unsigned int propertyNoThis;
621 } __attribute__ ((gcc_struct));
623 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_DBTableDef;
627 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_External;
631 struct External * prev;
632 struct External * next;
635 struct Symbol * symbol;
638 struct FunctionDefinition * function;
639 struct ClassDefinition * _class;
640 struct Declaration * declaration;
642 struct Identifier * id;
643 struct DBTableDef * table;
644 } __attribute__ ((gcc_struct));
646 } __attribute__ ((gcc_struct));
648 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_ModuleImport;
652 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_ClassImport;
656 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Symbol;
661 struct Symbol * parent;
662 struct Symbol * left;
663 struct Symbol * right;
668 struct __ecereNameSpace__ecere__com__Method * method;
669 struct __ecereNameSpace__ecere__com__Property * _property;
670 struct __ecereNameSpace__ecere__com__Class * registered;
671 } __attribute__ ((gcc_struct));
678 struct External * pointerExternal;
679 struct External * structExternal;
680 } __attribute__ ((gcc_struct));
683 struct External * externalGet;
684 struct External * externalSet;
685 struct External * externalPtr;
686 struct External * externalIsSet;
687 } __attribute__ ((gcc_struct));
690 struct External * methodExternal;
691 struct External * methodCodeExternal;
692 } __attribute__ ((gcc_struct));
693 } __attribute__ ((gcc_struct));
694 unsigned int imported;
695 unsigned int declaredStructSym;
696 struct __ecereNameSpace__ecere__com__Class * _class;
697 unsigned int declaredStruct;
698 unsigned int needConstructor;
699 unsigned int needDestructor;
700 char * constructorName;
703 char * destructorName;
704 struct ModuleImport * module;
705 struct ClassImport * _import;
706 struct Location nameLoc;
707 unsigned int isParam;
708 unsigned int isRemote;
709 unsigned int isStruct;
710 unsigned int fireWatchersDone;
712 unsigned int classData;
713 unsigned int isStatic;
715 struct __ecereNameSpace__ecere__sys__OldList * templateParams;
716 struct __ecereNameSpace__ecere__sys__OldList templatedClasses;
717 struct Context * ctx;
719 struct Expression * propCategory;
720 } __attribute__ ((gcc_struct));
722 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Type;
731 struct Symbol * _class;
734 struct __ecereNameSpace__ecere__sys__OldList members;
736 } __attribute__ ((gcc_struct));
739 struct Type * returnType;
740 struct __ecereNameSpace__ecere__sys__OldList params;
741 struct Symbol * thisClass;
742 unsigned int staticMethod;
743 struct TemplateParameter * thisClassTemplate;
744 } __attribute__ ((gcc_struct));
747 struct __ecereNameSpace__ecere__com__Method * method;
748 struct __ecereNameSpace__ecere__com__Class * methodClass;
749 struct __ecereNameSpace__ecere__com__Class * usedClass;
750 } __attribute__ ((gcc_struct));
753 struct Type * arrayType;
755 struct Expression * arraySizeExp;
756 unsigned int freeExp;
757 struct Symbol * enumClass;
758 } __attribute__ ((gcc_struct));
760 struct TemplateParameter * templateParameter;
761 } __attribute__ ((gcc_struct));
771 unsigned int isSigned : 1;
772 unsigned int constant : 1;
773 unsigned int truth : 1;
774 unsigned int byReference : 1;
775 unsigned int extraParam : 1;
776 unsigned int directClassAccess : 1;
777 unsigned int computing : 1;
778 unsigned int keepCast : 1;
779 unsigned int passAsTemplate : 1;
780 unsigned int dllExport : 1;
781 unsigned int attrStdcall : 1;
782 unsigned int declaredWithStruct : 1;
783 unsigned int typedByReference : 1;
784 } __attribute__ ((gcc_struct));
786 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__Class;
788 struct __ecereNameSpace__ecere__com__Class
790 struct __ecereNameSpace__ecere__com__Class * prev;
791 struct __ecereNameSpace__ecere__com__Class * next;
797 int (* Constructor)(struct __ecereNameSpace__ecere__com__Instance *);
798 void (* Destructor)(struct __ecereNameSpace__ecere__com__Instance *);
801 struct __ecereNameSpace__ecere__com__Class * base;
802 struct __ecereNameSpace__ecere__sys__BinaryTree methods;
803 struct __ecereNameSpace__ecere__sys__BinaryTree members;
804 struct __ecereNameSpace__ecere__sys__BinaryTree prop;
805 struct __ecereNameSpace__ecere__sys__OldList membersAndProperties;
806 struct __ecereNameSpace__ecere__sys__BinaryTree classProperties;
807 struct __ecereNameSpace__ecere__sys__OldList derivatives;
811 struct __ecereNameSpace__ecere__com__Instance * module;
812 struct __ecereNameSpace__ecere__com__NameSpace * nameSpace;
813 char * dataTypeString;
814 struct Type * dataType;
816 int defaultAlignment;
817 void (* Initialize)();
819 struct __ecereNameSpace__ecere__sys__OldList selfWatchers;
820 char * designerClass;
821 unsigned int noExpansion;
822 char * defaultProperty;
823 unsigned int comRedefinition;
826 unsigned int internalDecl;
828 unsigned int computeSize;
830 int destructionWatchOffset;
832 struct __ecereNameSpace__ecere__sys__OldList delayedCPValues;
833 int inheritanceAccess;
836 struct __ecereNameSpace__ecere__sys__OldList conversions;
837 struct __ecereNameSpace__ecere__sys__OldList templateParams;
838 struct __ecereNameSpace__ecere__com__ClassTemplateArgument * templateArgs;
839 struct __ecereNameSpace__ecere__com__Class * templateClass;
840 struct __ecereNameSpace__ecere__sys__OldList templatized;
842 unsigned int isInstanceClass;
843 unsigned int byValueSystemClass;
844 } __attribute__ ((gcc_struct));
846 extern long long __ecereNameSpace__ecere__com__eClass_GetProperty(struct __ecereNameSpace__ecere__com__Class * _class, char * name);
848 extern void __ecereNameSpace__ecere__com__eClass_SetProperty(struct __ecereNameSpace__ecere__com__Class * _class, char * name, long long value);
850 extern void __ecereNameSpace__ecere__com__eInstance_FireSelfWatchers(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property);
852 extern void __ecereNameSpace__ecere__com__eInstance_SetMethod(struct __ecereNameSpace__ecere__com__Instance * instance, char * name, void * function);
854 extern void __ecereNameSpace__ecere__com__eInstance_IncRef(struct __ecereNameSpace__ecere__com__Instance * instance);
856 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);
858 extern void __ecereNameSpace__ecere__com__eInstance_Watch(void * instance, struct __ecereNameSpace__ecere__com__Property * _property, void * object, void (* callback)(void * , void * ));
860 extern void __ecereNameSpace__ecere__com__eInstance_FireWatchers(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property);
862 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__Instance;
864 struct __ecereNameSpace__ecere__com__Instance
867 struct __ecereNameSpace__ecere__com__Class * _class;
869 } __attribute__ ((gcc_struct));
871 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__DataMember;
873 struct __ecereNameSpace__ecere__com__DataMember
875 struct __ecereNameSpace__ecere__com__DataMember * prev;
876 struct __ecereNameSpace__ecere__com__DataMember * next;
878 unsigned int isProperty;
881 struct __ecereNameSpace__ecere__com__Class * _class;
882 char * dataTypeString;
883 struct __ecereNameSpace__ecere__com__Class * dataTypeClass;
884 struct Type * dataType;
888 struct __ecereNameSpace__ecere__sys__OldList members;
889 struct __ecereNameSpace__ecere__sys__BinaryTree membersAlpha;
892 } __attribute__ ((gcc_struct));
894 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__SerialBuffer;
896 struct __ecereNameSpace__ecere__com__SerialBuffer
898 unsigned char * _buffer;
902 } __attribute__ ((gcc_struct));
904 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__ClassTemplateArgument;
906 struct __ecereNameSpace__ecere__com__ClassTemplateArgument
912 char * dataTypeString;
913 struct __ecereNameSpace__ecere__com__Class * dataTypeClass;
914 } __attribute__ ((gcc_struct));
915 struct __ecereNameSpace__ecere__com__DataValue expression;
921 struct __ecereNameSpace__ecere__com__DataMember * member;
922 struct __ecereNameSpace__ecere__com__Property * prop;
923 struct __ecereNameSpace__ecere__com__Method * method;
924 } __attribute__ ((gcc_struct));
925 } __attribute__ ((gcc_struct));
926 } __attribute__ ((gcc_struct));
927 } __attribute__ ((gcc_struct));
931 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
934 typedef union YYSTYPE
939 struct Identifier * id;
940 struct Expression * exp;
941 struct Specifier * specifier;
942 struct __ecereNameSpace__ecere__sys__OldList * list;
943 struct Enumerator * enumerator;
944 struct Declarator * declarator;
945 struct Pointer * pointer;
946 struct Initializer * initializer;
947 struct InitDeclarator * initDeclarator;
948 struct TypeName * typeName;
949 struct Declaration * declaration;
950 struct Statement * stmt;
951 struct FunctionDefinition * function;
952 struct External * external;
953 struct Context * context;
954 struct AsmField * asmField;
955 struct Attrib * attrib;
956 struct ExtDecl * extDecl;
957 struct Attribute * attribute;
958 struct Instantiation * instance;
959 struct MembersInit * membersInit;
960 struct MemberInit * memberInit;
961 struct ClassFunction * classFunction;
962 struct ClassDefinition * _class;
963 struct ClassDef * classDef;
964 struct PropertyDef * prop;
966 struct Symbol * symbol;
967 struct PropertyWatch * propertyWatch;
968 struct TemplateParameter * templateParameter;
969 struct TemplateArgument * templateArgument;
970 struct TemplateDatatype * templateDatatype;
971 struct DBTableEntry * dbtableEntry;
972 struct DBIndexItem * dbindexItem;
973 struct DBTableDef * dbtableDef;
974 } __attribute__ ((gcc_struct)) YYSTYPE;
976 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Enumerator;
980 struct Enumerator * prev;
981 struct Enumerator * next;
983 struct Identifier * id;
984 struct Expression * exp;
985 } __attribute__ ((gcc_struct));
987 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_InitDeclarator;
989 struct InitDeclarator;
991 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_AsmField;
995 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Attribute;
999 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_ClassFunction;
1001 struct ClassFunction
1003 struct ClassFunction * prev;
1004 struct ClassFunction * next;
1005 struct Location loc;
1006 struct __ecereNameSpace__ecere__sys__OldList * specifiers;
1007 struct Declarator * declarator;
1008 struct __ecereNameSpace__ecere__sys__OldList * declarations;
1009 struct Statement * body;
1010 struct __ecereNameSpace__ecere__com__Class * _class;
1011 struct __ecereNameSpace__ecere__sys__OldList attached;
1014 struct Symbol * propSet;
1015 unsigned int isVirtual;
1016 unsigned int isConstructor;
1017 unsigned int isDestructor;
1018 unsigned int dontMangle;
1021 } __attribute__ ((gcc_struct));
1023 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_MembersInit;
1027 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_MemberInit;
1031 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_PropertyDef;
1035 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_PropertyWatch;
1037 struct PropertyWatch
1039 struct PropertyWatch * prev;
1040 struct PropertyWatch * next;
1041 struct Location loc;
1042 struct Statement * compound;
1043 struct __ecereNameSpace__ecere__sys__OldList * properties;
1044 unsigned int deleteWatch;
1045 } __attribute__ ((gcc_struct));
1047 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_ClassDef;
1051 struct ClassDef * prev;
1052 struct ClassDef * next;
1053 struct Location loc;
1057 struct Declaration * decl;
1058 struct ClassFunction * function;
1059 struct __ecereNameSpace__ecere__sys__OldList * defProperties;
1060 struct PropertyDef * propertyDef;
1061 struct PropertyWatch * propertyWatch;
1063 struct Identifier * defaultProperty;
1066 struct Identifier * id;
1067 struct Initializer * initializer;
1068 } __attribute__ ((gcc_struct));
1069 } __attribute__ ((gcc_struct));
1072 } __attribute__ ((gcc_struct));
1074 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_DBTableEntry;
1076 struct DBTableEntry;
1078 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_DBIndexItem;
1082 extern YYSTYPE yylval;
1084 extern struct Location yylloc;
1086 static struct Statement * registerModuleBody;
1088 static struct External * registerModuleExternal;
1090 static struct Statement * unregisterModuleBody;
1092 static struct External * unregisterModuleExternal;
1094 extern int propWatcherID;
1096 unsigned int buildingECERECOM = 0x0;
1098 void SetBuildingEcereCom(unsigned int b)
1100 buildingECERECOM = b;
1103 unsigned int GetBuildingEcereCom()
1105 return buildingECERECOM;
1108 unsigned int buildingECERECOMModule = 0x0;
1110 void SetBuildingEcereComModule(unsigned int b)
1112 buildingECERECOMModule = b;
1115 unsigned int GetBuildingEcereComModule()
1117 return buildingECERECOMModule;
1120 extern struct Identifier * GetDeclId(struct Declarator * decl);
1122 extern unsigned int inCompiler;
1124 extern struct __ecereNameSpace__ecere__sys__OldList * MkList(void);
1126 extern struct Specifier * MkSpecifier(int specifier);
1128 extern void ReplaceThisClassSpecifiers(struct __ecereNameSpace__ecere__sys__OldList * specs, struct __ecereNameSpace__ecere__com__Class * _class);
1130 extern struct FunctionDefinition * _MkFunction(struct __ecereNameSpace__ecere__sys__OldList * specifiers, struct Declarator * declarator, struct __ecereNameSpace__ecere__sys__OldList * declarationList, unsigned int errorOnOmit);
1132 extern void ProcessFunctionBody(struct FunctionDefinition * func, struct Statement * body);
1134 extern struct External * MkExternalFunction(struct FunctionDefinition * function);
1136 extern void ProcessMethodType(struct __ecereNameSpace__ecere__com__Method * method);
1138 extern struct __ecereNameSpace__ecere__com__ClassTemplateArgument * FindTemplateArg(struct __ecereNameSpace__ecere__com__Class * _class, struct TemplateParameter * param);
1140 extern struct Type * ProcessTypeString(char * string, unsigned int staticMethod);
1142 extern struct Symbol * FindClass(char * name);
1144 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);
1146 extern void Compiler_Error(char * format, ...);
1148 extern char * __ecereNameSpace__ecere__GetTranslatedString(char * name, char * string, char * stringAndContext);
1150 extern struct Declarator * GetFuncDecl(struct Declarator * decl);
1152 extern void FreeType(struct Type * type);
1154 extern void FreeExternal(struct External * external);
1156 extern struct Context * globalContext;
1158 extern struct __ecereNameSpace__ecere__sys__OldList * excludedSymbols;
1160 extern struct Declarator * CopyDeclarator(struct Declarator * declarator);
1162 extern struct __ecereNameSpace__ecere__sys__OldList * CopyList(struct __ecereNameSpace__ecere__sys__OldList * source, void * (* CopyFunction)(void * ));
1164 extern struct Specifier * CopySpecifier(struct Specifier * spec);
1166 unsigned int __ecereMethod___ecereNameSpace__ecere__sys__OldList_Insert(struct __ecereNameSpace__ecere__sys__OldList * this, void * prevItem, void * item);
1168 void __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Remove(struct __ecereNameSpace__ecere__sys__BinaryTree * this, struct __ecereNameSpace__ecere__sys__BTNode * node);
1170 void __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add(struct __ecereNameSpace__ecere__sys__OldList * this, void * item);
1172 struct External * ProcessClassFunction(struct __ecereNameSpace__ecere__com__Class * owningClass, struct ClassFunction * func, struct __ecereNameSpace__ecere__sys__OldList * defs, struct External * after, unsigned int makeStatic)
1174 struct Identifier * id = GetDeclId(func->declarator);
1175 struct Type * type = (((void *)0));
1176 struct Symbol * symbol;
1177 struct External * external = (((void *)0));
1179 if(defs && func->declarator)
1181 struct FunctionDefinition * function = (((void *)0));
1182 struct Symbol * propSymbol;
1183 int symid = func->declarator->symbol->id;
1184 int symidCode = func->declarator->symbol->idCode;
1188 if(!func->specifiers)
1189 func->specifiers = MkList();
1191 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Insert((&*func->specifiers), (((void *)0)), MkSpecifier(STATIC));
1193 propSymbol = func->declarator->symbol;
1194 ReplaceThisClassSpecifiers(func->specifiers, owningClass);
1195 if(propSymbol->externalGet == (struct External *)func)
1196 func->declarator->symbol = (((void *)0));
1197 else if(propSymbol->externalSet == (struct External *)func)
1199 func->declarator->symbol = (((void *)0));
1202 else if(propSymbol->externalIsSet == (struct External *)func)
1204 func->declarator->symbol = (((void *)0));
1208 function = _MkFunction(func->specifiers, func->declarator, (((void *)0)), 0x0);
1209 function->propSet = func->propSet;
1210 function->type = func->type;
1212 func->type->refCount++;
1213 ProcessFunctionBody(function, func->body);
1214 external = MkExternalFunction(function);
1215 external->symbol = func->declarator->symbol;
1216 external->function->_class = func->_class;
1218 symbol = func->declarator->symbol;
1220 symbol->idCode = symidCode;
1221 if(!func->dontMangle)
1223 struct __ecereNameSpace__ecere__com__Method * method = func->declarator->symbol->method;
1225 func->declarator->symbol->methodExternal = external;
1226 if(method && method->symbol)
1227 ((struct Symbol *)method->symbol)->methodCodeExternal = external;
1228 if(method && method->type == 1)
1230 struct Type * methodDataType;
1232 ProcessMethodType(method);
1233 methodDataType = method->dataType;
1234 type = symbol->type;
1235 if(!type->staticMethod && !type->thisClass && !type->thisClassTemplate)
1237 if(method->dataType->thisClassTemplate)
1239 if(owningClass->templateArgs)
1241 struct __ecereNameSpace__ecere__com__ClassTemplateArgument * arg = FindTemplateArg(owningClass, method->dataType->thisClassTemplate);
1243 type->byReference = method->dataType->byReference;
1244 methodDataType = ProcessTypeString(method->dataTypeString, 0x0);
1245 type->thisClass = methodDataType->thisClass = arg ? FindClass((*arg).dataTypeString) : (((void *)0));
1248 else if(method->dataType->staticMethod)
1249 type->staticMethod = 0x1;
1250 else if(method->dataType->thisClass)
1252 type->thisClass = method->dataType->thisClass;
1253 type->byReference = method->dataType->byReference;
1257 if(!owningClass->symbol)
1258 owningClass->symbol = FindClass(owningClass->fullName);
1259 type->thisClass = owningClass->symbol;
1260 type->extraParam = 0x1;
1264 if(!MatchTypes(type, methodDataType, (((void *)0)), owningClass, method->_class, 0x1, 0x1, 0x1, 0x0))
1266 Compiler_Error(__ecereNameSpace__ecere__GetTranslatedString("ec", "Incompatible virtual function %s\n", (((void *)0))), method->name);
1270 struct Type * typeParam;
1271 struct Declarator * funcDecl = GetFuncDecl(func->declarator);
1273 if(funcDecl->function.parameters && (*funcDecl->function.parameters).first)
1275 struct TypeName * param = (*funcDecl->function.parameters).first;
1277 for(typeParam = methodDataType->params.first; typeParam && param; typeParam = typeParam->next)
1279 if(typeParam->classObjectType)
1281 param->classObjectType = typeParam->classObjectType;
1282 if(param->declarator && param->declarator->symbol)
1283 param->declarator->symbol->type->classObjectType = typeParam->classObjectType;
1285 param = param ? param->next : (((void *)0));
1289 if(methodDataType != method->dataType)
1290 FreeType(methodDataType);
1294 type = symbol->type;
1295 if(!type->staticMethod && !type->thisClass)
1297 if(owningClass && !owningClass->symbol)
1298 owningClass->symbol = FindClass(owningClass->fullName);
1299 type->thisClass = owningClass ? FindClass(owningClass->fullName) : (((void *)0));
1305 if(symbol->type && !symbol->type->staticMethod && !symbol->type->thisClass)
1307 if(!owningClass->symbol)
1308 owningClass->symbol = FindClass(owningClass->fullName);
1309 symbol->type->thisClass = owningClass->symbol;
1311 if(propSymbol->externalSet == (struct External *)func && propSymbol->_property && propSymbol->_property->conversion)
1313 if(symbol->type->thisClass && symbol->type->classObjectType != 1)
1315 if(owningClass->type != 1)
1316 symbol->type->thisClass = (((void *)0));
1319 if(propSymbol->externalGet == (struct External *)func)
1321 propSymbol->externalGet = external;
1323 else if(propSymbol->externalSet == (struct External *)func)
1325 propSymbol->externalSet = external;
1327 else if(propSymbol->externalIsSet == (struct External *)func)
1329 propSymbol->externalIsSet = external;
1339 func->declarator = (((void *)0));
1340 func->specifiers = (((void *)0));
1341 func->body = (((void *)0));
1342 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Insert(defs, after, external);
1346 struct __ecereNameSpace__ecere__com__Method * method = func->declarator->symbol->method;
1348 if(method && method->symbol)
1349 ((struct Symbol *)method->symbol)->methodCodeExternal = (((void *)0));
1350 if(func->declarator->symbol && func->declarator->symbol->methodExternal == external)
1351 func->declarator->symbol->methodExternal = (((void *)0));
1352 func->declarator = (((void *)0));
1353 func->specifiers = (((void *)0));
1354 FreeExternal(external);
1359 __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Remove(&globalContext->symbols, (struct __ecereNameSpace__ecere__sys__BTNode *)symbol);
1360 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*excludedSymbols), symbol);
1361 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Insert(defs, after, external);
1362 external->function->declarator = CopyDeclarator(external->function->declarator);
1363 external->function->specifiers = CopyList(external->function->specifiers, CopySpecifier);
1364 external->function->body = (((void *)0));
1370 extern struct Statement * MkCompoundStmt(struct __ecereNameSpace__ecere__sys__OldList * declarations, struct __ecereNameSpace__ecere__sys__OldList * statements);
1372 extern void ListAdd(struct __ecereNameSpace__ecere__sys__OldList * list, void * item);
1374 extern struct Declaration * MkDeclaration(struct __ecereNameSpace__ecere__sys__OldList * specifiers, struct __ecereNameSpace__ecere__sys__OldList * initDeclarators);
1376 extern struct __ecereNameSpace__ecere__sys__OldList * MkListOne(void * item);
1378 extern struct Specifier * MkSpecifierName(char * name);
1380 extern struct InitDeclarator * MkInitDeclarator(struct Declarator * declarator, struct Initializer * initializer);
1382 extern struct Declarator * MkDeclaratorIdentifier(struct Identifier * id);
1384 extern struct Identifier * MkIdentifier(char * string);
1386 extern struct TypeName * MkTypeName(struct __ecereNameSpace__ecere__sys__OldList * qualifiers, struct Declarator * declarator);
1388 extern char * __ecereNameSpace__ecere__sys__GetLastDirectory(char * string, char * output);
1390 extern char * outputFile;
1392 extern unsigned int __ecereNameSpace__ecere__sys__StripExtension(char * string);
1394 extern void FixModuleName(char * moduleName);
1396 extern int sprintf(char * , char * , ...);
1398 extern struct Declarator * MkDeclaratorFunction(struct Declarator * declarator, struct __ecereNameSpace__ecere__sys__OldList * parameters);
1400 extern struct __ecereNameSpace__ecere__sys__OldList * ast;
1402 extern void * __ecereNameSpace__ecere__com__eInstance_New(struct __ecereNameSpace__ecere__com__Class * _class);
1404 void CreateRegisterModuleBody()
1406 if(!registerModuleBody && inCompiler)
1408 char registerName[1024], moduleName[274];
1409 struct __ecereNameSpace__ecere__sys__OldList * specifiers;
1410 struct Declarator * declarator;
1411 struct TypeName * moduleParam;
1413 registerModuleBody = MkCompoundStmt(MkList(), MkList());
1414 registerModuleBody->compound.context = __extension__ ({
1415 struct Context * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Context);
1417 __ecereInstance1->parent = globalContext, __ecereInstance1;
1419 ListAdd(registerModuleBody->compound.declarations, MkDeclaration(MkListOne(MkSpecifierName("ecere::com::Class")), MkListOne(MkInitDeclarator(MkDeclaratorIdentifier(MkIdentifier("class")), (((void *)0))))));
1420 specifiers = MkList();
1421 ListAdd(specifiers, MkSpecifier(VOID));
1422 moduleParam = MkTypeName(MkListOne(MkSpecifierName("Module")), MkDeclaratorIdentifier(MkIdentifier("module")));
1423 __ecereNameSpace__ecere__sys__GetLastDirectory(outputFile, moduleName);
1424 __ecereNameSpace__ecere__sys__StripExtension(moduleName);
1425 FixModuleName(moduleName);
1426 sprintf(registerName, "__ecereRegisterModule_%s", moduleName);
1427 declarator = MkDeclaratorFunction(MkDeclaratorIdentifier(MkIdentifier(registerName)), MkListOne(moduleParam));
1429 struct FunctionDefinition * function = _MkFunction(specifiers, declarator, (((void *)0)), 0x0);
1431 ProcessFunctionBody(function, registerModuleBody);
1432 function->declMode = 0;
1435 ListAdd(ast, (registerModuleExternal = MkExternalFunction(function)));
1438 if(!unregisterModuleBody && inCompiler)
1440 char registerName[1024], moduleName[274];
1441 struct __ecereNameSpace__ecere__sys__OldList * specifiers;
1442 struct Declarator * declarator;
1443 struct TypeName * moduleParam;
1445 unregisterModuleBody = MkCompoundStmt(MkList(), MkList());
1446 unregisterModuleBody->compound.context = __extension__ ({
1447 struct Context * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Context);
1449 __ecereInstance1->parent = globalContext, __ecereInstance1;
1451 specifiers = MkList();
1452 ListAdd(specifiers, MkSpecifier(VOID));
1453 moduleParam = MkTypeName(MkListOne(MkSpecifierName("Module")), MkDeclaratorIdentifier(MkIdentifier("module")));
1454 __ecereNameSpace__ecere__sys__GetLastDirectory(outputFile, moduleName);
1455 __ecereNameSpace__ecere__sys__StripExtension(moduleName);
1456 FixModuleName(moduleName);
1457 sprintf(registerName, "__ecereUnregisterModule_%s", moduleName);
1458 declarator = MkDeclaratorFunction(MkDeclaratorIdentifier(MkIdentifier(registerName)), MkListOne(moduleParam));
1460 struct FunctionDefinition * function = _MkFunction(specifiers, declarator, (((void *)0)), 0x0);
1462 ProcessFunctionBody(function, unregisterModuleBody);
1463 function->declMode = 0;
1466 ListAdd(ast, (unregisterModuleExternal = MkExternalFunction(function)));
1471 extern struct Expression * MkExpIdentifier(struct Identifier * id);
1473 extern struct Expression * MkExpConstant(char * string);
1475 extern char * QMkString(char * source);
1477 extern struct Expression * MkExpString(char * string);
1479 extern char * strcpy(char * , const char * );
1481 extern void FullClassNameCat(char * output, char * className, unsigned int includeTemplateParams);
1483 extern char * strcat(char * , const char * );
1485 extern void MangleClassName(char * className);
1487 extern struct Statement * MkExpressionStmt(struct __ecereNameSpace__ecere__sys__OldList * expressions);
1489 extern struct Expression * MkExpOp(struct Expression * exp1, int op, struct Expression * exp2);
1491 extern struct Expression * MkExpCall(struct Expression * expression, struct __ecereNameSpace__ecere__sys__OldList * arguments);
1493 extern struct Expression * MkExpMember(struct Expression * expression, struct Identifier * member);
1495 extern struct Expression * MkExpCast(struct TypeName * typeName, struct Expression * expression);
1497 extern struct Declarator * MkDeclaratorPointer(struct Pointer * pointer, struct Declarator * declarator);
1499 extern struct Pointer * MkPointer(struct __ecereNameSpace__ecere__sys__OldList * qualifiers, struct Pointer * pointer);
1501 extern struct Expression * CopyExpression(struct Expression * exp);
1503 extern struct Statement * MkIfStmt(struct __ecereNameSpace__ecere__sys__OldList * exp, struct Statement * statement, struct Statement * elseStmt);
1505 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__BitMember;
1507 struct __ecereNameSpace__ecere__com__BitMember
1509 struct __ecereNameSpace__ecere__com__BitMember * prev;
1510 struct __ecereNameSpace__ecere__com__BitMember * next;
1512 unsigned int isProperty;
1515 struct __ecereNameSpace__ecere__com__Class * _class;
1516 char * dataTypeString;
1517 struct __ecereNameSpace__ecere__com__Class * dataTypeClass;
1518 struct Type * dataType;
1523 } __attribute__ ((gcc_struct));
1525 extern int ComputeTypeSize(struct Type * type);
1527 extern struct Context * curContext;
1529 extern struct Context * PushContext(void);
1531 extern struct Initializer * MkInitializerAssignment(struct Expression * exp);
1533 extern void PopContext(struct Context * ctx);
1535 extern struct Expression * MkExpCondition(struct Expression * cond, struct __ecereNameSpace__ecere__sys__OldList * expressions, struct Expression * elseExp);
1537 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__ClassProperty;
1539 struct __ecereNameSpace__ecere__com__ClassProperty
1542 struct __ecereNameSpace__ecere__com__ClassProperty * parent;
1543 struct __ecereNameSpace__ecere__com__ClassProperty * left;
1544 struct __ecereNameSpace__ecere__com__ClassProperty * right;
1546 void (* Set)(struct __ecereNameSpace__ecere__com__Class *, long long);
1547 long long (* Get)(struct __ecereNameSpace__ecere__com__Class *);
1548 char * dataTypeString;
1549 struct Type * dataType;
1550 unsigned int constant;
1551 } __attribute__ ((gcc_struct));
1553 struct __ecereNameSpace__ecere__sys__BTNode * __ecereProp___ecereNameSpace__ecere__sys__BinaryTree_Get_first(struct __ecereNameSpace__ecere__sys__BinaryTree * this);
1555 extern struct __ecereNameSpace__ecere__com__Property ** __ecereProp___ecereNameSpace__ecere__sys__BinaryTree_first;
1557 struct __ecereNameSpace__ecere__sys__BTNode * __ecereProp___ecereNameSpace__ecere__sys__BTNode_Get_next(struct __ecereNameSpace__ecere__sys__BTNode * this);
1559 extern struct __ecereNameSpace__ecere__com__Property ** __ecereProp___ecereNameSpace__ecere__sys__BTNode_next;
1561 void RegisterMembersAndProperties(struct __ecereNameSpace__ecere__com__Class * regClass, unsigned int isMember, char * className, struct Statement * statement)
1563 struct __ecereNameSpace__ecere__com__DataMember * dataMember = isMember ? (struct __ecereNameSpace__ecere__com__DataMember *)regClass : (((void *)0));
1564 struct __ecereNameSpace__ecere__com__DataMember * member;
1565 struct __ecereNameSpace__ecere__com__Property * prop;
1566 struct Expression * exp;
1567 struct Statement * stmt;
1568 char dataMemberSize[16];
1569 unsigned int lastOffset = 0;
1571 unsigned int privateMembers = 0x0;
1573 sprintf(dataMemberSize, "%d", (int)sizeof(struct __ecereNameSpace__ecere__com__DataMember *));
1576 for(prop = regClass->conversions.first; prop; prop = prop->next)
1578 struct __ecereNameSpace__ecere__sys__OldList * args = MkList();
1581 ListAdd(args, MkExpIdentifier(MkIdentifier(className)));
1582 ListAdd(args, MkExpConstant("0"));
1584 char * string = QMkString(prop->dataTypeString);
1586 ListAdd(args, MkExpString(string));
1587 (__ecereNameSpace__ecere__com__eSystem_Delete(string), string = 0);
1591 strcpy(name, "__ecereProp_");
1592 FullClassNameCat(name, regClass->fullName, 0x0);
1593 strcat(name, "_Set_");
1594 FullClassNameCat(name, prop->name, 0x1);
1595 MangleClassName(name);
1596 ListAdd(args, MkExpIdentifier(MkIdentifier(name)));
1599 ListAdd(args, MkExpConstant("0"));
1602 strcpy(name, "__ecereProp_");
1603 FullClassNameCat(name, regClass->fullName, 0x0);
1604 strcat(name, "_Get_");
1605 FullClassNameCat(name, prop->name, 0x1);
1606 MangleClassName(name);
1607 ListAdd(args, MkExpIdentifier(MkIdentifier(name)));
1610 ListAdd(args, MkExpConstant("0"));
1611 switch(prop->memberAccess)
1614 ListAdd(args, MkExpIdentifier(MkIdentifier("staticAccess")));
1617 ListAdd(args, MkExpIdentifier(MkIdentifier("privateAccess")));
1621 ListAdd(args, MkExpIdentifier(MkIdentifier("publicAccess")));
1624 strcpy(name, "__ecereProp_");
1625 FullClassNameCat(name, regClass->fullName, 0x0);
1627 FullClassNameCat(name, prop->name, 0x1);
1628 MangleClassName(name);
1629 stmt = MkExpressionStmt(MkListOne(MkExpOp(MkExpIdentifier(MkIdentifier(name)), '=', MkExpCall(MkExpIdentifier(MkIdentifier("eClass_AddProperty")), args))));
1630 ListAdd(registerModuleBody->compound.statements, stmt);
1633 for(member = isMember ? dataMember->members.first : regClass->membersAndProperties.first; member; member = member->next)
1635 if(member->isProperty)
1637 prop = (struct __ecereNameSpace__ecere__com__Property *)member;
1639 struct __ecereNameSpace__ecere__sys__OldList * args = MkList();
1640 char name[1024], nameM[1024];
1641 char * string = QMkString(prop->name);
1643 ListAdd(args, MkExpIdentifier(MkIdentifier(className)));
1644 ListAdd(args, MkExpString(string));
1645 (__ecereNameSpace__ecere__com__eSystem_Delete(string), string = 0);
1647 char * string = QMkString(prop->dataTypeString);
1649 ListAdd(args, MkExpString(string));
1650 (__ecereNameSpace__ecere__com__eSystem_Delete(string), string = 0);
1654 strcpy(name, "__ecereProp_");
1655 FullClassNameCat(name, regClass->fullName, 0x0);
1656 strcat(name, "_Set_");
1657 FullClassNameCat(name, prop->name, 0x1);
1658 MangleClassName(name);
1659 ListAdd(args, MkExpIdentifier(MkIdentifier(name)));
1662 ListAdd(args, MkExpConstant("0"));
1665 strcpy(name, "__ecereProp_");
1666 FullClassNameCat(name, regClass->fullName, 0x0);
1667 strcat(name, "_Get_");
1668 FullClassNameCat(name, prop->name, 0x1);
1669 MangleClassName(name);
1670 ListAdd(args, MkExpIdentifier(MkIdentifier(name)));
1673 ListAdd(args, MkExpConstant("0"));
1674 switch(prop->memberAccess)
1677 ListAdd(args, MkExpIdentifier(MkIdentifier("staticAccess")));
1680 ListAdd(args, MkExpIdentifier(MkIdentifier("privateAccess")));
1684 ListAdd(args, MkExpIdentifier(MkIdentifier("publicAccess")));
1687 strcpy(name, "__ecereProp_");
1688 FullClassNameCat(name, regClass->fullName, 0x0);
1690 FullClassNameCat(name, prop->name, 0x1);
1691 MangleClassName(name);
1692 strcpy(nameM, "__ecerePropM_");
1693 FullClassNameCat(nameM, regClass->fullName, 0x0);
1695 FullClassNameCat(nameM, prop->name, 0x1);
1696 MangleClassName(nameM);
1697 if(prop->dataTypeString)
1699 stmt = MkExpressionStmt(MkListOne(MkExpOp(MkExpIdentifier(MkIdentifier(nameM)), '=', MkExpCall(MkExpIdentifier(MkIdentifier("eClass_AddProperty")), args))));
1703 stmt = MkExpressionStmt(MkListOne(MkExpCall(MkExpIdentifier(MkIdentifier("eClass_AddProperty")), args)));
1705 ListAdd(registerModuleBody->compound.statements, stmt);
1710 strcpy(name, "__ecereProp_");
1711 FullClassNameCat(name, regClass->fullName, 0x1);
1712 strcat(name, "_IsSet_");
1713 FullClassNameCat(name, prop->name, 0x0);
1714 MangleClassName(name);
1715 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))))));
1716 ListAdd(registerModuleBody->compound.statements, stmt);
1718 if(prop->symbol && ((struct Symbol *)prop->symbol)->propCategory)
1720 stmt = MkExpressionStmt(MkListOne(MkExpOp(MkExpMember(MkExpIdentifier(MkIdentifier(nameM)), MkIdentifier("category")), '=', CopyExpression(((struct Symbol *)prop->symbol)->propCategory))));
1721 ListAdd(registerModuleBody->compound.statements, stmt);
1723 if(prop->dataTypeString)
1725 struct __ecereNameSpace__ecere__sys__OldList * list = MkList();
1727 ListAdd(list, MkExpOp(MkExpIdentifier(MkIdentifier(name)), '=', MkExpIdentifier(MkIdentifier(nameM))));
1728 ListAdd(list, MkExpOp(MkExpIdentifier(MkIdentifier(nameM)), '=', MkExpCast(MkTypeName(MkListOne(MkSpecifier(VOID)), MkDeclaratorPointer(MkPointer((((void *)0)), (((void *)0))), (((void *)0)))), MkExpConstant("0"))));
1729 stmt = MkIfStmt(MkListOne(MkExpOp(MkExpMember(MkExpIdentifier(MkIdentifier("module")), MkIdentifier("application")), EQ_OP, MkExpMember(MkExpIdentifier(MkIdentifier("__thisModule")), MkIdentifier("application")))), MkExpressionStmt(list), (((void *)0)));
1730 ListAdd(registerModuleBody->compound.statements, stmt);
1731 stmt = MkExpressionStmt(MkListOne(MkExpOp(MkExpIdentifier(MkIdentifier(nameM)), '=', MkExpCast(MkTypeName(MkListOne(MkSpecifier(VOID)), MkDeclaratorPointer(MkPointer((((void *)0)), (((void *)0))), (((void *)0)))), MkExpConstant("0")))));
1732 ListAdd(unregisterModuleBody->compound.statements, stmt);
1736 else if(member->type == 0 && !isMember && regClass->type == 2)
1738 struct __ecereNameSpace__ecere__com__BitMember * bitMember = (struct __ecereNameSpace__ecere__com__BitMember *)member;
1739 struct __ecereNameSpace__ecere__sys__OldList * args = MkList();
1741 ListAdd(args, MkExpIdentifier(MkIdentifier(className)));
1743 char * string = QMkString(bitMember->name);
1745 ListAdd(args, MkExpString(string));
1746 (__ecereNameSpace__ecere__com__eSystem_Delete(string), string = 0);
1749 char * string = QMkString(bitMember->dataTypeString);
1751 ListAdd(args, MkExpString(string));
1752 (__ecereNameSpace__ecere__com__eSystem_Delete(string), string = 0);
1757 sprintf(string, "%d", bitMember->size);
1758 ListAdd(args, (exp = MkExpConstant(string)));
1763 sprintf(string, "%d", bitMember->pos);
1764 ListAdd(args, (exp = MkExpConstant(string)));
1766 switch(member->memberAccess)
1769 ListAdd(args, MkExpIdentifier(MkIdentifier("staticAccess")));
1772 ListAdd(args, MkExpIdentifier(MkIdentifier("privateAccess")));
1776 ListAdd(args, MkExpIdentifier(MkIdentifier("publicAccess")));
1779 stmt = MkExpressionStmt(MkListOne(MkExpCall(MkExpIdentifier(MkIdentifier("eClass_AddBitMember")), args)));
1780 ListAdd(statement->compound.statements, stmt);
1782 else if(member->memberAccess == 1 || (member->type == 0 && !member->dataTypeString))
1784 struct __ecereNameSpace__ecere__sys__OldList * args;
1788 unsigned int offset = member->offset - lastOffset;
1791 ListAdd(args, MkExpIdentifier(MkIdentifier(className)));
1795 sprintf(string, "\"__ecerePrivateData%d\"", privateID++);
1796 ListAdd(args, MkExpString(string));
1801 sprintf(string, "\"byte[%d]\"", offset);
1802 ListAdd(args, MkExpString(string));
1807 sprintf(string, "%d", offset);
1808 ListAdd(args, (exp = MkExpConstant(string)));
1810 ListAdd(args, (exp = MkExpConstant("1")));
1811 ListAdd(args, MkExpIdentifier(MkIdentifier("privateAccess")));
1812 stmt = MkExpressionStmt(MkListOne(MkExpCall(MkExpIdentifier(MkIdentifier(isMember ? "eMember_AddDataMember" : "eClass_AddDataMember")), args)));
1813 ListAdd(statement->compound.statements, stmt);
1814 privateMembers = 0x0;
1816 if(member->type == 0)
1818 if(!member->dataType)
1819 member->dataType = ProcessTypeString(member->dataTypeString, 0x0);
1820 ComputeTypeSize(member->dataType);
1822 ListAdd(args, MkExpIdentifier(MkIdentifier(className)));
1824 char * string = QMkString(member->name);
1826 ListAdd(args, MkExpString(string));
1827 (__ecereNameSpace__ecere__com__eSystem_Delete(string), string = 0);
1830 char * string = QMkString(member->dataTypeString);
1832 ListAdd(args, MkExpString(string));
1833 (__ecereNameSpace__ecere__com__eSystem_Delete(string), string = 0);
1838 sprintf(string, "%d", member->dataType->size);
1839 ListAdd(args, (exp = MkExpConstant(string)));
1844 sprintf(string, "%d", member->dataType->alignment);
1845 ListAdd(args, (exp = MkExpConstant(string)));
1847 switch(member->memberAccess)
1850 ListAdd(args, MkExpIdentifier(MkIdentifier("staticAccess")));
1853 ListAdd(args, MkExpIdentifier(MkIdentifier("privateAccess")));
1857 ListAdd(args, MkExpIdentifier(MkIdentifier("publicAccess")));
1860 stmt = MkExpressionStmt(MkListOne(MkExpCall(MkExpIdentifier(MkIdentifier(isMember ? "eMember_AddDataMember" : "eClass_AddDataMember")), args)));
1861 ListAdd(statement->compound.statements, stmt);
1862 lastOffset = member->offset + member->dataType->size;
1866 static int memberCount = 0;
1867 struct Context * context;
1868 struct Statement * compound;
1869 char memberName[256];
1871 sprintf(memberName, "dataMember%d", memberCount);
1873 curContext = statement->compound.context;
1874 context = PushContext();
1875 args = MkListOne(MkExpIdentifier(MkIdentifier((member->type == 1) ? "unionMember" : "structMember")));
1876 switch(member->memberAccess)
1879 ListAdd(args, MkExpIdentifier(MkIdentifier("staticAccess")));
1882 ListAdd(args, MkExpIdentifier(MkIdentifier("privateAccess")));
1886 ListAdd(args, MkExpIdentifier(MkIdentifier("publicAccess")));
1889 compound = MkCompoundStmt(MkListOne(MkDeclaration(MkListOne(MkSpecifierName("DataMember")), MkListOne(MkInitDeclarator(MkDeclaratorIdentifier(MkIdentifier(memberName)), MkInitializerAssignment(MkExpCall(MkExpIdentifier(MkIdentifier("eMember_New")), args)))))), MkList());
1890 compound->compound.context = context;
1892 ListAdd(args, MkExpIdentifier(MkIdentifier(className)));
1893 ListAdd(args, MkExpIdentifier(MkIdentifier(memberName)));
1894 RegisterMembersAndProperties((struct __ecereNameSpace__ecere__com__Class *)member, 0x1, memberName, compound);
1896 stmt = MkExpressionStmt(MkListOne(MkExpCall(MkExpIdentifier(MkIdentifier("eMember_AddMember")), args)));
1898 stmt = MkExpressionStmt(MkListOne(MkExpCall(MkExpIdentifier(MkIdentifier("eClass_AddMember")), args)));
1899 ListAdd(compound->compound.statements, stmt);
1900 PopContext(context);
1901 ListAdd(statement->compound.statements, compound);
1903 lastOffset = member->offset + member->memberOffset;
1907 privateMembers = 0x1;
1911 struct __ecereNameSpace__ecere__com__ClassProperty * classProperty;
1913 for(prop = regClass->membersAndProperties.first; prop; prop = prop->next)
1915 if(prop->isProperty && prop->isWatchable)
1917 struct __ecereNameSpace__ecere__sys__OldList * args;
1918 char name[1024], nameM[1024];
1920 strcpy(name, "__ecereProp_");
1921 FullClassNameCat(name, regClass->fullName, 0x1);
1923 FullClassNameCat(name, prop->name, 0x0);
1924 MangleClassName(name);
1925 strcpy(nameM, "__ecerePropM_");
1926 FullClassNameCat(nameM, regClass->fullName, 0x1);
1928 FullClassNameCat(nameM, prop->name, 0x0);
1929 MangleClassName(nameM);
1930 args = MkListOne(MkExpCondition(MkExpIdentifier(MkIdentifier(nameM)), MkListOne(MkExpIdentifier(MkIdentifier(nameM))), MkExpIdentifier(MkIdentifier(name))));
1931 stmt = MkExpressionStmt(MkListOne(MkExpCall(MkExpIdentifier(MkIdentifier("eProperty_Watchable")), args)));
1932 ListAdd(registerModuleBody->compound.statements, stmt);
1935 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)))
1937 struct __ecereNameSpace__ecere__sys__OldList * args = MkList();
1939 char * string = QMkString(classProperty->name);
1941 ListAdd(args, MkExpIdentifier(MkIdentifier(className)));
1942 ListAdd(args, MkExpString(string));
1943 (__ecereNameSpace__ecere__com__eSystem_Delete(string), string = 0);
1945 char * string = QMkString(classProperty->dataTypeString);
1947 ListAdd(args, MkExpString(string));
1948 (__ecereNameSpace__ecere__com__eSystem_Delete(string), string = 0);
1950 if(classProperty->Set)
1952 strcpy(name, "__ecereClassProp_");
1953 FullClassNameCat(name, regClass->fullName, 0x1);
1954 strcat(name, "_Set_");
1955 strcat(name, classProperty->name);
1956 MangleClassName(name);
1957 ListAdd(args, MkExpIdentifier(MkIdentifier(name)));
1960 ListAdd(args, MkExpConstant("0"));
1961 if(classProperty->Get)
1963 strcpy(name, "__ecereClassProp_");
1964 FullClassNameCat(name, regClass->fullName, 0x1);
1965 strcat(name, "_Get_");
1966 strcat(name, classProperty->name);
1967 MangleClassName(name);
1968 ListAdd(args, MkExpIdentifier(MkIdentifier(name)));
1971 ListAdd(args, MkExpConstant("0"));
1972 stmt = MkExpressionStmt(MkListOne(MkExpCall(MkExpIdentifier(MkIdentifier("eClass_AddClassProperty")), args)));
1973 ListAdd(registerModuleBody->compound.statements, stmt);
1978 extern struct External * curExternal;
1980 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__NameSpace;
1982 struct __ecereNameSpace__ecere__com__NameSpace
1985 struct __ecereNameSpace__ecere__com__NameSpace * btParent;
1986 struct __ecereNameSpace__ecere__com__NameSpace * left;
1987 struct __ecereNameSpace__ecere__com__NameSpace * right;
1989 struct __ecereNameSpace__ecere__com__NameSpace * parent;
1990 struct __ecereNameSpace__ecere__sys__BinaryTree nameSpaces;
1991 struct __ecereNameSpace__ecere__sys__BinaryTree classes;
1992 struct __ecereNameSpace__ecere__sys__BinaryTree defines;
1993 struct __ecereNameSpace__ecere__sys__BinaryTree functions;
1994 } __attribute__ ((gcc_struct));
1996 void GetNameSpaceString(struct __ecereNameSpace__ecere__com__NameSpace * ns, char * string)
1999 GetNameSpaceString(ns->parent, string);
2002 strcat(string, ns->name);
2003 strcat(string, "::");
2007 extern unsigned int parsingType;
2009 extern void ProcessExpressionType(struct Expression * exp);
2011 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__sys__NamedLink;
2013 struct __ecereNameSpace__ecere__sys__NamedLink
2015 struct __ecereNameSpace__ecere__sys__NamedLink * prev;
2016 struct __ecereNameSpace__ecere__sys__NamedLink * next;
2019 } __attribute__ ((gcc_struct));
2021 extern int strcmp(const char * , const char * );
2023 extern void FreeExpContents(struct Expression * exp);
2025 extern char * PrintUInt(uint64 result);
2027 extern void ComputeExpression(struct Expression * exp);
2029 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_OpTable;
2033 unsigned int (* Add)(struct Expression *, struct Operand *, struct Operand *);
2034 unsigned int (* Sub)(struct Expression *, struct Operand *, struct Operand *);
2035 unsigned int (* Mul)(struct Expression *, struct Operand *, struct Operand *);
2036 unsigned int (* Div)(struct Expression *, struct Operand *, struct Operand *);
2037 unsigned int (* Mod)(struct Expression *, struct Operand *, struct Operand *);
2038 unsigned int (* Neg)(struct Expression *, struct Operand *);
2039 unsigned int (* Inc)(struct Expression *, struct Operand *);
2040 unsigned int (* Dec)(struct Expression *, struct Operand *);
2041 unsigned int (* Asign)(struct Expression *, struct Operand *, struct Operand *);
2042 unsigned int (* AddAsign)(struct Expression *, struct Operand *, struct Operand *);
2043 unsigned int (* SubAsign)(struct Expression *, struct Operand *, struct Operand *);
2044 unsigned int (* MulAsign)(struct Expression *, struct Operand *, struct Operand *);
2045 unsigned int (* DivAsign)(struct Expression *, struct Operand *, struct Operand *);
2046 unsigned int (* ModAsign)(struct Expression *, struct Operand *, struct Operand *);
2047 unsigned int (* BitAnd)(struct Expression *, struct Operand *, struct Operand *);
2048 unsigned int (* BitOr)(struct Expression *, struct Operand *, struct Operand *);
2049 unsigned int (* BitXor)(struct Expression *, struct Operand *, struct Operand *);
2050 unsigned int (* LShift)(struct Expression *, struct Operand *, struct Operand *);
2051 unsigned int (* RShift)(struct Expression *, struct Operand *, struct Operand *);
2052 unsigned int (* BitNot)(struct Expression *, struct Operand *);
2053 unsigned int (* AndAsign)(struct Expression *, struct Operand *, struct Operand *);
2054 unsigned int (* OrAsign)(struct Expression *, struct Operand *, struct Operand *);
2055 unsigned int (* XorAsign)(struct Expression *, struct Operand *, struct Operand *);
2056 unsigned int (* LShiftAsign)(struct Expression *, struct Operand *, struct Operand *);
2057 unsigned int (* RShiftAsign)(struct Expression *, struct Operand *, struct Operand *);
2058 unsigned int (* Not)(struct Expression *, struct Operand *);
2059 unsigned int (* Equ)(struct Expression *, struct Operand *, struct Operand *);
2060 unsigned int (* Nqu)(struct Expression *, struct Operand *, struct Operand *);
2061 unsigned int (* And)(struct Expression *, struct Operand *, struct Operand *);
2062 unsigned int (* Or)(struct Expression *, struct Operand *, struct Operand *);
2063 unsigned int (* Grt)(struct Expression *, struct Operand *, struct Operand *);
2064 unsigned int (* Sma)(struct Expression *, struct Operand *, struct Operand *);
2065 unsigned int (* GrtEqu)(struct Expression *, struct Operand *, struct Operand *);
2066 unsigned int (* SmaEqu)(struct Expression *, struct Operand *, struct Operand *);
2067 unsigned int (* Cond)(struct Expression *, struct Operand *, struct Operand *, struct Operand *);
2068 } __attribute__ ((gcc_struct));
2070 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Operand;
2076 unsigned int ptrSize;
2089 } __attribute__ ((gcc_struct));
2091 } __attribute__ ((gcc_struct));
2093 extern struct Operand GetOperand(struct Expression * exp);
2095 extern void __ecereNameSpace__ecere__com__eEnum_AddFixedValue(struct __ecereNameSpace__ecere__com__Class * _class, char * string, int value);
2097 extern int __ecereNameSpace__ecere__com__eEnum_AddValue(struct __ecereNameSpace__ecere__com__Class * _class, char * string);
2099 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__sys__OldLink;
2101 struct __ecereNameSpace__ecere__sys__OldLink
2103 struct __ecereNameSpace__ecere__sys__OldLink * prev;
2104 struct __ecereNameSpace__ecere__sys__OldLink * next;
2106 } __attribute__ ((gcc_struct));
2108 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__EnumClassData;
2110 struct __ecereNameSpace__ecere__com__EnumClassData
2112 struct __ecereNameSpace__ecere__sys__OldList values;
2114 } __attribute__ ((gcc_struct));
2116 extern struct ClassFunction * MkClassFunction(struct __ecereNameSpace__ecere__sys__OldList * specifiers, struct Specifier * _class, struct Declarator * decl, struct __ecereNameSpace__ecere__sys__OldList * declList);
2118 extern void ProcessClassFunctionBody(struct ClassFunction * func, struct Statement * body);
2120 extern struct External * MkExternalDeclaration(struct Declaration * declaration);
2122 extern struct ClassDef * MkClassDefFunction(struct ClassFunction * function);
2124 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);
2126 extern struct __ecereNameSpace__ecere__com__Instance * privateModule;
2128 extern void FreePropertyWatch(struct PropertyWatch * watcher);
2130 extern char * sourceFile;
2132 extern void __ecereNameSpace__ecere__sys__ChangeCh(char * string, char ch1, char ch2);
2134 extern struct Type * ProcessType(struct __ecereNameSpace__ecere__sys__OldList * specs, struct Declarator * decl);
2136 extern void PrintType(struct Type * type, char * string, unsigned int printName, unsigned int fullName);
2138 extern struct Expression * MkExpTypeSize(struct TypeName * typeName);
2140 extern struct Specifier * MkStructOrUnion(int type, struct Identifier * id, struct __ecereNameSpace__ecere__sys__OldList * definitions);
2142 extern unsigned int DummyMethod(void);
2144 extern void DeclareMethod(struct __ecereNameSpace__ecere__com__Method * method, char * name);
2146 extern struct __ecereNameSpace__ecere__com__Class * __ecereNameSpace__ecere__com__eSystem_FindClass(struct __ecereNameSpace__ecere__com__Instance * module, char * name);
2148 extern char * StringFromSpecDecl(struct __ecereNameSpace__ecere__sys__OldList * specs, struct Declarator * decl);
2150 extern size_t strlen(const char * );
2152 extern struct MemberInit * MkMemberInit(struct __ecereNameSpace__ecere__sys__OldList * ids, struct Initializer * initializer);
2154 extern char * PrintUInt64(uint64 result);
2156 extern struct Expression * MkExpInstance(struct Instantiation * inst);
2158 extern struct Instantiation * MkInstantiation(struct Specifier * _class, struct Expression * exp, struct __ecereNameSpace__ecere__sys__OldList * members);
2160 extern struct MembersInit * MkMembersInitList(struct __ecereNameSpace__ecere__sys__OldList * dataMembers);
2162 static struct __ecereNameSpace__ecere__com__Instance * classPropValues;
2164 static struct __ecereNameSpace__ecere__com__Class * __ecereClass_ClassPropertyValue;
2166 struct ClassPropertyValue
2168 struct __ecereNameSpace__ecere__com__Class * regClass;
2169 struct Identifier * id;
2170 struct Expression * exp;
2171 } __attribute__ ((gcc_struct));
2173 int __ecereVMethodID_class_OnGetString;
2175 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__TemplateMemberType;
2177 int __ecereVMethodID___ecereNameSpace__ecere__com__Container_Add;
2179 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__List;
2181 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)
2183 struct ClassDef * def;
2184 struct __ecereNameSpace__ecere__com__Class * regClass = symbol->registered;
2188 classType = regClass->type;
2189 if(classType == 4 && enumValues && (inCompiler || !buildingECERECOMModule))
2191 struct Enumerator * e;
2193 for(e = enumValues->first; e; e = e->next)
2197 struct Type * destType = (destType = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Type), destType->kind = 3, destType->refCount = 1, destType);
2199 e->exp->destType = destType;
2201 ProcessExpressionType(e->exp);
2203 if(!e->exp->expType)
2206 destType->_class = symbol;
2207 ProcessExpressionType(e->exp);
2209 if(e->exp->type == 0 && e->exp->expType && e->exp->identifier && e->exp->identifier->string && e->exp->expType->kind == 15)
2211 struct __ecereNameSpace__ecere__sys__NamedLink * l;
2212 char * string = e->exp->identifier->string;
2214 for(l = e->exp->expType->members.first; l; l = l->next)
2216 if(!strcmp(l->name, string))
2220 FreeExpContents(e->exp);
2222 e->exp->constant = PrintUInt((unsigned int)l->data);
2223 FreeType(e->exp->expType);
2224 e->exp->expType = ProcessTypeString("uint", 0x0);
2231 ComputeExpression(e->exp);
2232 if(e->exp->isConstant && e->exp->type == 2)
2234 struct Operand op = GetOperand(e->exp);
2248 __ecereNameSpace__ecere__com__eEnum_AddFixedValue(regClass, e->id->string, value);
2251 __ecereNameSpace__ecere__com__eEnum_AddValue(regClass, e->id->string);
2254 __ecereNameSpace__ecere__com__eEnum_AddValue(regClass, e->id->string);
2257 struct __ecereNameSpace__ecere__com__EnumClassData * baseData = regClass->data;
2258 struct __ecereNameSpace__ecere__sys__OldLink * deriv;
2260 for(deriv = regClass->derivatives.first; deriv; deriv = deriv->next)
2262 struct __ecereNameSpace__ecere__com__Class * c = deriv->data;
2264 if(c && c->type == 4)
2266 struct __ecereNameSpace__ecere__com__EnumClassData * data = c->data;
2268 data->largest = baseData->largest;
2273 if(definitions != (((void *)0)))
2277 for(def = definitions->first; def; def = def->next)
2279 if(def->type == 4 && def->propertyWatch)
2281 struct PropertyWatch * propWatch = def->propertyWatch;
2282 struct ClassFunction * func;
2283 char watcherName[1024];
2284 struct Identifier * propID;
2285 struct Statement * stmt = MkExpressionStmt(MkList());
2286 struct Declarator * decl;
2288 sprintf(watcherName, "__ecerePropertySelfWatcher_%d", propWatcherID++);
2289 for(propID = (*propWatch->properties).first; propID; propID = propID->next)
2291 strcat(watcherName, "_");
2292 strcat(watcherName, propID->string);
2294 decl = MkDeclaratorFunction(MkDeclaratorIdentifier(MkIdentifier(watcherName)), MkListOne(MkTypeName(MkListOne(MkSpecifier(VOID)), (((void *)0)))));
2295 func = MkClassFunction(MkListOne(MkSpecifier(VOID)), (((void *)0)), decl, (((void *)0)));
2296 ProcessClassFunctionBody(func, propWatch->compound);
2297 decl->symbol = __extension__ ({
2298 struct Symbol * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Symbol);
2300 __ecereInstance1->id = symbol->id, __ecereInstance1->idCode = symbol->idCode, __ecereInstance1;
2302 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*excludedSymbols), decl->symbol);
2303 func->id = symbol->id;
2304 func->idCode = symbol->idCode;
2305 func->dontMangle = 0x1;
2307 struct External * externalDecl = MkExternalDeclaration((((void *)0)));
2308 struct Declaration * decl;
2309 struct __ecereNameSpace__ecere__sys__OldList * specifiers = MkList();
2311 ListAdd(specifiers, MkSpecifier(STATIC));
2312 ListAdd(specifiers, MkSpecifier(VOID));
2313 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Insert((&*ast), curExternal->prev, externalDecl);
2314 decl = MkDeclaration(specifiers, MkListOne(MkInitDeclarator(MkDeclaratorFunction(MkDeclaratorIdentifier(MkIdentifier(watcherName)), MkListOne(MkTypeName(MkListOne(MkSpecifierName(regClass->fullName)), (((void *)0))))), (((void *)0)))));
2315 externalDecl->declaration = decl;
2316 if(decl->symbol && !decl->symbol->methodExternal)
2318 decl->symbol->methodExternal = externalDecl;
2319 decl->symbol->id = symbol->id;
2320 decl->symbol->idCode = symbol->idCode;
2323 propWatch->compound = (((void *)0));
2324 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Insert(definitions, (((void *)0)), MkClassDefFunction(func));
2325 for(propID = (*propWatch->properties).first; propID; propID = propID->next)
2327 struct __ecereNameSpace__ecere__com__Property * prop = __ecereNameSpace__ecere__com__eClass_FindProperty(regClass, propID->string, privateModule);
2331 struct __ecereNameSpace__ecere__sys__OldList * args = MkList();
2333 ListAdd(args, MkExpIdentifier(MkIdentifier("class")));
2335 char * s = QMkString(propID->string);
2337 ListAdd(args, MkExpString(s));
2338 (__ecereNameSpace__ecere__com__eSystem_Delete(s), s = 0);
2340 ListAdd(args, MkExpIdentifier(MkIdentifier(watcherName)));
2341 ListAdd(stmt->expressions, MkExpCall(MkExpIdentifier(MkIdentifier("eProperty_SelfWatch")), args));
2344 Compiler_Error(__ecereNameSpace__ecere__GetTranslatedString("ec", "Property %s not found in class %s\n", (((void *)0))), propID->string, regClass->fullName);
2346 FreePropertyWatch(def->propertyWatch);
2347 def->propertyWatch = (struct PropertyWatch *)stmt;
2351 for(def = definitions->first; def; def = def->next)
2355 ProcessClassFunction(regClass, def->function, defs, external->prev, declMode == 3);
2359 if(inCompiler && symbol->id != (((int)0x7fffffff)) && regClass)
2361 struct Statement * stmt;
2362 struct __ecereNameSpace__ecere__sys__OldList * args = MkList();
2363 struct __ecereNameSpace__ecere__com__Method * method;
2364 struct Expression * exp;
2365 char * registerFunction = (((void *)0));
2366 int inheritanceAccess = 1;
2368 CreateRegisterModuleBody();
2369 curExternal = registerModuleExternal;
2370 switch(regClass->type)
2373 ListAdd(args, MkExpIdentifier(MkIdentifier("structClass")));
2376 ListAdd(args, MkExpIdentifier(MkIdentifier("bitClass")));
2379 ListAdd(args, MkExpIdentifier(MkIdentifier("enumClass")));
2382 ListAdd(args, MkExpIdentifier(MkIdentifier("noHeadClass")));
2385 ListAdd(args, MkExpIdentifier(MkIdentifier("unitClass")));
2388 ListAdd(args, MkExpIdentifier(MkIdentifier("normalClass")));
2392 char nameSpace[1024] = "";
2393 char className[1024] = "";
2396 GetNameSpaceString(regClass->nameSpace, nameSpace);
2399 __ecereNameSpace__ecere__sys__GetLastDirectory(sourceFile, className);
2400 __ecereNameSpace__ecere__sys__ChangeCh(className, '.', '_');
2401 strcat(className, "}");
2403 strcat(className, nameSpace);
2404 strcat(className, regClass->name);
2405 string = QMkString(className);
2406 ListAdd(args, MkExpString(string));
2407 (__ecereNameSpace__ecere__com__eSystem_Delete(string), string = 0);
2409 if(baseSpecs != (((void *)0)))
2411 struct Type * baseType = ProcessType(baseSpecs, (((void *)0)));
2413 if(baseType->kind != 9 && baseType->kind != 10)
2415 char baseName[1024] = "";
2418 if(baseType->kind == 8 && baseType->_class && baseType->_class->isStatic)
2420 __ecereNameSpace__ecere__sys__GetLastDirectory(sourceFile, baseName);
2421 __ecereNameSpace__ecere__sys__ChangeCh(baseName, '.', '_');
2422 strcat(baseName, "}");
2423 strcat(baseName, baseType->_class->string);
2426 PrintType(baseType, baseName, 0x0, 0x1);
2427 string = QMkString(baseName);
2428 ListAdd(args, MkExpString(string));
2429 (__ecereNameSpace__ecere__com__eSystem_Delete(string), string = 0);
2432 ListAdd(args, MkExpConstant("0"));
2434 if(((struct Specifier *)baseSpecs->first)->type == 0 && ((struct Specifier *)baseSpecs->first)->specifier == PRIVATE)
2435 inheritanceAccess = 2;
2438 ListAdd(args, MkExpConstant("0"));
2439 if(regClass->type == 1 || regClass->type == 0 || regClass->type == 5)
2441 struct __ecereNameSpace__ecere__com__DataMember * member = (((void *)0));
2444 struct __ecereNameSpace__ecere__com__Class * base;
2446 for(base = regClass->base; base && base->type != 1000; base = base->next)
2448 for(member = base->membersAndProperties.first; member; member = member->next)
2449 if(!member->isProperty)
2455 if(regClass->type == 1 && symbol->declaredStruct && member)
2457 char baseStructName[1024];
2459 baseStructName[0] = (char)0;
2460 strcpy(baseStructName, (regClass->base->templateClass ? regClass->base->templateClass : regClass->base)->fullName);
2461 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))))));
2464 ListAdd(args, symbol->declaredStruct ? MkExpTypeSize(MkTypeName(MkListOne(MkStructOrUnion(3, MkIdentifier(symbol->structName), (((void *)0)))), (((void *)0)))) : MkExpConstant("0"));
2468 ListAdd(args, MkExpConstant("0"));
2471 char classDataStructName[1024];
2473 strcpy(classDataStructName, "__ecereClassData_");
2474 FullClassNameCat(classDataStructName, symbol->string, 0x0);
2475 ListAdd(args, symbol->classData ? MkExpTypeSize(MkTypeName(MkListOne(MkStructOrUnion(3, MkIdentifier(classDataStructName), (((void *)0)))), (((void *)0)))) : MkExpConstant("0"));
2477 if(regClass->type == 0 || regClass->type == 5)
2479 ListAdd(args, symbol->needConstructor ? MkExpIdentifier(MkIdentifier(symbol->constructorName)) : MkExpConstant("0"));
2480 ListAdd(args, symbol->needDestructor ? MkExpIdentifier(MkIdentifier(symbol->destructorName)) : MkExpConstant("0"));
2484 ListAdd(args, MkExpConstant("0"));
2485 ListAdd(args, MkExpConstant("0"));
2487 ListAdd(args, MkExpIdentifier(MkIdentifier("module")));
2491 ListAdd(args, MkExpIdentifier(MkIdentifier("staticAccess")));
2494 ListAdd(args, MkExpIdentifier(MkIdentifier("privateAccess")));
2498 ListAdd(args, MkExpIdentifier(MkIdentifier(buildingECERECOMModule ? "baseSystemAccess" : "publicAccess")));
2501 switch(inheritanceAccess)
2504 ListAdd(args, MkExpIdentifier(MkIdentifier("privateAccess")));
2508 ListAdd(args, MkExpIdentifier(MkIdentifier("publicAccess")));
2511 registerFunction = "eSystem_RegisterClass";
2512 stmt = MkExpressionStmt(MkListOne(MkExpOp(MkExpIdentifier(MkIdentifier("class")), '=', MkExpCall((exp = MkExpIdentifier(MkIdentifier(registerFunction))), args))));
2513 ListAdd(registerModuleBody->compound.statements, stmt);
2514 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)));
2515 ListAdd(registerModuleBody->compound.statements, stmt);
2516 if(external && external->type == 2 && external->_class->deleteWatchable)
2518 args = MkListOne(MkExpIdentifier(MkIdentifier("class")));
2519 stmt = MkExpressionStmt(MkListOne(MkExpCall(MkExpIdentifier(MkIdentifier("eClass_DestructionWatchable")), args)));
2520 ListAdd(registerModuleBody->compound.statements, stmt);
2524 struct __ecereNameSpace__ecere__com__Class * base = regClass->base;
2527 for(c = 0; c < base->vTblSize; c++)
2529 struct Symbol * method = (struct Symbol *)regClass->_vTbl[c];
2531 if((void *)method != DummyMethod && base->_vTbl[c] != (void *)method && method->methodExternal)
2533 struct External * external = method->methodExternal;
2534 struct __ecereNameSpace__ecere__sys__OldList * args = MkList();
2535 struct Identifier * id = external->function ? GetDeclId(external->function->declarator) : (((void *)0));
2537 ListAdd(args, MkExpIdentifier(MkIdentifier("class")));
2539 char * string = QMkString(method->method->name);
2541 ListAdd(args, MkExpString(string));
2542 (__ecereNameSpace__ecere__com__eSystem_Delete(string), string = 0);
2544 ListAdd(args, MkExpConstant("0"));
2545 ListAdd(args, (exp = MkExpIdentifier(MkIdentifier(id->string))));
2546 ListAdd(args, MkExpIdentifier(MkIdentifier("publicAccess")));
2547 exp->expType = __extension__ ({
2548 struct Type * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Type);
2550 __ecereInstance1->refCount = 1, __ecereInstance1;
2552 stmt = MkExpressionStmt(MkListOne(MkExpCall(MkExpIdentifier(MkIdentifier("eClass_AddMethod")), args)));
2553 ListAdd(registerModuleBody->compound.statements, stmt);
2560 for(c = regClass->base ? regClass->base->vTblSize : 0; c < regClass->vTblSize; c++)
2562 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)))
2564 if(method->type == 1 && method->_class == regClass && method->vid == c)
2567 struct Expression * exp;
2568 struct External * external = method->symbol ? ((struct Symbol *)method->symbol)->methodCodeExternal : (((void *)0));
2569 struct __ecereNameSpace__ecere__sys__OldList * args = MkList();
2570 struct Identifier * id = (external && external->function) ? GetDeclId(external->function->declarator) : (((void *)0));
2572 ListAdd(args, MkExpIdentifier(MkIdentifier("class")));
2574 char * string = QMkString(method->name);
2576 ListAdd(args, MkExpString(string));
2577 (__ecereNameSpace__ecere__com__eSystem_Delete(string), string = 0);
2580 char * string = QMkString(method->dataTypeString);
2582 ListAdd(args, MkExpString(string));
2583 (__ecereNameSpace__ecere__com__eSystem_Delete(string), string = 0);
2585 if(id && external->function->body)
2587 ListAdd(args, (exp = MkExpIdentifier(MkIdentifier(id->string))));
2588 exp->expType = __extension__ ({
2589 struct Type * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Type);
2591 __ecereInstance1->refCount = 1, __ecereInstance1;
2596 ListAdd(args, (exp = MkExpConstant("0")));
2598 switch(method->memberAccess)
2601 ListAdd(args, MkExpIdentifier(MkIdentifier("staticAccess")));
2604 ListAdd(args, MkExpIdentifier(MkIdentifier("privateAccess")));
2608 ListAdd(args, MkExpIdentifier(MkIdentifier("publicAccess")));
2611 strcpy(name, "__ecereVMethodID_");
2612 FullClassNameCat(name, method->_class->fullName, 0x0);
2614 strcat(name, method->name);
2615 exp = MkExpCall(MkExpIdentifier(MkIdentifier("eClass_AddVirtualMethod")), args);
2616 stmt = MkExpressionStmt(MkListOne(exp));
2617 DeclareMethod(method, name);
2618 ListAdd(registerModuleBody->compound.statements, stmt);
2623 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)))
2625 if(method->type == 1 && method->_class == regClass)
2627 else if(method->memberAccess == 1 || !method->dataTypeString)
2629 struct External * external = method->symbol ? ((struct Symbol *)method->symbol)->methodCodeExternal : (((void *)0));
2630 struct __ecereNameSpace__ecere__sys__OldList * args = MkList();
2631 struct Identifier * id = (external && external->function) ? GetDeclId(external->function->declarator) : (((void *)0));
2633 ListAdd(args, MkExpIdentifier(MkIdentifier("class")));
2635 char * string = QMkString(method->name);
2637 ListAdd(args, MkExpString(string));
2638 (__ecereNameSpace__ecere__com__eSystem_Delete(string), string = 0);
2641 char * string = QMkString(method->dataTypeString);
2643 ListAdd(args, MkExpString(string));
2644 (__ecereNameSpace__ecere__com__eSystem_Delete(string), string = 0);
2646 if(id && external->function->body)
2648 ListAdd(args, (exp = MkExpIdentifier(MkIdentifier(id->string))));
2649 exp->expType = __extension__ ({
2650 struct Type * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Type);
2652 __ecereInstance1->refCount = 1, __ecereInstance1;
2657 ListAdd(args, (exp = MkExpConstant("0")));
2659 switch(method->memberAccess)
2662 ListAdd(args, MkExpIdentifier(MkIdentifier("staticAccess")));
2665 ListAdd(args, MkExpIdentifier(MkIdentifier("privateAccess")));
2669 ListAdd(args, MkExpIdentifier(MkIdentifier("publicAccess")));
2672 stmt = MkExpressionStmt(MkListOne(MkExpCall(MkExpIdentifier(MkIdentifier("eClass_AddMethod")), args)));
2673 ListAdd(registerModuleBody->compound.statements, stmt);
2676 RegisterMembersAndProperties(regClass, 0x0, "class", registerModuleBody);
2679 struct __ecereNameSpace__ecere__sys__NamedLink * value;
2680 struct __ecereNameSpace__ecere__com__Class * enumClass = __ecereNameSpace__ecere__com__eSystem_FindClass(privateModule, "enum");
2681 struct __ecereNameSpace__ecere__com__EnumClassData * e = (regClass ? ((void *)(((char *)regClass->data) + enumClass->offsetClass)) : (((void *)0)));
2683 for(value = e->values.first; value; value = value->next)
2685 struct __ecereNameSpace__ecere__sys__OldList * args = MkList();
2687 ListAdd(args, MkExpIdentifier(MkIdentifier("class")));
2689 char * string = QMkString(value->name);
2691 ListAdd(args, MkExpString(string));
2692 (__ecereNameSpace__ecere__com__eSystem_Delete(string), string = 0);
2697 sprintf(temp, "%d", (int)value->data);
2698 ListAdd(args, MkExpConstant(temp));
2700 stmt = MkExpressionStmt(MkListOne(MkExpCall(MkExpIdentifier(MkIdentifier("eEnum_AddFixedValue")), args)));
2701 ListAdd(registerModuleBody->compound.statements, stmt);
2704 if(symbol->templateParams)
2706 struct TemplateParameter * param;
2708 for(param = (*symbol->templateParams).first; param; param = param->next)
2710 struct __ecereNameSpace__ecere__sys__OldList * args = MkList();
2712 ListAdd(args, MkExpIdentifier(MkIdentifier("class")));
2714 char * string = QMkString(param->identifier->string);
2716 ListAdd(args, MkExpString(string));
2717 (__ecereNameSpace__ecere__com__eSystem_Delete(string), string = 0);
2719 ListAdd(args, MkExpIdentifier(MkIdentifier((param->type == 0) ? "type" : ((param->type == 1) ? "identifier" : "expression"))));
2725 char * typeString = param->dataType ? StringFromSpecDecl(param->dataType->specifiers, param->dataType->decl) : (((void *)0));
2726 char * string = QMkString(typeString);
2728 ListAdd(args, MkExpString(string));
2729 (__ecereNameSpace__ecere__com__eSystem_Delete(typeString), typeString = 0);
2730 (__ecereNameSpace__ecere__com__eSystem_Delete(string), string = 0);
2735 char memberTypeString[132] = "TemplateMemberType::";
2736 unsigned int needClass = 0x1;
2738 ((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);
2739 ListAdd(args, MkExpCast(MkTypeName(MkListOne(MkSpecifier(VOID)), MkDeclaratorPointer(MkPointer((((void *)0)), (((void *)0))), (((void *)0)))), MkExpIdentifier(MkIdentifier(memberTypeString))));
2743 if(param->defaultArgument)
2745 struct __ecereNameSpace__ecere__sys__OldList * members = MkList();
2751 char * typeString = param->defaultArgument->templateDatatype ? StringFromSpecDecl(param->defaultArgument->templateDatatype->specifiers, param->defaultArgument->templateDatatype->decl) : (((void *)0));
2752 char * string = QMkString(typeString);
2754 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*members), MkMemberInit(MkListOne(MkIdentifier("dataTypeString")), MkInitializerAssignment(MkExpString(string))));
2755 (__ecereNameSpace__ecere__com__eSystem_Delete(typeString), typeString = 0);
2756 (__ecereNameSpace__ecere__com__eSystem_Delete(string), string = 0);
2761 char memberString[1024];
2764 memberString[0] = '\0';
2765 if(param->defaultArgument->identifier->_class)
2767 if(param->defaultArgument->identifier->_class->type == 8)
2768 strcpy(memberString, param->defaultArgument->identifier->_class->templateParameter->identifier->string);
2769 else if(param->defaultArgument->identifier->_class->name)
2770 strcpy(memberString, param->defaultArgument->identifier->_class->name);
2773 strcat(memberString, "::");
2774 strcat(memberString, param->defaultArgument->identifier->string);
2775 string = QMkString(memberString);
2776 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*members), MkMemberInit(MkListOne(MkIdentifier("dataTypeString")), MkInitializerAssignment(MkExpString(string))));
2777 (__ecereNameSpace__ecere__com__eSystem_Delete(string), string = 0);
2786 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
2789 struct __ecereNameSpace__ecere__sys__OldList * ids = MkList();
2791 char * string = (((void *)0));
2793 op = GetOperand(param->defaultArgument->expression);
2794 ui64String = PrintUInt64(op.ui64);
2795 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*ids), MkIdentifier("expression"));
2796 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*ids), MkIdentifier("ui64"));
2797 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*members), MkMemberInit(ids, MkInitializerAssignment(MkExpConstant(ui64String))));
2798 (__ecereNameSpace__ecere__com__eSystem_Delete(string), string = 0);
2799 (__ecereNameSpace__ecere__com__eSystem_Delete(ui64String), ui64String = 0);
2803 ListAdd(args, MkExpInstance(MkInstantiation(MkSpecifierName("ClassTemplateArgument"), (((void *)0)), MkListOne(MkMembersInitList(members)))));
2806 ListAdd(args, MkExpIdentifier(MkIdentifier("null")));
2807 stmt = MkExpressionStmt(MkListOne(MkExpCall(MkExpIdentifier(MkIdentifier("eClass_AddTemplateParameter")), args)));
2808 ListAdd(registerModuleBody->compound.statements, stmt);
2810 stmt = MkExpressionStmt(MkListOne(MkExpCall(MkExpIdentifier(MkIdentifier("eClass_DoneAddingTemplateParameters")), MkListOne(MkExpIdentifier(MkIdentifier("class"))))));
2811 ListAdd(registerModuleBody->compound.statements, stmt);
2813 if(definitions != (((void *)0)))
2815 for(def = definitions->first; def; def = def->next)
2817 if(def->type == 4 && def->propertyWatch)
2819 ListAdd(registerModuleBody->compound.statements, (struct Statement *)def->propertyWatch);
2820 def->propertyWatch = (((void *)0));
2822 else if(def->type == 5)
2825 char * s = QMkString(def->designer);
2827 stmt = MkIfStmt(MkListOne(MkExpIdentifier(MkIdentifier("class"))), MkExpressionStmt(MkListOne(MkExpOp(MkExpMember(MkExpIdentifier(MkIdentifier("class")), MkIdentifier("designerClass")), '=', MkExpString(s)))), (((void *)0)));
2828 (__ecereNameSpace__ecere__com__eSystem_Delete(s), s = 0);
2830 ListAdd(registerModuleBody->compound.statements, stmt);
2832 else if(def->type == 6)
2834 stmt = MkIfStmt(MkListOne(MkExpIdentifier(MkIdentifier("class"))), MkExpressionStmt(MkListOne(MkExpOp(MkExpMember(MkExpIdentifier(MkIdentifier("class")), MkIdentifier("noExpansion")), '=', MkExpConstant("1")))), (((void *)0)));
2835 ListAdd(registerModuleBody->compound.statements, stmt);
2837 else if(def->type == 7)
2839 stmt = MkIfStmt(MkListOne(MkExpIdentifier(MkIdentifier("class"))), MkExpressionStmt(MkListOne(MkExpOp(MkExpMember(MkExpIdentifier(MkIdentifier("class")), MkIdentifier("fixed")), '=', MkExpConstant("1")))), (((void *)0)));
2840 ListAdd(registerModuleBody->compound.statements, stmt);
2842 regClass->fixed = 0x1;
2844 else if(def->type == 8)
2846 char * s = QMkString(def->defaultProperty->string);
2848 stmt = MkIfStmt(MkListOne(MkExpIdentifier(MkIdentifier("class"))), MkExpressionStmt(MkListOne(MkExpOp(MkExpMember(MkExpIdentifier(MkIdentifier("class")), MkIdentifier("defaultProperty")), '=', MkExpString(s)))), (((void *)0)));
2849 ListAdd(registerModuleBody->compound.statements, stmt);
2850 (__ecereNameSpace__ecere__com__eSystem_Delete(s), s = 0);
2852 else if(def->type == 11)
2854 ((struct __ecereNameSpace__ecere__com__IteratorPointer * (*)(struct __ecereNameSpace__ecere__com__Instance *, uint64 value))__extension__ ({
2855 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = classPropValues;
2857 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__com__List->_vTbl;
2858 })[__ecereVMethodID___ecereNameSpace__ecere__com__Container_Add])(classPropValues, (uint64)(__extension__ ({
2859 struct __ecereNameSpace__ecere__com__Instance * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_ClassPropertyValue);
2861 ((struct ClassPropertyValue *)(((char *)__ecereInstance1 + __ecereClass_ClassPropertyValue->offset)))->regClass = regClass, ((struct ClassPropertyValue *)(((char *)__ecereInstance1 + __ecereClass_ClassPropertyValue->offset)))->id = def->id, ((struct ClassPropertyValue *)(((char *)__ecereInstance1 + __ecereClass_ClassPropertyValue->offset)))->exp = def->initializer->exp, __ecereInstance1;
2863 def->id = (((void *)0));
2864 def->initializer->exp = (((void *)0));
2872 extern void FreeIdentifier(struct Identifier * id);
2874 void __ecereDestructor_ClassPropertyValue(struct __ecereNameSpace__ecere__com__Instance * this)
2876 struct ClassPropertyValue * __ecerePointer_ClassPropertyValue = (struct ClassPropertyValue *)(this ? (((char *)this) + __ecereClass_ClassPropertyValue->offset) : 0);
2879 FreeIdentifier(__ecerePointer_ClassPropertyValue->id);
2883 extern void PrintExpression(struct Expression * exp, char * string);
2885 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__IteratorPointer;
2887 struct __ecereNameSpace__ecere__com__IteratorPointer;
2889 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__Iterator;
2891 struct __ecereNameSpace__ecere__com__Iterator
2893 struct __ecereNameSpace__ecere__com__Instance * container;
2894 struct __ecereNameSpace__ecere__com__IteratorPointer * pointer;
2895 } __attribute__ ((gcc_struct));
2897 void __ecereMethod___ecereNameSpace__ecere__sys__OldList_Remove(struct __ecereNameSpace__ecere__sys__OldList * this, void * item);
2899 unsigned int __ecereMethod___ecereNameSpace__ecere__com__Iterator_Next();
2901 uint64 __ecereProp___ecereNameSpace__ecere__com__Iterator_Get_data(struct __ecereNameSpace__ecere__com__Iterator * this);
2903 void __ecereProp___ecereNameSpace__ecere__com__Iterator_Set_data(struct __ecereNameSpace__ecere__com__Iterator * this, uint64 value);
2905 extern struct __ecereNameSpace__ecere__com__Property ** __ecereProp___ecereNameSpace__ecere__com__Iterator_data;
2907 int __ecereVMethodID___ecereNameSpace__ecere__com__Container_Free;
2909 void ProcessClassDefinitions()
2911 struct External * external, * next;
2913 CreateRegisterModuleBody();
2916 for(external = (*ast).first; external; external = next)
2918 next = external->next;
2919 curExternal = external;
2920 if(external->type == 2)
2922 struct ClassDefinition * _class = external->_class;
2924 if(_class->definitions)
2926 ProcessClass(0, _class->definitions, _class->symbol, _class->baseSpecs, (((void *)0)), ast, external, _class->declMode);
2930 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Remove((&*ast), external);
2931 FreeExternal(external);
2934 else if(external->type == 0)
2936 unsigned int setStaticMethod = 0x0;
2938 if(external->symbol && !external->symbol->type->thisClass && !external->symbol->type->staticMethod)
2940 external->symbol->type->staticMethod = 0x1;
2941 setStaticMethod = 0x1;
2945 struct FunctionDefinition * function = external->function;
2946 struct Statement * stmt;
2947 struct __ecereNameSpace__ecere__sys__OldList * args;
2949 if(!strcmp(function->declarator->symbol->string, "__on_register_module"))
2951 ListAdd(registerModuleBody->compound.statements, function->body);
2952 function->body->compound.context->parent = registerModuleBody->compound.context;
2953 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Remove((&*ast), external);
2954 function->body = (((void *)0));
2955 FreeExternal(external);
2958 if(function->declMode != 2 && function->declMode != 1)
2961 CreateRegisterModuleBody();
2963 char * string = QMkString(function->declarator->symbol->string);
2965 ListAdd(args, MkExpString(string));
2966 (__ecereNameSpace__ecere__com__eSystem_Delete(string), string = 0);
2970 char type[1024] = "";
2973 function->declarator->symbol->type->staticMethod = 0x0;
2974 PrintType(function->declarator->symbol->type, type, 0x1, 0x1);
2976 function->declarator->symbol->type->staticMethod = 0x1;
2977 string = QMkString(type);
2978 ListAdd(args, MkExpString(string));
2979 (__ecereNameSpace__ecere__com__eSystem_Delete(string), string = 0);
2982 ListAdd(args, MkExpIdentifier(MkIdentifier(function->declarator->symbol->string)));
2984 ListAdd(args, MkExpIdentifier(MkIdentifier("module")));
2985 switch(function->declMode)
2988 ListAdd(args, MkExpIdentifier(MkIdentifier("staticAccess")));
2991 ListAdd(args, MkExpIdentifier(MkIdentifier("privateAccess")));
2995 ListAdd(args, MkExpIdentifier(MkIdentifier(buildingECERECOMModule ? "baseSystemAccess" : "publicAccess")));
2998 stmt = MkExpressionStmt(MkListOne(MkExpCall((MkExpIdentifier(MkIdentifier("eSystem_RegisterFunction"))), args)));
2999 ListAdd(registerModuleBody->compound.statements, stmt);
3002 else if(external->type == 1)
3004 struct Declaration * declaration = external->declaration;
3006 if(external->symbol)
3008 if(external->symbol->type && external->symbol->type->kind == 11 && !external->symbol->type->thisClass)
3009 external->symbol->type->staticMethod = 0x1;
3011 if(external->symbol && declaration->type == 1)
3013 if(declaration->specifiers)
3015 struct Specifier * specifier;
3016 unsigned int removeExternal = 0x0;
3018 for(specifier = (*declaration->specifiers).first; specifier; specifier = specifier->next)
3020 if((specifier->type == 2 || specifier->type == 3 || specifier->type == 4) && specifier->id && specifier->id->string && (declaration->declMode || specifier->baseSpecs || (specifier->type == 2 && specifier->definitions)))
3022 struct Symbol * symbol = FindClass(specifier->id->string);
3028 if(specifier->type == 2)
3032 removeExternal = 0x1;
3033 symbol->ctx = specifier->ctx;
3034 specifier->ctx = (((void *)0));
3035 ProcessClass(classType, specifier->definitions, symbol, specifier->baseSpecs, specifier->list, ast, external, declaration->declMode);
3039 if(inCompiler && removeExternal)
3041 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Remove((&*ast), external);
3042 FreeExternal(external);
3046 else if(declaration->type == 3)
3048 if(inCompiler && declaration->declMode != 3)
3050 struct Statement * stmt;
3051 struct __ecereNameSpace__ecere__sys__OldList * args = MkList();
3053 CreateRegisterModuleBody();
3055 char * string = QMkString(declaration->id->string);
3057 ListAdd(args, MkExpString(string));
3058 (__ecereNameSpace__ecere__com__eSystem_Delete(string), string = 0);
3062 char type[1024] = "";
3064 PrintExpression(declaration->exp, type);
3065 string = QMkString(type);
3066 ListAdd(args, MkExpString(string));
3067 (__ecereNameSpace__ecere__com__eSystem_Delete(string), string = 0);
3069 ListAdd(args, MkExpIdentifier(MkIdentifier("module")));
3070 switch(declaration->declMode)
3073 ListAdd(args, MkExpIdentifier(MkIdentifier("staticAccess")));
3076 ListAdd(args, MkExpIdentifier(MkIdentifier("privateAccess")));
3080 ListAdd(args, MkExpIdentifier(MkIdentifier(buildingECERECOMModule ? "baseSystemAccess" : "publicAccess")));
3083 stmt = MkExpressionStmt(MkListOne(MkExpCall((MkExpIdentifier(MkIdentifier("eSystem_RegisterDefine"))), args)));
3084 ListAdd(registerModuleBody->compound.statements, stmt);
3090 struct __ecereNameSpace__ecere__com__Iterator v =
3092 (classPropValues), 0
3095 while(__ecereMethod___ecereNameSpace__ecere__com__Iterator_Next(&v))
3097 struct __ecereNameSpace__ecere__sys__OldList * findClassArgs = MkList();
3098 struct __ecereNameSpace__ecere__sys__OldList * args = MkList();
3099 struct Statement * compoundStmt;
3102 ListAdd(findClassArgs, MkExpIdentifier(MkIdentifier("module")));
3103 s = QMkString(__extension__ ({
3104 char * __ecTemp1 = (((struct __ecereNameSpace__ecere__com__Instance *)__ecereProp___ecereNameSpace__ecere__com__Iterator_Get_data(&v)));
3106 ((struct ClassPropertyValue *)(__ecTemp1 + __ecereClass_ClassPropertyValue->offset));
3107 })->regClass->name);
3108 ListAdd(findClassArgs, MkExpString(s));
3109 (__ecereNameSpace__ecere__com__eSystem_Delete(s), s = 0);
3110 ListAdd(args, MkExpIdentifier(MkIdentifier("_class")));
3111 s = QMkString(__extension__ ({
3112 char * __ecTemp1 = (((struct __ecereNameSpace__ecere__com__Instance *)__ecereProp___ecereNameSpace__ecere__com__Iterator_Get_data(&v)));
3114 ((struct ClassPropertyValue *)(__ecTemp1 + __ecereClass_ClassPropertyValue->offset));
3116 ListAdd(args, MkExpString(s));
3117 (__ecereNameSpace__ecere__com__eSystem_Delete(s), s = 0);
3118 ListAdd(args, MkExpCast(MkTypeName(MkListOne(MkSpecifier(INT64)), (((void *)0))), __extension__ ({
3119 char * __ecTemp1 = (((struct __ecereNameSpace__ecere__com__Instance *)__ecereProp___ecereNameSpace__ecere__com__Iterator_Get_data(&v)));
3121 ((struct ClassPropertyValue *)(__ecTemp1 + __ecereClass_ClassPropertyValue->offset));
3123 compoundStmt = MkCompoundStmt(MkListOne(MkDeclaration(MkListOne(MkSpecifierName("ecere::com::Class")), MkListOne(MkInitDeclarator(MkDeclaratorIdentifier(MkIdentifier("_class")), MkInitializerAssignment(MkExpCall(MkExpIdentifier(MkIdentifier("ecere::com::eSystem_FindClass")), findClassArgs)))))), MkListOne(MkExpressionStmt(MkListOne(MkExpCall(MkExpIdentifier(MkIdentifier("ecere::com::eClass_SetProperty")), args)))));
3124 compoundStmt->compound.context = __extension__ ({
3125 struct Context * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Context);
3127 __ecereInstance1->parent = registerModuleBody->compound.context, __ecereInstance1;
3129 ListAdd(registerModuleBody->compound.statements, compoundStmt);
3132 ((void (*)(struct __ecereNameSpace__ecere__com__Instance *))__extension__ ({
3133 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = classPropValues;
3135 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__com__List->_vTbl;
3136 })[__ecereVMethodID___ecereNameSpace__ecere__com__Container_Free])(classPropValues);
3140 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__GlobalFunction;
3142 struct __ecereNameSpace__ecere__com__GlobalFunction;
3144 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);
3146 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);
3148 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__Module;
3150 struct __ecereNameSpace__ecere__com__Module
3152 struct __ecereNameSpace__ecere__com__Instance * application;
3153 struct __ecereNameSpace__ecere__sys__OldList classes;
3154 struct __ecereNameSpace__ecere__sys__OldList defines;
3155 struct __ecereNameSpace__ecere__sys__OldList functions;
3156 struct __ecereNameSpace__ecere__sys__OldList modules;
3157 struct __ecereNameSpace__ecere__com__Instance * prev;
3158 struct __ecereNameSpace__ecere__com__Instance * next;
3164 struct __ecereNameSpace__ecere__com__NameSpace privateNameSpace;
3165 struct __ecereNameSpace__ecere__com__NameSpace publicNameSpace;
3166 } __attribute__ ((gcc_struct));
3168 extern struct __ecereNameSpace__ecere__com__Instance * __thisModule;
3170 void __ecereRegisterModule_pass1(struct __ecereNameSpace__ecere__com__Instance * module)
3172 struct __ecereNameSpace__ecere__com__Class * class;
3174 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("SetBuildingEcereCom", "void SetBuildingEcereCom(bool b)", SetBuildingEcereCom, module, 1);
3175 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("GetBuildingEcereCom", "bool GetBuildingEcereCom(void)", GetBuildingEcereCom, module, 1);
3176 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("SetBuildingEcereComModule", "void SetBuildingEcereComModule(bool b)", SetBuildingEcereComModule, module, 1);
3177 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("GetBuildingEcereComModule", "bool GetBuildingEcereComModule(void)", GetBuildingEcereComModule, module, 1);
3178 __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);
3179 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("CreateRegisterModuleBody", "void CreateRegisterModuleBody(void)", CreateRegisterModuleBody, module, 2);
3180 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("RegisterMembersAndProperties", "void RegisterMembersAndProperties(ecere::com::Class regClass, bool isMember, char * className, Statement statement)", RegisterMembersAndProperties, module, 2);
3181 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("GetNameSpaceString", "void GetNameSpaceString(ecere::com::NameSpace ns, char * string)", GetNameSpaceString, module, 2);
3182 class = __ecereNameSpace__ecere__com__eSystem_RegisterClass(0, "ClassPropertyValue", 0, sizeof(struct ClassPropertyValue), 0, 0, __ecereDestructor_ClassPropertyValue, module, 2, 1);
3183 if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + structSize_Instance)))->application == ((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + structSize_Instance)))->application && class)
3184 __ecereClass_ClassPropertyValue = class;
3185 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ProcessClassDefinitions", "void ProcessClassDefinitions(void)", ProcessClassDefinitions, module, 1);
3188 void __ecereUnregisterModule_pass1(struct __ecereNameSpace__ecere__com__Instance * module)
3193 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__List_TPL_ClassPropertyValue_;
3195 void __ecereCreateModuleInstances_pass1()
3197 classPropValues = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass___ecereNameSpace__ecere__com__List_TPL_ClassPropertyValue_);
3198 __ecereNameSpace__ecere__com__eInstance_IncRef(classPropValues);
3201 extern void __ecereNameSpace__ecere__com__eInstance_DecRef(struct __ecereNameSpace__ecere__com__Instance * instance);
3203 void __ecereDestroyModuleInstances_pass1()
3205 (__ecereNameSpace__ecere__com__eInstance_DecRef(classPropValues), classPropValues = 0);