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;
119 unsigned int included;
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));
697 unsigned int isSigned;
699 unsigned int constant;
706 unsigned int byReference;
707 unsigned int extraParam;
709 unsigned int directClassAccess;
710 unsigned int computing;
711 unsigned int dllExport;
713 unsigned int keepCast;
714 unsigned int passAsTemplate;
716 } __attribute__ ((gcc_struct));
718 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__Class;
720 struct __ecereNameSpace__ecere__com__Class
722 struct __ecereNameSpace__ecere__com__Class * prev;
723 struct __ecereNameSpace__ecere__com__Class * next;
729 int (* Constructor)(struct __ecereNameSpace__ecere__com__Instance *);
730 void (* Destructor)(struct __ecereNameSpace__ecere__com__Instance *);
733 struct __ecereNameSpace__ecere__com__Class * base;
734 struct __ecereNameSpace__ecere__sys__BinaryTree methods;
735 struct __ecereNameSpace__ecere__sys__BinaryTree members;
736 struct __ecereNameSpace__ecere__sys__BinaryTree prop;
737 struct __ecereNameSpace__ecere__sys__OldList membersAndProperties;
738 struct __ecereNameSpace__ecere__sys__BinaryTree classProperties;
739 struct __ecereNameSpace__ecere__sys__OldList derivatives;
743 struct __ecereNameSpace__ecere__com__Instance * module;
744 struct __ecereNameSpace__ecere__com__NameSpace * nameSpace;
745 char * dataTypeString;
746 struct Type * dataType;
748 int defaultAlignment;
749 void (* Initialize)();
751 struct __ecereNameSpace__ecere__sys__OldList selfWatchers;
752 char * designerClass;
753 unsigned int noExpansion;
754 char * defaultProperty;
755 unsigned int comRedefinition;
757 unsigned int isRemote;
758 unsigned int internalDecl;
760 unsigned int computeSize;
762 int destructionWatchOffset;
764 struct __ecereNameSpace__ecere__sys__OldList delayedCPValues;
765 int inheritanceAccess;
768 struct __ecereNameSpace__ecere__sys__OldList conversions;
769 struct __ecereNameSpace__ecere__sys__OldList templateParams;
770 struct __ecereNameSpace__ecere__com__ClassTemplateArgument * templateArgs;
771 struct __ecereNameSpace__ecere__com__Class * templateClass;
772 struct __ecereNameSpace__ecere__sys__OldList templatized;
774 } __attribute__ ((gcc_struct));
776 extern long long __ecereNameSpace__ecere__com__eClass_GetProperty(struct __ecereNameSpace__ecere__com__Class * _class, char * name);
778 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__Instance;
780 struct __ecereNameSpace__ecere__com__Instance
783 struct __ecereNameSpace__ecere__com__Class * _class;
785 } __attribute__ ((gcc_struct));
787 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__DataMember;
789 struct __ecereNameSpace__ecere__com__DataMember
791 struct __ecereNameSpace__ecere__com__DataMember * prev;
792 struct __ecereNameSpace__ecere__com__DataMember * next;
794 unsigned int isProperty;
797 struct __ecereNameSpace__ecere__com__Class * _class;
798 char * dataTypeString;
799 struct __ecereNameSpace__ecere__com__Class * dataTypeClass;
800 struct Type * dataType;
804 struct __ecereNameSpace__ecere__sys__OldList members;
805 struct __ecereNameSpace__ecere__sys__BinaryTree membersAlpha;
808 } __attribute__ ((gcc_struct));
810 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__SerialBuffer;
812 struct __ecereNameSpace__ecere__com__SerialBuffer
814 unsigned char * _buffer;
818 } __attribute__ ((gcc_struct));
820 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__ClassTemplateArgument;
822 struct __ecereNameSpace__ecere__com__ClassTemplateArgument
828 char * dataTypeString;
829 struct __ecereNameSpace__ecere__com__Class * dataTypeClass;
830 } __attribute__ ((gcc_struct));
831 struct __ecereNameSpace__ecere__com__DataValue expression;
837 struct __ecereNameSpace__ecere__com__DataMember * member;
838 struct __ecereNameSpace__ecere__com__Property * prop;
839 struct __ecereNameSpace__ecere__com__Method * method;
840 } __attribute__ ((gcc_struct));
841 } __attribute__ ((gcc_struct));
842 } __attribute__ ((gcc_struct));
843 } __attribute__ ((gcc_struct));
847 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
850 typedef union YYSTYPE
855 struct Identifier * id;
856 struct Expression * exp;
857 struct Specifier * specifier;
858 struct __ecereNameSpace__ecere__sys__OldList * list;
859 struct Enumerator * enumerator;
860 struct Declarator * declarator;
861 struct Pointer * pointer;
862 struct Initializer * initializer;
863 struct InitDeclarator * initDeclarator;
864 struct TypeName * typeName;
865 struct Declaration * declaration;
866 struct Statement * stmt;
867 struct FunctionDefinition * function;
868 struct External * external;
869 struct Context * context;
870 struct AsmField * asmField;
871 struct Attrib * attrib;
872 struct ExtDecl * extDecl;
873 struct Attribute * attribute;
874 struct Instantiation * instance;
875 struct MembersInit * membersInit;
876 struct MemberInit * memberInit;
877 struct ClassFunction * classFunction;
878 struct ClassDefinition * _class;
879 struct ClassDef * classDef;
880 struct PropertyDef * prop;
882 struct Symbol * symbol;
883 struct PropertyWatch * propertyWatch;
884 struct TemplateParameter * templateParameter;
885 struct TemplateArgument * templateArgument;
886 struct TemplateDatatype * templateDatatype;
887 struct DBTableEntry * dbtableEntry;
888 struct DBIndexItem * dbindexItem;
889 struct DBTableDef * dbtableDef;
890 } __attribute__ ((gcc_struct)) YYSTYPE;
892 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Enumerator;
896 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_InitDeclarator;
898 struct InitDeclarator
900 struct InitDeclarator * prev;
901 struct InitDeclarator * next;
903 struct Declarator * declarator;
904 struct Initializer * initializer;
905 } __attribute__ ((gcc_struct));
907 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_AsmField;
911 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Attribute;
915 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_ClassFunction;
919 struct ClassFunction * prev;
920 struct ClassFunction * next;
922 struct __ecereNameSpace__ecere__sys__OldList * specifiers;
923 struct Declarator * declarator;
924 struct __ecereNameSpace__ecere__sys__OldList * declarations;
925 struct Statement * body;
926 struct __ecereNameSpace__ecere__com__Class * _class;
927 struct __ecereNameSpace__ecere__sys__OldList attached;
930 struct Symbol * propSet;
931 unsigned int isVirtual;
932 unsigned int isConstructor;
933 unsigned int isDestructor;
934 unsigned int dontMangle;
937 } __attribute__ ((gcc_struct));
939 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_MembersInit;
943 struct MembersInit * prev;
944 struct MembersInit * next;
949 struct __ecereNameSpace__ecere__sys__OldList * dataMembers;
950 struct ClassFunction * function;
951 } __attribute__ ((gcc_struct));
952 } __attribute__ ((gcc_struct));
954 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_MemberInit;
958 struct MemberInit * prev;
959 struct MemberInit * next;
961 struct Location realLoc;
962 struct __ecereNameSpace__ecere__sys__OldList * identifiers;
963 struct Initializer * initializer;
965 unsigned int variable;
966 unsigned int takeOutExp;
967 } __attribute__ ((gcc_struct));
969 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_PropertyDef;
973 struct PropertyDef * prev;
974 struct PropertyDef * next;
976 struct __ecereNameSpace__ecere__sys__OldList * specifiers;
977 struct Declarator * declarator;
978 struct Identifier * id;
979 struct Statement * getStmt;
980 struct Statement * setStmt;
981 struct Statement * issetStmt;
982 struct Symbol * symbol;
983 unsigned int conversion;
984 unsigned int isWatchable;
985 struct Expression * category;
986 } __attribute__ ((gcc_struct));
988 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_PropertyWatch;
992 struct PropertyWatch * prev;
993 struct PropertyWatch * next;
995 struct Statement * compound;
996 struct __ecereNameSpace__ecere__sys__OldList * properties;
997 unsigned int deleteWatch;
998 } __attribute__ ((gcc_struct));
1000 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_ClassDef;
1004 struct ClassDef * prev;
1005 struct ClassDef * next;
1006 struct Location loc;
1010 struct Declaration * decl;
1011 struct ClassFunction * function;
1012 struct __ecereNameSpace__ecere__sys__OldList * defProperties;
1013 struct PropertyDef * propertyDef;
1014 struct PropertyWatch * propertyWatch;
1016 struct Identifier * defaultProperty;
1019 struct Identifier * id;
1020 struct Initializer * initializer;
1021 } __attribute__ ((gcc_struct));
1022 } __attribute__ ((gcc_struct));
1025 } __attribute__ ((gcc_struct));
1027 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_DBTableEntry;
1031 struct DBTableEntry * prev;
1032 struct DBTableEntry * next;
1034 struct Identifier * id;
1039 struct TypeName * dataType;
1041 } __attribute__ ((gcc_struct));
1042 struct __ecereNameSpace__ecere__sys__OldList * items;
1043 } __attribute__ ((gcc_struct));
1044 } __attribute__ ((gcc_struct));
1046 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_DBIndexItem;
1050 struct DBIndexItem * prev;
1051 struct DBIndexItem * next;
1052 struct Identifier * id;
1054 } __attribute__ ((gcc_struct));
1056 extern YYSTYPE yylval;
1058 extern struct Location yylloc;
1060 static struct __ecereNameSpace__ecere__sys__OldList * tableStatements, * indexStatements, * addFieldStatements;
1062 static int numIndexes;
1064 static struct External * addAfter;
1066 static void ProcessDeclaration(struct Declaration * decl);
1068 extern struct __ecereNameSpace__ecere__com__Class * thisClass;
1070 static void ProcessMemberInit(struct MemberInit * init);
1072 static void ProcessClassFunction(struct ClassFunction * func);
1074 static void ProcessProperty(struct PropertyDef * def);
1076 static void ProcessStatement(struct Statement * stmt);
1078 static void ProcessSpecifier(struct Specifier * spec)
1086 if(spec->definitions)
1088 struct ClassDef * def;
1090 for(def = (*spec->definitions).first; def; def = def->next)
1095 ProcessDeclaration(def->decl);
1099 struct MemberInit * init;
1101 for(init = (*def->defProperties).first; init; init = init->next)
1103 struct __ecereNameSpace__ecere__com__Class * oldThisClass = thisClass;
1105 ProcessMemberInit(init);
1110 ProcessClassFunction(def->function);
1113 if(def->propertyDef)
1115 ProcessProperty(def->propertyDef);
1119 if(def->propertyWatch && def->propertyWatch->compound)
1121 ProcessStatement(def->propertyWatch->compound);
1132 static void ProcessIdentifier(struct Identifier * id)
1136 static void ProcessInstance(struct Instantiation * inst);
1138 extern size_t strlen(const char * );
1140 extern void * memcpy(void * , const void * , size_t size);
1142 extern void __ecereNameSpace__ecere__sys__ChangeCh(char * string, char ch1, char ch2);
1144 extern int sprintf(char * , char * , ...);
1146 extern void FreeExpContents(struct Expression * exp);
1148 extern struct Identifier * MkIdentifier(char * string);
1150 extern struct Statement * MkCompoundStmt(struct __ecereNameSpace__ecere__sys__OldList * declarations, struct __ecereNameSpace__ecere__sys__OldList * statements);
1152 extern struct __ecereNameSpace__ecere__sys__OldList * MkList(void);
1154 extern struct Context * curContext;
1156 extern struct Declaration * MkDeclaration(struct __ecereNameSpace__ecere__sys__OldList * specifiers, struct __ecereNameSpace__ecere__sys__OldList * initDeclarators);
1158 extern struct __ecereNameSpace__ecere__sys__OldList * MkListOne(void * item);
1160 extern struct Specifier * MkSpecifierName(char * name);
1162 extern struct InitDeclarator * MkInitDeclarator(struct Declarator * declarator, struct Initializer * initializer);
1164 extern struct Declarator * MkDeclaratorIdentifier(struct Identifier * id);
1166 extern struct Initializer * MkInitializerAssignment(struct Expression * exp);
1168 extern struct Expression * MkExpIdentifier(struct Identifier * id);
1170 extern struct Specifier * MkSpecifier(int specifier);
1172 extern struct Statement * MkIfStmt(struct __ecereNameSpace__ecere__sys__OldList * exp, struct Statement * statement, struct Statement * elseStmt);
1174 extern struct Statement * MkReturnStmt(struct __ecereNameSpace__ecere__sys__OldList * exp);
1176 extern struct Statement * MkExpressionStmt(struct __ecereNameSpace__ecere__sys__OldList * expressions);
1178 extern struct Expression * MkExpOp(struct Expression * exp1, int op, struct Expression * exp2);
1180 extern struct Expression * CopyExpression(struct Expression * exp);
1182 extern struct Expression * MkExpCall(struct Expression * expression, struct __ecereNameSpace__ecere__sys__OldList * arguments);
1184 extern struct Expression * MkExpMember(struct Expression * expression, struct Identifier * member);
1186 extern struct Declarator * MkDeclaratorArray(struct Declarator * declarator, struct Expression * exp);
1188 extern struct Expression * MkExpConstant(char * string);
1190 extern struct Initializer * MkInitializerList(struct __ecereNameSpace__ecere__sys__OldList * list);
1192 extern void Compiler_Error(char * format, ...);
1194 extern char * __ecereNameSpace__ecere__GetTranslatedString(struct __ecereNameSpace__ecere__com__Instance * module, char * string, char * stringAndContext);
1196 extern struct __ecereNameSpace__ecere__com__Instance * __thisModule;
1198 extern void * __ecereNameSpace__ecere__com__eInstance_New(struct __ecereNameSpace__ecere__com__Class * _class);
1200 void __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add(struct __ecereNameSpace__ecere__sys__OldList * this, void * item);
1202 static void ProcessExpression(struct Expression * exp)
1204 void * __ecereTemp1;
1209 ProcessExpression(exp->_new.size);
1212 ProcessExpression(exp->_renew.exp);
1213 ProcessExpression(exp->_renew.size);
1218 ProcessIdentifier(exp->identifier);
1221 ProcessInstance(exp->instance);
1228 ProcessExpression(exp->op.exp1);
1232 ProcessExpression(exp->op.exp2);
1237 struct Expression * expression;
1239 for(expression = (*exp->list).first; expression; expression = expression->next)
1241 ProcessExpression(expression);
1247 struct Expression * expression;
1249 ProcessExpression(exp->index.exp);
1250 for(expression = (*exp->index.index).first; expression; expression = expression->next)
1252 ProcessExpression(expression);
1258 ProcessExpression(exp->call.exp);
1259 if(exp->call.arguments)
1261 struct Expression * expression;
1263 for(expression = (*exp->call.arguments).first; expression; expression = expression->next)
1265 ProcessExpression(expression);
1271 ProcessExpression(exp->member.exp);
1274 ProcessExpression(exp->member.exp);
1279 ProcessExpression(exp->cast.exp);
1282 ProcessExpression(exp->cond.cond);
1284 struct Expression * expression;
1286 for(expression = (*exp->cond.exp).first; expression; expression = expression->next)
1288 ProcessExpression(expression);
1291 ProcessExpression(exp->cond.elseExp);
1297 char tableName[1024];
1299 int len = strlen(exp->db.table);
1301 memcpy(tableName, exp->db.table + 1, len - 2);
1302 tableName[len - 2] = (char)0;
1303 __ecereNameSpace__ecere__sys__ChangeCh(tableName, ' ', '_');
1304 sprintf(name, "__ecereDBField_%s_%s", tableName, exp->db.id->string);
1305 FreeExpContents(exp);
1307 exp->identifier = MkIdentifier(name);
1312 char tableName[1024];
1314 int len = strlen(exp->db.table);
1316 memcpy(tableName, exp->db.table + 1, len - 2);
1317 tableName[len - 2] = (char)0;
1318 __ecereNameSpace__ecere__sys__ChangeCh(tableName, ' ', '_');
1319 sprintf(name, "__ecereDBTable_%s", tableName);
1320 FreeExpContents(exp);
1322 exp->identifier = MkIdentifier(name);
1327 char tableName[1024];
1329 int len = strlen(exp->db.table);
1331 memcpy(tableName, exp->db.table + 1, len - 2);
1332 tableName[len - 2] = (char)0;
1333 __ecereNameSpace__ecere__sys__ChangeCh(tableName, ' ', '_');
1334 sprintf(name, "__ecereDBIndex_%s_%s", tableName, exp->db.id->string);
1335 FreeExpContents(exp);
1337 exp->identifier = MkIdentifier(name);
1344 struct Statement * databaseOpenStmt = MkCompoundStmt(MkList(), MkList());
1345 struct Statement * compound, * compound2;
1346 struct Statement * ifDBStmt;
1347 struct __ecereNameSpace__ecere__sys__OldList * args;
1348 char numIndexesString[16];
1350 databaseOpenStmt->compound.context = (__ecereTemp1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Context), ((struct Context *)__ecereTemp1)->parent = curContext, ((struct Context *)__ecereTemp1));
1351 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*databaseOpenStmt->compound.declarations), MkDeclaration(MkListOne(MkSpecifierName("Database")), MkListOne(MkInitDeclarator(MkDeclaratorIdentifier(MkIdentifier("db")), (((void *)0))))));
1352 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*databaseOpenStmt->compound.declarations), MkDeclaration(MkListOne(MkSpecifierName("bool")), MkListOne(MkInitDeclarator(MkDeclaratorIdentifier(MkIdentifier("createNow")), MkInitializerAssignment(MkExpIdentifier(MkIdentifier("false")))))));
1354 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*args), MkSpecifier(STATIC));
1355 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*args), MkSpecifierName("bool"));
1356 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*databaseOpenStmt->compound.declarations), MkDeclaration(args, MkListOne(MkInitDeclarator(MkDeclaratorIdentifier(MkIdentifier("initialized")), MkInitializerAssignment(MkExpIdentifier(MkIdentifier("false")))))));
1357 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*databaseOpenStmt->compound.statements), MkIfStmt(MkListOne(MkExpIdentifier(MkIdentifier("initialized"))), MkReturnStmt(MkListOne(MkExpIdentifier(MkIdentifier("null")))), (((void *)0))));
1358 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*databaseOpenStmt->compound.statements), MkExpressionStmt(MkListOne(MkExpOp(MkExpIdentifier(MkIdentifier("initialized")), '=', MkExpIdentifier(MkIdentifier("true"))))));
1360 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*args), CopyExpression(exp->dbopen.name));
1361 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*args), MkExpIdentifier(MkIdentifier("no")));
1362 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*databaseOpenStmt->compound.statements), MkExpressionStmt(MkListOne(MkExpOp(MkExpIdentifier(MkIdentifier("db")), '=', MkExpCall(MkExpMember(CopyExpression(exp->dbopen.ds), MkIdentifier("OpenDatabase")), args)))));
1363 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*databaseOpenStmt->compound.statements), MkIfStmt(MkListOne(MkExpOp((((void *)0)), '!', MkExpIdentifier(MkIdentifier("db")))), compound = MkCompoundStmt((((void *)0)), MkList()), (((void *)0))));
1364 compound->compound.context = (__ecereTemp1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Context), ((struct Context *)__ecereTemp1)->parent = databaseOpenStmt->compound.context, ((struct Context *)__ecereTemp1));
1366 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*args), exp->dbopen.name);
1367 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*args), MkExpIdentifier(MkIdentifier("create")));
1368 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*compound->compound.statements), MkExpressionStmt(MkListOne(MkExpOp(MkExpIdentifier(MkIdentifier("db")), '=', MkExpCall(MkExpMember(exp->dbopen.ds, MkIdentifier("OpenDatabase")), args)))));
1369 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*compound->compound.statements), MkExpressionStmt(MkListOne(MkExpOp(MkExpIdentifier(MkIdentifier("createNow")), '=', MkExpIdentifier(MkIdentifier("true"))))));
1370 exp->dbopen.name = (((void *)0));
1371 exp->dbopen.ds = (((void *)0));
1372 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*databaseOpenStmt->compound.statements), MkIfStmt(MkListOne(MkExpIdentifier(MkIdentifier("db"))), ifDBStmt = MkCompoundStmt(MkList(), MkList()), (((void *)0))));
1373 ifDBStmt->compound.context = (__ecereTemp1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Context), ((struct Context *)__ecereTemp1)->parent = databaseOpenStmt->compound.context, ((struct Context *)__ecereTemp1));
1374 sprintf(numIndexesString, "%d", numIndexes);
1375 __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")))))))))));
1376 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*ifDBStmt->compound.statements), compound = MkCompoundStmt((((void *)0)), tableStatements));
1377 compound->compound.context = (__ecereTemp1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Context), ((struct Context *)__ecereTemp1)->parent = ifDBStmt->compound.context, ((struct Context *)__ecereTemp1));
1378 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*ifDBStmt->compound.statements), (compound = MkCompoundStmt((((void *)0)), addFieldStatements), compound->compound.context = (__ecereTemp1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Context), ((struct Context *)__ecereTemp1)->parent = ifDBStmt->compound.context, ((struct Context *)__ecereTemp1)), compound));
1379 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*ifDBStmt->compound.statements), compound = MkCompoundStmt((((void *)0)), indexStatements));
1380 compound->compound.context = (__ecereTemp1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Context), ((struct Context *)__ecereTemp1)->parent = ifDBStmt->compound.context, ((struct Context *)__ecereTemp1));
1382 exp->compound = databaseOpenStmt;
1383 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*databaseOpenStmt->compound.statements), MkExpressionStmt(MkListOne(MkExpIdentifier(MkIdentifier("db")))));
1384 tableStatements = (((void *)0));
1388 FreeExpContents(exp);
1389 Compiler_Error(__ecereNameSpace__ecere__GetTranslatedString(__thisModule, "No database table defined in this module or database_open already used.\n", (((void *)0))));
1397 static void ProcessStatement(struct Statement * stmt)
1402 ProcessStatement(stmt->labeled.stmt);
1405 if(stmt->caseStmt.exp)
1407 ProcessExpression(stmt->caseStmt.exp);
1409 if(stmt->caseStmt.stmt)
1411 ProcessStatement(stmt->caseStmt.stmt);
1416 ProcessDeclaration(stmt->decl);
1421 struct Context * oldContext = curContext;
1423 curContext = stmt->compound.context;
1424 if(stmt->compound.declarations)
1426 struct Declaration * decl;
1428 for(decl = (*stmt->compound.declarations).first; decl; decl = decl->next)
1430 ProcessDeclaration(decl);
1433 if(stmt->compound.statements)
1435 struct Statement * statement;
1437 for(statement = (*stmt->compound.statements).first; statement; statement = statement->next)
1439 ProcessStatement(statement);
1442 curContext = oldContext;
1447 if(stmt->expressions)
1449 struct Expression * exp;
1451 for(exp = (*stmt->expressions).first; exp; exp = exp->next)
1453 ProcessExpression(exp);
1460 struct Expression * exp;
1462 for(exp = (*stmt->ifStmt.exp).first; exp; exp = exp->next)
1464 ProcessExpression(exp);
1466 if(stmt->ifStmt.stmt)
1468 ProcessStatement(stmt->ifStmt.stmt);
1470 if(stmt->ifStmt.elseStmt)
1472 ProcessStatement(stmt->ifStmt.elseStmt);
1478 struct Expression * exp;
1480 for(exp = (*stmt->switchStmt.exp).first; exp; exp = exp->next)
1482 ProcessExpression(exp);
1484 ProcessStatement(stmt->switchStmt.stmt);
1489 struct Expression * exp;
1491 if(stmt->whileStmt.exp)
1493 for(exp = (*stmt->whileStmt.exp).first; exp; exp = exp->next)
1495 ProcessExpression(exp);
1498 if(stmt->whileStmt.stmt)
1499 ProcessStatement(stmt->whileStmt.stmt);
1504 ProcessStatement(stmt->doWhile.stmt);
1505 if(stmt->doWhile.exp)
1507 struct Expression * exp;
1509 for(exp = (*stmt->doWhile.exp).first; exp; exp = exp->next)
1511 ProcessExpression(exp);
1518 struct Expression * exp;
1520 if(stmt->forStmt.init)
1522 ProcessStatement(stmt->forStmt.init);
1524 if(stmt->forStmt.check)
1526 ProcessStatement(stmt->forStmt.check);
1528 if(stmt->forStmt.increment)
1530 for(exp = (*stmt->forStmt.increment).first; exp; exp = exp->next)
1532 ProcessExpression(exp);
1535 if(stmt->forStmt.stmt)
1536 ProcessStatement(stmt->forStmt.stmt);
1546 if(stmt->expressions)
1548 struct Expression * exp;
1550 for(exp = (*stmt->expressions).first; exp; exp = exp->next)
1552 ProcessExpression(exp);
1559 struct Identifier * _watch;
1561 if(stmt->_watch.watcher)
1563 ProcessExpression(stmt->_watch.watcher);
1565 if(stmt->_watch.object)
1567 ProcessExpression(stmt->_watch.object);
1569 if(stmt->_watch.watches)
1571 for(_watch = (*stmt->_watch.watches).first; _watch; _watch = _watch->next)
1573 ProcessIdentifier(_watch);
1580 struct PropertyWatch * _watch;
1582 if(stmt->_watch.watcher)
1584 ProcessExpression(stmt->_watch.watcher);
1586 if(stmt->_watch.object)
1588 ProcessExpression(stmt->_watch.object);
1590 if(stmt->_watch.watches)
1592 for(_watch = (*stmt->_watch.watches).first; _watch; _watch = _watch->next)
1594 if(_watch->compound)
1596 ProcessStatement(_watch->compound);
1605 static void ProcessInitializer(struct Initializer * initializer)
1607 switch(initializer->type)
1611 struct Initializer * init;
1613 for(init = (*initializer->list).first; init; init = init->next)
1615 ProcessInitializer(init);
1620 ProcessExpression(initializer->exp);
1625 static void ProcessInitDeclarator(struct InitDeclarator * decl)
1627 if(decl->initializer)
1628 ProcessInitializer(decl->initializer);
1631 static void ProcessDeclaration(struct Declaration * decl)
1637 struct Specifier * spec;
1639 if(decl->specifiers)
1641 for(spec = (*decl->specifiers).first; spec; spec = spec->next)
1643 ProcessSpecifier(spec);
1650 if(decl->specifiers)
1652 struct Specifier * s;
1654 for(s = (*decl->specifiers).first; s; s = s->next)
1656 ProcessSpecifier(s);
1659 if(decl->declarators && (*decl->declarators).first)
1661 struct InitDeclarator * d;
1663 for(d = (*decl->declarators).first; d; d = d->next)
1665 ProcessInitDeclarator(d);
1671 ProcessInstance(decl->inst);
1676 static void ProcessFunction(struct FunctionDefinition * func)
1680 ProcessStatement(func->body);
1684 static void ProcessMemberInit(struct MemberInit * init)
1686 if(init->initializer)
1688 ProcessInitializer(init->initializer);
1692 static void ProcessInstance(struct Instantiation * inst)
1696 struct MembersInit * init;
1697 struct MemberInit * memberInit;
1699 for(init = (*inst->members).first; init; init = init->next)
1701 if(init->type == 0 && init->dataMembers)
1703 for(memberInit = (*init->dataMembers).first; memberInit; memberInit = memberInit->next)
1705 ProcessMemberInit(memberInit);
1710 ProcessClassFunction(init->function);
1716 static void ProcessClassFunction(struct ClassFunction * func)
1720 ProcessStatement(func->body);
1724 static void ProcessProperty(struct PropertyDef * def)
1728 ProcessStatement(def->getStmt);
1732 ProcessStatement(def->setStmt);
1736 static void ProcessClassDef(struct ClassDef * def)
1741 ProcessDeclaration(def->decl);
1745 struct MemberInit * init;
1747 for(init = (*def->defProperties).first; init; init = init->next)
1749 ProcessMemberInit(init);
1754 ProcessClassFunction(def->function);
1757 if(def->propertyDef)
1759 ProcessProperty(def->propertyDef);
1763 if(def->propertyWatch && def->propertyWatch->compound)
1765 ProcessStatement(def->propertyWatch->compound);
1771 static void ProcessClass(struct ClassDefinition * _class)
1773 if(_class->definitions)
1775 struct ClassDef * def;
1777 for(def = (*_class->definitions).first; def; def = def->next)
1779 ProcessClassDef(def);
1784 extern struct External * MkExternalDeclaration(struct Declaration * declaration);
1786 extern struct __ecereNameSpace__ecere__sys__OldList * ast;
1788 extern struct Expression * MkExpString(char * string);
1790 extern struct Expression * MkExpInstance(struct Instantiation * inst);
1792 extern struct Instantiation * MkInstantiation(struct Specifier * _class, struct Expression * exp, struct __ecereNameSpace__ecere__sys__OldList * members);
1794 extern struct MembersInit * MkMembersInitList(struct __ecereNameSpace__ecere__sys__OldList * dataMembers);
1796 extern struct MemberInit * MkMemberInit(struct __ecereNameSpace__ecere__sys__OldList * ids, struct Initializer * initializer);
1798 extern struct Context * PushContext(void);
1800 extern struct ClassDefinition * MkClass(struct Symbol * symbol, struct __ecereNameSpace__ecere__sys__OldList * baseSpecs, struct __ecereNameSpace__ecere__sys__OldList * definitions);
1802 extern struct Symbol * DeclClass(int symbolID, char * name);
1804 extern struct Context * globalContext;
1806 extern void PopContext(struct Context * ctx);
1808 extern struct ClassDef * MkClassDefDefaultProperty(struct __ecereNameSpace__ecere__sys__OldList * defProperties);
1810 extern struct MemberInit * MkMemberInitExp(struct Expression * idExp, struct Initializer * initializer);
1812 extern struct External * MkExternalClass(struct ClassDefinition * _class);
1814 extern int strcmp(const char * , const char * );
1816 extern char * strcpy(char * , const char * );
1818 extern struct ClassDef * MkClassDefProperty(struct PropertyDef * propertyDef);
1820 extern struct PropertyDef * MkProperty(struct __ecereNameSpace__ecere__sys__OldList * specs, struct Declarator * decl, struct Identifier * id, struct Statement * setStmt, struct Statement * getStmt);
1822 extern struct __ecereNameSpace__ecere__sys__OldList * CopyList(struct __ecereNameSpace__ecere__sys__OldList * source, void * (* )(void * ));
1824 extern struct Specifier * CopySpecifier(struct Specifier * spec);
1826 extern struct Declarator * CopyDeclarator(struct Declarator * declarator);
1828 extern struct Declaration * MkDeclarationInst(struct Instantiation * inst);
1830 extern struct Identifier * CopyIdentifier(struct Identifier * id);
1832 extern struct Expression * MkExpClass(struct __ecereNameSpace__ecere__sys__OldList * specifiers, struct Declarator * decl);
1834 extern struct Expression * MkExpIndex(struct Expression * expression, struct __ecereNameSpace__ecere__sys__OldList * index);
1836 extern struct ClassDef * MkClassDefClassPropertyValue(struct Identifier * id, struct Initializer * initializer);
1838 extern struct Expression * MkExpDBTable(char * table);
1840 extern char * __ecereNameSpace__ecere__sys__CopyString(char * string);
1842 extern struct Expression * MkExpDBField(char * table, struct Identifier * id);
1844 unsigned int __ecereMethod___ecereNameSpace__ecere__sys__OldList_Insert(struct __ecereNameSpace__ecere__sys__OldList * this, void * prevItem, void * item);
1846 static void ProcessDBTable(struct DBTableDef * table)
1848 void * __ecereTemp1;
1849 struct __ecereNameSpace__ecere__sys__OldList * rowClassDefs = MkList(), * idClassDefs = (((void *)0));
1850 char tableName[1024];
1851 char rowClassName[1024];
1852 int len = strlen(table->name);
1853 unsigned int indexed = 0x0;
1855 char nameField[1024];
1856 struct __ecereNameSpace__ecere__sys__OldList * args;
1857 struct __ecereNameSpace__ecere__sys__OldList * members;
1861 idClassDefs = MkList();
1862 nameField[0] = (char)0;
1863 memcpy(tableName, table->name + 1, len - 2);
1864 tableName[len - 2] = (char)0;
1865 __ecereNameSpace__ecere__sys__ChangeCh(tableName, ' ', '_');
1866 sprintf(tableID, "__ecereDBTable_%s", tableName);
1867 sprintf(rowClassName, "Row%s", tableName);
1868 __ecereNameSpace__ecere__sys__ChangeCh(rowClassName, ' ', '_');
1869 if(!tableStatements)
1871 tableStatements = MkList();
1872 indexStatements = MkList();
1873 addFieldStatements = MkList();
1876 struct External * external;
1878 external = MkExternalDeclaration(MkDeclaration(MkListOne(MkSpecifierName("Table")), MkListOne(MkInitDeclarator(MkDeclaratorIdentifier(MkIdentifier(tableID)), (((void *)0))))));
1879 external->declaration->declMode = table->declMode;
1880 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Insert((&*ast), addAfter, external);
1882 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*tableStatements), MkExpressionStmt(MkListOne(MkExpOp(MkExpIdentifier(MkIdentifier(tableID)), '=', MkExpCall(MkExpMember(MkExpIdentifier(MkIdentifier("db")), MkIdentifier("OpenTable")), args)))));
1883 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*args), MkExpString(table->name));
1885 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*args), MkExpInstance(MkInstantiation((((void *)0)), (((void *)0)), MkListOne(MkMembersInitList(members)))));
1886 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*members), MkMemberInit((((void *)0)), MkInitializerAssignment(MkExpIdentifier(MkIdentifier("tableRows")))));
1887 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*members), MkMemberInit((((void *)0)), MkInitializerAssignment(MkExpIdentifier(MkIdentifier("create")))));
1890 struct ClassDefinition * _class;
1891 struct ClassDef * def;
1892 struct External * external;
1893 struct __ecereNameSpace__ecere__sys__OldList * inheritanceSpecs = MkList();
1895 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*inheritanceSpecs), MkSpecifier(PRIVATE));
1896 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*inheritanceSpecs), MkSpecifierName("Row"));
1898 _class = MkClass(DeclClass(globalContext->nextID++, rowClassName), inheritanceSpecs, rowClassDefs);
1899 PopContext(curContext);
1900 def = MkClassDefDefaultProperty(MkListOne(MkMemberInitExp(MkExpIdentifier(MkIdentifier("tbl")), MkInitializerAssignment(MkExpIdentifier(MkIdentifier(tableID))))));
1901 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*rowClassDefs), def);
1902 _class->symbol->idCode = symbolID;
1903 _class->declMode = table->declMode;
1904 external = MkExternalClass(_class);
1905 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Insert((&*ast), addAfter, external);
1906 addAfter = external;
1908 if(table->definitions)
1910 struct DBTableEntry * entry;
1912 for(entry = (*table->definitions).first; entry; entry = entry->next)
1918 unsigned int isIndex = 0x0;
1920 struct __ecereNameSpace__ecere__sys__OldList * args;
1921 struct Specifier * spec = entry->dataType->qualifiers ? (struct Specifier *)(*entry->dataType->qualifiers).first : (((void *)0));
1923 sprintf(fieldID, "__ecereDBField_%s_%s", tableName, entry->id->string);
1926 if(!nameField[0] && spec->type == 1 && (!strcmp(spec->name, "String") || !strcmp(spec->name, "eda::CIString")))
1928 strcpy(nameField, entry->id->string);
1930 if(!indexed && spec->type == 1 && !strcmp(spec->name, table->symbol->string))
1932 struct Statement * rowSet = MkCompoundStmt(MkList(), MkList());
1934 struct ClassDef * def;
1936 numIndexes = ((numIndexes > 1) ? numIndexes : 1);
1939 sprintf(name, "_%s", entry->id->string);
1940 curContext = rowSet->compound.context = (__ecereTemp1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Context), ((struct Context *)__ecereTemp1)->parent = globalContext, ((struct Context *)__ecereTemp1));
1941 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*rowSet->compound.statements), MkExpressionStmt(MkListOne(MkExpCall(MkExpIdentifier(MkIdentifier("Find")), args = MkList()))));
1942 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*args), MkExpIdentifier(MkIdentifier(fieldID)));
1943 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*args), MkExpIdentifier(MkIdentifier("middle")));
1944 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*args), MkExpIdentifier(MkIdentifier("nil")));
1945 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*args), MkExpIdentifier(MkIdentifier("value")));
1946 curContext = globalContext;
1947 def = MkClassDefProperty(MkProperty(CopyList(entry->dataType->qualifiers, CopySpecifier), CopyDeclarator(entry->dataType->declarator), MkIdentifier(name), rowSet, (((void *)0))));
1948 def->propertyDef->symbol->id = def->propertyDef->symbol->idCode = symbolID;
1949 def->memberAccess = 1;
1950 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*rowClassDefs), def);
1955 struct Statement * rowSet = MkCompoundStmt(MkList(), MkList()), * rowGet = MkCompoundStmt(MkList(), MkList());
1956 struct ClassDef * def;
1958 curContext = rowGet->compound.context = (__ecereTemp1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Context), ((struct Context *)__ecereTemp1)->parent = globalContext, ((struct Context *)__ecereTemp1));
1959 if(spec->type == 1 && spec->symbol && spec->symbol->registered && spec->symbol->registered->type == 1)
1961 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*rowGet->compound.declarations), MkDeclarationInst(MkInstantiation(MkSpecifierName(spec->name), MkExpIdentifier(MkIdentifier("d")), (((void *)0)))));
1965 struct Expression * exp;
1967 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*rowGet->compound.declarations), MkDeclaration(CopyList(entry->dataType->qualifiers, CopySpecifier), MkListOne(MkInitDeclarator(MkDeclaratorIdentifier(MkIdentifier("d")), MkInitializerAssignment(exp = MkExpConstant("0"))))));
1968 exp->destType = (__ecereTemp1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Type), ((struct Type *)__ecereTemp1)->kind = 3, ((struct Type *)__ecereTemp1)->refCount = 1, ((struct Type *)__ecereTemp1));
1970 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*rowGet->compound.statements), MkExpressionStmt(MkListOne(MkExpCall(MkExpIdentifier(MkIdentifier("GetData")), args = MkList()))));
1971 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*args), MkExpIdentifier(MkIdentifier(fieldID)));
1972 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*args), MkExpIdentifier(MkIdentifier("d")));
1973 if(spec->type == 1 && spec->symbol && spec->symbol->registered && spec->symbol->registered->type == 1)
1975 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*rowGet->compound.statements), MkExpressionStmt(MkListOne(MkExpOp(MkExpIdentifier(MkIdentifier("value")), '=', MkExpIdentifier(MkIdentifier("d"))))));
1978 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*rowGet->compound.statements), MkReturnStmt(MkListOne(MkExpIdentifier(MkIdentifier("d")))));
1979 curContext = rowSet->compound.context = (__ecereTemp1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Context), ((struct Context *)__ecereTemp1)->parent = globalContext, ((struct Context *)__ecereTemp1));
1980 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*rowSet->compound.statements), MkExpressionStmt(MkListOne(MkExpCall(MkExpIdentifier(MkIdentifier("SetData")), args = MkList()))));
1981 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*args), MkExpIdentifier(MkIdentifier(fieldID)));
1982 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*args), MkExpIdentifier(MkIdentifier("value")));
1983 curContext = globalContext;
1984 def = MkClassDefProperty(MkProperty(CopyList(entry->dataType->qualifiers, CopySpecifier), entry->dataType->declarator, CopyIdentifier(entry->id), rowSet, rowGet));
1985 def->propertyDef->symbol->id = def->propertyDef->symbol->idCode = symbolID;
1986 def->memberAccess = 1;
1987 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*rowClassDefs), def);
1990 struct External * external;
1992 external = MkExternalDeclaration(MkDeclaration(MkListOne(MkSpecifierName("Field")), MkListOne(MkInitDeclarator(MkDeclaratorIdentifier(MkIdentifier(fieldID)), (((void *)0))))));
1993 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*ast), external);
1994 external->declaration->declMode = table->declMode;
1996 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*addFieldStatements), MkExpressionStmt(MkListOne(MkExpOp(MkExpIdentifier(MkIdentifier(fieldID)), '=', MkExpCall(MkExpMember(MkExpIdentifier(MkIdentifier(tableID)), MkIdentifier("FindField")), args)))));
1997 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*args), MkExpString(entry->name));
1999 __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))));
2000 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*args), MkExpString(entry->name));
2001 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*args), MkExpClass(CopyList(entry->dataType->qualifiers, CopySpecifier), CopyDeclarator(entry->dataType->declarator)));
2002 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*args), MkExpConstant("0"));
2006 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*indexStatements), MkExpressionStmt(MkListOne(MkExpOp(MkExpMember(MkExpIndex(MkExpIdentifier(MkIdentifier("indexes")), MkListOne(MkExpConstant("0"))), MkIdentifier("field")), '=', MkExpIdentifier(MkIdentifier(fieldID))))));
2007 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*indexStatements), MkExpressionStmt(MkListOne(MkExpOp(MkExpMember(MkExpIndex(MkExpIdentifier(MkIdentifier("indexes")), MkListOne(MkExpConstant("0"))), MkIdentifier("order")), '=', MkExpIdentifier(MkIdentifier("ascending"))))));
2009 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*indexStatements), MkExpressionStmt(MkListOne(MkExpCall(MkExpMember(MkExpIdentifier(MkIdentifier(tableID)), MkIdentifier("Index")), args))));
2010 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*args), MkExpConstant("1"));
2011 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*args), MkExpIdentifier(MkIdentifier("indexes")));
2020 struct ClassDefinition * _class;
2021 struct External * external;
2022 struct ClassDef * def;
2023 struct Expression * exp;
2026 _class = MkClass(table->symbol, MkListOne(MkSpecifierName("Id")), idClassDefs);
2027 PopContext(curContext);
2028 _class->declMode = table->declMode;
2029 external = MkExternalClass(_class);
2030 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Insert((&*ast), addAfter, external);
2031 addAfter = external;
2032 def = MkClassDefClassPropertyValue(MkIdentifier("table"), MkInitializerAssignment(exp = MkExpOp((((void *)0)), '&', MkExpDBTable(__ecereNameSpace__ecere__sys__CopyString(table->name)))));
2033 ProcessExpression(exp);
2034 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*idClassDefs), def);
2037 def = MkClassDefClassPropertyValue(MkIdentifier("nameField"), MkInitializerAssignment(exp = MkExpOp((((void *)0)), '&', MkExpDBField(__ecereNameSpace__ecere__sys__CopyString(table->name), MkIdentifier(nameField)))));
2038 ProcessExpression(exp);
2039 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*idClassDefs), def);
2042 if(table->definitions)
2044 struct DBTableEntry * entry;
2046 for(entry = (*table->definitions).first; entry; entry = entry->next)
2053 struct __ecereNameSpace__ecere__sys__OldList * args;
2054 struct Specifier * spec = entry->dataType->qualifiers ? (struct Specifier *)(*entry->dataType->qualifiers).first : (((void *)0));
2056 sprintf(fieldID, "__ecereDBField_%s_%s", tableName, entry->id->string);
2057 if(idClassDefs && spec)
2059 struct Statement * idSet = MkCompoundStmt(MkList(), MkList()), * idGet = MkCompoundStmt(MkList(), MkList());
2060 struct ClassDef * def;
2062 curContext = idGet->compound.context = (__ecereTemp1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Context), ((struct Context *)__ecereTemp1)->parent = globalContext, ((struct Context *)__ecereTemp1));
2063 __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"))))))))));
2064 if(spec->type == 1 && spec->symbol && spec->symbol->registered && spec->symbol->registered->type == 1)
2066 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*idGet->compound.declarations), MkDeclarationInst(MkInstantiation(MkSpecifierName(spec->name), MkExpIdentifier(MkIdentifier("d")), (((void *)0)))));
2070 struct Expression * exp;
2072 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*idGet->compound.declarations), MkDeclaration(CopyList(entry->dataType->qualifiers, CopySpecifier), MkListOne(MkInitDeclarator(MkDeclaratorIdentifier(MkIdentifier("d")), MkInitializerAssignment(exp = MkExpConstant("0"))))));
2073 exp->destType = (__ecereTemp1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Type), ((struct Type *)__ecereTemp1)->kind = 3, ((struct Type *)__ecereTemp1)->refCount = 1, ((struct Type *)__ecereTemp1));
2075 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*idGet->compound.statements), MkExpressionStmt(MkListOne(MkExpCall(MkExpMember(MkExpIdentifier(MkIdentifier("r")), MkIdentifier("GetData")), args = MkList()))));
2076 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*args), MkExpIdentifier(MkIdentifier(fieldID)));
2077 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*args), MkExpIdentifier(MkIdentifier("d")));
2078 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*idGet->compound.statements), MkExpressionStmt(MkListOne(MkExpOp((((void *)0)), DELETE, MkExpIdentifier(MkIdentifier("r"))))));
2079 if(spec->type == 1 && spec->symbol && spec->symbol->registered && spec->symbol->registered->type == 1)
2081 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*idGet->compound.statements), MkExpressionStmt(MkListOne(MkExpOp(MkExpIdentifier(MkIdentifier("value")), '=', MkExpIdentifier(MkIdentifier("d"))))));
2084 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*idGet->compound.statements), MkReturnStmt(MkListOne(MkExpIdentifier(MkIdentifier("d")))));
2085 curContext = idSet->compound.context = (__ecereTemp1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Context), ((struct Context *)__ecereTemp1)->parent = globalContext, ((struct Context *)__ecereTemp1));
2086 __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"))))))))));
2087 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*idSet->compound.statements), MkExpressionStmt(MkListOne(MkExpCall(MkExpMember(MkExpIdentifier(MkIdentifier("r")), MkIdentifier("SetData")), args = MkList()))));
2088 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*args), MkExpIdentifier(MkIdentifier(fieldID)));
2089 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*args), MkExpIdentifier(MkIdentifier("value")));
2090 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*idSet->compound.statements), MkExpressionStmt(MkListOne(MkExpOp((((void *)0)), DELETE, MkExpIdentifier(MkIdentifier("r"))))));
2091 curContext = globalContext;
2092 def = MkClassDefProperty(MkProperty(CopyList(entry->dataType->qualifiers, CopySpecifier), CopyDeclarator(entry->dataType->declarator), CopyIdentifier(entry->id), idSet, idGet));
2093 def->propertyDef->symbol->id = def->propertyDef->symbol->idCode = symbolID;
2094 def->memberAccess = 1;
2095 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*idClassDefs), def);
2101 if(entry->items && (*entry->items).count)
2104 struct DBIndexItem * item;
2106 unsigned int needTable = 0x0;
2109 if(entry->id || indexed)
2111 if(entry->id || (*entry->items).count == 1)
2113 struct External * external;
2114 struct Identifier * id = entry->id ? entry->id : ((struct DBIndexItem *)(*entry->items).first)->id;
2116 sprintf(indexID, "__ecereDBIndex_%s_%s", tableName, id->string);
2117 external = MkExternalDeclaration(MkDeclaration(MkListOne(MkSpecifierName("Table")), MkListOne(MkInitDeclarator(MkDeclaratorIdentifier(MkIdentifier(indexID)), (((void *)0))))));
2118 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*ast), external);
2119 external->declaration->declMode = table->declMode;
2123 Compiler_Error(__ecereNameSpace__ecere__GetTranslatedString(__thisModule, "Multiple field index requires a name\n", (((void *)0))));
2128 strcpy(indexID, tableID);
2130 for(c = 0, item = (*entry->items).first; item; item = item->next, c++)
2134 sprintf(num, "%d", c);
2135 sprintf(fieldID, "__ecereDBField_%s_%s", tableName, item->id->string);
2136 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*indexStatements), MkExpressionStmt(MkListOne(MkExpOp(MkExpMember(MkExpIndex(MkExpIdentifier(MkIdentifier("indexes")), MkListOne(MkExpConstant(num))), MkIdentifier("field")), '=', MkExpIdentifier(MkIdentifier(fieldID))))));
2137 __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"))))));
2139 sprintf(num, "%d", c);
2140 numIndexes = ((numIndexes > c) ? numIndexes : c);
2144 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*indexStatements), MkExpressionStmt(MkListOne(MkExpOp(MkExpIdentifier(MkIdentifier(indexID)), '=', MkExpCall(MkExpMember(MkExpIdentifier(MkIdentifier("db")), MkIdentifier("OpenTable")), args)))));
2145 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*args), MkExpString(table->name));
2147 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*args), MkExpInstance(MkInstantiation((((void *)0)), (((void *)0)), MkListOne(MkMembersInitList(members)))));
2148 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*members), MkMemberInit((((void *)0)), MkInitializerAssignment(MkExpIdentifier(MkIdentifier("tableRows")))));
2151 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*indexStatements), MkExpressionStmt(MkListOne(MkExpCall(MkExpMember(MkExpIdentifier(MkIdentifier(indexID)), MkIdentifier("Index")), args))));
2152 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*args), MkExpConstant(num));
2153 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*args), MkExpIdentifier(MkIdentifier("indexes")));
2162 extern unsigned int inCompiler;
2164 extern void PrePreProcessClassDefinitions(void);
2166 extern struct External * curExternal;
2168 void ProcessDBTableDefinitions()
2170 struct External * external;
2172 addAfter = (((void *)0));
2173 curContext = globalContext;
2175 PrePreProcessClassDefinitions();
2176 DeclClass(0, "Field");
2177 DeclClass(0, "Table");
2178 DeclClass(0, "Row");
2181 if(ast != (((void *)0)))
2183 for(external = (*ast).first; external; external = external->next)
2185 curExternal = external;
2186 switch(external->type)
2189 ProcessDBTable(external->table);
2193 for(external = (*ast).first; external; external = external->next)
2195 curExternal = external;
2196 switch(external->type)
2199 ProcessFunction(external->function);
2202 ProcessDeclaration(external->declaration);
2205 ProcessClass(external->_class);
2210 curContext = globalContext;
2213 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__GlobalFunction;
2215 struct __ecereNameSpace__ecere__com__GlobalFunction;
2217 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);
2219 void __ecereRegisterModule_dbpass(struct __ecereNameSpace__ecere__com__Instance * module)
2221 struct __ecereNameSpace__ecere__com__Class * class;
2223 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ProcessDBTableDefinitions", "void ProcessDBTableDefinitions(void)", ProcessDBTableDefinitions, module, 1);
2226 void __ecereUnregisterModule_dbpass(struct __ecereNameSpace__ecere__com__Instance * module)