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 struct __ecereNameSpace__ecere__com__Instance;
45 extern void * __ecereNameSpace__ecere__com__eSystem_New(unsigned int size);
47 extern void * __ecereNameSpace__ecere__com__eSystem_New0(unsigned int size);
49 extern void * __ecereNameSpace__ecere__com__eSystem_Renew(void * memory, unsigned int size);
51 extern void * __ecereNameSpace__ecere__com__eSystem_Renew0(void * memory, unsigned int size);
53 extern void __ecereNameSpace__ecere__com__eSystem_Delete(void * memory);
55 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__sys__BTNode;
57 struct __ecereNameSpace__ecere__sys__BTNode;
59 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__sys__BinaryTree;
61 struct __ecereNameSpace__ecere__sys__BinaryTree
63 struct __ecereNameSpace__ecere__sys__BTNode * root;
65 int (* CompareKey)(struct __ecereNameSpace__ecere__sys__BinaryTree * tree, uintptr_t a, uintptr_t b);
66 void (* FreeKey)(void * key);
67 } __attribute__ ((gcc_struct));
69 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__sys__OldList;
71 struct __ecereNameSpace__ecere__sys__OldList
78 } __attribute__ ((gcc_struct));
80 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__Method;
82 struct __ecereNameSpace__ecere__com__Method
85 struct __ecereNameSpace__ecere__com__Method * parent;
86 struct __ecereNameSpace__ecere__com__Method * left;
87 struct __ecereNameSpace__ecere__com__Method * right;
92 struct __ecereNameSpace__ecere__com__Class * _class;
94 const char * dataTypeString;
95 struct Type * dataType;
97 } __attribute__ ((gcc_struct));
99 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__Property;
101 struct __ecereNameSpace__ecere__com__Property
103 struct __ecereNameSpace__ecere__com__Property * prev;
104 struct __ecereNameSpace__ecere__com__Property * next;
106 unsigned int isProperty;
109 struct __ecereNameSpace__ecere__com__Class * _class;
110 const char * dataTypeString;
111 struct __ecereNameSpace__ecere__com__Class * dataTypeClass;
112 struct Type * dataType;
113 void (* Set)(void * , int);
114 int (* Get)(void * );
115 unsigned int (* IsSet)(void * );
119 unsigned int conversion;
120 unsigned int watcherOffset;
121 const char * category;
122 unsigned int compiled;
123 unsigned int selfWatchable;
124 unsigned int isWatchable;
125 } __attribute__ ((gcc_struct));
127 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_CodePosition;
135 } __attribute__ ((gcc_struct));
137 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Location;
141 struct CodePosition start;
142 struct CodePosition end;
143 } __attribute__ ((gcc_struct));
145 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Attrib;
149 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_ExtDecl;
153 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_ClassDefinition;
155 struct ClassDefinition
157 struct ClassDefinition * prev;
158 struct ClassDefinition * next;
160 struct Specifier * _class;
161 struct __ecereNameSpace__ecere__sys__OldList * baseSpecs;
162 struct __ecereNameSpace__ecere__sys__OldList * definitions;
163 struct Symbol * symbol;
164 struct Location blockStart;
165 struct Location nameLoc;
168 unsigned int deleteWatchable;
169 } __attribute__ ((gcc_struct));
171 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Context;
175 struct Context * parent;
176 struct __ecereNameSpace__ecere__sys__BinaryTree types;
177 struct __ecereNameSpace__ecere__sys__BinaryTree classes;
178 struct __ecereNameSpace__ecere__sys__BinaryTree symbols;
179 struct __ecereNameSpace__ecere__sys__BinaryTree structSymbols;
182 struct __ecereNameSpace__ecere__sys__BinaryTree templateTypes;
183 struct ClassDefinition * classDef;
184 unsigned int templateTypesOnly;
185 unsigned int hasNameSpace;
186 } __attribute__ ((gcc_struct));
188 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Instantiation;
190 struct Instantiation;
192 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Declaration;
196 struct Declaration * prev;
197 struct Declaration * next;
204 struct __ecereNameSpace__ecere__sys__OldList * specifiers;
205 struct __ecereNameSpace__ecere__sys__OldList * declarators;
206 } __attribute__ ((gcc_struct)) __anon1;
207 struct Instantiation * inst;
210 struct Identifier * id;
211 struct Expression * exp;
212 } __attribute__ ((gcc_struct)) __anon2;
213 } __attribute__ ((gcc_struct)) __anon1;
214 struct Specifier * extStorage;
215 struct Symbol * symbol;
217 } __attribute__ ((gcc_struct));
219 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Statement;
223 struct Statement * prev;
224 struct Statement * next;
229 struct __ecereNameSpace__ecere__sys__OldList * expressions;
232 struct Identifier * id;
233 struct Statement * stmt;
234 } __attribute__ ((gcc_struct)) labeled;
237 struct Expression * exp;
238 struct Statement * stmt;
239 } __attribute__ ((gcc_struct)) caseStmt;
242 struct __ecereNameSpace__ecere__sys__OldList * declarations;
243 struct __ecereNameSpace__ecere__sys__OldList * statements;
244 struct Context * context;
245 unsigned int isSwitch;
246 } __attribute__ ((gcc_struct)) compound;
249 struct __ecereNameSpace__ecere__sys__OldList * exp;
250 struct Statement * stmt;
251 struct Statement * elseStmt;
252 } __attribute__ ((gcc_struct)) ifStmt;
255 struct __ecereNameSpace__ecere__sys__OldList * exp;
256 struct Statement * stmt;
257 } __attribute__ ((gcc_struct)) switchStmt;
260 struct __ecereNameSpace__ecere__sys__OldList * exp;
261 struct Statement * stmt;
262 } __attribute__ ((gcc_struct)) whileStmt;
265 struct __ecereNameSpace__ecere__sys__OldList * exp;
266 struct Statement * stmt;
267 } __attribute__ ((gcc_struct)) doWhile;
270 struct Statement * init;
271 struct Statement * check;
272 struct __ecereNameSpace__ecere__sys__OldList * increment;
273 struct Statement * stmt;
274 } __attribute__ ((gcc_struct)) forStmt;
277 struct Identifier * id;
278 } __attribute__ ((gcc_struct)) gotoStmt;
281 struct Specifier * spec;
283 struct __ecereNameSpace__ecere__sys__OldList * inputFields;
284 struct __ecereNameSpace__ecere__sys__OldList * outputFields;
285 struct __ecereNameSpace__ecere__sys__OldList * clobberedFields;
286 } __attribute__ ((gcc_struct)) asmStmt;
289 struct Expression * watcher;
290 struct Expression * object;
291 struct __ecereNameSpace__ecere__sys__OldList * watches;
292 } __attribute__ ((gcc_struct)) _watch;
295 struct Identifier * id;
296 struct __ecereNameSpace__ecere__sys__OldList * exp;
297 struct __ecereNameSpace__ecere__sys__OldList * filter;
298 struct Statement * stmt;
299 } __attribute__ ((gcc_struct)) forEachStmt;
300 struct Declaration * decl;
301 } __attribute__ ((gcc_struct)) __anon1;
302 } __attribute__ ((gcc_struct));
304 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_TypeName;
308 struct TypeName * prev;
309 struct TypeName * next;
311 struct __ecereNameSpace__ecere__sys__OldList * qualifiers;
312 struct Declarator * declarator;
314 struct Expression * bitCount;
315 } __attribute__ ((gcc_struct));
317 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Initializer;
321 struct Initializer * prev;
322 struct Initializer * next;
327 struct Expression * exp;
328 struct __ecereNameSpace__ecere__sys__OldList * list;
329 } __attribute__ ((gcc_struct)) __anon1;
330 unsigned int isConstant;
331 struct Identifier * id;
332 } __attribute__ ((gcc_struct));
334 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__DataValue;
336 struct __ecereNameSpace__ecere__com__DataValue
351 } __attribute__ ((gcc_struct)) __anon1;
352 } __attribute__ ((gcc_struct));
354 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Expression;
358 struct Expression * prev;
359 struct Expression * next;
367 struct Identifier * identifier;
368 } __attribute__ ((gcc_struct)) __anon1;
369 struct Statement * compound;
370 struct Instantiation * instance;
374 unsigned int intlString;
375 } __attribute__ ((gcc_struct)) __anon2;
376 struct __ecereNameSpace__ecere__sys__OldList * list;
379 struct __ecereNameSpace__ecere__sys__OldList * specifiers;
380 struct Declarator * decl;
381 } __attribute__ ((gcc_struct)) _classExp;
384 struct Identifier * id;
385 } __attribute__ ((gcc_struct)) classData;
388 struct Expression * exp;
389 struct __ecereNameSpace__ecere__sys__OldList * arguments;
390 struct Location argLoc;
391 } __attribute__ ((gcc_struct)) call;
394 struct Expression * exp;
395 struct __ecereNameSpace__ecere__sys__OldList * index;
396 } __attribute__ ((gcc_struct)) index;
399 struct Expression * exp;
400 struct Identifier * member;
402 unsigned int thisPtr;
403 } __attribute__ ((gcc_struct)) member;
407 struct Expression * exp1;
408 struct Expression * exp2;
409 } __attribute__ ((gcc_struct)) op;
410 struct TypeName * typeName;
411 struct Specifier * _class;
414 struct TypeName * typeName;
415 struct Expression * exp;
416 } __attribute__ ((gcc_struct)) cast;
419 struct Expression * cond;
420 struct __ecereNameSpace__ecere__sys__OldList * exp;
421 struct Expression * elseExp;
422 } __attribute__ ((gcc_struct)) cond;
425 struct TypeName * typeName;
426 struct Expression * size;
427 } __attribute__ ((gcc_struct)) _new;
430 struct TypeName * typeName;
431 struct Expression * size;
432 struct Expression * exp;
433 } __attribute__ ((gcc_struct)) _renew;
437 struct Identifier * id;
438 } __attribute__ ((gcc_struct)) db;
441 struct Expression * ds;
442 struct Expression * name;
443 } __attribute__ ((gcc_struct)) dbopen;
446 struct TypeName * typeName;
447 struct Initializer * initializer;
448 } __attribute__ ((gcc_struct)) initializer;
451 struct Expression * exp;
452 struct TypeName * typeName;
453 } __attribute__ ((gcc_struct)) vaArg;
454 } __attribute__ ((gcc_struct)) __anon1;
455 unsigned int debugValue;
456 struct __ecereNameSpace__ecere__com__DataValue val;
458 unsigned int hasAddress;
459 struct Type * expType;
460 struct Type * destType;
463 unsigned int byReference;
464 unsigned int isConstant;
465 unsigned int addedThis;
466 unsigned int needCast;
467 unsigned int thisPtr;
468 unsigned int opDestType;
469 unsigned int needTemplateCast;
470 } __attribute__ ((gcc_struct));
472 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_TemplateDatatype;
474 struct TemplateDatatype
476 struct __ecereNameSpace__ecere__sys__OldList * specifiers;
477 struct Declarator * decl;
478 } __attribute__ ((gcc_struct));
480 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_TemplateArgument;
482 struct TemplateArgument
484 struct TemplateArgument * prev;
485 struct TemplateArgument * next;
487 struct Identifier * name;
491 struct Expression * expression;
492 struct Identifier * identifier;
493 struct TemplateDatatype * templateDatatype;
494 } __attribute__ ((gcc_struct)) __anon1;
495 } __attribute__ ((gcc_struct));
497 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_TemplateParameter;
499 struct TemplateParameter
501 struct TemplateParameter * prev;
502 struct TemplateParameter * next;
505 struct Identifier * identifier;
508 struct TemplateDatatype * dataType;
510 } __attribute__ ((gcc_struct)) __anon1;
511 struct TemplateArgument * defaultArgument;
512 const char * dataTypeString;
513 struct Type * baseType;
514 } __attribute__ ((gcc_struct));
516 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Specifier;
520 struct Specifier * prev;
521 struct Specifier * next;
529 struct ExtDecl * extDecl;
531 struct Symbol * symbol;
532 struct __ecereNameSpace__ecere__sys__OldList * templateArgs;
533 } __attribute__ ((gcc_struct)) __anon1;
536 struct Identifier * id;
537 struct __ecereNameSpace__ecere__sys__OldList * list;
538 struct __ecereNameSpace__ecere__sys__OldList * baseSpecs;
539 struct __ecereNameSpace__ecere__sys__OldList * definitions;
540 unsigned int addNameSpace;
541 struct Context * ctx;
542 struct ExtDecl * extDeclStruct;
543 } __attribute__ ((gcc_struct)) __anon2;
544 struct Expression * expression;
545 struct Specifier * _class;
546 struct TemplateParameter * templateParameter;
547 } __attribute__ ((gcc_struct)) __anon1;
548 } __attribute__ ((gcc_struct));
550 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Identifier;
554 struct Identifier * prev;
555 struct Identifier * next;
557 struct Symbol * classSym;
558 struct Specifier * _class;
560 struct Identifier * badID;
561 } __attribute__ ((gcc_struct));
563 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Pointer;
567 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Declarator;
571 struct Declarator * prev;
572 struct Declarator * next;
575 struct Symbol * symbol;
576 struct Declarator * declarator;
579 struct Identifier * identifier;
582 struct Expression * exp;
583 struct Expression * posExp;
584 struct Attrib * attrib;
585 } __attribute__ ((gcc_struct)) structDecl;
588 struct Expression * exp;
589 struct Specifier * enumClass;
590 } __attribute__ ((gcc_struct)) array;
593 struct __ecereNameSpace__ecere__sys__OldList * parameters;
594 } __attribute__ ((gcc_struct)) function;
597 struct Pointer * pointer;
598 } __attribute__ ((gcc_struct)) pointer;
601 struct ExtDecl * extended;
602 } __attribute__ ((gcc_struct)) extended;
603 } __attribute__ ((gcc_struct)) __anon1;
604 } __attribute__ ((gcc_struct));
606 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_FunctionDefinition;
608 struct FunctionDefinition
610 struct FunctionDefinition * prev;
611 struct FunctionDefinition * next;
613 struct __ecereNameSpace__ecere__sys__OldList * specifiers;
614 struct Declarator * declarator;
615 struct __ecereNameSpace__ecere__sys__OldList * declarations;
616 struct Statement * body;
617 struct __ecereNameSpace__ecere__com__Class * _class;
618 struct __ecereNameSpace__ecere__sys__OldList attached;
621 struct Symbol * propSet;
623 unsigned int propertyNoThis;
624 } __attribute__ ((gcc_struct));
626 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_DBTableDef;
630 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_External;
634 struct External * prev;
635 struct External * next;
638 struct Symbol * symbol;
641 struct FunctionDefinition * function;
642 struct ClassDefinition * _class;
643 struct Declaration * declaration;
645 struct Identifier * id;
646 struct DBTableDef * table;
647 } __attribute__ ((gcc_struct)) __anon1;
649 } __attribute__ ((gcc_struct));
651 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_ModuleImport;
655 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_ClassImport;
659 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Symbol;
664 struct Symbol * parent;
665 struct Symbol * left;
666 struct Symbol * right;
671 struct __ecereNameSpace__ecere__com__Method * method;
672 struct __ecereNameSpace__ecere__com__Property * _property;
673 struct __ecereNameSpace__ecere__com__Class * registered;
674 } __attribute__ ((gcc_struct)) __anon1;
681 struct External * pointerExternal;
682 struct External * structExternal;
683 } __attribute__ ((gcc_struct)) __anon1;
686 struct External * externalGet;
687 struct External * externalSet;
688 struct External * externalPtr;
689 struct External * externalIsSet;
690 } __attribute__ ((gcc_struct)) __anon2;
693 struct External * methodExternal;
694 struct External * methodCodeExternal;
695 } __attribute__ ((gcc_struct)) __anon3;
696 } __attribute__ ((gcc_struct)) __anon2;
697 unsigned int imported;
698 unsigned int declaredStructSym;
699 struct __ecereNameSpace__ecere__com__Class * _class;
700 unsigned int declaredStruct;
701 unsigned int needConstructor;
702 unsigned int needDestructor;
703 char * constructorName;
706 char * destructorName;
707 struct ModuleImport * module;
708 struct ClassImport * _import;
709 struct Location nameLoc;
710 unsigned int isParam;
711 unsigned int isRemote;
712 unsigned int isStruct;
713 unsigned int fireWatchersDone;
715 unsigned int classData;
716 unsigned int isStatic;
718 struct __ecereNameSpace__ecere__sys__OldList * templateParams;
719 struct __ecereNameSpace__ecere__sys__OldList templatedClasses;
720 struct Context * ctx;
722 struct Expression * propCategory;
723 } __attribute__ ((gcc_struct));
725 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Type;
734 struct Symbol * _class;
737 struct __ecereNameSpace__ecere__sys__OldList members;
739 } __attribute__ ((gcc_struct)) __anon1;
742 struct Type * returnType;
743 struct __ecereNameSpace__ecere__sys__OldList params;
744 struct Symbol * thisClass;
745 unsigned int staticMethod;
746 struct TemplateParameter * thisClassTemplate;
747 } __attribute__ ((gcc_struct)) __anon2;
750 struct __ecereNameSpace__ecere__com__Method * method;
751 struct __ecereNameSpace__ecere__com__Class * methodClass;
752 struct __ecereNameSpace__ecere__com__Class * usedClass;
753 } __attribute__ ((gcc_struct)) __anon3;
756 struct Type * arrayType;
758 struct Expression * arraySizeExp;
759 unsigned int freeExp;
760 struct Symbol * enumClass;
761 } __attribute__ ((gcc_struct)) __anon4;
763 struct TemplateParameter * templateParameter;
764 } __attribute__ ((gcc_struct)) __anon1;
774 unsigned int isSigned : 1;
775 unsigned int constant : 1;
776 unsigned int truth : 1;
777 unsigned int byReference : 1;
778 unsigned int extraParam : 1;
779 unsigned int directClassAccess : 1;
780 unsigned int computing : 1;
781 unsigned int keepCast : 1;
782 unsigned int passAsTemplate : 1;
783 unsigned int dllExport : 1;
784 unsigned int attrStdcall : 1;
785 unsigned int declaredWithStruct : 1;
786 unsigned int typedByReference : 1;
787 unsigned int casted : 1;
788 } __attribute__ ((gcc_struct));
790 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__Class;
792 struct __ecereNameSpace__ecere__com__Class
794 struct __ecereNameSpace__ecere__com__Class * prev;
795 struct __ecereNameSpace__ecere__com__Class * next;
801 int (* Constructor)(struct __ecereNameSpace__ecere__com__Instance *);
802 void (* Destructor)(struct __ecereNameSpace__ecere__com__Instance *);
805 struct __ecereNameSpace__ecere__com__Class * base;
806 struct __ecereNameSpace__ecere__sys__BinaryTree methods;
807 struct __ecereNameSpace__ecere__sys__BinaryTree members;
808 struct __ecereNameSpace__ecere__sys__BinaryTree prop;
809 struct __ecereNameSpace__ecere__sys__OldList membersAndProperties;
810 struct __ecereNameSpace__ecere__sys__BinaryTree classProperties;
811 struct __ecereNameSpace__ecere__sys__OldList derivatives;
815 struct __ecereNameSpace__ecere__com__Instance * module;
816 struct __ecereNameSpace__ecere__com__NameSpace * nameSpace;
817 const char * dataTypeString;
818 struct Type * dataType;
820 int defaultAlignment;
821 void (* Initialize)();
823 struct __ecereNameSpace__ecere__sys__OldList selfWatchers;
824 const char * designerClass;
825 unsigned int noExpansion;
826 const char * defaultProperty;
827 unsigned int comRedefinition;
830 unsigned int internalDecl;
832 unsigned int computeSize;
834 int destructionWatchOffset;
836 struct __ecereNameSpace__ecere__sys__OldList delayedCPValues;
837 int inheritanceAccess;
838 const char * fullName;
840 struct __ecereNameSpace__ecere__sys__OldList conversions;
841 struct __ecereNameSpace__ecere__sys__OldList templateParams;
842 struct __ecereNameSpace__ecere__com__ClassTemplateArgument * templateArgs;
843 struct __ecereNameSpace__ecere__com__Class * templateClass;
844 struct __ecereNameSpace__ecere__sys__OldList templatized;
846 unsigned int isInstanceClass;
847 unsigned int byValueSystemClass;
848 } __attribute__ ((gcc_struct));
850 extern long long __ecereNameSpace__ecere__com__eClass_GetProperty(struct __ecereNameSpace__ecere__com__Class * _class, const char * name);
852 extern void __ecereNameSpace__ecere__com__eClass_SetProperty(struct __ecereNameSpace__ecere__com__Class * _class, const char * name, long long value);
854 extern void __ecereNameSpace__ecere__com__eInstance_FireSelfWatchers(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property);
856 extern void __ecereNameSpace__ecere__com__eInstance_SetMethod(struct __ecereNameSpace__ecere__com__Instance * instance, const char * name, void * function);
858 extern void __ecereNameSpace__ecere__com__eInstance_IncRef(struct __ecereNameSpace__ecere__com__Instance * instance);
860 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);
862 extern void __ecereNameSpace__ecere__com__eInstance_Watch(void * instance, struct __ecereNameSpace__ecere__com__Property * _property, void * object, void (* callback)(void * , void * ));
864 extern void __ecereNameSpace__ecere__com__eInstance_FireWatchers(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property);
866 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__Instance;
868 struct __ecereNameSpace__ecere__com__Instance
871 struct __ecereNameSpace__ecere__com__Class * _class;
873 } __attribute__ ((gcc_struct));
875 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__DataMember;
877 struct __ecereNameSpace__ecere__com__DataMember
879 struct __ecereNameSpace__ecere__com__DataMember * prev;
880 struct __ecereNameSpace__ecere__com__DataMember * next;
882 unsigned int isProperty;
885 struct __ecereNameSpace__ecere__com__Class * _class;
886 const char * dataTypeString;
887 struct __ecereNameSpace__ecere__com__Class * dataTypeClass;
888 struct Type * dataType;
892 struct __ecereNameSpace__ecere__sys__OldList members;
893 struct __ecereNameSpace__ecere__sys__BinaryTree membersAlpha;
896 } __attribute__ ((gcc_struct));
898 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__SerialBuffer;
900 struct __ecereNameSpace__ecere__com__SerialBuffer
902 unsigned char * _buffer;
906 } __attribute__ ((gcc_struct));
908 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__ClassTemplateArgument;
910 struct __ecereNameSpace__ecere__com__ClassTemplateArgument
916 const char * dataTypeString;
917 struct __ecereNameSpace__ecere__com__Class * dataTypeClass;
918 } __attribute__ ((gcc_struct)) __anon1;
919 struct __ecereNameSpace__ecere__com__DataValue expression;
922 const char * memberString;
925 struct __ecereNameSpace__ecere__com__DataMember * member;
926 struct __ecereNameSpace__ecere__com__Property * prop;
927 struct __ecereNameSpace__ecere__com__Method * method;
928 } __attribute__ ((gcc_struct)) __anon1;
929 } __attribute__ ((gcc_struct)) __anon2;
930 } __attribute__ ((gcc_struct)) __anon1;
931 } __attribute__ ((gcc_struct));
935 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
938 typedef union YYSTYPE
943 struct Identifier * id;
944 struct Expression * exp;
945 struct Specifier * specifier;
946 struct __ecereNameSpace__ecere__sys__OldList * list;
947 struct Enumerator * enumerator;
948 struct Declarator * declarator;
949 struct Pointer * pointer;
950 struct Initializer * initializer;
951 struct InitDeclarator * initDeclarator;
952 struct TypeName * typeName;
953 struct Declaration * declaration;
954 struct Statement * stmt;
955 struct FunctionDefinition * function;
956 struct External * external;
957 struct Context * context;
958 struct AsmField * asmField;
959 struct Attrib * attrib;
960 struct ExtDecl * extDecl;
961 struct Attribute * attribute;
962 struct Instantiation * instance;
963 struct MembersInit * membersInit;
964 struct MemberInit * memberInit;
965 struct ClassFunction * classFunction;
966 struct ClassDefinition * _class;
967 struct ClassDef * classDef;
968 struct PropertyDef * prop;
970 struct Symbol * symbol;
971 struct PropertyWatch * propertyWatch;
972 struct TemplateParameter * templateParameter;
973 struct TemplateArgument * templateArgument;
974 struct TemplateDatatype * templateDatatype;
975 struct DBTableEntry * dbtableEntry;
976 struct DBIndexItem * dbindexItem;
977 struct DBTableDef * dbtableDef;
978 } __attribute__ ((gcc_struct)) YYSTYPE;
980 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Enumerator;
984 struct Enumerator * prev;
985 struct Enumerator * next;
987 struct Identifier * id;
988 struct Expression * exp;
989 } __attribute__ ((gcc_struct));
991 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_InitDeclarator;
993 struct InitDeclarator;
995 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_AsmField;
999 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Attribute;
1003 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_ClassFunction;
1005 struct ClassFunction
1007 struct ClassFunction * prev;
1008 struct ClassFunction * next;
1009 struct Location loc;
1010 struct __ecereNameSpace__ecere__sys__OldList * specifiers;
1011 struct Declarator * declarator;
1012 struct __ecereNameSpace__ecere__sys__OldList * declarations;
1013 struct Statement * body;
1014 struct __ecereNameSpace__ecere__com__Class * _class;
1015 struct __ecereNameSpace__ecere__sys__OldList attached;
1018 struct Symbol * propSet;
1019 unsigned int isVirtual;
1020 unsigned int isConstructor;
1021 unsigned int isDestructor;
1022 unsigned int dontMangle;
1025 } __attribute__ ((gcc_struct));
1027 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_MembersInit;
1031 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_MemberInit;
1035 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_PropertyDef;
1039 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_PropertyWatch;
1041 struct PropertyWatch
1043 struct PropertyWatch * prev;
1044 struct PropertyWatch * next;
1045 struct Location loc;
1046 struct Statement * compound;
1047 struct __ecereNameSpace__ecere__sys__OldList * properties;
1048 unsigned int deleteWatch;
1049 } __attribute__ ((gcc_struct));
1051 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_ClassDef;
1055 struct ClassDef * prev;
1056 struct ClassDef * next;
1057 struct Location loc;
1061 struct Declaration * decl;
1062 struct ClassFunction * function;
1063 struct __ecereNameSpace__ecere__sys__OldList * defProperties;
1064 struct PropertyDef * propertyDef;
1065 struct PropertyWatch * propertyWatch;
1067 struct Identifier * defaultProperty;
1070 struct Identifier * id;
1071 struct Initializer * initializer;
1072 } __attribute__ ((gcc_struct)) __anon1;
1073 } __attribute__ ((gcc_struct)) __anon1;
1076 } __attribute__ ((gcc_struct));
1078 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_DBTableEntry;
1080 struct DBTableEntry;
1082 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_DBIndexItem;
1086 extern YYSTYPE yylval;
1088 extern struct Location yylloc;
1090 static struct Statement * registerModuleBody;
1092 static struct External * registerModuleExternal;
1094 static struct Statement * unregisterModuleBody;
1096 static struct External * unregisterModuleExternal;
1098 extern int propWatcherID;
1100 unsigned int buildingECERECOM = 0x0;
1102 void SetBuildingEcereCom(unsigned int b)
1104 buildingECERECOM = b;
1107 unsigned int GetBuildingEcereCom()
1109 return buildingECERECOM;
1112 unsigned int buildingECERECOMModule = 0x0;
1114 void SetBuildingEcereComModule(unsigned int b)
1116 buildingECERECOMModule = b;
1119 unsigned int GetBuildingEcereComModule()
1121 return buildingECERECOMModule;
1124 extern unsigned int inCompiler;
1126 extern struct __ecereNameSpace__ecere__sys__OldList * MkList(void);
1128 extern struct Specifier * MkSpecifier(int specifier);
1130 extern void ReplaceThisClassSpecifiers(struct __ecereNameSpace__ecere__sys__OldList * specs, struct __ecereNameSpace__ecere__com__Class * _class);
1132 extern struct FunctionDefinition * _MkFunction(struct __ecereNameSpace__ecere__sys__OldList * specifiers, struct Declarator * declarator, struct __ecereNameSpace__ecere__sys__OldList * declarationList, unsigned int errorOnOmit);
1134 extern void ProcessFunctionBody(struct FunctionDefinition * func, struct Statement * body);
1136 extern struct External * MkExternalFunction(struct FunctionDefinition * function);
1138 extern void ProcessMethodType(struct __ecereNameSpace__ecere__com__Method * method);
1140 extern struct __ecereNameSpace__ecere__com__ClassTemplateArgument * FindTemplateArg(struct __ecereNameSpace__ecere__com__Class * _class, struct TemplateParameter * param);
1142 extern struct Type * ProcessTypeString(const char * string, unsigned int staticMethod);
1144 extern struct Symbol * FindClass(const char * name);
1146 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, unsigned int warnConst);
1148 extern void Compiler_Error(const char * format, ...);
1150 extern const char * __ecereNameSpace__ecere__GetTranslatedString(const char * name, const char * string, const char * stringAndContext);
1152 extern struct Declarator * GetFuncDecl(struct Declarator * decl);
1154 extern void FreeType(struct Type * type);
1156 extern void FreeExternal(struct External * external);
1158 extern struct Context * globalContext;
1160 extern struct __ecereNameSpace__ecere__sys__OldList * excludedSymbols;
1162 extern struct Declarator * CopyDeclarator(struct Declarator * declarator);
1164 extern struct __ecereNameSpace__ecere__sys__OldList * CopyList(struct __ecereNameSpace__ecere__sys__OldList * source, void * (* CopyFunction)(void * ));
1166 extern struct Specifier * CopySpecifier(struct Specifier * spec);
1168 unsigned int __ecereMethod___ecereNameSpace__ecere__sys__OldList_Insert(struct __ecereNameSpace__ecere__sys__OldList * this, void * prevItem, void * item);
1170 void __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Remove(struct __ecereNameSpace__ecere__sys__BinaryTree * this, struct __ecereNameSpace__ecere__sys__BTNode * node);
1172 void __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add(struct __ecereNameSpace__ecere__sys__OldList * this, void * item);
1174 struct External * ProcessClassFunction(struct __ecereNameSpace__ecere__com__Class * owningClass, struct ClassFunction * func, struct __ecereNameSpace__ecere__sys__OldList * defs, struct External * after, unsigned int makeStatic)
1176 struct Type * type = (((void *)0));
1177 struct Symbol * symbol;
1178 struct External * external = (((void *)0));
1180 if(defs && func->declarator)
1182 struct FunctionDefinition * function = (((void *)0));
1183 struct Symbol * propSymbol;
1184 int symid = func->declarator->symbol->id;
1185 int symidCode = func->declarator->symbol->idCode;
1189 if(!func->specifiers)
1190 func->specifiers = MkList();
1192 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Insert((&*func->specifiers), (((void *)0)), MkSpecifier(STATIC));
1194 propSymbol = func->declarator->symbol;
1195 ReplaceThisClassSpecifiers(func->specifiers, owningClass);
1196 if(propSymbol->__anon2.__anon2.externalGet == (struct External *)func)
1197 func->declarator->symbol = (((void *)0));
1198 else if(propSymbol->__anon2.__anon2.externalSet == (struct External *)func)
1200 func->declarator->symbol = (((void *)0));
1203 else if(propSymbol->__anon2.__anon2.externalIsSet == (struct External *)func)
1205 func->declarator->symbol = (((void *)0));
1209 function = _MkFunction(func->specifiers, func->declarator, (((void *)0)), 0x0);
1210 function->propSet = func->propSet;
1211 function->type = func->type;
1213 func->type->refCount++;
1214 ProcessFunctionBody(function, func->body);
1215 external = MkExternalFunction(function);
1216 external->symbol = func->declarator->symbol;
1217 external->__anon1.function->_class = func->_class;
1219 symbol = func->declarator->symbol;
1221 symbol->idCode = symidCode;
1222 if(!func->dontMangle)
1224 struct __ecereNameSpace__ecere__com__Method * method = func->declarator->symbol->__anon1.method;
1226 func->declarator->symbol->__anon2.__anon3.methodExternal = external;
1227 if(method && method->symbol)
1228 ((struct Symbol *)method->symbol)->__anon2.__anon3.methodCodeExternal = external;
1229 if(method && method->type == 1)
1231 struct Type * methodDataType;
1233 ProcessMethodType(method);
1234 methodDataType = method->dataType;
1235 type = symbol->type;
1236 if(!type->__anon1.__anon2.staticMethod && !type->__anon1.__anon2.thisClass && !type->__anon1.__anon2.thisClassTemplate)
1238 if(method->dataType->__anon1.__anon2.thisClassTemplate)
1240 if(owningClass->templateArgs)
1242 struct __ecereNameSpace__ecere__com__ClassTemplateArgument * arg = FindTemplateArg(owningClass, method->dataType->__anon1.__anon2.thisClassTemplate);
1244 type->byReference = method->dataType->byReference;
1245 methodDataType = ProcessTypeString(method->dataTypeString, 0x0);
1246 type->__anon1.__anon2.thisClass = methodDataType->__anon1.__anon2.thisClass = arg ? FindClass((*arg).__anon1.__anon1.dataTypeString) : (((void *)0));
1249 else if(method->dataType->__anon1.__anon2.staticMethod)
1250 type->__anon1.__anon2.staticMethod = 0x1;
1251 else if(method->dataType->__anon1.__anon2.thisClass)
1253 type->__anon1.__anon2.thisClass = method->dataType->__anon1.__anon2.thisClass;
1254 type->byReference = method->dataType->byReference;
1258 if(!owningClass->symbol)
1259 owningClass->symbol = FindClass(owningClass->fullName);
1260 type->__anon1.__anon2.thisClass = owningClass->symbol;
1261 type->extraParam = 0x1;
1265 if(!MatchTypes(type, methodDataType, (((void *)0)), owningClass, method->_class, 0x1, 0x1, 0x1, 0x0, 0x1))
1267 Compiler_Error(__ecereNameSpace__ecere__GetTranslatedString("ec", "Incompatible virtual function %s\n", (((void *)0))), method->name);
1271 struct Type * typeParam;
1272 struct Declarator * funcDecl = GetFuncDecl(func->declarator);
1274 if(funcDecl->__anon1.function.parameters && (*funcDecl->__anon1.function.parameters).first)
1276 struct TypeName * param = (*funcDecl->__anon1.function.parameters).first;
1278 for(typeParam = methodDataType->__anon1.__anon2.params.first; typeParam && param; typeParam = typeParam->next)
1280 if(typeParam->classObjectType)
1282 param->classObjectType = typeParam->classObjectType;
1283 if(param->declarator && param->declarator->symbol)
1284 param->declarator->symbol->type->classObjectType = typeParam->classObjectType;
1286 param = param ? param->next : (((void *)0));
1290 if(methodDataType != method->dataType)
1291 FreeType(methodDataType);
1295 type = symbol->type;
1296 if(!type->__anon1.__anon2.staticMethod && !type->__anon1.__anon2.thisClass)
1298 if(owningClass && !owningClass->symbol)
1299 owningClass->symbol = FindClass(owningClass->fullName);
1300 type->__anon1.__anon2.thisClass = owningClass ? FindClass(owningClass->fullName) : (((void *)0));
1306 if(symbol->type && !symbol->type->__anon1.__anon2.staticMethod && !symbol->type->__anon1.__anon2.thisClass)
1308 if(!owningClass->symbol)
1309 owningClass->symbol = FindClass(owningClass->fullName);
1310 symbol->type->__anon1.__anon2.thisClass = owningClass->symbol;
1312 if(propSymbol->__anon2.__anon2.externalSet == (struct External *)func && propSymbol->__anon1._property && propSymbol->__anon1._property->conversion)
1314 if(symbol->type->__anon1.__anon2.thisClass && symbol->type->classObjectType != 1)
1316 if(owningClass->type != 1)
1317 symbol->type->__anon1.__anon2.thisClass = (((void *)0));
1320 if(propSymbol->__anon2.__anon2.externalGet == (struct External *)func)
1322 propSymbol->__anon2.__anon2.externalGet = external;
1324 else if(propSymbol->__anon2.__anon2.externalSet == (struct External *)func)
1326 propSymbol->__anon2.__anon2.externalSet = external;
1328 else if(propSymbol->__anon2.__anon2.externalIsSet == (struct External *)func)
1330 propSymbol->__anon2.__anon2.externalIsSet = external;
1340 func->declarator = (((void *)0));
1341 func->specifiers = (((void *)0));
1342 func->body = (((void *)0));
1343 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Insert(defs, after, external);
1347 struct __ecereNameSpace__ecere__com__Method * method = func->declarator->symbol->__anon1.method;
1349 if(method && method->symbol)
1350 ((struct Symbol *)method->symbol)->__anon2.__anon3.methodCodeExternal = (((void *)0));
1351 if(func->declarator->symbol && func->declarator->symbol->__anon2.__anon3.methodExternal == external)
1352 func->declarator->symbol->__anon2.__anon3.methodExternal = (((void *)0));
1353 func->declarator = (((void *)0));
1354 func->specifiers = (((void *)0));
1355 FreeExternal(external);
1360 __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Remove(&globalContext->symbols, (struct __ecereNameSpace__ecere__sys__BTNode *)symbol);
1361 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*excludedSymbols), symbol);
1362 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Insert(defs, after, external);
1363 external->__anon1.function->declarator = CopyDeclarator(external->__anon1.function->declarator);
1364 external->__anon1.function->specifiers = CopyList(external->__anon1.function->specifiers, CopySpecifier);
1365 external->__anon1.function->body = (((void *)0));
1371 extern struct Statement * MkCompoundStmt(struct __ecereNameSpace__ecere__sys__OldList * declarations, struct __ecereNameSpace__ecere__sys__OldList * statements);
1373 extern void ListAdd(struct __ecereNameSpace__ecere__sys__OldList * list, void * item);
1375 extern struct Declaration * MkDeclaration(struct __ecereNameSpace__ecere__sys__OldList * specifiers, struct __ecereNameSpace__ecere__sys__OldList * initDeclarators);
1377 extern struct __ecereNameSpace__ecere__sys__OldList * MkListOne(void * item);
1379 extern struct Specifier * MkSpecifierName(const char * name);
1381 extern struct InitDeclarator * MkInitDeclarator(struct Declarator * declarator, struct Initializer * initializer);
1383 extern struct Declarator * MkDeclaratorIdentifier(struct Identifier * id);
1385 extern struct Identifier * MkIdentifier(const char * string);
1387 extern struct Specifier * MkSpecifierExtended(struct ExtDecl * extDecl);
1389 extern struct ExtDecl * MkExtDeclAttrib(struct Attrib * attr);
1391 extern struct Attrib * MkAttrib(int type, struct __ecereNameSpace__ecere__sys__OldList * attribs);
1393 extern struct Attribute * MkAttribute(char * attr, struct Expression * exp);
1395 extern char * __ecereNameSpace__ecere__sys__CopyString(const char * string);
1397 extern struct TypeName * MkTypeName(struct __ecereNameSpace__ecere__sys__OldList * qualifiers, struct Declarator * declarator);
1399 extern char * __ecereNameSpace__ecere__sys__GetLastDirectory(const char * string, char * output);
1401 extern const char * outputFile;
1403 extern unsigned int __ecereNameSpace__ecere__sys__StripExtension(char * string);
1405 extern void FixModuleName(char * moduleName);
1407 extern int sprintf(char * , const char * , ...);
1409 extern struct Declarator * MkDeclaratorFunction(struct Declarator * declarator, struct __ecereNameSpace__ecere__sys__OldList * parameters);
1411 extern struct __ecereNameSpace__ecere__sys__OldList * ast;
1413 extern void * __ecereNameSpace__ecere__com__eInstance_New(struct __ecereNameSpace__ecere__com__Class * _class);
1415 void CreateRegisterModuleBody()
1417 if(!registerModuleBody && inCompiler)
1419 char registerName[1024], moduleName[274];
1420 struct __ecereNameSpace__ecere__sys__OldList * specifiers;
1421 struct Declarator * declarator;
1422 struct TypeName * moduleParam;
1424 registerModuleBody = MkCompoundStmt(MkList(), MkList());
1425 registerModuleBody->__anon1.compound.context = __extension__ ({
1426 struct Context * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Context);
1428 __ecereInstance1->parent = globalContext, __ecereInstance1;
1430 ListAdd(registerModuleBody->__anon1.compound.declarations, MkDeclaration((specifiers = MkListOne(MkSpecifierName("ecere::com::Class"))), MkListOne(MkInitDeclarator(MkDeclaratorIdentifier(MkIdentifier("class")), (((void *)0))))));
1431 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*specifiers), MkSpecifierExtended(MkExtDeclAttrib(MkAttrib(ATTRIB, MkListOne(MkAttribute(__ecereNameSpace__ecere__sys__CopyString("unused"), (((void *)0))))))));
1432 specifiers = MkList();
1433 ListAdd(specifiers, MkSpecifier(VOID));
1434 moduleParam = MkTypeName(MkListOne(MkSpecifierName("Module")), MkDeclaratorIdentifier(MkIdentifier("module")));
1435 __ecereNameSpace__ecere__sys__GetLastDirectory(outputFile, moduleName);
1436 __ecereNameSpace__ecere__sys__StripExtension(moduleName);
1437 FixModuleName(moduleName);
1438 sprintf(registerName, "__ecereRegisterModule_%s", moduleName);
1439 declarator = MkDeclaratorFunction(MkDeclaratorIdentifier(MkIdentifier(registerName)), MkListOne(moduleParam));
1441 struct FunctionDefinition * function = _MkFunction(specifiers, declarator, (((void *)0)), 0x0);
1443 ProcessFunctionBody(function, registerModuleBody);
1444 function->declMode = 0;
1447 ListAdd(ast, (registerModuleExternal = MkExternalFunction(function)));
1450 if(!unregisterModuleBody && inCompiler)
1452 char registerName[1024], moduleName[274];
1453 struct __ecereNameSpace__ecere__sys__OldList * specifiers;
1454 struct Declarator * declarator;
1455 struct TypeName * moduleParam;
1457 unregisterModuleBody = MkCompoundStmt(MkList(), MkList());
1458 unregisterModuleBody->__anon1.compound.context = __extension__ ({
1459 struct Context * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Context);
1461 __ecereInstance1->parent = globalContext, __ecereInstance1;
1463 specifiers = MkList();
1464 ListAdd(specifiers, MkSpecifier(VOID));
1465 moduleParam = MkTypeName(MkListOne(MkSpecifierName("Module")), MkDeclaratorIdentifier(MkIdentifier("module")));
1466 __ecereNameSpace__ecere__sys__GetLastDirectory(outputFile, moduleName);
1467 __ecereNameSpace__ecere__sys__StripExtension(moduleName);
1468 FixModuleName(moduleName);
1469 sprintf(registerName, "__ecereUnregisterModule_%s", moduleName);
1470 declarator = MkDeclaratorFunction(MkDeclaratorIdentifier(MkIdentifier(registerName)), MkListOne(moduleParam));
1472 struct FunctionDefinition * function = _MkFunction(specifiers, declarator, (((void *)0)), 0x0);
1474 ProcessFunctionBody(function, unregisterModuleBody);
1475 function->declMode = 0;
1478 ListAdd(ast, (unregisterModuleExternal = MkExternalFunction(function)));
1483 extern struct Expression * MkExpIdentifier(struct Identifier * id);
1485 extern struct Expression * MkExpConstant(const char * string);
1487 extern char * QMkString(const char * source);
1489 extern struct Expression * MkExpString(const char * string);
1491 extern char * strcpy(char * , const char * );
1493 extern void FullClassNameCat(char * output, const char * className, unsigned int includeTemplateParams);
1495 extern char * strcat(char * , const char * );
1497 extern struct Statement * MkExpressionStmt(struct __ecereNameSpace__ecere__sys__OldList * expressions);
1499 extern struct Expression * MkExpOp(struct Expression * exp1, int op, struct Expression * exp2);
1501 extern struct Expression * MkExpCall(struct Expression * expression, struct __ecereNameSpace__ecere__sys__OldList * arguments);
1503 extern struct Expression * MkExpMember(struct Expression * expression, struct Identifier * member);
1505 extern struct Expression * MkExpCast(struct TypeName * typeName, struct Expression * expression);
1507 extern struct Declarator * MkDeclaratorPointer(struct Pointer * pointer, struct Declarator * declarator);
1509 extern struct Pointer * MkPointer(struct __ecereNameSpace__ecere__sys__OldList * qualifiers, struct Pointer * pointer);
1511 extern struct Expression * CopyExpression(struct Expression * exp);
1513 extern struct Statement * MkIfStmt(struct __ecereNameSpace__ecere__sys__OldList * exp, struct Statement * statement, struct Statement * elseStmt);
1515 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__BitMember;
1517 struct __ecereNameSpace__ecere__com__BitMember
1519 struct __ecereNameSpace__ecere__com__BitMember * prev;
1520 struct __ecereNameSpace__ecere__com__BitMember * next;
1522 unsigned int isProperty;
1525 struct __ecereNameSpace__ecere__com__Class * _class;
1526 const char * dataTypeString;
1527 struct __ecereNameSpace__ecere__com__Class * dataTypeClass;
1528 struct Type * dataType;
1533 } __attribute__ ((gcc_struct));
1535 extern int ComputeTypeSize(struct Type * type);
1537 extern struct Context * curContext;
1539 extern struct Context * PushContext(void);
1541 extern struct Initializer * MkInitializerAssignment(struct Expression * exp);
1543 extern void PopContext(struct Context * ctx);
1545 extern struct Expression * MkExpCondition(struct Expression * cond, struct __ecereNameSpace__ecere__sys__OldList * expressions, struct Expression * elseExp);
1547 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__ClassProperty;
1549 struct __ecereNameSpace__ecere__com__ClassProperty
1552 struct __ecereNameSpace__ecere__com__ClassProperty * parent;
1553 struct __ecereNameSpace__ecere__com__ClassProperty * left;
1554 struct __ecereNameSpace__ecere__com__ClassProperty * right;
1556 void (* Set)(struct __ecereNameSpace__ecere__com__Class *, long long);
1557 long long (* Get)(struct __ecereNameSpace__ecere__com__Class *);
1558 const char * dataTypeString;
1559 struct Type * dataType;
1560 unsigned int constant;
1561 } __attribute__ ((gcc_struct));
1563 struct __ecereNameSpace__ecere__sys__BTNode * __ecereProp___ecereNameSpace__ecere__sys__BinaryTree_Get_first(struct __ecereNameSpace__ecere__sys__BinaryTree * this);
1565 extern struct __ecereNameSpace__ecere__com__Property ** __ecereProp___ecereNameSpace__ecere__sys__BinaryTree_first;
1567 struct __ecereNameSpace__ecere__sys__BTNode * __ecereProp___ecereNameSpace__ecere__sys__BTNode_Get_next(struct __ecereNameSpace__ecere__sys__BTNode * this);
1569 extern struct __ecereNameSpace__ecere__com__Property ** __ecereProp___ecereNameSpace__ecere__sys__BTNode_next;
1571 void RegisterMembersAndProperties(struct __ecereNameSpace__ecere__com__Class * regClass, unsigned int isMember, const char * className, struct Statement * statement)
1573 struct __ecereNameSpace__ecere__com__DataMember * dataMember = isMember ? (struct __ecereNameSpace__ecere__com__DataMember *)regClass : (((void *)0));
1574 struct __ecereNameSpace__ecere__com__DataMember * member;
1575 struct __ecereNameSpace__ecere__com__Property * prop;
1576 struct Expression * exp;
1577 struct Statement * stmt;
1578 char dataMemberSize[16];
1579 unsigned int lastOffset = 0;
1581 unsigned int privateMembers = 0x0;
1583 sprintf(dataMemberSize, "%d", (int)sizeof(struct __ecereNameSpace__ecere__com__DataMember *));
1586 for(prop = regClass->conversions.first; prop; prop = prop->next)
1588 struct __ecereNameSpace__ecere__sys__OldList * args = MkList();
1591 ListAdd(args, MkExpIdentifier(MkIdentifier(className)));
1592 ListAdd(args, MkExpConstant("0"));
1594 char * string = QMkString(prop->dataTypeString);
1596 ListAdd(args, MkExpString(string));
1597 (__ecereNameSpace__ecere__com__eSystem_Delete(string), string = 0);
1601 strcpy(name, "__ecereProp_");
1602 FullClassNameCat(name, regClass->fullName, 0x0);
1603 strcat(name, "_Set_");
1604 FullClassNameCat(name, prop->name, 0x1);
1605 ListAdd(args, MkExpIdentifier(MkIdentifier(name)));
1608 ListAdd(args, MkExpConstant("0"));
1611 strcpy(name, "__ecereProp_");
1612 FullClassNameCat(name, regClass->fullName, 0x0);
1613 strcat(name, "_Get_");
1614 FullClassNameCat(name, prop->name, 0x1);
1615 ListAdd(args, MkExpIdentifier(MkIdentifier(name)));
1618 ListAdd(args, MkExpConstant("0"));
1619 switch(prop->memberAccess)
1622 ListAdd(args, MkExpIdentifier(MkIdentifier("staticAccess")));
1625 ListAdd(args, MkExpIdentifier(MkIdentifier("privateAccess")));
1629 ListAdd(args, MkExpIdentifier(MkIdentifier("publicAccess")));
1632 strcpy(name, "__ecereProp_");
1633 FullClassNameCat(name, regClass->fullName, 0x0);
1635 FullClassNameCat(name, prop->name, 0x1);
1636 stmt = MkExpressionStmt(MkListOne(MkExpOp(MkExpIdentifier(MkIdentifier(name)), '=', MkExpCall(MkExpIdentifier(MkIdentifier("eClass_AddProperty")), args))));
1637 ListAdd(registerModuleBody->__anon1.compound.statements, stmt);
1640 for(member = isMember ? dataMember->members.first : regClass->membersAndProperties.first; member; member = member->next)
1642 if(member->isProperty)
1644 prop = (struct __ecereNameSpace__ecere__com__Property *)member;
1646 struct __ecereNameSpace__ecere__sys__OldList * args = MkList();
1647 char name[1024], nameM[1024];
1648 char * string = QMkString(prop->name);
1650 ListAdd(args, MkExpIdentifier(MkIdentifier(className)));
1651 ListAdd(args, MkExpString(string));
1652 (__ecereNameSpace__ecere__com__eSystem_Delete(string), string = 0);
1654 char * string = QMkString(prop->dataTypeString);
1656 ListAdd(args, MkExpString(string));
1657 (__ecereNameSpace__ecere__com__eSystem_Delete(string), string = 0);
1661 strcpy(name, "__ecereProp_");
1662 FullClassNameCat(name, regClass->fullName, 0x0);
1663 strcat(name, "_Set_");
1664 FullClassNameCat(name, prop->name, 0x1);
1665 ListAdd(args, MkExpIdentifier(MkIdentifier(name)));
1668 ListAdd(args, MkExpConstant("0"));
1671 strcpy(name, "__ecereProp_");
1672 FullClassNameCat(name, regClass->fullName, 0x0);
1673 strcat(name, "_Get_");
1674 FullClassNameCat(name, prop->name, 0x1);
1675 ListAdd(args, MkExpIdentifier(MkIdentifier(name)));
1678 ListAdd(args, MkExpConstant("0"));
1679 switch(prop->memberAccess)
1682 ListAdd(args, MkExpIdentifier(MkIdentifier("staticAccess")));
1685 ListAdd(args, MkExpIdentifier(MkIdentifier("privateAccess")));
1689 ListAdd(args, MkExpIdentifier(MkIdentifier("publicAccess")));
1692 strcpy(name, "__ecereProp_");
1693 FullClassNameCat(name, regClass->fullName, 0x0);
1695 FullClassNameCat(name, prop->name, 0x1);
1696 strcpy(nameM, "__ecerePropM_");
1697 FullClassNameCat(nameM, regClass->fullName, 0x0);
1699 FullClassNameCat(nameM, prop->name, 0x1);
1700 if(prop->dataTypeString)
1702 stmt = MkExpressionStmt(MkListOne(MkExpOp(MkExpIdentifier(MkIdentifier(nameM)), '=', MkExpCall(MkExpIdentifier(MkIdentifier("eClass_AddProperty")), args))));
1706 stmt = MkExpressionStmt(MkListOne(MkExpCall(MkExpIdentifier(MkIdentifier("eClass_AddProperty")), args)));
1708 ListAdd(registerModuleBody->__anon1.compound.statements, stmt);
1713 strcpy(name, "__ecereProp_");
1714 FullClassNameCat(name, regClass->fullName, 0x1);
1715 strcat(name, "_IsSet_");
1716 FullClassNameCat(name, prop->name, 0x0);
1717 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))))));
1718 ListAdd(registerModuleBody->__anon1.compound.statements, stmt);
1720 if(prop->symbol && ((struct Symbol *)prop->symbol)->propCategory)
1722 stmt = MkExpressionStmt(MkListOne(MkExpOp(MkExpMember(MkExpIdentifier(MkIdentifier(nameM)), MkIdentifier("category")), '=', CopyExpression(((struct Symbol *)prop->symbol)->propCategory))));
1723 ListAdd(registerModuleBody->__anon1.compound.statements, stmt);
1725 if(prop->dataTypeString)
1727 struct __ecereNameSpace__ecere__sys__OldList * list = MkList();
1729 ListAdd(list, MkExpOp(MkExpIdentifier(MkIdentifier(name)), '=', MkExpIdentifier(MkIdentifier(nameM))));
1730 ListAdd(list, MkExpOp(MkExpIdentifier(MkIdentifier(nameM)), '=', MkExpCast(MkTypeName(MkListOne(MkSpecifier(VOID)), MkDeclaratorPointer(MkPointer((((void *)0)), (((void *)0))), (((void *)0)))), MkExpConstant("0"))));
1731 stmt = MkIfStmt(MkListOne(MkExpOp(MkExpMember(MkExpIdentifier(MkIdentifier("module")), MkIdentifier("application")), EQ_OP, MkExpMember(MkExpIdentifier(MkIdentifier("__thisModule")), MkIdentifier("application")))), MkExpressionStmt(list), (((void *)0)));
1732 ListAdd(registerModuleBody->__anon1.compound.statements, stmt);
1733 stmt = MkExpressionStmt(MkListOne(MkExpOp(MkExpIdentifier(MkIdentifier(nameM)), '=', MkExpCast(MkTypeName(MkListOne(MkSpecifier(VOID)), MkDeclaratorPointer(MkPointer((((void *)0)), (((void *)0))), (((void *)0)))), MkExpConstant("0")))));
1734 ListAdd(unregisterModuleBody->__anon1.compound.statements, stmt);
1738 else if(member->type == 0 && !isMember && regClass->type == 2)
1740 struct __ecereNameSpace__ecere__com__BitMember * bitMember = (struct __ecereNameSpace__ecere__com__BitMember *)member;
1741 struct __ecereNameSpace__ecere__sys__OldList * args = MkList();
1743 ListAdd(args, MkExpIdentifier(MkIdentifier(className)));
1745 char * string = QMkString(bitMember->name);
1747 ListAdd(args, MkExpString(string));
1748 (__ecereNameSpace__ecere__com__eSystem_Delete(string), string = 0);
1751 char * string = QMkString(bitMember->dataTypeString);
1753 ListAdd(args, MkExpString(string));
1754 (__ecereNameSpace__ecere__com__eSystem_Delete(string), string = 0);
1759 sprintf(string, "%d", bitMember->size);
1760 ListAdd(args, (exp = MkExpConstant(string)));
1765 sprintf(string, "%d", bitMember->pos);
1766 ListAdd(args, (exp = MkExpConstant(string)));
1768 switch(member->memberAccess)
1771 ListAdd(args, MkExpIdentifier(MkIdentifier("staticAccess")));
1774 ListAdd(args, MkExpIdentifier(MkIdentifier("privateAccess")));
1778 ListAdd(args, MkExpIdentifier(MkIdentifier("publicAccess")));
1781 stmt = MkExpressionStmt(MkListOne(MkExpCall(MkExpIdentifier(MkIdentifier("eClass_AddBitMember")), args)));
1782 ListAdd(statement->__anon1.compound.statements, stmt);
1784 else if(member->memberAccess == 1 || (member->type == 0 && !member->dataTypeString))
1786 struct __ecereNameSpace__ecere__sys__OldList * args;
1790 unsigned int offset = member->offset - lastOffset;
1793 ListAdd(args, MkExpIdentifier(MkIdentifier(className)));
1797 sprintf(string, "\"__ecerePrivateData%d\"", privateID++);
1798 ListAdd(args, MkExpString(string));
1803 sprintf(string, "\"byte[%d]\"", offset);
1804 ListAdd(args, MkExpString(string));
1809 sprintf(string, "%d", offset);
1810 ListAdd(args, (exp = MkExpConstant(string)));
1812 ListAdd(args, (exp = MkExpConstant("1")));
1813 ListAdd(args, MkExpIdentifier(MkIdentifier("privateAccess")));
1814 stmt = MkExpressionStmt(MkListOne(MkExpCall(MkExpIdentifier(MkIdentifier(isMember ? "eMember_AddDataMember" : "eClass_AddDataMember")), args)));
1815 ListAdd(statement->__anon1.compound.statements, stmt);
1816 privateMembers = 0x0;
1818 if(member->type == 0)
1820 if(!member->dataType)
1821 member->dataType = ProcessTypeString(member->dataTypeString, 0x0);
1822 ComputeTypeSize(member->dataType);
1824 ListAdd(args, MkExpIdentifier(MkIdentifier(className)));
1826 char * string = QMkString(member->name);
1828 ListAdd(args, MkExpString(string));
1829 (__ecereNameSpace__ecere__com__eSystem_Delete(string), string = 0);
1832 char * string = QMkString(member->dataTypeString);
1834 ListAdd(args, MkExpString(string));
1835 (__ecereNameSpace__ecere__com__eSystem_Delete(string), string = 0);
1840 sprintf(string, "%d", member->dataType->size);
1841 ListAdd(args, (exp = MkExpConstant(string)));
1846 sprintf(string, "%d", member->dataType->alignment);
1847 ListAdd(args, (exp = MkExpConstant(string)));
1849 switch(member->memberAccess)
1852 ListAdd(args, MkExpIdentifier(MkIdentifier("staticAccess")));
1855 ListAdd(args, MkExpIdentifier(MkIdentifier("privateAccess")));
1859 ListAdd(args, MkExpIdentifier(MkIdentifier("publicAccess")));
1862 stmt = MkExpressionStmt(MkListOne(MkExpCall(MkExpIdentifier(MkIdentifier(isMember ? "eMember_AddDataMember" : "eClass_AddDataMember")), args)));
1863 ListAdd(statement->__anon1.compound.statements, stmt);
1864 lastOffset = member->offset + member->dataType->size;
1868 static int memberCount = 0;
1869 struct Context * context;
1870 struct Statement * compound;
1871 char memberName[256];
1873 sprintf(memberName, "dataMember%d", memberCount);
1875 curContext = statement->__anon1.compound.context;
1876 context = PushContext();
1877 args = MkListOne(MkExpIdentifier(MkIdentifier((member->type == 1) ? "unionMember" : "structMember")));
1878 switch(member->memberAccess)
1881 ListAdd(args, MkExpIdentifier(MkIdentifier("staticAccess")));
1884 ListAdd(args, MkExpIdentifier(MkIdentifier("privateAccess")));
1888 ListAdd(args, MkExpIdentifier(MkIdentifier("publicAccess")));
1891 compound = MkCompoundStmt(MkListOne(MkDeclaration(MkListOne(MkSpecifierName("DataMember")), MkListOne(MkInitDeclarator(MkDeclaratorIdentifier(MkIdentifier(memberName)), MkInitializerAssignment(MkExpCall(MkExpIdentifier(MkIdentifier("eMember_New")), args)))))), MkList());
1892 compound->__anon1.compound.context = context;
1894 ListAdd(args, MkExpIdentifier(MkIdentifier(className)));
1895 ListAdd(args, MkExpIdentifier(MkIdentifier(memberName)));
1896 RegisterMembersAndProperties((struct __ecereNameSpace__ecere__com__Class *)member, 0x1, memberName, compound);
1898 stmt = MkExpressionStmt(MkListOne(MkExpCall(MkExpIdentifier(MkIdentifier("eMember_AddMember")), args)));
1900 stmt = MkExpressionStmt(MkListOne(MkExpCall(MkExpIdentifier(MkIdentifier("eClass_AddMember")), args)));
1901 ListAdd(compound->__anon1.compound.statements, stmt);
1902 PopContext(context);
1903 ListAdd(statement->__anon1.compound.statements, compound);
1905 lastOffset = member->offset + member->memberOffset;
1909 privateMembers = 0x1;
1913 struct __ecereNameSpace__ecere__com__ClassProperty * classProperty;
1915 for(prop = regClass->membersAndProperties.first; prop; prop = prop->next)
1917 if(prop->isProperty && prop->isWatchable)
1919 struct __ecereNameSpace__ecere__sys__OldList * args;
1920 char name[1024], nameM[1024];
1922 strcpy(name, "__ecereProp_");
1923 FullClassNameCat(name, regClass->fullName, 0x1);
1925 FullClassNameCat(name, prop->name, 0x0);
1926 strcpy(nameM, "__ecerePropM_");
1927 FullClassNameCat(nameM, regClass->fullName, 0x1);
1929 FullClassNameCat(nameM, prop->name, 0x0);
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->__anon1.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 ListAdd(args, MkExpIdentifier(MkIdentifier(name)));
1959 ListAdd(args, MkExpConstant("0"));
1960 if(classProperty->Get)
1962 strcpy(name, "__ecereClassProp_");
1963 FullClassNameCat(name, regClass->fullName, 0x1);
1964 strcat(name, "_Get_");
1965 strcat(name, classProperty->name);
1966 ListAdd(args, MkExpIdentifier(MkIdentifier(name)));
1969 ListAdd(args, MkExpConstant("0"));
1970 stmt = MkExpressionStmt(MkListOne(MkExpCall(MkExpIdentifier(MkIdentifier("eClass_AddClassProperty")), args)));
1971 ListAdd(registerModuleBody->__anon1.compound.statements, stmt);
1976 extern struct External * curExternal;
1978 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__NameSpace;
1980 struct __ecereNameSpace__ecere__com__NameSpace
1983 struct __ecereNameSpace__ecere__com__NameSpace * btParent;
1984 struct __ecereNameSpace__ecere__com__NameSpace * left;
1985 struct __ecereNameSpace__ecere__com__NameSpace * right;
1987 struct __ecereNameSpace__ecere__com__NameSpace * parent;
1988 struct __ecereNameSpace__ecere__sys__BinaryTree nameSpaces;
1989 struct __ecereNameSpace__ecere__sys__BinaryTree classes;
1990 struct __ecereNameSpace__ecere__sys__BinaryTree defines;
1991 struct __ecereNameSpace__ecere__sys__BinaryTree functions;
1992 } __attribute__ ((gcc_struct));
1994 void GetNameSpaceString(struct __ecereNameSpace__ecere__com__NameSpace * ns, char * string)
1997 GetNameSpaceString(ns->parent, string);
2000 strcat(string, ns->name);
2001 strcat(string, "::");
2005 extern unsigned int parsingType;
2007 extern void ProcessExpressionType(struct Expression * exp);
2009 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__sys__NamedLink;
2011 struct __ecereNameSpace__ecere__sys__NamedLink
2013 struct __ecereNameSpace__ecere__sys__NamedLink * prev;
2014 struct __ecereNameSpace__ecere__sys__NamedLink * next;
2017 } __attribute__ ((gcc_struct));
2019 extern int strcmp(const char * , const char * );
2021 extern void FreeExpContents(struct Expression * exp);
2023 extern char * PrintUInt(uint64 result);
2025 extern void ComputeExpression(struct Expression * exp);
2027 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_OpTable;
2031 unsigned int (* Add)(struct Expression *, struct Operand *, struct Operand *);
2032 unsigned int (* Sub)(struct Expression *, struct Operand *, struct Operand *);
2033 unsigned int (* Mul)(struct Expression *, struct Operand *, struct Operand *);
2034 unsigned int (* Div)(struct Expression *, struct Operand *, struct Operand *);
2035 unsigned int (* Mod)(struct Expression *, struct Operand *, struct Operand *);
2036 unsigned int (* Neg)(struct Expression *, struct Operand *);
2037 unsigned int (* Inc)(struct Expression *, struct Operand *);
2038 unsigned int (* Dec)(struct Expression *, struct Operand *);
2039 unsigned int (* Asign)(struct Expression *, struct Operand *, struct Operand *);
2040 unsigned int (* AddAsign)(struct Expression *, struct Operand *, struct Operand *);
2041 unsigned int (* SubAsign)(struct Expression *, struct Operand *, struct Operand *);
2042 unsigned int (* MulAsign)(struct Expression *, struct Operand *, struct Operand *);
2043 unsigned int (* DivAsign)(struct Expression *, struct Operand *, struct Operand *);
2044 unsigned int (* ModAsign)(struct Expression *, struct Operand *, struct Operand *);
2045 unsigned int (* BitAnd)(struct Expression *, struct Operand *, struct Operand *);
2046 unsigned int (* BitOr)(struct Expression *, struct Operand *, struct Operand *);
2047 unsigned int (* BitXor)(struct Expression *, struct Operand *, struct Operand *);
2048 unsigned int (* LShift)(struct Expression *, struct Operand *, struct Operand *);
2049 unsigned int (* RShift)(struct Expression *, struct Operand *, struct Operand *);
2050 unsigned int (* BitNot)(struct Expression *, struct Operand *);
2051 unsigned int (* AndAsign)(struct Expression *, struct Operand *, struct Operand *);
2052 unsigned int (* OrAsign)(struct Expression *, struct Operand *, struct Operand *);
2053 unsigned int (* XorAsign)(struct Expression *, struct Operand *, struct Operand *);
2054 unsigned int (* LShiftAsign)(struct Expression *, struct Operand *, struct Operand *);
2055 unsigned int (* RShiftAsign)(struct Expression *, struct Operand *, struct Operand *);
2056 unsigned int (* Not)(struct Expression *, struct Operand *);
2057 unsigned int (* Equ)(struct Expression *, struct Operand *, struct Operand *);
2058 unsigned int (* Nqu)(struct Expression *, struct Operand *, struct Operand *);
2059 unsigned int (* And)(struct Expression *, struct Operand *, struct Operand *);
2060 unsigned int (* Or)(struct Expression *, struct Operand *, struct Operand *);
2061 unsigned int (* Grt)(struct Expression *, struct Operand *, struct Operand *);
2062 unsigned int (* Sma)(struct Expression *, struct Operand *, struct Operand *);
2063 unsigned int (* GrtEqu)(struct Expression *, struct Operand *, struct Operand *);
2064 unsigned int (* SmaEqu)(struct Expression *, struct Operand *, struct Operand *);
2065 unsigned int (* Cond)(struct Expression *, struct Operand *, struct Operand *, struct Operand *);
2066 } __attribute__ ((gcc_struct));
2068 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Operand;
2074 unsigned int ptrSize;
2087 } __attribute__ ((gcc_struct)) __anon1;
2089 } __attribute__ ((gcc_struct));
2091 extern struct Operand GetOperand(struct Expression * exp);
2093 extern void __ecereNameSpace__ecere__com__eEnum_AddFixedValue(struct __ecereNameSpace__ecere__com__Class * _class, const char * string, int value);
2095 extern int __ecereNameSpace__ecere__com__eEnum_AddValue(struct __ecereNameSpace__ecere__com__Class * _class, const char * string);
2097 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__sys__OldLink;
2099 struct __ecereNameSpace__ecere__sys__OldLink
2101 struct __ecereNameSpace__ecere__sys__OldLink * prev;
2102 struct __ecereNameSpace__ecere__sys__OldLink * next;
2104 } __attribute__ ((gcc_struct));
2106 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__EnumClassData;
2108 struct __ecereNameSpace__ecere__com__EnumClassData
2110 struct __ecereNameSpace__ecere__sys__OldList values;
2112 } __attribute__ ((gcc_struct));
2114 extern struct ClassFunction * MkClassFunction(struct __ecereNameSpace__ecere__sys__OldList * specifiers, struct Specifier * _class, struct Declarator * decl, struct __ecereNameSpace__ecere__sys__OldList * declList);
2116 extern void ProcessClassFunctionBody(struct ClassFunction * func, struct Statement * body);
2118 extern struct External * MkExternalDeclaration(struct Declaration * declaration);
2120 extern struct ClassDef * MkClassDefFunction(struct ClassFunction * function);
2122 extern struct __ecereNameSpace__ecere__com__Property * __ecereNameSpace__ecere__com__eClass_FindProperty(struct __ecereNameSpace__ecere__com__Class * _class, const char * name, struct __ecereNameSpace__ecere__com__Instance * module);
2124 extern struct __ecereNameSpace__ecere__com__Instance * privateModule;
2126 extern void FreePropertyWatch(struct PropertyWatch * watcher);
2128 extern const char * sourceFile;
2130 extern void __ecereNameSpace__ecere__sys__ChangeCh(char * string, char ch1, char ch2);
2132 extern struct Type * ProcessType(struct __ecereNameSpace__ecere__sys__OldList * specs, struct Declarator * decl);
2134 extern void PrintType(struct Type * type, char * string, unsigned int printName, unsigned int fullName);
2136 extern struct Expression * MkExpTypeSize(struct TypeName * typeName);
2138 extern struct Specifier * MkStructOrUnion(int type, struct Identifier * id, struct __ecereNameSpace__ecere__sys__OldList * definitions);
2140 extern unsigned int DummyMethod(void);
2142 extern struct Identifier * GetDeclId(struct Declarator * decl);
2144 extern void DeclareMethod(struct __ecereNameSpace__ecere__com__Method * method, const char * name);
2146 extern struct __ecereNameSpace__ecere__com__Class * __ecereNameSpace__ecere__com__eSystem_FindClass(struct __ecereNameSpace__ecere__com__Instance * module, const 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->__anon1.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->__anon1._class = symbol;
2207 ProcessExpressionType(e->exp);
2209 if(e->exp->type == 0 && e->exp->expType && e->exp->__anon1.__anon1.identifier && e->exp->__anon1.__anon1.identifier->string && e->exp->expType->kind == 15)
2211 struct __ecereNameSpace__ecere__sys__NamedLink * l;
2212 char * string = e->exp->__anon1.__anon1.identifier->string;
2214 for(l = e->exp->expType->__anon1.__anon1.members.first; l; l = l->next)
2216 if(!strcmp(l->name, string))
2220 FreeExpContents(e->exp);
2222 e->exp->__anon1.__anon1.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);
2240 value = op.__anon1.c;
2243 value = op.__anon1.s;
2246 value = op.__anon1.i;
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->__anon1.propertyWatch)
2281 struct PropertyWatch * propWatch = def->__anon1.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->__anon1.declaration = decl;
2316 if(decl->symbol && !decl->symbol->__anon2.__anon3.methodExternal)
2318 decl->symbol->__anon2.__anon3.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->__anon1.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->__anon1.propertyWatch);
2347 def->__anon1.propertyWatch = (struct PropertyWatch *)stmt;
2351 for(def = definitions->first; def; def = def->next)
2355 ProcessClassFunction(regClass, def->__anon1.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 const 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->__anon1._class && baseType->__anon1._class->isStatic)
2420 __ecereNameSpace__ecere__sys__GetLastDirectory(sourceFile, baseName);
2421 __ecereNameSpace__ecere__sys__ChangeCh(baseName, '.', '_');
2422 strcat(baseName, "}");
2423 strcat(baseName, baseType->__anon1._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)->__anon1.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->__anon1.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->__anon1.compound.statements, stmt);
2516 if(external && external->type == 2 && external->__anon1._class->deleteWatchable)
2518 args = MkListOne(MkExpIdentifier(MkIdentifier("class")));
2519 stmt = MkExpressionStmt(MkListOne(MkExpCall(MkExpIdentifier(MkIdentifier("eClass_DestructionWatchable")), args)));
2520 ListAdd(registerModuleBody->__anon1.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->__anon2.__anon3.methodExternal)
2533 struct External * external = method->__anon2.__anon3.methodExternal;
2534 struct __ecereNameSpace__ecere__sys__OldList * args = MkList();
2535 struct Identifier * id = external->__anon1.function ? GetDeclId(external->__anon1.function->declarator) : (((void *)0));
2537 ListAdd(args, MkExpIdentifier(MkIdentifier("class")));
2539 char * string = QMkString(method->__anon1.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->__anon1.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)->__anon2.__anon3.methodCodeExternal : (((void *)0));
2569 struct __ecereNameSpace__ecere__sys__OldList * args = MkList();
2570 struct Identifier * id = (external && external->__anon1.function) ? GetDeclId(external->__anon1.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->__anon1.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->__anon1.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)->__anon2.__anon3.methodCodeExternal : (((void *)0));
2630 struct __ecereNameSpace__ecere__sys__OldList * args = MkList();
2631 struct Identifier * id = (external && external->__anon1.function) ? GetDeclId(external->__anon1.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->__anon1.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->__anon1.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->__anon1.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->__anon1.dataType ? StringFromSpecDecl(param->__anon1.dataType->specifiers, param->__anon1.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 ((const char * (*)(struct __ecereNameSpace__ecere__com__Class *, const void *, char * tempString, void * fieldData, unsigned int * needClass))__ecereClass___ecereNameSpace__ecere__com__TemplateMemberType->_vTbl[__ecereVMethodID_class_OnGetString])(__ecereClass___ecereNameSpace__ecere__com__TemplateMemberType, ¶m->__anon1.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->__anon1.templateDatatype ? StringFromSpecDecl(param->defaultArgument->__anon1.templateDatatype->specifiers, param->defaultArgument->__anon1.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->__anon1.identifier->_class)
2767 if(param->defaultArgument->__anon1.identifier->_class->type == 8)
2768 strcpy(memberString, param->defaultArgument->__anon1.identifier->_class->__anon1.templateParameter->identifier->string);
2769 else if(param->defaultArgument->__anon1.identifier->_class->__anon1.__anon1.name)
2770 strcpy(memberString, param->defaultArgument->__anon1.identifier->_class->__anon1.__anon1.name);
2773 strcat(memberString, "::");
2774 strcat(memberString, param->defaultArgument->__anon1.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);
2789 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
2792 struct __ecereNameSpace__ecere__sys__OldList * ids = MkList();
2794 char * string = (((void *)0));
2796 op = GetOperand(param->defaultArgument->__anon1.expression);
2797 ui64String = PrintUInt64(op.__anon1.ui64);
2798 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*ids), MkIdentifier("expression"));
2799 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*ids), MkIdentifier("ui64"));
2800 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*members), MkMemberInit(ids, MkInitializerAssignment(MkExpConstant(ui64String))));
2801 (__ecereNameSpace__ecere__com__eSystem_Delete(string), string = 0);
2802 (__ecereNameSpace__ecere__com__eSystem_Delete(ui64String), ui64String = 0);
2806 ListAdd(args, MkExpInstance(MkInstantiation(MkSpecifierName("ClassTemplateArgument"), (((void *)0)), MkListOne(MkMembersInitList(members)))));
2809 ListAdd(args, MkExpIdentifier(MkIdentifier("null")));
2810 stmt = MkExpressionStmt(MkListOne(MkExpCall(MkExpIdentifier(MkIdentifier("eClass_AddTemplateParameter")), args)));
2811 ListAdd(registerModuleBody->__anon1.compound.statements, stmt);
2813 stmt = MkExpressionStmt(MkListOne(MkExpCall(MkExpIdentifier(MkIdentifier("eClass_DoneAddingTemplateParameters")), MkListOne(MkExpIdentifier(MkIdentifier("class"))))));
2814 ListAdd(registerModuleBody->__anon1.compound.statements, stmt);
2816 if(definitions != (((void *)0)))
2818 for(def = definitions->first; def; def = def->next)
2820 if(def->type == 4 && def->__anon1.propertyWatch)
2822 ListAdd(registerModuleBody->__anon1.compound.statements, (struct Statement *)def->__anon1.propertyWatch);
2823 def->__anon1.propertyWatch = (((void *)0));
2825 else if(def->type == 5)
2828 char * s = QMkString(def->__anon1.designer);
2830 stmt = MkIfStmt(MkListOne(MkExpIdentifier(MkIdentifier("class"))), MkExpressionStmt(MkListOne(MkExpOp(MkExpMember(MkExpIdentifier(MkIdentifier("class")), MkIdentifier("designerClass")), '=', MkExpString(s)))), (((void *)0)));
2831 (__ecereNameSpace__ecere__com__eSystem_Delete(s), s = 0);
2833 ListAdd(registerModuleBody->__anon1.compound.statements, stmt);
2835 else if(def->type == 6)
2837 stmt = MkIfStmt(MkListOne(MkExpIdentifier(MkIdentifier("class"))), MkExpressionStmt(MkListOne(MkExpOp(MkExpMember(MkExpIdentifier(MkIdentifier("class")), MkIdentifier("noExpansion")), '=', MkExpConstant("1")))), (((void *)0)));
2838 ListAdd(registerModuleBody->__anon1.compound.statements, stmt);
2840 else if(def->type == 7)
2842 stmt = MkIfStmt(MkListOne(MkExpIdentifier(MkIdentifier("class"))), MkExpressionStmt(MkListOne(MkExpOp(MkExpMember(MkExpIdentifier(MkIdentifier("class")), MkIdentifier("fixed")), '=', MkExpConstant("1")))), (((void *)0)));
2843 ListAdd(registerModuleBody->__anon1.compound.statements, stmt);
2845 regClass->fixed = 0x1;
2847 else if(def->type == 8)
2849 char * s = QMkString(def->__anon1.defaultProperty->string);
2851 stmt = MkIfStmt(MkListOne(MkExpIdentifier(MkIdentifier("class"))), MkExpressionStmt(MkListOne(MkExpOp(MkExpMember(MkExpIdentifier(MkIdentifier("class")), MkIdentifier("defaultProperty")), '=', MkExpString(s)))), (((void *)0)));
2852 ListAdd(registerModuleBody->__anon1.compound.statements, stmt);
2853 (__ecereNameSpace__ecere__com__eSystem_Delete(s), s = 0);
2855 else if(def->type == 11)
2857 ((struct __ecereNameSpace__ecere__com__IteratorPointer * (*)(struct __ecereNameSpace__ecere__com__Instance *, uint64 value))__extension__ ({
2858 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = classPropValues;
2860 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__com__List->_vTbl;
2861 })[__ecereVMethodID___ecereNameSpace__ecere__com__Container_Add])(classPropValues, (uint64)(__extension__ ({
2862 struct __ecereNameSpace__ecere__com__Instance * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_ClassPropertyValue);
2864 ((struct ClassPropertyValue *)(((char *)__ecereInstance1 + __ecereClass_ClassPropertyValue->offset)))->regClass = regClass, ((struct ClassPropertyValue *)(((char *)__ecereInstance1 + __ecereClass_ClassPropertyValue->offset)))->id = def->__anon1.__anon1.id, ((struct ClassPropertyValue *)(((char *)__ecereInstance1 + __ecereClass_ClassPropertyValue->offset)))->exp = def->__anon1.__anon1.initializer->__anon1.exp, __ecereInstance1;
2866 def->__anon1.__anon1.id = (((void *)0));
2867 def->__anon1.__anon1.initializer->__anon1.exp = (((void *)0));
2875 extern void FreeIdentifier(struct Identifier * id);
2877 void __ecereDestructor_ClassPropertyValue(struct __ecereNameSpace__ecere__com__Instance * this)
2879 struct ClassPropertyValue * __ecerePointer_ClassPropertyValue = (struct ClassPropertyValue *)(this ? (((char *)this) + __ecereClass_ClassPropertyValue->offset) : 0);
2882 FreeIdentifier(__ecerePointer_ClassPropertyValue->id);
2886 extern void PrintExpression(struct Expression * exp, char * string);
2888 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__IteratorPointer;
2890 struct __ecereNameSpace__ecere__com__IteratorPointer;
2892 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__Iterator;
2894 struct __ecereNameSpace__ecere__com__Iterator
2896 struct __ecereNameSpace__ecere__com__Instance * container;
2897 struct __ecereNameSpace__ecere__com__IteratorPointer * pointer;
2898 } __attribute__ ((gcc_struct));
2900 void __ecereMethod___ecereNameSpace__ecere__sys__OldList_Remove(struct __ecereNameSpace__ecere__sys__OldList * this, void * item);
2902 unsigned int __ecereMethod___ecereNameSpace__ecere__com__Iterator_Next();
2904 uint64 __ecereProp___ecereNameSpace__ecere__com__Iterator_Get_data(struct __ecereNameSpace__ecere__com__Iterator * this);
2906 void __ecereProp___ecereNameSpace__ecere__com__Iterator_Set_data(struct __ecereNameSpace__ecere__com__Iterator * this, uint64 value);
2908 extern struct __ecereNameSpace__ecere__com__Property ** __ecereProp___ecereNameSpace__ecere__com__Iterator_data;
2910 int __ecereVMethodID___ecereNameSpace__ecere__com__Container_Free;
2912 void ProcessClassDefinitions()
2914 struct External * external, * next;
2916 CreateRegisterModuleBody();
2919 for(external = (*ast).first; external; external = next)
2921 next = external->next;
2922 curExternal = external;
2923 if(external->type == 2)
2925 struct ClassDefinition * _class = external->__anon1._class;
2927 if(_class->definitions)
2929 ProcessClass(0, _class->definitions, _class->symbol, _class->baseSpecs, (((void *)0)), ast, external, _class->declMode);
2933 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Remove((&*ast), external);
2934 FreeExternal(external);
2937 else if(external->type == 0)
2939 unsigned int setStaticMethod = 0x0;
2941 if(external->symbol && !external->symbol->type->__anon1.__anon2.thisClass && !external->symbol->type->__anon1.__anon2.staticMethod)
2943 external->symbol->type->__anon1.__anon2.staticMethod = 0x1;
2944 setStaticMethod = 0x1;
2948 struct FunctionDefinition * function = external->__anon1.function;
2949 struct Statement * stmt;
2950 struct __ecereNameSpace__ecere__sys__OldList * args;
2952 if(!strcmp(function->declarator->symbol->string, "__on_register_module"))
2954 ListAdd(registerModuleBody->__anon1.compound.statements, function->body);
2955 function->body->__anon1.compound.context->parent = registerModuleBody->__anon1.compound.context;
2956 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Remove((&*ast), external);
2957 function->body = (((void *)0));
2958 FreeExternal(external);
2961 if(function->declMode != 2 && function->declMode != 1)
2964 CreateRegisterModuleBody();
2966 char * string = QMkString(function->declarator->symbol->string);
2968 ListAdd(args, MkExpString(string));
2969 (__ecereNameSpace__ecere__com__eSystem_Delete(string), string = 0);
2973 char type[1024] = "";
2976 function->declarator->symbol->type->__anon1.__anon2.staticMethod = 0x0;
2977 PrintType(function->declarator->symbol->type, type, 0x1, 0x1);
2979 function->declarator->symbol->type->__anon1.__anon2.staticMethod = 0x1;
2980 string = QMkString(type);
2981 ListAdd(args, MkExpString(string));
2982 (__ecereNameSpace__ecere__com__eSystem_Delete(string), string = 0);
2985 ListAdd(args, MkExpIdentifier(MkIdentifier(function->declarator->symbol->string)));
2987 ListAdd(args, MkExpIdentifier(MkIdentifier("module")));
2988 switch(function->declMode)
2991 ListAdd(args, MkExpIdentifier(MkIdentifier("staticAccess")));
2994 ListAdd(args, MkExpIdentifier(MkIdentifier("privateAccess")));
2998 ListAdd(args, MkExpIdentifier(MkIdentifier(buildingECERECOMModule ? "baseSystemAccess" : "publicAccess")));
3001 stmt = MkExpressionStmt(MkListOne(MkExpCall((MkExpIdentifier(MkIdentifier("eSystem_RegisterFunction"))), args)));
3002 ListAdd(registerModuleBody->__anon1.compound.statements, stmt);
3005 else if(external->type == 1)
3007 struct Declaration * declaration = external->__anon1.declaration;
3009 if(external->symbol)
3011 if(external->symbol->type && external->symbol->type->kind == 11 && !external->symbol->type->__anon1.__anon2.thisClass)
3012 external->symbol->type->__anon1.__anon2.staticMethod = 0x1;
3014 if(external->symbol && declaration->type == 1)
3016 if(declaration->__anon1.__anon1.specifiers)
3018 struct Specifier * specifier;
3019 unsigned int removeExternal = 0x0;
3021 for(specifier = (*declaration->__anon1.__anon1.specifiers).first; specifier; specifier = specifier->next)
3023 if((specifier->type == 2 || specifier->type == 3 || specifier->type == 4) && specifier->__anon1.__anon2.id && specifier->__anon1.__anon2.id->string && (declaration->declMode || specifier->__anon1.__anon2.baseSpecs || (specifier->type == 2 && specifier->__anon1.__anon2.definitions)))
3025 struct Symbol * symbol = FindClass(specifier->__anon1.__anon2.id->string);
3031 if(specifier->type == 2)
3035 removeExternal = 0x1;
3036 symbol->ctx = specifier->__anon1.__anon2.ctx;
3037 specifier->__anon1.__anon2.ctx = (((void *)0));
3038 ProcessClass(classType, specifier->__anon1.__anon2.definitions, symbol, specifier->__anon1.__anon2.baseSpecs, specifier->__anon1.__anon2.list, ast, external, declaration->declMode);
3042 if(inCompiler && removeExternal)
3044 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Remove((&*ast), external);
3045 FreeExternal(external);
3049 else if(declaration->type == 3)
3051 if(inCompiler && declaration->declMode != 3)
3053 struct Statement * stmt;
3054 struct __ecereNameSpace__ecere__sys__OldList * args = MkList();
3056 CreateRegisterModuleBody();
3058 char * string = QMkString(declaration->__anon1.__anon2.id->string);
3060 ListAdd(args, MkExpString(string));
3061 (__ecereNameSpace__ecere__com__eSystem_Delete(string), string = 0);
3065 char type[1024] = "";
3067 PrintExpression(declaration->__anon1.__anon2.exp, type);
3068 string = QMkString(type);
3069 ListAdd(args, MkExpString(string));
3070 (__ecereNameSpace__ecere__com__eSystem_Delete(string), string = 0);
3072 ListAdd(args, MkExpIdentifier(MkIdentifier("module")));
3073 switch(declaration->declMode)
3076 ListAdd(args, MkExpIdentifier(MkIdentifier("staticAccess")));
3079 ListAdd(args, MkExpIdentifier(MkIdentifier("privateAccess")));
3083 ListAdd(args, MkExpIdentifier(MkIdentifier(buildingECERECOMModule ? "baseSystemAccess" : "publicAccess")));
3086 stmt = MkExpressionStmt(MkListOne(MkExpCall((MkExpIdentifier(MkIdentifier("eSystem_RegisterDefine"))), args)));
3087 ListAdd(registerModuleBody->__anon1.compound.statements, stmt);
3093 struct __ecereNameSpace__ecere__com__Iterator v =
3095 (classPropValues), 0
3098 while(__ecereMethod___ecereNameSpace__ecere__com__Iterator_Next(&v))
3100 struct __ecereNameSpace__ecere__sys__OldList * findClassArgs = MkList();
3101 struct __ecereNameSpace__ecere__sys__OldList * args = MkList();
3102 struct Statement * compoundStmt;
3106 char * __ecTemp1 = (((struct __ecereNameSpace__ecere__com__Instance *)__ecereProp___ecereNameSpace__ecere__com__Iterator_Get_data(&v)));
3108 ((struct ClassPropertyValue *)(__ecTemp1 + __ecereClass_ClassPropertyValue->offset));
3110 yylloc = __extension__ ({
3111 char * __ecTemp1 = (((struct __ecereNameSpace__ecere__com__Instance *)__ecereProp___ecereNameSpace__ecere__com__Iterator_Get_data(&v)));
3113 ((struct ClassPropertyValue *)(__ecTemp1 + __ecereClass_ClassPropertyValue->offset));
3115 ListAdd(findClassArgs, MkExpIdentifier(MkIdentifier("module")));
3116 s = QMkString(__extension__ ({
3117 char * __ecTemp1 = (((struct __ecereNameSpace__ecere__com__Instance *)__ecereProp___ecereNameSpace__ecere__com__Iterator_Get_data(&v)));
3119 ((struct ClassPropertyValue *)(__ecTemp1 + __ecereClass_ClassPropertyValue->offset));
3120 })->regClass->name);
3121 ListAdd(findClassArgs, MkExpString(s));
3122 (__ecereNameSpace__ecere__com__eSystem_Delete(s), s = 0);
3123 ListAdd(args, MkExpIdentifier(MkIdentifier("_class")));
3124 s = QMkString(__extension__ ({
3125 char * __ecTemp1 = (((struct __ecereNameSpace__ecere__com__Instance *)__ecereProp___ecereNameSpace__ecere__com__Iterator_Get_data(&v)));
3127 ((struct ClassPropertyValue *)(__ecTemp1 + __ecereClass_ClassPropertyValue->offset));
3129 ListAdd(args, MkExpString(s));
3130 (__ecereNameSpace__ecere__com__eSystem_Delete(s), s = 0);
3131 ListAdd(args, MkExpCast(MkTypeName(MkListOne(MkSpecifier(INT64)), (((void *)0))), __extension__ ({
3132 char * __ecTemp1 = (((struct __ecereNameSpace__ecere__com__Instance *)__ecereProp___ecereNameSpace__ecere__com__Iterator_Get_data(&v)));
3134 ((struct ClassPropertyValue *)(__ecTemp1 + __ecereClass_ClassPropertyValue->offset));
3136 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)))));
3137 compoundStmt->__anon1.compound.context = __extension__ ({
3138 struct Context * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Context);
3140 __ecereInstance1->parent = registerModuleBody->__anon1.compound.context, __ecereInstance1;
3142 ListAdd(registerModuleBody->__anon1.compound.statements, compoundStmt);
3145 ((void (*)(struct __ecereNameSpace__ecere__com__Instance *))__extension__ ({
3146 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = classPropValues;
3148 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__com__List->_vTbl;
3149 })[__ecereVMethodID___ecereNameSpace__ecere__com__Container_Free])(classPropValues);
3153 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__GlobalFunction;
3155 struct __ecereNameSpace__ecere__com__GlobalFunction;
3157 extern struct __ecereNameSpace__ecere__com__GlobalFunction * __ecereNameSpace__ecere__com__eSystem_RegisterFunction(const char * name, const char * type, void * func, struct __ecereNameSpace__ecere__com__Instance * module, int declMode);
3159 extern struct __ecereNameSpace__ecere__com__Class * __ecereNameSpace__ecere__com__eSystem_RegisterClass(int type, const char * name, const char * baseName, int size, int sizeClass, unsigned int (* Constructor)(void * ), void (* Destructor)(void * ), struct __ecereNameSpace__ecere__com__Instance * module, int declMode, int inheritanceAccess);
3161 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__Module;
3163 struct __ecereNameSpace__ecere__com__Module
3165 struct __ecereNameSpace__ecere__com__Instance * application;
3166 struct __ecereNameSpace__ecere__sys__OldList classes;
3167 struct __ecereNameSpace__ecere__sys__OldList defines;
3168 struct __ecereNameSpace__ecere__sys__OldList functions;
3169 struct __ecereNameSpace__ecere__sys__OldList modules;
3170 struct __ecereNameSpace__ecere__com__Instance * prev;
3171 struct __ecereNameSpace__ecere__com__Instance * next;
3177 struct __ecereNameSpace__ecere__com__NameSpace privateNameSpace;
3178 struct __ecereNameSpace__ecere__com__NameSpace publicNameSpace;
3179 } __attribute__ ((gcc_struct));
3181 extern struct __ecereNameSpace__ecere__com__Instance * __thisModule;
3183 void __ecereRegisterModule_pass1(struct __ecereNameSpace__ecere__com__Instance * module)
3185 struct __ecereNameSpace__ecere__com__Class __attribute__((unused)) * class;
3187 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("SetBuildingEcereCom", "void SetBuildingEcereCom(bool b)", SetBuildingEcereCom, module, 1);
3188 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("GetBuildingEcereCom", "bool GetBuildingEcereCom(void)", GetBuildingEcereCom, module, 1);
3189 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("SetBuildingEcereComModule", "void SetBuildingEcereComModule(bool b)", SetBuildingEcereComModule, module, 1);
3190 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("GetBuildingEcereComModule", "bool GetBuildingEcereComModule(void)", GetBuildingEcereComModule, module, 1);
3191 __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);
3192 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("CreateRegisterModuleBody", "void CreateRegisterModuleBody(void)", CreateRegisterModuleBody, module, 2);
3193 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("RegisterMembersAndProperties", "void RegisterMembersAndProperties(ecere::com::Class regClass, bool isMember, const char * className, Statement statement)", RegisterMembersAndProperties, module, 2);
3194 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("GetNameSpaceString", "void GetNameSpaceString(ecere::com::NameSpace ns, char * string)", GetNameSpaceString, module, 2);
3195 class = __ecereNameSpace__ecere__com__eSystem_RegisterClass(0, "ClassPropertyValue", 0, sizeof(struct ClassPropertyValue), 0, 0, __ecereDestructor_ClassPropertyValue, module, 2, 1);
3196 if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + structSize_Instance)))->application == ((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + structSize_Instance)))->application && class)
3197 __ecereClass_ClassPropertyValue = class;
3198 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ProcessClassDefinitions", "void ProcessClassDefinitions(void)", ProcessClassDefinitions, module, 1);
3201 void __ecereUnregisterModule_pass1(struct __ecereNameSpace__ecere__com__Instance * module)
3206 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__List_TPL_ClassPropertyValue_;
3208 void __ecereCreateModuleInstances_pass1()
3210 classPropValues = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass___ecereNameSpace__ecere__com__List_TPL_ClassPropertyValue_);
3211 __ecereNameSpace__ecere__com__eInstance_IncRef(classPropValues);
3214 extern void __ecereNameSpace__ecere__com__eInstance_DecRef(struct __ecereNameSpace__ecere__com__Instance * instance);
3216 void __ecereDestroyModuleInstances_pass1()
3218 (__ecereNameSpace__ecere__com__eInstance_DecRef(classPropValues), classPropValues = 0);