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>
32 extern void * __ecereNameSpace__ecere__com__eSystem_New(unsigned int size);
34 extern void * __ecereNameSpace__ecere__com__eSystem_New0(unsigned int size);
36 extern void * __ecereNameSpace__ecere__com__eSystem_Renew(void * memory, unsigned int size);
38 extern void * __ecereNameSpace__ecere__com__eSystem_Renew0(void * memory, unsigned int size);
40 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__sys__BTNode;
42 struct __ecereNameSpace__ecere__sys__BTNode;
44 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__sys__BinaryTree;
46 struct __ecereNameSpace__ecere__sys__BinaryTree
48 struct __ecereNameSpace__ecere__sys__BTNode * root;
50 int (* CompareKey)(struct __ecereNameSpace__ecere__sys__BinaryTree * tree, uintptr_t a, uintptr_t b);
51 void (* FreeKey)(void * key);
52 } __attribute__ ((gcc_struct));
54 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__sys__OldList;
56 struct __ecereNameSpace__ecere__sys__OldList
63 } __attribute__ ((gcc_struct));
65 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__Method;
67 struct __ecereNameSpace__ecere__com__Method
70 struct __ecereNameSpace__ecere__com__Method * parent;
71 struct __ecereNameSpace__ecere__com__Method * left;
72 struct __ecereNameSpace__ecere__com__Method * right;
77 struct __ecereNameSpace__ecere__com__Class * _class;
79 char * dataTypeString;
80 struct Type * dataType;
82 } __attribute__ ((gcc_struct));
84 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__Property;
86 struct __ecereNameSpace__ecere__com__Property
88 struct __ecereNameSpace__ecere__com__Property * prev;
89 struct __ecereNameSpace__ecere__com__Property * next;
91 unsigned int isProperty;
94 struct __ecereNameSpace__ecere__com__Class * _class;
95 char * dataTypeString;
96 struct __ecereNameSpace__ecere__com__Class * dataTypeClass;
97 struct Type * dataType;
98 void (* Set)(void * , int);
100 unsigned int (* IsSet)(void * );
104 unsigned int conversion;
105 unsigned int watcherOffset;
107 unsigned int compiled;
108 unsigned int selfWatchable;
109 unsigned int isWatchable;
110 } __attribute__ ((gcc_struct));
112 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_CodePosition;
120 } __attribute__ ((gcc_struct));
122 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Location;
126 struct CodePosition start;
127 struct CodePosition end;
128 } __attribute__ ((gcc_struct));
130 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Attrib;
134 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_ExtDecl;
138 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_ClassDefinition;
140 struct ClassDefinition
142 struct ClassDefinition * prev;
143 struct ClassDefinition * next;
145 struct Specifier * _class;
146 struct __ecereNameSpace__ecere__sys__OldList * baseSpecs;
147 struct __ecereNameSpace__ecere__sys__OldList * definitions;
148 struct Symbol * symbol;
149 struct Location blockStart;
150 struct Location nameLoc;
153 unsigned int deleteWatchable;
154 } __attribute__ ((gcc_struct));
156 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Context;
160 struct Context * parent;
161 struct __ecereNameSpace__ecere__sys__BinaryTree types;
162 struct __ecereNameSpace__ecere__sys__BinaryTree classes;
163 struct __ecereNameSpace__ecere__sys__BinaryTree symbols;
164 struct __ecereNameSpace__ecere__sys__BinaryTree structSymbols;
167 struct __ecereNameSpace__ecere__sys__BinaryTree templateTypes;
168 struct ClassDefinition * classDef;
169 unsigned int templateTypesOnly;
170 unsigned int hasNameSpace;
171 } __attribute__ ((gcc_struct));
173 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Instantiation;
177 struct Instantiation * prev;
178 struct Instantiation * next;
180 struct Specifier * _class;
181 struct Expression * exp;
182 struct __ecereNameSpace__ecere__sys__OldList * members;
183 struct Symbol * symbol;
184 unsigned int fullSet;
185 unsigned int isConstant;
186 unsigned char * data;
187 struct Location nameLoc;
188 struct Location insideLoc;
190 } __attribute__ ((gcc_struct));
192 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Declaration;
196 struct Declaration * prev;
197 struct Declaration * next;
204 struct __ecereNameSpace__ecere__sys__OldList * specifiers;
205 struct __ecereNameSpace__ecere__sys__OldList * declarators;
206 } __attribute__ ((gcc_struct));
207 struct Instantiation * inst;
210 struct Identifier * id;
211 struct Expression * exp;
212 } __attribute__ ((gcc_struct));
213 } __attribute__ ((gcc_struct));
214 struct Specifier * extStorage;
215 struct Symbol * symbol;
217 } __attribute__ ((gcc_struct));
219 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Statement;
223 struct Statement * prev;
224 struct Statement * next;
229 struct __ecereNameSpace__ecere__sys__OldList * expressions;
232 struct Identifier * id;
233 struct Statement * stmt;
234 } __attribute__ ((gcc_struct)) labeled;
237 struct Expression * exp;
238 struct Statement * stmt;
239 } __attribute__ ((gcc_struct)) caseStmt;
242 struct __ecereNameSpace__ecere__sys__OldList * declarations;
243 struct __ecereNameSpace__ecere__sys__OldList * statements;
244 struct Context * context;
245 unsigned int isSwitch;
246 } __attribute__ ((gcc_struct)) compound;
249 struct __ecereNameSpace__ecere__sys__OldList * exp;
250 struct Statement * stmt;
251 struct Statement * elseStmt;
252 } __attribute__ ((gcc_struct)) ifStmt;
255 struct __ecereNameSpace__ecere__sys__OldList * exp;
256 struct Statement * stmt;
257 } __attribute__ ((gcc_struct)) switchStmt;
260 struct __ecereNameSpace__ecere__sys__OldList * exp;
261 struct Statement * stmt;
262 } __attribute__ ((gcc_struct)) whileStmt;
265 struct __ecereNameSpace__ecere__sys__OldList * exp;
266 struct Statement * stmt;
267 } __attribute__ ((gcc_struct)) doWhile;
270 struct Statement * init;
271 struct Statement * check;
272 struct __ecereNameSpace__ecere__sys__OldList * increment;
273 struct Statement * stmt;
274 } __attribute__ ((gcc_struct)) forStmt;
277 struct Identifier * id;
278 } __attribute__ ((gcc_struct)) gotoStmt;
281 struct Specifier * spec;
283 struct __ecereNameSpace__ecere__sys__OldList * inputFields;
284 struct __ecereNameSpace__ecere__sys__OldList * outputFields;
285 struct __ecereNameSpace__ecere__sys__OldList * clobberedFields;
286 } __attribute__ ((gcc_struct)) asmStmt;
289 struct Expression * watcher;
290 struct Expression * object;
291 struct __ecereNameSpace__ecere__sys__OldList * watches;
292 } __attribute__ ((gcc_struct)) _watch;
295 struct Identifier * id;
296 struct __ecereNameSpace__ecere__sys__OldList * exp;
297 struct __ecereNameSpace__ecere__sys__OldList * filter;
298 struct Statement * stmt;
299 } __attribute__ ((gcc_struct)) forEachStmt;
300 struct Declaration * decl;
301 } __attribute__ ((gcc_struct));
302 } __attribute__ ((gcc_struct));
304 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_TypeName;
308 struct TypeName * prev;
309 struct TypeName * next;
311 struct __ecereNameSpace__ecere__sys__OldList * qualifiers;
312 struct Declarator * declarator;
314 struct Expression * bitCount;
315 } __attribute__ ((gcc_struct));
317 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Initializer;
321 struct Initializer * prev;
322 struct Initializer * next;
327 struct Expression * exp;
328 struct __ecereNameSpace__ecere__sys__OldList * list;
329 } __attribute__ ((gcc_struct));
330 unsigned int isConstant;
331 } __attribute__ ((gcc_struct));
333 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__DataValue;
335 struct __ecereNameSpace__ecere__com__DataValue
350 } __attribute__ ((gcc_struct));
351 } __attribute__ ((gcc_struct));
353 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Expression;
357 struct Expression * prev;
358 struct Expression * next;
366 struct Identifier * identifier;
367 } __attribute__ ((gcc_struct));
368 struct Statement * compound;
369 struct Instantiation * instance;
371 struct __ecereNameSpace__ecere__sys__OldList * list;
374 struct __ecereNameSpace__ecere__sys__OldList * specifiers;
375 struct Declarator * decl;
376 } __attribute__ ((gcc_struct)) _classExp;
379 struct Identifier * id;
380 } __attribute__ ((gcc_struct)) classData;
383 struct Expression * exp;
384 struct __ecereNameSpace__ecere__sys__OldList * arguments;
385 struct Location argLoc;
386 } __attribute__ ((gcc_struct)) call;
389 struct Expression * exp;
390 struct __ecereNameSpace__ecere__sys__OldList * index;
391 } __attribute__ ((gcc_struct)) index;
394 struct Expression * exp;
395 struct Identifier * member;
397 unsigned int thisPtr;
398 } __attribute__ ((gcc_struct)) member;
402 struct Expression * exp1;
403 struct Expression * exp2;
404 } __attribute__ ((gcc_struct)) op;
405 struct TypeName * typeName;
406 struct Specifier * _class;
409 struct TypeName * typeName;
410 struct Expression * exp;
411 } __attribute__ ((gcc_struct)) cast;
414 struct Expression * cond;
415 struct __ecereNameSpace__ecere__sys__OldList * exp;
416 struct Expression * elseExp;
417 } __attribute__ ((gcc_struct)) cond;
420 struct TypeName * typeName;
421 struct Expression * size;
422 } __attribute__ ((gcc_struct)) _new;
425 struct TypeName * typeName;
426 struct Expression * size;
427 struct Expression * exp;
428 } __attribute__ ((gcc_struct)) _renew;
432 struct Identifier * id;
433 } __attribute__ ((gcc_struct)) db;
436 struct Expression * ds;
437 struct Expression * name;
438 } __attribute__ ((gcc_struct)) dbopen;
441 struct TypeName * typeName;
442 struct Initializer * initializer;
443 } __attribute__ ((gcc_struct)) initializer;
446 struct Expression * exp;
447 struct TypeName * typeName;
448 } __attribute__ ((gcc_struct)) vaArg;
449 } __attribute__ ((gcc_struct));
450 unsigned int debugValue;
451 struct __ecereNameSpace__ecere__com__DataValue val;
453 unsigned int hasAddress;
454 struct Type * expType;
455 struct Type * destType;
458 unsigned int byReference;
459 unsigned int isConstant;
460 unsigned int addedThis;
461 unsigned int needCast;
462 unsigned int thisPtr;
463 } __attribute__ ((gcc_struct));
465 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_TemplateDatatype;
467 struct TemplateDatatype;
469 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_TemplateArgument;
471 struct TemplateArgument;
473 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_TemplateParameter;
475 struct TemplateParameter;
477 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Specifier;
481 struct Specifier * prev;
482 struct Specifier * next;
490 struct ExtDecl * extDecl;
492 struct Symbol * symbol;
493 struct __ecereNameSpace__ecere__sys__OldList * templateArgs;
494 } __attribute__ ((gcc_struct));
497 struct Identifier * id;
498 struct __ecereNameSpace__ecere__sys__OldList * list;
499 struct __ecereNameSpace__ecere__sys__OldList * baseSpecs;
500 struct __ecereNameSpace__ecere__sys__OldList * definitions;
501 unsigned int addNameSpace;
502 struct Context * ctx;
503 struct ExtDecl * extDeclStruct;
504 } __attribute__ ((gcc_struct));
505 struct Expression * expression;
506 struct Specifier * _class;
507 struct TemplateParameter * templateParameter;
508 } __attribute__ ((gcc_struct));
509 } __attribute__ ((gcc_struct));
511 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Identifier;
515 struct Identifier * prev;
516 struct Identifier * next;
518 struct Symbol * classSym;
519 struct Specifier * _class;
521 struct Identifier * badID;
522 } __attribute__ ((gcc_struct));
524 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Pointer;
528 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Declarator;
532 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_FunctionDefinition;
534 struct FunctionDefinition
536 struct FunctionDefinition * prev;
537 struct FunctionDefinition * next;
539 struct __ecereNameSpace__ecere__sys__OldList * specifiers;
540 struct Declarator * declarator;
541 struct __ecereNameSpace__ecere__sys__OldList * declarations;
542 struct Statement * body;
543 struct __ecereNameSpace__ecere__com__Class * _class;
544 struct __ecereNameSpace__ecere__sys__OldList attached;
547 struct Symbol * propSet;
549 unsigned int propertyNoThis;
550 } __attribute__ ((gcc_struct));
552 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_DBTableDef;
557 struct Symbol * symbol;
558 struct __ecereNameSpace__ecere__sys__OldList * definitions;
560 } __attribute__ ((gcc_struct));
562 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_External;
566 struct External * prev;
567 struct External * next;
570 struct Symbol * symbol;
573 struct FunctionDefinition * function;
574 struct ClassDefinition * _class;
575 struct Declaration * declaration;
577 struct Identifier * id;
578 struct DBTableDef * table;
579 } __attribute__ ((gcc_struct));
581 } __attribute__ ((gcc_struct));
583 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_ModuleImport;
587 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_ClassImport;
591 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Symbol;
596 struct Symbol * parent;
597 struct Symbol * left;
598 struct Symbol * right;
603 struct __ecereNameSpace__ecere__com__Method * method;
604 struct __ecereNameSpace__ecere__com__Property * _property;
605 struct __ecereNameSpace__ecere__com__Class * registered;
606 } __attribute__ ((gcc_struct));
613 struct External * pointerExternal;
614 struct External * structExternal;
615 } __attribute__ ((gcc_struct));
618 struct External * externalGet;
619 struct External * externalSet;
620 struct External * externalPtr;
621 struct External * externalIsSet;
622 } __attribute__ ((gcc_struct));
625 struct External * methodExternal;
626 struct External * methodCodeExternal;
627 } __attribute__ ((gcc_struct));
628 } __attribute__ ((gcc_struct));
629 unsigned int imported;
630 unsigned int declaredStructSym;
631 struct __ecereNameSpace__ecere__com__Class * _class;
632 unsigned int declaredStruct;
633 unsigned int needConstructor;
634 unsigned int needDestructor;
635 char * constructorName;
638 char * destructorName;
639 struct ModuleImport * module;
640 struct ClassImport * _import;
641 struct Location nameLoc;
642 unsigned int isParam;
643 unsigned int isRemote;
644 unsigned int isStruct;
645 unsigned int fireWatchersDone;
647 unsigned int classData;
648 unsigned int isStatic;
650 struct __ecereNameSpace__ecere__sys__OldList * templateParams;
651 struct __ecereNameSpace__ecere__sys__OldList templatedClasses;
652 struct Context * ctx;
654 struct Expression * propCategory;
655 } __attribute__ ((gcc_struct));
657 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Type;
666 struct Symbol * _class;
669 struct __ecereNameSpace__ecere__sys__OldList members;
671 } __attribute__ ((gcc_struct));
674 struct Type * returnType;
675 struct __ecereNameSpace__ecere__sys__OldList params;
676 struct Symbol * thisClass;
677 unsigned int staticMethod;
678 struct TemplateParameter * thisClassTemplate;
679 } __attribute__ ((gcc_struct));
682 struct __ecereNameSpace__ecere__com__Method * method;
683 struct __ecereNameSpace__ecere__com__Class * methodClass;
684 struct __ecereNameSpace__ecere__com__Class * usedClass;
685 } __attribute__ ((gcc_struct));
688 struct Type * arrayType;
690 struct Expression * arraySizeExp;
691 unsigned int freeExp;
692 struct Symbol * enumClass;
693 } __attribute__ ((gcc_struct));
695 struct TemplateParameter * templateParameter;
696 } __attribute__ ((gcc_struct));
706 unsigned int isSigned : 1;
707 unsigned int constant : 1;
708 unsigned int truth : 1;
709 unsigned int byReference : 1;
710 unsigned int extraParam : 1;
711 unsigned int directClassAccess : 1;
712 unsigned int computing : 1;
713 unsigned int keepCast : 1;
714 unsigned int passAsTemplate : 1;
715 unsigned int dllExport : 1;
716 unsigned int attrStdcall : 1;
717 unsigned int declaredWithStruct : 1;
718 } __attribute__ ((gcc_struct));
720 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__Class;
722 struct __ecereNameSpace__ecere__com__Class
724 struct __ecereNameSpace__ecere__com__Class * prev;
725 struct __ecereNameSpace__ecere__com__Class * next;
731 int (* Constructor)(struct __ecereNameSpace__ecere__com__Instance *);
732 void (* Destructor)(struct __ecereNameSpace__ecere__com__Instance *);
735 struct __ecereNameSpace__ecere__com__Class * base;
736 struct __ecereNameSpace__ecere__sys__BinaryTree methods;
737 struct __ecereNameSpace__ecere__sys__BinaryTree members;
738 struct __ecereNameSpace__ecere__sys__BinaryTree prop;
739 struct __ecereNameSpace__ecere__sys__OldList membersAndProperties;
740 struct __ecereNameSpace__ecere__sys__BinaryTree classProperties;
741 struct __ecereNameSpace__ecere__sys__OldList derivatives;
745 struct __ecereNameSpace__ecere__com__Instance * module;
746 struct __ecereNameSpace__ecere__com__NameSpace * nameSpace;
747 char * dataTypeString;
748 struct Type * dataType;
750 int defaultAlignment;
751 void (* Initialize)();
753 struct __ecereNameSpace__ecere__sys__OldList selfWatchers;
754 char * designerClass;
755 unsigned int noExpansion;
756 char * defaultProperty;
757 unsigned int comRedefinition;
759 unsigned int isRemote;
760 unsigned int internalDecl;
762 unsigned int computeSize;
764 int destructionWatchOffset;
766 struct __ecereNameSpace__ecere__sys__OldList delayedCPValues;
767 int inheritanceAccess;
770 struct __ecereNameSpace__ecere__sys__OldList conversions;
771 struct __ecereNameSpace__ecere__sys__OldList templateParams;
772 struct __ecereNameSpace__ecere__com__ClassTemplateArgument * templateArgs;
773 struct __ecereNameSpace__ecere__com__Class * templateClass;
774 struct __ecereNameSpace__ecere__sys__OldList templatized;
776 unsigned int isInstanceClass;
777 } __attribute__ ((gcc_struct));
779 extern long long __ecereNameSpace__ecere__com__eClass_GetProperty(struct __ecereNameSpace__ecere__com__Class * _class, char * name);
781 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__Instance;
783 struct __ecereNameSpace__ecere__com__Instance
786 struct __ecereNameSpace__ecere__com__Class * _class;
788 } __attribute__ ((gcc_struct));
790 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__DataMember;
792 struct __ecereNameSpace__ecere__com__DataMember
794 struct __ecereNameSpace__ecere__com__DataMember * prev;
795 struct __ecereNameSpace__ecere__com__DataMember * next;
797 unsigned int isProperty;
800 struct __ecereNameSpace__ecere__com__Class * _class;
801 char * dataTypeString;
802 struct __ecereNameSpace__ecere__com__Class * dataTypeClass;
803 struct Type * dataType;
807 struct __ecereNameSpace__ecere__sys__OldList members;
808 struct __ecereNameSpace__ecere__sys__BinaryTree membersAlpha;
811 } __attribute__ ((gcc_struct));
813 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__SerialBuffer;
815 struct __ecereNameSpace__ecere__com__SerialBuffer
817 unsigned char * _buffer;
821 } __attribute__ ((gcc_struct));
823 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__ClassTemplateArgument;
825 struct __ecereNameSpace__ecere__com__ClassTemplateArgument
831 char * dataTypeString;
832 struct __ecereNameSpace__ecere__com__Class * dataTypeClass;
833 } __attribute__ ((gcc_struct));
834 struct __ecereNameSpace__ecere__com__DataValue expression;
840 struct __ecereNameSpace__ecere__com__DataMember * member;
841 struct __ecereNameSpace__ecere__com__Property * prop;
842 struct __ecereNameSpace__ecere__com__Method * method;
843 } __attribute__ ((gcc_struct));
844 } __attribute__ ((gcc_struct));
845 } __attribute__ ((gcc_struct));
846 } __attribute__ ((gcc_struct));
850 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
853 typedef union YYSTYPE
858 struct Identifier * id;
859 struct Expression * exp;
860 struct Specifier * specifier;
861 struct __ecereNameSpace__ecere__sys__OldList * list;
862 struct Enumerator * enumerator;
863 struct Declarator * declarator;
864 struct Pointer * pointer;
865 struct Initializer * initializer;
866 struct InitDeclarator * initDeclarator;
867 struct TypeName * typeName;
868 struct Declaration * declaration;
869 struct Statement * stmt;
870 struct FunctionDefinition * function;
871 struct External * external;
872 struct Context * context;
873 struct AsmField * asmField;
874 struct Attrib * attrib;
875 struct ExtDecl * extDecl;
876 struct Attribute * attribute;
877 struct Instantiation * instance;
878 struct MembersInit * membersInit;
879 struct MemberInit * memberInit;
880 struct ClassFunction * classFunction;
881 struct ClassDefinition * _class;
882 struct ClassDef * classDef;
883 struct PropertyDef * prop;
885 struct Symbol * symbol;
886 struct PropertyWatch * propertyWatch;
887 struct TemplateParameter * templateParameter;
888 struct TemplateArgument * templateArgument;
889 struct TemplateDatatype * templateDatatype;
890 struct DBTableEntry * dbtableEntry;
891 struct DBIndexItem * dbindexItem;
892 struct DBTableDef * dbtableDef;
893 } __attribute__ ((gcc_struct)) YYSTYPE;
895 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Enumerator;
899 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_InitDeclarator;
901 struct InitDeclarator
903 struct InitDeclarator * prev;
904 struct InitDeclarator * next;
906 struct Declarator * declarator;
907 struct Initializer * initializer;
908 } __attribute__ ((gcc_struct));
910 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_AsmField;
914 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Attribute;
918 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_ClassFunction;
922 struct ClassFunction * prev;
923 struct ClassFunction * next;
925 struct __ecereNameSpace__ecere__sys__OldList * specifiers;
926 struct Declarator * declarator;
927 struct __ecereNameSpace__ecere__sys__OldList * declarations;
928 struct Statement * body;
929 struct __ecereNameSpace__ecere__com__Class * _class;
930 struct __ecereNameSpace__ecere__sys__OldList attached;
933 struct Symbol * propSet;
934 unsigned int isVirtual;
935 unsigned int isConstructor;
936 unsigned int isDestructor;
937 unsigned int dontMangle;
940 } __attribute__ ((gcc_struct));
942 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_MembersInit;
946 struct MembersInit * prev;
947 struct MembersInit * next;
952 struct __ecereNameSpace__ecere__sys__OldList * dataMembers;
953 struct ClassFunction * function;
954 } __attribute__ ((gcc_struct));
955 } __attribute__ ((gcc_struct));
957 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_MemberInit;
961 struct MemberInit * prev;
962 struct MemberInit * next;
964 struct Location realLoc;
965 struct __ecereNameSpace__ecere__sys__OldList * identifiers;
966 struct Initializer * initializer;
968 unsigned int variable;
969 unsigned int takeOutExp;
970 } __attribute__ ((gcc_struct));
972 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_PropertyDef;
976 struct PropertyDef * prev;
977 struct PropertyDef * next;
979 struct __ecereNameSpace__ecere__sys__OldList * specifiers;
980 struct Declarator * declarator;
981 struct Identifier * id;
982 struct Statement * getStmt;
983 struct Statement * setStmt;
984 struct Statement * issetStmt;
985 struct Symbol * symbol;
986 unsigned int conversion;
987 unsigned int isWatchable;
988 struct Expression * category;
989 } __attribute__ ((gcc_struct));
991 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_PropertyWatch;
995 struct PropertyWatch * prev;
996 struct PropertyWatch * next;
998 struct Statement * compound;
999 struct __ecereNameSpace__ecere__sys__OldList * properties;
1000 unsigned int deleteWatch;
1001 } __attribute__ ((gcc_struct));
1003 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_ClassDef;
1007 struct ClassDef * prev;
1008 struct ClassDef * next;
1009 struct Location loc;
1013 struct Declaration * decl;
1014 struct ClassFunction * function;
1015 struct __ecereNameSpace__ecere__sys__OldList * defProperties;
1016 struct PropertyDef * propertyDef;
1017 struct PropertyWatch * propertyWatch;
1019 struct Identifier * defaultProperty;
1022 struct Identifier * id;
1023 struct Initializer * initializer;
1024 } __attribute__ ((gcc_struct));
1025 } __attribute__ ((gcc_struct));
1028 } __attribute__ ((gcc_struct));
1030 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_DBTableEntry;
1034 struct DBTableEntry * prev;
1035 struct DBTableEntry * next;
1037 struct Identifier * id;
1042 struct TypeName * dataType;
1044 } __attribute__ ((gcc_struct));
1045 struct __ecereNameSpace__ecere__sys__OldList * items;
1046 } __attribute__ ((gcc_struct));
1047 } __attribute__ ((gcc_struct));
1049 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_DBIndexItem;
1053 struct DBIndexItem * prev;
1054 struct DBIndexItem * next;
1055 struct Identifier * id;
1057 } __attribute__ ((gcc_struct));
1059 extern YYSTYPE yylval;
1061 extern struct Location yylloc;
1063 static struct __ecereNameSpace__ecere__sys__OldList * tableStatements, * indexStatements, * addFieldStatements;
1065 static int numIndexes;
1067 static struct External * addAfter;
1069 static void ProcessDeclaration(struct Declaration * decl);
1071 extern struct __ecereNameSpace__ecere__com__Class * thisClass;
1073 static void ProcessMemberInit(struct MemberInit * init);
1075 static void ProcessClassFunction(struct ClassFunction * func);
1077 static void ProcessProperty(struct PropertyDef * def);
1079 static void ProcessStatement(struct Statement * stmt);
1081 static void ProcessSpecifier(struct Specifier * spec)
1089 if(spec->definitions)
1091 struct ClassDef * def;
1093 for(def = (*spec->definitions).first; def; def = def->next)
1098 ProcessDeclaration(def->decl);
1102 struct MemberInit * init;
1104 for(init = (*def->defProperties).first; init; init = init->next)
1106 struct __ecereNameSpace__ecere__com__Class * oldThisClass = thisClass;
1108 ProcessMemberInit(init);
1113 ProcessClassFunction(def->function);
1116 if(def->propertyDef)
1118 ProcessProperty(def->propertyDef);
1122 if(def->propertyWatch && def->propertyWatch->compound)
1124 ProcessStatement(def->propertyWatch->compound);
1135 static void ProcessIdentifier(struct Identifier * id)
1139 static void ProcessInstance(struct Instantiation * inst);
1141 extern size_t strlen(const char * );
1143 extern void * memcpy(void * , const void * , size_t size);
1145 extern void __ecereNameSpace__ecere__sys__ChangeCh(char * string, char ch1, char ch2);
1147 extern int sprintf(char * , char * , ...);
1149 extern void FreeExpContents(struct Expression * exp);
1151 extern struct Identifier * MkIdentifier(char * string);
1153 extern struct Statement * MkCompoundStmt(struct __ecereNameSpace__ecere__sys__OldList * declarations, struct __ecereNameSpace__ecere__sys__OldList * statements);
1155 extern struct __ecereNameSpace__ecere__sys__OldList * MkList(void);
1157 extern struct Context * curContext;
1159 extern struct Declaration * MkDeclaration(struct __ecereNameSpace__ecere__sys__OldList * specifiers, struct __ecereNameSpace__ecere__sys__OldList * initDeclarators);
1161 extern struct __ecereNameSpace__ecere__sys__OldList * MkListOne(void * item);
1163 extern struct Specifier * MkSpecifierName(char * name);
1165 extern struct InitDeclarator * MkInitDeclarator(struct Declarator * declarator, struct Initializer * initializer);
1167 extern struct Declarator * MkDeclaratorIdentifier(struct Identifier * id);
1169 extern struct Initializer * MkInitializerAssignment(struct Expression * exp);
1171 extern struct Expression * MkExpIdentifier(struct Identifier * id);
1173 extern struct Specifier * MkSpecifier(int specifier);
1175 extern struct Statement * MkIfStmt(struct __ecereNameSpace__ecere__sys__OldList * exp, struct Statement * statement, struct Statement * elseStmt);
1177 extern struct Statement * MkReturnStmt(struct __ecereNameSpace__ecere__sys__OldList * exp);
1179 extern struct Statement * MkExpressionStmt(struct __ecereNameSpace__ecere__sys__OldList * expressions);
1181 extern struct Expression * MkExpOp(struct Expression * exp1, int op, struct Expression * exp2);
1183 extern struct Expression * CopyExpression(struct Expression * exp);
1185 extern struct Expression * MkExpCall(struct Expression * expression, struct __ecereNameSpace__ecere__sys__OldList * arguments);
1187 extern struct Expression * MkExpMember(struct Expression * expression, struct Identifier * member);
1189 extern struct Declarator * MkDeclaratorArray(struct Declarator * declarator, struct Expression * exp);
1191 extern struct Expression * MkExpConstant(char * string);
1193 extern struct Initializer * MkInitializerList(struct __ecereNameSpace__ecere__sys__OldList * list);
1195 extern void Compiler_Error(char * format, ...);
1197 extern char * __ecereNameSpace__ecere__GetTranslatedString(struct __ecereNameSpace__ecere__com__Instance * module, char * string, char * stringAndContext);
1199 extern struct __ecereNameSpace__ecere__com__Instance * __thisModule;
1201 extern void * __ecereNameSpace__ecere__com__eInstance_New(struct __ecereNameSpace__ecere__com__Class * _class);
1203 void __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add(struct __ecereNameSpace__ecere__sys__OldList * this, void * item);
1205 static void ProcessExpression(struct Expression * exp)
1210 ProcessExpression(exp->_new.size);
1213 ProcessExpression(exp->_renew.exp);
1214 ProcessExpression(exp->_renew.size);
1219 ProcessIdentifier(exp->identifier);
1222 ProcessInstance(exp->instance);
1229 ProcessExpression(exp->op.exp1);
1233 ProcessExpression(exp->op.exp2);
1238 struct Expression * expression;
1240 for(expression = (*exp->list).first; expression; expression = expression->next)
1242 ProcessExpression(expression);
1248 struct Expression * expression;
1250 ProcessExpression(exp->index.exp);
1251 for(expression = (*exp->index.index).first; expression; expression = expression->next)
1253 ProcessExpression(expression);
1259 ProcessExpression(exp->call.exp);
1260 if(exp->call.arguments)
1262 struct Expression * expression;
1264 for(expression = (*exp->call.arguments).first; expression; expression = expression->next)
1266 ProcessExpression(expression);
1272 ProcessExpression(exp->member.exp);
1275 ProcessExpression(exp->member.exp);
1280 ProcessExpression(exp->cast.exp);
1283 ProcessExpression(exp->cond.cond);
1285 struct Expression * expression;
1287 for(expression = (*exp->cond.exp).first; expression; expression = expression->next)
1289 ProcessExpression(expression);
1292 ProcessExpression(exp->cond.elseExp);
1298 char tableName[1024];
1300 int len = strlen(exp->db.table);
1302 memcpy(tableName, exp->db.table + 1, len - 2);
1303 tableName[len - 2] = (char)0;
1304 __ecereNameSpace__ecere__sys__ChangeCh(tableName, ' ', '_');
1305 sprintf(name, "__ecereDBField_%s_%s", tableName, exp->db.id->string);
1306 FreeExpContents(exp);
1308 exp->identifier = MkIdentifier(name);
1313 char tableName[1024];
1315 int len = strlen(exp->db.table);
1317 memcpy(tableName, exp->db.table + 1, len - 2);
1318 tableName[len - 2] = (char)0;
1319 __ecereNameSpace__ecere__sys__ChangeCh(tableName, ' ', '_');
1320 sprintf(name, "__ecereDBTable_%s", tableName);
1321 FreeExpContents(exp);
1323 exp->identifier = MkIdentifier(name);
1328 char tableName[1024];
1330 int len = strlen(exp->db.table);
1332 memcpy(tableName, exp->db.table + 1, len - 2);
1333 tableName[len - 2] = (char)0;
1334 __ecereNameSpace__ecere__sys__ChangeCh(tableName, ' ', '_');
1335 sprintf(name, "__ecereDBIndex_%s_%s", tableName, exp->db.id->string);
1336 FreeExpContents(exp);
1338 exp->identifier = MkIdentifier(name);
1345 struct Statement * databaseOpenStmt = MkCompoundStmt(MkList(), MkList());
1346 struct Statement * compound, * compound2;
1347 struct Statement * ifDBStmt;
1348 struct __ecereNameSpace__ecere__sys__OldList * args;
1349 char numIndexesString[16];
1351 databaseOpenStmt->compound.context = __extension__ ({
1352 struct Context * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Context);
1354 __ecereInstance1->parent = curContext, __ecereInstance1;
1356 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*databaseOpenStmt->compound.declarations), MkDeclaration(MkListOne(MkSpecifierName("Database")), MkListOne(MkInitDeclarator(MkDeclaratorIdentifier(MkIdentifier("db")), (((void *)0))))));
1357 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*databaseOpenStmt->compound.declarations), MkDeclaration(MkListOne(MkSpecifierName("bool")), MkListOne(MkInitDeclarator(MkDeclaratorIdentifier(MkIdentifier("createNow")), MkInitializerAssignment(MkExpIdentifier(MkIdentifier("false")))))));
1359 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*args), MkSpecifier(STATIC));
1360 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*args), MkSpecifierName("bool"));
1361 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*databaseOpenStmt->compound.declarations), MkDeclaration(args, MkListOne(MkInitDeclarator(MkDeclaratorIdentifier(MkIdentifier("initialized")), MkInitializerAssignment(MkExpIdentifier(MkIdentifier("false")))))));
1362 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*databaseOpenStmt->compound.statements), MkIfStmt(MkListOne(MkExpIdentifier(MkIdentifier("initialized"))), MkReturnStmt(MkListOne(MkExpIdentifier(MkIdentifier("null")))), (((void *)0))));
1363 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*databaseOpenStmt->compound.statements), MkExpressionStmt(MkListOne(MkExpOp(MkExpIdentifier(MkIdentifier("initialized")), '=', MkExpIdentifier(MkIdentifier("true"))))));
1365 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*args), CopyExpression(exp->dbopen.name));
1366 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*args), MkExpIdentifier(MkIdentifier("no")));
1367 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*databaseOpenStmt->compound.statements), MkExpressionStmt(MkListOne(MkExpOp(MkExpIdentifier(MkIdentifier("db")), '=', MkExpCall(MkExpMember(CopyExpression(exp->dbopen.ds), MkIdentifier("OpenDatabase")), args)))));
1368 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*databaseOpenStmt->compound.statements), MkIfStmt(MkListOne(MkExpOp((((void *)0)), '!', MkExpIdentifier(MkIdentifier("db")))), compound = MkCompoundStmt((((void *)0)), MkList()), (((void *)0))));
1369 compound->compound.context = __extension__ ({
1370 struct Context * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Context);
1372 __ecereInstance1->parent = databaseOpenStmt->compound.context, __ecereInstance1;
1375 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*args), exp->dbopen.name);
1376 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*args), MkExpIdentifier(MkIdentifier("create")));
1377 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*compound->compound.statements), MkExpressionStmt(MkListOne(MkExpOp(MkExpIdentifier(MkIdentifier("db")), '=', MkExpCall(MkExpMember(exp->dbopen.ds, MkIdentifier("OpenDatabase")), args)))));
1378 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*compound->compound.statements), MkExpressionStmt(MkListOne(MkExpOp(MkExpIdentifier(MkIdentifier("createNow")), '=', MkExpIdentifier(MkIdentifier("true"))))));
1379 exp->dbopen.name = (((void *)0));
1380 exp->dbopen.ds = (((void *)0));
1381 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*databaseOpenStmt->compound.statements), MkIfStmt(MkListOne(MkExpIdentifier(MkIdentifier("db"))), ifDBStmt = MkCompoundStmt(MkList(), MkList()), (((void *)0))));
1382 ifDBStmt->compound.context = __extension__ ({
1383 struct Context * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Context);
1385 __ecereInstance1->parent = databaseOpenStmt->compound.context, __ecereInstance1;
1387 sprintf(numIndexesString, "%d", numIndexes);
1388 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*ifDBStmt->compound.declarations), MkDeclaration(MkListOne(MkSpecifierName("FieldIndex")), MkListOne(MkInitDeclarator(MkDeclaratorArray(MkDeclaratorIdentifier(MkIdentifier("indexes")), MkExpConstant(numIndexesString)), MkInitializerList(MkListOne(MkInitializerList(MkListOne(MkInitializerAssignment(MkExpIdentifier(MkIdentifier("null")))))))))));
1389 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*ifDBStmt->compound.statements), compound = MkCompoundStmt((((void *)0)), tableStatements));
1390 compound->compound.context = __extension__ ({
1391 struct Context * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Context);
1393 __ecereInstance1->parent = ifDBStmt->compound.context, __ecereInstance1;
1395 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*ifDBStmt->compound.statements), (compound = MkCompoundStmt((((void *)0)), addFieldStatements), compound->compound.context = __extension__ ({
1396 struct Context * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Context);
1398 __ecereInstance1->parent = ifDBStmt->compound.context, __ecereInstance1;
1400 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*ifDBStmt->compound.statements), compound = MkCompoundStmt((((void *)0)), indexStatements));
1401 compound->compound.context = __extension__ ({
1402 struct Context * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Context);
1404 __ecereInstance1->parent = ifDBStmt->compound.context, __ecereInstance1;
1407 exp->compound = databaseOpenStmt;
1408 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*databaseOpenStmt->compound.statements), MkExpressionStmt(MkListOne(MkExpIdentifier(MkIdentifier("db")))));
1409 tableStatements = (((void *)0));
1413 FreeExpContents(exp);
1414 Compiler_Error(__ecereNameSpace__ecere__GetTranslatedString(__thisModule, "No database table defined in this module or database_open already used.\n", (((void *)0))));
1422 static void ProcessStatement(struct Statement * stmt)
1427 ProcessStatement(stmt->labeled.stmt);
1430 if(stmt->caseStmt.exp)
1432 ProcessExpression(stmt->caseStmt.exp);
1434 if(stmt->caseStmt.stmt)
1436 ProcessStatement(stmt->caseStmt.stmt);
1441 ProcessDeclaration(stmt->decl);
1446 struct Context * oldContext = curContext;
1448 curContext = stmt->compound.context;
1449 if(stmt->compound.declarations)
1451 struct Declaration * decl;
1453 for(decl = (*stmt->compound.declarations).first; decl; decl = decl->next)
1455 ProcessDeclaration(decl);
1458 if(stmt->compound.statements)
1460 struct Statement * statement;
1462 for(statement = (*stmt->compound.statements).first; statement; statement = statement->next)
1464 ProcessStatement(statement);
1467 curContext = oldContext;
1472 if(stmt->expressions)
1474 struct Expression * exp;
1476 for(exp = (*stmt->expressions).first; exp; exp = exp->next)
1478 ProcessExpression(exp);
1485 struct Expression * exp;
1487 for(exp = (*stmt->ifStmt.exp).first; exp; exp = exp->next)
1489 ProcessExpression(exp);
1491 if(stmt->ifStmt.stmt)
1493 ProcessStatement(stmt->ifStmt.stmt);
1495 if(stmt->ifStmt.elseStmt)
1497 ProcessStatement(stmt->ifStmt.elseStmt);
1503 struct Expression * exp;
1505 for(exp = (*stmt->switchStmt.exp).first; exp; exp = exp->next)
1507 ProcessExpression(exp);
1509 ProcessStatement(stmt->switchStmt.stmt);
1514 struct Expression * exp;
1516 if(stmt->whileStmt.exp)
1518 for(exp = (*stmt->whileStmt.exp).first; exp; exp = exp->next)
1520 ProcessExpression(exp);
1523 if(stmt->whileStmt.stmt)
1524 ProcessStatement(stmt->whileStmt.stmt);
1529 ProcessStatement(stmt->doWhile.stmt);
1530 if(stmt->doWhile.exp)
1532 struct Expression * exp;
1534 for(exp = (*stmt->doWhile.exp).first; exp; exp = exp->next)
1536 ProcessExpression(exp);
1543 struct Expression * exp;
1545 if(stmt->forStmt.init)
1547 ProcessStatement(stmt->forStmt.init);
1549 if(stmt->forStmt.check)
1551 ProcessStatement(stmt->forStmt.check);
1553 if(stmt->forStmt.increment)
1555 for(exp = (*stmt->forStmt.increment).first; exp; exp = exp->next)
1557 ProcessExpression(exp);
1560 if(stmt->forStmt.stmt)
1561 ProcessStatement(stmt->forStmt.stmt);
1571 if(stmt->expressions)
1573 struct Expression * exp;
1575 for(exp = (*stmt->expressions).first; exp; exp = exp->next)
1577 ProcessExpression(exp);
1584 struct Identifier * _watch;
1586 if(stmt->_watch.watcher)
1588 ProcessExpression(stmt->_watch.watcher);
1590 if(stmt->_watch.object)
1592 ProcessExpression(stmt->_watch.object);
1594 if(stmt->_watch.watches)
1596 for(_watch = (*stmt->_watch.watches).first; _watch; _watch = _watch->next)
1598 ProcessIdentifier(_watch);
1605 struct PropertyWatch * _watch;
1607 if(stmt->_watch.watcher)
1609 ProcessExpression(stmt->_watch.watcher);
1611 if(stmt->_watch.object)
1613 ProcessExpression(stmt->_watch.object);
1615 if(stmt->_watch.watches)
1617 for(_watch = (*stmt->_watch.watches).first; _watch; _watch = _watch->next)
1619 if(_watch->compound)
1621 ProcessStatement(_watch->compound);
1630 static void ProcessInitializer(struct Initializer * initializer)
1632 switch(initializer->type)
1636 struct Initializer * init;
1638 for(init = (*initializer->list).first; init; init = init->next)
1640 ProcessInitializer(init);
1645 ProcessExpression(initializer->exp);
1650 static void ProcessInitDeclarator(struct InitDeclarator * decl)
1652 if(decl->initializer)
1653 ProcessInitializer(decl->initializer);
1656 static void ProcessDeclaration(struct Declaration * decl)
1662 struct Specifier * spec;
1664 if(decl->specifiers)
1666 for(spec = (*decl->specifiers).first; spec; spec = spec->next)
1668 ProcessSpecifier(spec);
1675 if(decl->specifiers)
1677 struct Specifier * s;
1679 for(s = (*decl->specifiers).first; s; s = s->next)
1681 ProcessSpecifier(s);
1684 if(decl->declarators && (*decl->declarators).first)
1686 struct InitDeclarator * d;
1688 for(d = (*decl->declarators).first; d; d = d->next)
1690 ProcessInitDeclarator(d);
1696 ProcessInstance(decl->inst);
1701 static void ProcessFunction(struct FunctionDefinition * func)
1705 ProcessStatement(func->body);
1709 static void ProcessMemberInit(struct MemberInit * init)
1711 if(init->initializer)
1713 ProcessInitializer(init->initializer);
1717 static void ProcessInstance(struct Instantiation * inst)
1721 struct MembersInit * init;
1722 struct MemberInit * memberInit;
1724 for(init = (*inst->members).first; init; init = init->next)
1726 if(init->type == 0 && init->dataMembers)
1728 for(memberInit = (*init->dataMembers).first; memberInit; memberInit = memberInit->next)
1730 ProcessMemberInit(memberInit);
1735 ProcessClassFunction(init->function);
1741 static void ProcessClassFunction(struct ClassFunction * func)
1745 ProcessStatement(func->body);
1749 static void ProcessProperty(struct PropertyDef * def)
1753 ProcessStatement(def->getStmt);
1757 ProcessStatement(def->setStmt);
1761 static void ProcessClassDef(struct ClassDef * def)
1766 ProcessDeclaration(def->decl);
1770 struct MemberInit * init;
1772 for(init = (*def->defProperties).first; init; init = init->next)
1774 ProcessMemberInit(init);
1779 ProcessClassFunction(def->function);
1782 if(def->propertyDef)
1784 ProcessProperty(def->propertyDef);
1788 if(def->propertyWatch && def->propertyWatch->compound)
1790 ProcessStatement(def->propertyWatch->compound);
1796 static void ProcessClass(struct ClassDefinition * _class)
1798 if(_class->definitions)
1800 struct ClassDef * def;
1802 for(def = (*_class->definitions).first; def; def = def->next)
1804 ProcessClassDef(def);
1809 extern struct External * MkExternalDeclaration(struct Declaration * declaration);
1811 extern struct __ecereNameSpace__ecere__sys__OldList * ast;
1813 extern struct Expression * MkExpString(char * string);
1815 extern struct Expression * MkExpInstance(struct Instantiation * inst);
1817 extern struct Instantiation * MkInstantiation(struct Specifier * _class, struct Expression * exp, struct __ecereNameSpace__ecere__sys__OldList * members);
1819 extern struct MembersInit * MkMembersInitList(struct __ecereNameSpace__ecere__sys__OldList * dataMembers);
1821 extern struct MemberInit * MkMemberInit(struct __ecereNameSpace__ecere__sys__OldList * ids, struct Initializer * initializer);
1823 extern struct Context * PushContext(void);
1825 extern struct ClassDefinition * MkClass(struct Symbol * symbol, struct __ecereNameSpace__ecere__sys__OldList * baseSpecs, struct __ecereNameSpace__ecere__sys__OldList * definitions);
1827 extern struct Symbol * DeclClass(int symbolID, char * name);
1829 extern struct Context * globalContext;
1831 extern void PopContext(struct Context * ctx);
1833 extern struct ClassDef * MkClassDefDefaultProperty(struct __ecereNameSpace__ecere__sys__OldList * defProperties);
1835 extern struct MemberInit * MkMemberInitExp(struct Expression * idExp, struct Initializer * initializer);
1837 extern struct External * MkExternalClass(struct ClassDefinition * _class);
1839 extern int strcmp(const char * , const char * );
1841 extern char * strcpy(char * , const char * );
1843 extern struct ClassDef * MkClassDefProperty(struct PropertyDef * propertyDef);
1845 extern struct PropertyDef * MkProperty(struct __ecereNameSpace__ecere__sys__OldList * specs, struct Declarator * decl, struct Identifier * id, struct Statement * setStmt, struct Statement * getStmt);
1847 extern struct __ecereNameSpace__ecere__sys__OldList * CopyList(struct __ecereNameSpace__ecere__sys__OldList * source, void * (* CopyFunction)(void * ));
1849 extern struct Specifier * CopySpecifier(struct Specifier * spec);
1851 extern struct Declarator * CopyDeclarator(struct Declarator * declarator);
1853 extern struct Declaration * MkDeclarationInst(struct Instantiation * inst);
1855 extern struct Identifier * CopyIdentifier(struct Identifier * id);
1857 extern struct Expression * MkExpClass(struct __ecereNameSpace__ecere__sys__OldList * specifiers, struct Declarator * decl);
1859 extern struct Expression * MkExpIndex(struct Expression * expression, struct __ecereNameSpace__ecere__sys__OldList * index);
1861 extern struct ClassDef * MkClassDefClassPropertyValue(struct Identifier * id, struct Initializer * initializer);
1863 extern struct Expression * MkExpDBTable(char * table);
1865 extern char * __ecereNameSpace__ecere__sys__CopyString(char * string);
1867 extern struct Expression * MkExpDBField(char * table, struct Identifier * id);
1869 unsigned int __ecereMethod___ecereNameSpace__ecere__sys__OldList_Insert(struct __ecereNameSpace__ecere__sys__OldList * this, void * prevItem, void * item);
1871 static void ProcessDBTable(struct DBTableDef * table)
1873 struct __ecereNameSpace__ecere__sys__OldList * rowClassDefs = MkList(), * idClassDefs = (((void *)0));
1874 char tableName[1024];
1875 char rowClassName[1024];
1876 int len = strlen(table->name);
1877 unsigned int indexed = 0x0;
1879 char nameField[1024];
1880 struct __ecereNameSpace__ecere__sys__OldList * args;
1881 struct __ecereNameSpace__ecere__sys__OldList * members;
1885 idClassDefs = MkList();
1886 nameField[0] = (char)0;
1887 memcpy(tableName, table->name + 1, len - 2);
1888 tableName[len - 2] = (char)0;
1889 __ecereNameSpace__ecere__sys__ChangeCh(tableName, ' ', '_');
1890 sprintf(tableID, "__ecereDBTable_%s", tableName);
1891 sprintf(rowClassName, "Row%s", tableName);
1892 __ecereNameSpace__ecere__sys__ChangeCh(rowClassName, ' ', '_');
1893 if(!tableStatements)
1895 tableStatements = MkList();
1896 indexStatements = MkList();
1897 addFieldStatements = MkList();
1900 struct External * external;
1902 external = MkExternalDeclaration(MkDeclaration(MkListOne(MkSpecifierName("Table")), MkListOne(MkInitDeclarator(MkDeclaratorIdentifier(MkIdentifier(tableID)), (((void *)0))))));
1903 external->declaration->declMode = table->declMode;
1904 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Insert((&*ast), addAfter, external);
1906 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*tableStatements), MkExpressionStmt(MkListOne(MkExpOp(MkExpIdentifier(MkIdentifier(tableID)), '=', MkExpCall(MkExpMember(MkExpIdentifier(MkIdentifier("db")), MkIdentifier("OpenTable")), args)))));
1907 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*args), MkExpString(table->name));
1909 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*args), MkExpInstance(MkInstantiation((((void *)0)), (((void *)0)), MkListOne(MkMembersInitList(members)))));
1910 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*members), MkMemberInit((((void *)0)), MkInitializerAssignment(MkExpIdentifier(MkIdentifier("tableRows")))));
1911 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*members), MkMemberInit((((void *)0)), MkInitializerAssignment(MkExpIdentifier(MkIdentifier("create")))));
1914 struct ClassDefinition * _class;
1915 struct ClassDef * def;
1916 struct External * external;
1917 struct __ecereNameSpace__ecere__sys__OldList * inheritanceSpecs = MkList();
1919 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*inheritanceSpecs), MkSpecifier(PRIVATE));
1920 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*inheritanceSpecs), MkSpecifierName("Row"));
1922 _class = MkClass(DeclClass(globalContext->nextID++, rowClassName), inheritanceSpecs, rowClassDefs);
1923 PopContext(curContext);
1924 def = MkClassDefDefaultProperty(MkListOne(MkMemberInitExp(MkExpIdentifier(MkIdentifier("tbl")), MkInitializerAssignment(MkExpIdentifier(MkIdentifier(tableID))))));
1925 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*rowClassDefs), def);
1926 _class->symbol->idCode = symbolID;
1927 _class->declMode = table->declMode;
1928 external = MkExternalClass(_class);
1929 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Insert((&*ast), addAfter, external);
1930 addAfter = external;
1932 if(table->definitions)
1934 struct DBTableEntry * entry;
1936 for(entry = (*table->definitions).first; entry; entry = entry->next)
1942 unsigned int isIndex = 0x0;
1944 struct __ecereNameSpace__ecere__sys__OldList * args;
1945 struct Specifier * spec = entry->dataType->qualifiers ? (struct Specifier *)(*entry->dataType->qualifiers).first : (((void *)0));
1947 sprintf(fieldID, "__ecereDBField_%s_%s", tableName, entry->id->string);
1950 if(!nameField[0] && spec->type == 1 && (!strcmp(spec->name, "String") || !strcmp(spec->name, "eda::CIString")))
1952 strcpy(nameField, entry->id->string);
1954 if(!indexed && spec->type == 1 && !strcmp(spec->name, table->symbol->string))
1956 struct Statement * rowSet = MkCompoundStmt(MkList(), MkList());
1958 struct ClassDef * def;
1960 numIndexes = ((numIndexes > 1) ? numIndexes : 1);
1963 sprintf(name, "_%s", entry->id->string);
1964 curContext = rowSet->compound.context = __extension__ ({
1965 struct Context * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Context);
1967 __ecereInstance1->parent = globalContext, __ecereInstance1;
1969 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*rowSet->compound.statements), MkExpressionStmt(MkListOne(MkExpCall(MkExpIdentifier(MkIdentifier("Find")), args = MkList()))));
1970 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*args), MkExpIdentifier(MkIdentifier(fieldID)));
1971 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*args), MkExpIdentifier(MkIdentifier("middle")));
1972 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*args), MkExpIdentifier(MkIdentifier("nil")));
1973 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*args), MkExpIdentifier(MkIdentifier("value")));
1974 curContext = globalContext;
1975 def = MkClassDefProperty(MkProperty(CopyList(entry->dataType->qualifiers, CopySpecifier), CopyDeclarator(entry->dataType->declarator), MkIdentifier(name), rowSet, (((void *)0))));
1976 def->propertyDef->symbol->id = def->propertyDef->symbol->idCode = symbolID;
1977 def->memberAccess = 1;
1978 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*rowClassDefs), def);
1983 struct Statement * rowSet = MkCompoundStmt(MkList(), MkList()), * rowGet = MkCompoundStmt(MkList(), MkList());
1984 struct ClassDef * def;
1986 curContext = rowGet->compound.context = __extension__ ({
1987 struct Context * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Context);
1989 __ecereInstance1->parent = globalContext, __ecereInstance1;
1991 if(spec->type == 1 && spec->symbol && spec->symbol->registered && spec->symbol->registered->type == 1)
1993 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*rowGet->compound.declarations), MkDeclarationInst(MkInstantiation(MkSpecifierName(spec->name), MkExpIdentifier(MkIdentifier("d")), (((void *)0)))));
1997 struct Expression * exp;
1999 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*rowGet->compound.declarations), MkDeclaration(CopyList(entry->dataType->qualifiers, CopySpecifier), MkListOne(MkInitDeclarator(MkDeclaratorIdentifier(MkIdentifier("d")), MkInitializerAssignment(exp = MkExpConstant("0"))))));
2000 exp->destType = __extension__ ({
2001 struct Type * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Type);
2003 __ecereInstance1->kind = 3, __ecereInstance1->refCount = 1, __ecereInstance1;
2006 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*rowGet->compound.statements), MkExpressionStmt(MkListOne(MkExpCall(MkExpIdentifier(MkIdentifier("GetData")), args = MkList()))));
2007 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*args), MkExpIdentifier(MkIdentifier(fieldID)));
2008 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*args), MkExpIdentifier(MkIdentifier("d")));
2009 if(spec->type == 1 && spec->symbol && spec->symbol->registered && spec->symbol->registered->type == 1)
2011 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*rowGet->compound.statements), MkExpressionStmt(MkListOne(MkExpOp(MkExpIdentifier(MkIdentifier("value")), '=', MkExpIdentifier(MkIdentifier("d"))))));
2014 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*rowGet->compound.statements), MkReturnStmt(MkListOne(MkExpIdentifier(MkIdentifier("d")))));
2015 curContext = rowSet->compound.context = __extension__ ({
2016 struct Context * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Context);
2018 __ecereInstance1->parent = globalContext, __ecereInstance1;
2020 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*rowSet->compound.statements), MkExpressionStmt(MkListOne(MkExpCall(MkExpIdentifier(MkIdentifier("SetData")), args = MkList()))));
2021 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*args), MkExpIdentifier(MkIdentifier(fieldID)));
2022 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*args), MkExpIdentifier(MkIdentifier("value")));
2023 curContext = globalContext;
2024 def = MkClassDefProperty(MkProperty(CopyList(entry->dataType->qualifiers, CopySpecifier), entry->dataType->declarator, CopyIdentifier(entry->id), rowSet, rowGet));
2025 def->propertyDef->symbol->id = def->propertyDef->symbol->idCode = symbolID;
2026 def->memberAccess = 1;
2027 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*rowClassDefs), def);
2030 struct External * external;
2032 external = MkExternalDeclaration(MkDeclaration(MkListOne(MkSpecifierName("Field")), MkListOne(MkInitDeclarator(MkDeclaratorIdentifier(MkIdentifier(fieldID)), (((void *)0))))));
2033 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*ast), external);
2034 external->declaration->declMode = table->declMode;
2036 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*addFieldStatements), MkExpressionStmt(MkListOne(MkExpOp(MkExpIdentifier(MkIdentifier(fieldID)), '=', MkExpCall(MkExpMember(MkExpIdentifier(MkIdentifier(tableID)), MkIdentifier("FindField")), args)))));
2037 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*args), MkExpString(entry->name));
2039 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*addFieldStatements), MkIfStmt(MkListOne(MkExpOp((((void *)0)), '!', MkExpIdentifier(MkIdentifier(fieldID)))), MkExpressionStmt(MkListOne(MkExpOp(MkExpIdentifier(MkIdentifier(fieldID)), '=', MkExpCall(MkExpMember(MkExpIdentifier(MkIdentifier(tableID)), MkIdentifier("AddField")), args)))), (((void *)0))));
2040 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*args), MkExpString(entry->name));
2041 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*args), MkExpClass(CopyList(entry->dataType->qualifiers, CopySpecifier), CopyDeclarator(entry->dataType->declarator)));
2042 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*args), MkExpConstant("0"));
2046 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*indexStatements), MkExpressionStmt(MkListOne(MkExpOp(MkExpMember(MkExpIndex(MkExpIdentifier(MkIdentifier("indexes")), MkListOne(MkExpConstant("0"))), MkIdentifier("field")), '=', MkExpIdentifier(MkIdentifier(fieldID))))));
2047 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*indexStatements), MkExpressionStmt(MkListOne(MkExpOp(MkExpMember(MkExpIndex(MkExpIdentifier(MkIdentifier("indexes")), MkListOne(MkExpConstant("0"))), MkIdentifier("order")), '=', MkExpIdentifier(MkIdentifier("ascending"))))));
2049 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*indexStatements), MkExpressionStmt(MkListOne(MkExpCall(MkExpMember(MkExpIdentifier(MkIdentifier(tableID)), MkIdentifier("Index")), args))));
2050 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*args), MkExpConstant("1"));
2051 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*args), MkExpIdentifier(MkIdentifier("indexes")));
2060 struct ClassDefinition * _class;
2061 struct External * external;
2062 struct ClassDef * def;
2063 struct Expression * exp;
2066 _class = MkClass(table->symbol, MkListOne(MkSpecifierName("Id")), idClassDefs);
2067 PopContext(curContext);
2068 _class->declMode = table->declMode;
2069 external = MkExternalClass(_class);
2070 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Insert((&*ast), addAfter, external);
2071 addAfter = external;
2072 def = MkClassDefClassPropertyValue(MkIdentifier("table"), MkInitializerAssignment(exp = MkExpOp((((void *)0)), '&', MkExpDBTable(__ecereNameSpace__ecere__sys__CopyString(table->name)))));
2073 ProcessExpression(exp);
2074 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*idClassDefs), def);
2077 def = MkClassDefClassPropertyValue(MkIdentifier("nameField"), MkInitializerAssignment(exp = MkExpOp((((void *)0)), '&', MkExpDBField(__ecereNameSpace__ecere__sys__CopyString(table->name), MkIdentifier(nameField)))));
2078 ProcessExpression(exp);
2079 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*idClassDefs), def);
2082 if(table->definitions)
2084 struct DBTableEntry * entry;
2086 for(entry = (*table->definitions).first; entry; entry = entry->next)
2093 struct __ecereNameSpace__ecere__sys__OldList * args;
2094 struct Specifier * spec = entry->dataType->qualifiers ? (struct Specifier *)(*entry->dataType->qualifiers).first : (((void *)0));
2096 sprintf(fieldID, "__ecereDBField_%s_%s", tableName, entry->id->string);
2097 if(idClassDefs && spec)
2099 struct Statement * idSet = MkCompoundStmt(MkList(), MkList()), * idGet = MkCompoundStmt(MkList(), MkList());
2100 struct ClassDef * def;
2102 curContext = idGet->compound.context = __extension__ ({
2103 struct Context * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Context);
2105 __ecereInstance1->parent = globalContext, __ecereInstance1;
2107 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*idGet->compound.declarations), MkDeclarationInst(MkInstantiation(MkSpecifierName(rowClassName), MkExpIdentifier(MkIdentifier("r")), MkListOne(MkMembersInitList(MkListOne(MkMemberInit((((void *)0)), MkInitializerAssignment(MkExpIdentifier(MkIdentifier("this"))))))))));
2108 if(spec->type == 1 && spec->symbol && spec->symbol->registered && spec->symbol->registered->type == 1)
2110 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*idGet->compound.declarations), MkDeclarationInst(MkInstantiation(MkSpecifierName(spec->name), MkExpIdentifier(MkIdentifier("d")), (((void *)0)))));
2114 struct Expression * exp;
2116 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*idGet->compound.declarations), MkDeclaration(CopyList(entry->dataType->qualifiers, CopySpecifier), MkListOne(MkInitDeclarator(MkDeclaratorIdentifier(MkIdentifier("d")), MkInitializerAssignment(exp = MkExpConstant("0"))))));
2117 exp->destType = __extension__ ({
2118 struct Type * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Type);
2120 __ecereInstance1->kind = 3, __ecereInstance1->refCount = 1, __ecereInstance1;
2123 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*idGet->compound.statements), MkExpressionStmt(MkListOne(MkExpCall(MkExpMember(MkExpIdentifier(MkIdentifier("r")), MkIdentifier("GetData")), args = MkList()))));
2124 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*args), MkExpIdentifier(MkIdentifier(fieldID)));
2125 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*args), MkExpIdentifier(MkIdentifier("d")));
2126 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*idGet->compound.statements), MkExpressionStmt(MkListOne(MkExpOp((((void *)0)), DELETE, MkExpIdentifier(MkIdentifier("r"))))));
2127 if(spec->type == 1 && spec->symbol && spec->symbol->registered && spec->symbol->registered->type == 1)
2129 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*idGet->compound.statements), MkExpressionStmt(MkListOne(MkExpOp(MkExpIdentifier(MkIdentifier("value")), '=', MkExpIdentifier(MkIdentifier("d"))))));
2132 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*idGet->compound.statements), MkReturnStmt(MkListOne(MkExpIdentifier(MkIdentifier("d")))));
2133 curContext = idSet->compound.context = __extension__ ({
2134 struct Context * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Context);
2136 __ecereInstance1->parent = globalContext, __ecereInstance1;
2138 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*idSet->compound.declarations), MkDeclarationInst(MkInstantiation(MkSpecifierName(rowClassName), MkExpIdentifier(MkIdentifier("r")), MkListOne(MkMembersInitList(MkListOne(MkMemberInit((((void *)0)), MkInitializerAssignment(MkExpIdentifier(MkIdentifier("this"))))))))));
2139 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*idSet->compound.statements), MkExpressionStmt(MkListOne(MkExpCall(MkExpMember(MkExpIdentifier(MkIdentifier("r")), MkIdentifier("SetData")), args = MkList()))));
2140 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*args), MkExpIdentifier(MkIdentifier(fieldID)));
2141 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*args), MkExpIdentifier(MkIdentifier("value")));
2142 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*idSet->compound.statements), MkExpressionStmt(MkListOne(MkExpOp((((void *)0)), DELETE, MkExpIdentifier(MkIdentifier("r"))))));
2143 curContext = globalContext;
2144 def = MkClassDefProperty(MkProperty(CopyList(entry->dataType->qualifiers, CopySpecifier), CopyDeclarator(entry->dataType->declarator), CopyIdentifier(entry->id), idSet, idGet));
2145 def->propertyDef->symbol->id = def->propertyDef->symbol->idCode = symbolID;
2146 def->memberAccess = 1;
2147 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*idClassDefs), def);
2153 if(entry->items && (*entry->items).count)
2156 struct DBIndexItem * item;
2158 unsigned int needTable = 0x0;
2161 if(entry->id || indexed)
2163 if(entry->id || (*entry->items).count == 1)
2165 struct External * external;
2166 struct Identifier * id = entry->id ? entry->id : ((struct DBIndexItem *)(*entry->items).first)->id;
2168 sprintf(indexID, "__ecereDBIndex_%s_%s", tableName, id->string);
2169 external = MkExternalDeclaration(MkDeclaration(MkListOne(MkSpecifierName("Table")), MkListOne(MkInitDeclarator(MkDeclaratorIdentifier(MkIdentifier(indexID)), (((void *)0))))));
2170 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*ast), external);
2171 external->declaration->declMode = table->declMode;
2175 Compiler_Error(__ecereNameSpace__ecere__GetTranslatedString(__thisModule, "Multiple field index requires a name\n", (((void *)0))));
2180 strcpy(indexID, tableID);
2182 for(c = 0, item = (*entry->items).first; item; item = item->next, c++)
2186 sprintf(num, "%d", c);
2187 sprintf(fieldID, "__ecereDBField_%s_%s", tableName, item->id->string);
2188 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*indexStatements), MkExpressionStmt(MkListOne(MkExpOp(MkExpMember(MkExpIndex(MkExpIdentifier(MkIdentifier("indexes")), MkListOne(MkExpConstant(num))), MkIdentifier("field")), '=', MkExpIdentifier(MkIdentifier(fieldID))))));
2189 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*indexStatements), MkExpressionStmt(MkListOne(MkExpOp(MkExpMember(MkExpIndex(MkExpIdentifier(MkIdentifier("indexes")), MkListOne(MkExpConstant(num))), MkIdentifier("order")), '=', MkExpIdentifier(MkIdentifier((item->order == 0) ? "ascending" : "descending"))))));
2191 sprintf(num, "%d", c);
2192 numIndexes = ((numIndexes > c) ? numIndexes : c);
2196 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*indexStatements), MkExpressionStmt(MkListOne(MkExpOp(MkExpIdentifier(MkIdentifier(indexID)), '=', MkExpCall(MkExpMember(MkExpIdentifier(MkIdentifier("db")), MkIdentifier("OpenTable")), args)))));
2197 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*args), MkExpString(table->name));
2199 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*args), MkExpInstance(MkInstantiation((((void *)0)), (((void *)0)), MkListOne(MkMembersInitList(members)))));
2200 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*members), MkMemberInit((((void *)0)), MkInitializerAssignment(MkExpIdentifier(MkIdentifier("tableRows")))));
2203 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*indexStatements), MkExpressionStmt(MkListOne(MkExpCall(MkExpMember(MkExpIdentifier(MkIdentifier(indexID)), MkIdentifier("Index")), args))));
2204 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*args), MkExpConstant(num));
2205 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*args), MkExpIdentifier(MkIdentifier("indexes")));
2214 extern unsigned int inCompiler;
2216 extern void PrePreProcessClassDefinitions(void);
2218 extern struct External * curExternal;
2220 void ProcessDBTableDefinitions()
2222 struct External * external;
2224 addAfter = (((void *)0));
2225 curContext = globalContext;
2227 PrePreProcessClassDefinitions();
2228 DeclClass(0, "Field");
2229 DeclClass(0, "Table");
2230 DeclClass(0, "Row");
2233 if(ast != (((void *)0)))
2235 for(external = (*ast).first; external; external = external->next)
2237 curExternal = external;
2238 switch(external->type)
2241 ProcessDBTable(external->table);
2245 for(external = (*ast).first; external; external = external->next)
2247 curExternal = external;
2248 switch(external->type)
2251 ProcessFunction(external->function);
2254 ProcessDeclaration(external->declaration);
2257 ProcessClass(external->_class);
2262 curContext = globalContext;
2265 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__GlobalFunction;
2267 struct __ecereNameSpace__ecere__com__GlobalFunction;
2269 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);
2271 void __ecereRegisterModule_dbpass(struct __ecereNameSpace__ecere__com__Instance * module)
2273 struct __ecereNameSpace__ecere__com__Class * class;
2275 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ProcessDBTableDefinitions", "void ProcessDBTableDefinitions(void)", ProcessDBTableDefinitions, module, 1);
2278 void __ecereUnregisterModule_dbpass(struct __ecereNameSpace__ecere__com__Instance * module)