1 /* Code generated from eC source file. */
3 typedef long long int64;
4 typedef unsigned long long uint64;
8 #elif defined(__TINYC__)
10 #define __builtin_va_list va_list
11 #define __builtin_va_start va_start
12 #define __builtin_va_end va_end
14 #define strcasecmp stricmp
15 #define strncasecmp strnicmp
16 #define __declspec(x) __attribute__((x))
20 typedef long long int64;
21 typedef unsigned long long uint64;
23 typedef __int64 int64;
24 typedef unsigned __int64 uint64;
27 #define __ENDIAN_PAD(x) (8 - (x))
29 #define __ENDIAN_PAD(x) 0
32 #include <sys/types.h>
33 extern void * __ecereNameSpace__ecere__com__eSystem_New(unsigned int size);
35 extern void * __ecereNameSpace__ecere__com__eSystem_New0(unsigned int size);
37 extern void * __ecereNameSpace__ecere__com__eSystem_Renew(void * memory, unsigned int size);
39 extern void * __ecereNameSpace__ecere__com__eSystem_Renew0(void * memory, unsigned int size);
41 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__sys__BTNode;
43 struct __ecereNameSpace__ecere__sys__BTNode;
45 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__sys__BinaryTree;
47 struct __ecereNameSpace__ecere__sys__BinaryTree
49 struct __ecereNameSpace__ecere__sys__BTNode * root;
51 int (* CompareKey)(struct __ecereNameSpace__ecere__sys__BinaryTree * tree, uintptr_t a, uintptr_t b);
52 void (* FreeKey)(void * key);
53 } __attribute__ ((gcc_struct));
55 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__sys__OldList;
57 struct __ecereNameSpace__ecere__sys__OldList
64 } __attribute__ ((gcc_struct));
66 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__Method;
68 struct __ecereNameSpace__ecere__com__Method
71 struct __ecereNameSpace__ecere__com__Method * parent;
72 struct __ecereNameSpace__ecere__com__Method * left;
73 struct __ecereNameSpace__ecere__com__Method * right;
78 struct __ecereNameSpace__ecere__com__Class * _class;
80 char * dataTypeString;
81 struct Type * dataType;
83 } __attribute__ ((gcc_struct));
85 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__Property;
87 struct __ecereNameSpace__ecere__com__Property
89 struct __ecereNameSpace__ecere__com__Property * prev;
90 struct __ecereNameSpace__ecere__com__Property * next;
92 unsigned int isProperty;
95 struct __ecereNameSpace__ecere__com__Class * _class;
96 char * dataTypeString;
97 struct __ecereNameSpace__ecere__com__Class * dataTypeClass;
98 struct Type * dataType;
99 void (* Set)(void * , int);
100 int (* Get)(void * );
101 unsigned int (* IsSet)(void * );
105 unsigned int conversion;
106 unsigned int watcherOffset;
108 unsigned int compiled;
109 unsigned int selfWatchable;
110 unsigned int isWatchable;
111 } __attribute__ ((gcc_struct));
113 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_CodePosition;
121 } __attribute__ ((gcc_struct));
123 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Location;
127 struct CodePosition start;
128 struct CodePosition end;
129 } __attribute__ ((gcc_struct));
131 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Attrib;
135 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_ExtDecl;
139 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_ClassDefinition;
141 struct ClassDefinition
143 struct ClassDefinition * prev;
144 struct ClassDefinition * next;
146 struct Specifier * _class;
147 struct __ecereNameSpace__ecere__sys__OldList * baseSpecs;
148 struct __ecereNameSpace__ecere__sys__OldList * definitions;
149 struct Symbol * symbol;
150 struct Location blockStart;
151 struct Location nameLoc;
154 unsigned int deleteWatchable;
155 } __attribute__ ((gcc_struct));
157 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Context;
161 struct Context * parent;
162 struct __ecereNameSpace__ecere__sys__BinaryTree types;
163 struct __ecereNameSpace__ecere__sys__BinaryTree classes;
164 struct __ecereNameSpace__ecere__sys__BinaryTree symbols;
165 struct __ecereNameSpace__ecere__sys__BinaryTree structSymbols;
168 struct __ecereNameSpace__ecere__sys__BinaryTree templateTypes;
169 struct ClassDefinition * classDef;
170 unsigned int templateTypesOnly;
171 unsigned int hasNameSpace;
172 } __attribute__ ((gcc_struct));
174 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Instantiation;
178 struct Instantiation * prev;
179 struct Instantiation * next;
181 struct Specifier * _class;
182 struct Expression * exp;
183 struct __ecereNameSpace__ecere__sys__OldList * members;
184 struct Symbol * symbol;
185 unsigned int fullSet;
186 unsigned int isConstant;
187 unsigned char * data;
188 struct Location nameLoc;
189 struct Location insideLoc;
191 } __attribute__ ((gcc_struct));
193 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Declaration;
197 struct Declaration * prev;
198 struct Declaration * next;
205 struct __ecereNameSpace__ecere__sys__OldList * specifiers;
206 struct __ecereNameSpace__ecere__sys__OldList * declarators;
207 } __attribute__ ((gcc_struct));
208 struct Instantiation * inst;
211 struct Identifier * id;
212 struct Expression * exp;
213 } __attribute__ ((gcc_struct));
214 } __attribute__ ((gcc_struct));
215 struct Specifier * extStorage;
216 struct Symbol * symbol;
218 } __attribute__ ((gcc_struct));
220 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Statement;
224 struct Statement * prev;
225 struct Statement * next;
230 struct __ecereNameSpace__ecere__sys__OldList * expressions;
233 struct Identifier * id;
234 struct Statement * stmt;
235 } __attribute__ ((gcc_struct)) labeled;
238 struct Expression * exp;
239 struct Statement * stmt;
240 } __attribute__ ((gcc_struct)) caseStmt;
243 struct __ecereNameSpace__ecere__sys__OldList * declarations;
244 struct __ecereNameSpace__ecere__sys__OldList * statements;
245 struct Context * context;
246 unsigned int isSwitch;
247 } __attribute__ ((gcc_struct)) compound;
250 struct __ecereNameSpace__ecere__sys__OldList * exp;
251 struct Statement * stmt;
252 struct Statement * elseStmt;
253 } __attribute__ ((gcc_struct)) ifStmt;
256 struct __ecereNameSpace__ecere__sys__OldList * exp;
257 struct Statement * stmt;
258 } __attribute__ ((gcc_struct)) switchStmt;
261 struct __ecereNameSpace__ecere__sys__OldList * exp;
262 struct Statement * stmt;
263 } __attribute__ ((gcc_struct)) whileStmt;
266 struct __ecereNameSpace__ecere__sys__OldList * exp;
267 struct Statement * stmt;
268 } __attribute__ ((gcc_struct)) doWhile;
271 struct Statement * init;
272 struct Statement * check;
273 struct __ecereNameSpace__ecere__sys__OldList * increment;
274 struct Statement * stmt;
275 } __attribute__ ((gcc_struct)) forStmt;
278 struct Identifier * id;
279 } __attribute__ ((gcc_struct)) gotoStmt;
282 struct Specifier * spec;
284 struct __ecereNameSpace__ecere__sys__OldList * inputFields;
285 struct __ecereNameSpace__ecere__sys__OldList * outputFields;
286 struct __ecereNameSpace__ecere__sys__OldList * clobberedFields;
287 } __attribute__ ((gcc_struct)) asmStmt;
290 struct Expression * watcher;
291 struct Expression * object;
292 struct __ecereNameSpace__ecere__sys__OldList * watches;
293 } __attribute__ ((gcc_struct)) _watch;
296 struct Identifier * id;
297 struct __ecereNameSpace__ecere__sys__OldList * exp;
298 struct __ecereNameSpace__ecere__sys__OldList * filter;
299 struct Statement * stmt;
300 } __attribute__ ((gcc_struct)) forEachStmt;
301 struct Declaration * decl;
302 } __attribute__ ((gcc_struct));
303 } __attribute__ ((gcc_struct));
305 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_TypeName;
309 struct TypeName * prev;
310 struct TypeName * next;
312 struct __ecereNameSpace__ecere__sys__OldList * qualifiers;
313 struct Declarator * declarator;
315 struct Expression * bitCount;
316 } __attribute__ ((gcc_struct));
318 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Initializer;
322 struct Initializer * prev;
323 struct Initializer * next;
328 struct Expression * exp;
329 struct __ecereNameSpace__ecere__sys__OldList * list;
330 } __attribute__ ((gcc_struct));
331 unsigned int isConstant;
332 } __attribute__ ((gcc_struct));
334 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__DataValue;
336 struct __ecereNameSpace__ecere__com__DataValue
351 } __attribute__ ((gcc_struct));
352 } __attribute__ ((gcc_struct));
354 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Expression;
358 struct Expression * prev;
359 struct Expression * next;
367 struct Identifier * identifier;
368 } __attribute__ ((gcc_struct));
369 struct Statement * compound;
370 struct Instantiation * instance;
372 struct __ecereNameSpace__ecere__sys__OldList * list;
375 struct __ecereNameSpace__ecere__sys__OldList * specifiers;
376 struct Declarator * decl;
377 } __attribute__ ((gcc_struct)) _classExp;
380 struct Identifier * id;
381 } __attribute__ ((gcc_struct)) classData;
384 struct Expression * exp;
385 struct __ecereNameSpace__ecere__sys__OldList * arguments;
386 struct Location argLoc;
387 } __attribute__ ((gcc_struct)) call;
390 struct Expression * exp;
391 struct __ecereNameSpace__ecere__sys__OldList * index;
392 } __attribute__ ((gcc_struct)) index;
395 struct Expression * exp;
396 struct Identifier * member;
398 unsigned int thisPtr;
399 } __attribute__ ((gcc_struct)) member;
403 struct Expression * exp1;
404 struct Expression * exp2;
405 } __attribute__ ((gcc_struct)) op;
406 struct TypeName * typeName;
407 struct Specifier * _class;
410 struct TypeName * typeName;
411 struct Expression * exp;
412 } __attribute__ ((gcc_struct)) cast;
415 struct Expression * cond;
416 struct __ecereNameSpace__ecere__sys__OldList * exp;
417 struct Expression * elseExp;
418 } __attribute__ ((gcc_struct)) cond;
421 struct TypeName * typeName;
422 struct Expression * size;
423 } __attribute__ ((gcc_struct)) _new;
426 struct TypeName * typeName;
427 struct Expression * size;
428 struct Expression * exp;
429 } __attribute__ ((gcc_struct)) _renew;
433 struct Identifier * id;
434 } __attribute__ ((gcc_struct)) db;
437 struct Expression * ds;
438 struct Expression * name;
439 } __attribute__ ((gcc_struct)) dbopen;
442 struct TypeName * typeName;
443 struct Initializer * initializer;
444 } __attribute__ ((gcc_struct)) initializer;
447 struct Expression * exp;
448 struct TypeName * typeName;
449 } __attribute__ ((gcc_struct)) vaArg;
450 } __attribute__ ((gcc_struct));
451 unsigned int debugValue;
452 struct __ecereNameSpace__ecere__com__DataValue val;
454 unsigned int hasAddress;
455 struct Type * expType;
456 struct Type * destType;
459 unsigned int byReference;
460 unsigned int isConstant;
461 unsigned int addedThis;
462 unsigned int needCast;
463 unsigned int thisPtr;
464 } __attribute__ ((gcc_struct));
466 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_TemplateDatatype;
468 struct TemplateDatatype;
470 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_TemplateArgument;
472 struct TemplateArgument;
474 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_TemplateParameter;
476 struct TemplateParameter;
478 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Specifier;
482 struct Specifier * prev;
483 struct Specifier * next;
491 struct ExtDecl * extDecl;
493 struct Symbol * symbol;
494 struct __ecereNameSpace__ecere__sys__OldList * templateArgs;
495 } __attribute__ ((gcc_struct));
498 struct Identifier * id;
499 struct __ecereNameSpace__ecere__sys__OldList * list;
500 struct __ecereNameSpace__ecere__sys__OldList * baseSpecs;
501 struct __ecereNameSpace__ecere__sys__OldList * definitions;
502 unsigned int addNameSpace;
503 struct Context * ctx;
504 struct ExtDecl * extDeclStruct;
505 } __attribute__ ((gcc_struct));
506 struct Expression * expression;
507 struct Specifier * _class;
508 struct TemplateParameter * templateParameter;
509 } __attribute__ ((gcc_struct));
510 } __attribute__ ((gcc_struct));
512 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Identifier;
516 struct Identifier * prev;
517 struct Identifier * next;
519 struct Symbol * classSym;
520 struct Specifier * _class;
522 struct Identifier * badID;
523 } __attribute__ ((gcc_struct));
525 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Pointer;
529 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Declarator;
533 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_FunctionDefinition;
535 struct FunctionDefinition
537 struct FunctionDefinition * prev;
538 struct FunctionDefinition * next;
540 struct __ecereNameSpace__ecere__sys__OldList * specifiers;
541 struct Declarator * declarator;
542 struct __ecereNameSpace__ecere__sys__OldList * declarations;
543 struct Statement * body;
544 struct __ecereNameSpace__ecere__com__Class * _class;
545 struct __ecereNameSpace__ecere__sys__OldList attached;
548 struct Symbol * propSet;
550 unsigned int propertyNoThis;
551 } __attribute__ ((gcc_struct));
553 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_DBTableDef;
558 struct Symbol * symbol;
559 struct __ecereNameSpace__ecere__sys__OldList * definitions;
561 } __attribute__ ((gcc_struct));
563 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_External;
567 struct External * prev;
568 struct External * next;
571 struct Symbol * symbol;
574 struct FunctionDefinition * function;
575 struct ClassDefinition * _class;
576 struct Declaration * declaration;
578 struct Identifier * id;
579 struct DBTableDef * table;
580 } __attribute__ ((gcc_struct));
582 } __attribute__ ((gcc_struct));
584 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_ModuleImport;
588 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_ClassImport;
592 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Symbol;
597 struct Symbol * parent;
598 struct Symbol * left;
599 struct Symbol * right;
604 struct __ecereNameSpace__ecere__com__Method * method;
605 struct __ecereNameSpace__ecere__com__Property * _property;
606 struct __ecereNameSpace__ecere__com__Class * registered;
607 } __attribute__ ((gcc_struct));
614 struct External * pointerExternal;
615 struct External * structExternal;
616 } __attribute__ ((gcc_struct));
619 struct External * externalGet;
620 struct External * externalSet;
621 struct External * externalPtr;
622 struct External * externalIsSet;
623 } __attribute__ ((gcc_struct));
626 struct External * methodExternal;
627 struct External * methodCodeExternal;
628 } __attribute__ ((gcc_struct));
629 } __attribute__ ((gcc_struct));
630 unsigned int imported;
631 unsigned int declaredStructSym;
632 struct __ecereNameSpace__ecere__com__Class * _class;
633 unsigned int declaredStruct;
634 unsigned int needConstructor;
635 unsigned int needDestructor;
636 char * constructorName;
639 char * destructorName;
640 struct ModuleImport * module;
641 struct ClassImport * _import;
642 struct Location nameLoc;
643 unsigned int isParam;
644 unsigned int isRemote;
645 unsigned int isStruct;
646 unsigned int fireWatchersDone;
648 unsigned int classData;
649 unsigned int isStatic;
651 struct __ecereNameSpace__ecere__sys__OldList * templateParams;
652 struct __ecereNameSpace__ecere__sys__OldList templatedClasses;
653 struct Context * ctx;
655 struct Expression * propCategory;
656 } __attribute__ ((gcc_struct));
658 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Type;
667 struct Symbol * _class;
670 struct __ecereNameSpace__ecere__sys__OldList members;
672 } __attribute__ ((gcc_struct));
675 struct Type * returnType;
676 struct __ecereNameSpace__ecere__sys__OldList params;
677 struct Symbol * thisClass;
678 unsigned int staticMethod;
679 struct TemplateParameter * thisClassTemplate;
680 } __attribute__ ((gcc_struct));
683 struct __ecereNameSpace__ecere__com__Method * method;
684 struct __ecereNameSpace__ecere__com__Class * methodClass;
685 struct __ecereNameSpace__ecere__com__Class * usedClass;
686 } __attribute__ ((gcc_struct));
689 struct Type * arrayType;
691 struct Expression * arraySizeExp;
692 unsigned int freeExp;
693 struct Symbol * enumClass;
694 } __attribute__ ((gcc_struct));
696 struct TemplateParameter * templateParameter;
697 } __attribute__ ((gcc_struct));
707 unsigned int isSigned : 1;
708 unsigned int constant : 1;
709 unsigned int truth : 1;
710 unsigned int byReference : 1;
711 unsigned int extraParam : 1;
712 unsigned int directClassAccess : 1;
713 unsigned int computing : 1;
714 unsigned int keepCast : 1;
715 unsigned int passAsTemplate : 1;
716 unsigned int dllExport : 1;
717 unsigned int attrStdcall : 1;
718 unsigned int declaredWithStruct : 1;
719 } __attribute__ ((gcc_struct));
721 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__Class;
723 struct __ecereNameSpace__ecere__com__Class
725 struct __ecereNameSpace__ecere__com__Class * prev;
726 struct __ecereNameSpace__ecere__com__Class * next;
732 int (* Constructor)(struct __ecereNameSpace__ecere__com__Instance *);
733 void (* Destructor)(struct __ecereNameSpace__ecere__com__Instance *);
736 struct __ecereNameSpace__ecere__com__Class * base;
737 struct __ecereNameSpace__ecere__sys__BinaryTree methods;
738 struct __ecereNameSpace__ecere__sys__BinaryTree members;
739 struct __ecereNameSpace__ecere__sys__BinaryTree prop;
740 struct __ecereNameSpace__ecere__sys__OldList membersAndProperties;
741 struct __ecereNameSpace__ecere__sys__BinaryTree classProperties;
742 struct __ecereNameSpace__ecere__sys__OldList derivatives;
746 struct __ecereNameSpace__ecere__com__Instance * module;
747 struct __ecereNameSpace__ecere__com__NameSpace * nameSpace;
748 char * dataTypeString;
749 struct Type * dataType;
751 int defaultAlignment;
752 void (* Initialize)();
754 struct __ecereNameSpace__ecere__sys__OldList selfWatchers;
755 char * designerClass;
756 unsigned int noExpansion;
757 char * defaultProperty;
758 unsigned int comRedefinition;
760 unsigned int isRemote;
761 unsigned int internalDecl;
763 unsigned int computeSize;
765 int destructionWatchOffset;
767 struct __ecereNameSpace__ecere__sys__OldList delayedCPValues;
768 int inheritanceAccess;
771 struct __ecereNameSpace__ecere__sys__OldList conversions;
772 struct __ecereNameSpace__ecere__sys__OldList templateParams;
773 struct __ecereNameSpace__ecere__com__ClassTemplateArgument * templateArgs;
774 struct __ecereNameSpace__ecere__com__Class * templateClass;
775 struct __ecereNameSpace__ecere__sys__OldList templatized;
777 unsigned int isInstanceClass;
778 } __attribute__ ((gcc_struct));
780 extern long long __ecereNameSpace__ecere__com__eClass_GetProperty(struct __ecereNameSpace__ecere__com__Class * _class, char * name);
782 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__Instance;
784 struct __ecereNameSpace__ecere__com__Instance
787 struct __ecereNameSpace__ecere__com__Class * _class;
789 } __attribute__ ((gcc_struct));
791 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__DataMember;
793 struct __ecereNameSpace__ecere__com__DataMember
795 struct __ecereNameSpace__ecere__com__DataMember * prev;
796 struct __ecereNameSpace__ecere__com__DataMember * next;
798 unsigned int isProperty;
801 struct __ecereNameSpace__ecere__com__Class * _class;
802 char * dataTypeString;
803 struct __ecereNameSpace__ecere__com__Class * dataTypeClass;
804 struct Type * dataType;
808 struct __ecereNameSpace__ecere__sys__OldList members;
809 struct __ecereNameSpace__ecere__sys__BinaryTree membersAlpha;
812 } __attribute__ ((gcc_struct));
814 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__SerialBuffer;
816 struct __ecereNameSpace__ecere__com__SerialBuffer
818 unsigned char * _buffer;
822 } __attribute__ ((gcc_struct));
824 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__ClassTemplateArgument;
826 struct __ecereNameSpace__ecere__com__ClassTemplateArgument
832 char * dataTypeString;
833 struct __ecereNameSpace__ecere__com__Class * dataTypeClass;
834 } __attribute__ ((gcc_struct));
835 struct __ecereNameSpace__ecere__com__DataValue expression;
841 struct __ecereNameSpace__ecere__com__DataMember * member;
842 struct __ecereNameSpace__ecere__com__Property * prop;
843 struct __ecereNameSpace__ecere__com__Method * method;
844 } __attribute__ ((gcc_struct));
845 } __attribute__ ((gcc_struct));
846 } __attribute__ ((gcc_struct));
847 } __attribute__ ((gcc_struct));
851 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
854 typedef union YYSTYPE
859 struct Identifier * id;
860 struct Expression * exp;
861 struct Specifier * specifier;
862 struct __ecereNameSpace__ecere__sys__OldList * list;
863 struct Enumerator * enumerator;
864 struct Declarator * declarator;
865 struct Pointer * pointer;
866 struct Initializer * initializer;
867 struct InitDeclarator * initDeclarator;
868 struct TypeName * typeName;
869 struct Declaration * declaration;
870 struct Statement * stmt;
871 struct FunctionDefinition * function;
872 struct External * external;
873 struct Context * context;
874 struct AsmField * asmField;
875 struct Attrib * attrib;
876 struct ExtDecl * extDecl;
877 struct Attribute * attribute;
878 struct Instantiation * instance;
879 struct MembersInit * membersInit;
880 struct MemberInit * memberInit;
881 struct ClassFunction * classFunction;
882 struct ClassDefinition * _class;
883 struct ClassDef * classDef;
884 struct PropertyDef * prop;
886 struct Symbol * symbol;
887 struct PropertyWatch * propertyWatch;
888 struct TemplateParameter * templateParameter;
889 struct TemplateArgument * templateArgument;
890 struct TemplateDatatype * templateDatatype;
891 struct DBTableEntry * dbtableEntry;
892 struct DBIndexItem * dbindexItem;
893 struct DBTableDef * dbtableDef;
894 } __attribute__ ((gcc_struct)) YYSTYPE;
896 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Enumerator;
900 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_InitDeclarator;
902 struct InitDeclarator
904 struct InitDeclarator * prev;
905 struct InitDeclarator * next;
907 struct Declarator * declarator;
908 struct Initializer * initializer;
909 } __attribute__ ((gcc_struct));
911 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_AsmField;
915 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Attribute;
919 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_ClassFunction;
923 struct ClassFunction * prev;
924 struct ClassFunction * next;
926 struct __ecereNameSpace__ecere__sys__OldList * specifiers;
927 struct Declarator * declarator;
928 struct __ecereNameSpace__ecere__sys__OldList * declarations;
929 struct Statement * body;
930 struct __ecereNameSpace__ecere__com__Class * _class;
931 struct __ecereNameSpace__ecere__sys__OldList attached;
934 struct Symbol * propSet;
935 unsigned int isVirtual;
936 unsigned int isConstructor;
937 unsigned int isDestructor;
938 unsigned int dontMangle;
941 } __attribute__ ((gcc_struct));
943 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_MembersInit;
947 struct MembersInit * prev;
948 struct MembersInit * next;
953 struct __ecereNameSpace__ecere__sys__OldList * dataMembers;
954 struct ClassFunction * function;
955 } __attribute__ ((gcc_struct));
956 } __attribute__ ((gcc_struct));
958 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_MemberInit;
962 struct MemberInit * prev;
963 struct MemberInit * next;
965 struct Location realLoc;
966 struct __ecereNameSpace__ecere__sys__OldList * identifiers;
967 struct Initializer * initializer;
969 unsigned int variable;
970 unsigned int takeOutExp;
971 } __attribute__ ((gcc_struct));
973 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_PropertyDef;
977 struct PropertyDef * prev;
978 struct PropertyDef * next;
980 struct __ecereNameSpace__ecere__sys__OldList * specifiers;
981 struct Declarator * declarator;
982 struct Identifier * id;
983 struct Statement * getStmt;
984 struct Statement * setStmt;
985 struct Statement * issetStmt;
986 struct Symbol * symbol;
987 unsigned int conversion;
988 unsigned int isWatchable;
989 struct Expression * category;
990 } __attribute__ ((gcc_struct));
992 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_PropertyWatch;
996 struct PropertyWatch * prev;
997 struct PropertyWatch * next;
999 struct Statement * compound;
1000 struct __ecereNameSpace__ecere__sys__OldList * properties;
1001 unsigned int deleteWatch;
1002 } __attribute__ ((gcc_struct));
1004 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_ClassDef;
1008 struct ClassDef * prev;
1009 struct ClassDef * next;
1010 struct Location loc;
1014 struct Declaration * decl;
1015 struct ClassFunction * function;
1016 struct __ecereNameSpace__ecere__sys__OldList * defProperties;
1017 struct PropertyDef * propertyDef;
1018 struct PropertyWatch * propertyWatch;
1020 struct Identifier * defaultProperty;
1023 struct Identifier * id;
1024 struct Initializer * initializer;
1025 } __attribute__ ((gcc_struct));
1026 } __attribute__ ((gcc_struct));
1029 } __attribute__ ((gcc_struct));
1031 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_DBTableEntry;
1035 struct DBTableEntry * prev;
1036 struct DBTableEntry * next;
1038 struct Identifier * id;
1043 struct TypeName * dataType;
1045 } __attribute__ ((gcc_struct));
1046 struct __ecereNameSpace__ecere__sys__OldList * items;
1047 } __attribute__ ((gcc_struct));
1048 } __attribute__ ((gcc_struct));
1050 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_DBIndexItem;
1054 struct DBIndexItem * prev;
1055 struct DBIndexItem * next;
1056 struct Identifier * id;
1058 } __attribute__ ((gcc_struct));
1060 extern YYSTYPE yylval;
1062 extern struct Location yylloc;
1064 static struct __ecereNameSpace__ecere__sys__OldList * tableStatements, * indexStatements, * addFieldStatements;
1066 static int numIndexes;
1068 static struct External * addAfter;
1070 static void ProcessDeclaration(struct Declaration * decl);
1072 extern struct __ecereNameSpace__ecere__com__Class * thisClass;
1074 static void ProcessMemberInit(struct MemberInit * init);
1076 static void ProcessClassFunction(struct ClassFunction * func);
1078 static void ProcessProperty(struct PropertyDef * def);
1080 static void ProcessStatement(struct Statement * stmt);
1082 static void ProcessSpecifier(struct Specifier * spec)
1090 if(spec->definitions)
1092 struct ClassDef * def;
1094 for(def = (*spec->definitions).first; def; def = def->next)
1099 ProcessDeclaration(def->decl);
1103 struct MemberInit * init;
1105 for(init = (*def->defProperties).first; init; init = init->next)
1107 struct __ecereNameSpace__ecere__com__Class * oldThisClass = thisClass;
1109 ProcessMemberInit(init);
1114 ProcessClassFunction(def->function);
1117 if(def->propertyDef)
1119 ProcessProperty(def->propertyDef);
1123 if(def->propertyWatch && def->propertyWatch->compound)
1125 ProcessStatement(def->propertyWatch->compound);
1136 static void ProcessIdentifier(struct Identifier * id)
1140 static void ProcessInstance(struct Instantiation * inst);
1142 extern size_t strlen(const char * );
1144 extern void * memcpy(void * , const void * , size_t size);
1146 extern void __ecereNameSpace__ecere__sys__ChangeCh(char * string, char ch1, char ch2);
1148 extern int sprintf(char * , char * , ...);
1150 extern void FreeExpContents(struct Expression * exp);
1152 extern struct Identifier * MkIdentifier(char * string);
1154 extern struct Statement * MkCompoundStmt(struct __ecereNameSpace__ecere__sys__OldList * declarations, struct __ecereNameSpace__ecere__sys__OldList * statements);
1156 extern struct __ecereNameSpace__ecere__sys__OldList * MkList(void);
1158 extern struct Context * curContext;
1160 extern struct Declaration * MkDeclaration(struct __ecereNameSpace__ecere__sys__OldList * specifiers, struct __ecereNameSpace__ecere__sys__OldList * initDeclarators);
1162 extern struct __ecereNameSpace__ecere__sys__OldList * MkListOne(void * item);
1164 extern struct Specifier * MkSpecifierName(char * name);
1166 extern struct InitDeclarator * MkInitDeclarator(struct Declarator * declarator, struct Initializer * initializer);
1168 extern struct Declarator * MkDeclaratorIdentifier(struct Identifier * id);
1170 extern struct Initializer * MkInitializerAssignment(struct Expression * exp);
1172 extern struct Expression * MkExpIdentifier(struct Identifier * id);
1174 extern struct Specifier * MkSpecifier(int specifier);
1176 extern struct Statement * MkIfStmt(struct __ecereNameSpace__ecere__sys__OldList * exp, struct Statement * statement, struct Statement * elseStmt);
1178 extern struct Statement * MkReturnStmt(struct __ecereNameSpace__ecere__sys__OldList * exp);
1180 extern struct Statement * MkExpressionStmt(struct __ecereNameSpace__ecere__sys__OldList * expressions);
1182 extern struct Expression * MkExpOp(struct Expression * exp1, int op, struct Expression * exp2);
1184 extern struct Expression * CopyExpression(struct Expression * exp);
1186 extern struct Expression * MkExpCall(struct Expression * expression, struct __ecereNameSpace__ecere__sys__OldList * arguments);
1188 extern struct Expression * MkExpMember(struct Expression * expression, struct Identifier * member);
1190 extern struct Declarator * MkDeclaratorArray(struct Declarator * declarator, struct Expression * exp);
1192 extern struct Expression * MkExpConstant(char * string);
1194 extern struct Initializer * MkInitializerList(struct __ecereNameSpace__ecere__sys__OldList * list);
1196 extern void Compiler_Error(char * format, ...);
1198 extern char * __ecereNameSpace__ecere__GetTranslatedString(struct __ecereNameSpace__ecere__com__Instance * module, char * string, char * stringAndContext);
1200 extern struct __ecereNameSpace__ecere__com__Instance * __thisModule;
1202 extern void * __ecereNameSpace__ecere__com__eInstance_New(struct __ecereNameSpace__ecere__com__Class * _class);
1204 void __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add(struct __ecereNameSpace__ecere__sys__OldList * this, void * item);
1206 static void ProcessExpression(struct Expression * exp)
1211 ProcessExpression(exp->_new.size);
1214 ProcessExpression(exp->_renew.exp);
1215 ProcessExpression(exp->_renew.size);
1220 ProcessIdentifier(exp->identifier);
1223 ProcessInstance(exp->instance);
1230 ProcessExpression(exp->op.exp1);
1234 ProcessExpression(exp->op.exp2);
1239 struct Expression * expression;
1241 for(expression = (*exp->list).first; expression; expression = expression->next)
1243 ProcessExpression(expression);
1249 struct Expression * expression;
1251 ProcessExpression(exp->index.exp);
1252 for(expression = (*exp->index.index).first; expression; expression = expression->next)
1254 ProcessExpression(expression);
1260 ProcessExpression(exp->call.exp);
1261 if(exp->call.arguments)
1263 struct Expression * expression;
1265 for(expression = (*exp->call.arguments).first; expression; expression = expression->next)
1267 ProcessExpression(expression);
1273 ProcessExpression(exp->member.exp);
1276 ProcessExpression(exp->member.exp);
1281 ProcessExpression(exp->cast.exp);
1284 ProcessExpression(exp->cond.cond);
1286 struct Expression * expression;
1288 for(expression = (*exp->cond.exp).first; expression; expression = expression->next)
1290 ProcessExpression(expression);
1293 ProcessExpression(exp->cond.elseExp);
1299 char tableName[1024];
1301 int len = strlen(exp->db.table);
1303 memcpy(tableName, exp->db.table + 1, len - 2);
1304 tableName[len - 2] = (char)0;
1305 __ecereNameSpace__ecere__sys__ChangeCh(tableName, ' ', '_');
1306 sprintf(name, "__ecereDBField_%s_%s", tableName, exp->db.id->string);
1307 FreeExpContents(exp);
1309 exp->identifier = MkIdentifier(name);
1314 char tableName[1024];
1316 int len = strlen(exp->db.table);
1318 memcpy(tableName, exp->db.table + 1, len - 2);
1319 tableName[len - 2] = (char)0;
1320 __ecereNameSpace__ecere__sys__ChangeCh(tableName, ' ', '_');
1321 sprintf(name, "__ecereDBTable_%s", tableName);
1322 FreeExpContents(exp);
1324 exp->identifier = MkIdentifier(name);
1329 char tableName[1024];
1331 int len = strlen(exp->db.table);
1333 memcpy(tableName, exp->db.table + 1, len - 2);
1334 tableName[len - 2] = (char)0;
1335 __ecereNameSpace__ecere__sys__ChangeCh(tableName, ' ', '_');
1336 sprintf(name, "__ecereDBIndex_%s_%s", tableName, exp->db.id->string);
1337 FreeExpContents(exp);
1339 exp->identifier = MkIdentifier(name);
1346 struct Statement * databaseOpenStmt = MkCompoundStmt(MkList(), MkList());
1347 struct Statement * compound, * compound2;
1348 struct Statement * ifDBStmt;
1349 struct __ecereNameSpace__ecere__sys__OldList * args;
1350 char numIndexesString[16];
1352 databaseOpenStmt->compound.context = __extension__ ({
1353 struct Context * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Context);
1355 __ecereInstance1->parent = curContext, __ecereInstance1;
1357 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*databaseOpenStmt->compound.declarations), MkDeclaration(MkListOne(MkSpecifierName("Database")), MkListOne(MkInitDeclarator(MkDeclaratorIdentifier(MkIdentifier("db")), (((void *)0))))));
1358 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*databaseOpenStmt->compound.declarations), MkDeclaration(MkListOne(MkSpecifierName("bool")), MkListOne(MkInitDeclarator(MkDeclaratorIdentifier(MkIdentifier("createNow")), MkInitializerAssignment(MkExpIdentifier(MkIdentifier("false")))))));
1360 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*args), MkSpecifier(STATIC));
1361 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*args), MkSpecifierName("bool"));
1362 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*databaseOpenStmt->compound.declarations), MkDeclaration(args, MkListOne(MkInitDeclarator(MkDeclaratorIdentifier(MkIdentifier("initialized")), MkInitializerAssignment(MkExpIdentifier(MkIdentifier("false")))))));
1363 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*databaseOpenStmt->compound.statements), MkIfStmt(MkListOne(MkExpIdentifier(MkIdentifier("initialized"))), MkReturnStmt(MkListOne(MkExpIdentifier(MkIdentifier("null")))), (((void *)0))));
1364 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*databaseOpenStmt->compound.statements), MkExpressionStmt(MkListOne(MkExpOp(MkExpIdentifier(MkIdentifier("initialized")), '=', MkExpIdentifier(MkIdentifier("true"))))));
1366 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*args), CopyExpression(exp->dbopen.name));
1367 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*args), MkExpIdentifier(MkIdentifier("no")));
1368 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*databaseOpenStmt->compound.statements), MkExpressionStmt(MkListOne(MkExpOp(MkExpIdentifier(MkIdentifier("db")), '=', MkExpCall(MkExpMember(CopyExpression(exp->dbopen.ds), MkIdentifier("OpenDatabase")), args)))));
1369 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*databaseOpenStmt->compound.statements), MkIfStmt(MkListOne(MkExpOp((((void *)0)), '!', MkExpIdentifier(MkIdentifier("db")))), compound = MkCompoundStmt((((void *)0)), MkList()), (((void *)0))));
1370 compound->compound.context = __extension__ ({
1371 struct Context * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Context);
1373 __ecereInstance1->parent = databaseOpenStmt->compound.context, __ecereInstance1;
1376 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*args), exp->dbopen.name);
1377 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*args), MkExpIdentifier(MkIdentifier("create")));
1378 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*compound->compound.statements), MkExpressionStmt(MkListOne(MkExpOp(MkExpIdentifier(MkIdentifier("db")), '=', MkExpCall(MkExpMember(exp->dbopen.ds, MkIdentifier("OpenDatabase")), args)))));
1379 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*compound->compound.statements), MkExpressionStmt(MkListOne(MkExpOp(MkExpIdentifier(MkIdentifier("createNow")), '=', MkExpIdentifier(MkIdentifier("true"))))));
1380 exp->dbopen.name = (((void *)0));
1381 exp->dbopen.ds = (((void *)0));
1382 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*databaseOpenStmt->compound.statements), MkIfStmt(MkListOne(MkExpIdentifier(MkIdentifier("db"))), ifDBStmt = MkCompoundStmt(MkList(), MkList()), (((void *)0))));
1383 ifDBStmt->compound.context = __extension__ ({
1384 struct Context * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Context);
1386 __ecereInstance1->parent = databaseOpenStmt->compound.context, __ecereInstance1;
1388 sprintf(numIndexesString, "%d", numIndexes);
1389 __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")))))))))));
1390 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*ifDBStmt->compound.statements), compound = MkCompoundStmt((((void *)0)), tableStatements));
1391 compound->compound.context = __extension__ ({
1392 struct Context * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Context);
1394 __ecereInstance1->parent = ifDBStmt->compound.context, __ecereInstance1;
1396 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*ifDBStmt->compound.statements), (compound = MkCompoundStmt((((void *)0)), addFieldStatements), compound->compound.context = __extension__ ({
1397 struct Context * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Context);
1399 __ecereInstance1->parent = ifDBStmt->compound.context, __ecereInstance1;
1401 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*ifDBStmt->compound.statements), compound = MkCompoundStmt((((void *)0)), indexStatements));
1402 compound->compound.context = __extension__ ({
1403 struct Context * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Context);
1405 __ecereInstance1->parent = ifDBStmt->compound.context, __ecereInstance1;
1408 exp->compound = databaseOpenStmt;
1409 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*databaseOpenStmt->compound.statements), MkExpressionStmt(MkListOne(MkExpIdentifier(MkIdentifier("db")))));
1410 tableStatements = (((void *)0));
1414 FreeExpContents(exp);
1415 Compiler_Error(__ecereNameSpace__ecere__GetTranslatedString(__thisModule, "No database table defined in this module or database_open already used.\n", (((void *)0))));
1423 static void ProcessStatement(struct Statement * stmt)
1428 ProcessStatement(stmt->labeled.stmt);
1431 if(stmt->caseStmt.exp)
1433 ProcessExpression(stmt->caseStmt.exp);
1435 if(stmt->caseStmt.stmt)
1437 ProcessStatement(stmt->caseStmt.stmt);
1442 ProcessDeclaration(stmt->decl);
1447 struct Context * oldContext = curContext;
1449 curContext = stmt->compound.context;
1450 if(stmt->compound.declarations)
1452 struct Declaration * decl;
1454 for(decl = (*stmt->compound.declarations).first; decl; decl = decl->next)
1456 ProcessDeclaration(decl);
1459 if(stmt->compound.statements)
1461 struct Statement * statement;
1463 for(statement = (*stmt->compound.statements).first; statement; statement = statement->next)
1465 ProcessStatement(statement);
1468 curContext = oldContext;
1473 if(stmt->expressions)
1475 struct Expression * exp;
1477 for(exp = (*stmt->expressions).first; exp; exp = exp->next)
1479 ProcessExpression(exp);
1486 struct Expression * exp;
1488 for(exp = (*stmt->ifStmt.exp).first; exp; exp = exp->next)
1490 ProcessExpression(exp);
1492 if(stmt->ifStmt.stmt)
1494 ProcessStatement(stmt->ifStmt.stmt);
1496 if(stmt->ifStmt.elseStmt)
1498 ProcessStatement(stmt->ifStmt.elseStmt);
1504 struct Expression * exp;
1506 for(exp = (*stmt->switchStmt.exp).first; exp; exp = exp->next)
1508 ProcessExpression(exp);
1510 ProcessStatement(stmt->switchStmt.stmt);
1515 struct Expression * exp;
1517 if(stmt->whileStmt.exp)
1519 for(exp = (*stmt->whileStmt.exp).first; exp; exp = exp->next)
1521 ProcessExpression(exp);
1524 if(stmt->whileStmt.stmt)
1525 ProcessStatement(stmt->whileStmt.stmt);
1530 ProcessStatement(stmt->doWhile.stmt);
1531 if(stmt->doWhile.exp)
1533 struct Expression * exp;
1535 for(exp = (*stmt->doWhile.exp).first; exp; exp = exp->next)
1537 ProcessExpression(exp);
1544 struct Expression * exp;
1546 if(stmt->forStmt.init)
1548 ProcessStatement(stmt->forStmt.init);
1550 if(stmt->forStmt.check)
1552 ProcessStatement(stmt->forStmt.check);
1554 if(stmt->forStmt.increment)
1556 for(exp = (*stmt->forStmt.increment).first; exp; exp = exp->next)
1558 ProcessExpression(exp);
1561 if(stmt->forStmt.stmt)
1562 ProcessStatement(stmt->forStmt.stmt);
1572 if(stmt->expressions)
1574 struct Expression * exp;
1576 for(exp = (*stmt->expressions).first; exp; exp = exp->next)
1578 ProcessExpression(exp);
1585 struct Identifier * _watch;
1587 if(stmt->_watch.watcher)
1589 ProcessExpression(stmt->_watch.watcher);
1591 if(stmt->_watch.object)
1593 ProcessExpression(stmt->_watch.object);
1595 if(stmt->_watch.watches)
1597 for(_watch = (*stmt->_watch.watches).first; _watch; _watch = _watch->next)
1599 ProcessIdentifier(_watch);
1606 struct PropertyWatch * _watch;
1608 if(stmt->_watch.watcher)
1610 ProcessExpression(stmt->_watch.watcher);
1612 if(stmt->_watch.object)
1614 ProcessExpression(stmt->_watch.object);
1616 if(stmt->_watch.watches)
1618 for(_watch = (*stmt->_watch.watches).first; _watch; _watch = _watch->next)
1620 if(_watch->compound)
1622 ProcessStatement(_watch->compound);
1631 static void ProcessInitializer(struct Initializer * initializer)
1633 switch(initializer->type)
1637 struct Initializer * init;
1639 for(init = (*initializer->list).first; init; init = init->next)
1641 ProcessInitializer(init);
1646 ProcessExpression(initializer->exp);
1651 static void ProcessInitDeclarator(struct InitDeclarator * decl)
1653 if(decl->initializer)
1654 ProcessInitializer(decl->initializer);
1657 static void ProcessDeclaration(struct Declaration * decl)
1663 struct Specifier * spec;
1665 if(decl->specifiers)
1667 for(spec = (*decl->specifiers).first; spec; spec = spec->next)
1669 ProcessSpecifier(spec);
1676 if(decl->specifiers)
1678 struct Specifier * s;
1680 for(s = (*decl->specifiers).first; s; s = s->next)
1682 ProcessSpecifier(s);
1685 if(decl->declarators && (*decl->declarators).first)
1687 struct InitDeclarator * d;
1689 for(d = (*decl->declarators).first; d; d = d->next)
1691 ProcessInitDeclarator(d);
1697 ProcessInstance(decl->inst);
1702 static void ProcessFunction(struct FunctionDefinition * func)
1706 ProcessStatement(func->body);
1710 static void ProcessMemberInit(struct MemberInit * init)
1712 if(init->initializer)
1714 ProcessInitializer(init->initializer);
1718 static void ProcessInstance(struct Instantiation * inst)
1722 struct MembersInit * init;
1723 struct MemberInit * memberInit;
1725 for(init = (*inst->members).first; init; init = init->next)
1727 if(init->type == 0 && init->dataMembers)
1729 for(memberInit = (*init->dataMembers).first; memberInit; memberInit = memberInit->next)
1731 ProcessMemberInit(memberInit);
1736 ProcessClassFunction(init->function);
1742 static void ProcessClassFunction(struct ClassFunction * func)
1746 ProcessStatement(func->body);
1750 static void ProcessProperty(struct PropertyDef * def)
1754 ProcessStatement(def->getStmt);
1758 ProcessStatement(def->setStmt);
1762 static void ProcessClassDef(struct ClassDef * def)
1767 ProcessDeclaration(def->decl);
1771 struct MemberInit * init;
1773 for(init = (*def->defProperties).first; init; init = init->next)
1775 ProcessMemberInit(init);
1780 ProcessClassFunction(def->function);
1783 if(def->propertyDef)
1785 ProcessProperty(def->propertyDef);
1789 if(def->propertyWatch && def->propertyWatch->compound)
1791 ProcessStatement(def->propertyWatch->compound);
1797 static void ProcessClass(struct ClassDefinition * _class)
1799 if(_class->definitions)
1801 struct ClassDef * def;
1803 for(def = (*_class->definitions).first; def; def = def->next)
1805 ProcessClassDef(def);
1810 extern struct External * MkExternalDeclaration(struct Declaration * declaration);
1812 extern struct __ecereNameSpace__ecere__sys__OldList * ast;
1814 extern struct Expression * MkExpString(char * string);
1816 extern struct Expression * MkExpInstance(struct Instantiation * inst);
1818 extern struct Instantiation * MkInstantiation(struct Specifier * _class, struct Expression * exp, struct __ecereNameSpace__ecere__sys__OldList * members);
1820 extern struct MembersInit * MkMembersInitList(struct __ecereNameSpace__ecere__sys__OldList * dataMembers);
1822 extern struct MemberInit * MkMemberInit(struct __ecereNameSpace__ecere__sys__OldList * ids, struct Initializer * initializer);
1824 extern struct Context * PushContext(void);
1826 extern struct ClassDefinition * MkClass(struct Symbol * symbol, struct __ecereNameSpace__ecere__sys__OldList * baseSpecs, struct __ecereNameSpace__ecere__sys__OldList * definitions);
1828 extern struct Symbol * DeclClass(int symbolID, char * name);
1830 extern struct Context * globalContext;
1832 extern void PopContext(struct Context * ctx);
1834 extern struct ClassDef * MkClassDefDefaultProperty(struct __ecereNameSpace__ecere__sys__OldList * defProperties);
1836 extern struct MemberInit * MkMemberInitExp(struct Expression * idExp, struct Initializer * initializer);
1838 extern struct External * MkExternalClass(struct ClassDefinition * _class);
1840 extern int strcmp(const char * , const char * );
1842 extern char * strcpy(char * , const char * );
1844 extern struct ClassDef * MkClassDefProperty(struct PropertyDef * propertyDef);
1846 extern struct PropertyDef * MkProperty(struct __ecereNameSpace__ecere__sys__OldList * specs, struct Declarator * decl, struct Identifier * id, struct Statement * setStmt, struct Statement * getStmt);
1848 extern struct __ecereNameSpace__ecere__sys__OldList * CopyList(struct __ecereNameSpace__ecere__sys__OldList * source, void * (* CopyFunction)(void * ));
1850 extern struct Specifier * CopySpecifier(struct Specifier * spec);
1852 extern struct Declarator * CopyDeclarator(struct Declarator * declarator);
1854 extern struct Declaration * MkDeclarationInst(struct Instantiation * inst);
1856 extern struct Identifier * CopyIdentifier(struct Identifier * id);
1858 extern struct Expression * MkExpClass(struct __ecereNameSpace__ecere__sys__OldList * specifiers, struct Declarator * decl);
1860 extern struct Expression * MkExpIndex(struct Expression * expression, struct __ecereNameSpace__ecere__sys__OldList * index);
1862 extern struct ClassDef * MkClassDefClassPropertyValue(struct Identifier * id, struct Initializer * initializer);
1864 extern struct Expression * MkExpDBTable(char * table);
1866 extern char * __ecereNameSpace__ecere__sys__CopyString(char * string);
1868 extern struct Expression * MkExpDBField(char * table, struct Identifier * id);
1870 unsigned int __ecereMethod___ecereNameSpace__ecere__sys__OldList_Insert(struct __ecereNameSpace__ecere__sys__OldList * this, void * prevItem, void * item);
1872 static void ProcessDBTable(struct DBTableDef * table)
1874 struct __ecereNameSpace__ecere__sys__OldList * rowClassDefs = MkList(), * idClassDefs = (((void *)0));
1875 char tableName[1024];
1876 char rowClassName[1024];
1877 int len = strlen(table->name);
1878 unsigned int indexed = 0x0;
1880 char nameField[1024];
1881 struct __ecereNameSpace__ecere__sys__OldList * args;
1882 struct __ecereNameSpace__ecere__sys__OldList * members;
1886 idClassDefs = MkList();
1887 nameField[0] = (char)0;
1888 memcpy(tableName, table->name + 1, len - 2);
1889 tableName[len - 2] = (char)0;
1890 __ecereNameSpace__ecere__sys__ChangeCh(tableName, ' ', '_');
1891 sprintf(tableID, "__ecereDBTable_%s", tableName);
1892 sprintf(rowClassName, "Row%s", tableName);
1893 __ecereNameSpace__ecere__sys__ChangeCh(rowClassName, ' ', '_');
1894 if(!tableStatements)
1896 tableStatements = MkList();
1897 indexStatements = MkList();
1898 addFieldStatements = MkList();
1901 struct External * external;
1903 external = MkExternalDeclaration(MkDeclaration(MkListOne(MkSpecifierName("Table")), MkListOne(MkInitDeclarator(MkDeclaratorIdentifier(MkIdentifier(tableID)), (((void *)0))))));
1904 external->declaration->declMode = table->declMode;
1905 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Insert((&*ast), addAfter, external);
1907 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*tableStatements), MkExpressionStmt(MkListOne(MkExpOp(MkExpIdentifier(MkIdentifier(tableID)), '=', MkExpCall(MkExpMember(MkExpIdentifier(MkIdentifier("db")), MkIdentifier("OpenTable")), args)))));
1908 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*args), MkExpString(table->name));
1910 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*args), MkExpInstance(MkInstantiation((((void *)0)), (((void *)0)), MkListOne(MkMembersInitList(members)))));
1911 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*members), MkMemberInit((((void *)0)), MkInitializerAssignment(MkExpIdentifier(MkIdentifier("tableRows")))));
1912 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*members), MkMemberInit((((void *)0)), MkInitializerAssignment(MkExpIdentifier(MkIdentifier("create")))));
1915 struct ClassDefinition * _class;
1916 struct ClassDef * def;
1917 struct External * external;
1918 struct __ecereNameSpace__ecere__sys__OldList * inheritanceSpecs = MkList();
1920 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*inheritanceSpecs), MkSpecifier(PRIVATE));
1921 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*inheritanceSpecs), MkSpecifierName("Row"));
1923 _class = MkClass(DeclClass(globalContext->nextID++, rowClassName), inheritanceSpecs, rowClassDefs);
1924 PopContext(curContext);
1925 def = MkClassDefDefaultProperty(MkListOne(MkMemberInitExp(MkExpIdentifier(MkIdentifier("tbl")), MkInitializerAssignment(MkExpIdentifier(MkIdentifier(tableID))))));
1926 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*rowClassDefs), def);
1927 _class->symbol->idCode = symbolID;
1928 _class->declMode = table->declMode;
1929 external = MkExternalClass(_class);
1930 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Insert((&*ast), addAfter, external);
1931 addAfter = external;
1933 if(table->definitions)
1935 struct DBTableEntry * entry;
1937 for(entry = (*table->definitions).first; entry; entry = entry->next)
1943 unsigned int isIndex = 0x0;
1945 struct __ecereNameSpace__ecere__sys__OldList * args;
1946 struct Specifier * spec = entry->dataType->qualifiers ? (struct Specifier *)(*entry->dataType->qualifiers).first : (((void *)0));
1948 sprintf(fieldID, "__ecereDBField_%s_%s", tableName, entry->id->string);
1951 if(!nameField[0] && spec->type == 1 && (!strcmp(spec->name, "String") || !strcmp(spec->name, "eda::CIString")))
1953 strcpy(nameField, entry->id->string);
1955 if(!indexed && spec->type == 1 && !strcmp(spec->name, table->symbol->string))
1957 struct Statement * rowSet = MkCompoundStmt(MkList(), MkList());
1959 struct ClassDef * def;
1961 numIndexes = ((numIndexes > 1) ? numIndexes : 1);
1964 sprintf(name, "_%s", entry->id->string);
1965 curContext = rowSet->compound.context = __extension__ ({
1966 struct Context * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Context);
1968 __ecereInstance1->parent = globalContext, __ecereInstance1;
1970 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*rowSet->compound.statements), MkExpressionStmt(MkListOne(MkExpCall(MkExpIdentifier(MkIdentifier("Find")), args = MkList()))));
1971 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*args), MkExpIdentifier(MkIdentifier(fieldID)));
1972 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*args), MkExpIdentifier(MkIdentifier("middle")));
1973 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*args), MkExpIdentifier(MkIdentifier("nil")));
1974 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*args), MkExpIdentifier(MkIdentifier("value")));
1975 curContext = globalContext;
1976 def = MkClassDefProperty(MkProperty(CopyList(entry->dataType->qualifiers, CopySpecifier), CopyDeclarator(entry->dataType->declarator), MkIdentifier(name), rowSet, (((void *)0))));
1977 def->propertyDef->symbol->id = def->propertyDef->symbol->idCode = symbolID;
1978 def->memberAccess = 1;
1979 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*rowClassDefs), def);
1984 struct Statement * rowSet = MkCompoundStmt(MkList(), MkList()), * rowGet = MkCompoundStmt(MkList(), MkList());
1985 struct ClassDef * def;
1987 curContext = rowGet->compound.context = __extension__ ({
1988 struct Context * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Context);
1990 __ecereInstance1->parent = globalContext, __ecereInstance1;
1992 if(spec->type == 1 && spec->symbol && spec->symbol->registered && spec->symbol->registered->type == 1)
1994 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*rowGet->compound.declarations), MkDeclarationInst(MkInstantiation(MkSpecifierName(spec->name), MkExpIdentifier(MkIdentifier("d")), (((void *)0)))));
1998 struct Expression * exp;
2000 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*rowGet->compound.declarations), MkDeclaration(CopyList(entry->dataType->qualifiers, CopySpecifier), MkListOne(MkInitDeclarator(MkDeclaratorIdentifier(MkIdentifier("d")), MkInitializerAssignment(exp = MkExpConstant("0"))))));
2001 exp->destType = __extension__ ({
2002 struct Type * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Type);
2004 __ecereInstance1->kind = 3, __ecereInstance1->refCount = 1, __ecereInstance1;
2007 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*rowGet->compound.statements), MkExpressionStmt(MkListOne(MkExpCall(MkExpIdentifier(MkIdentifier("GetData")), args = MkList()))));
2008 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*args), MkExpIdentifier(MkIdentifier(fieldID)));
2009 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*args), MkExpIdentifier(MkIdentifier("d")));
2010 if(spec->type == 1 && spec->symbol && spec->symbol->registered && spec->symbol->registered->type == 1)
2012 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*rowGet->compound.statements), MkExpressionStmt(MkListOne(MkExpOp(MkExpIdentifier(MkIdentifier("value")), '=', MkExpIdentifier(MkIdentifier("d"))))));
2015 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*rowGet->compound.statements), MkReturnStmt(MkListOne(MkExpIdentifier(MkIdentifier("d")))));
2016 curContext = rowSet->compound.context = __extension__ ({
2017 struct Context * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Context);
2019 __ecereInstance1->parent = globalContext, __ecereInstance1;
2021 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*rowSet->compound.statements), MkExpressionStmt(MkListOne(MkExpCall(MkExpIdentifier(MkIdentifier("SetData")), args = MkList()))));
2022 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*args), MkExpIdentifier(MkIdentifier(fieldID)));
2023 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*args), MkExpIdentifier(MkIdentifier("value")));
2024 curContext = globalContext;
2025 def = MkClassDefProperty(MkProperty(CopyList(entry->dataType->qualifiers, CopySpecifier), entry->dataType->declarator, CopyIdentifier(entry->id), rowSet, rowGet));
2026 def->propertyDef->symbol->id = def->propertyDef->symbol->idCode = symbolID;
2027 def->memberAccess = 1;
2028 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*rowClassDefs), def);
2031 struct External * external;
2033 external = MkExternalDeclaration(MkDeclaration(MkListOne(MkSpecifierName("Field")), MkListOne(MkInitDeclarator(MkDeclaratorIdentifier(MkIdentifier(fieldID)), (((void *)0))))));
2034 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*ast), external);
2035 external->declaration->declMode = table->declMode;
2037 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*addFieldStatements), MkExpressionStmt(MkListOne(MkExpOp(MkExpIdentifier(MkIdentifier(fieldID)), '=', MkExpCall(MkExpMember(MkExpIdentifier(MkIdentifier(tableID)), MkIdentifier("FindField")), args)))));
2038 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*args), MkExpString(entry->name));
2040 __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))));
2041 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*args), MkExpString(entry->name));
2042 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*args), MkExpClass(CopyList(entry->dataType->qualifiers, CopySpecifier), CopyDeclarator(entry->dataType->declarator)));
2043 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*args), MkExpConstant("0"));
2047 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*indexStatements), MkExpressionStmt(MkListOne(MkExpOp(MkExpMember(MkExpIndex(MkExpIdentifier(MkIdentifier("indexes")), MkListOne(MkExpConstant("0"))), MkIdentifier("field")), '=', MkExpIdentifier(MkIdentifier(fieldID))))));
2048 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*indexStatements), MkExpressionStmt(MkListOne(MkExpOp(MkExpMember(MkExpIndex(MkExpIdentifier(MkIdentifier("indexes")), MkListOne(MkExpConstant("0"))), MkIdentifier("order")), '=', MkExpIdentifier(MkIdentifier("ascending"))))));
2050 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*indexStatements), MkExpressionStmt(MkListOne(MkExpCall(MkExpMember(MkExpIdentifier(MkIdentifier(tableID)), MkIdentifier("Index")), args))));
2051 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*args), MkExpConstant("1"));
2052 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*args), MkExpIdentifier(MkIdentifier("indexes")));
2061 struct ClassDefinition * _class;
2062 struct External * external;
2063 struct ClassDef * def;
2064 struct Expression * exp;
2067 _class = MkClass(table->symbol, MkListOne(MkSpecifierName("Id")), idClassDefs);
2068 PopContext(curContext);
2069 _class->declMode = table->declMode;
2070 external = MkExternalClass(_class);
2071 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Insert((&*ast), addAfter, external);
2072 addAfter = external;
2073 def = MkClassDefClassPropertyValue(MkIdentifier("table"), MkInitializerAssignment(exp = MkExpOp((((void *)0)), '&', MkExpDBTable(__ecereNameSpace__ecere__sys__CopyString(table->name)))));
2074 ProcessExpression(exp);
2075 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*idClassDefs), def);
2078 def = MkClassDefClassPropertyValue(MkIdentifier("nameField"), MkInitializerAssignment(exp = MkExpOp((((void *)0)), '&', MkExpDBField(__ecereNameSpace__ecere__sys__CopyString(table->name), MkIdentifier(nameField)))));
2079 ProcessExpression(exp);
2080 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*idClassDefs), def);
2083 if(table->definitions)
2085 struct DBTableEntry * entry;
2087 for(entry = (*table->definitions).first; entry; entry = entry->next)
2094 struct __ecereNameSpace__ecere__sys__OldList * args;
2095 struct Specifier * spec = entry->dataType->qualifiers ? (struct Specifier *)(*entry->dataType->qualifiers).first : (((void *)0));
2097 sprintf(fieldID, "__ecereDBField_%s_%s", tableName, entry->id->string);
2098 if(idClassDefs && spec)
2100 struct Statement * idSet = MkCompoundStmt(MkList(), MkList()), * idGet = MkCompoundStmt(MkList(), MkList());
2101 struct ClassDef * def;
2103 curContext = idGet->compound.context = __extension__ ({
2104 struct Context * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Context);
2106 __ecereInstance1->parent = globalContext, __ecereInstance1;
2108 __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"))))))))));
2109 if(spec->type == 1 && spec->symbol && spec->symbol->registered && spec->symbol->registered->type == 1)
2111 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*idGet->compound.declarations), MkDeclarationInst(MkInstantiation(MkSpecifierName(spec->name), MkExpIdentifier(MkIdentifier("d")), (((void *)0)))));
2115 struct Expression * exp;
2117 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*idGet->compound.declarations), MkDeclaration(CopyList(entry->dataType->qualifiers, CopySpecifier), MkListOne(MkInitDeclarator(MkDeclaratorIdentifier(MkIdentifier("d")), MkInitializerAssignment(exp = MkExpConstant("0"))))));
2118 exp->destType = __extension__ ({
2119 struct Type * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Type);
2121 __ecereInstance1->kind = 3, __ecereInstance1->refCount = 1, __ecereInstance1;
2124 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*idGet->compound.statements), MkExpressionStmt(MkListOne(MkExpCall(MkExpMember(MkExpIdentifier(MkIdentifier("r")), MkIdentifier("GetData")), args = MkList()))));
2125 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*args), MkExpIdentifier(MkIdentifier(fieldID)));
2126 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*args), MkExpIdentifier(MkIdentifier("d")));
2127 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*idGet->compound.statements), MkExpressionStmt(MkListOne(MkExpOp((((void *)0)), DELETE, MkExpIdentifier(MkIdentifier("r"))))));
2128 if(spec->type == 1 && spec->symbol && spec->symbol->registered && spec->symbol->registered->type == 1)
2130 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*idGet->compound.statements), MkExpressionStmt(MkListOne(MkExpOp(MkExpIdentifier(MkIdentifier("value")), '=', MkExpIdentifier(MkIdentifier("d"))))));
2133 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*idGet->compound.statements), MkReturnStmt(MkListOne(MkExpIdentifier(MkIdentifier("d")))));
2134 curContext = idSet->compound.context = __extension__ ({
2135 struct Context * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Context);
2137 __ecereInstance1->parent = globalContext, __ecereInstance1;
2139 __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"))))))))));
2140 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*idSet->compound.statements), MkExpressionStmt(MkListOne(MkExpCall(MkExpMember(MkExpIdentifier(MkIdentifier("r")), MkIdentifier("SetData")), args = MkList()))));
2141 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*args), MkExpIdentifier(MkIdentifier(fieldID)));
2142 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*args), MkExpIdentifier(MkIdentifier("value")));
2143 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*idSet->compound.statements), MkExpressionStmt(MkListOne(MkExpOp((((void *)0)), DELETE, MkExpIdentifier(MkIdentifier("r"))))));
2144 curContext = globalContext;
2145 def = MkClassDefProperty(MkProperty(CopyList(entry->dataType->qualifiers, CopySpecifier), CopyDeclarator(entry->dataType->declarator), CopyIdentifier(entry->id), idSet, idGet));
2146 def->propertyDef->symbol->id = def->propertyDef->symbol->idCode = symbolID;
2147 def->memberAccess = 1;
2148 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*idClassDefs), def);
2154 if(entry->items && (*entry->items).count)
2157 struct DBIndexItem * item;
2159 unsigned int needTable = 0x0;
2162 if(entry->id || indexed)
2164 if(entry->id || (*entry->items).count == 1)
2166 struct External * external;
2167 struct Identifier * id = entry->id ? entry->id : ((struct DBIndexItem *)(*entry->items).first)->id;
2169 sprintf(indexID, "__ecereDBIndex_%s_%s", tableName, id->string);
2170 external = MkExternalDeclaration(MkDeclaration(MkListOne(MkSpecifierName("Table")), MkListOne(MkInitDeclarator(MkDeclaratorIdentifier(MkIdentifier(indexID)), (((void *)0))))));
2171 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*ast), external);
2172 external->declaration->declMode = table->declMode;
2176 Compiler_Error(__ecereNameSpace__ecere__GetTranslatedString(__thisModule, "Multiple field index requires a name\n", (((void *)0))));
2181 strcpy(indexID, tableID);
2183 for(c = 0, item = (*entry->items).first; item; item = item->next, c++)
2187 sprintf(num, "%d", c);
2188 sprintf(fieldID, "__ecereDBField_%s_%s", tableName, item->id->string);
2189 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*indexStatements), MkExpressionStmt(MkListOne(MkExpOp(MkExpMember(MkExpIndex(MkExpIdentifier(MkIdentifier("indexes")), MkListOne(MkExpConstant(num))), MkIdentifier("field")), '=', MkExpIdentifier(MkIdentifier(fieldID))))));
2190 __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"))))));
2192 sprintf(num, "%d", c);
2193 numIndexes = ((numIndexes > c) ? numIndexes : c);
2197 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*indexStatements), MkExpressionStmt(MkListOne(MkExpOp(MkExpIdentifier(MkIdentifier(indexID)), '=', MkExpCall(MkExpMember(MkExpIdentifier(MkIdentifier("db")), MkIdentifier("OpenTable")), args)))));
2198 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*args), MkExpString(table->name));
2200 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*args), MkExpInstance(MkInstantiation((((void *)0)), (((void *)0)), MkListOne(MkMembersInitList(members)))));
2201 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*members), MkMemberInit((((void *)0)), MkInitializerAssignment(MkExpIdentifier(MkIdentifier("tableRows")))));
2204 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*indexStatements), MkExpressionStmt(MkListOne(MkExpCall(MkExpMember(MkExpIdentifier(MkIdentifier(indexID)), MkIdentifier("Index")), args))));
2205 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*args), MkExpConstant(num));
2206 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*args), MkExpIdentifier(MkIdentifier("indexes")));
2215 extern unsigned int inCompiler;
2217 extern void PrePreProcessClassDefinitions(void);
2219 extern struct External * curExternal;
2221 void ProcessDBTableDefinitions()
2223 struct External * external;
2225 addAfter = (((void *)0));
2226 curContext = globalContext;
2228 PrePreProcessClassDefinitions();
2229 DeclClass(0, "Field");
2230 DeclClass(0, "Table");
2231 DeclClass(0, "Row");
2234 if(ast != (((void *)0)))
2236 for(external = (*ast).first; external; external = external->next)
2238 curExternal = external;
2239 switch(external->type)
2242 ProcessDBTable(external->table);
2246 for(external = (*ast).first; external; external = external->next)
2248 curExternal = external;
2249 switch(external->type)
2252 ProcessFunction(external->function);
2255 ProcessDeclaration(external->declaration);
2258 ProcessClass(external->_class);
2263 curContext = globalContext;
2266 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__GlobalFunction;
2268 struct __ecereNameSpace__ecere__com__GlobalFunction;
2270 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);
2272 void __ecereRegisterModule_dbpass(struct __ecereNameSpace__ecere__com__Instance * module)
2274 struct __ecereNameSpace__ecere__com__Class * class;
2276 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ProcessDBTableDefinitions", "void ProcessDBTableDefinitions(void)", ProcessDBTableDefinitions, module, 1);
2279 void __ecereUnregisterModule_dbpass(struct __ecereNameSpace__ecere__com__Instance * module)