1 /* Code generated from eC source file: dbpass.ec */
3 #define __runtimePlatform 1
4 #elif defined(__APPLE__)
5 #define __runtimePlatform 3
7 #define __runtimePlatform 2
10 typedef long long int64;
11 typedef unsigned long long uint64;
15 #elif defined(__TINYC__)
17 #define __builtin_va_list va_list
18 #define __builtin_va_start va_start
19 #define __builtin_va_end va_end
21 #define strcasecmp stricmp
22 #define strncasecmp strnicmp
23 #define __declspec(x) __attribute__((x))
27 typedef long long int64;
28 typedef unsigned long long uint64;
30 typedef __int64 int64;
31 typedef unsigned __int64 uint64;
34 #define __ENDIAN_PAD(x) (8 - (x))
36 #define __ENDIAN_PAD(x) 0
39 #include <sys/types.h>
42 IDENTIFIER = 258, CONSTANT = 259, STRING_LITERAL = 260, SIZEOF = 261, PTR_OP = 262, INC_OP = 263, DEC_OP = 264, LEFT_OP = 265, RIGHT_OP = 266, LE_OP = 267, GE_OP = 268, EQ_OP = 269, NE_OP = 270, AND_OP = 271, OR_OP = 272, MUL_ASSIGN = 273, DIV_ASSIGN = 274, MOD_ASSIGN = 275, ADD_ASSIGN = 276, SUB_ASSIGN = 277, LEFT_ASSIGN = 278, RIGHT_ASSIGN = 279, AND_ASSIGN = 280, XOR_ASSIGN = 281, OR_ASSIGN = 282, TYPE_NAME = 283, TYPEDEF = 284, EXTERN = 285, STATIC = 286, AUTO = 287, REGISTER = 288, CHAR = 289, SHORT = 290, INT = 291, UINT = 292, INT64 = 293, LONG = 294, SIGNED = 295, UNSIGNED = 296, FLOAT = 297, DOUBLE = 298, CONST = 299, VOLATILE = 300, VOID = 301, VALIST = 302, STRUCT = 303, UNION = 304, ENUM = 305, ELLIPSIS = 306, CASE = 307, DEFAULT = 308, IF = 309, SWITCH = 310, WHILE = 311, DO = 312, FOR = 313, GOTO = 314, CONTINUE = 315, BREAK = 316, RETURN = 317, IFX = 318, ELSE = 319, CLASS = 320, THISCLASS = 321, CLASS_NAME = 322, PROPERTY = 323, SETPROP = 324, GETPROP = 325, NEWOP = 326, RENEW = 327, DELETE = 328, EXT_DECL = 329, EXT_STORAGE = 330, IMPORT = 331, DEFINE = 332, VIRTUAL = 333, ATTRIB = 334, PUBLIC = 335, PRIVATE = 336, TYPED_OBJECT = 337, ANY_OBJECT = 338, _INCREF = 339, EXTENSION = 340, ASM = 341, TYPEOF = 342, WATCH = 343, STOPWATCHING = 344, FIREWATCHERS = 345, WATCHABLE = 346, CLASS_DESIGNER = 347, CLASS_NO_EXPANSION = 348, CLASS_FIXED = 349, ISPROPSET = 350, CLASS_DEFAULT_PROPERTY = 351, PROPERTY_CATEGORY = 352, CLASS_DATA = 353, CLASS_PROPERTY = 354, SUBCLASS = 355, NAMESPACE = 356, NEW0OP = 357, RENEW0 = 358, VAARG = 359, DBTABLE = 360, DBFIELD = 361, DBINDEX = 362, DATABASE_OPEN = 363, ALIGNOF = 364, ATTRIB_DEP = 365, __ATTRIB = 366, BOOL = 367, _BOOL = 368, _COMPLEX = 369, _IMAGINARY = 370, RESTRICT = 371, THREAD = 372, WIDE_STRING_LITERAL = 373
45 static int numIndexes;
47 extern unsigned int inCompiler;
49 struct __ecereNameSpace__ecere__sys__OldList
56 } __attribute__ ((gcc_struct));
58 struct __ecereNameSpace__ecere__sys__BTNode;
60 struct __ecereNameSpace__ecere__com__DataValue
75 } __attribute__ ((gcc_struct)) __anon1;
76 } __attribute__ ((gcc_struct));
78 struct __ecereNameSpace__ecere__com__SerialBuffer
80 unsigned char * _buffer;
84 } __attribute__ ((gcc_struct));
86 extern void * __ecereNameSpace__ecere__com__eSystem_New(unsigned int size);
88 extern void * __ecereNameSpace__ecere__com__eSystem_New0(unsigned int size);
90 extern void * __ecereNameSpace__ecere__com__eSystem_Renew(void * memory, unsigned int size);
92 extern void * __ecereNameSpace__ecere__com__eSystem_Renew0(void * memory, unsigned int size);
94 extern void __ecereNameSpace__ecere__com__eSystem_Delete(void * memory);
110 struct TemplateParameter;
112 struct TemplateArgument;
114 struct TemplateDatatype;
122 } __attribute__ ((gcc_struct));
124 extern size_t strlen(const char * );
126 extern void * memcpy(void * , const void * , size_t size);
128 extern void __ecereNameSpace__ecere__sys__ChangeCh(char * string, char ch1, char ch2);
130 extern int sprintf(char * , const char * , ...);
132 extern void Compiler_Error(const char * format, ...);
134 extern const char * __ecereNameSpace__ecere__GetTranslatedString(const char * name, const char * string, const char * stringAndContext);
136 struct __ecereNameSpace__ecere__com__LinkList
141 } __attribute__ ((gcc_struct));
143 extern int strcmp(const char * , const char * );
145 extern char * strcpy(char * , const char * );
151 extern char * __ecereNameSpace__ecere__sys__CopyString(const char * string);
153 extern void PrePreProcessClassDefinitions(void);
155 struct __ecereNameSpace__ecere__com__GlobalFunction;
157 static struct __ecereNameSpace__ecere__sys__OldList * tableStatements, * indexStatements, * addFieldStatements;
159 extern struct __ecereNameSpace__ecere__sys__OldList * MkList(void);
161 extern struct __ecereNameSpace__ecere__sys__OldList * MkListOne(void * item);
163 extern struct __ecereNameSpace__ecere__sys__OldList * ast;
165 extern struct __ecereNameSpace__ecere__sys__OldList * CopyList(struct __ecereNameSpace__ecere__sys__OldList * source, void * (* CopyFunction)(void * ));
167 void __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add(struct __ecereNameSpace__ecere__sys__OldList * this, void * item);
169 unsigned int __ecereMethod___ecereNameSpace__ecere__sys__OldList_Insert(struct __ecereNameSpace__ecere__sys__OldList * this, void * prevItem, void * item);
171 extern struct Declarator * CopyDeclarator(struct Declarator * declarator);
175 struct CodePosition start;
176 struct CodePosition end;
177 } __attribute__ ((gcc_struct));
179 extern struct Location yylloc;
183 static struct External * addAfter;
185 extern struct External * curExternal;
189 static void ProcessIdentifier(struct Identifier * id)
193 extern struct Identifier * MkIdentifier(const char * string);
195 extern struct Declarator * MkDeclaratorIdentifier(struct Identifier * id);
197 extern struct Identifier * CopyIdentifier(struct Identifier * id);
201 extern struct Context * curContext;
203 extern struct Context * PushContext(void);
205 extern void PopContext(struct Context * ctx);
207 extern struct Context * globalContext;
209 struct __ecereNameSpace__ecere__com__Class;
211 struct __ecereNameSpace__ecere__com__Instance
214 struct __ecereNameSpace__ecere__com__Class * _class;
216 } __attribute__ ((gcc_struct));
218 extern long long __ecereNameSpace__ecere__com__eClass_GetProperty(struct __ecereNameSpace__ecere__com__Class * _class, const char * name);
220 extern void __ecereNameSpace__ecere__com__eClass_SetProperty(struct __ecereNameSpace__ecere__com__Class * _class, const char * name, long long value);
222 extern void * __ecereNameSpace__ecere__com__eInstance_New(struct __ecereNameSpace__ecere__com__Class * _class);
224 extern void __ecereNameSpace__ecere__com__eInstance_SetMethod(struct __ecereNameSpace__ecere__com__Instance * instance, const char * name, void * function);
226 extern void __ecereNameSpace__ecere__com__eInstance_IncRef(struct __ecereNameSpace__ecere__com__Instance * instance);
228 struct __ecereNameSpace__ecere__com__Property;
230 extern void __ecereNameSpace__ecere__com__eInstance_FireSelfWatchers(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property);
232 extern void __ecereNameSpace__ecere__com__eInstance_StopWatching(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property, struct __ecereNameSpace__ecere__com__Instance * object);
234 extern void __ecereNameSpace__ecere__com__eInstance_Watch(void * instance, struct __ecereNameSpace__ecere__com__Property * _property, void * object, void (* callback)(void * , void * ));
236 extern void __ecereNameSpace__ecere__com__eInstance_FireWatchers(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property);
240 extern void FreeExpContents(struct Expression * exp);
242 extern struct Expression * MkExpIdentifier(struct Identifier * id);
244 extern struct Expression * MkExpConstant(const char * string);
246 extern struct Expression * MkExpOp(struct Expression * exp1, int op, struct Expression * exp2);
248 extern struct Expression * CopyExpression(struct Expression * exp);
250 extern struct Expression * MkExpCall(struct Expression * expression, struct __ecereNameSpace__ecere__sys__OldList * arguments);
252 extern struct Expression * MkExpMember(struct Expression * expression, struct Identifier * member);
254 extern struct Declarator * MkDeclaratorArray(struct Declarator * declarator, struct Expression * exp);
256 extern struct Expression * MkExpString(const char * string);
258 extern struct Expression * MkExpClass(struct __ecereNameSpace__ecere__sys__OldList * specifiers, struct Declarator * decl);
260 extern struct Expression * MkExpIndex(struct Expression * expression, struct __ecereNameSpace__ecere__sys__OldList * index);
262 extern struct Expression * MkExpDBTable(char * table);
264 extern struct Expression * MkExpDBField(char * table, struct Identifier * id);
268 extern struct Specifier * MkSpecifierName(const char * name);
270 extern struct Specifier * MkSpecifier(int specifier);
272 extern struct Specifier * CopySpecifier(struct Specifier * spec);
276 struct Instantiation;
278 extern struct Expression * MkExpInstance(struct Instantiation * inst);
280 extern struct Instantiation * MkInstantiation(struct Specifier * _class, struct Expression * exp, struct __ecereNameSpace__ecere__sys__OldList * members);
284 extern struct Statement * MkCompoundStmt(struct __ecereNameSpace__ecere__sys__OldList * declarations, struct __ecereNameSpace__ecere__sys__OldList * statements);
286 extern struct Statement * MkIfStmt(struct __ecereNameSpace__ecere__sys__OldList * exp, struct Statement * statement, struct Statement * elseStmt);
288 extern struct Statement * MkReturnStmt(struct __ecereNameSpace__ecere__sys__OldList * exp);
290 extern struct Statement * MkExpressionStmt(struct __ecereNameSpace__ecere__sys__OldList * expressions);
292 extern struct PropertyDef * MkProperty(struct __ecereNameSpace__ecere__sys__OldList * specs, struct Declarator * decl, struct Identifier * id, struct Statement * setStmt, struct Statement * getStmt);
298 struct Statement * prev;
299 struct Statement * next;
304 struct __ecereNameSpace__ecere__sys__OldList * expressions;
307 struct Identifier * id;
308 struct Statement * stmt;
309 } __attribute__ ((gcc_struct)) labeled;
312 struct Expression * exp;
313 struct Statement * stmt;
314 } __attribute__ ((gcc_struct)) caseStmt;
317 struct __ecereNameSpace__ecere__sys__OldList * declarations;
318 struct __ecereNameSpace__ecere__sys__OldList * statements;
319 struct Context * context;
320 unsigned int isSwitch;
321 } __attribute__ ((gcc_struct)) compound;
324 struct __ecereNameSpace__ecere__sys__OldList * exp;
325 struct Statement * stmt;
326 struct Statement * elseStmt;
327 } __attribute__ ((gcc_struct)) ifStmt;
330 struct __ecereNameSpace__ecere__sys__OldList * exp;
331 struct Statement * stmt;
332 } __attribute__ ((gcc_struct)) switchStmt;
335 struct __ecereNameSpace__ecere__sys__OldList * exp;
336 struct Statement * stmt;
337 } __attribute__ ((gcc_struct)) whileStmt;
340 struct __ecereNameSpace__ecere__sys__OldList * exp;
341 struct Statement * stmt;
342 } __attribute__ ((gcc_struct)) doWhile;
345 struct Statement * init;
346 struct Statement * check;
347 struct __ecereNameSpace__ecere__sys__OldList * increment;
348 struct Statement * stmt;
349 } __attribute__ ((gcc_struct)) forStmt;
352 struct Identifier * id;
353 } __attribute__ ((gcc_struct)) gotoStmt;
356 struct Specifier * spec;
358 struct __ecereNameSpace__ecere__sys__OldList * inputFields;
359 struct __ecereNameSpace__ecere__sys__OldList * outputFields;
360 struct __ecereNameSpace__ecere__sys__OldList * clobberedFields;
361 } __attribute__ ((gcc_struct)) asmStmt;
364 struct Expression * watcher;
365 struct Expression * object;
366 struct __ecereNameSpace__ecere__sys__OldList * watches;
367 } __attribute__ ((gcc_struct)) _watch;
370 struct Identifier * id;
371 struct __ecereNameSpace__ecere__sys__OldList * exp;
372 struct __ecereNameSpace__ecere__sys__OldList * filter;
373 struct Statement * stmt;
374 } __attribute__ ((gcc_struct)) forEachStmt;
375 struct Declaration * decl;
376 } __attribute__ ((gcc_struct)) __anon1;
377 } __attribute__ ((gcc_struct));
379 extern struct Declaration * MkDeclaration(struct __ecereNameSpace__ecere__sys__OldList * specifiers, struct __ecereNameSpace__ecere__sys__OldList * initDeclarators);
381 extern struct External * MkExternalDeclaration(struct Declaration * declaration);
383 extern struct Declaration * MkDeclarationInst(struct Instantiation * inst);
387 extern struct Initializer * MkInitializerAssignment(struct Expression * exp);
389 extern struct Initializer * MkInitializerList(struct __ecereNameSpace__ecere__sys__OldList * list);
393 struct Initializer * prev;
394 struct Initializer * next;
399 struct Expression * exp;
400 struct __ecereNameSpace__ecere__sys__OldList * list;
401 } __attribute__ ((gcc_struct)) __anon1;
402 unsigned int isConstant;
403 struct Identifier * id;
404 } __attribute__ ((gcc_struct));
410 struct Specifier * prev;
411 struct Specifier * next;
419 struct ExtDecl * extDecl;
421 struct Symbol * symbol;
422 struct __ecereNameSpace__ecere__sys__OldList * templateArgs;
423 struct Specifier * nsSpec;
424 } __attribute__ ((gcc_struct)) __anon1;
427 struct Identifier * id;
428 struct __ecereNameSpace__ecere__sys__OldList * list;
429 struct __ecereNameSpace__ecere__sys__OldList * baseSpecs;
430 struct __ecereNameSpace__ecere__sys__OldList * definitions;
431 unsigned int addNameSpace;
432 struct Context * ctx;
433 struct ExtDecl * extDeclStruct;
434 } __attribute__ ((gcc_struct)) __anon2;
435 struct Expression * expression;
436 struct Specifier * _class;
437 struct TemplateParameter * templateParameter;
438 } __attribute__ ((gcc_struct)) __anon1;
439 } __attribute__ ((gcc_struct));
443 struct Identifier * prev;
444 struct Identifier * next;
446 struct Symbol * classSym;
447 struct Specifier * _class;
449 struct Identifier * badID;
450 } __attribute__ ((gcc_struct));
454 struct Declaration * prev;
455 struct Declaration * next;
462 struct __ecereNameSpace__ecere__sys__OldList * specifiers;
463 struct __ecereNameSpace__ecere__sys__OldList * declarators;
464 } __attribute__ ((gcc_struct)) __anon1;
465 struct Instantiation * inst;
468 struct Identifier * id;
469 struct Expression * exp;
470 } __attribute__ ((gcc_struct)) __anon2;
471 } __attribute__ ((gcc_struct)) __anon1;
472 struct Specifier * extStorage;
473 struct Symbol * symbol;
475 } __attribute__ ((gcc_struct));
479 struct Instantiation * prev;
480 struct Instantiation * next;
482 struct Specifier * _class;
483 struct Expression * exp;
484 struct __ecereNameSpace__ecere__sys__OldList * members;
485 struct Symbol * symbol;
486 unsigned int fullSet;
487 unsigned int isConstant;
488 unsigned char * data;
489 struct Location nameLoc;
490 struct Location insideLoc;
492 } __attribute__ ((gcc_struct));
496 struct PropertyDef * prev;
497 struct PropertyDef * next;
499 struct __ecereNameSpace__ecere__sys__OldList * specifiers;
500 struct Declarator * declarator;
501 struct Identifier * id;
502 struct Statement * getStmt;
503 struct Statement * setStmt;
504 struct Statement * issetStmt;
505 struct Symbol * symbol;
506 struct Expression * category;
509 unsigned int conversion : 1;
510 unsigned int isWatchable : 1;
511 unsigned int isDBProp : 1;
512 } __attribute__ ((gcc_struct)) __anon1;
513 } __attribute__ ((gcc_struct));
518 struct Symbol * symbol;
519 struct __ecereNameSpace__ecere__sys__OldList * definitions;
521 } __attribute__ ((gcc_struct));
523 extern struct Symbol * DeclClass(struct Specifier * _class, const char * name);
527 extern struct MembersInit * MkMembersInitList(struct __ecereNameSpace__ecere__sys__OldList * dataMembers);
531 extern struct ClassDef * MkClassDefDefaultProperty(struct __ecereNameSpace__ecere__sys__OldList * defProperties);
533 extern struct ClassDef * MkClassDefProperty(struct PropertyDef * propertyDef);
535 extern struct ClassDef * MkClassDefClassPropertyValue(struct Identifier * id, struct Initializer * initializer);
537 struct __ecereNameSpace__ecere__sys__BinaryTree;
539 struct __ecereNameSpace__ecere__sys__BinaryTree
541 struct __ecereNameSpace__ecere__sys__BTNode * root;
543 int (* CompareKey)(struct __ecereNameSpace__ecere__sys__BinaryTree * tree, uintptr_t a, uintptr_t b);
544 void (* FreeKey)(void * key);
545 } __attribute__ ((gcc_struct));
547 struct ClassDefinition;
549 struct ClassDefinition
551 struct ClassDefinition * prev;
552 struct ClassDefinition * next;
554 struct Specifier * _class;
555 struct __ecereNameSpace__ecere__sys__OldList * baseSpecs;
556 struct __ecereNameSpace__ecere__sys__OldList * definitions;
557 struct Symbol * symbol;
558 struct Location blockStart;
559 struct Location nameLoc;
561 unsigned int deleteWatchable;
562 } __attribute__ ((gcc_struct));
564 extern struct ClassDefinition * MkClass(struct Symbol * symbol, struct __ecereNameSpace__ecere__sys__OldList * baseSpecs, struct __ecereNameSpace__ecere__sys__OldList * definitions);
566 extern struct External * MkExternalClass(struct ClassDefinition * _class);
570 struct Context * parent;
571 struct __ecereNameSpace__ecere__sys__BinaryTree types;
572 struct __ecereNameSpace__ecere__sys__BinaryTree classes;
573 struct __ecereNameSpace__ecere__sys__BinaryTree symbols;
574 struct __ecereNameSpace__ecere__sys__BinaryTree structSymbols;
577 struct __ecereNameSpace__ecere__sys__BinaryTree templateTypes;
578 struct ClassDefinition * classDef;
579 unsigned int templateTypesOnly;
580 unsigned int hasNameSpace;
581 } __attribute__ ((gcc_struct));
589 struct DBIndexItem * prev;
590 struct DBIndexItem * next;
591 struct Identifier * id;
593 } __attribute__ ((gcc_struct));
595 struct __ecereNameSpace__ecere__com__Method;
597 struct __ecereNameSpace__ecere__com__Module;
599 extern struct __ecereNameSpace__ecere__com__GlobalFunction * __ecereNameSpace__ecere__com__eSystem_RegisterFunction(const char * name, const char * type, void * func, struct __ecereNameSpace__ecere__com__Instance * module, int declMode);
603 struct __ecereNameSpace__ecere__com__Property
605 struct __ecereNameSpace__ecere__com__Property * prev;
606 struct __ecereNameSpace__ecere__com__Property * next;
608 unsigned int isProperty;
611 struct __ecereNameSpace__ecere__com__Class * _class;
612 const char * dataTypeString;
613 struct __ecereNameSpace__ecere__com__Class * dataTypeClass;
614 struct Type * dataType;
615 void (* Set)(void * , int);
616 int (* Get)(void * );
617 unsigned int (* IsSet)(void * );
621 unsigned int conversion;
622 unsigned int watcherOffset;
623 const char * category;
624 unsigned int compiled;
625 unsigned int selfWatchable;
626 unsigned int isWatchable;
627 } __attribute__ ((gcc_struct));
629 struct __ecereNameSpace__ecere__com__Method
632 struct __ecereNameSpace__ecere__com__Method * parent;
633 struct __ecereNameSpace__ecere__com__Method * left;
634 struct __ecereNameSpace__ecere__com__Method * right;
639 struct __ecereNameSpace__ecere__com__Class * _class;
641 const char * dataTypeString;
642 struct Type * dataType;
644 } __attribute__ ((gcc_struct));
649 struct Symbol * parent;
650 struct Symbol * left;
651 struct Symbol * right;
656 struct __ecereNameSpace__ecere__com__Method * method;
657 struct __ecereNameSpace__ecere__com__Property * _property;
658 struct __ecereNameSpace__ecere__com__Class * registered;
659 } __attribute__ ((gcc_struct)) __anon1;
660 unsigned int notYetDeclared;
665 struct External * pointerExternal;
666 struct External * structExternal;
667 } __attribute__ ((gcc_struct)) __anon1;
670 struct External * externalGet;
671 struct External * externalSet;
672 struct External * externalPtr;
673 struct External * externalIsSet;
674 } __attribute__ ((gcc_struct)) __anon2;
677 struct External * methodExternal;
678 struct External * methodCodeExternal;
679 } __attribute__ ((gcc_struct)) __anon3;
680 } __attribute__ ((gcc_struct)) __anon2;
681 unsigned int imported;
682 unsigned int declaredStructSym;
683 struct __ecereNameSpace__ecere__com__Class * _class;
684 unsigned int declaredStruct;
685 unsigned int needConstructor;
686 unsigned int needDestructor;
687 char * constructorName;
690 char * destructorName;
691 struct ModuleImport * module;
692 struct ClassImport * _import;
693 struct Location nameLoc;
694 unsigned int isParam;
695 unsigned int isRemote;
696 unsigned int isStruct;
697 unsigned int fireWatchersDone;
699 unsigned int classData;
700 unsigned int isStatic;
702 struct __ecereNameSpace__ecere__sys__OldList * templateParams;
703 struct __ecereNameSpace__ecere__sys__OldList templatedClasses;
704 struct Context * ctx;
706 struct Expression * propCategory;
707 unsigned int mustRegister;
708 } __attribute__ ((gcc_struct));
717 struct Symbol * _class;
720 struct __ecereNameSpace__ecere__sys__OldList members;
722 } __attribute__ ((gcc_struct)) __anon1;
725 struct Type * returnType;
726 struct __ecereNameSpace__ecere__sys__OldList params;
727 struct Symbol * thisClass;
728 unsigned int staticMethod;
729 struct TemplateParameter * thisClassTemplate;
730 } __attribute__ ((gcc_struct)) __anon2;
733 struct __ecereNameSpace__ecere__com__Method * method;
734 struct __ecereNameSpace__ecere__com__Class * methodClass;
735 struct __ecereNameSpace__ecere__com__Class * usedClass;
736 } __attribute__ ((gcc_struct)) __anon3;
739 struct Type * arrayType;
741 struct Expression * arraySizeExp;
742 unsigned int freeExp;
743 struct Symbol * enumClass;
744 } __attribute__ ((gcc_struct)) __anon4;
746 struct TemplateParameter * templateParameter;
747 } __attribute__ ((gcc_struct)) __anon1;
752 struct __ecereNameSpace__ecere__com__Class * thisClassFrom;
758 unsigned int isSigned : 1;
759 unsigned int constant : 1;
760 unsigned int truth : 1;
761 unsigned int byReference : 1;
762 unsigned int extraParam : 1;
763 unsigned int directClassAccess : 1;
764 unsigned int computing : 1;
765 unsigned int keepCast : 1;
766 unsigned int passAsTemplate : 1;
767 unsigned int dllExport : 1;
768 unsigned int attrStdcall : 1;
769 unsigned int declaredWithStruct : 1;
770 unsigned int typedByReference : 1;
771 unsigned int casted : 1;
772 unsigned int pointerAlignment : 1;
773 } __attribute__ ((gcc_struct));
779 struct Expression * prev;
780 struct Expression * next;
788 struct Identifier * identifier;
789 } __attribute__ ((gcc_struct)) __anon1;
790 struct Statement * compound;
791 struct Instantiation * instance;
795 unsigned int intlString;
796 unsigned int wideString;
797 } __attribute__ ((gcc_struct)) __anon2;
798 struct __ecereNameSpace__ecere__sys__OldList * list;
801 struct __ecereNameSpace__ecere__sys__OldList * specifiers;
802 struct Declarator * decl;
803 } __attribute__ ((gcc_struct)) _classExp;
806 struct Identifier * id;
807 } __attribute__ ((gcc_struct)) classData;
810 struct Expression * exp;
811 struct __ecereNameSpace__ecere__sys__OldList * arguments;
812 struct Location argLoc;
813 } __attribute__ ((gcc_struct)) call;
816 struct Expression * exp;
817 struct __ecereNameSpace__ecere__sys__OldList * index;
818 } __attribute__ ((gcc_struct)) index;
821 struct Expression * exp;
822 struct Identifier * member;
824 unsigned int thisPtr;
825 } __attribute__ ((gcc_struct)) member;
829 struct Expression * exp1;
830 struct Expression * exp2;
831 } __attribute__ ((gcc_struct)) op;
832 struct TypeName * typeName;
833 struct Specifier * _class;
836 struct TypeName * typeName;
837 struct Expression * exp;
838 } __attribute__ ((gcc_struct)) cast;
841 struct Expression * cond;
842 struct __ecereNameSpace__ecere__sys__OldList * exp;
843 struct Expression * elseExp;
844 } __attribute__ ((gcc_struct)) cond;
847 struct TypeName * typeName;
848 struct Expression * size;
849 } __attribute__ ((gcc_struct)) _new;
852 struct TypeName * typeName;
853 struct Expression * size;
854 struct Expression * exp;
855 } __attribute__ ((gcc_struct)) _renew;
859 struct Identifier * id;
860 } __attribute__ ((gcc_struct)) db;
863 struct Expression * ds;
864 struct Expression * name;
865 } __attribute__ ((gcc_struct)) dbopen;
868 struct TypeName * typeName;
869 struct Initializer * initializer;
870 } __attribute__ ((gcc_struct)) initializer;
873 struct Expression * exp;
874 struct TypeName * typeName;
875 } __attribute__ ((gcc_struct)) vaArg;
876 } __attribute__ ((gcc_struct)) __anon1;
877 unsigned int debugValue;
878 struct __ecereNameSpace__ecere__com__DataValue val;
880 unsigned int hasAddress;
881 struct Type * expType;
882 struct Type * destType;
885 unsigned int byReference;
886 unsigned int isConstant;
887 unsigned int addedThis;
888 unsigned int needCast;
889 unsigned int thisPtr;
890 unsigned int opDestType;
891 unsigned int needTemplateCast;
892 } __attribute__ ((gcc_struct));
896 struct DBTableEntry * prev;
897 struct DBTableEntry * next;
899 struct Identifier * id;
904 struct TypeName * dataType;
906 } __attribute__ ((gcc_struct)) __anon1;
907 struct __ecereNameSpace__ecere__sys__OldList * items;
908 } __attribute__ ((gcc_struct)) __anon1;
909 } __attribute__ ((gcc_struct));
913 struct TypeName * prev;
914 struct TypeName * next;
916 struct __ecereNameSpace__ecere__sys__OldList * qualifiers;
917 struct Declarator * declarator;
919 struct Expression * bitCount;
920 } __attribute__ ((gcc_struct));
922 struct PropertyWatch;
926 struct PropertyWatch * prev;
927 struct PropertyWatch * next;
929 struct Statement * compound;
930 struct __ecereNameSpace__ecere__sys__OldList * properties;
931 unsigned int deleteWatch;
932 } __attribute__ ((gcc_struct));
938 struct MemberInit * prev;
939 struct MemberInit * next;
941 struct Location realLoc;
942 struct __ecereNameSpace__ecere__sys__OldList * identifiers;
943 struct Initializer * initializer;
945 unsigned int variable;
946 unsigned int takeOutExp;
947 } __attribute__ ((gcc_struct));
949 extern struct MemberInit * MkMemberInit(struct __ecereNameSpace__ecere__sys__OldList * ids, struct Initializer * initializer);
951 extern struct MemberInit * MkMemberInitExp(struct Expression * idExp, struct Initializer * initializer);
953 struct InitDeclarator;
955 extern struct InitDeclarator * MkInitDeclarator(struct Declarator * declarator, struct Initializer * initializer);
957 struct InitDeclarator
959 struct InitDeclarator * prev;
960 struct InitDeclarator * next;
962 struct Declarator * declarator;
963 struct Initializer * initializer;
964 } __attribute__ ((gcc_struct));
966 static void ProcessExpression(struct Expression * exp);
968 static void ProcessInitializer(struct Initializer * initializer)
970 switch(initializer->type)
974 struct Initializer * init;
976 for(init = (*initializer->__anon1.list).first; init; init = init->next)
978 ProcessInitializer(init);
983 ProcessExpression(initializer->__anon1.exp);
988 static void ProcessInitDeclarator(struct InitDeclarator * decl)
990 if(decl->initializer)
991 ProcessInitializer(decl->initializer);
994 static void ProcessMemberInit(struct MemberInit * init)
996 if(init->initializer)
998 ProcessInitializer(init->initializer);
1002 static void ProcessStatement(struct Statement * stmt);
1004 static void ProcessProperty(struct PropertyDef * def)
1008 ProcessStatement(def->getStmt);
1012 ProcessStatement(def->setStmt);
1016 struct ClassFunction;
1020 struct ClassDef * prev;
1021 struct ClassDef * next;
1022 struct Location loc;
1026 struct Declaration * decl;
1027 struct ClassFunction * function;
1028 struct __ecereNameSpace__ecere__sys__OldList * defProperties;
1029 struct PropertyDef * propertyDef;
1030 struct PropertyWatch * propertyWatch;
1032 struct Identifier * defaultProperty;
1035 struct Identifier * id;
1036 struct Initializer * initializer;
1037 } __attribute__ ((gcc_struct)) __anon1;
1038 } __attribute__ ((gcc_struct)) __anon1;
1041 } __attribute__ ((gcc_struct));
1045 struct MembersInit * prev;
1046 struct MembersInit * next;
1047 struct Location loc;
1051 struct __ecereNameSpace__ecere__sys__OldList * dataMembers;
1052 struct ClassFunction * function;
1053 } __attribute__ ((gcc_struct)) __anon1;
1054 } __attribute__ ((gcc_struct));
1056 struct ClassFunction
1058 struct ClassFunction * prev;
1059 struct ClassFunction * next;
1060 struct Location loc;
1061 struct __ecereNameSpace__ecere__sys__OldList * specifiers;
1062 struct Declarator * declarator;
1063 struct __ecereNameSpace__ecere__sys__OldList * declarations;
1064 struct Statement * body;
1065 struct __ecereNameSpace__ecere__com__Class * _class;
1066 struct __ecereNameSpace__ecere__sys__OldList attached;
1069 struct Symbol * propSet;
1070 unsigned int isVirtual;
1071 unsigned int isConstructor;
1072 unsigned int isDestructor;
1073 unsigned int dontMangle;
1076 } __attribute__ ((gcc_struct));
1078 static void ProcessClassFunction(struct ClassFunction * func)
1082 ProcessStatement(func->body);
1086 static void ProcessInstance(struct Instantiation * inst)
1090 struct MembersInit * init;
1091 struct MemberInit * memberInit;
1093 for(init = (*inst->members).first; init; init = init->next)
1095 if(init->type == 0 && init->__anon1.dataMembers)
1097 for(memberInit = (*init->__anon1.dataMembers).first; memberInit; memberInit = memberInit->next)
1099 ProcessMemberInit(memberInit);
1104 ProcessClassFunction(init->__anon1.function);
1110 struct __ecereNameSpace__ecere__com__NameSpace;
1112 struct __ecereNameSpace__ecere__com__NameSpace
1115 struct __ecereNameSpace__ecere__com__NameSpace * btParent;
1116 struct __ecereNameSpace__ecere__com__NameSpace * left;
1117 struct __ecereNameSpace__ecere__com__NameSpace * right;
1119 struct __ecereNameSpace__ecere__com__NameSpace * parent;
1120 struct __ecereNameSpace__ecere__sys__BinaryTree nameSpaces;
1121 struct __ecereNameSpace__ecere__sys__BinaryTree classes;
1122 struct __ecereNameSpace__ecere__sys__BinaryTree defines;
1123 struct __ecereNameSpace__ecere__sys__BinaryTree functions;
1124 } __attribute__ ((gcc_struct));
1126 struct __ecereNameSpace__ecere__com__Application
1129 const char * * argv;
1131 unsigned int isGUIApp;
1132 struct __ecereNameSpace__ecere__sys__OldList allModules;
1133 char * parsedCommand;
1134 struct __ecereNameSpace__ecere__com__NameSpace systemNameSpace;
1135 } __attribute__ ((gcc_struct));
1137 struct __ecereNameSpace__ecere__com__Module
1139 struct __ecereNameSpace__ecere__com__Instance * application;
1140 struct __ecereNameSpace__ecere__sys__OldList classes;
1141 struct __ecereNameSpace__ecere__sys__OldList defines;
1142 struct __ecereNameSpace__ecere__sys__OldList functions;
1143 struct __ecereNameSpace__ecere__sys__OldList modules;
1144 struct __ecereNameSpace__ecere__com__Instance * prev;
1145 struct __ecereNameSpace__ecere__com__Instance * next;
1151 struct __ecereNameSpace__ecere__com__NameSpace privateNameSpace;
1152 struct __ecereNameSpace__ecere__com__NameSpace publicNameSpace;
1153 } __attribute__ ((gcc_struct));
1155 void __ecereUnregisterModule_dbpass(struct __ecereNameSpace__ecere__com__Instance * module)
1160 struct FunctionDefinition;
1162 typedef union YYSTYPE
1167 struct Identifier * id;
1168 struct Expression * exp;
1169 struct Specifier * specifier;
1170 struct __ecereNameSpace__ecere__sys__OldList * list;
1171 struct Enumerator * enumerator;
1172 struct Declarator * declarator;
1173 struct Pointer * pointer;
1174 struct Initializer * initializer;
1175 struct InitDeclarator * initDeclarator;
1176 struct TypeName * typeName;
1177 struct Declaration * declaration;
1178 struct Statement * stmt;
1179 struct FunctionDefinition * function;
1180 struct External * external;
1181 struct Context * context;
1182 struct AsmField * asmField;
1183 struct Attrib * attrib;
1184 struct ExtDecl * extDecl;
1185 struct Attribute * attribute;
1186 struct Instantiation * instance;
1187 struct MembersInit * membersInit;
1188 struct MemberInit * memberInit;
1189 struct ClassFunction * classFunction;
1190 struct ClassDefinition * _class;
1191 struct ClassDef * classDef;
1192 struct PropertyDef * prop;
1194 struct Symbol * symbol;
1195 struct PropertyWatch * propertyWatch;
1196 struct TemplateParameter * templateParameter;
1197 struct TemplateArgument * templateArgument;
1198 struct TemplateDatatype * templateDatatype;
1199 struct DBTableEntry * dbtableEntry;
1200 struct DBIndexItem * dbindexItem;
1201 struct DBTableDef * dbtableDef;
1202 } __attribute__ ((gcc_struct)) YYSTYPE;
1204 extern YYSTYPE yylval;
1206 struct FunctionDefinition
1208 struct FunctionDefinition * prev;
1209 struct FunctionDefinition * next;
1210 struct Location loc;
1211 struct __ecereNameSpace__ecere__sys__OldList * specifiers;
1212 struct Declarator * declarator;
1213 struct __ecereNameSpace__ecere__sys__OldList * declarations;
1214 struct Statement * body;
1215 struct __ecereNameSpace__ecere__com__Class * _class;
1216 struct __ecereNameSpace__ecere__sys__OldList attached;
1219 struct Symbol * propSet;
1221 unsigned int propertyNoThis;
1222 } __attribute__ ((gcc_struct));
1226 struct External * prev;
1227 struct External * next;
1228 struct Location loc;
1230 struct Symbol * symbol;
1233 struct FunctionDefinition * function;
1234 struct ClassDefinition * _class;
1235 struct Declaration * declaration;
1236 char * importString;
1237 struct Identifier * id;
1238 struct DBTableDef * table;
1239 } __attribute__ ((gcc_struct)) __anon1;
1241 struct External * fwdDecl;
1242 struct __ecereNameSpace__ecere__com__Instance * outgoing;
1243 struct __ecereNameSpace__ecere__com__Instance * incoming;
1244 int nonBreakableIncoming;
1245 } __attribute__ ((gcc_struct));
1247 static void ProcessFunction(struct FunctionDefinition * func)
1251 ProcessStatement(func->body);
1255 struct __ecereNameSpace__ecere__com__DataMember;
1257 struct __ecereNameSpace__ecere__com__ClassTemplateArgument
1263 const char * dataTypeString;
1264 struct __ecereNameSpace__ecere__com__Class * dataTypeClass;
1265 } __attribute__ ((gcc_struct)) __anon1;
1266 struct __ecereNameSpace__ecere__com__DataValue expression;
1269 const char * memberString;
1272 struct __ecereNameSpace__ecere__com__DataMember * member;
1273 struct __ecereNameSpace__ecere__com__Property * prop;
1274 struct __ecereNameSpace__ecere__com__Method * method;
1275 } __attribute__ ((gcc_struct)) __anon1;
1276 } __attribute__ ((gcc_struct)) __anon2;
1277 } __attribute__ ((gcc_struct)) __anon1;
1278 } __attribute__ ((gcc_struct));
1280 struct __ecereNameSpace__ecere__com__DataMember
1282 struct __ecereNameSpace__ecere__com__DataMember * prev;
1283 struct __ecereNameSpace__ecere__com__DataMember * next;
1285 unsigned int isProperty;
1288 struct __ecereNameSpace__ecere__com__Class * _class;
1289 const char * dataTypeString;
1290 struct __ecereNameSpace__ecere__com__Class * dataTypeClass;
1291 struct Type * dataType;
1295 struct __ecereNameSpace__ecere__sys__OldList members;
1296 struct __ecereNameSpace__ecere__sys__BinaryTree membersAlpha;
1298 short structAlignment;
1299 short pointerAlignment;
1300 } __attribute__ ((gcc_struct));
1302 struct __ecereNameSpace__ecere__com__Class
1304 struct __ecereNameSpace__ecere__com__Class * prev;
1305 struct __ecereNameSpace__ecere__com__Class * next;
1311 unsigned int (* Constructor)(void * );
1312 void (* Destructor)(void * );
1315 struct __ecereNameSpace__ecere__com__Class * base;
1316 struct __ecereNameSpace__ecere__sys__BinaryTree methods;
1317 struct __ecereNameSpace__ecere__sys__BinaryTree members;
1318 struct __ecereNameSpace__ecere__sys__BinaryTree prop;
1319 struct __ecereNameSpace__ecere__sys__OldList membersAndProperties;
1320 struct __ecereNameSpace__ecere__sys__BinaryTree classProperties;
1321 struct __ecereNameSpace__ecere__sys__OldList derivatives;
1325 struct __ecereNameSpace__ecere__com__Instance * module;
1326 struct __ecereNameSpace__ecere__com__NameSpace * nameSpace;
1327 const char * dataTypeString;
1328 struct Type * dataType;
1330 int defaultAlignment;
1331 void (* Initialize)();
1333 struct __ecereNameSpace__ecere__sys__OldList selfWatchers;
1334 const char * designerClass;
1335 unsigned int noExpansion;
1336 const char * defaultProperty;
1337 unsigned int comRedefinition;
1340 unsigned int internalDecl;
1342 unsigned int computeSize;
1343 short structAlignment;
1344 short pointerAlignment;
1345 int destructionWatchOffset;
1347 struct __ecereNameSpace__ecere__sys__OldList delayedCPValues;
1348 int inheritanceAccess;
1349 const char * fullName;
1351 struct __ecereNameSpace__ecere__sys__OldList conversions;
1352 struct __ecereNameSpace__ecere__sys__OldList templateParams;
1353 struct __ecereNameSpace__ecere__com__ClassTemplateArgument * templateArgs;
1354 struct __ecereNameSpace__ecere__com__Class * templateClass;
1355 struct __ecereNameSpace__ecere__sys__OldList templatized;
1357 unsigned int isInstanceClass;
1358 unsigned int byValueSystemClass;
1359 } __attribute__ ((gcc_struct));
1361 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Context;
1363 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Type;
1365 static void ProcessExpression(struct Expression * exp)
1370 ProcessExpression(exp->__anon1._new.size);
1373 ProcessExpression(exp->__anon1._renew.exp);
1374 ProcessExpression(exp->__anon1._renew.size);
1379 ProcessIdentifier(exp->__anon1.__anon1.identifier);
1382 ProcessInstance(exp->__anon1.instance);
1387 if(exp->__anon1.op.exp1)
1389 ProcessExpression(exp->__anon1.op.exp1);
1391 if(exp->__anon1.op.exp2)
1393 ProcessExpression(exp->__anon1.op.exp2);
1398 struct Expression * expression;
1400 for(expression = (*exp->__anon1.list).first; expression; expression = expression->next)
1402 ProcessExpression(expression);
1408 struct Expression * expression;
1410 ProcessExpression(exp->__anon1.index.exp);
1411 for(expression = (*exp->__anon1.index.index).first; expression; expression = expression->next)
1413 ProcessExpression(expression);
1419 ProcessExpression(exp->__anon1.call.exp);
1420 if(exp->__anon1.call.arguments)
1422 struct Expression * expression;
1424 for(expression = (*exp->__anon1.call.arguments).first; expression; expression = expression->next)
1426 ProcessExpression(expression);
1432 ProcessExpression(exp->__anon1.member.exp);
1435 ProcessExpression(exp->__anon1.member.exp);
1440 ProcessExpression(exp->__anon1.cast.exp);
1443 ProcessExpression(exp->__anon1.cond.cond);
1445 struct Expression * expression;
1447 for(expression = (*exp->__anon1.cond.exp).first; expression; expression = expression->next)
1449 ProcessExpression(expression);
1452 ProcessExpression(exp->__anon1.cond.elseExp);
1458 char tableName[1024];
1460 int len = strlen(exp->__anon1.db.table);
1462 memcpy(tableName, exp->__anon1.db.table + 1, len - 2);
1463 tableName[len - 2] = (char)0;
1464 __ecereNameSpace__ecere__sys__ChangeCh(tableName, ' ', '_');
1465 sprintf(name, "__ecereDBField_%s_%s", tableName, exp->__anon1.db.id->string);
1466 FreeExpContents(exp);
1468 exp->__anon1.__anon1.identifier = MkIdentifier(name);
1473 char tableName[1024];
1475 int len = strlen(exp->__anon1.db.table);
1477 memcpy(tableName, exp->__anon1.db.table + 1, len - 2);
1478 tableName[len - 2] = (char)0;
1479 __ecereNameSpace__ecere__sys__ChangeCh(tableName, ' ', '_');
1480 sprintf(name, "__ecereDBTable_%s", tableName);
1481 FreeExpContents(exp);
1483 exp->__anon1.__anon1.identifier = MkIdentifier(name);
1488 char tableName[1024];
1490 int len = strlen(exp->__anon1.db.table);
1492 memcpy(tableName, exp->__anon1.db.table + 1, len - 2);
1493 tableName[len - 2] = (char)0;
1494 __ecereNameSpace__ecere__sys__ChangeCh(tableName, ' ', '_');
1495 sprintf(name, "__ecereDBIndex_%s_%s", tableName, exp->__anon1.db.id->string);
1496 FreeExpContents(exp);
1498 exp->__anon1.__anon1.identifier = MkIdentifier(name);
1505 struct Statement * databaseOpenStmt = MkCompoundStmt(MkList(), MkList());
1506 struct Statement * compound;
1507 struct Statement * ifDBStmt;
1508 struct __ecereNameSpace__ecere__sys__OldList * args;
1509 char numIndexesString[16];
1511 databaseOpenStmt->__anon1.compound.context = __extension__ ({
1512 struct Context * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Context);
1514 __ecereInstance1->parent = curContext, __ecereInstance1;
1516 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*databaseOpenStmt->__anon1.compound.declarations), MkDeclaration(MkListOne(MkSpecifierName("Database")), MkListOne(MkInitDeclarator(MkDeclaratorIdentifier(MkIdentifier("db")), (((void *)0))))));
1518 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*args), MkSpecifier(STATIC));
1519 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*args), MkSpecifierName("bool"));
1520 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*databaseOpenStmt->__anon1.compound.declarations), MkDeclaration(args, MkListOne(MkInitDeclarator(MkDeclaratorIdentifier(MkIdentifier("initialized")), MkInitializerAssignment(MkExpIdentifier(MkIdentifier("false")))))));
1521 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*databaseOpenStmt->__anon1.compound.statements), MkIfStmt(MkListOne(MkExpIdentifier(MkIdentifier("initialized"))), MkReturnStmt(MkListOne(MkExpConstant("0"))), (((void *)0))));
1522 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*databaseOpenStmt->__anon1.compound.statements), MkExpressionStmt(MkListOne(MkExpOp(MkExpIdentifier(MkIdentifier("initialized")), '=', MkExpIdentifier(MkIdentifier("true"))))));
1524 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*args), CopyExpression(exp->__anon1.dbopen.name));
1525 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*args), MkExpIdentifier(MkIdentifier("no")));
1526 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*databaseOpenStmt->__anon1.compound.statements), MkExpressionStmt(MkListOne(MkExpOp(MkExpIdentifier(MkIdentifier("db")), '=', MkExpCall(MkExpMember(CopyExpression(exp->__anon1.dbopen.ds), MkIdentifier("OpenDatabase")), args)))));
1527 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*databaseOpenStmt->__anon1.compound.statements), MkIfStmt(MkListOne(MkExpOp((((void *)0)), '!', MkExpIdentifier(MkIdentifier("db")))), compound = MkCompoundStmt((((void *)0)), MkList()), (((void *)0))));
1528 compound->__anon1.compound.context = __extension__ ({
1529 struct Context * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Context);
1531 __ecereInstance1->parent = databaseOpenStmt->__anon1.compound.context, __ecereInstance1;
1534 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*args), exp->__anon1.dbopen.name);
1535 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*args), MkExpIdentifier(MkIdentifier("create")));
1536 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*compound->__anon1.compound.statements), MkExpressionStmt(MkListOne(MkExpOp(MkExpIdentifier(MkIdentifier("db")), '=', MkExpCall(MkExpMember(exp->__anon1.dbopen.ds, MkIdentifier("OpenDatabase")), args)))));
1537 exp->__anon1.dbopen.name = (((void *)0));
1538 exp->__anon1.dbopen.ds = (((void *)0));
1539 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*databaseOpenStmt->__anon1.compound.statements), MkIfStmt(MkListOne(MkExpIdentifier(MkIdentifier("db"))), ifDBStmt = MkCompoundStmt(MkList(), MkList()), (((void *)0))));
1540 ifDBStmt->__anon1.compound.context = __extension__ ({
1541 struct Context * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Context);
1543 __ecereInstance1->parent = databaseOpenStmt->__anon1.compound.context, __ecereInstance1;
1545 sprintf(numIndexesString, "%d", numIndexes);
1546 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*ifDBStmt->__anon1.compound.declarations), MkDeclaration(MkListOne(MkSpecifierName("FieldIndex")), MkListOne(MkInitDeclarator(MkDeclaratorArray(MkDeclaratorIdentifier(MkIdentifier("indexes")), MkExpConstant(numIndexesString)), MkInitializerList(MkListOne(MkInitializerList(MkListOne(MkInitializerAssignment(MkExpIdentifier(MkIdentifier("null")))))))))));
1547 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*ifDBStmt->__anon1.compound.statements), MkExpressionStmt(MkListOne(MkExpCall(MkExpMember(MkExpIdentifier(MkIdentifier("db")), MkIdentifier("Begin")), MkList()))));
1548 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*ifDBStmt->__anon1.compound.statements), compound = MkCompoundStmt((((void *)0)), tableStatements));
1549 compound->__anon1.compound.context = __extension__ ({
1550 struct Context * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Context);
1552 __ecereInstance1->parent = ifDBStmt->__anon1.compound.context, __ecereInstance1;
1554 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*ifDBStmt->__anon1.compound.statements), (compound = MkCompoundStmt((((void *)0)), addFieldStatements), compound->__anon1.compound.context = __extension__ ({
1555 struct Context * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Context);
1557 __ecereInstance1->parent = ifDBStmt->__anon1.compound.context, __ecereInstance1;
1559 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*ifDBStmt->__anon1.compound.statements), compound = MkCompoundStmt((((void *)0)), indexStatements));
1560 compound->__anon1.compound.context = __extension__ ({
1561 struct Context * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Context);
1563 __ecereInstance1->parent = ifDBStmt->__anon1.compound.context, __ecereInstance1;
1565 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*ifDBStmt->__anon1.compound.statements), MkExpressionStmt(MkListOne(MkExpCall(MkExpMember(MkExpIdentifier(MkIdentifier("db")), MkIdentifier("Commit")), MkList()))));
1567 exp->__anon1.compound = databaseOpenStmt;
1568 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*databaseOpenStmt->__anon1.compound.statements), MkExpressionStmt(MkListOne(MkExpIdentifier(MkIdentifier("db")))));
1569 tableStatements = (((void *)0));
1573 FreeExpContents(exp);
1574 Compiler_Error(__ecereNameSpace__ecere__GetTranslatedString("ec", "No database table defined in this module or database_open already used.\n", (((void *)0))));
1582 static void ProcessDBTable(struct DBTableDef * table)
1584 struct __ecereNameSpace__ecere__sys__OldList * rowClassDefs = MkList(), * idClassDefs = (((void *)0));
1585 char tableName[1024];
1586 char rowClassName[1024];
1587 int len = strlen(table->name);
1588 unsigned int indexed = 0;
1590 char nameField[1024];
1591 struct __ecereNameSpace__ecere__sys__OldList * args;
1592 struct __ecereNameSpace__ecere__sys__OldList * members;
1595 idClassDefs = MkList();
1596 nameField[0] = (char)0;
1597 memcpy(tableName, table->name + 1, len - 2);
1598 tableName[len - 2] = (char)0;
1599 __ecereNameSpace__ecere__sys__ChangeCh(tableName, ' ', '_');
1600 sprintf(tableID, "__ecereDBTable_%s", tableName);
1601 sprintf(rowClassName, "Row%s", tableName);
1602 __ecereNameSpace__ecere__sys__ChangeCh(rowClassName, ' ', '_');
1603 if(!tableStatements)
1605 tableStatements = MkList();
1606 indexStatements = MkList();
1607 addFieldStatements = MkList();
1610 struct External * external;
1612 external = MkExternalDeclaration(MkDeclaration(MkListOne(MkSpecifierName("Table")), MkListOne(MkInitDeclarator(MkDeclaratorIdentifier(MkIdentifier(tableID)), (((void *)0))))));
1613 external->__anon1.declaration->declMode = table->declMode;
1614 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Insert((&*ast), addAfter, external);
1616 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*tableStatements), MkExpressionStmt(MkListOne(MkExpOp(MkExpIdentifier(MkIdentifier(tableID)), '=', MkExpCall(MkExpMember(MkExpIdentifier(MkIdentifier("db")), MkIdentifier("OpenTable")), args)))));
1617 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*args), MkExpString(table->name));
1619 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*args), MkExpInstance(MkInstantiation((((void *)0)), (((void *)0)), MkListOne(MkMembersInitList(members)))));
1620 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*members), MkMemberInit((((void *)0)), MkInitializerAssignment(MkExpIdentifier(MkIdentifier("tableRows")))));
1621 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*members), MkMemberInit((((void *)0)), MkInitializerAssignment(MkExpIdentifier(MkIdentifier("create")))));
1624 struct ClassDefinition * _class;
1625 struct ClassDef * def;
1626 struct External * external;
1627 struct __ecereNameSpace__ecere__sys__OldList * inheritanceSpecs = MkList();
1629 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*inheritanceSpecs), MkSpecifier(PRIVATE));
1630 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*inheritanceSpecs), MkSpecifierName("Row"));
1632 _class = MkClass(DeclClass((((void *)0)), rowClassName), inheritanceSpecs, rowClassDefs);
1633 PopContext(curContext);
1634 def = MkClassDefDefaultProperty(MkListOne(MkMemberInitExp(MkExpIdentifier(MkIdentifier("tbl")), MkInitializerAssignment(MkExpIdentifier(MkIdentifier(tableID))))));
1635 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*rowClassDefs), def);
1636 _class->declMode = table->declMode;
1637 external = MkExternalClass(_class);
1638 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Insert((&*ast), addAfter, external);
1639 addAfter = external;
1641 if(table->definitions)
1643 struct DBTableEntry * entry;
1645 for(entry = (*table->definitions).first; entry; entry = entry->next)
1651 unsigned int isIndex = 0;
1653 struct __ecereNameSpace__ecere__sys__OldList * args;
1654 struct Specifier * spec = entry->__anon1.__anon1.dataType->qualifiers ? (struct Specifier *)(*entry->__anon1.__anon1.dataType->qualifiers).first : (((void *)0));
1656 sprintf(fieldID, "__ecereDBField_%s_%s", tableName, entry->id->string);
1659 if(!nameField[0] && spec->type == 1 && (!strcmp(spec->__anon1.__anon1.name, "String") || !strcmp(spec->__anon1.__anon1.name, "eda::CIString")))
1661 strcpy(nameField, entry->id->string);
1663 if(!indexed && spec->type == 1 && !strcmp(spec->__anon1.__anon1.name, table->symbol->string))
1665 struct Statement * rowSet = MkCompoundStmt(MkList(), MkList());
1667 struct ClassDef * def;
1669 numIndexes = ((numIndexes > 1) ? numIndexes : 1);
1672 sprintf(name, "_%s", entry->id->string);
1673 curContext = rowSet->__anon1.compound.context = __extension__ ({
1674 struct Context * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Context);
1676 __ecereInstance1->parent = globalContext, __ecereInstance1;
1678 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*rowSet->__anon1.compound.statements), MkExpressionStmt(MkListOne(MkExpCall(MkExpIdentifier(MkIdentifier("Find")), args = MkList()))));
1679 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*args), MkExpIdentifier(MkIdentifier(fieldID)));
1680 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*args), MkExpIdentifier(MkIdentifier("middle")));
1681 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*args), MkExpIdentifier(MkIdentifier("nil")));
1682 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*args), MkExpIdentifier(MkIdentifier("value")));
1683 curContext = globalContext;
1684 def = MkClassDefProperty(MkProperty(CopyList(entry->__anon1.__anon1.dataType->qualifiers, (void *)(CopySpecifier)), CopyDeclarator(entry->__anon1.__anon1.dataType->declarator), MkIdentifier(name), rowSet, (((void *)0))));
1685 def->__anon1.propertyDef->__anon1.isDBProp = 1;
1686 def->memberAccess = 1;
1687 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*rowClassDefs), def);
1692 struct Statement * rowSet = MkCompoundStmt(MkList(), MkList()), * rowGet = MkCompoundStmt(MkList(), MkList());
1693 struct ClassDef * def;
1695 curContext = rowGet->__anon1.compound.context = __extension__ ({
1696 struct Context * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Context);
1698 __ecereInstance1->parent = globalContext, __ecereInstance1;
1700 if(spec->type == 1 && spec->__anon1.__anon1.symbol && spec->__anon1.__anon1.symbol->__anon1.registered && spec->__anon1.__anon1.symbol->__anon1.registered->type == 1)
1702 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*rowGet->__anon1.compound.declarations), MkDeclarationInst(MkInstantiation(MkSpecifierName(spec->__anon1.__anon1.name), MkExpIdentifier(MkIdentifier("d")), (((void *)0)))));
1706 struct Expression * exp;
1708 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*rowGet->__anon1.compound.declarations), MkDeclaration(CopyList(entry->__anon1.__anon1.dataType->qualifiers, (void *)(CopySpecifier)), MkListOne(MkInitDeclarator(MkDeclaratorIdentifier(MkIdentifier("d")), MkInitializerAssignment(exp = MkExpConstant("0"))))));
1709 exp->destType = __extension__ ({
1710 struct Type * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Type);
1712 __ecereInstance1->kind = 3, __ecereInstance1->refCount = 1, __ecereInstance1;
1715 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*rowGet->__anon1.compound.statements), MkExpressionStmt(MkListOne(MkExpCall(MkExpIdentifier(MkIdentifier("GetData")), args = MkList()))));
1716 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*args), MkExpIdentifier(MkIdentifier(fieldID)));
1717 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*args), MkExpIdentifier(MkIdentifier("d")));
1718 if(spec->type == 1 && spec->__anon1.__anon1.symbol && spec->__anon1.__anon1.symbol->__anon1.registered && spec->__anon1.__anon1.symbol->__anon1.registered->type == 1)
1720 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*rowGet->__anon1.compound.statements), MkExpressionStmt(MkListOne(MkExpOp(MkExpIdentifier(MkIdentifier("value")), '=', MkExpIdentifier(MkIdentifier("d"))))));
1723 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*rowGet->__anon1.compound.statements), MkReturnStmt(MkListOne(MkExpIdentifier(MkIdentifier("d")))));
1724 curContext = rowSet->__anon1.compound.context = __extension__ ({
1725 struct Context * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Context);
1727 __ecereInstance1->parent = globalContext, __ecereInstance1;
1729 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*rowSet->__anon1.compound.statements), MkExpressionStmt(MkListOne(MkExpCall(MkExpIdentifier(MkIdentifier("SetData")), args = MkList()))));
1730 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*args), MkExpIdentifier(MkIdentifier(fieldID)));
1731 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*args), MkExpIdentifier(MkIdentifier("value")));
1732 curContext = globalContext;
1733 def = MkClassDefProperty(MkProperty(CopyList(entry->__anon1.__anon1.dataType->qualifiers, (void *)(CopySpecifier)), entry->__anon1.__anon1.dataType->declarator, CopyIdentifier(entry->id), rowSet, rowGet));
1734 def->__anon1.propertyDef->__anon1.isDBProp = 1;
1735 def->memberAccess = 1;
1736 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*rowClassDefs), def);
1739 struct External * external;
1741 external = MkExternalDeclaration(MkDeclaration(MkListOne(MkSpecifierName("Field")), MkListOne(MkInitDeclarator(MkDeclaratorIdentifier(MkIdentifier(fieldID)), (((void *)0))))));
1742 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*ast), external);
1743 external->__anon1.declaration->declMode = table->declMode;
1745 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*addFieldStatements), MkExpressionStmt(MkListOne(MkExpOp(MkExpIdentifier(MkIdentifier(fieldID)), '=', MkExpCall(MkExpMember(MkExpIdentifier(MkIdentifier(tableID)), MkIdentifier("FindField")), args)))));
1746 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*args), MkExpString(entry->__anon1.__anon1.name));
1748 __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))));
1749 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*args), MkExpString(entry->__anon1.__anon1.name));
1750 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*args), MkExpClass(CopyList(entry->__anon1.__anon1.dataType->qualifiers, (void *)(CopySpecifier)), CopyDeclarator(entry->__anon1.__anon1.dataType->declarator)));
1751 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*args), MkExpConstant("0"));
1755 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*indexStatements), MkExpressionStmt(MkListOne(MkExpOp(MkExpMember(MkExpIndex(MkExpIdentifier(MkIdentifier("indexes")), MkListOne(MkExpConstant("0"))), MkIdentifier("field")), '=', MkExpIdentifier(MkIdentifier(fieldID))))));
1756 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*indexStatements), MkExpressionStmt(MkListOne(MkExpOp(MkExpMember(MkExpIndex(MkExpIdentifier(MkIdentifier("indexes")), MkListOne(MkExpConstant("0"))), MkIdentifier("order")), '=', MkExpIdentifier(MkIdentifier("ascending"))))));
1758 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*indexStatements), MkExpressionStmt(MkListOne(MkExpCall(MkExpMember(MkExpIdentifier(MkIdentifier(tableID)), MkIdentifier("Index")), args))));
1759 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*args), MkExpConstant("1"));
1760 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*args), MkExpIdentifier(MkIdentifier("indexes")));
1769 struct ClassDefinition * _class;
1770 struct External * external;
1771 struct ClassDef * def;
1772 struct Expression * exp;
1775 _class = MkClass(table->symbol, MkListOne(MkSpecifierName("Id")), idClassDefs);
1776 PopContext(curContext);
1777 _class->declMode = table->declMode;
1778 external = MkExternalClass(_class);
1779 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Insert((&*ast), addAfter, external);
1780 addAfter = external;
1781 def = MkClassDefClassPropertyValue(MkIdentifier("table"), MkInitializerAssignment(exp = MkExpOp((((void *)0)), '&', MkExpDBTable(__ecereNameSpace__ecere__sys__CopyString(table->name)))));
1782 ProcessExpression(exp);
1783 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*idClassDefs), def);
1786 def = MkClassDefClassPropertyValue(MkIdentifier("nameField"), MkInitializerAssignment(exp = MkExpOp((((void *)0)), '&', MkExpDBField(__ecereNameSpace__ecere__sys__CopyString(table->name), MkIdentifier(nameField)))));
1787 ProcessExpression(exp);
1788 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*idClassDefs), def);
1791 if(table->definitions)
1793 struct DBTableEntry * entry;
1795 for(entry = (*table->definitions).first; entry; entry = entry->next)
1802 struct __ecereNameSpace__ecere__sys__OldList * args;
1803 struct Specifier * spec = entry->__anon1.__anon1.dataType->qualifiers ? (struct Specifier *)(*entry->__anon1.__anon1.dataType->qualifiers).first : (((void *)0));
1805 sprintf(fieldID, "__ecereDBField_%s_%s", tableName, entry->id->string);
1806 if(idClassDefs && spec)
1808 struct Statement * idSet = MkCompoundStmt(MkList(), MkList()), * idGet = MkCompoundStmt(MkList(), MkList());
1809 struct ClassDef * def;
1811 curContext = idGet->__anon1.compound.context = __extension__ ({
1812 struct Context * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Context);
1814 __ecereInstance1->parent = globalContext, __ecereInstance1;
1816 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*idGet->__anon1.compound.declarations), MkDeclarationInst(MkInstantiation(MkSpecifierName(rowClassName), MkExpIdentifier(MkIdentifier("r")), MkListOne(MkMembersInitList(MkListOne(MkMemberInit((((void *)0)), MkInitializerAssignment(MkExpIdentifier(MkIdentifier("this"))))))))));
1817 if(spec->type == 1 && spec->__anon1.__anon1.symbol && spec->__anon1.__anon1.symbol->__anon1.registered && spec->__anon1.__anon1.symbol->__anon1.registered->type == 1)
1819 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*idGet->__anon1.compound.declarations), MkDeclarationInst(MkInstantiation(MkSpecifierName(spec->__anon1.__anon1.name), MkExpIdentifier(MkIdentifier("d")), (((void *)0)))));
1823 struct Expression * exp;
1825 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*idGet->__anon1.compound.declarations), MkDeclaration(CopyList(entry->__anon1.__anon1.dataType->qualifiers, (void *)(CopySpecifier)), MkListOne(MkInitDeclarator(MkDeclaratorIdentifier(MkIdentifier("d")), MkInitializerAssignment(exp = MkExpConstant("0"))))));
1826 exp->destType = __extension__ ({
1827 struct Type * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Type);
1829 __ecereInstance1->kind = 3, __ecereInstance1->refCount = 1, __ecereInstance1;
1832 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*idGet->__anon1.compound.statements), MkExpressionStmt(MkListOne(MkExpCall(MkExpMember(MkExpIdentifier(MkIdentifier("r")), MkIdentifier("GetData")), args = MkList()))));
1833 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*args), MkExpIdentifier(MkIdentifier(fieldID)));
1834 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*args), MkExpIdentifier(MkIdentifier("d")));
1835 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*idGet->__anon1.compound.statements), MkExpressionStmt(MkListOne(MkExpOp((((void *)0)), DELETE, MkExpIdentifier(MkIdentifier("r"))))));
1836 if(spec->type == 1 && spec->__anon1.__anon1.symbol && spec->__anon1.__anon1.symbol->__anon1.registered && spec->__anon1.__anon1.symbol->__anon1.registered->type == 1)
1838 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*idGet->__anon1.compound.statements), MkExpressionStmt(MkListOne(MkExpOp(MkExpIdentifier(MkIdentifier("value")), '=', MkExpIdentifier(MkIdentifier("d"))))));
1841 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*idGet->__anon1.compound.statements), MkReturnStmt(MkListOne(MkExpIdentifier(MkIdentifier("d")))));
1842 curContext = idSet->__anon1.compound.context = __extension__ ({
1843 struct Context * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Context);
1845 __ecereInstance1->parent = globalContext, __ecereInstance1;
1847 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*idSet->__anon1.compound.declarations), MkDeclarationInst(MkInstantiation(MkSpecifierName(rowClassName), MkExpIdentifier(MkIdentifier("r")), MkListOne(MkMembersInitList(MkListOne(MkMemberInit((((void *)0)), MkInitializerAssignment(MkExpIdentifier(MkIdentifier("this"))))))))));
1848 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*idSet->__anon1.compound.statements), MkExpressionStmt(MkListOne(MkExpCall(MkExpMember(MkExpIdentifier(MkIdentifier("r")), MkIdentifier("SetData")), args = MkList()))));
1849 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*args), MkExpIdentifier(MkIdentifier(fieldID)));
1850 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*args), MkExpIdentifier(MkIdentifier("value")));
1851 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*idSet->__anon1.compound.statements), MkExpressionStmt(MkListOne(MkExpOp((((void *)0)), DELETE, MkExpIdentifier(MkIdentifier("r"))))));
1852 curContext = globalContext;
1853 def = MkClassDefProperty(MkProperty(CopyList(entry->__anon1.__anon1.dataType->qualifiers, (void *)(CopySpecifier)), CopyDeclarator(entry->__anon1.__anon1.dataType->declarator), CopyIdentifier(entry->id), idSet, idGet));
1854 def->__anon1.propertyDef->__anon1.isDBProp = 1;
1855 def->memberAccess = 1;
1856 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*idClassDefs), def);
1862 if(entry->__anon1.items && (*entry->__anon1.items).count)
1865 struct DBIndexItem * item;
1867 unsigned int needTable = 0;
1870 if(entry->id || indexed)
1872 if(entry->id || (*entry->__anon1.items).count == 1)
1874 struct External * external;
1875 struct Identifier * id = entry->id ? entry->id : ((struct DBIndexItem *)(*entry->__anon1.items).first)->id;
1877 sprintf(indexID, "__ecereDBIndex_%s_%s", tableName, id->string);
1878 external = MkExternalDeclaration(MkDeclaration(MkListOne(MkSpecifierName("Table")), MkListOne(MkInitDeclarator(MkDeclaratorIdentifier(MkIdentifier(indexID)), (((void *)0))))));
1879 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*ast), external);
1880 external->__anon1.declaration->declMode = table->declMode;
1884 Compiler_Error(__ecereNameSpace__ecere__GetTranslatedString("ec", "Multiple field index requires a name\n", (((void *)0))));
1889 strcpy(indexID, tableID);
1891 for(c = 0, item = (*entry->__anon1.items).first; item; item = item->next, c++)
1895 sprintf(num, "%d", c);
1896 sprintf(fieldID, "__ecereDBField_%s_%s", tableName, item->id->string);
1897 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*indexStatements), MkExpressionStmt(MkListOne(MkExpOp(MkExpMember(MkExpIndex(MkExpIdentifier(MkIdentifier("indexes")), MkListOne(MkExpConstant(num))), MkIdentifier("field")), '=', MkExpIdentifier(MkIdentifier(fieldID))))));
1898 __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"))))));
1900 sprintf(num, "%d", c);
1901 numIndexes = ((numIndexes > c) ? numIndexes : c);
1905 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*indexStatements), MkExpressionStmt(MkListOne(MkExpOp(MkExpIdentifier(MkIdentifier(indexID)), '=', MkExpCall(MkExpMember(MkExpIdentifier(MkIdentifier("db")), MkIdentifier("OpenTable")), args)))));
1906 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*args), MkExpString(table->name));
1908 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*args), MkExpInstance(MkInstantiation((((void *)0)), (((void *)0)), MkListOne(MkMembersInitList(members)))));
1909 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*members), MkMemberInit((((void *)0)), MkInitializerAssignment(MkExpIdentifier(MkIdentifier("tableRows")))));
1912 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*indexStatements), MkExpressionStmt(MkListOne(MkExpCall(MkExpMember(MkExpIdentifier(MkIdentifier(indexID)), MkIdentifier("Index")), args))));
1913 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*args), MkExpConstant(num));
1914 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*args), MkExpIdentifier(MkIdentifier("indexes")));
1923 static void ProcessDeclaration(struct Declaration * decl);
1925 static void ProcessSpecifier(struct Specifier * spec)
1933 if(spec->__anon1.__anon2.definitions)
1935 struct ClassDef * def;
1937 for(def = (*spec->__anon1.__anon2.definitions).first; def; def = def->next)
1942 ProcessDeclaration(def->__anon1.decl);
1946 struct MemberInit * init;
1948 for(init = (*def->__anon1.defProperties).first; init; init = init->next)
1950 ProcessMemberInit(init);
1955 ProcessClassFunction(def->__anon1.function);
1958 if(def->__anon1.propertyDef)
1960 ProcessProperty(def->__anon1.propertyDef);
1964 if(def->__anon1.propertyWatch && def->__anon1.propertyWatch->compound)
1966 ProcessStatement(def->__anon1.propertyWatch->compound);
1970 if(def->__anon1.__anon1.initializer)
1971 ProcessInitializer(def->__anon1.__anon1.initializer);
1981 static void ProcessStatement(struct Statement * stmt)
1986 ProcessStatement(stmt->__anon1.labeled.stmt);
1989 if(stmt->__anon1.caseStmt.exp)
1991 ProcessExpression(stmt->__anon1.caseStmt.exp);
1993 if(stmt->__anon1.caseStmt.stmt)
1995 ProcessStatement(stmt->__anon1.caseStmt.stmt);
2000 ProcessDeclaration(stmt->__anon1.decl);
2005 struct Context * oldContext = curContext;
2007 curContext = stmt->__anon1.compound.context;
2008 if(stmt->__anon1.compound.declarations)
2010 struct Declaration * decl;
2012 for(decl = (*stmt->__anon1.compound.declarations).first; decl; decl = decl->next)
2014 ProcessDeclaration(decl);
2017 if(stmt->__anon1.compound.statements)
2019 struct Statement * statement;
2021 for(statement = (*stmt->__anon1.compound.statements).first; statement; statement = statement->next)
2023 ProcessStatement(statement);
2026 curContext = oldContext;
2031 if(stmt->__anon1.expressions)
2033 struct Expression * exp;
2035 for(exp = (*stmt->__anon1.expressions).first; exp; exp = exp->next)
2037 ProcessExpression(exp);
2044 struct Expression * exp;
2046 for(exp = (*stmt->__anon1.ifStmt.exp).first; exp; exp = exp->next)
2048 ProcessExpression(exp);
2050 if(stmt->__anon1.ifStmt.stmt)
2052 ProcessStatement(stmt->__anon1.ifStmt.stmt);
2054 if(stmt->__anon1.ifStmt.elseStmt)
2056 ProcessStatement(stmt->__anon1.ifStmt.elseStmt);
2062 struct Expression * exp;
2064 for(exp = (*stmt->__anon1.switchStmt.exp).first; exp; exp = exp->next)
2066 ProcessExpression(exp);
2068 ProcessStatement(stmt->__anon1.switchStmt.stmt);
2073 struct Expression * exp;
2075 if(stmt->__anon1.whileStmt.exp)
2077 for(exp = (*stmt->__anon1.whileStmt.exp).first; exp; exp = exp->next)
2079 ProcessExpression(exp);
2082 if(stmt->__anon1.whileStmt.stmt)
2083 ProcessStatement(stmt->__anon1.whileStmt.stmt);
2088 ProcessStatement(stmt->__anon1.doWhile.stmt);
2089 if(stmt->__anon1.doWhile.exp)
2091 struct Expression * exp;
2093 for(exp = (*stmt->__anon1.doWhile.exp).first; exp; exp = exp->next)
2095 ProcessExpression(exp);
2102 struct Expression * exp;
2104 if(stmt->__anon1.forStmt.init)
2106 ProcessStatement(stmt->__anon1.forStmt.init);
2108 if(stmt->__anon1.forStmt.check)
2110 ProcessStatement(stmt->__anon1.forStmt.check);
2112 if(stmt->__anon1.forStmt.increment)
2114 for(exp = (*stmt->__anon1.forStmt.increment).first; exp; exp = exp->next)
2116 ProcessExpression(exp);
2119 if(stmt->__anon1.forStmt.stmt)
2120 ProcessStatement(stmt->__anon1.forStmt.stmt);
2130 if(stmt->__anon1.expressions)
2132 struct Expression * exp;
2134 for(exp = (*stmt->__anon1.expressions).first; exp; exp = exp->next)
2136 ProcessExpression(exp);
2143 struct Identifier * _watch;
2145 if(stmt->__anon1._watch.watcher)
2147 ProcessExpression(stmt->__anon1._watch.watcher);
2149 if(stmt->__anon1._watch.object)
2151 ProcessExpression(stmt->__anon1._watch.object);
2153 if(stmt->__anon1._watch.watches)
2155 for(_watch = (*stmt->__anon1._watch.watches).first; _watch; _watch = _watch->next)
2157 ProcessIdentifier(_watch);
2164 struct PropertyWatch * _watch;
2166 if(stmt->__anon1._watch.watcher)
2168 ProcessExpression(stmt->__anon1._watch.watcher);
2170 if(stmt->__anon1._watch.object)
2172 ProcessExpression(stmt->__anon1._watch.object);
2174 if(stmt->__anon1._watch.watches)
2176 for(_watch = (*stmt->__anon1._watch.watches).first; _watch; _watch = _watch->next)
2178 if(_watch->compound)
2180 ProcessStatement(_watch->compound);
2189 static void ProcessClassDef(struct ClassDef * def)
2194 ProcessDeclaration(def->__anon1.decl);
2198 struct MemberInit * init;
2200 for(init = (*def->__anon1.defProperties).first; init; init = init->next)
2202 ProcessMemberInit(init);
2207 if(def->__anon1.__anon1.initializer)
2208 ProcessInitializer(def->__anon1.__anon1.initializer);
2211 ProcessClassFunction(def->__anon1.function);
2214 if(def->__anon1.propertyDef)
2216 ProcessProperty(def->__anon1.propertyDef);
2220 if(def->__anon1.propertyWatch && def->__anon1.propertyWatch->compound)
2222 ProcessStatement(def->__anon1.propertyWatch->compound);
2228 static void ProcessDeclaration(struct Declaration * decl)
2234 struct Specifier * spec;
2236 if(decl->__anon1.__anon1.specifiers)
2238 for(spec = (*decl->__anon1.__anon1.specifiers).first; spec; spec = spec->next)
2240 ProcessSpecifier(spec);
2247 if(decl->__anon1.__anon1.specifiers)
2249 struct Specifier * s;
2251 for(s = (*decl->__anon1.__anon1.specifiers).first; s; s = s->next)
2253 ProcessSpecifier(s);
2256 if(decl->__anon1.__anon1.declarators && (*decl->__anon1.__anon1.declarators).first)
2258 struct InitDeclarator * d;
2260 for(d = (*decl->__anon1.__anon1.declarators).first; d; d = d->next)
2262 ProcessInitDeclarator(d);
2268 ProcessInstance(decl->__anon1.inst);
2273 static void ProcessClass(struct ClassDefinition * _class)
2275 if(_class->definitions)
2277 struct ClassDef * def;
2279 for(def = (*_class->definitions).first; def; def = def->next)
2281 ProcessClassDef(def);
2286 void ProcessDBTableDefinitions()
2288 struct External * external;
2290 addAfter = (((void *)0));
2291 curContext = globalContext;
2293 PrePreProcessClassDefinitions();
2294 DeclClass((((void *)0)), "Field");
2295 DeclClass((((void *)0)), "Table");
2296 DeclClass((((void *)0)), "Row");
2297 DeclClass((((void *)0)), "Id");
2299 if(ast != (((void *)0)))
2301 for(external = (*ast).first; external; external = external->next)
2303 curExternal = external;
2304 addAfter = external->prev;
2305 switch(external->type)
2308 ProcessDBTable(external->__anon1.table);
2312 for(external = (*ast).first; external; external = external->next)
2314 curExternal = external;
2315 addAfter = external->prev;
2316 switch(external->type)
2319 ProcessFunction(external->__anon1.function);
2322 ProcessDeclaration(external->__anon1.declaration);
2325 ProcessClass(external->__anon1._class);
2330 curContext = globalContext;
2333 void __ecereRegisterModule_dbpass(struct __ecereNameSpace__ecere__com__Instance * module)
2335 struct __ecereNameSpace__ecere__com__Class __attribute__((unused)) * class;
2337 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ProcessDBTableDefinitions", "void ProcessDBTableDefinitions(void)", ProcessDBTableDefinitions, module, 1);