1 /* Code generated from eC source file: dbpass.ec */
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 void __ecereNameSpace__ecere__com__eSystem_Delete(void * memory);
43 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__sys__BTNode;
45 struct __ecereNameSpace__ecere__sys__BTNode;
47 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__sys__BinaryTree;
49 struct __ecereNameSpace__ecere__sys__BinaryTree
51 struct __ecereNameSpace__ecere__sys__BTNode * root;
53 int (* CompareKey)(struct __ecereNameSpace__ecere__sys__BinaryTree * tree, uintptr_t a, uintptr_t b);
54 void (* FreeKey)(void * key);
55 } __attribute__ ((gcc_struct));
57 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__sys__OldList;
59 struct __ecereNameSpace__ecere__sys__OldList
66 } __attribute__ ((gcc_struct));
68 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__Method;
70 struct __ecereNameSpace__ecere__com__Method
73 struct __ecereNameSpace__ecere__com__Method * parent;
74 struct __ecereNameSpace__ecere__com__Method * left;
75 struct __ecereNameSpace__ecere__com__Method * right;
80 struct __ecereNameSpace__ecere__com__Class * _class;
82 const char * dataTypeString;
83 struct Type * dataType;
85 } __attribute__ ((gcc_struct));
87 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__Property;
89 struct __ecereNameSpace__ecere__com__Property
91 struct __ecereNameSpace__ecere__com__Property * prev;
92 struct __ecereNameSpace__ecere__com__Property * next;
94 unsigned int isProperty;
97 struct __ecereNameSpace__ecere__com__Class * _class;
98 const char * dataTypeString;
99 struct __ecereNameSpace__ecere__com__Class * dataTypeClass;
100 struct Type * dataType;
101 void (* Set)(void * , int);
102 int (* Get)(void * );
103 unsigned int (* IsSet)(void * );
107 unsigned int conversion;
108 unsigned int watcherOffset;
109 const char * category;
110 unsigned int compiled;
111 unsigned int selfWatchable;
112 unsigned int isWatchable;
113 } __attribute__ ((gcc_struct));
115 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_CodePosition;
123 } __attribute__ ((gcc_struct));
125 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Location;
129 struct CodePosition start;
130 struct CodePosition end;
131 } __attribute__ ((gcc_struct));
133 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Attrib;
137 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_ExtDecl;
141 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_ClassDefinition;
143 struct ClassDefinition
145 struct ClassDefinition * prev;
146 struct ClassDefinition * next;
148 struct Specifier * _class;
149 struct __ecereNameSpace__ecere__sys__OldList * baseSpecs;
150 struct __ecereNameSpace__ecere__sys__OldList * definitions;
151 struct Symbol * symbol;
152 struct Location blockStart;
153 struct Location nameLoc;
156 unsigned int deleteWatchable;
157 } __attribute__ ((gcc_struct));
159 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Context;
163 struct Context * parent;
164 struct __ecereNameSpace__ecere__sys__BinaryTree types;
165 struct __ecereNameSpace__ecere__sys__BinaryTree classes;
166 struct __ecereNameSpace__ecere__sys__BinaryTree symbols;
167 struct __ecereNameSpace__ecere__sys__BinaryTree structSymbols;
170 struct __ecereNameSpace__ecere__sys__BinaryTree templateTypes;
171 struct ClassDefinition * classDef;
172 unsigned int templateTypesOnly;
173 unsigned int hasNameSpace;
174 } __attribute__ ((gcc_struct));
176 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Instantiation;
180 struct Instantiation * prev;
181 struct Instantiation * next;
183 struct Specifier * _class;
184 struct Expression * exp;
185 struct __ecereNameSpace__ecere__sys__OldList * members;
186 struct Symbol * symbol;
187 unsigned int fullSet;
188 unsigned int isConstant;
189 unsigned char * data;
190 struct Location nameLoc;
191 struct Location insideLoc;
193 } __attribute__ ((gcc_struct));
195 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Declaration;
199 struct Declaration * prev;
200 struct Declaration * next;
207 struct __ecereNameSpace__ecere__sys__OldList * specifiers;
208 struct __ecereNameSpace__ecere__sys__OldList * declarators;
209 } __attribute__ ((gcc_struct));
210 struct Instantiation * inst;
213 struct Identifier * id;
214 struct Expression * exp;
215 } __attribute__ ((gcc_struct));
216 } __attribute__ ((gcc_struct));
217 struct Specifier * extStorage;
218 struct Symbol * symbol;
220 } __attribute__ ((gcc_struct));
222 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Statement;
226 struct Statement * prev;
227 struct Statement * next;
232 struct __ecereNameSpace__ecere__sys__OldList * expressions;
235 struct Identifier * id;
236 struct Statement * stmt;
237 } __attribute__ ((gcc_struct)) labeled;
240 struct Expression * exp;
241 struct Statement * stmt;
242 } __attribute__ ((gcc_struct)) caseStmt;
245 struct __ecereNameSpace__ecere__sys__OldList * declarations;
246 struct __ecereNameSpace__ecere__sys__OldList * statements;
247 struct Context * context;
248 unsigned int isSwitch;
249 } __attribute__ ((gcc_struct)) compound;
252 struct __ecereNameSpace__ecere__sys__OldList * exp;
253 struct Statement * stmt;
254 struct Statement * elseStmt;
255 } __attribute__ ((gcc_struct)) ifStmt;
258 struct __ecereNameSpace__ecere__sys__OldList * exp;
259 struct Statement * stmt;
260 } __attribute__ ((gcc_struct)) switchStmt;
263 struct __ecereNameSpace__ecere__sys__OldList * exp;
264 struct Statement * stmt;
265 } __attribute__ ((gcc_struct)) whileStmt;
268 struct __ecereNameSpace__ecere__sys__OldList * exp;
269 struct Statement * stmt;
270 } __attribute__ ((gcc_struct)) doWhile;
273 struct Statement * init;
274 struct Statement * check;
275 struct __ecereNameSpace__ecere__sys__OldList * increment;
276 struct Statement * stmt;
277 } __attribute__ ((gcc_struct)) forStmt;
280 struct Identifier * id;
281 } __attribute__ ((gcc_struct)) gotoStmt;
284 struct Specifier * spec;
286 struct __ecereNameSpace__ecere__sys__OldList * inputFields;
287 struct __ecereNameSpace__ecere__sys__OldList * outputFields;
288 struct __ecereNameSpace__ecere__sys__OldList * clobberedFields;
289 } __attribute__ ((gcc_struct)) asmStmt;
292 struct Expression * watcher;
293 struct Expression * object;
294 struct __ecereNameSpace__ecere__sys__OldList * watches;
295 } __attribute__ ((gcc_struct)) _watch;
298 struct Identifier * id;
299 struct __ecereNameSpace__ecere__sys__OldList * exp;
300 struct __ecereNameSpace__ecere__sys__OldList * filter;
301 struct Statement * stmt;
302 } __attribute__ ((gcc_struct)) forEachStmt;
303 struct Declaration * decl;
304 } __attribute__ ((gcc_struct));
305 } __attribute__ ((gcc_struct));
307 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_TypeName;
311 struct TypeName * prev;
312 struct TypeName * next;
314 struct __ecereNameSpace__ecere__sys__OldList * qualifiers;
315 struct Declarator * declarator;
317 struct Expression * bitCount;
318 } __attribute__ ((gcc_struct));
320 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Initializer;
324 struct Initializer * prev;
325 struct Initializer * next;
330 struct Expression * exp;
331 struct __ecereNameSpace__ecere__sys__OldList * list;
332 } __attribute__ ((gcc_struct));
333 unsigned int isConstant;
334 struct Identifier * id;
335 } __attribute__ ((gcc_struct));
337 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__DataValue;
339 struct __ecereNameSpace__ecere__com__DataValue
354 } __attribute__ ((gcc_struct));
355 } __attribute__ ((gcc_struct));
357 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Expression;
361 struct Expression * prev;
362 struct Expression * next;
370 struct Identifier * identifier;
371 } __attribute__ ((gcc_struct));
372 struct Statement * compound;
373 struct Instantiation * instance;
377 unsigned int intlString;
378 } __attribute__ ((gcc_struct));
379 struct __ecereNameSpace__ecere__sys__OldList * list;
382 struct __ecereNameSpace__ecere__sys__OldList * specifiers;
383 struct Declarator * decl;
384 } __attribute__ ((gcc_struct)) _classExp;
387 struct Identifier * id;
388 } __attribute__ ((gcc_struct)) classData;
391 struct Expression * exp;
392 struct __ecereNameSpace__ecere__sys__OldList * arguments;
393 struct Location argLoc;
394 } __attribute__ ((gcc_struct)) call;
397 struct Expression * exp;
398 struct __ecereNameSpace__ecere__sys__OldList * index;
399 } __attribute__ ((gcc_struct)) index;
402 struct Expression * exp;
403 struct Identifier * member;
405 unsigned int thisPtr;
406 } __attribute__ ((gcc_struct)) member;
410 struct Expression * exp1;
411 struct Expression * exp2;
412 } __attribute__ ((gcc_struct)) op;
413 struct TypeName * typeName;
414 struct Specifier * _class;
417 struct TypeName * typeName;
418 struct Expression * exp;
419 } __attribute__ ((gcc_struct)) cast;
422 struct Expression * cond;
423 struct __ecereNameSpace__ecere__sys__OldList * exp;
424 struct Expression * elseExp;
425 } __attribute__ ((gcc_struct)) cond;
428 struct TypeName * typeName;
429 struct Expression * size;
430 } __attribute__ ((gcc_struct)) _new;
433 struct TypeName * typeName;
434 struct Expression * size;
435 struct Expression * exp;
436 } __attribute__ ((gcc_struct)) _renew;
440 struct Identifier * id;
441 } __attribute__ ((gcc_struct)) db;
444 struct Expression * ds;
445 struct Expression * name;
446 } __attribute__ ((gcc_struct)) dbopen;
449 struct TypeName * typeName;
450 struct Initializer * initializer;
451 } __attribute__ ((gcc_struct)) initializer;
454 struct Expression * exp;
455 struct TypeName * typeName;
456 } __attribute__ ((gcc_struct)) vaArg;
457 } __attribute__ ((gcc_struct));
458 unsigned int debugValue;
459 struct __ecereNameSpace__ecere__com__DataValue val;
461 unsigned int hasAddress;
462 struct Type * expType;
463 struct Type * destType;
466 unsigned int byReference;
467 unsigned int isConstant;
468 unsigned int addedThis;
469 unsigned int needCast;
470 unsigned int thisPtr;
471 unsigned int opDestType;
472 } __attribute__ ((gcc_struct));
474 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_TemplateDatatype;
476 struct TemplateDatatype;
478 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_TemplateArgument;
480 struct TemplateArgument;
482 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_TemplateParameter;
484 struct TemplateParameter;
486 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Specifier;
490 struct Specifier * prev;
491 struct Specifier * next;
499 struct ExtDecl * extDecl;
501 struct Symbol * symbol;
502 struct __ecereNameSpace__ecere__sys__OldList * templateArgs;
503 } __attribute__ ((gcc_struct));
506 struct Identifier * id;
507 struct __ecereNameSpace__ecere__sys__OldList * list;
508 struct __ecereNameSpace__ecere__sys__OldList * baseSpecs;
509 struct __ecereNameSpace__ecere__sys__OldList * definitions;
510 unsigned int addNameSpace;
511 struct Context * ctx;
512 struct ExtDecl * extDeclStruct;
513 } __attribute__ ((gcc_struct));
514 struct Expression * expression;
515 struct Specifier * _class;
516 struct TemplateParameter * templateParameter;
517 } __attribute__ ((gcc_struct));
518 } __attribute__ ((gcc_struct));
520 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Identifier;
524 struct Identifier * prev;
525 struct Identifier * next;
527 struct Symbol * classSym;
528 struct Specifier * _class;
530 struct Identifier * badID;
531 } __attribute__ ((gcc_struct));
533 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Pointer;
537 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Declarator;
541 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_FunctionDefinition;
543 struct FunctionDefinition
545 struct FunctionDefinition * prev;
546 struct FunctionDefinition * next;
548 struct __ecereNameSpace__ecere__sys__OldList * specifiers;
549 struct Declarator * declarator;
550 struct __ecereNameSpace__ecere__sys__OldList * declarations;
551 struct Statement * body;
552 struct __ecereNameSpace__ecere__com__Class * _class;
553 struct __ecereNameSpace__ecere__sys__OldList attached;
556 struct Symbol * propSet;
558 unsigned int propertyNoThis;
559 } __attribute__ ((gcc_struct));
561 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_DBTableDef;
566 struct Symbol * symbol;
567 struct __ecereNameSpace__ecere__sys__OldList * definitions;
569 } __attribute__ ((gcc_struct));
571 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_External;
575 struct External * prev;
576 struct External * next;
579 struct Symbol * symbol;
582 struct FunctionDefinition * function;
583 struct ClassDefinition * _class;
584 struct Declaration * declaration;
586 struct Identifier * id;
587 struct DBTableDef * table;
588 } __attribute__ ((gcc_struct));
590 } __attribute__ ((gcc_struct));
592 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_ModuleImport;
596 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_ClassImport;
600 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Symbol;
605 struct Symbol * parent;
606 struct Symbol * left;
607 struct Symbol * right;
612 struct __ecereNameSpace__ecere__com__Method * method;
613 struct __ecereNameSpace__ecere__com__Property * _property;
614 struct __ecereNameSpace__ecere__com__Class * registered;
615 } __attribute__ ((gcc_struct));
622 struct External * pointerExternal;
623 struct External * structExternal;
624 } __attribute__ ((gcc_struct));
627 struct External * externalGet;
628 struct External * externalSet;
629 struct External * externalPtr;
630 struct External * externalIsSet;
631 } __attribute__ ((gcc_struct));
634 struct External * methodExternal;
635 struct External * methodCodeExternal;
636 } __attribute__ ((gcc_struct));
637 } __attribute__ ((gcc_struct));
638 unsigned int imported;
639 unsigned int declaredStructSym;
640 struct __ecereNameSpace__ecere__com__Class * _class;
641 unsigned int declaredStruct;
642 unsigned int needConstructor;
643 unsigned int needDestructor;
644 char * constructorName;
647 char * destructorName;
648 struct ModuleImport * module;
649 struct ClassImport * _import;
650 struct Location nameLoc;
651 unsigned int isParam;
652 unsigned int isRemote;
653 unsigned int isStruct;
654 unsigned int fireWatchersDone;
656 unsigned int classData;
657 unsigned int isStatic;
659 struct __ecereNameSpace__ecere__sys__OldList * templateParams;
660 struct __ecereNameSpace__ecere__sys__OldList templatedClasses;
661 struct Context * ctx;
663 struct Expression * propCategory;
664 } __attribute__ ((gcc_struct));
666 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Type;
675 struct Symbol * _class;
678 struct __ecereNameSpace__ecere__sys__OldList members;
680 } __attribute__ ((gcc_struct));
683 struct Type * returnType;
684 struct __ecereNameSpace__ecere__sys__OldList params;
685 struct Symbol * thisClass;
686 unsigned int staticMethod;
687 struct TemplateParameter * thisClassTemplate;
688 } __attribute__ ((gcc_struct));
691 struct __ecereNameSpace__ecere__com__Method * method;
692 struct __ecereNameSpace__ecere__com__Class * methodClass;
693 struct __ecereNameSpace__ecere__com__Class * usedClass;
694 } __attribute__ ((gcc_struct));
697 struct Type * arrayType;
699 struct Expression * arraySizeExp;
700 unsigned int freeExp;
701 struct Symbol * enumClass;
702 } __attribute__ ((gcc_struct));
704 struct TemplateParameter * templateParameter;
705 } __attribute__ ((gcc_struct));
715 unsigned int isSigned : 1;
716 unsigned int constant : 1;
717 unsigned int truth : 1;
718 unsigned int byReference : 1;
719 unsigned int extraParam : 1;
720 unsigned int directClassAccess : 1;
721 unsigned int computing : 1;
722 unsigned int keepCast : 1;
723 unsigned int passAsTemplate : 1;
724 unsigned int dllExport : 1;
725 unsigned int attrStdcall : 1;
726 unsigned int declaredWithStruct : 1;
727 unsigned int typedByReference : 1;
728 unsigned int casted : 1;
729 } __attribute__ ((gcc_struct));
731 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__Class;
733 struct __ecereNameSpace__ecere__com__Class
735 struct __ecereNameSpace__ecere__com__Class * prev;
736 struct __ecereNameSpace__ecere__com__Class * next;
742 int (* Constructor)(struct __ecereNameSpace__ecere__com__Instance *);
743 void (* Destructor)(struct __ecereNameSpace__ecere__com__Instance *);
746 struct __ecereNameSpace__ecere__com__Class * base;
747 struct __ecereNameSpace__ecere__sys__BinaryTree methods;
748 struct __ecereNameSpace__ecere__sys__BinaryTree members;
749 struct __ecereNameSpace__ecere__sys__BinaryTree prop;
750 struct __ecereNameSpace__ecere__sys__OldList membersAndProperties;
751 struct __ecereNameSpace__ecere__sys__BinaryTree classProperties;
752 struct __ecereNameSpace__ecere__sys__OldList derivatives;
756 struct __ecereNameSpace__ecere__com__Instance * module;
757 struct __ecereNameSpace__ecere__com__NameSpace * nameSpace;
758 const char * dataTypeString;
759 struct Type * dataType;
761 int defaultAlignment;
762 void (* Initialize)();
764 struct __ecereNameSpace__ecere__sys__OldList selfWatchers;
765 const char * designerClass;
766 unsigned int noExpansion;
767 const char * defaultProperty;
768 unsigned int comRedefinition;
771 unsigned int internalDecl;
773 unsigned int computeSize;
775 int destructionWatchOffset;
777 struct __ecereNameSpace__ecere__sys__OldList delayedCPValues;
778 int inheritanceAccess;
779 const char * fullName;
781 struct __ecereNameSpace__ecere__sys__OldList conversions;
782 struct __ecereNameSpace__ecere__sys__OldList templateParams;
783 struct __ecereNameSpace__ecere__com__ClassTemplateArgument * templateArgs;
784 struct __ecereNameSpace__ecere__com__Class * templateClass;
785 struct __ecereNameSpace__ecere__sys__OldList templatized;
787 unsigned int isInstanceClass;
788 unsigned int byValueSystemClass;
789 } __attribute__ ((gcc_struct));
791 extern long long __ecereNameSpace__ecere__com__eClass_GetProperty(struct __ecereNameSpace__ecere__com__Class * _class, const char * name);
793 extern void __ecereNameSpace__ecere__com__eClass_SetProperty(struct __ecereNameSpace__ecere__com__Class * _class, const char * name, long long value);
795 extern void __ecereNameSpace__ecere__com__eInstance_FireSelfWatchers(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property);
797 extern void __ecereNameSpace__ecere__com__eInstance_SetMethod(struct __ecereNameSpace__ecere__com__Instance * instance, const char * name, void * function);
799 extern void __ecereNameSpace__ecere__com__eInstance_IncRef(struct __ecereNameSpace__ecere__com__Instance * instance);
801 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);
803 extern void __ecereNameSpace__ecere__com__eInstance_Watch(void * instance, struct __ecereNameSpace__ecere__com__Property * _property, void * object, void (* callback)(void * , void * ));
805 extern void __ecereNameSpace__ecere__com__eInstance_FireWatchers(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property);
807 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__Instance;
809 struct __ecereNameSpace__ecere__com__Instance
812 struct __ecereNameSpace__ecere__com__Class * _class;
814 } __attribute__ ((gcc_struct));
816 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__DataMember;
818 struct __ecereNameSpace__ecere__com__DataMember
820 struct __ecereNameSpace__ecere__com__DataMember * prev;
821 struct __ecereNameSpace__ecere__com__DataMember * next;
823 unsigned int isProperty;
826 struct __ecereNameSpace__ecere__com__Class * _class;
827 const char * dataTypeString;
828 struct __ecereNameSpace__ecere__com__Class * dataTypeClass;
829 struct Type * dataType;
833 struct __ecereNameSpace__ecere__sys__OldList members;
834 struct __ecereNameSpace__ecere__sys__BinaryTree membersAlpha;
837 } __attribute__ ((gcc_struct));
839 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__SerialBuffer;
841 struct __ecereNameSpace__ecere__com__SerialBuffer
843 unsigned char * _buffer;
847 } __attribute__ ((gcc_struct));
849 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__ClassTemplateArgument;
851 struct __ecereNameSpace__ecere__com__ClassTemplateArgument
857 const char * dataTypeString;
858 struct __ecereNameSpace__ecere__com__Class * dataTypeClass;
859 } __attribute__ ((gcc_struct));
860 struct __ecereNameSpace__ecere__com__DataValue expression;
863 const char * memberString;
866 struct __ecereNameSpace__ecere__com__DataMember * member;
867 struct __ecereNameSpace__ecere__com__Property * prop;
868 struct __ecereNameSpace__ecere__com__Method * method;
869 } __attribute__ ((gcc_struct));
870 } __attribute__ ((gcc_struct));
871 } __attribute__ ((gcc_struct));
872 } __attribute__ ((gcc_struct));
876 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
879 typedef union YYSTYPE
884 struct Identifier * id;
885 struct Expression * exp;
886 struct Specifier * specifier;
887 struct __ecereNameSpace__ecere__sys__OldList * list;
888 struct Enumerator * enumerator;
889 struct Declarator * declarator;
890 struct Pointer * pointer;
891 struct Initializer * initializer;
892 struct InitDeclarator * initDeclarator;
893 struct TypeName * typeName;
894 struct Declaration * declaration;
895 struct Statement * stmt;
896 struct FunctionDefinition * function;
897 struct External * external;
898 struct Context * context;
899 struct AsmField * asmField;
900 struct Attrib * attrib;
901 struct ExtDecl * extDecl;
902 struct Attribute * attribute;
903 struct Instantiation * instance;
904 struct MembersInit * membersInit;
905 struct MemberInit * memberInit;
906 struct ClassFunction * classFunction;
907 struct ClassDefinition * _class;
908 struct ClassDef * classDef;
909 struct PropertyDef * prop;
911 struct Symbol * symbol;
912 struct PropertyWatch * propertyWatch;
913 struct TemplateParameter * templateParameter;
914 struct TemplateArgument * templateArgument;
915 struct TemplateDatatype * templateDatatype;
916 struct DBTableEntry * dbtableEntry;
917 struct DBIndexItem * dbindexItem;
918 struct DBTableDef * dbtableDef;
919 } __attribute__ ((gcc_struct)) YYSTYPE;
921 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Enumerator;
925 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_InitDeclarator;
927 struct InitDeclarator
929 struct InitDeclarator * prev;
930 struct InitDeclarator * next;
932 struct Declarator * declarator;
933 struct Initializer * initializer;
934 } __attribute__ ((gcc_struct));
936 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_AsmField;
940 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Attribute;
944 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_ClassFunction;
948 struct ClassFunction * prev;
949 struct ClassFunction * next;
951 struct __ecereNameSpace__ecere__sys__OldList * specifiers;
952 struct Declarator * declarator;
953 struct __ecereNameSpace__ecere__sys__OldList * declarations;
954 struct Statement * body;
955 struct __ecereNameSpace__ecere__com__Class * _class;
956 struct __ecereNameSpace__ecere__sys__OldList attached;
959 struct Symbol * propSet;
960 unsigned int isVirtual;
961 unsigned int isConstructor;
962 unsigned int isDestructor;
963 unsigned int dontMangle;
966 } __attribute__ ((gcc_struct));
968 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_MembersInit;
972 struct MembersInit * prev;
973 struct MembersInit * next;
978 struct __ecereNameSpace__ecere__sys__OldList * dataMembers;
979 struct ClassFunction * function;
980 } __attribute__ ((gcc_struct));
981 } __attribute__ ((gcc_struct));
983 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_MemberInit;
987 struct MemberInit * prev;
988 struct MemberInit * next;
990 struct Location realLoc;
991 struct __ecereNameSpace__ecere__sys__OldList * identifiers;
992 struct Initializer * initializer;
994 unsigned int variable;
995 unsigned int takeOutExp;
996 } __attribute__ ((gcc_struct));
998 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_PropertyDef;
1002 struct PropertyDef * prev;
1003 struct PropertyDef * next;
1004 struct Location loc;
1005 struct __ecereNameSpace__ecere__sys__OldList * specifiers;
1006 struct Declarator * declarator;
1007 struct Identifier * id;
1008 struct Statement * getStmt;
1009 struct Statement * setStmt;
1010 struct Statement * issetStmt;
1011 struct Symbol * symbol;
1012 struct Expression * category;
1015 unsigned int conversion : 1;
1016 unsigned int isWatchable : 1;
1017 unsigned int isDBProp : 1;
1018 } __attribute__ ((gcc_struct));
1019 } __attribute__ ((gcc_struct));
1021 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_PropertyWatch;
1023 struct PropertyWatch
1025 struct PropertyWatch * prev;
1026 struct PropertyWatch * next;
1027 struct Location loc;
1028 struct Statement * compound;
1029 struct __ecereNameSpace__ecere__sys__OldList * properties;
1030 unsigned int deleteWatch;
1031 } __attribute__ ((gcc_struct));
1033 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_ClassDef;
1037 struct ClassDef * prev;
1038 struct ClassDef * next;
1039 struct Location loc;
1043 struct Declaration * decl;
1044 struct ClassFunction * function;
1045 struct __ecereNameSpace__ecere__sys__OldList * defProperties;
1046 struct PropertyDef * propertyDef;
1047 struct PropertyWatch * propertyWatch;
1049 struct Identifier * defaultProperty;
1052 struct Identifier * id;
1053 struct Initializer * initializer;
1054 } __attribute__ ((gcc_struct));
1055 } __attribute__ ((gcc_struct));
1058 } __attribute__ ((gcc_struct));
1060 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_DBTableEntry;
1064 struct DBTableEntry * prev;
1065 struct DBTableEntry * next;
1067 struct Identifier * id;
1072 struct TypeName * dataType;
1074 } __attribute__ ((gcc_struct));
1075 struct __ecereNameSpace__ecere__sys__OldList * items;
1076 } __attribute__ ((gcc_struct));
1077 } __attribute__ ((gcc_struct));
1079 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_DBIndexItem;
1083 struct DBIndexItem * prev;
1084 struct DBIndexItem * next;
1085 struct Identifier * id;
1087 } __attribute__ ((gcc_struct));
1089 extern YYSTYPE yylval;
1091 extern struct Location yylloc;
1093 static struct __ecereNameSpace__ecere__sys__OldList * tableStatements, * indexStatements, * addFieldStatements;
1095 static int numIndexes;
1097 static struct External * addAfter;
1099 static void ProcessDeclaration(struct Declaration * decl);
1101 static void ProcessMemberInit(struct MemberInit * init);
1103 static void ProcessClassFunction(struct ClassFunction * func);
1105 static void ProcessProperty(struct PropertyDef * def);
1107 static void ProcessStatement(struct Statement * stmt);
1109 static void ProcessInitializer(struct Initializer * initializer);
1111 static void ProcessSpecifier(struct Specifier * spec)
1119 if(spec->definitions)
1121 struct ClassDef * def;
1123 for(def = (*spec->definitions).first; def; def = def->next)
1128 ProcessDeclaration(def->decl);
1132 struct MemberInit * init;
1134 for(init = (*def->defProperties).first; init; init = init->next)
1136 ProcessMemberInit(init);
1141 ProcessClassFunction(def->function);
1144 if(def->propertyDef)
1146 ProcessProperty(def->propertyDef);
1150 if(def->propertyWatch && def->propertyWatch->compound)
1152 ProcessStatement(def->propertyWatch->compound);
1156 if(def->initializer)
1157 ProcessInitializer(def->initializer);
1167 static void ProcessIdentifier(struct Identifier * id)
1171 static void ProcessInstance(struct Instantiation * inst);
1173 extern size_t strlen(const char * );
1175 extern void * memcpy(void * , const void * , size_t size);
1177 extern void __ecereNameSpace__ecere__sys__ChangeCh(char * string, char ch1, char ch2);
1179 extern int sprintf(char * , const char * , ...);
1181 extern void FreeExpContents(struct Expression * exp);
1183 extern struct Identifier * MkIdentifier(const char * string);
1185 extern struct Statement * MkCompoundStmt(struct __ecereNameSpace__ecere__sys__OldList * declarations, struct __ecereNameSpace__ecere__sys__OldList * statements);
1187 extern struct __ecereNameSpace__ecere__sys__OldList * MkList(void);
1189 extern struct Context * curContext;
1191 extern struct Declaration * MkDeclaration(struct __ecereNameSpace__ecere__sys__OldList * specifiers, struct __ecereNameSpace__ecere__sys__OldList * initDeclarators);
1193 extern struct __ecereNameSpace__ecere__sys__OldList * MkListOne(void * item);
1195 extern struct Specifier * MkSpecifierName(const char * name);
1197 extern struct InitDeclarator * MkInitDeclarator(struct Declarator * declarator, struct Initializer * initializer);
1199 extern struct Declarator * MkDeclaratorIdentifier(struct Identifier * id);
1201 extern struct Specifier * MkSpecifier(int specifier);
1203 extern struct Initializer * MkInitializerAssignment(struct Expression * exp);
1205 extern struct Expression * MkExpIdentifier(struct Identifier * id);
1207 extern struct Statement * MkIfStmt(struct __ecereNameSpace__ecere__sys__OldList * exp, struct Statement * statement, struct Statement * elseStmt);
1209 extern struct Statement * MkReturnStmt(struct __ecereNameSpace__ecere__sys__OldList * exp);
1211 extern struct Expression * MkExpConstant(const char * string);
1213 extern struct Statement * MkExpressionStmt(struct __ecereNameSpace__ecere__sys__OldList * expressions);
1215 extern struct Expression * MkExpOp(struct Expression * exp1, int op, struct Expression * exp2);
1217 extern struct Expression * CopyExpression(struct Expression * exp);
1219 extern struct Expression * MkExpCall(struct Expression * expression, struct __ecereNameSpace__ecere__sys__OldList * arguments);
1221 extern struct Expression * MkExpMember(struct Expression * expression, struct Identifier * member);
1223 extern struct Declarator * MkDeclaratorArray(struct Declarator * declarator, struct Expression * exp);
1225 extern struct Initializer * MkInitializerList(struct __ecereNameSpace__ecere__sys__OldList * list);
1227 extern void Compiler_Error(const char * format, ...);
1229 extern const char * __ecereNameSpace__ecere__GetTranslatedString(const char * name, const char * string, const char * stringAndContext);
1231 extern void * __ecereNameSpace__ecere__com__eInstance_New(struct __ecereNameSpace__ecere__com__Class * _class);
1233 void __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add(struct __ecereNameSpace__ecere__sys__OldList * this, void * item);
1235 static void ProcessExpression(struct Expression * exp)
1240 ProcessExpression(exp->_new.size);
1243 ProcessExpression(exp->_renew.exp);
1244 ProcessExpression(exp->_renew.size);
1249 ProcessIdentifier(exp->identifier);
1252 ProcessInstance(exp->instance);
1259 ProcessExpression(exp->op.exp1);
1263 ProcessExpression(exp->op.exp2);
1268 struct Expression * expression;
1270 for(expression = (*exp->list).first; expression; expression = expression->next)
1272 ProcessExpression(expression);
1278 struct Expression * expression;
1280 ProcessExpression(exp->index.exp);
1281 for(expression = (*exp->index.index).first; expression; expression = expression->next)
1283 ProcessExpression(expression);
1289 ProcessExpression(exp->call.exp);
1290 if(exp->call.arguments)
1292 struct Expression * expression;
1294 for(expression = (*exp->call.arguments).first; expression; expression = expression->next)
1296 ProcessExpression(expression);
1302 ProcessExpression(exp->member.exp);
1305 ProcessExpression(exp->member.exp);
1310 ProcessExpression(exp->cast.exp);
1313 ProcessExpression(exp->cond.cond);
1315 struct Expression * expression;
1317 for(expression = (*exp->cond.exp).first; expression; expression = expression->next)
1319 ProcessExpression(expression);
1322 ProcessExpression(exp->cond.elseExp);
1328 char tableName[1024];
1330 int len = strlen(exp->db.table);
1332 memcpy(tableName, exp->db.table + 1, len - 2);
1333 tableName[len - 2] = (char)0;
1334 __ecereNameSpace__ecere__sys__ChangeCh(tableName, ' ', '_');
1335 sprintf(name, "__ecereDBField_%s_%s", tableName, exp->db.id->string);
1336 FreeExpContents(exp);
1338 exp->identifier = MkIdentifier(name);
1343 char tableName[1024];
1345 int len = strlen(exp->db.table);
1347 memcpy(tableName, exp->db.table + 1, len - 2);
1348 tableName[len - 2] = (char)0;
1349 __ecereNameSpace__ecere__sys__ChangeCh(tableName, ' ', '_');
1350 sprintf(name, "__ecereDBTable_%s", tableName);
1351 FreeExpContents(exp);
1353 exp->identifier = MkIdentifier(name);
1358 char tableName[1024];
1360 int len = strlen(exp->db.table);
1362 memcpy(tableName, exp->db.table + 1, len - 2);
1363 tableName[len - 2] = (char)0;
1364 __ecereNameSpace__ecere__sys__ChangeCh(tableName, ' ', '_');
1365 sprintf(name, "__ecereDBIndex_%s_%s", tableName, exp->db.id->string);
1366 FreeExpContents(exp);
1368 exp->identifier = MkIdentifier(name);
1375 struct Statement * databaseOpenStmt = MkCompoundStmt(MkList(), MkList());
1376 struct Statement * compound;
1377 struct Statement * ifDBStmt;
1378 struct __ecereNameSpace__ecere__sys__OldList * args;
1379 char numIndexesString[16];
1381 databaseOpenStmt->compound.context = __extension__ ({
1382 struct Context * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Context);
1384 __ecereInstance1->parent = curContext, __ecereInstance1;
1386 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*databaseOpenStmt->compound.declarations), MkDeclaration(MkListOne(MkSpecifierName("Database")), MkListOne(MkInitDeclarator(MkDeclaratorIdentifier(MkIdentifier("db")), (((void *)0))))));
1388 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*args), MkSpecifier(STATIC));
1389 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*args), MkSpecifierName("bool"));
1390 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*databaseOpenStmt->compound.declarations), MkDeclaration(args, MkListOne(MkInitDeclarator(MkDeclaratorIdentifier(MkIdentifier("initialized")), MkInitializerAssignment(MkExpIdentifier(MkIdentifier("false")))))));
1391 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*databaseOpenStmt->compound.statements), MkIfStmt(MkListOne(MkExpIdentifier(MkIdentifier("initialized"))), MkReturnStmt(MkListOne(MkExpConstant("0"))), (((void *)0))));
1392 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*databaseOpenStmt->compound.statements), MkExpressionStmt(MkListOne(MkExpOp(MkExpIdentifier(MkIdentifier("initialized")), '=', MkExpIdentifier(MkIdentifier("true"))))));
1394 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*args), CopyExpression(exp->dbopen.name));
1395 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*args), MkExpIdentifier(MkIdentifier("no")));
1396 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*databaseOpenStmt->compound.statements), MkExpressionStmt(MkListOne(MkExpOp(MkExpIdentifier(MkIdentifier("db")), '=', MkExpCall(MkExpMember(CopyExpression(exp->dbopen.ds), MkIdentifier("OpenDatabase")), args)))));
1397 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*databaseOpenStmt->compound.statements), MkIfStmt(MkListOne(MkExpOp((((void *)0)), '!', MkExpIdentifier(MkIdentifier("db")))), compound = MkCompoundStmt((((void *)0)), MkList()), (((void *)0))));
1398 compound->compound.context = __extension__ ({
1399 struct Context * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Context);
1401 __ecereInstance1->parent = databaseOpenStmt->compound.context, __ecereInstance1;
1404 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*args), exp->dbopen.name);
1405 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*args), MkExpIdentifier(MkIdentifier("create")));
1406 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*compound->compound.statements), MkExpressionStmt(MkListOne(MkExpOp(MkExpIdentifier(MkIdentifier("db")), '=', MkExpCall(MkExpMember(exp->dbopen.ds, MkIdentifier("OpenDatabase")), args)))));
1407 exp->dbopen.name = (((void *)0));
1408 exp->dbopen.ds = (((void *)0));
1409 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*databaseOpenStmt->compound.statements), MkIfStmt(MkListOne(MkExpIdentifier(MkIdentifier("db"))), ifDBStmt = MkCompoundStmt(MkList(), MkList()), (((void *)0))));
1410 ifDBStmt->compound.context = __extension__ ({
1411 struct Context * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Context);
1413 __ecereInstance1->parent = databaseOpenStmt->compound.context, __ecereInstance1;
1415 sprintf(numIndexesString, "%d", numIndexes);
1416 __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")))))))))));
1417 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*ifDBStmt->compound.statements), MkExpressionStmt(MkListOne(MkExpCall(MkExpMember(MkExpIdentifier(MkIdentifier("db")), MkIdentifier("Begin")), MkList()))));
1418 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*ifDBStmt->compound.statements), compound = MkCompoundStmt((((void *)0)), tableStatements));
1419 compound->compound.context = __extension__ ({
1420 struct Context * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Context);
1422 __ecereInstance1->parent = ifDBStmt->compound.context, __ecereInstance1;
1424 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*ifDBStmt->compound.statements), (compound = MkCompoundStmt((((void *)0)), addFieldStatements), compound->compound.context = __extension__ ({
1425 struct Context * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Context);
1427 __ecereInstance1->parent = ifDBStmt->compound.context, __ecereInstance1;
1429 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*ifDBStmt->compound.statements), compound = MkCompoundStmt((((void *)0)), indexStatements));
1430 compound->compound.context = __extension__ ({
1431 struct Context * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Context);
1433 __ecereInstance1->parent = ifDBStmt->compound.context, __ecereInstance1;
1435 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*ifDBStmt->compound.statements), MkExpressionStmt(MkListOne(MkExpCall(MkExpMember(MkExpIdentifier(MkIdentifier("db")), MkIdentifier("Commit")), MkList()))));
1437 exp->compound = databaseOpenStmt;
1438 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*databaseOpenStmt->compound.statements), MkExpressionStmt(MkListOne(MkExpIdentifier(MkIdentifier("db")))));
1439 tableStatements = (((void *)0));
1443 FreeExpContents(exp);
1444 Compiler_Error(__ecereNameSpace__ecere__GetTranslatedString("ec", "No database table defined in this module or database_open already used.\n", (((void *)0))));
1452 static void ProcessStatement(struct Statement * stmt)
1457 ProcessStatement(stmt->labeled.stmt);
1460 if(stmt->caseStmt.exp)
1462 ProcessExpression(stmt->caseStmt.exp);
1464 if(stmt->caseStmt.stmt)
1466 ProcessStatement(stmt->caseStmt.stmt);
1471 ProcessDeclaration(stmt->decl);
1476 struct Context * oldContext = curContext;
1478 curContext = stmt->compound.context;
1479 if(stmt->compound.declarations)
1481 struct Declaration * decl;
1483 for(decl = (*stmt->compound.declarations).first; decl; decl = decl->next)
1485 ProcessDeclaration(decl);
1488 if(stmt->compound.statements)
1490 struct Statement * statement;
1492 for(statement = (*stmt->compound.statements).first; statement; statement = statement->next)
1494 ProcessStatement(statement);
1497 curContext = oldContext;
1502 if(stmt->expressions)
1504 struct Expression * exp;
1506 for(exp = (*stmt->expressions).first; exp; exp = exp->next)
1508 ProcessExpression(exp);
1515 struct Expression * exp;
1517 for(exp = (*stmt->ifStmt.exp).first; exp; exp = exp->next)
1519 ProcessExpression(exp);
1521 if(stmt->ifStmt.stmt)
1523 ProcessStatement(stmt->ifStmt.stmt);
1525 if(stmt->ifStmt.elseStmt)
1527 ProcessStatement(stmt->ifStmt.elseStmt);
1533 struct Expression * exp;
1535 for(exp = (*stmt->switchStmt.exp).first; exp; exp = exp->next)
1537 ProcessExpression(exp);
1539 ProcessStatement(stmt->switchStmt.stmt);
1544 struct Expression * exp;
1546 if(stmt->whileStmt.exp)
1548 for(exp = (*stmt->whileStmt.exp).first; exp; exp = exp->next)
1550 ProcessExpression(exp);
1553 if(stmt->whileStmt.stmt)
1554 ProcessStatement(stmt->whileStmt.stmt);
1559 ProcessStatement(stmt->doWhile.stmt);
1560 if(stmt->doWhile.exp)
1562 struct Expression * exp;
1564 for(exp = (*stmt->doWhile.exp).first; exp; exp = exp->next)
1566 ProcessExpression(exp);
1573 struct Expression * exp;
1575 if(stmt->forStmt.init)
1577 ProcessStatement(stmt->forStmt.init);
1579 if(stmt->forStmt.check)
1581 ProcessStatement(stmt->forStmt.check);
1583 if(stmt->forStmt.increment)
1585 for(exp = (*stmt->forStmt.increment).first; exp; exp = exp->next)
1587 ProcessExpression(exp);
1590 if(stmt->forStmt.stmt)
1591 ProcessStatement(stmt->forStmt.stmt);
1601 if(stmt->expressions)
1603 struct Expression * exp;
1605 for(exp = (*stmt->expressions).first; exp; exp = exp->next)
1607 ProcessExpression(exp);
1614 struct Identifier * _watch;
1616 if(stmt->_watch.watcher)
1618 ProcessExpression(stmt->_watch.watcher);
1620 if(stmt->_watch.object)
1622 ProcessExpression(stmt->_watch.object);
1624 if(stmt->_watch.watches)
1626 for(_watch = (*stmt->_watch.watches).first; _watch; _watch = _watch->next)
1628 ProcessIdentifier(_watch);
1635 struct PropertyWatch * _watch;
1637 if(stmt->_watch.watcher)
1639 ProcessExpression(stmt->_watch.watcher);
1641 if(stmt->_watch.object)
1643 ProcessExpression(stmt->_watch.object);
1645 if(stmt->_watch.watches)
1647 for(_watch = (*stmt->_watch.watches).first; _watch; _watch = _watch->next)
1649 if(_watch->compound)
1651 ProcessStatement(_watch->compound);
1660 static void ProcessInitializer(struct Initializer * initializer)
1662 switch(initializer->type)
1666 struct Initializer * init;
1668 for(init = (*initializer->list).first; init; init = init->next)
1670 ProcessInitializer(init);
1675 ProcessExpression(initializer->exp);
1680 static void ProcessInitDeclarator(struct InitDeclarator * decl)
1682 if(decl->initializer)
1683 ProcessInitializer(decl->initializer);
1686 static void ProcessDeclaration(struct Declaration * decl)
1692 struct Specifier * spec;
1694 if(decl->specifiers)
1696 for(spec = (*decl->specifiers).first; spec; spec = spec->next)
1698 ProcessSpecifier(spec);
1705 if(decl->specifiers)
1707 struct Specifier * s;
1709 for(s = (*decl->specifiers).first; s; s = s->next)
1711 ProcessSpecifier(s);
1714 if(decl->declarators && (*decl->declarators).first)
1716 struct InitDeclarator * d;
1718 for(d = (*decl->declarators).first; d; d = d->next)
1720 ProcessInitDeclarator(d);
1726 ProcessInstance(decl->inst);
1731 static void ProcessFunction(struct FunctionDefinition * func)
1735 ProcessStatement(func->body);
1739 static void ProcessMemberInit(struct MemberInit * init)
1741 if(init->initializer)
1743 ProcessInitializer(init->initializer);
1747 static void ProcessInstance(struct Instantiation * inst)
1751 struct MembersInit * init;
1752 struct MemberInit * memberInit;
1754 for(init = (*inst->members).first; init; init = init->next)
1756 if(init->type == 0 && init->dataMembers)
1758 for(memberInit = (*init->dataMembers).first; memberInit; memberInit = memberInit->next)
1760 ProcessMemberInit(memberInit);
1765 ProcessClassFunction(init->function);
1771 static void ProcessClassFunction(struct ClassFunction * func)
1775 ProcessStatement(func->body);
1779 static void ProcessProperty(struct PropertyDef * def)
1783 ProcessStatement(def->getStmt);
1787 ProcessStatement(def->setStmt);
1791 static void ProcessClassDef(struct ClassDef * def)
1796 ProcessDeclaration(def->decl);
1800 struct MemberInit * init;
1802 for(init = (*def->defProperties).first; init; init = init->next)
1804 ProcessMemberInit(init);
1809 if(def->initializer)
1810 ProcessInitializer(def->initializer);
1813 ProcessClassFunction(def->function);
1816 if(def->propertyDef)
1818 ProcessProperty(def->propertyDef);
1822 if(def->propertyWatch && def->propertyWatch->compound)
1824 ProcessStatement(def->propertyWatch->compound);
1830 static void ProcessClass(struct ClassDefinition * _class)
1832 if(_class->definitions)
1834 struct ClassDef * def;
1836 for(def = (*_class->definitions).first; def; def = def->next)
1838 ProcessClassDef(def);
1843 static int curSymbolID = 0;
1845 extern struct External * MkExternalDeclaration(struct Declaration * declaration);
1847 extern struct __ecereNameSpace__ecere__sys__OldList * ast;
1849 extern struct Expression * MkExpString(const char * string);
1851 extern struct Expression * MkExpInstance(struct Instantiation * inst);
1853 extern struct Instantiation * MkInstantiation(struct Specifier * _class, struct Expression * exp, struct __ecereNameSpace__ecere__sys__OldList * members);
1855 extern struct MembersInit * MkMembersInitList(struct __ecereNameSpace__ecere__sys__OldList * dataMembers);
1857 extern struct MemberInit * MkMemberInit(struct __ecereNameSpace__ecere__sys__OldList * ids, struct Initializer * initializer);
1859 extern struct Context * PushContext(void);
1861 extern struct ClassDefinition * MkClass(struct Symbol * symbol, struct __ecereNameSpace__ecere__sys__OldList * baseSpecs, struct __ecereNameSpace__ecere__sys__OldList * definitions);
1863 extern struct Symbol * DeclClass(int symbolID, const char * name);
1865 extern struct Context * globalContext;
1867 extern void PopContext(struct Context * ctx);
1869 extern struct ClassDef * MkClassDefDefaultProperty(struct __ecereNameSpace__ecere__sys__OldList * defProperties);
1871 extern struct MemberInit * MkMemberInitExp(struct Expression * idExp, struct Initializer * initializer);
1873 extern struct External * MkExternalClass(struct ClassDefinition * _class);
1875 extern int strcmp(const char * , const char * );
1877 extern char * strcpy(char * , const char * );
1879 extern struct ClassDef * MkClassDefProperty(struct PropertyDef * propertyDef);
1881 extern struct PropertyDef * MkProperty(struct __ecereNameSpace__ecere__sys__OldList * specs, struct Declarator * decl, struct Identifier * id, struct Statement * setStmt, struct Statement * getStmt);
1883 extern struct __ecereNameSpace__ecere__sys__OldList * CopyList(struct __ecereNameSpace__ecere__sys__OldList * source, void * (* CopyFunction)(void * ));
1885 extern struct Specifier * CopySpecifier(struct Specifier * spec);
1887 extern struct Declarator * CopyDeclarator(struct Declarator * declarator);
1889 extern struct Declaration * MkDeclarationInst(struct Instantiation * inst);
1891 extern struct Identifier * CopyIdentifier(struct Identifier * id);
1893 extern struct Expression * MkExpClass(struct __ecereNameSpace__ecere__sys__OldList * specifiers, struct Declarator * decl);
1895 extern struct Expression * MkExpIndex(struct Expression * expression, struct __ecereNameSpace__ecere__sys__OldList * index);
1897 extern struct ClassDef * MkClassDefClassPropertyValue(struct Identifier * id, struct Initializer * initializer);
1899 extern struct Expression * MkExpDBTable(char * table);
1901 extern char * __ecereNameSpace__ecere__sys__CopyString(const char * string);
1903 extern struct Expression * MkExpDBField(char * table, struct Identifier * id);
1905 unsigned int __ecereMethod___ecereNameSpace__ecere__sys__OldList_Insert(struct __ecereNameSpace__ecere__sys__OldList * this, void * prevItem, void * item);
1907 static void ProcessDBTable(struct DBTableDef * table)
1909 struct __ecereNameSpace__ecere__sys__OldList * rowClassDefs = MkList(), * idClassDefs = (((void *)0));
1910 char tableName[1024];
1911 char rowClassName[1024];
1912 int len = strlen(table->name);
1913 unsigned int indexed = 0x0;
1915 char nameField[1024];
1916 struct __ecereNameSpace__ecere__sys__OldList * args;
1917 struct __ecereNameSpace__ecere__sys__OldList * members;
1918 int symbolID = curSymbolID;
1921 idClassDefs = MkList();
1922 nameField[0] = (char)0;
1923 memcpy(tableName, table->name + 1, len - 2);
1924 tableName[len - 2] = (char)0;
1925 __ecereNameSpace__ecere__sys__ChangeCh(tableName, ' ', '_');
1926 sprintf(tableID, "__ecereDBTable_%s", tableName);
1927 sprintf(rowClassName, "Row%s", tableName);
1928 __ecereNameSpace__ecere__sys__ChangeCh(rowClassName, ' ', '_');
1929 if(!tableStatements)
1931 tableStatements = MkList();
1932 indexStatements = MkList();
1933 addFieldStatements = MkList();
1936 struct External * external;
1938 external = MkExternalDeclaration(MkDeclaration(MkListOne(MkSpecifierName("Table")), MkListOne(MkInitDeclarator(MkDeclaratorIdentifier(MkIdentifier(tableID)), (((void *)0))))));
1939 external->declaration->declMode = table->declMode;
1940 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Insert((&*ast), addAfter, external);
1942 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*tableStatements), MkExpressionStmt(MkListOne(MkExpOp(MkExpIdentifier(MkIdentifier(tableID)), '=', MkExpCall(MkExpMember(MkExpIdentifier(MkIdentifier("db")), MkIdentifier("OpenTable")), args)))));
1943 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*args), MkExpString(table->name));
1945 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*args), MkExpInstance(MkInstantiation((((void *)0)), (((void *)0)), MkListOne(MkMembersInitList(members)))));
1946 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*members), MkMemberInit((((void *)0)), MkInitializerAssignment(MkExpIdentifier(MkIdentifier("tableRows")))));
1947 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*members), MkMemberInit((((void *)0)), MkInitializerAssignment(MkExpIdentifier(MkIdentifier("create")))));
1950 struct ClassDefinition * _class;
1951 struct ClassDef * def;
1952 struct External * external;
1953 struct __ecereNameSpace__ecere__sys__OldList * inheritanceSpecs = MkList();
1955 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*inheritanceSpecs), MkSpecifier(PRIVATE));
1956 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*inheritanceSpecs), MkSpecifierName("Row"));
1958 _class = MkClass(DeclClass(globalContext->nextID++, rowClassName), inheritanceSpecs, rowClassDefs);
1959 PopContext(curContext);
1960 def = MkClassDefDefaultProperty(MkListOne(MkMemberInitExp(MkExpIdentifier(MkIdentifier("tbl")), MkInitializerAssignment(MkExpIdentifier(MkIdentifier(tableID))))));
1961 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*rowClassDefs), def);
1962 _class->symbol->idCode = symbolID;
1963 _class->declMode = table->declMode;
1964 external = MkExternalClass(_class);
1965 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Insert((&*ast), addAfter, external);
1966 addAfter = external;
1968 if(table->definitions)
1970 struct DBTableEntry * entry;
1972 for(entry = (*table->definitions).first; entry; entry = entry->next)
1978 unsigned int isIndex = 0x0;
1980 struct __ecereNameSpace__ecere__sys__OldList * args;
1981 struct Specifier * spec = entry->dataType->qualifiers ? (struct Specifier *)(*entry->dataType->qualifiers).first : (((void *)0));
1983 sprintf(fieldID, "__ecereDBField_%s_%s", tableName, entry->id->string);
1986 if(!nameField[0] && spec->type == 1 && (!strcmp(spec->name, "String") || !strcmp(spec->name, "eda::CIString")))
1988 strcpy(nameField, entry->id->string);
1990 if(!indexed && spec->type == 1 && !strcmp(spec->name, table->symbol->string))
1992 struct Statement * rowSet = MkCompoundStmt(MkList(), MkList());
1994 struct ClassDef * def;
1996 numIndexes = ((numIndexes > 1) ? numIndexes : 1);
1999 sprintf(name, "_%s", entry->id->string);
2000 curContext = rowSet->compound.context = __extension__ ({
2001 struct Context * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Context);
2003 __ecereInstance1->parent = globalContext, __ecereInstance1;
2005 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*rowSet->compound.statements), MkExpressionStmt(MkListOne(MkExpCall(MkExpIdentifier(MkIdentifier("Find")), args = MkList()))));
2006 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*args), MkExpIdentifier(MkIdentifier(fieldID)));
2007 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*args), MkExpIdentifier(MkIdentifier("middle")));
2008 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*args), MkExpIdentifier(MkIdentifier("nil")));
2009 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*args), MkExpIdentifier(MkIdentifier("value")));
2010 curContext = globalContext;
2011 def = MkClassDefProperty(MkProperty(CopyList(entry->dataType->qualifiers, CopySpecifier), CopyDeclarator(entry->dataType->declarator), MkIdentifier(name), rowSet, (((void *)0))));
2012 def->propertyDef->symbol->id = def->propertyDef->symbol->idCode = symbolID;
2013 def->propertyDef->isDBProp = 0x1;
2014 def->memberAccess = 1;
2015 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*rowClassDefs), def);
2020 struct Statement * rowSet = MkCompoundStmt(MkList(), MkList()), * rowGet = MkCompoundStmt(MkList(), MkList());
2021 struct ClassDef * def;
2023 curContext = rowGet->compound.context = __extension__ ({
2024 struct Context * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Context);
2026 __ecereInstance1->parent = globalContext, __ecereInstance1;
2028 if(spec->type == 1 && spec->symbol && spec->symbol->registered && spec->symbol->registered->type == 1)
2030 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*rowGet->compound.declarations), MkDeclarationInst(MkInstantiation(MkSpecifierName(spec->name), MkExpIdentifier(MkIdentifier("d")), (((void *)0)))));
2034 struct Expression * exp;
2036 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*rowGet->compound.declarations), MkDeclaration(CopyList(entry->dataType->qualifiers, CopySpecifier), MkListOne(MkInitDeclarator(MkDeclaratorIdentifier(MkIdentifier("d")), MkInitializerAssignment(exp = MkExpConstant("0"))))));
2037 exp->destType = __extension__ ({
2038 struct Type * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Type);
2040 __ecereInstance1->kind = 3, __ecereInstance1->refCount = 1, __ecereInstance1;
2043 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*rowGet->compound.statements), MkExpressionStmt(MkListOne(MkExpCall(MkExpIdentifier(MkIdentifier("GetData")), args = MkList()))));
2044 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*args), MkExpIdentifier(MkIdentifier(fieldID)));
2045 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*args), MkExpIdentifier(MkIdentifier("d")));
2046 if(spec->type == 1 && spec->symbol && spec->symbol->registered && spec->symbol->registered->type == 1)
2048 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*rowGet->compound.statements), MkExpressionStmt(MkListOne(MkExpOp(MkExpIdentifier(MkIdentifier("value")), '=', MkExpIdentifier(MkIdentifier("d"))))));
2051 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*rowGet->compound.statements), MkReturnStmt(MkListOne(MkExpIdentifier(MkIdentifier("d")))));
2052 curContext = rowSet->compound.context = __extension__ ({
2053 struct Context * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Context);
2055 __ecereInstance1->parent = globalContext, __ecereInstance1;
2057 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*rowSet->compound.statements), MkExpressionStmt(MkListOne(MkExpCall(MkExpIdentifier(MkIdentifier("SetData")), args = MkList()))));
2058 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*args), MkExpIdentifier(MkIdentifier(fieldID)));
2059 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*args), MkExpIdentifier(MkIdentifier("value")));
2060 curContext = globalContext;
2061 def = MkClassDefProperty(MkProperty(CopyList(entry->dataType->qualifiers, CopySpecifier), entry->dataType->declarator, CopyIdentifier(entry->id), rowSet, rowGet));
2062 def->propertyDef->symbol->id = def->propertyDef->symbol->idCode = symbolID;
2063 def->propertyDef->isDBProp = 0x1;
2064 def->memberAccess = 1;
2065 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*rowClassDefs), def);
2068 struct External * external;
2070 external = MkExternalDeclaration(MkDeclaration(MkListOne(MkSpecifierName("Field")), MkListOne(MkInitDeclarator(MkDeclaratorIdentifier(MkIdentifier(fieldID)), (((void *)0))))));
2071 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*ast), external);
2072 external->declaration->declMode = table->declMode;
2074 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*addFieldStatements), MkExpressionStmt(MkListOne(MkExpOp(MkExpIdentifier(MkIdentifier(fieldID)), '=', MkExpCall(MkExpMember(MkExpIdentifier(MkIdentifier(tableID)), MkIdentifier("FindField")), args)))));
2075 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*args), MkExpString(entry->name));
2077 __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))));
2078 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*args), MkExpString(entry->name));
2079 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*args), MkExpClass(CopyList(entry->dataType->qualifiers, CopySpecifier), CopyDeclarator(entry->dataType->declarator)));
2080 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*args), MkExpConstant("0"));
2084 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*indexStatements), MkExpressionStmt(MkListOne(MkExpOp(MkExpMember(MkExpIndex(MkExpIdentifier(MkIdentifier("indexes")), MkListOne(MkExpConstant("0"))), MkIdentifier("field")), '=', MkExpIdentifier(MkIdentifier(fieldID))))));
2085 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*indexStatements), MkExpressionStmt(MkListOne(MkExpOp(MkExpMember(MkExpIndex(MkExpIdentifier(MkIdentifier("indexes")), MkListOne(MkExpConstant("0"))), MkIdentifier("order")), '=', MkExpIdentifier(MkIdentifier("ascending"))))));
2087 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*indexStatements), MkExpressionStmt(MkListOne(MkExpCall(MkExpMember(MkExpIdentifier(MkIdentifier(tableID)), MkIdentifier("Index")), args))));
2088 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*args), MkExpConstant("1"));
2089 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*args), MkExpIdentifier(MkIdentifier("indexes")));
2098 struct ClassDefinition * _class;
2099 struct External * external;
2100 struct ClassDef * def;
2101 struct Expression * exp;
2104 _class = MkClass(table->symbol, MkListOne(MkSpecifierName("Id")), idClassDefs);
2105 PopContext(curContext);
2106 _class->declMode = table->declMode;
2107 external = MkExternalClass(_class);
2108 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Insert((&*ast), addAfter, external);
2109 addAfter = external;
2110 def = MkClassDefClassPropertyValue(MkIdentifier("table"), MkInitializerAssignment(exp = MkExpOp((((void *)0)), '&', MkExpDBTable(__ecereNameSpace__ecere__sys__CopyString(table->name)))));
2111 ProcessExpression(exp);
2112 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*idClassDefs), def);
2115 def = MkClassDefClassPropertyValue(MkIdentifier("nameField"), MkInitializerAssignment(exp = MkExpOp((((void *)0)), '&', MkExpDBField(__ecereNameSpace__ecere__sys__CopyString(table->name), MkIdentifier(nameField)))));
2116 ProcessExpression(exp);
2117 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*idClassDefs), def);
2120 if(table->definitions)
2122 struct DBTableEntry * entry;
2124 for(entry = (*table->definitions).first; entry; entry = entry->next)
2131 struct __ecereNameSpace__ecere__sys__OldList * args;
2132 struct Specifier * spec = entry->dataType->qualifiers ? (struct Specifier *)(*entry->dataType->qualifiers).first : (((void *)0));
2134 sprintf(fieldID, "__ecereDBField_%s_%s", tableName, entry->id->string);
2135 if(idClassDefs && spec)
2137 struct Statement * idSet = MkCompoundStmt(MkList(), MkList()), * idGet = MkCompoundStmt(MkList(), MkList());
2138 struct ClassDef * def;
2140 curContext = idGet->compound.context = __extension__ ({
2141 struct Context * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Context);
2143 __ecereInstance1->parent = globalContext, __ecereInstance1;
2145 __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"))))))))));
2146 if(spec->type == 1 && spec->symbol && spec->symbol->registered && spec->symbol->registered->type == 1)
2148 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*idGet->compound.declarations), MkDeclarationInst(MkInstantiation(MkSpecifierName(spec->name), MkExpIdentifier(MkIdentifier("d")), (((void *)0)))));
2152 struct Expression * exp;
2154 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*idGet->compound.declarations), MkDeclaration(CopyList(entry->dataType->qualifiers, CopySpecifier), MkListOne(MkInitDeclarator(MkDeclaratorIdentifier(MkIdentifier("d")), MkInitializerAssignment(exp = MkExpConstant("0"))))));
2155 exp->destType = __extension__ ({
2156 struct Type * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Type);
2158 __ecereInstance1->kind = 3, __ecereInstance1->refCount = 1, __ecereInstance1;
2161 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*idGet->compound.statements), MkExpressionStmt(MkListOne(MkExpCall(MkExpMember(MkExpIdentifier(MkIdentifier("r")), MkIdentifier("GetData")), args = MkList()))));
2162 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*args), MkExpIdentifier(MkIdentifier(fieldID)));
2163 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*args), MkExpIdentifier(MkIdentifier("d")));
2164 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*idGet->compound.statements), MkExpressionStmt(MkListOne(MkExpOp((((void *)0)), DELETE, MkExpIdentifier(MkIdentifier("r"))))));
2165 if(spec->type == 1 && spec->symbol && spec->symbol->registered && spec->symbol->registered->type == 1)
2167 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*idGet->compound.statements), MkExpressionStmt(MkListOne(MkExpOp(MkExpIdentifier(MkIdentifier("value")), '=', MkExpIdentifier(MkIdentifier("d"))))));
2170 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*idGet->compound.statements), MkReturnStmt(MkListOne(MkExpIdentifier(MkIdentifier("d")))));
2171 curContext = idSet->compound.context = __extension__ ({
2172 struct Context * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Context);
2174 __ecereInstance1->parent = globalContext, __ecereInstance1;
2176 __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"))))))))));
2177 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*idSet->compound.statements), MkExpressionStmt(MkListOne(MkExpCall(MkExpMember(MkExpIdentifier(MkIdentifier("r")), MkIdentifier("SetData")), args = MkList()))));
2178 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*args), MkExpIdentifier(MkIdentifier(fieldID)));
2179 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*args), MkExpIdentifier(MkIdentifier("value")));
2180 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*idSet->compound.statements), MkExpressionStmt(MkListOne(MkExpOp((((void *)0)), DELETE, MkExpIdentifier(MkIdentifier("r"))))));
2181 curContext = globalContext;
2182 def = MkClassDefProperty(MkProperty(CopyList(entry->dataType->qualifiers, CopySpecifier), CopyDeclarator(entry->dataType->declarator), CopyIdentifier(entry->id), idSet, idGet));
2183 def->propertyDef->symbol->id = def->propertyDef->symbol->idCode = symbolID;
2184 def->propertyDef->isDBProp = 0x1;
2185 def->memberAccess = 1;
2186 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*idClassDefs), def);
2192 if(entry->items && (*entry->items).count)
2195 struct DBIndexItem * item;
2197 unsigned int needTable = 0x0;
2200 if(entry->id || indexed)
2202 if(entry->id || (*entry->items).count == 1)
2204 struct External * external;
2205 struct Identifier * id = entry->id ? entry->id : ((struct DBIndexItem *)(*entry->items).first)->id;
2207 sprintf(indexID, "__ecereDBIndex_%s_%s", tableName, id->string);
2208 external = MkExternalDeclaration(MkDeclaration(MkListOne(MkSpecifierName("Table")), MkListOne(MkInitDeclarator(MkDeclaratorIdentifier(MkIdentifier(indexID)), (((void *)0))))));
2209 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*ast), external);
2210 external->declaration->declMode = table->declMode;
2214 Compiler_Error(__ecereNameSpace__ecere__GetTranslatedString("ec", "Multiple field index requires a name\n", (((void *)0))));
2219 strcpy(indexID, tableID);
2221 for(c = 0, item = (*entry->items).first; item; item = item->next, c++)
2225 sprintf(num, "%d", c);
2226 sprintf(fieldID, "__ecereDBField_%s_%s", tableName, item->id->string);
2227 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*indexStatements), MkExpressionStmt(MkListOne(MkExpOp(MkExpMember(MkExpIndex(MkExpIdentifier(MkIdentifier("indexes")), MkListOne(MkExpConstant(num))), MkIdentifier("field")), '=', MkExpIdentifier(MkIdentifier(fieldID))))));
2228 __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"))))));
2230 sprintf(num, "%d", c);
2231 numIndexes = ((numIndexes > c) ? numIndexes : c);
2235 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*indexStatements), MkExpressionStmt(MkListOne(MkExpOp(MkExpIdentifier(MkIdentifier(indexID)), '=', MkExpCall(MkExpMember(MkExpIdentifier(MkIdentifier("db")), MkIdentifier("OpenTable")), args)))));
2236 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*args), MkExpString(table->name));
2238 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*args), MkExpInstance(MkInstantiation((((void *)0)), (((void *)0)), MkListOne(MkMembersInitList(members)))));
2239 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*members), MkMemberInit((((void *)0)), MkInitializerAssignment(MkExpIdentifier(MkIdentifier("tableRows")))));
2242 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*indexStatements), MkExpressionStmt(MkListOne(MkExpCall(MkExpMember(MkExpIdentifier(MkIdentifier(indexID)), MkIdentifier("Index")), args))));
2243 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*args), MkExpConstant(num));
2244 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*args), MkExpIdentifier(MkIdentifier("indexes")));
2253 extern unsigned int inCompiler;
2255 extern void PrePreProcessClassDefinitions(void);
2257 extern struct External * curExternal;
2259 void ProcessDBTableDefinitions()
2261 struct External * external;
2263 addAfter = (((void *)0));
2264 curContext = globalContext;
2266 PrePreProcessClassDefinitions();
2267 DeclClass(0, "Field");
2268 DeclClass(0, "Table");
2269 DeclClass(0, "Row");
2272 if(ast != (((void *)0)))
2274 for(external = (*ast).first; external; external = external->next)
2276 curExternal = external;
2277 if(external->symbol)
2278 curSymbolID = external->symbol->idCode;
2279 addAfter = external->prev;
2280 switch(external->type)
2283 ProcessDBTable(external->table);
2287 for(external = (*ast).first; external; external = external->next)
2289 curExternal = external;
2290 if(external->symbol)
2291 curSymbolID = external->symbol->idCode;
2292 addAfter = external->prev;
2293 switch(external->type)
2296 ProcessFunction(external->function);
2299 ProcessDeclaration(external->declaration);
2302 ProcessClass(external->_class);
2307 curContext = globalContext;
2310 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__GlobalFunction;
2312 struct __ecereNameSpace__ecere__com__GlobalFunction;
2314 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);
2316 void __ecereRegisterModule_dbpass(struct __ecereNameSpace__ecere__com__Instance * module)
2318 struct __ecereNameSpace__ecere__com__Class * class;
2320 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ProcessDBTableDefinitions", "void ProcessDBTableDefinitions(void)", ProcessDBTableDefinitions, module, 1);
2323 void __ecereUnregisterModule_dbpass(struct __ecereNameSpace__ecere__com__Instance * module)