2 typedef long long int64;
3 typedef unsigned long long uint64;
7 #elif defined(__TINYC__)
9 #define __builtin_va_list va_list
10 #define __builtin_va_start va_start
11 #define __builtin_va_end va_end
13 #define strcasecmp stricmp
14 #define strncasecmp strnicmp
15 #define __declspec(x) __attribute__((x))
19 typedef long long int64;
20 typedef unsigned long long uint64;
22 typedef __int64 int64;
23 typedef unsigned __int64 uint64;
26 #define __ENDIAN_PAD(x) (8 - (x))
28 #define __ENDIAN_PAD(x) 0
31 #include <sys/types.h>
33 #if /*defined(_W64) || */(defined(__WORDSIZE) && __WORDSIZE == 8) || defined(__x86_64__)
39 #define arch_PointerSize sizeof(void *)
40 #define structSize_Instance (_64BIT ? 24 : 12)
41 #define structSize_Module (_64BIT ? 560 : 300)
42 #define structSize_OldList (_64BIT ? 32 : 20)
44 extern void * __ecereNameSpace__ecere__com__eSystem_New(unsigned int size);
46 extern void * __ecereNameSpace__ecere__com__eSystem_New0(unsigned int size);
48 extern void * __ecereNameSpace__ecere__com__eSystem_Renew(void * memory, unsigned int size);
50 extern void * __ecereNameSpace__ecere__com__eSystem_Renew0(void * memory, unsigned int size);
52 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__sys__BTNode;
54 struct __ecereNameSpace__ecere__sys__BTNode;
56 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__sys__BinaryTree;
58 struct __ecereNameSpace__ecere__sys__BinaryTree
60 struct __ecereNameSpace__ecere__sys__BTNode * root;
62 int (* CompareKey)(struct __ecereNameSpace__ecere__sys__BinaryTree * tree, uintptr_t a, uintptr_t b);
63 void (* FreeKey)(void * key);
64 } __attribute__ ((gcc_struct));
66 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__sys__OldList;
68 struct __ecereNameSpace__ecere__sys__OldList
75 } __attribute__ ((gcc_struct));
77 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__Method;
79 struct __ecereNameSpace__ecere__com__Method
82 struct __ecereNameSpace__ecere__com__Method * parent;
83 struct __ecereNameSpace__ecere__com__Method * left;
84 struct __ecereNameSpace__ecere__com__Method * right;
89 struct __ecereNameSpace__ecere__com__Class * _class;
91 char * dataTypeString;
92 struct Type * dataType;
94 } __attribute__ ((gcc_struct));
96 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__Property;
98 struct __ecereNameSpace__ecere__com__Property
100 struct __ecereNameSpace__ecere__com__Property * prev;
101 struct __ecereNameSpace__ecere__com__Property * next;
103 unsigned int isProperty;
106 struct __ecereNameSpace__ecere__com__Class * _class;
107 char * dataTypeString;
108 struct __ecereNameSpace__ecere__com__Class * dataTypeClass;
109 struct Type * dataType;
110 void (* Set)(void * , int);
111 int (* Get)(void * );
112 unsigned int (* IsSet)(void * );
116 unsigned int conversion;
117 unsigned int watcherOffset;
119 unsigned int compiled;
120 unsigned int selfWatchable;
121 unsigned int isWatchable;
122 } __attribute__ ((gcc_struct));
124 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_CodePosition;
131 unsigned int included;
132 } __attribute__ ((gcc_struct));
134 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Location;
138 struct CodePosition start;
139 struct CodePosition end;
140 } __attribute__ ((gcc_struct));
142 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Attrib;
146 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_ExtDecl;
150 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_ClassDefinition;
152 struct ClassDefinition
154 struct ClassDefinition * prev;
155 struct ClassDefinition * next;
157 struct Specifier * _class;
158 struct __ecereNameSpace__ecere__sys__OldList * baseSpecs;
159 struct __ecereNameSpace__ecere__sys__OldList * definitions;
160 struct Symbol * symbol;
161 struct Location blockStart;
162 struct Location nameLoc;
165 unsigned int deleteWatchable;
166 } __attribute__ ((gcc_struct));
168 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Context;
172 struct Context * parent;
173 struct __ecereNameSpace__ecere__sys__BinaryTree types;
174 struct __ecereNameSpace__ecere__sys__BinaryTree classes;
175 struct __ecereNameSpace__ecere__sys__BinaryTree symbols;
176 struct __ecereNameSpace__ecere__sys__BinaryTree structSymbols;
179 struct __ecereNameSpace__ecere__sys__BinaryTree templateTypes;
180 struct ClassDefinition * classDef;
181 unsigned int templateTypesOnly;
182 unsigned int hasNameSpace;
183 } __attribute__ ((gcc_struct));
185 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Instantiation;
189 struct Instantiation * prev;
190 struct Instantiation * next;
192 struct Specifier * _class;
193 struct Expression * exp;
194 struct __ecereNameSpace__ecere__sys__OldList * members;
195 struct Symbol * symbol;
196 unsigned int fullSet;
197 unsigned int isConstant;
198 unsigned char * data;
199 struct Location nameLoc;
200 struct Location insideLoc;
202 } __attribute__ ((gcc_struct));
204 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Declaration;
208 struct Declaration * prev;
209 struct Declaration * next;
216 struct __ecereNameSpace__ecere__sys__OldList * specifiers;
217 struct __ecereNameSpace__ecere__sys__OldList * declarators;
218 } __attribute__ ((gcc_struct));
219 struct Instantiation * inst;
222 struct Identifier * id;
223 struct Expression * exp;
224 } __attribute__ ((gcc_struct));
225 } __attribute__ ((gcc_struct));
226 struct Specifier * extStorage;
227 struct Symbol * symbol;
229 } __attribute__ ((gcc_struct));
231 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Statement;
235 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_TypeName;
239 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Initializer;
243 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__DataValue;
245 struct __ecereNameSpace__ecere__com__DataValue
260 } __attribute__ ((gcc_struct));
261 } __attribute__ ((gcc_struct));
263 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Expression;
267 struct Expression * prev;
268 struct Expression * next;
276 struct Identifier * identifier;
277 } __attribute__ ((gcc_struct));
278 struct Statement * compound;
279 struct Instantiation * instance;
281 struct __ecereNameSpace__ecere__sys__OldList * list;
284 struct __ecereNameSpace__ecere__sys__OldList * specifiers;
285 struct Declarator * decl;
286 } __attribute__ ((gcc_struct)) _classExp;
289 struct Identifier * id;
290 } __attribute__ ((gcc_struct)) classData;
293 struct Expression * exp;
294 struct __ecereNameSpace__ecere__sys__OldList * arguments;
295 struct Location argLoc;
296 } __attribute__ ((gcc_struct)) call;
299 struct Expression * exp;
300 struct __ecereNameSpace__ecere__sys__OldList * index;
301 } __attribute__ ((gcc_struct)) index;
304 struct Expression * exp;
305 struct Identifier * member;
307 unsigned int thisPtr;
308 } __attribute__ ((gcc_struct)) member;
312 struct Expression * exp1;
313 struct Expression * exp2;
314 } __attribute__ ((gcc_struct)) op;
315 struct TypeName * typeName;
316 struct Specifier * _class;
319 struct TypeName * typeName;
320 struct Expression * exp;
321 } __attribute__ ((gcc_struct)) cast;
324 struct Expression * cond;
325 struct __ecereNameSpace__ecere__sys__OldList * exp;
326 struct Expression * elseExp;
327 } __attribute__ ((gcc_struct)) cond;
330 struct TypeName * typeName;
331 struct Expression * size;
332 } __attribute__ ((gcc_struct)) _new;
335 struct TypeName * typeName;
336 struct Expression * size;
337 struct Expression * exp;
338 } __attribute__ ((gcc_struct)) _renew;
342 struct Identifier * id;
343 } __attribute__ ((gcc_struct)) db;
346 struct Expression * ds;
347 struct Expression * name;
348 } __attribute__ ((gcc_struct)) dbopen;
351 struct TypeName * typeName;
352 struct Initializer * initializer;
353 } __attribute__ ((gcc_struct)) initializer;
356 struct Expression * exp;
357 struct TypeName * typeName;
358 } __attribute__ ((gcc_struct)) vaArg;
359 } __attribute__ ((gcc_struct));
360 unsigned int debugValue;
361 struct __ecereNameSpace__ecere__com__DataValue val;
363 unsigned int hasAddress;
364 struct Type * expType;
365 struct Type * destType;
368 unsigned int byReference;
369 unsigned int isConstant;
370 unsigned int addedThis;
371 unsigned int needCast;
372 unsigned int thisPtr;
373 } __attribute__ ((gcc_struct));
375 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_TemplateDatatype;
377 struct TemplateDatatype
379 struct __ecereNameSpace__ecere__sys__OldList * specifiers;
380 struct Declarator * decl;
381 } __attribute__ ((gcc_struct));
383 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_TemplateArgument;
385 struct TemplateArgument
387 struct TemplateArgument * prev;
388 struct TemplateArgument * next;
390 struct Identifier * name;
394 struct Expression * expression;
395 struct Identifier * identifier;
396 struct TemplateDatatype * templateDatatype;
397 } __attribute__ ((gcc_struct));
398 } __attribute__ ((gcc_struct));
400 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_TemplateParameter;
402 struct TemplateParameter
404 struct TemplateParameter * prev;
405 struct TemplateParameter * next;
408 struct Identifier * identifier;
411 struct TemplateDatatype * dataType;
413 } __attribute__ ((gcc_struct));
414 struct TemplateArgument * defaultArgument;
415 char * dataTypeString;
416 struct Type * baseType;
417 } __attribute__ ((gcc_struct));
419 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Specifier;
423 struct Specifier * prev;
424 struct Specifier * next;
432 struct ExtDecl * extDecl;
434 struct Symbol * symbol;
435 struct __ecereNameSpace__ecere__sys__OldList * templateArgs;
436 } __attribute__ ((gcc_struct));
439 struct Identifier * id;
440 struct __ecereNameSpace__ecere__sys__OldList * list;
441 struct __ecereNameSpace__ecere__sys__OldList * baseSpecs;
442 struct __ecereNameSpace__ecere__sys__OldList * definitions;
443 unsigned int addNameSpace;
444 struct Context * ctx;
445 struct ExtDecl * extDeclStruct;
446 } __attribute__ ((gcc_struct));
447 struct Expression * expression;
448 struct Specifier * _class;
449 struct TemplateParameter * templateParameter;
450 } __attribute__ ((gcc_struct));
451 } __attribute__ ((gcc_struct));
453 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Identifier;
457 struct Identifier * prev;
458 struct Identifier * next;
460 struct Symbol * classSym;
461 struct Specifier * _class;
463 struct Identifier * badID;
464 } __attribute__ ((gcc_struct));
466 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Declarator;
470 struct Declarator * prev;
471 struct Declarator * next;
474 struct Symbol * symbol;
475 struct Declarator * declarator;
478 struct Identifier * identifier;
481 struct Expression * exp;
482 struct Expression * posExp;
483 struct Attrib * attrib;
484 } __attribute__ ((gcc_struct)) structDecl;
487 struct Expression * exp;
488 struct Specifier * enumClass;
489 } __attribute__ ((gcc_struct)) array;
492 struct __ecereNameSpace__ecere__sys__OldList * parameters;
493 } __attribute__ ((gcc_struct)) function;
496 struct __ecereNameSpace__ecere__com__Instance * pointer;
497 } __attribute__ ((gcc_struct)) pointer;
500 struct ExtDecl * extended;
501 } __attribute__ ((gcc_struct)) extended;
502 } __attribute__ ((gcc_struct));
503 } __attribute__ ((gcc_struct));
505 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_FunctionDefinition;
507 struct FunctionDefinition
509 struct FunctionDefinition * prev;
510 struct FunctionDefinition * next;
512 struct __ecereNameSpace__ecere__sys__OldList * specifiers;
513 struct Declarator * declarator;
514 struct __ecereNameSpace__ecere__sys__OldList * declarations;
515 struct Statement * body;
516 struct __ecereNameSpace__ecere__com__Class * _class;
517 struct __ecereNameSpace__ecere__sys__OldList attached;
520 struct Symbol * propSet;
522 unsigned int propertyNoThis;
523 } __attribute__ ((gcc_struct));
525 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_DBTableDef;
529 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_External;
533 struct External * prev;
534 struct External * next;
537 struct Symbol * symbol;
540 struct FunctionDefinition * function;
541 struct ClassDefinition * _class;
542 struct Declaration * declaration;
544 struct Identifier * id;
545 struct DBTableDef * table;
546 } __attribute__ ((gcc_struct));
548 } __attribute__ ((gcc_struct));
550 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_ModuleImport;
554 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_ClassImport;
558 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Symbol;
563 struct Symbol * parent;
564 struct Symbol * left;
565 struct Symbol * right;
570 struct __ecereNameSpace__ecere__com__Method * method;
571 struct __ecereNameSpace__ecere__com__Property * _property;
572 struct __ecereNameSpace__ecere__com__Class * registered;
573 } __attribute__ ((gcc_struct));
580 struct External * pointerExternal;
581 struct External * structExternal;
582 } __attribute__ ((gcc_struct));
585 struct External * externalGet;
586 struct External * externalSet;
587 struct External * externalPtr;
588 struct External * externalIsSet;
589 } __attribute__ ((gcc_struct));
592 struct External * methodExternal;
593 struct External * methodCodeExternal;
594 } __attribute__ ((gcc_struct));
595 } __attribute__ ((gcc_struct));
596 unsigned int imported;
597 unsigned int declaredStructSym;
598 struct __ecereNameSpace__ecere__com__Class * _class;
599 unsigned int declaredStruct;
600 unsigned int needConstructor;
601 unsigned int needDestructor;
602 char * constructorName;
605 char * destructorName;
606 struct ModuleImport * module;
607 struct ClassImport * _import;
608 struct Location nameLoc;
609 unsigned int isParam;
610 unsigned int isRemote;
611 unsigned int isStruct;
612 unsigned int fireWatchersDone;
614 unsigned int classData;
615 unsigned int isStatic;
617 struct __ecereNameSpace__ecere__sys__OldList * templateParams;
618 struct __ecereNameSpace__ecere__sys__OldList templatedClasses;
619 struct Context * ctx;
621 struct Expression * propCategory;
622 } __attribute__ ((gcc_struct));
624 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Type;
633 struct Symbol * _class;
636 struct __ecereNameSpace__ecere__sys__OldList members;
638 } __attribute__ ((gcc_struct));
641 struct Type * returnType;
642 struct __ecereNameSpace__ecere__sys__OldList params;
643 struct Symbol * thisClass;
644 unsigned int staticMethod;
645 struct TemplateParameter * thisClassTemplate;
646 } __attribute__ ((gcc_struct));
649 struct __ecereNameSpace__ecere__com__Method * method;
650 struct __ecereNameSpace__ecere__com__Class * methodClass;
651 struct __ecereNameSpace__ecere__com__Class * usedClass;
652 } __attribute__ ((gcc_struct));
655 struct Type * arrayType;
657 struct Expression * arraySizeExp;
658 unsigned int freeExp;
659 struct Symbol * enumClass;
660 } __attribute__ ((gcc_struct));
662 struct TemplateParameter * templateParameter;
663 } __attribute__ ((gcc_struct));
673 unsigned int isSigned : 1;
674 unsigned int constant : 1;
675 unsigned int truth : 1;
676 unsigned int byReference : 1;
677 unsigned int extraParam : 1;
678 unsigned int directClassAccess : 1;
679 unsigned int computing : 1;
680 unsigned int keepCast : 1;
681 unsigned int passAsTemplate : 1;
682 unsigned int dllExport : 1;
683 unsigned int attrStdcall : 1;
684 } __attribute__ ((gcc_struct));
686 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__Class;
688 struct __ecereNameSpace__ecere__com__Class
690 struct __ecereNameSpace__ecere__com__Class * prev;
691 struct __ecereNameSpace__ecere__com__Class * next;
697 int (* Constructor)(struct __ecereNameSpace__ecere__com__Instance *);
698 void (* Destructor)(struct __ecereNameSpace__ecere__com__Instance *);
701 struct __ecereNameSpace__ecere__com__Class * base;
702 struct __ecereNameSpace__ecere__sys__BinaryTree methods;
703 struct __ecereNameSpace__ecere__sys__BinaryTree members;
704 struct __ecereNameSpace__ecere__sys__BinaryTree prop;
705 struct __ecereNameSpace__ecere__sys__OldList membersAndProperties;
706 struct __ecereNameSpace__ecere__sys__BinaryTree classProperties;
707 struct __ecereNameSpace__ecere__sys__OldList derivatives;
711 struct __ecereNameSpace__ecere__com__Instance * module;
712 struct __ecereNameSpace__ecere__com__NameSpace * nameSpace;
713 char * dataTypeString;
714 struct Type * dataType;
716 int defaultAlignment;
717 void (* Initialize)();
719 struct __ecereNameSpace__ecere__sys__OldList selfWatchers;
720 char * designerClass;
721 unsigned int noExpansion;
722 char * defaultProperty;
723 unsigned int comRedefinition;
725 unsigned int isRemote;
726 unsigned int internalDecl;
728 unsigned int computeSize;
730 int destructionWatchOffset;
732 struct __ecereNameSpace__ecere__sys__OldList delayedCPValues;
733 int inheritanceAccess;
736 struct __ecereNameSpace__ecere__sys__OldList conversions;
737 struct __ecereNameSpace__ecere__sys__OldList templateParams;
738 struct __ecereNameSpace__ecere__com__ClassTemplateArgument * templateArgs;
739 struct __ecereNameSpace__ecere__com__Class * templateClass;
740 struct __ecereNameSpace__ecere__sys__OldList templatized;
742 unsigned int isInstanceClass;
743 } __attribute__ ((gcc_struct));
745 extern long long __ecereNameSpace__ecere__com__eClass_GetProperty(struct __ecereNameSpace__ecere__com__Class * _class, char * name);
747 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__Instance;
749 struct __ecereNameSpace__ecere__com__Instance
752 struct __ecereNameSpace__ecere__com__Class * _class;
754 } __attribute__ ((gcc_struct));
756 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__DataMember;
758 struct __ecereNameSpace__ecere__com__DataMember
760 struct __ecereNameSpace__ecere__com__DataMember * prev;
761 struct __ecereNameSpace__ecere__com__DataMember * next;
763 unsigned int isProperty;
766 struct __ecereNameSpace__ecere__com__Class * _class;
767 char * dataTypeString;
768 struct __ecereNameSpace__ecere__com__Class * dataTypeClass;
769 struct Type * dataType;
773 struct __ecereNameSpace__ecere__sys__OldList members;
774 struct __ecereNameSpace__ecere__sys__BinaryTree membersAlpha;
777 } __attribute__ ((gcc_struct));
779 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__SerialBuffer;
781 struct __ecereNameSpace__ecere__com__SerialBuffer
783 unsigned char * _buffer;
787 } __attribute__ ((gcc_struct));
789 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__ClassTemplateArgument;
791 struct __ecereNameSpace__ecere__com__ClassTemplateArgument
797 char * dataTypeString;
798 struct __ecereNameSpace__ecere__com__Class * dataTypeClass;
799 } __attribute__ ((gcc_struct));
800 struct __ecereNameSpace__ecere__com__DataValue expression;
806 struct __ecereNameSpace__ecere__com__DataMember * member;
807 struct __ecereNameSpace__ecere__com__Property * prop;
808 struct __ecereNameSpace__ecere__com__Method * method;
809 } __attribute__ ((gcc_struct));
810 } __attribute__ ((gcc_struct));
811 } __attribute__ ((gcc_struct));
812 } __attribute__ ((gcc_struct));
816 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
819 typedef union YYSTYPE
824 struct Identifier * id;
825 struct Expression * exp;
826 struct Specifier * specifier;
827 struct __ecereNameSpace__ecere__sys__OldList * list;
828 struct Enumerator * enumerator;
829 struct Declarator * declarator;
830 struct __ecereNameSpace__ecere__com__Instance * pointer;
831 struct Initializer * initializer;
832 struct InitDeclarator * initDeclarator;
833 struct TypeName * typeName;
834 struct Declaration * declaration;
835 struct Statement * stmt;
836 struct FunctionDefinition * function;
837 struct External * external;
838 struct Context * context;
839 struct __ecereNameSpace__ecere__com__Instance * asmField;
840 struct Attrib * attrib;
841 struct ExtDecl * extDecl;
842 struct Attribute * attribute;
843 struct Instantiation * instance;
844 struct MembersInit * membersInit;
845 struct MemberInit * memberInit;
846 struct ClassFunction * classFunction;
847 struct ClassDefinition * _class;
848 struct ClassDef * classDef;
849 struct PropertyDef * prop;
851 struct Symbol * symbol;
852 struct PropertyWatch * propertyWatch;
853 struct TemplateParameter * templateParameter;
854 struct TemplateArgument * templateArgument;
855 struct TemplateDatatype * templateDatatype;
856 struct __ecereNameSpace__ecere__com__Instance * dbtableEntry;
857 struct __ecereNameSpace__ecere__com__Instance * dbindexItem;
858 struct DBTableDef * dbtableDef;
859 } __attribute__ ((gcc_struct)) YYSTYPE;
861 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Enumerator;
865 struct Enumerator * prev;
866 struct Enumerator * next;
868 struct Identifier * id;
869 struct Expression * exp;
870 } __attribute__ ((gcc_struct));
872 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_InitDeclarator;
874 struct InitDeclarator
876 struct InitDeclarator * prev;
877 struct InitDeclarator * next;
879 struct Declarator * declarator;
880 struct Initializer * initializer;
881 } __attribute__ ((gcc_struct));
883 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Attribute;
887 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_ClassFunction;
891 struct ClassFunction * prev;
892 struct ClassFunction * next;
894 struct __ecereNameSpace__ecere__sys__OldList * specifiers;
895 struct Declarator * declarator;
896 struct __ecereNameSpace__ecere__sys__OldList * declarations;
897 struct Statement * body;
898 struct __ecereNameSpace__ecere__com__Class * _class;
899 struct __ecereNameSpace__ecere__sys__OldList attached;
902 struct Symbol * propSet;
903 unsigned int isVirtual;
904 unsigned int isConstructor;
905 unsigned int isDestructor;
906 unsigned int dontMangle;
909 } __attribute__ ((gcc_struct));
911 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_MembersInit;
915 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_MemberInit;
919 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_PropertyDef;
923 struct PropertyDef * prev;
924 struct PropertyDef * next;
926 struct __ecereNameSpace__ecere__sys__OldList * specifiers;
927 struct Declarator * declarator;
928 struct Identifier * id;
929 struct Statement * getStmt;
930 struct Statement * setStmt;
931 struct Statement * issetStmt;
932 struct Symbol * symbol;
933 unsigned int conversion;
934 unsigned int isWatchable;
935 struct Expression * category;
936 } __attribute__ ((gcc_struct));
938 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_PropertyWatch;
940 struct PropertyWatch;
942 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_ClassDef;
946 struct ClassDef * prev;
947 struct ClassDef * next;
952 struct Declaration * decl;
953 struct ClassFunction * function;
954 struct __ecereNameSpace__ecere__sys__OldList * defProperties;
955 struct PropertyDef * propertyDef;
956 struct PropertyWatch * propertyWatch;
958 struct Identifier * defaultProperty;
961 struct Identifier * id;
962 struct Initializer * initializer;
963 } __attribute__ ((gcc_struct));
964 } __attribute__ ((gcc_struct));
967 } __attribute__ ((gcc_struct));
969 extern YYSTYPE yylval;
971 extern struct Location yylloc;
973 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Definition;
977 struct Definition * prev;
978 struct Definition * next;
981 } __attribute__ ((gcc_struct));
985 struct Definition * prev;
986 struct Definition * next;
990 struct __ecereNameSpace__ecere__sys__OldList propertiesAndMembers;
991 struct __ecereNameSpace__ecere__sys__OldList classProperties;
992 struct __ecereNameSpace__ecere__sys__OldList methods;
993 unsigned int isRemote;
994 unsigned int isWatchable;
996 unsigned int isStatic;
997 unsigned int noExpansion;
998 } __attribute__ ((gcc_struct));
1000 static struct __ecereNameSpace__ecere__com__Class * __ecereClass_ClassDefine;
1004 struct Definition * prev;
1005 struct Definition * next;
1008 struct Expression * exp;
1009 } __attribute__ ((gcc_struct));
1011 static struct __ecereNameSpace__ecere__com__Class * __ecereClass_Define;
1013 struct FunctionDefine
1015 struct Definition * prev;
1016 struct Definition * next;
1020 } __attribute__ ((gcc_struct));
1022 static struct __ecereNameSpace__ecere__com__Class * __ecereClass_FunctionDefine;
1026 struct Definition * prev;
1027 struct Definition * next;
1031 } __attribute__ ((gcc_struct));
1033 static struct __ecereNameSpace__ecere__com__Class * __ecereClass_DataDefine;
1037 struct MethodDefine * prev, * next;
1041 unsigned int isVirtual;
1042 } __attribute__ ((gcc_struct));
1044 static struct __ecereNameSpace__ecere__com__Class * __ecereClass_MethodDefine;
1046 struct PropertyDefine
1048 struct PropertyDefine * prev, * next;
1052 unsigned int isWatchable;
1054 unsigned int isVirtual;
1055 unsigned int hasSet, hasGet;
1056 } __attribute__ ((gcc_struct));
1058 static struct __ecereNameSpace__ecere__com__Class * __ecereClass_PropertyDefine;
1060 struct DataMemberDefine
1062 struct DataMemberDefine * prev, * next;
1066 struct __ecereNameSpace__ecere__sys__OldList dataMembers;
1067 struct __ecereNameSpace__ecere__sys__OldList classProperties;
1071 } __attribute__ ((gcc_struct));
1073 static struct __ecereNameSpace__ecere__com__Class * __ecereClass_DataMemberDefine;
1075 void FreeMethodDefine(struct MethodDefine * method)
1077 (__ecereNameSpace__ecere__com__eSystem_Delete(method->name), method->name = 0);
1078 (__ecereNameSpace__ecere__com__eSystem_Delete(method->type), method->type = 0);
1081 void FreeDataMemberDefine(struct DataMemberDefine * dataMember)
1083 (__ecereNameSpace__ecere__com__eSystem_Delete(dataMember->name), dataMember->name = 0);
1084 (__ecereNameSpace__ecere__com__eSystem_Delete(dataMember->type), dataMember->type = 0);
1087 void FreeDataDefine(struct DataDefine * data)
1089 (__ecereNameSpace__ecere__com__eSystem_Delete(data->name), data->name = 0);
1090 (__ecereNameSpace__ecere__com__eSystem_Delete(data->type), data->type = 0);
1093 void __ecereMethod___ecereNameSpace__ecere__sys__OldList_Free(struct __ecereNameSpace__ecere__sys__OldList * this, void (* freeFn)(void * ));
1095 void FreeDefinition(struct Definition * definition)
1097 (__ecereNameSpace__ecere__com__eSystem_Delete(definition->name), definition->name = 0);
1098 switch(definition->type)
1102 struct ClassDefine * classDefine = (struct ClassDefine *)definition;
1104 (__ecereNameSpace__ecere__com__eSystem_Delete(classDefine->base), classDefine->base = 0);
1105 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Free(&classDefine->methods, FreeMethodDefine);
1106 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Free(&classDefine->propertiesAndMembers, FreeDataMemberDefine);
1110 (__ecereNameSpace__ecere__com__eSystem_Delete(((struct FunctionDefine *)definition)->dataType), ((struct FunctionDefine *)definition)->dataType = 0);
1113 (__ecereNameSpace__ecere__com__eSystem_Delete(((struct DataDefine *)definition)->dataType), ((struct DataDefine *)definition)->dataType = 0);
1120 static unsigned int globalInstance = 0x0;
1122 static struct Context * globalContext;
1124 static struct __ecereNameSpace__ecere__sys__OldList defines, imports, precompDefines;
1126 static struct __ecereNameSpace__ecere__com__Instance * privateModule;
1128 struct __ecereNameSpace__ecere__sys__OldList _excludedSymbols =
1130 0, 0, 0, (unsigned int)&((struct Symbol *)(void * )0)->left, 0
1133 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__NameSpace;
1135 struct __ecereNameSpace__ecere__com__NameSpace
1138 struct __ecereNameSpace__ecere__com__NameSpace * btParent;
1139 struct __ecereNameSpace__ecere__com__NameSpace * left;
1140 struct __ecereNameSpace__ecere__com__NameSpace * right;
1142 struct __ecereNameSpace__ecere__com__NameSpace * parent;
1143 struct __ecereNameSpace__ecere__sys__BinaryTree nameSpaces;
1144 struct __ecereNameSpace__ecere__sys__BinaryTree classes;
1145 struct __ecereNameSpace__ecere__sys__BinaryTree defines;
1146 struct __ecereNameSpace__ecere__sys__BinaryTree functions;
1147 } __attribute__ ((gcc_struct));
1149 static struct __ecereNameSpace__ecere__com__NameSpace globalData;
1151 extern struct Identifier * GetDeclId(struct Declarator * decl);
1153 extern char * __ecereNameSpace__ecere__sys__CopyString(char * string);
1155 extern void ProcessExpressionType(struct Expression * exp);
1157 extern void ComputeExpression(struct Expression * exp);
1159 extern int strtol(char * , char * * , int base);
1161 extern void FreeExpression(struct Expression * exp);
1163 extern struct Type * ProcessType(struct __ecereNameSpace__ecere__sys__OldList * specs, struct Declarator * decl);
1165 extern void PrintType(struct Type * type, char * string, unsigned int printName, unsigned int fullName);
1167 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__BitMember;
1169 struct __ecereNameSpace__ecere__com__BitMember
1171 struct __ecereNameSpace__ecere__com__BitMember * prev;
1172 struct __ecereNameSpace__ecere__com__BitMember * next;
1174 unsigned int isProperty;
1177 struct __ecereNameSpace__ecere__com__Class * _class;
1178 char * dataTypeString;
1179 struct __ecereNameSpace__ecere__com__Class * dataTypeClass;
1180 struct Type * dataType;
1185 } __attribute__ ((gcc_struct));
1187 extern struct __ecereNameSpace__ecere__com__BitMember * __ecereNameSpace__ecere__com__eClass_AddBitMember(struct __ecereNameSpace__ecere__com__Class * _class, char * name, char * type, int bitSize, int bitPos, int declMode);
1189 extern struct __ecereNameSpace__ecere__com__DataMember * __ecereNameSpace__ecere__com__eMember_AddDataMember(struct __ecereNameSpace__ecere__com__DataMember * member, char * name, char * type, unsigned int size, unsigned int alignment, int declMode);
1191 extern struct __ecereNameSpace__ecere__com__DataMember * __ecereNameSpace__ecere__com__eClass_AddDataMember(struct __ecereNameSpace__ecere__com__Class * _class, char * name, char * type, unsigned int size, unsigned int alignment, int declMode);
1193 extern struct __ecereNameSpace__ecere__com__DataMember * __ecereNameSpace__ecere__com__eMember_New(int type, int declMode);
1195 extern unsigned int __ecereNameSpace__ecere__com__eMember_AddMember(struct __ecereNameSpace__ecere__com__DataMember * addTo, struct __ecereNameSpace__ecere__com__DataMember * dataMember);
1197 extern unsigned int __ecereNameSpace__ecere__com__eClass_AddMember(struct __ecereNameSpace__ecere__com__Class * _class, struct __ecereNameSpace__ecere__com__DataMember * dataMember);
1199 extern struct __ecereNameSpace__ecere__sys__OldList * MkListOne(void * item);
1201 extern struct Declarator * MkDeclaratorIdentifier(struct Identifier * id);
1203 extern char * StringFromSpecDecl(struct __ecereNameSpace__ecere__sys__OldList * specs, struct Declarator * decl);
1205 extern struct __ecereNameSpace__ecere__com__Property * __ecereNameSpace__ecere__com__eClass_AddProperty(struct __ecereNameSpace__ecere__com__Class * _class, char * name, char * dataType, void * setStmt, void * getStmt, int declMode);
1207 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__ClassProperty;
1209 struct __ecereNameSpace__ecere__com__ClassProperty
1212 struct __ecereNameSpace__ecere__com__ClassProperty * parent;
1213 struct __ecereNameSpace__ecere__com__ClassProperty * left;
1214 struct __ecereNameSpace__ecere__com__ClassProperty * right;
1216 void (* Set)(struct __ecereNameSpace__ecere__com__Class *, long long);
1217 long long (* Get)(struct __ecereNameSpace__ecere__com__Class *);
1218 char * dataTypeString;
1219 struct Type * dataType;
1220 unsigned int constant;
1221 } __attribute__ ((gcc_struct));
1223 extern struct __ecereNameSpace__ecere__com__ClassProperty * __ecereNameSpace__ecere__com__eClass_AddClassProperty(struct __ecereNameSpace__ecere__com__Class * _class, char * name, char * dataType, void * setStmt, void * getStmt);
1225 extern struct __ecereNameSpace__ecere__com__Property * __ecereNameSpace__ecere__com__eClass_FindProperty(struct __ecereNameSpace__ecere__com__Class * _class, char * name, struct __ecereNameSpace__ecere__com__Instance * module);
1227 extern struct __ecereNameSpace__ecere__com__DataMember * __ecereNameSpace__ecere__com__eClass_FindDataMember(struct __ecereNameSpace__ecere__com__Class * _class, char * name, struct __ecereNameSpace__ecere__com__Instance * module, struct __ecereNameSpace__ecere__com__DataMember ** subMemberStack, int * subMemberStackPos);
1229 extern void * __ecereNameSpace__ecere__com__eInstance_New(struct __ecereNameSpace__ecere__com__Class * _class);
1231 void __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add(struct __ecereNameSpace__ecere__sys__OldList * this, void * item);
1233 static void AddDefinitions(struct ClassDefine * classDefine, struct DataMemberDefine * parentMemberDefine, struct __ecereNameSpace__ecere__com__Class * regClass, struct __ecereNameSpace__ecere__com__DataMember * member, struct __ecereNameSpace__ecere__sys__OldList * definitions)
1235 if(definitions != (((void *)0)))
1237 struct ClassDef * def;
1239 for(def = definitions->first; def; def = def->next)
1243 struct Declaration * decl = def->decl;
1244 struct __ecereNameSpace__ecere__com__DataMember * dataMember;
1245 struct Type * dataType;
1246 struct DataMemberDefine * dataMemberDefine;
1250 struct Declarator * d;
1252 if(decl->declarators)
1254 for(d = (*decl->declarators).first; d; d = d->next)
1257 struct Identifier * declId = GetDeclId(d);
1259 dataMemberDefine = __extension__ ({
1260 struct DataMemberDefine * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_DataMemberDefine);
1262 __ecereInstance1->isProperty = 3, __ecereInstance1->memberType = 0, __ecereInstance1->name = __ecereNameSpace__ecere__sys__CopyString(declId->string), __ecereInstance1;
1264 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add(&parentMemberDefine->dataMembers, dataMemberDefine);
1265 if(regClass && regClass->type == 2)
1267 struct Expression * sizeExp = d->structDecl.exp, * posExp = d->structDecl.posExp;
1268 int bitSize = 0, bitPos = -1;
1269 char dataTypeString[1024];
1271 dataTypeString[0] = '\0';
1274 ProcessExpressionType(sizeExp);
1275 ComputeExpression(sizeExp);
1276 if(sizeExp->isConstant)
1277 bitSize = strtol(sizeExp->constant, (((void *)0)), 0);
1278 FreeExpression(sizeExp);
1282 ProcessExpressionType(posExp);
1283 ComputeExpression(posExp);
1284 if(posExp->isConstant)
1285 bitPos = strtol(posExp->constant, (((void *)0)), 0);
1286 FreeExpression(posExp);
1288 d->structDecl.exp = (((void *)0));
1289 d->structDecl.posExp = (((void *)0));
1290 dataType = ProcessType(decl->specifiers, d);
1291 PrintType(dataType, dataTypeString, 0x0, 0x1);
1293 struct __ecereNameSpace__ecere__com__BitMember * member = __ecereNameSpace__ecere__com__eClass_AddBitMember(regClass, declId->string, dataTypeString, 0, 0, def->memberAccess);
1295 member->size = bitSize;
1296 member->pos = bitPos;
1297 dataMember = (struct __ecereNameSpace__ecere__com__DataMember *)member;
1300 dataMember->dataType = dataType;
1301 dataMemberDefine->size = bitSize;
1302 dataMemberDefine->bitPos = bitPos;
1303 dataMemberDefine->type = __ecereNameSpace__ecere__sys__CopyString(dataTypeString);
1308 char typeString[1024];
1310 typeString[0] = '\0';
1311 dataType = ProcessType(decl->specifiers, d);
1312 PrintType(dataType, typeString, 0x0, 0x1);
1314 dataMember = __ecereNameSpace__ecere__com__eMember_AddDataMember(member, declId->string, typeString, 0, 0, def->memberAccess);
1316 dataMember = __ecereNameSpace__ecere__com__eClass_AddDataMember(regClass, declId->string, typeString, 0, 0, def->memberAccess);
1318 dataMember->dataType = dataType;
1319 dataMemberDefine->type = __ecereNameSpace__ecere__sys__CopyString(typeString);
1322 dataMemberDefine->memberAccess = def->memberAccess;
1326 else if(decl->specifiers)
1328 struct Specifier * spec;
1330 for(spec = (*decl->specifiers).first; spec; spec = spec->next)
1332 if(spec->type == 3 || spec->type == 4)
1334 if(spec->definitions && !spec->id)
1336 struct __ecereNameSpace__ecere__com__DataMember * dataMember = __ecereNameSpace__ecere__com__eMember_New((spec->type == 4) ? 1 : 2, def->memberAccess);
1338 dataMemberDefine = __extension__ ({
1339 struct DataMemberDefine * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_DataMemberDefine);
1341 __ecereInstance1->isProperty = 3, __ecereInstance1->memberType = (spec->type == 4) ? 1 : 2, __ecereInstance1;
1343 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add(&parentMemberDefine->dataMembers, dataMemberDefine);
1344 AddDefinitions((((void *)0)), dataMemberDefine, (((void *)0)), dataMember, spec->definitions);
1346 __ecereNameSpace__ecere__com__eMember_AddMember(member, dataMember);
1348 __ecereNameSpace__ecere__com__eClass_AddMember(regClass, dataMember);
1350 else if(spec->definitions && spec->id && (*spec->definitions).count)
1353 struct Identifier * id = spec->id;
1354 char typeString[1024];
1356 typeString[0] = '\0';
1357 spec->id = (((void *)0));
1358 decl->declarators = MkListOne(MkDeclaratorIdentifier(id));
1359 dataType = ProcessType(decl->specifiers, (((void *)0)));
1360 PrintType(dataType, typeString, 0x0, 0x1);
1362 dataMember = __ecereNameSpace__ecere__com__eMember_AddDataMember(member, id->string, typeString, 0, 0, def->memberAccess);
1364 dataMember = __ecereNameSpace__ecere__com__eClass_AddDataMember(regClass, id->string, typeString, 0, 0, def->memberAccess);
1366 dataMember->dataType = dataType;
1373 else if(decl->type == 2)
1375 struct Instantiation * inst = decl->inst;
1376 struct Expression * exp = inst->exp;
1381 char * string = exp->identifier->string;
1384 struct Type * dataType = (dataType = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Type), dataType->kind = 8, dataType->_class = inst->_class->symbol, dataType->refCount = 1, dataType);
1387 dataMember = __ecereNameSpace__ecere__com__eMember_AddDataMember(member, string, inst->_class->name, 0, 0, def->memberAccess);
1389 dataMember = __ecereNameSpace__ecere__com__eClass_AddDataMember(regClass, string, inst->_class->name, 0, 0, def->memberAccess);
1391 dataMember->dataType = dataType;
1393 dataMemberDefine = __extension__ ({
1394 struct DataMemberDefine * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_DataMemberDefine);
1396 __ecereInstance1->isProperty = 3, __ecereInstance1->memberType = 0, __ecereInstance1->name = __ecereNameSpace__ecere__sys__CopyString(string), __ecereInstance1->type = __ecereNameSpace__ecere__sys__CopyString(inst->_class->name), __ecereInstance1;
1398 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add(&parentMemberDefine->dataMembers, dataMemberDefine);
1403 else if(def->type == 3 && def->propertyDef)
1405 struct PropertyDef * propertyDef = def->propertyDef;
1408 struct __ecereNameSpace__ecere__com__Property * prop;
1409 struct PropertyDefine * propDefine;
1412 char * dataTypeString = StringFromSpecDecl(propertyDef->specifiers, propertyDef->declarator);
1414 prop = __ecereNameSpace__ecere__com__eClass_AddProperty(regClass, propertyDef->conversion ? (((void *)0)) : propertyDef->id->string, dataTypeString, propertyDef->setStmt, propertyDef->getStmt, def->memberAccess);
1417 prop->IsSet = (void *)propertyDef->issetStmt;
1418 prop->compiled = 0x0;
1420 (__ecereNameSpace__ecere__com__eSystem_Delete(dataTypeString), dataTypeString = 0);
1424 prop->symbol = __extension__ ({
1425 struct Symbol * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Symbol);
1427 __ecereInstance1->string = __ecereNameSpace__ecere__sys__CopyString(propertyDef->symbol->string), __ecereInstance1->id = propertyDef->symbol->id, __ecereInstance1->type = propertyDef->symbol->type, __ecereInstance1;
1429 if(propertyDef->symbol->type)
1430 propertyDef->symbol->type->refCount++;
1431 propDefine = __extension__ ({
1432 struct PropertyDefine * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_PropertyDefine);
1434 __ecereInstance1->isProperty = 1, __ecereInstance1->name = prop->conversion ? (((void *)0)) : __ecereNameSpace__ecere__sys__CopyString(prop->name), __ecereInstance1->type = __ecereNameSpace__ecere__sys__CopyString(prop->dataTypeString), __ecereInstance1->isVirtual = 0x0, __ecereInstance1->memberAccess = def->memberAccess, __ecereInstance1->hasSet = propertyDef->setStmt ? 0x1 : 0x0, __ecereInstance1->hasGet = propertyDef->getStmt ? 0x1 : 0x0, __ecereInstance1->isWatchable = propertyDef->isWatchable, __ecereInstance1;
1436 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add(&classDefine->propertiesAndMembers, propDefine);
1440 else if(def->type == 10 && def->propertyDef)
1442 struct PropertyDef * propertyDef = def->propertyDef;
1445 struct __ecereNameSpace__ecere__com__ClassProperty * prop;
1446 struct PropertyDefine * propDefine;
1449 char * dataTypeString = StringFromSpecDecl(propertyDef->specifiers, propertyDef->declarator);
1451 prop = __ecereNameSpace__ecere__com__eClass_AddClassProperty(regClass, propertyDef->id->string, dataTypeString, propertyDef->setStmt, propertyDef->getStmt);
1452 (__ecereNameSpace__ecere__com__eSystem_Delete(dataTypeString), dataTypeString = 0);
1456 propDefine = __extension__ ({
1457 struct PropertyDefine * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_PropertyDefine);
1459 __ecereInstance1->name = __ecereNameSpace__ecere__sys__CopyString(prop->name), __ecereInstance1->type = __ecereNameSpace__ecere__sys__CopyString(prop->dataTypeString), __ecereInstance1->hasSet = propertyDef->setStmt ? 0x1 : 0x0, __ecereInstance1->hasGet = propertyDef->getStmt ? 0x1 : 0x0, __ecereInstance1;
1461 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add(&classDefine->classProperties, propDefine);
1465 else if(def->type == 7)
1467 classDefine->fixed = 0x1;
1469 else if(def->type == 6)
1471 classDefine->noExpansion = 0x1;
1473 else if(def->type == 13)
1475 struct __ecereNameSpace__ecere__com__DataMember * member;
1476 struct __ecereNameSpace__ecere__com__Property * prop;
1477 struct __ecereNameSpace__ecere__com__Method * method;
1479 if((prop = __ecereNameSpace__ecere__com__eClass_FindProperty(regClass, def->id->string, privateModule)))
1481 struct PropertyDefine * propDefine;
1483 prop = __ecereNameSpace__ecere__com__eClass_AddProperty(regClass, def->id->string, (((void *)0)), (((void *)0)), (((void *)0)), def->memberAccess);
1486 propDefine = __extension__ ({
1487 struct PropertyDefine * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_PropertyDefine);
1489 __ecereInstance1->isProperty = 1, __ecereInstance1->name = __ecereNameSpace__ecere__sys__CopyString(prop->name), __ecereInstance1->memberAccess = def->memberAccess, __ecereInstance1;
1491 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add(&classDefine->propertiesAndMembers, propDefine);
1494 else if((member = __ecereNameSpace__ecere__com__eClass_FindDataMember(regClass, def->id->string, privateModule, (((void *)0)), (((void *)0)))))
1496 struct DataMemberDefine * dataMemberDefine;
1498 member = __ecereNameSpace__ecere__com__eClass_AddDataMember(regClass, def->id->string, (((void *)0)), 0, 0, def->memberAccess);
1499 dataMemberDefine = __extension__ ({
1500 struct DataMemberDefine * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_DataMemberDefine);
1502 __ecereInstance1->isProperty = 3, __ecereInstance1->memberType = 0, __ecereInstance1->name = __ecereNameSpace__ecere__sys__CopyString(def->id->string), __ecereInstance1->memberAccess = def->memberAccess, __ecereInstance1;
1504 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add(&parentMemberDefine->dataMembers, dataMemberDefine);
1511 extern void FreeType(struct Type * type);
1513 extern struct __ecereNameSpace__ecere__com__Class * __ecereNameSpace__ecere__com__eSystem_RegisterClass(int type, char * name, char * baseName, int size, int sizeClass, unsigned int (* Constructor)(void * ), void (* Destructor)(void * ), struct __ecereNameSpace__ecere__com__Instance * module, int declMode, int inheritanceAccess);
1515 extern struct __ecereNameSpace__ecere__com__Method * __ecereNameSpace__ecere__com__eClass_AddVirtualMethod(struct __ecereNameSpace__ecere__com__Class * _class, char * name, char * type, void * function, int declMode);
1517 extern struct __ecereNameSpace__ecere__com__Method * __ecereNameSpace__ecere__com__eClass_AddMethod(struct __ecereNameSpace__ecere__com__Class * _class, char * name, char * type, void * function, int declMode);
1519 extern struct __ecereNameSpace__ecere__com__Method * __ecereNameSpace__ecere__com__eClass_FindMethod(struct __ecereNameSpace__ecere__com__Class * _class, char * name, struct __ecereNameSpace__ecere__com__Instance * module);
1521 extern char * strcpy(char * , const char * );
1523 extern char * strcat(char * , const char * );
1525 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_OpTable;
1529 unsigned int (* Add)(struct Expression *, struct Operand *, struct Operand *);
1530 unsigned int (* Sub)(struct Expression *, struct Operand *, struct Operand *);
1531 unsigned int (* Mul)(struct Expression *, struct Operand *, struct Operand *);
1532 unsigned int (* Div)(struct Expression *, struct Operand *, struct Operand *);
1533 unsigned int (* Mod)(struct Expression *, struct Operand *, struct Operand *);
1534 unsigned int (* Neg)(struct Expression *, struct Operand *);
1535 unsigned int (* Inc)(struct Expression *, struct Operand *);
1536 unsigned int (* Dec)(struct Expression *, struct Operand *);
1537 unsigned int (* Asign)(struct Expression *, struct Operand *, struct Operand *);
1538 unsigned int (* AddAsign)(struct Expression *, struct Operand *, struct Operand *);
1539 unsigned int (* SubAsign)(struct Expression *, struct Operand *, struct Operand *);
1540 unsigned int (* MulAsign)(struct Expression *, struct Operand *, struct Operand *);
1541 unsigned int (* DivAsign)(struct Expression *, struct Operand *, struct Operand *);
1542 unsigned int (* ModAsign)(struct Expression *, struct Operand *, struct Operand *);
1543 unsigned int (* BitAnd)(struct Expression *, struct Operand *, struct Operand *);
1544 unsigned int (* BitOr)(struct Expression *, struct Operand *, struct Operand *);
1545 unsigned int (* BitXor)(struct Expression *, struct Operand *, struct Operand *);
1546 unsigned int (* LShift)(struct Expression *, struct Operand *, struct Operand *);
1547 unsigned int (* RShift)(struct Expression *, struct Operand *, struct Operand *);
1548 unsigned int (* BitNot)(struct Expression *, struct Operand *);
1549 unsigned int (* AndAsign)(struct Expression *, struct Operand *, struct Operand *);
1550 unsigned int (* OrAsign)(struct Expression *, struct Operand *, struct Operand *);
1551 unsigned int (* XorAsign)(struct Expression *, struct Operand *, struct Operand *);
1552 unsigned int (* LShiftAsign)(struct Expression *, struct Operand *, struct Operand *);
1553 unsigned int (* RShiftAsign)(struct Expression *, struct Operand *, struct Operand *);
1554 unsigned int (* Not)(struct Expression *, struct Operand *);
1555 unsigned int (* Equ)(struct Expression *, struct Operand *, struct Operand *);
1556 unsigned int (* Nqu)(struct Expression *, struct Operand *, struct Operand *);
1557 unsigned int (* And)(struct Expression *, struct Operand *, struct Operand *);
1558 unsigned int (* Or)(struct Expression *, struct Operand *, struct Operand *);
1559 unsigned int (* Grt)(struct Expression *, struct Operand *, struct Operand *);
1560 unsigned int (* Sma)(struct Expression *, struct Operand *, struct Operand *);
1561 unsigned int (* GrtEqu)(struct Expression *, struct Operand *, struct Operand *);
1562 unsigned int (* SmaEqu)(struct Expression *, struct Operand *, struct Operand *);
1563 unsigned int (* Cond)(struct Expression *, struct Operand *, struct Operand *, struct Operand *);
1564 } __attribute__ ((gcc_struct));
1566 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Operand;
1572 unsigned int ptrSize;
1585 } __attribute__ ((gcc_struct));
1587 } __attribute__ ((gcc_struct));
1589 extern struct Operand GetOperand(struct Expression * exp);
1591 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__ClassTemplateParameter;
1593 struct __ecereNameSpace__ecere__com__ClassTemplateParameter
1595 struct __ecereNameSpace__ecere__com__ClassTemplateParameter * prev;
1596 struct __ecereNameSpace__ecere__com__ClassTemplateParameter * next;
1601 char * dataTypeString;
1603 } __attribute__ ((gcc_struct));
1604 struct __ecereNameSpace__ecere__com__ClassTemplateArgument defaultArg;
1606 } __attribute__ ((gcc_struct));
1608 extern struct __ecereNameSpace__ecere__com__ClassTemplateParameter * __ecereNameSpace__ecere__com__eClass_AddTemplateParameter(struct __ecereNameSpace__ecere__com__Class * _class, char * name, int type, void * info, struct __ecereNameSpace__ecere__com__ClassTemplateArgument * defaultArg);
1610 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, unsigned int isWatchable, int declMode)
1612 struct __ecereNameSpace__ecere__com__Class * regClass;
1613 struct ClassDef * def;
1614 struct ClassDefine * classDefine;
1615 char baseName[1024];
1616 unsigned int unitType = 0x0;
1617 unsigned int wouldBeEnum = 0x0;
1618 int inheritanceAccess = 1;
1621 if(baseSpecs != (((void *)0)))
1623 struct Type * baseType = ProcessType(baseSpecs, (((void *)0)));
1625 PrintType(baseType, baseName, 0x0, 0x1);
1626 if(baseType->kind == 8)
1628 if(baseType->_class->registered && classType == 0)
1630 if(baseType->_class->registered->type == 3)
1632 else if(baseType->_class->registered->type == 2)
1634 else if(baseType->_class->registered->type == 5)
1636 else if(baseType->_class->registered->type == 4)
1642 else if(baseType->kind == 9 || baseType->kind == 10)
1650 if(((struct Specifier *)baseSpecs->first)->type == 0 && ((struct Specifier *)baseSpecs->first)->specifier == PRIVATE)
1651 inheritanceAccess = 2;
1657 if(definitions != (((void *)0)))
1659 for(def = definitions->first; def; def = def->next)
1663 struct Declaration * decl = def->decl;
1672 if(decl->declarators)
1674 struct Declarator * d;
1676 for(d = (*decl->declarators).first; d; d = d->next)
1678 if(d->structDecl.exp)
1692 if(classType == 0 && wouldBeEnum)
1694 regClass = symbol->registered = __ecereNameSpace__ecere__com__eSystem_RegisterClass((classType == 6) ? 1 : classType, symbol->string, baseName[0] ? baseName : (((void *)0)), 0, 0, (((void *)0)), (((void *)0)), privateModule, 1, inheritanceAccess);
1696 regClass->symbol = symbol;
1697 classDefine = __extension__ ({
1698 struct ClassDefine * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_ClassDefine);
1700 __ecereInstance1->type = 1, __ecereInstance1->name = __ecereNameSpace__ecere__sys__CopyString(symbol->string), __ecereInstance1->base = baseName[0] ? __ecereNameSpace__ecere__sys__CopyString(baseName) : (((void *)0)), __ecereInstance1->isStatic = declMode == 3, __ecereInstance1->isRemote = symbol->isRemote, __ecereInstance1->isWatchable = isWatchable, __ecereInstance1;
1702 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add(&precompDefines, classDefine);
1705 struct __ecereNameSpace__ecere__com__DataMember * unionMember = __ecereNameSpace__ecere__com__eMember_New(1, 1);
1706 struct DataMemberDefine * unionDefine;
1708 unionDefine = __extension__ ({
1709 struct DataMemberDefine * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_DataMemberDefine);
1711 __ecereInstance1->isProperty = 3, __ecereInstance1->memberType = 1, __ecereInstance1;
1713 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add(&classDefine->propertiesAndMembers, unionDefine);
1714 AddDefinitions(classDefine, unionDefine, regClass, unionMember, definitions);
1715 __ecereNameSpace__ecere__com__eClass_AddMember(regClass, unionMember);
1718 AddDefinitions(classDefine, (struct DataMemberDefine *)classDefine, regClass, (((void *)0)), definitions);
1719 if(definitions != (((void *)0)))
1721 for(def = definitions->first; def; def = def->next)
1725 struct ClassFunction * func = def->function;
1727 if(!func->dontMangle && func->declarator)
1729 struct Identifier * id = GetDeclId(func->declarator);
1730 struct __ecereNameSpace__ecere__com__Method * method;
1731 struct MethodDefine * methodDefine;
1734 char * dataTypeString = StringFromSpecDecl(func->specifiers, func->declarator);
1737 method = __ecereNameSpace__ecere__com__eClass_AddVirtualMethod(regClass, id->string, dataTypeString, func->declarator->symbol, def->memberAccess);
1739 method = __ecereNameSpace__ecere__com__eClass_AddMethod(regClass, id->string, dataTypeString, func->declarator->symbol, def->memberAccess);
1740 (__ecereNameSpace__ecere__com__eSystem_Delete(dataTypeString), dataTypeString = 0);
1744 method->symbol = __extension__ ({
1745 struct Symbol * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Symbol);
1747 __ecereInstance1->string = __ecereNameSpace__ecere__sys__CopyString(func->declarator->symbol->string), __ecereInstance1->id = func->declarator->symbol->id, __ecereInstance1->type = func->declarator->symbol->type, __ecereInstance1;
1749 if(func->declarator->symbol->type)
1750 func->declarator->symbol->type->refCount++;
1751 ((struct Symbol *)method->symbol)->method = method;
1752 func->declarator->symbol = (((void *)0));
1753 if(method->type != 1 || method->_class == regClass)
1755 methodDefine = __extension__ ({
1756 struct MethodDefine * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_MethodDefine);
1758 __ecereInstance1->name = __ecereNameSpace__ecere__sys__CopyString(method->name), __ecereInstance1->type = __ecereNameSpace__ecere__sys__CopyString(method->dataTypeString), __ecereInstance1->memberAccess = def->memberAccess, __ecereInstance1->isVirtual = method->type == 1, __ecereInstance1;
1760 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add(&classDefine->methods, methodDefine);
1765 else if(def->type == 13)
1767 struct __ecereNameSpace__ecere__com__Method * method;
1769 if((method = __ecereNameSpace__ecere__com__eClass_FindMethod(regClass, def->id->string, privateModule)))
1771 struct MethodDefine * methodDefine;
1773 method = __ecereNameSpace__ecere__com__eClass_AddMethod(regClass, def->id->string, (((void *)0)), (((void *)0)), def->memberAccess);
1774 methodDefine = __extension__ ({
1775 struct MethodDefine * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_MethodDefine);
1777 __ecereInstance1->name = __ecereNameSpace__ecere__sys__CopyString(method->name), __ecereInstance1->memberAccess = def->memberAccess, __ecereInstance1;
1779 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add(&classDefine->methods, methodDefine);
1784 if(regClass && symbol->templateParams)
1786 struct TemplateParameter * param;
1788 for(param = (*symbol->templateParams).first; param; param = param->next)
1790 struct __ecereNameSpace__ecere__com__ClassTemplateArgument defaultArg =
1795 if(param->defaultArgument)
1800 defaultArg.dataTypeString = StringFromSpecDecl(param->defaultArgument->templateDatatype->specifiers, param->defaultArgument->templateDatatype->decl);
1804 char memberString[1024];
1806 memberString[0] = '\0';
1807 if(param->defaultArgument->identifier->_class && param->defaultArgument->identifier->_class->name)
1809 if(param->defaultArgument->identifier->_class->type == 8)
1810 strcpy(memberString, param->defaultArgument->identifier->_class->templateParameter->identifier->string);
1812 strcpy(memberString, param->defaultArgument->identifier->_class->name);
1816 strcat(memberString, "::");
1818 strcat(memberString, param->defaultArgument->identifier->string);
1819 defaultArg.memberString = __ecereNameSpace__ecere__sys__CopyString(memberString);
1826 ProcessExpressionType(param->defaultArgument->expression);
1827 ComputeExpression(param->defaultArgument->expression);
1828 op = GetOperand(param->defaultArgument->expression);
1829 defaultArg.expression.ui64 = op.ui64;
1834 if(param->type == 1)
1836 __ecereNameSpace__ecere__com__eClass_AddTemplateParameter(regClass, param->identifier->string, param->type, (void *)param->memberType, &defaultArg);
1840 char * typeString = param->dataType ? StringFromSpecDecl(param->dataType->specifiers, param->dataType->decl) : (((void *)0));
1842 __ecereNameSpace__ecere__com__eClass_AddTemplateParameter(regClass, param->identifier->string, param->type, typeString, &defaultArg);
1848 extern void SetParsingType(unsigned int b);
1850 extern void __ecereNameSpace__ecere__com__eEnum_AddFixedValue(struct __ecereNameSpace__ecere__com__Class * _class, char * string, int value);
1852 extern int __ecereNameSpace__ecere__com__eEnum_AddValue(struct __ecereNameSpace__ecere__com__Class * _class, char * string);
1854 static void ProcessClassEnumValues(int classType, struct __ecereNameSpace__ecere__sys__OldList * definitions, struct Symbol * symbol, struct __ecereNameSpace__ecere__sys__OldList * baseSpecs, struct __ecereNameSpace__ecere__sys__OldList * enumValues)
1856 struct __ecereNameSpace__ecere__com__Class * regClass = symbol->registered;
1858 if(regClass && enumValues)
1860 struct Enumerator * e;
1862 for(e = enumValues->first; e; e = e->next)
1866 struct Type * destType = (destType = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Type), destType->kind = 3, destType->refCount = 1, destType);
1868 e->exp->destType = destType;
1869 SetParsingType(0x1);
1870 ProcessExpressionType(e->exp);
1871 SetParsingType(0x0);
1872 if(!e->exp->expType)
1875 destType->_class = symbol;
1876 ProcessExpressionType(e->exp);
1878 ComputeExpression(e->exp);
1879 if(e->exp->isConstant && e->exp->type == 2)
1881 struct Operand op = GetOperand(e->exp);
1887 value = op.type->isSigned ? (int)op.c : (int)op.uc;
1890 value = op.type->isSigned ? (int)op.s : (int)op.us;
1895 __ecereNameSpace__ecere__com__eEnum_AddFixedValue(regClass, e->id->string, value);
1898 __ecereNameSpace__ecere__com__eEnum_AddValue(regClass, e->id->string);
1901 __ecereNameSpace__ecere__com__eEnum_AddValue(regClass, e->id->string);
1906 extern struct __ecereNameSpace__ecere__sys__OldList * GetAST(void);
1908 extern struct Symbol * FindClass(char * name);
1910 extern void SetCurrentNameSpace(char * s);
1912 extern void ComputeModuleClasses(struct __ecereNameSpace__ecere__com__Instance * module);
1914 void PreCompPreProcessClassDefinitions()
1916 struct __ecereNameSpace__ecere__sys__OldList * ast = GetAST();
1917 struct External * external, * next;
1919 for(external = (*ast).first; external; external = next)
1921 next = external->next;
1922 if(external->type == 2)
1924 struct ClassDefinition * _class = external->_class;
1926 if(_class->declMode == 1 || _class->declMode == 2 || _class->declMode == 3)
1928 if(_class->definitions)
1930 ProcessClass(0, _class->definitions, _class->symbol, _class->baseSpecs, (((void *)0)), _class->deleteWatchable, _class->declMode);
1934 else if(external->type == 1)
1936 struct Declaration * declaration = external->declaration;
1938 if(declaration->type == 1)
1940 if(external->declaration->declMode == 1 || external->declaration->declMode == 2 || external->declaration->declMode == 3)
1942 if(declaration->specifiers)
1944 struct Specifier * specifier;
1946 for(specifier = (*declaration->specifiers).first; specifier; specifier = specifier->next)
1948 if((specifier->type == 2 || specifier->type == 3 || specifier->type == 4) && specifier->id && specifier->id->string && (declaration->declMode || specifier->baseSpecs || (specifier->type == 2 && specifier->definitions)))
1950 struct Symbol * symbol = FindClass(specifier->id->string);
1956 if(specifier->type == 2)
1958 else if(specifier->type == 4)
1962 ProcessClass(classType, specifier->definitions, symbol, specifier->baseSpecs, specifier->list, 0x0, external->declaration->declMode);
1967 if(external->declaration->declMode == 1 || external->declaration->declMode == 2)
1969 if(declaration->declarators)
1971 struct InitDeclarator * d;
1973 for(d = (*declaration->declarators).first; d; d = d->next)
1977 struct Symbol * symbol = d->declarator->symbol;
1981 struct DataDefine * dataDefine;
1982 char typeString[1024];
1984 typeString[0] = '\0';
1985 PrintType(symbol->type, typeString, 0x0, 0x1);
1986 dataDefine = __extension__ ({
1987 struct DataDefine * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_DataDefine);
1989 __ecereInstance1->type = 4, __ecereInstance1->name = __ecereNameSpace__ecere__sys__CopyString(symbol->string), __ecereInstance1->dataType = __ecereNameSpace__ecere__sys__CopyString(typeString), __ecereInstance1;
1991 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add(&precompDefines, dataDefine);
1999 else if(declaration->type == 2)
2001 if(external->declaration->declMode == 1 || external->declaration->declMode == 2)
2003 struct Symbol * symbol = declaration->inst->symbol;
2007 struct DataDefine * dataDefine;
2008 char typeString[1024];
2010 typeString[0] = '\0';
2011 PrintType(symbol->type, typeString, 0x0, 0x1);
2012 dataDefine = __extension__ ({
2013 struct DataDefine * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_DataDefine);
2015 __ecereInstance1->type = 4, __ecereInstance1->name = __ecereNameSpace__ecere__sys__CopyString(symbol->string), __ecereInstance1->dataType = __ecereNameSpace__ecere__sys__CopyString(typeString), __ecereInstance1;
2017 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add(&precompDefines, dataDefine);
2020 globalInstance = 0x1;
2022 else if(declaration->type == 3)
2024 if(external->declaration->declMode == 1 || external->declaration->declMode == 2)
2026 struct Define * definition = (definition = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Define), definition->type = 2, definition->name = __ecereNameSpace__ecere__sys__CopyString(declaration->id->string), definition->exp = declaration->exp, definition);
2028 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add(&precompDefines, definition);
2032 else if(external->type == 0 && (external->function->declMode == 1 || external->function->declMode == 2))
2034 struct FunctionDefinition * function = external->function;
2035 struct FunctionDefine * functionDefine;
2036 char typeString[1024];
2038 typeString[0] = '\0';
2039 PrintType(function->declarator->symbol->type, typeString, 0x1, 0x1);
2040 functionDefine = __extension__ ({
2041 struct FunctionDefine * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_FunctionDefine);
2043 __ecereInstance1->type = 3, __ecereInstance1->name = __ecereNameSpace__ecere__sys__CopyString(function->declarator->symbol->string), __ecereInstance1->dataType = __ecereNameSpace__ecere__sys__CopyString(typeString), __ecereInstance1;
2045 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add(&precompDefines, functionDefine);
2047 else if(external->type == 4)
2049 SetCurrentNameSpace(external->id->string);
2052 ComputeModuleClasses(privateModule);
2053 for(external = (*ast).first; external; external = next)
2055 next = external->next;
2056 if(external->type == 1 && (external->declaration->declMode == 1 || external->declaration->declMode == 2))
2058 struct Declaration * declaration = external->declaration;
2060 if(declaration->type == 1)
2062 if(declaration->specifiers)
2064 struct Specifier * specifier;
2066 for(specifier = (*declaration->specifiers).first; specifier; specifier = specifier->next)
2068 if((specifier->type == 2) && specifier->id && specifier->id->string && (declaration->declMode || specifier->baseSpecs || (specifier->type == 2 && specifier->definitions)))
2070 struct Symbol * symbol = FindClass(specifier->id->string);
2074 ProcessClassEnumValues(4, specifier->definitions, symbol, specifier->baseSpecs, specifier->list);
2084 int __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(struct __ecereNameSpace__ecere__com__Instance * this, char * format, ...);
2086 static void OutputDataMembers(struct ClassDefine * classDefine, struct __ecereNameSpace__ecere__com__Class * _class, struct __ecereNameSpace__ecere__com__Instance * f)
2088 if(classDefine->propertiesAndMembers.first)
2090 struct DataMemberDefine * member = classDefine->propertiesAndMembers.first;
2093 for(member = classDefine->propertiesAndMembers.first; member; member = member->next)
2095 if(member->isProperty == 1)
2097 struct PropertyDefine * prop = (struct PropertyDefine *)member;
2102 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, " .\n");
2103 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, " [Defined Properties]\n");
2106 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, " %s\n", prop->name);
2108 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, " [Conversion]\n");
2109 if(prop->memberAccess == 1)
2110 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, " [Public]\n");
2112 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, " [Private]\n");
2114 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, " [Virtual]\n");
2116 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, " [Set]\n");
2118 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, " [Get]\n");
2119 if(prop->isWatchable)
2120 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, " [Watchable]\n");
2121 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, " [Type]\n");
2122 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, " %s\n", prop->type ? prop->type : "");
2129 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, " .\n");
2130 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, " [Defined Data Members]\n");
2132 if(member->memberType == 0)
2134 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, " %s\n", member->name);
2135 if(member->memberAccess == 1)
2136 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, " [Public]\n");
2138 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, " [Private]\n");
2139 if(_class && _class->type == 2)
2143 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, " [Size]\n");
2144 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, " %d\n", member->size);
2146 if(member->bitPos != -1)
2148 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, " [Pos]\n");
2149 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, " %d\n", member->bitPos);
2152 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, " [Type]\n");
2153 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, " %s\n", member->type ? member->type : "");
2157 if(member->memberAccess == 1)
2158 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, " [Public]\n");
2160 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, " [Private]\n");
2161 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, (member->memberType == 1) ? " [Union]\n" : " [Struct]\n");
2162 OutputDataMembers((struct ClassDefine *)member, (((void *)0)), f);
2165 last = member->isProperty;
2167 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, " .\n");
2169 if(classDefine->classProperties.first)
2171 struct PropertyDefine * prop = classDefine->propertiesAndMembers.first;
2173 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, " [Defined Class Properties]\n");
2174 for(prop = classDefine->classProperties.first; prop; prop = prop->next)
2177 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, " %s\n", prop->name);
2179 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, " [Set]\n");
2181 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, " [Get]\n");
2182 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, " [Type]\n");
2183 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, " %s\n", prop->type ? prop->type : "");
2185 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, " .\n");
2189 extern struct __ecereNameSpace__ecere__com__Instance * __ecereNameSpace__ecere__sys__FileOpen(char * fileName, int mode);
2191 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_ImportedModule;
2193 struct ImportedModule
2195 struct ImportedModule * prev;
2196 struct ImportedModule * next;
2200 unsigned int globalInstance;
2201 unsigned int dllOnly;
2203 } __attribute__ ((gcc_struct));
2205 extern struct __ecereNameSpace__ecere__com__Class * __ecereNameSpace__ecere__com__eSystem_FindClass(struct __ecereNameSpace__ecere__com__Instance * module, char * name);
2207 extern void PrintExpression(struct Expression * exp, char * string);
2209 extern void __ecereNameSpace__ecere__sys__ChangeCh(char * string, char ch1, char ch2);
2211 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__EnumClassData;
2213 struct __ecereNameSpace__ecere__com__EnumClassData
2215 struct __ecereNameSpace__ecere__sys__OldList values;
2217 } __attribute__ ((gcc_struct));
2219 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__sys__NamedLink;
2221 struct __ecereNameSpace__ecere__sys__NamedLink
2223 struct __ecereNameSpace__ecere__sys__NamedLink * prev;
2224 struct __ecereNameSpace__ecere__sys__NamedLink * next;
2227 } __attribute__ ((gcc_struct));
2229 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__DefinedExpression;
2231 struct __ecereNameSpace__ecere__com__DefinedExpression;
2233 extern struct __ecereNameSpace__ecere__com__DefinedExpression * __ecereNameSpace__ecere__com__eSystem_FindDefine(struct __ecereNameSpace__ecere__com__Instance * module, char * name);
2235 extern void OutputExpression(struct Expression * exp, struct __ecereNameSpace__ecere__com__Instance * f);
2237 int __ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts;
2239 extern void __ecereNameSpace__ecere__com__eInstance_DecRef(struct __ecereNameSpace__ecere__com__Instance * instance);
2241 static void OutputSymbols(char * fileName)
2243 struct __ecereNameSpace__ecere__com__Instance * f = __ecereNameSpace__ecere__sys__FileOpen(fileName, 2);
2247 int lastType = (int)-1;
2248 struct Definition * definition;
2251 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "[Global Instance]\n");
2252 for(definition = precompDefines.first; definition; definition = definition->next)
2254 if(definition->type != lastType)
2256 if(lastType != (int)-1)
2257 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, " .\n");
2258 if(definition->type == 0)
2259 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "[Imported Modules]\n");
2260 else if(definition->type == 1)
2261 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "[Defined Classes]\n");
2262 else if(definition->type == 2)
2263 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "[Defined Expressions]\n");
2264 else if(definition->type == 3)
2265 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "[Defined Functions]\n");
2266 else if(definition->type == 4)
2267 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "[Defined Data]\n");
2268 lastType = definition->type;
2270 if(definition->type == 0)
2272 struct ImportedModule * module = (struct ImportedModule *)definition;
2274 if(module->importType == 1)
2275 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, " [Static]\n");
2276 else if(module->importType == 2)
2277 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, " [Remote]\n");
2278 if(module->importAccess == 2)
2279 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, " [Private]\n");
2280 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, " %s\n", module->name);
2282 else if(definition->type == 1)
2284 struct __ecereNameSpace__ecere__com__Class * _class = __ecereNameSpace__ecere__com__eSystem_FindClass(privateModule, definition->name);
2285 struct ClassDefine * classDefine = (struct ClassDefine *)definition;
2287 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, " %s\n", definition->name);
2288 if(classDefine->isStatic)
2289 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, " [Static]\n");
2290 if(classDefine->fixed)
2291 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, " [Fixed]\n");
2292 if(classDefine->noExpansion)
2293 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, " [No Expansion]\n");
2294 if(classDefine->isRemote)
2295 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, " [Remote]\n");
2296 if(classDefine->isWatchable)
2297 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, " [Watchable]\n");
2298 if(_class->type == 4)
2299 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, " [Enum]\n");
2300 else if(_class->type == 2)
2301 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, " [Bit]\n");
2302 else if(_class->type == 1)
2303 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, " [Struct]\n");
2304 else if(_class->type == 3)
2305 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, " [Unit]\n");
2306 else if(_class->type == 5)
2307 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, " [NoHead]\n");
2308 if(_class->inheritanceAccess == 2)
2309 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, " [Private Base]\n");
2311 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, " [Base]\n");
2312 if(classDefine->base)
2313 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, " %s\n", classDefine->base);
2315 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, " [None]\n");
2316 if(_class->templateParams.count)
2318 struct __ecereNameSpace__ecere__com__ClassTemplateParameter * param;
2319 struct TemplateParameter * tp;
2321 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, " [Template Parameters]\n");
2322 for(tp = (*((struct Symbol *)_class->symbol)->templateParams).first, param = _class->templateParams.first; param && tp; param = param->next, tp = tp->next)
2324 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, " %s\n", param->name);
2328 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, " [Type]\n");
2329 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, " %s\n", param->dataTypeString ? param->dataTypeString : "[None]");
2330 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, " %s\n", param->defaultArg.dataTypeString ? param->defaultArg.dataTypeString : "[None]");
2333 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, " [Expression]\n");
2334 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, " %s\n", param->dataTypeString ? param->dataTypeString : "[None]");
2335 if(tp->defaultArgument && tp->defaultArgument->expression)
2340 PrintExpression(tp->defaultArgument->expression, temp);
2341 __ecereNameSpace__ecere__sys__ChangeCh(temp, '\n', ' ');
2342 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, " ");
2343 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))f->_vTbl[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, temp);
2344 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))f->_vTbl[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, "\n");
2347 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, " [None]\n");
2350 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, " [Identifier]\n");
2351 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, " %s\n", (param->memberType == 0) ? "[Data member]" : ((param->memberType == 1) ? "[Method]" : "[Property]"));
2352 if(tp->defaultArgument && tp->defaultArgument->identifier)
2354 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, " ");
2355 if(tp->defaultArgument->identifier->_class && tp->defaultArgument->identifier->_class->type == 1 && tp->defaultArgument->identifier->_class->name)
2357 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "%s::", tp->defaultArgument->identifier->_class->name);
2359 else if(tp->defaultArgument->identifier->_class && tp->defaultArgument->identifier->_class->type == 8 && tp->defaultArgument->identifier->_class->templateParameter->identifier)
2361 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "%s::", tp->defaultArgument->identifier->_class->templateParameter->identifier->string);
2363 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "%s\n", tp->defaultArgument->identifier->string);
2367 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, " [None]\n");
2372 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, " .\n");
2374 if(!classDefine->isStatic)
2376 if(classDefine->methods.first)
2378 struct MethodDefine * method;
2380 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, " [Defined Methods]\n");
2381 for(method = classDefine->methods.first; method; method = method->next)
2383 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, " %s\n", method->name);
2384 if(method->memberAccess == 1)
2385 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, " [Public]\n");
2387 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, " [Private]\n");
2388 if(method->isVirtual)
2389 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, " [Virtual]\n");
2390 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, " [Type]\n");
2391 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, " %s\n", method->type ? method->type : "");
2393 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, " .\n");
2395 OutputDataMembers(classDefine, _class, f);
2396 if(_class->type == 4)
2398 struct __ecereNameSpace__ecere__sys__NamedLink * value;
2399 struct __ecereNameSpace__ecere__com__Class * enumClass = __ecereNameSpace__ecere__com__eSystem_FindClass(privateModule, "enum");
2400 struct __ecereNameSpace__ecere__com__EnumClassData * e = (_class ? ((void *)(((char *)_class->data) + enumClass->offsetClass)) : (((void *)0)));
2402 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, " [Enum Values]\n");
2403 for(value = e->values.first; value; value = value->next)
2405 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, " %s = %d\n", value->name, value->data);
2407 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, " .\n");
2411 else if(definition->type == 2)
2413 struct __ecereNameSpace__ecere__com__DefinedExpression * defExp = __ecereNameSpace__ecere__com__eSystem_FindDefine(privateModule, definition->name);
2414 struct Define * defineDefine = (struct Define *)definition;
2416 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, " %s\n", definition->name);
2417 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, " [Value]\n");
2418 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, " ");
2419 OutputExpression(defineDefine->exp, f);
2420 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "\n");
2422 else if(definition->type == 3)
2424 struct FunctionDefine * functionDefine = (struct FunctionDefine *)definition;
2426 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, " %s\n", functionDefine->name);
2427 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, " [Type]\n");
2428 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, " %s\n", functionDefine->dataType);
2430 else if(definition->type == 4)
2432 struct DataDefine * dataDefine = (struct DataDefine *)definition;
2434 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, " %s\n", dataDefine->name);
2435 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, " [Type]\n");
2436 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, " %s\n", dataDefine->dataType);
2439 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, " .\n");
2440 (__ecereNameSpace__ecere__com__eInstance_DecRef(f), f = 0);
2444 static struct __ecereNameSpace__ecere__com__Class * __ecereClass_PrecompApp;
2446 extern int __ecereNameSpace__ecere__com__GetRuntimePlatform(void);
2448 extern int GetHostBits(void);
2450 extern int strcmp(const char * , const char * );
2452 extern size_t strlen(const char * );
2454 extern char * GetOutputFile(void);
2456 extern void SetOutputFile(char * s);
2458 extern char * GetSourceFile(void);
2460 extern void SetSourceFile(char * s);
2462 extern void SetSymbolsDir(char * s);
2464 extern void SetDefaultNameSpace(char * s);
2466 extern void SetStrictNameSpaces(unsigned int b);
2468 extern char * GetSymbolsDir(void);
2470 extern char * __ecereNameSpace__ecere__sys__PathCat(char * string, char * addedPath);
2472 extern char * __ecereNameSpace__ecere__sys__ChangeExtension(char * string, char * ext, char * output);
2474 extern int printf(char * , ...);
2476 extern char * __ecereNameSpace__ecere__GetTranslatedString(struct __ecereNameSpace__ecere__com__Instance * module, char * string, char * stringAndContext);
2478 extern struct __ecereNameSpace__ecere__com__Instance * __thisModule;
2480 extern void SetGlobalContext(struct Context * context);
2482 extern void SetTopContext(struct Context * context);
2484 extern void SetCurrentContext(struct Context * context);
2486 extern void SetExcludedSymbols(struct __ecereNameSpace__ecere__sys__OldList * list);
2488 extern void SetGlobalData(struct __ecereNameSpace__ecere__com__NameSpace * nameSpace);
2490 extern void SetDefines(struct __ecereNameSpace__ecere__sys__OldList * list);
2492 extern void SetImports(struct __ecereNameSpace__ecere__sys__OldList * list);
2494 extern void SetPrecompDefines(struct __ecereNameSpace__ecere__sys__OldList * list);
2496 extern void SetInPreCompiler(unsigned int b);
2498 extern void SetTargetPlatform(int platform);
2500 extern void SetTargetBits(int bits);
2502 extern void SetEchoOn(unsigned int b);
2504 extern struct __ecereNameSpace__ecere__com__Instance * __ecereNameSpace__ecere__com____ecere_COM_Initialize(unsigned int guiApp, int argc, char * argv[]);
2506 extern void SetPrivateModule(struct __ecereNameSpace__ecere__com__Instance * module);
2508 extern struct Type * ProcessTypeString(char * string, unsigned int staticMethod);
2510 extern unsigned int __ecereNameSpace__ecere__sys__FileExists(char * fileName);
2512 extern unsigned int __ecereNameSpace__ecere__sys__DeleteFile(char * fileName);
2514 extern int snprintf(char * , size_t, char * , ...);
2516 extern struct __ecereNameSpace__ecere__com__Instance * __ecereNameSpace__ecere__sys__DualPipeOpen(unsigned int mode, char * commandLine);
2518 extern void SetFileInput(struct __ecereNameSpace__ecere__com__Instance * file);
2520 extern void SetMainModule(struct ModuleImport * moduleImport);
2522 extern void resetScanner(void);
2524 extern void ParseEc(void);
2526 extern void SetYydebug(unsigned int b);
2528 extern void ProcessDBTableDefinitions(void);
2530 extern void FreeASTTree(struct __ecereNameSpace__ecere__sys__OldList * ast);
2532 extern void FreeContext(struct Context * context);
2534 extern void FreeExcludedSymbols(struct __ecereNameSpace__ecere__sys__OldList * excludedSymbols);
2536 extern void FreeModuleDefine(struct Definition * def);
2538 extern void FreeModuleImport(struct ModuleImport * imp);
2540 extern void FreeTypeData(struct __ecereNameSpace__ecere__com__Instance * privateModule);
2542 extern void FreeIncludeFiles(void);
2544 extern void FreeGlobalData(struct __ecereNameSpace__ecere__com__NameSpace * globalDataList);
2546 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__sys__TempFile;
2548 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__Application;
2550 struct __ecereNameSpace__ecere__com__Application
2555 unsigned int isGUIApp;
2556 struct __ecereNameSpace__ecere__sys__OldList allModules;
2557 char * parsedCommand;
2558 struct __ecereNameSpace__ecere__com__NameSpace systemNameSpace;
2559 } __attribute__ ((gcc_struct));
2561 char * __ecereProp___ecereNameSpace__ecere__com__Platform_Get_char__PTR_(int this);
2563 int __ecereProp___ecereNameSpace__ecere__com__Platform_Set_char__PTR_(char * value);
2565 extern struct __ecereNameSpace__ecere__com__Property ** __ecereProp___ecereNameSpace__ecere__com__Platform_char__PTR_;
2567 unsigned int __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Add(struct __ecereNameSpace__ecere__sys__BinaryTree * this, struct __ecereNameSpace__ecere__sys__BTNode * node);
2569 int __ecereVMethodID___ecereNameSpace__ecere__sys__File_Eof;
2571 int __ecereVMethodID___ecereNameSpace__ecere__sys__File_Read;
2573 int __ecereVMethodID___ecereNameSpace__ecere__sys__File_Write;
2575 int __ecereMethod___ecereNameSpace__ecere__sys__DualPipe_GetExitCode();
2577 int __ecereVMethodID___ecereNameSpace__ecere__sys__File_Seek;
2579 void __ecereMethod_PrecompApp_Main(struct __ecereNameSpace__ecere__com__Instance * this)
2582 unsigned int valid = 0x1;
2583 char defaultSymFile[797];
2584 char * cppCommand = (((void *)0));
2585 char * cppOptions = (((void *)0));
2586 int cppOptionsLen = 0;
2587 int targetPlatform = __ecereNameSpace__ecere__com__GetRuntimePlatform();
2588 int targetBits = GetHostBits();
2590 for(c = 1; c < ((struct __ecereNameSpace__ecere__com__Application *)(((char *)this + structSize_Module)))->argc; c++)
2592 char * arg = ((struct __ecereNameSpace__ecere__com__Application *)(((char *)this + structSize_Module)))->argv[c];
2596 if(!strcmp(arg + 1, "m32") || !strcmp(arg + 1, "m64"))
2598 int argLen = strlen(arg);
2599 int newLen = cppOptionsLen + 1 + argLen;
2601 cppOptions = __ecereNameSpace__ecere__com__eSystem_Renew(cppOptions, sizeof(char) * (newLen + 1));
2602 cppOptions[cppOptionsLen] = ' ';
2603 strcpy(cppOptions + cppOptionsLen + 1, arg);
2604 cppOptionsLen = newLen;
2605 targetBits = !strcmp(arg + 1, "m32") ? 32 : 64;
2607 else if(arg[1] == 'D')
2609 int argLen = strlen(arg);
2610 int newLen = cppOptionsLen + 1 + argLen;
2612 cppOptions = __ecereNameSpace__ecere__com__eSystem_Renew(cppOptions, sizeof(char) * (newLen + 1));
2613 cppOptions[cppOptionsLen] = ' ';
2614 strcpy(cppOptions + cppOptionsLen + 1, arg);
2615 cppOptionsLen = newLen;
2617 else if(arg[1] == 'I')
2619 int argLen = strlen(arg);
2620 int newLen = cppOptionsLen + argLen + 3;
2622 cppOptions = __ecereNameSpace__ecere__com__eSystem_Renew(cppOptions, sizeof(char) * (newLen + 1));
2623 cppOptions[cppOptionsLen] = ' ';
2624 cppOptions[cppOptionsLen + 1] = '-';
2625 cppOptions[cppOptionsLen + 2] = 'I';
2626 cppOptions[cppOptionsLen + 3] = '"';
2627 strcpy(cppOptions + cppOptionsLen + 4, arg + 2);
2628 cppOptions[newLen - 1] = '\"';
2629 cppOptions[newLen] = '\0';
2630 cppOptionsLen = newLen;
2632 else if(!strcmp(arg + 1, "t"))
2634 if(++c < ((struct __ecereNameSpace__ecere__com__Application *)(((char *)this + structSize_Module)))->argc)
2635 targetPlatform = __ecereProp___ecereNameSpace__ecere__com__Platform_Set_char__PTR_(((struct __ecereNameSpace__ecere__com__Application *)(((char *)this + structSize_Module)))->argv[c]);
2639 else if(!strcmp(arg + 1, "cpp"))
2641 if(++c < ((struct __ecereNameSpace__ecere__com__Application *)(((char *)this + structSize_Module)))->argc)
2642 cppCommand = __ecereNameSpace__ecere__sys__CopyString(((struct __ecereNameSpace__ecere__com__Application *)(((char *)this + structSize_Module)))->argv[c]);
2646 else if(!strcmp(arg + 1, "o"))
2648 if(!GetOutputFile() && c + 1 < ((struct __ecereNameSpace__ecere__com__Application *)(((char *)this + structSize_Module)))->argc)
2650 SetOutputFile(((struct __ecereNameSpace__ecere__com__Application *)(((char *)this + structSize_Module)))->argv[c + 1]);
2656 else if(!strcmp(arg + 1, "c"))
2658 if(!GetSourceFile() && c + 1 < ((struct __ecereNameSpace__ecere__com__Application *)(((char *)this + structSize_Module)))->argc)
2660 SetSourceFile(((struct __ecereNameSpace__ecere__com__Application *)(((char *)this + structSize_Module)))->argv[c + 1]);
2666 else if(!strcmp(arg + 1, "isystem") || !strcmp(arg + 1, "isysroot"))
2668 if(c + 1 < ((struct __ecereNameSpace__ecere__com__Application *)(((char *)this + structSize_Module)))->argc)
2670 int argLen = strlen(arg);
2671 int arg1Len = strlen(((struct __ecereNameSpace__ecere__com__Application *)(((char *)this + structSize_Module)))->argv[c + 1]);
2672 int newLen = cppOptionsLen + argLen + arg1Len + 4;
2674 cppOptions = __ecereNameSpace__ecere__com__eSystem_Renew(cppOptions, sizeof(char) * (newLen + 1));
2675 cppOptions[cppOptionsLen] = ' ';
2676 strcpy(cppOptions + cppOptionsLen + 1, arg);
2677 cppOptions[cppOptionsLen + argLen + 1] = ' ';
2678 cppOptions[cppOptionsLen + argLen + 2] = '"';
2679 arg = ((struct __ecereNameSpace__ecere__com__Application *)(((char *)this + structSize_Module)))->argv[++c];
2680 strcpy(cppOptions + cppOptionsLen + argLen + 3, arg);
2681 cppOptions[newLen - 1] = '\"';
2682 cppOptions[newLen] = '\0';
2683 cppOptionsLen = newLen;
2688 else if(!strcmp(arg + 1, "symbols"))
2690 if(c + 1 < ((struct __ecereNameSpace__ecere__com__Application *)(((char *)this + structSize_Module)))->argc)
2692 SetSymbolsDir(((struct __ecereNameSpace__ecere__com__Application *)(((char *)this + structSize_Module)))->argv[c + 1]);
2698 else if(!strcmp(arg + 1, "defaultns"))
2700 if(c + 1 < ((struct __ecereNameSpace__ecere__com__Application *)(((char *)this + structSize_Module)))->argc)
2702 SetDefaultNameSpace(((struct __ecereNameSpace__ecere__com__Application *)(((char *)this + structSize_Module)))->argv[c + 1]);
2708 else if(!strcmp(arg + 1, "strictns"))
2710 SetStrictNameSpaces(0x1);
2719 cppCommand = __ecereNameSpace__ecere__sys__CopyString("gcc");
2720 if(!GetSourceFile())
2722 else if(!GetOutputFile())
2724 strcpy(defaultSymFile, GetSymbolsDir());
2725 __ecereNameSpace__ecere__sys__PathCat(defaultSymFile, GetSourceFile());
2726 __ecereNameSpace__ecere__sys__ChangeExtension(defaultSymFile, "sym", defaultSymFile);
2727 SetOutputFile(defaultSymFile);
2732 printf(__ecereNameSpace__ecere__GetTranslatedString(__thisModule, "Syntax:\n ecp [-t <target platform>] [-cpp <c preprocessor>] [-o <output>] [-symbols <outputdir>] [-I<includedir>]* [-isystem <sysincludedir>]* [-D<definition>]* -c <input>\n", (((void *)0))));
2736 char command[3075LL];
2737 struct __ecereNameSpace__ecere__com__Instance * cppOutput;
2739 SetGlobalContext(globalContext);
2740 SetTopContext(globalContext);
2741 SetCurrentContext(globalContext);
2742 SetExcludedSymbols(&_excludedSymbols);
2743 SetGlobalData(&globalData);
2744 SetDefines(&defines);
2745 SetImports(&imports);
2746 SetPrecompDefines(&precompDefines);
2747 SetInPreCompiler(0x1);
2748 SetTargetPlatform(targetPlatform);
2749 SetTargetBits(targetBits);
2751 privateModule = (struct __ecereNameSpace__ecere__com__Instance *)__ecereNameSpace__ecere__com____ecere_COM_Initialize(0x1 | (targetBits == sizeof(uintptr_t) * 8 ? (unsigned int)0 : targetBits == 64 ? (unsigned int)2 : targetBits == 32 ? (unsigned int)4 : (unsigned int)0) | (unsigned int)8, 1, (((void *)0)));
2752 SetPrivateModule(privateModule);
2753 __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Add(&globalContext->types, (struct __ecereNameSpace__ecere__sys__BTNode *)__extension__ ({
2754 struct Symbol * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Symbol);
2756 __ecereInstance1->string = __ecereNameSpace__ecere__sys__CopyString("uint"), __ecereInstance1->type = ProcessTypeString("unsigned int", 0x0), __ecereInstance1;
2758 __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Add(&globalContext->types, (struct __ecereNameSpace__ecere__sys__BTNode *)__extension__ ({
2759 struct Symbol * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Symbol);
2761 __ecereInstance1->string = __ecereNameSpace__ecere__sys__CopyString("uint64"), __ecereInstance1->type = ProcessTypeString("unsigned int64", 0x0), __ecereInstance1;
2763 __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Add(&globalContext->types, (struct __ecereNameSpace__ecere__sys__BTNode *)__extension__ ({
2764 struct Symbol * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Symbol);
2766 __ecereInstance1->string = __ecereNameSpace__ecere__sys__CopyString("uint32"), __ecereInstance1->type = ProcessTypeString("unsigned int", 0x0), __ecereInstance1;
2768 __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Add(&globalContext->types, (struct __ecereNameSpace__ecere__sys__BTNode *)__extension__ ({
2769 struct Symbol * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Symbol);
2771 __ecereInstance1->string = __ecereNameSpace__ecere__sys__CopyString("uint16"), __ecereInstance1->type = ProcessTypeString("unsigned short", 0x0), __ecereInstance1;
2773 __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Add(&globalContext->types, (struct __ecereNameSpace__ecere__sys__BTNode *)__extension__ ({
2774 struct Symbol * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Symbol);
2776 __ecereInstance1->string = __ecereNameSpace__ecere__sys__CopyString("byte"), __ecereInstance1->type = ProcessTypeString("unsigned char", 0x0), __ecereInstance1;
2778 __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Add(&globalContext->types, (struct __ecereNameSpace__ecere__sys__BTNode *)__extension__ ({
2779 struct Symbol * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Symbol);
2781 __ecereInstance1->string = __ecereNameSpace__ecere__sys__CopyString("intptr_t"), __ecereInstance1->type = ProcessTypeString("intptr", 0x0), __ecereInstance1;
2783 __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Add(&globalContext->types, (struct __ecereNameSpace__ecere__sys__BTNode *)__extension__ ({
2784 struct Symbol * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Symbol);
2786 __ecereInstance1->string = __ecereNameSpace__ecere__sys__CopyString("uintptr_t"), __ecereInstance1->type = ProcessTypeString("uintptr", 0x0), __ecereInstance1;
2788 __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Add(&globalContext->types, (struct __ecereNameSpace__ecere__sys__BTNode *)__extension__ ({
2789 struct Symbol * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Symbol);
2791 __ecereInstance1->string = __ecereNameSpace__ecere__sys__CopyString("ssize_t"), __ecereInstance1->type = ProcessTypeString("intsize", 0x0), __ecereInstance1;
2793 __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Add(&globalContext->types, (struct __ecereNameSpace__ecere__sys__BTNode *)__extension__ ({
2794 struct Symbol * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Symbol);
2796 __ecereInstance1->string = __ecereNameSpace__ecere__sys__CopyString("size_t"), __ecereInstance1->type = ProcessTypeString("uintsize", 0x0), __ecereInstance1;
2799 char * outputFilePath = GetOutputFile();
2801 if(__ecereNameSpace__ecere__sys__FileExists(outputFilePath))
2802 __ecereNameSpace__ecere__sys__DeleteFile(outputFilePath);
2804 snprintf(command, sizeof command, "%s%s -x c -E \"%s\"", cppCommand, cppOptions ? cppOptions : "", GetSourceFile());
2805 command[sizeof command - 1] = (char)0;
2806 if((cppOutput = __ecereNameSpace__ecere__sys__DualPipeOpen((((unsigned int)(0x1))), command)))
2809 struct __ecereNameSpace__ecere__sys__OldList * ast;
2810 struct __ecereNameSpace__ecere__com__Instance * fileInput = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass___ecereNameSpace__ecere__sys__TempFile);
2811 struct ModuleImport * mainModule = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_ModuleImport);
2813 SetFileInput(fileInput);
2814 SetMainModule(mainModule);
2815 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add(&imports, mainModule);
2817 for(; !((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *))cppOutput->_vTbl[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Eof])(cppOutput); )
2820 int count = ((int (*)(struct __ecereNameSpace__ecere__com__Instance *, void * buffer, unsigned int size, unsigned int count))cppOutput->_vTbl[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Read])(cppOutput, junk, 1, 4096);
2822 ((int (*)(struct __ecereNameSpace__ecere__com__Instance *, void * buffer, unsigned int size, unsigned int count))fileInput->_vTbl[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Write])(fileInput, junk, 1, count);
2824 exitCode = __ecereMethod___ecereNameSpace__ecere__sys__DualPipe_GetExitCode(cppOutput);
2825 (__ecereNameSpace__ecere__com__eInstance_DecRef(cppOutput), cppOutput = 0);
2826 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, int pos, int mode))fileInput->_vTbl[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Seek])(fileInput, 0, 0);
2828 SetCurrentNameSpace((((void *)0)));
2830 (__ecereNameSpace__ecere__com__eInstance_DecRef(fileInput), fileInput = 0);
2831 SetFileInput((((void *)0)));
2837 ProcessDBTableDefinitions();
2838 PreCompPreProcessClassDefinitions();
2840 if(!((struct __ecereNameSpace__ecere__com__Application *)(((char *)this + structSize_Module)))->exitCode)
2841 OutputSymbols(GetOutputFile());
2844 ((struct __ecereNameSpace__ecere__com__Application *)(((char *)this + structSize_Module)))->exitCode = exitCode;
2850 FreeContext(globalContext);
2851 FreeExcludedSymbols(&_excludedSymbols);
2852 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Free(&defines, FreeModuleDefine);
2853 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Free(&imports, FreeModuleImport);
2854 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Free(&precompDefines, FreeDefinition);
2855 FreeTypeData(privateModule);
2857 FreeGlobalData(&globalData);
2858 (__ecereNameSpace__ecere__com__eInstance_DecRef(privateModule), privateModule = 0);
2860 (__ecereNameSpace__ecere__com__eSystem_Delete(cppCommand), cppCommand = 0);
2861 (__ecereNameSpace__ecere__com__eSystem_Delete(cppOptions), cppOptions = 0);
2862 SetSymbolsDir((((void *)0)));
2865 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__Module;
2867 struct __ecereNameSpace__ecere__com__Module
2869 struct __ecereNameSpace__ecere__com__Instance * application;
2870 struct __ecereNameSpace__ecere__sys__OldList classes;
2871 struct __ecereNameSpace__ecere__sys__OldList defines;
2872 struct __ecereNameSpace__ecere__sys__OldList functions;
2873 struct __ecereNameSpace__ecere__sys__OldList modules;
2874 struct __ecereNameSpace__ecere__com__Instance * prev;
2875 struct __ecereNameSpace__ecere__com__Instance * next;
2881 struct __ecereNameSpace__ecere__com__NameSpace privateNameSpace;
2882 struct __ecereNameSpace__ecere__com__NameSpace publicNameSpace;
2883 } __attribute__ ((gcc_struct));
2885 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__GlobalFunction;
2887 struct __ecereNameSpace__ecere__com__GlobalFunction;
2889 extern struct __ecereNameSpace__ecere__com__GlobalFunction * __ecereNameSpace__ecere__com__eSystem_RegisterFunction(char * name, char * type, void * func, struct __ecereNameSpace__ecere__com__Instance * module, int declMode);
2891 void __ecereRegisterModule_ecp(struct __ecereNameSpace__ecere__com__Instance * module)
2893 struct __ecereNameSpace__ecere__com__Class * class;
2895 class = __ecereNameSpace__ecere__com__eSystem_RegisterClass(5, "ClassDefine", "Definition", sizeof(struct ClassDefine), 0, 0, 0, module, 2, 1);
2896 if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + structSize_Instance)))->application == ((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + structSize_Instance)))->application && class)
2897 __ecereClass_ClassDefine = class;
2898 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "base", "char *", arch_PointerSize, arch_PointerSize, 1);
2899 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "propertiesAndMembers", "ecere::sys::OldList", structSize_OldList, arch_PointerSize, 1);
2900 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "classProperties", "ecere::sys::OldList", structSize_OldList, arch_PointerSize, 1);
2901 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "methods", "ecere::sys::OldList", structSize_OldList, arch_PointerSize, 1);
2902 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "isRemote", "bool", 4, 4, 1);
2903 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "isWatchable", "bool", 4, 4, 1);
2904 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "fixed", "bool", 4, 4, 1);
2905 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "isStatic", "bool", 4, 4, 1);
2906 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "noExpansion", "bool", 4, 4, 1);
2907 class = __ecereNameSpace__ecere__com__eSystem_RegisterClass(5, "Define", "Definition", sizeof(struct Define), 0, 0, 0, module, 2, 1);
2908 if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + structSize_Instance)))->application == ((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + structSize_Instance)))->application && class)
2909 __ecereClass_Define = class;
2910 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "exp", "Expression", arch_PointerSize, arch_PointerSize, 1);
2911 class = __ecereNameSpace__ecere__com__eSystem_RegisterClass(5, "FunctionDefine", "Definition", sizeof(struct FunctionDefine), 0, 0, 0, module, 2, 1);
2912 if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + structSize_Instance)))->application == ((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + structSize_Instance)))->application && class)
2913 __ecereClass_FunctionDefine = class;
2914 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "dataType", "char *", arch_PointerSize, arch_PointerSize, 1);
2915 class = __ecereNameSpace__ecere__com__eSystem_RegisterClass(5, "DataDefine", "Definition", sizeof(struct DataDefine), 0, 0, 0, module, 2, 1);
2916 if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + structSize_Instance)))->application == ((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + structSize_Instance)))->application && class)
2917 __ecereClass_DataDefine = class;
2918 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "dataType", "char *", arch_PointerSize, arch_PointerSize, 1);
2919 class = __ecereNameSpace__ecere__com__eSystem_RegisterClass(5, "MethodDefine", 0, sizeof(struct MethodDefine), 0, 0, 0, module, 2, 1);
2920 if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + structSize_Instance)))->application == ((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + structSize_Instance)))->application && class)
2921 __ecereClass_MethodDefine = class;
2922 class = __ecereNameSpace__ecere__com__eSystem_RegisterClass(5, "PropertyDefine", 0, sizeof(struct PropertyDefine), 0, 0, 0, module, 2, 1);
2923 if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + structSize_Instance)))->application == ((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + structSize_Instance)))->application && class)
2924 __ecereClass_PropertyDefine = class;
2925 class = __ecereNameSpace__ecere__com__eSystem_RegisterClass(5, "DataMemberDefine", 0, sizeof(struct DataMemberDefine), 0, 0, 0, module, 2, 1);
2926 if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + structSize_Instance)))->application == ((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + structSize_Instance)))->application && class)
2927 __ecereClass_DataMemberDefine = class;
2928 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("FreeMethodDefine", "void FreeMethodDefine(MethodDefine method)", FreeMethodDefine, module, 2);
2929 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("FreeDataMemberDefine", "void FreeDataMemberDefine(DataMemberDefine dataMember)", FreeDataMemberDefine, module, 2);
2930 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("FreeDataDefine", "void FreeDataDefine(DataDefine data)", FreeDataDefine, module, 2);
2931 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("FreeDefinition", "void FreeDefinition(Definition definition)", FreeDefinition, module, 2);
2932 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("PreCompPreProcessClassDefinitions", "void PreCompPreProcessClassDefinitions(void)", PreCompPreProcessClassDefinitions, module, 2);
2933 class = __ecereNameSpace__ecere__com__eSystem_RegisterClass(0, "PrecompApp", "ecere::com::Application", 0, 0, 0, 0, module, 2, 1);
2934 if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + structSize_Instance)))->application == ((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + structSize_Instance)))->application && class)
2935 __ecereClass_PrecompApp = class;
2936 __ecereNameSpace__ecere__com__eClass_AddMethod(class, "Main", 0, __ecereMethod_PrecompApp_Main, 1);
2939 void __ecereUnregisterModule_ecp(struct __ecereNameSpace__ecere__com__Instance * module)
2944 int __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_CompareString(struct __ecereNameSpace__ecere__sys__BinaryTree * this, char * a, char * b);
2946 void __ecereCreateModuleInstances_ecp()
2948 globalContext = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Context);
2949 (globalData.classes.CompareKey = (void *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_CompareString, globalData.defines.CompareKey = (void *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_CompareString, globalData.functions.CompareKey = (void *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_CompareString, globalData.nameSpaces.CompareKey = (void *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_CompareString);
2952 void __ecereDestroyModuleInstances_ecp()
2954 ((globalContext ? (__ecereClass_Context->Destructor ? __ecereClass_Context->Destructor(globalContext) : 0, __ecereNameSpace__ecere__com__eSystem_Delete(globalContext)) : 0), globalContext = 0);