89692dacd9cdd038e753b6a4a6d2f2bae71ea404
[sdk] / compiler / bootstrap / libec / bootstrap / dbpass.c
1 /* Code generated from eC source file: dbpass.ec */
2 #if defined(__GNUC__)
3 typedef long long int64;
4 typedef unsigned long long uint64;
5 #ifndef _WIN32
6 #define __declspec(x)
7 #endif
8 #elif defined(__TINYC__)
9 #include <stdarg.h>
10 #define __builtin_va_list va_list
11 #define __builtin_va_start va_start
12 #define __builtin_va_end va_end
13 #ifdef _WIN32
14 #define strcasecmp stricmp
15 #define strncasecmp strnicmp
16 #define __declspec(x) __attribute__((x))
17 #else
18 #define __declspec(x)
19 #endif
20 typedef long long int64;
21 typedef unsigned long long uint64;
22 #else
23 typedef __int64 int64;
24 typedef unsigned __int64 uint64;
25 #endif
26 #ifdef __BIG_ENDIAN__
27 #define __ENDIAN_PAD(x) (8 - (x))
28 #else
29 #define __ENDIAN_PAD(x) 0
30 #endif
31 #include <stdint.h>
32 #include <sys/types.h>
33 struct __ecereNameSpace__ecere__com__Instance;
34
35 extern void *  __ecereNameSpace__ecere__com__eSystem_New(unsigned int size);
36
37 extern void *  __ecereNameSpace__ecere__com__eSystem_New0(unsigned int size);
38
39 extern void *  __ecereNameSpace__ecere__com__eSystem_Renew(void *  memory, unsigned int size);
40
41 extern void *  __ecereNameSpace__ecere__com__eSystem_Renew0(void *  memory, unsigned int size);
42
43 extern void __ecereNameSpace__ecere__com__eSystem_Delete(void *  memory);
44
45 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__sys__BTNode;
46
47 struct __ecereNameSpace__ecere__sys__BTNode;
48
49 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__sys__BinaryTree;
50
51 struct __ecereNameSpace__ecere__sys__BinaryTree
52 {
53 struct __ecereNameSpace__ecere__sys__BTNode * root;
54 int count;
55 int (*  CompareKey)(struct __ecereNameSpace__ecere__sys__BinaryTree * tree, uintptr_t a, uintptr_t b);
56 void (*  FreeKey)(void *  key);
57 } __attribute__ ((gcc_struct));
58
59 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__sys__OldList;
60
61 struct __ecereNameSpace__ecere__sys__OldList
62 {
63 void *  first;
64 void *  last;
65 int count;
66 unsigned int offset;
67 unsigned int circ;
68 } __attribute__ ((gcc_struct));
69
70 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__Method;
71
72 struct __ecereNameSpace__ecere__com__Method
73 {
74 const char *  name;
75 struct __ecereNameSpace__ecere__com__Method * parent;
76 struct __ecereNameSpace__ecere__com__Method * left;
77 struct __ecereNameSpace__ecere__com__Method * right;
78 int depth;
79 int (*  function)();
80 int vid;
81 int type;
82 struct __ecereNameSpace__ecere__com__Class * _class;
83 void *  symbol;
84 const char *  dataTypeString;
85 struct Type * dataType;
86 int memberAccess;
87 } __attribute__ ((gcc_struct));
88
89 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__Property;
90
91 struct __ecereNameSpace__ecere__com__Property
92 {
93 struct __ecereNameSpace__ecere__com__Property * prev;
94 struct __ecereNameSpace__ecere__com__Property * next;
95 const char *  name;
96 unsigned int isProperty;
97 int memberAccess;
98 int id;
99 struct __ecereNameSpace__ecere__com__Class * _class;
100 const char *  dataTypeString;
101 struct __ecereNameSpace__ecere__com__Class * dataTypeClass;
102 struct Type * dataType;
103 void (*  Set)(void * , int);
104 int (*  Get)(void * );
105 unsigned int (*  IsSet)(void * );
106 void *  data;
107 void *  symbol;
108 int vid;
109 unsigned int conversion;
110 unsigned int watcherOffset;
111 const char *  category;
112 unsigned int compiled;
113 unsigned int selfWatchable;
114 unsigned int isWatchable;
115 } __attribute__ ((gcc_struct));
116
117 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_CodePosition;
118
119 struct CodePosition
120 {
121 int line;
122 int charPos;
123 int pos;
124 int included;
125 } __attribute__ ((gcc_struct));
126
127 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Location;
128
129 struct Location
130 {
131 struct CodePosition start;
132 struct CodePosition end;
133 } __attribute__ ((gcc_struct));
134
135 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Attrib;
136
137 struct Attrib;
138
139 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_ExtDecl;
140
141 struct ExtDecl;
142
143 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_ClassDefinition;
144
145 struct ClassDefinition
146 {
147 struct ClassDefinition * prev;
148 struct ClassDefinition * next;
149 struct Location loc;
150 struct Specifier * _class;
151 struct __ecereNameSpace__ecere__sys__OldList *  baseSpecs;
152 struct __ecereNameSpace__ecere__sys__OldList *  definitions;
153 struct Symbol * symbol;
154 struct Location blockStart;
155 struct Location nameLoc;
156 int endid;
157 int declMode;
158 unsigned int deleteWatchable;
159 } __attribute__ ((gcc_struct));
160
161 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Context;
162
163 struct Context
164 {
165 struct Context * parent;
166 struct __ecereNameSpace__ecere__sys__BinaryTree types;
167 struct __ecereNameSpace__ecere__sys__BinaryTree classes;
168 struct __ecereNameSpace__ecere__sys__BinaryTree symbols;
169 struct __ecereNameSpace__ecere__sys__BinaryTree structSymbols;
170 int nextID;
171 int simpleID;
172 struct __ecereNameSpace__ecere__sys__BinaryTree templateTypes;
173 struct ClassDefinition * classDef;
174 unsigned int templateTypesOnly;
175 unsigned int hasNameSpace;
176 } __attribute__ ((gcc_struct));
177
178 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Instantiation;
179
180 struct Instantiation
181 {
182 struct Instantiation * prev;
183 struct Instantiation * next;
184 struct Location loc;
185 struct Specifier * _class;
186 struct Expression * exp;
187 struct __ecereNameSpace__ecere__sys__OldList *  members;
188 struct Symbol * symbol;
189 unsigned int fullSet;
190 unsigned int isConstant;
191 unsigned char *  data;
192 struct Location nameLoc;
193 struct Location insideLoc;
194 unsigned int built;
195 } __attribute__ ((gcc_struct));
196
197 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Declaration;
198
199 struct Declaration
200 {
201 struct Declaration * prev;
202 struct Declaration * next;
203 struct Location loc;
204 int type;
205 union
206 {
207 struct
208 {
209 struct __ecereNameSpace__ecere__sys__OldList *  specifiers;
210 struct __ecereNameSpace__ecere__sys__OldList *  declarators;
211 } __attribute__ ((gcc_struct)) __anon1;
212 struct Instantiation * inst;
213 struct
214 {
215 struct Identifier * id;
216 struct Expression * exp;
217 } __attribute__ ((gcc_struct)) __anon2;
218 } __attribute__ ((gcc_struct)) __anon1;
219 struct Specifier * extStorage;
220 struct Symbol * symbol;
221 int declMode;
222 } __attribute__ ((gcc_struct));
223
224 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Statement;
225
226 struct Statement
227 {
228 struct Statement * prev;
229 struct Statement * next;
230 struct Location loc;
231 int type;
232 union
233 {
234 struct __ecereNameSpace__ecere__sys__OldList *  expressions;
235 struct
236 {
237 struct Identifier * id;
238 struct Statement * stmt;
239 } __attribute__ ((gcc_struct)) labeled;
240 struct
241 {
242 struct Expression * exp;
243 struct Statement * stmt;
244 } __attribute__ ((gcc_struct)) caseStmt;
245 struct
246 {
247 struct __ecereNameSpace__ecere__sys__OldList * declarations;
248 struct __ecereNameSpace__ecere__sys__OldList * statements;
249 struct Context * context;
250 unsigned int isSwitch;
251 } __attribute__ ((gcc_struct)) compound;
252 struct
253 {
254 struct __ecereNameSpace__ecere__sys__OldList * exp;
255 struct Statement * stmt;
256 struct Statement * elseStmt;
257 } __attribute__ ((gcc_struct)) ifStmt;
258 struct
259 {
260 struct __ecereNameSpace__ecere__sys__OldList * exp;
261 struct Statement * stmt;
262 } __attribute__ ((gcc_struct)) switchStmt;
263 struct
264 {
265 struct __ecereNameSpace__ecere__sys__OldList * exp;
266 struct Statement * stmt;
267 } __attribute__ ((gcc_struct)) whileStmt;
268 struct
269 {
270 struct __ecereNameSpace__ecere__sys__OldList * exp;
271 struct Statement * stmt;
272 } __attribute__ ((gcc_struct)) doWhile;
273 struct
274 {
275 struct Statement * init;
276 struct Statement * check;
277 struct __ecereNameSpace__ecere__sys__OldList * increment;
278 struct Statement * stmt;
279 } __attribute__ ((gcc_struct)) forStmt;
280 struct
281 {
282 struct Identifier * id;
283 } __attribute__ ((gcc_struct)) gotoStmt;
284 struct
285 {
286 struct Specifier * spec;
287 char * statements;
288 struct __ecereNameSpace__ecere__sys__OldList * inputFields;
289 struct __ecereNameSpace__ecere__sys__OldList * outputFields;
290 struct __ecereNameSpace__ecere__sys__OldList * clobberedFields;
291 } __attribute__ ((gcc_struct)) asmStmt;
292 struct
293 {
294 struct Expression * watcher;
295 struct Expression * object;
296 struct __ecereNameSpace__ecere__sys__OldList * watches;
297 } __attribute__ ((gcc_struct)) _watch;
298 struct
299 {
300 struct Identifier * id;
301 struct __ecereNameSpace__ecere__sys__OldList * exp;
302 struct __ecereNameSpace__ecere__sys__OldList * filter;
303 struct Statement * stmt;
304 } __attribute__ ((gcc_struct)) forEachStmt;
305 struct Declaration * decl;
306 } __attribute__ ((gcc_struct)) __anon1;
307 } __attribute__ ((gcc_struct));
308
309 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_TypeName;
310
311 struct TypeName
312 {
313 struct TypeName * prev;
314 struct TypeName * next;
315 struct Location loc;
316 struct __ecereNameSpace__ecere__sys__OldList *  qualifiers;
317 struct Declarator * declarator;
318 int classObjectType;
319 struct Expression * bitCount;
320 } __attribute__ ((gcc_struct));
321
322 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Initializer;
323
324 struct Initializer
325 {
326 struct Initializer * prev;
327 struct Initializer * next;
328 struct Location loc;
329 int type;
330 union
331 {
332 struct Expression * exp;
333 struct __ecereNameSpace__ecere__sys__OldList *  list;
334 } __attribute__ ((gcc_struct)) __anon1;
335 unsigned int isConstant;
336 struct Identifier * id;
337 } __attribute__ ((gcc_struct));
338
339 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__DataValue;
340
341 struct __ecereNameSpace__ecere__com__DataValue
342 {
343 union
344 {
345 char c;
346 unsigned char uc;
347 short s;
348 unsigned short us;
349 int i;
350 unsigned int ui;
351 void *  p;
352 float f;
353 double d;
354 long long i64;
355 uint64 ui64;
356 } __attribute__ ((gcc_struct)) __anon1;
357 } __attribute__ ((gcc_struct));
358
359 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Expression;
360
361 struct Expression
362 {
363 struct Expression * prev;
364 struct Expression * next;
365 struct Location loc;
366 int type;
367 union
368 {
369 struct
370 {
371 char *  constant;
372 struct Identifier * identifier;
373 } __attribute__ ((gcc_struct)) __anon1;
374 struct Statement * compound;
375 struct Instantiation * instance;
376 struct
377 {
378 char *  string;
379 unsigned int intlString;
380 } __attribute__ ((gcc_struct)) __anon2;
381 struct __ecereNameSpace__ecere__sys__OldList *  list;
382 struct
383 {
384 struct __ecereNameSpace__ecere__sys__OldList * specifiers;
385 struct Declarator * decl;
386 } __attribute__ ((gcc_struct)) _classExp;
387 struct
388 {
389 struct Identifier * id;
390 } __attribute__ ((gcc_struct)) classData;
391 struct
392 {
393 struct Expression * exp;
394 struct __ecereNameSpace__ecere__sys__OldList * arguments;
395 struct Location argLoc;
396 } __attribute__ ((gcc_struct)) call;
397 struct
398 {
399 struct Expression * exp;
400 struct __ecereNameSpace__ecere__sys__OldList * index;
401 } __attribute__ ((gcc_struct)) index;
402 struct
403 {
404 struct Expression * exp;
405 struct Identifier * member;
406 int memberType;
407 unsigned int thisPtr;
408 } __attribute__ ((gcc_struct)) member;
409 struct
410 {
411 int op;
412 struct Expression * exp1;
413 struct Expression * exp2;
414 } __attribute__ ((gcc_struct)) op;
415 struct TypeName * typeName;
416 struct Specifier * _class;
417 struct
418 {
419 struct TypeName * typeName;
420 struct Expression * exp;
421 } __attribute__ ((gcc_struct)) cast;
422 struct
423 {
424 struct Expression * cond;
425 struct __ecereNameSpace__ecere__sys__OldList * exp;
426 struct Expression * elseExp;
427 } __attribute__ ((gcc_struct)) cond;
428 struct
429 {
430 struct TypeName * typeName;
431 struct Expression * size;
432 } __attribute__ ((gcc_struct)) _new;
433 struct
434 {
435 struct TypeName * typeName;
436 struct Expression * size;
437 struct Expression * exp;
438 } __attribute__ ((gcc_struct)) _renew;
439 struct
440 {
441 char * table;
442 struct Identifier * id;
443 } __attribute__ ((gcc_struct)) db;
444 struct
445 {
446 struct Expression * ds;
447 struct Expression * name;
448 } __attribute__ ((gcc_struct)) dbopen;
449 struct
450 {
451 struct TypeName * typeName;
452 struct Initializer * initializer;
453 } __attribute__ ((gcc_struct)) initializer;
454 struct
455 {
456 struct Expression * exp;
457 struct TypeName * typeName;
458 } __attribute__ ((gcc_struct)) vaArg;
459 } __attribute__ ((gcc_struct)) __anon1;
460 unsigned int debugValue;
461 struct __ecereNameSpace__ecere__com__DataValue val;
462 uint64 address;
463 unsigned int hasAddress;
464 struct Type * expType;
465 struct Type * destType;
466 unsigned int usage;
467 int tempCount;
468 unsigned int byReference;
469 unsigned int isConstant;
470 unsigned int addedThis;
471 unsigned int needCast;
472 unsigned int thisPtr;
473 unsigned int opDestType;
474 unsigned int needTemplateCast;
475 } __attribute__ ((gcc_struct));
476
477 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_TemplateDatatype;
478
479 struct TemplateDatatype;
480
481 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_TemplateArgument;
482
483 struct TemplateArgument;
484
485 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_TemplateParameter;
486
487 struct TemplateParameter;
488
489 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Specifier;
490
491 struct Specifier
492 {
493 struct Specifier * prev;
494 struct Specifier * next;
495 struct Location loc;
496 int type;
497 union
498 {
499 int specifier;
500 struct
501 {
502 struct ExtDecl * extDecl;
503 char *  name;
504 struct Symbol * symbol;
505 struct __ecereNameSpace__ecere__sys__OldList *  templateArgs;
506 } __attribute__ ((gcc_struct)) __anon1;
507 struct
508 {
509 struct Identifier * id;
510 struct __ecereNameSpace__ecere__sys__OldList *  list;
511 struct __ecereNameSpace__ecere__sys__OldList *  baseSpecs;
512 struct __ecereNameSpace__ecere__sys__OldList *  definitions;
513 unsigned int addNameSpace;
514 struct Context * ctx;
515 struct ExtDecl * extDeclStruct;
516 } __attribute__ ((gcc_struct)) __anon2;
517 struct Expression * expression;
518 struct Specifier * _class;
519 struct TemplateParameter * templateParameter;
520 } __attribute__ ((gcc_struct)) __anon1;
521 } __attribute__ ((gcc_struct));
522
523 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Identifier;
524
525 struct Identifier
526 {
527 struct Identifier * prev;
528 struct Identifier * next;
529 struct Location loc;
530 struct Symbol * classSym;
531 struct Specifier * _class;
532 char *  string;
533 struct Identifier * badID;
534 } __attribute__ ((gcc_struct));
535
536 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Pointer;
537
538 struct Pointer;
539
540 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Declarator;
541
542 struct Declarator;
543
544 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_FunctionDefinition;
545
546 struct FunctionDefinition
547 {
548 struct FunctionDefinition * prev;
549 struct FunctionDefinition * next;
550 struct Location loc;
551 struct __ecereNameSpace__ecere__sys__OldList *  specifiers;
552 struct Declarator * declarator;
553 struct __ecereNameSpace__ecere__sys__OldList *  declarations;
554 struct Statement * body;
555 struct __ecereNameSpace__ecere__com__Class * _class;
556 struct __ecereNameSpace__ecere__sys__OldList attached;
557 int declMode;
558 struct Type * type;
559 struct Symbol * propSet;
560 int tempCount;
561 unsigned int propertyNoThis;
562 } __attribute__ ((gcc_struct));
563
564 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_DBTableDef;
565
566 struct DBTableDef
567 {
568 char *  name;
569 struct Symbol * symbol;
570 struct __ecereNameSpace__ecere__sys__OldList *  definitions;
571 int declMode;
572 } __attribute__ ((gcc_struct));
573
574 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_External;
575
576 struct External
577 {
578 struct External * prev;
579 struct External * next;
580 struct Location loc;
581 int type;
582 struct Symbol * symbol;
583 union
584 {
585 struct FunctionDefinition * function;
586 struct ClassDefinition * _class;
587 struct Declaration * declaration;
588 char *  importString;
589 struct Identifier * id;
590 struct DBTableDef * table;
591 } __attribute__ ((gcc_struct)) __anon1;
592 int importType;
593 } __attribute__ ((gcc_struct));
594
595 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_ModuleImport;
596
597 struct ModuleImport;
598
599 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_ClassImport;
600
601 struct ClassImport;
602
603 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Symbol;
604
605 struct Symbol
606 {
607 char *  string;
608 struct Symbol * parent;
609 struct Symbol * left;
610 struct Symbol * right;
611 int depth;
612 struct Type * type;
613 union
614 {
615 struct __ecereNameSpace__ecere__com__Method * method;
616 struct __ecereNameSpace__ecere__com__Property * _property;
617 struct __ecereNameSpace__ecere__com__Class * registered;
618 } __attribute__ ((gcc_struct)) __anon1;
619 int id;
620 int idCode;
621 union
622 {
623 struct
624 {
625 struct External * pointerExternal;
626 struct External * structExternal;
627 } __attribute__ ((gcc_struct)) __anon1;
628 struct
629 {
630 struct External * externalGet;
631 struct External * externalSet;
632 struct External * externalPtr;
633 struct External * externalIsSet;
634 } __attribute__ ((gcc_struct)) __anon2;
635 struct
636 {
637 struct External * methodExternal;
638 struct External * methodCodeExternal;
639 } __attribute__ ((gcc_struct)) __anon3;
640 } __attribute__ ((gcc_struct)) __anon2;
641 unsigned int imported;
642 unsigned int declaredStructSym;
643 struct __ecereNameSpace__ecere__com__Class * _class;
644 unsigned int declaredStruct;
645 unsigned int needConstructor;
646 unsigned int needDestructor;
647 char *  constructorName;
648 char *  structName;
649 char *  className;
650 char *  destructorName;
651 struct ModuleImport * module;
652 struct ClassImport * _import;
653 struct Location nameLoc;
654 unsigned int isParam;
655 unsigned int isRemote;
656 unsigned int isStruct;
657 unsigned int fireWatchersDone;
658 int declaring;
659 unsigned int classData;
660 unsigned int isStatic;
661 char *  shortName;
662 struct __ecereNameSpace__ecere__sys__OldList *  templateParams;
663 struct __ecereNameSpace__ecere__sys__OldList templatedClasses;
664 struct Context * ctx;
665 int isIterator;
666 struct Expression * propCategory;
667 } __attribute__ ((gcc_struct));
668
669 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Type;
670
671 struct Type
672 {
673 struct Type * prev;
674 struct Type * next;
675 int refCount;
676 union
677 {
678 struct Symbol * _class;
679 struct
680 {
681 struct __ecereNameSpace__ecere__sys__OldList members;
682 char *  enumName;
683 } __attribute__ ((gcc_struct)) __anon1;
684 struct
685 {
686 struct Type * returnType;
687 struct __ecereNameSpace__ecere__sys__OldList params;
688 struct Symbol * thisClass;
689 unsigned int staticMethod;
690 struct TemplateParameter * thisClassTemplate;
691 } __attribute__ ((gcc_struct)) __anon2;
692 struct
693 {
694 struct __ecereNameSpace__ecere__com__Method * method;
695 struct __ecereNameSpace__ecere__com__Class * methodClass;
696 struct __ecereNameSpace__ecere__com__Class * usedClass;
697 } __attribute__ ((gcc_struct)) __anon3;
698 struct
699 {
700 struct Type * arrayType;
701 int arraySize;
702 struct Expression * arraySizeExp;
703 unsigned int freeExp;
704 struct Symbol * enumClass;
705 } __attribute__ ((gcc_struct)) __anon4;
706 struct Type * type;
707 struct TemplateParameter * templateParameter;
708 } __attribute__ ((gcc_struct)) __anon1;
709 int kind;
710 unsigned int size;
711 char *  name;
712 char *  typeName;
713 int classObjectType;
714 int alignment;
715 unsigned int offset;
716 int bitFieldCount;
717 int count;
718 unsigned int isSigned : 1;
719 unsigned int constant : 1;
720 unsigned int truth : 1;
721 unsigned int byReference : 1;
722 unsigned int extraParam : 1;
723 unsigned int directClassAccess : 1;
724 unsigned int computing : 1;
725 unsigned int keepCast : 1;
726 unsigned int passAsTemplate : 1;
727 unsigned int dllExport : 1;
728 unsigned int attrStdcall : 1;
729 unsigned int declaredWithStruct : 1;
730 unsigned int typedByReference : 1;
731 unsigned int casted : 1;
732 } __attribute__ ((gcc_struct));
733
734 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__Class;
735
736 struct __ecereNameSpace__ecere__com__Class
737 {
738 struct __ecereNameSpace__ecere__com__Class * prev;
739 struct __ecereNameSpace__ecere__com__Class * next;
740 const char *  name;
741 int offset;
742 int structSize;
743 int (* *  _vTbl)();
744 int vTblSize;
745 int (*  Constructor)(struct __ecereNameSpace__ecere__com__Instance *);
746 void (*  Destructor)(struct __ecereNameSpace__ecere__com__Instance *);
747 int offsetClass;
748 int sizeClass;
749 struct __ecereNameSpace__ecere__com__Class * base;
750 struct __ecereNameSpace__ecere__sys__BinaryTree methods;
751 struct __ecereNameSpace__ecere__sys__BinaryTree members;
752 struct __ecereNameSpace__ecere__sys__BinaryTree prop;
753 struct __ecereNameSpace__ecere__sys__OldList membersAndProperties;
754 struct __ecereNameSpace__ecere__sys__BinaryTree classProperties;
755 struct __ecereNameSpace__ecere__sys__OldList derivatives;
756 int memberID;
757 int startMemberID;
758 int type;
759 struct __ecereNameSpace__ecere__com__Instance * module;
760 struct __ecereNameSpace__ecere__com__NameSpace *  nameSpace;
761 const char *  dataTypeString;
762 struct Type * dataType;
763 int typeSize;
764 int defaultAlignment;
765 void (*  Initialize)();
766 int memberOffset;
767 struct __ecereNameSpace__ecere__sys__OldList selfWatchers;
768 const char *  designerClass;
769 unsigned int noExpansion;
770 const char *  defaultProperty;
771 unsigned int comRedefinition;
772 int count;
773 int isRemote;
774 unsigned int internalDecl;
775 void *  data;
776 unsigned int computeSize;
777 int structAlignment;
778 int destructionWatchOffset;
779 unsigned int fixed;
780 struct __ecereNameSpace__ecere__sys__OldList delayedCPValues;
781 int inheritanceAccess;
782 const char *  fullName;
783 void *  symbol;
784 struct __ecereNameSpace__ecere__sys__OldList conversions;
785 struct __ecereNameSpace__ecere__sys__OldList templateParams;
786 struct __ecereNameSpace__ecere__com__ClassTemplateArgument *  templateArgs;
787 struct __ecereNameSpace__ecere__com__Class * templateClass;
788 struct __ecereNameSpace__ecere__sys__OldList templatized;
789 int numParams;
790 unsigned int isInstanceClass;
791 unsigned int byValueSystemClass;
792 } __attribute__ ((gcc_struct));
793
794 extern long long __ecereNameSpace__ecere__com__eClass_GetProperty(struct __ecereNameSpace__ecere__com__Class * _class, const char *  name);
795
796 extern void __ecereNameSpace__ecere__com__eClass_SetProperty(struct __ecereNameSpace__ecere__com__Class * _class, const char *  name, long long value);
797
798 extern void __ecereNameSpace__ecere__com__eInstance_FireSelfWatchers(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property);
799
800 extern void __ecereNameSpace__ecere__com__eInstance_SetMethod(struct __ecereNameSpace__ecere__com__Instance * instance, const char *  name, void *  function);
801
802 extern void __ecereNameSpace__ecere__com__eInstance_IncRef(struct __ecereNameSpace__ecere__com__Instance * instance);
803
804 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);
805
806 extern void __ecereNameSpace__ecere__com__eInstance_Watch(void *  instance, struct __ecereNameSpace__ecere__com__Property * _property, void *  object, void (*  callback)(void * , void * ));
807
808 extern void __ecereNameSpace__ecere__com__eInstance_FireWatchers(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property);
809
810 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__Instance;
811
812 struct __ecereNameSpace__ecere__com__Instance
813 {
814 int (* *  _vTbl)();
815 struct __ecereNameSpace__ecere__com__Class * _class;
816 int _refCount;
817 } __attribute__ ((gcc_struct));
818
819 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__DataMember;
820
821 struct __ecereNameSpace__ecere__com__DataMember
822 {
823 struct __ecereNameSpace__ecere__com__DataMember * prev;
824 struct __ecereNameSpace__ecere__com__DataMember * next;
825 const char *  name;
826 unsigned int isProperty;
827 int memberAccess;
828 int id;
829 struct __ecereNameSpace__ecere__com__Class * _class;
830 const char *  dataTypeString;
831 struct __ecereNameSpace__ecere__com__Class * dataTypeClass;
832 struct Type * dataType;
833 int type;
834 int offset;
835 int memberID;
836 struct __ecereNameSpace__ecere__sys__OldList members;
837 struct __ecereNameSpace__ecere__sys__BinaryTree membersAlpha;
838 int memberOffset;
839 int structAlignment;
840 } __attribute__ ((gcc_struct));
841
842 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__SerialBuffer;
843
844 struct __ecereNameSpace__ecere__com__SerialBuffer
845 {
846 unsigned char *  _buffer;
847 unsigned int count;
848 unsigned int _size;
849 unsigned int pos;
850 } __attribute__ ((gcc_struct));
851
852 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__ClassTemplateArgument;
853
854 struct __ecereNameSpace__ecere__com__ClassTemplateArgument
855 {
856 union
857 {
858 struct
859 {
860 const char *  dataTypeString;
861 struct __ecereNameSpace__ecere__com__Class * dataTypeClass;
862 } __attribute__ ((gcc_struct)) __anon1;
863 struct __ecereNameSpace__ecere__com__DataValue expression;
864 struct
865 {
866 const char *  memberString;
867 union
868 {
869 struct __ecereNameSpace__ecere__com__DataMember * member;
870 struct __ecereNameSpace__ecere__com__Property * prop;
871 struct __ecereNameSpace__ecere__com__Method * method;
872 } __attribute__ ((gcc_struct)) __anon1;
873 } __attribute__ ((gcc_struct)) __anon2;
874 } __attribute__ ((gcc_struct)) __anon1;
875 } __attribute__ ((gcc_struct));
876
877 enum yytokentype
878 {
879 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
880 };
881
882 typedef union YYSTYPE
883 {
884 int specifierType;
885 int i;
886 int declMode;
887 struct Identifier * id;
888 struct Expression * exp;
889 struct Specifier * specifier;
890 struct __ecereNameSpace__ecere__sys__OldList * list;
891 struct Enumerator * enumerator;
892 struct Declarator * declarator;
893 struct Pointer * pointer;
894 struct Initializer * initializer;
895 struct InitDeclarator * initDeclarator;
896 struct TypeName * typeName;
897 struct Declaration * declaration;
898 struct Statement * stmt;
899 struct FunctionDefinition * function;
900 struct External * external;
901 struct Context * context;
902 struct AsmField * asmField;
903 struct Attrib * attrib;
904 struct ExtDecl * extDecl;
905 struct Attribute * attribute;
906 struct Instantiation * instance;
907 struct MembersInit * membersInit;
908 struct MemberInit * memberInit;
909 struct ClassFunction * classFunction;
910 struct ClassDefinition * _class;
911 struct ClassDef * classDef;
912 struct PropertyDef * prop;
913 char * string;
914 struct Symbol * symbol;
915 struct PropertyWatch * propertyWatch;
916 struct TemplateParameter * templateParameter;
917 struct TemplateArgument * templateArgument;
918 struct TemplateDatatype * templateDatatype;
919 struct DBTableEntry * dbtableEntry;
920 struct DBIndexItem * dbindexItem;
921 struct DBTableDef * dbtableDef;
922 } __attribute__ ((gcc_struct)) YYSTYPE;
923
924 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Enumerator;
925
926 struct Enumerator;
927
928 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_InitDeclarator;
929
930 struct InitDeclarator
931 {
932 struct InitDeclarator * prev;
933 struct InitDeclarator * next;
934 struct Location loc;
935 struct Declarator * declarator;
936 struct Initializer * initializer;
937 } __attribute__ ((gcc_struct));
938
939 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_AsmField;
940
941 struct AsmField;
942
943 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Attribute;
944
945 struct Attribute;
946
947 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_ClassFunction;
948
949 struct ClassFunction
950 {
951 struct ClassFunction * prev;
952 struct ClassFunction * next;
953 struct Location loc;
954 struct __ecereNameSpace__ecere__sys__OldList *  specifiers;
955 struct Declarator * declarator;
956 struct __ecereNameSpace__ecere__sys__OldList *  declarations;
957 struct Statement * body;
958 struct __ecereNameSpace__ecere__com__Class * _class;
959 struct __ecereNameSpace__ecere__sys__OldList attached;
960 int declMode;
961 struct Type * type;
962 struct Symbol * propSet;
963 unsigned int isVirtual;
964 unsigned int isConstructor;
965 unsigned int isDestructor;
966 unsigned int dontMangle;
967 int id;
968 int idCode;
969 } __attribute__ ((gcc_struct));
970
971 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_MembersInit;
972
973 struct MembersInit
974 {
975 struct MembersInit * prev;
976 struct MembersInit * next;
977 struct Location loc;
978 int type;
979 union
980 {
981 struct __ecereNameSpace__ecere__sys__OldList *  dataMembers;
982 struct ClassFunction * function;
983 } __attribute__ ((gcc_struct)) __anon1;
984 } __attribute__ ((gcc_struct));
985
986 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_MemberInit;
987
988 struct MemberInit
989 {
990 struct MemberInit * prev;
991 struct MemberInit * next;
992 struct Location loc;
993 struct Location realLoc;
994 struct __ecereNameSpace__ecere__sys__OldList *  identifiers;
995 struct Initializer * initializer;
996 unsigned int used;
997 unsigned int variable;
998 unsigned int takeOutExp;
999 } __attribute__ ((gcc_struct));
1000
1001 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_PropertyDef;
1002
1003 struct PropertyDef
1004 {
1005 struct PropertyDef * prev;
1006 struct PropertyDef * next;
1007 struct Location loc;
1008 struct __ecereNameSpace__ecere__sys__OldList *  specifiers;
1009 struct Declarator * declarator;
1010 struct Identifier * id;
1011 struct Statement * getStmt;
1012 struct Statement * setStmt;
1013 struct Statement * issetStmt;
1014 struct Symbol * symbol;
1015 struct Expression * category;
1016 struct
1017 {
1018 unsigned int conversion : 1;
1019 unsigned int isWatchable : 1;
1020 unsigned int isDBProp : 1;
1021 } __attribute__ ((gcc_struct)) __anon1;
1022 } __attribute__ ((gcc_struct));
1023
1024 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_PropertyWatch;
1025
1026 struct PropertyWatch
1027 {
1028 struct PropertyWatch * prev;
1029 struct PropertyWatch * next;
1030 struct Location loc;
1031 struct Statement * compound;
1032 struct __ecereNameSpace__ecere__sys__OldList *  properties;
1033 unsigned int deleteWatch;
1034 } __attribute__ ((gcc_struct));
1035
1036 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_ClassDef;
1037
1038 struct ClassDef
1039 {
1040 struct ClassDef * prev;
1041 struct ClassDef * next;
1042 struct Location loc;
1043 int type;
1044 union
1045 {
1046 struct Declaration * decl;
1047 struct ClassFunction * function;
1048 struct __ecereNameSpace__ecere__sys__OldList *  defProperties;
1049 struct PropertyDef * propertyDef;
1050 struct PropertyWatch * propertyWatch;
1051 char *  designer;
1052 struct Identifier * defaultProperty;
1053 struct
1054 {
1055 struct Identifier * id;
1056 struct Initializer * initializer;
1057 } __attribute__ ((gcc_struct)) __anon1;
1058 } __attribute__ ((gcc_struct)) __anon1;
1059 int memberAccess;
1060 void *  object;
1061 } __attribute__ ((gcc_struct));
1062
1063 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_DBTableEntry;
1064
1065 struct DBTableEntry
1066 {
1067 struct DBTableEntry * prev;
1068 struct DBTableEntry * next;
1069 int type;
1070 struct Identifier * id;
1071 union
1072 {
1073 struct
1074 {
1075 struct TypeName * dataType;
1076 char *  name;
1077 } __attribute__ ((gcc_struct)) __anon1;
1078 struct __ecereNameSpace__ecere__sys__OldList *  items;
1079 } __attribute__ ((gcc_struct)) __anon1;
1080 } __attribute__ ((gcc_struct));
1081
1082 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_DBIndexItem;
1083
1084 struct DBIndexItem
1085 {
1086 struct DBIndexItem * prev;
1087 struct DBIndexItem * next;
1088 struct Identifier * id;
1089 int order;
1090 } __attribute__ ((gcc_struct));
1091
1092 extern YYSTYPE yylval;
1093
1094 extern struct Location yylloc;
1095
1096 static struct __ecereNameSpace__ecere__sys__OldList * tableStatements, * indexStatements, * addFieldStatements;
1097
1098 static int numIndexes;
1099
1100 static struct External * addAfter;
1101
1102 static void ProcessDeclaration(struct Declaration * decl);
1103
1104 static void ProcessMemberInit(struct MemberInit * init);
1105
1106 static void ProcessClassFunction(struct ClassFunction * func);
1107
1108 static void ProcessProperty(struct PropertyDef * def);
1109
1110 static void ProcessStatement(struct Statement * stmt);
1111
1112 static void ProcessInitializer(struct Initializer * initializer);
1113
1114 static void ProcessSpecifier(struct Specifier * spec)
1115 {
1116 switch(spec->type)
1117 {
1118 case 2:
1119 case 3:
1120 case 4:
1121 {
1122 if(spec->__anon1.__anon2.definitions)
1123 {
1124 struct ClassDef * def;
1125
1126 for(def = (*spec->__anon1.__anon2.definitions).first; def; def = def->next)
1127 {
1128 switch(def->type)
1129 {
1130 case 2:
1131 ProcessDeclaration(def->__anon1.decl);
1132 break;
1133 case 1:
1134 {
1135 struct MemberInit * init;
1136
1137 for(init = (*def->__anon1.defProperties).first; init; init = init->next)
1138 {
1139 ProcessMemberInit(init);
1140 }
1141 break;
1142 }
1143 case 0:
1144 ProcessClassFunction(def->__anon1.function);
1145 break;
1146 case 3:
1147 if(def->__anon1.propertyDef)
1148 {
1149 ProcessProperty(def->__anon1.propertyDef);
1150 }
1151 break;
1152 case 4:
1153 if(def->__anon1.propertyWatch && def->__anon1.propertyWatch->compound)
1154 {
1155 ProcessStatement(def->__anon1.propertyWatch->compound);
1156 }
1157 break;
1158 case 11:
1159 if(def->__anon1.__anon1.initializer)
1160 ProcessInitializer(def->__anon1.__anon1.initializer);
1161 break;
1162 }
1163 }
1164 }
1165 break;
1166 }
1167 }
1168 }
1169
1170 static void ProcessIdentifier(struct Identifier * id)
1171 {
1172 }
1173
1174 static void ProcessInstance(struct Instantiation * inst);
1175
1176 extern size_t strlen(const char * );
1177
1178 extern void *  memcpy(void * , const void * , size_t size);
1179
1180 extern void __ecereNameSpace__ecere__sys__ChangeCh(char *  string, char ch1, char ch2);
1181
1182 extern int sprintf(char * , const char * , ...);
1183
1184 extern void FreeExpContents(struct Expression * exp);
1185
1186 extern struct Identifier * MkIdentifier(const char *  string);
1187
1188 extern struct Statement * MkCompoundStmt(struct __ecereNameSpace__ecere__sys__OldList * declarations, struct __ecereNameSpace__ecere__sys__OldList * statements);
1189
1190 extern struct __ecereNameSpace__ecere__sys__OldList *  MkList(void);
1191
1192 extern struct Context * curContext;
1193
1194 extern struct Declaration * MkDeclaration(struct __ecereNameSpace__ecere__sys__OldList * specifiers, struct __ecereNameSpace__ecere__sys__OldList * initDeclarators);
1195
1196 extern struct __ecereNameSpace__ecere__sys__OldList *  MkListOne(void *  item);
1197
1198 extern struct Specifier * MkSpecifierName(const char *  name);
1199
1200 extern struct InitDeclarator * MkInitDeclarator(struct Declarator * declarator, struct Initializer * initializer);
1201
1202 extern struct Declarator * MkDeclaratorIdentifier(struct Identifier * id);
1203
1204 extern struct Specifier * MkSpecifier(int specifier);
1205
1206 extern struct Initializer * MkInitializerAssignment(struct Expression * exp);
1207
1208 extern struct Expression * MkExpIdentifier(struct Identifier * id);
1209
1210 extern struct Statement * MkIfStmt(struct __ecereNameSpace__ecere__sys__OldList * exp, struct Statement * statement, struct Statement * elseStmt);
1211
1212 extern struct Statement * MkReturnStmt(struct __ecereNameSpace__ecere__sys__OldList * exp);
1213
1214 extern struct Expression * MkExpConstant(const char *  string);
1215
1216 extern struct Statement * MkExpressionStmt(struct __ecereNameSpace__ecere__sys__OldList * expressions);
1217
1218 extern struct Expression * MkExpOp(struct Expression * exp1, int op, struct Expression * exp2);
1219
1220 extern struct Expression * CopyExpression(struct Expression * exp);
1221
1222 extern struct Expression * MkExpCall(struct Expression * expression, struct __ecereNameSpace__ecere__sys__OldList * arguments);
1223
1224 extern struct Expression * MkExpMember(struct Expression * expression, struct Identifier * member);
1225
1226 extern struct Declarator * MkDeclaratorArray(struct Declarator * declarator, struct Expression * exp);
1227
1228 extern struct Initializer * MkInitializerList(struct __ecereNameSpace__ecere__sys__OldList * list);
1229
1230 extern void Compiler_Error(const char *  format, ...);
1231
1232 extern const char *  __ecereNameSpace__ecere__GetTranslatedString(const char * name, const char *  string, const char *  stringAndContext);
1233
1234 extern void *  __ecereNameSpace__ecere__com__eInstance_New(struct __ecereNameSpace__ecere__com__Class * _class);
1235
1236 void __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add(struct __ecereNameSpace__ecere__sys__OldList * this, void *  item);
1237
1238 static void ProcessExpression(struct Expression * exp)
1239 {
1240 switch(exp->type)
1241 {
1242 case 13:
1243 ProcessExpression(exp->__anon1._new.size);
1244 break;
1245 case 14:
1246 ProcessExpression(exp->__anon1._renew.exp);
1247 ProcessExpression(exp->__anon1._renew.size);
1248 break;
1249 case 2:
1250 break;
1251 case 0:
1252 ProcessIdentifier(exp->__anon1.__anon1.identifier);
1253 break;
1254 case 1:
1255 ProcessInstance(exp->__anon1.instance);
1256 break;
1257 case 3:
1258 break;
1259 case 4:
1260 if(exp->__anon1.op.exp1)
1261 {
1262 ProcessExpression(exp->__anon1.op.exp1);
1263 }
1264 if(exp->__anon1.op.exp2)
1265 {
1266 ProcessExpression(exp->__anon1.op.exp2);
1267 }
1268 break;
1269 case 5:
1270 {
1271 struct Expression * expression;
1272
1273 for(expression = (*exp->__anon1.list).first; expression; expression = expression->next)
1274 {
1275 ProcessExpression(expression);
1276 }
1277 break;
1278 }
1279 case 6:
1280 {
1281 struct Expression * expression;
1282
1283 ProcessExpression(exp->__anon1.index.exp);
1284 for(expression = (*exp->__anon1.index.index).first; expression; expression = expression->next)
1285 {
1286 ProcessExpression(expression);
1287 }
1288 break;
1289 }
1290 case 7:
1291 {
1292 ProcessExpression(exp->__anon1.call.exp);
1293 if(exp->__anon1.call.arguments)
1294 {
1295 struct Expression * expression;
1296
1297 for(expression = (*exp->__anon1.call.arguments).first; expression; expression = expression->next)
1298 {
1299 ProcessExpression(expression);
1300 }
1301 }
1302 break;
1303 }
1304 case 8:
1305 ProcessExpression(exp->__anon1.member.exp);
1306 break;
1307 case 9:
1308 ProcessExpression(exp->__anon1.member.exp);
1309 break;
1310 case 10:
1311 break;
1312 case 11:
1313 ProcessExpression(exp->__anon1.cast.exp);
1314 break;
1315 case 12:
1316 ProcessExpression(exp->__anon1.cond.cond);
1317 {
1318 struct Expression * expression;
1319
1320 for(expression = (*exp->__anon1.cond.exp).first; expression; expression = expression->next)
1321 {
1322 ProcessExpression(expression);
1323 }
1324 }
1325 ProcessExpression(exp->__anon1.cond.elseExp);
1326 break;
1327 case 16:
1328 break;
1329 case 29:
1330 {
1331 char tableName[1024];
1332 char name[1024];
1333 int len = strlen(exp->__anon1.db.table);
1334
1335 memcpy(tableName, exp->__anon1.db.table + 1, len - 2);
1336 tableName[len - 2] = (char)0;
1337 __ecereNameSpace__ecere__sys__ChangeCh(tableName, ' ', '_');
1338 sprintf(name, "__ecereDBField_%s_%s", tableName, exp->__anon1.db.id->string);
1339 FreeExpContents(exp);
1340 exp->type = 0;
1341 exp->__anon1.__anon1.identifier = MkIdentifier(name);
1342 break;
1343 }
1344 case 30:
1345 {
1346 char tableName[1024];
1347 char name[1024];
1348 int len = strlen(exp->__anon1.db.table);
1349
1350 memcpy(tableName, exp->__anon1.db.table + 1, len - 2);
1351 tableName[len - 2] = (char)0;
1352 __ecereNameSpace__ecere__sys__ChangeCh(tableName, ' ', '_');
1353 sprintf(name, "__ecereDBTable_%s", tableName);
1354 FreeExpContents(exp);
1355 exp->type = 0;
1356 exp->__anon1.__anon1.identifier = MkIdentifier(name);
1357 break;
1358 }
1359 case 31:
1360 {
1361 char tableName[1024];
1362 char name[1024];
1363 int len = strlen(exp->__anon1.db.table);
1364
1365 memcpy(tableName, exp->__anon1.db.table + 1, len - 2);
1366 tableName[len - 2] = (char)0;
1367 __ecereNameSpace__ecere__sys__ChangeCh(tableName, ' ', '_');
1368 sprintf(name, "__ecereDBIndex_%s_%s", tableName, exp->__anon1.db.id->string);
1369 FreeExpContents(exp);
1370 exp->type = 0;
1371 exp->__anon1.__anon1.identifier = MkIdentifier(name);
1372 break;
1373 }
1374 case 28:
1375 {
1376 if(tableStatements)
1377 {
1378 struct Statement * databaseOpenStmt = MkCompoundStmt(MkList(), MkList());
1379 struct Statement * compound;
1380 struct Statement * ifDBStmt;
1381 struct __ecereNameSpace__ecere__sys__OldList * args;
1382 char numIndexesString[16];
1383
1384 databaseOpenStmt->__anon1.compound.context = __extension__ ({
1385 struct Context * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Context);
1386
1387 __ecereInstance1->parent = curContext, __ecereInstance1;
1388 });
1389 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*databaseOpenStmt->__anon1.compound.declarations), MkDeclaration(MkListOne(MkSpecifierName("Database")), MkListOne(MkInitDeclarator(MkDeclaratorIdentifier(MkIdentifier("db")), (((void *)0))))));
1390 args = MkList();
1391 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*args), MkSpecifier(STATIC));
1392 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*args), MkSpecifierName("bool"));
1393 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*databaseOpenStmt->__anon1.compound.declarations), MkDeclaration(args, MkListOne(MkInitDeclarator(MkDeclaratorIdentifier(MkIdentifier("initialized")), MkInitializerAssignment(MkExpIdentifier(MkIdentifier("false")))))));
1394 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*databaseOpenStmt->__anon1.compound.statements), MkIfStmt(MkListOne(MkExpIdentifier(MkIdentifier("initialized"))), MkReturnStmt(MkListOne(MkExpConstant("0"))), (((void *)0))));
1395 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*databaseOpenStmt->__anon1.compound.statements), MkExpressionStmt(MkListOne(MkExpOp(MkExpIdentifier(MkIdentifier("initialized")), '=', MkExpIdentifier(MkIdentifier("true"))))));
1396 args = MkList();
1397 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*args), CopyExpression(exp->__anon1.dbopen.name));
1398 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*args), MkExpIdentifier(MkIdentifier("no")));
1399 __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)))));
1400 __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))));
1401 compound->__anon1.compound.context = __extension__ ({
1402 struct Context * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Context);
1403
1404 __ecereInstance1->parent = databaseOpenStmt->__anon1.compound.context, __ecereInstance1;
1405 });
1406 args = MkList();
1407 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*args), exp->__anon1.dbopen.name);
1408 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*args), MkExpIdentifier(MkIdentifier("create")));
1409 __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)))));
1410 exp->__anon1.dbopen.name = (((void *)0));
1411 exp->__anon1.dbopen.ds = (((void *)0));
1412 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*databaseOpenStmt->__anon1.compound.statements), MkIfStmt(MkListOne(MkExpIdentifier(MkIdentifier("db"))), ifDBStmt = MkCompoundStmt(MkList(), MkList()), (((void *)0))));
1413 ifDBStmt->__anon1.compound.context = __extension__ ({
1414 struct Context * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Context);
1415
1416 __ecereInstance1->parent = databaseOpenStmt->__anon1.compound.context, __ecereInstance1;
1417 });
1418 sprintf(numIndexesString, "%d", numIndexes);
1419 __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")))))))))));
1420 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*ifDBStmt->__anon1.compound.statements), MkExpressionStmt(MkListOne(MkExpCall(MkExpMember(MkExpIdentifier(MkIdentifier("db")), MkIdentifier("Begin")), MkList()))));
1421 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*ifDBStmt->__anon1.compound.statements), compound = MkCompoundStmt((((void *)0)), tableStatements));
1422 compound->__anon1.compound.context = __extension__ ({
1423 struct Context * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Context);
1424
1425 __ecereInstance1->parent = ifDBStmt->__anon1.compound.context, __ecereInstance1;
1426 });
1427 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*ifDBStmt->__anon1.compound.statements), (compound = MkCompoundStmt((((void *)0)), addFieldStatements), compound->__anon1.compound.context = __extension__ ({
1428 struct Context * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Context);
1429
1430 __ecereInstance1->parent = ifDBStmt->__anon1.compound.context, __ecereInstance1;
1431 }), compound));
1432 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*ifDBStmt->__anon1.compound.statements), compound = MkCompoundStmt((((void *)0)), indexStatements));
1433 compound->__anon1.compound.context = __extension__ ({
1434 struct Context * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Context);
1435
1436 __ecereInstance1->parent = ifDBStmt->__anon1.compound.context, __ecereInstance1;
1437 });
1438 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*ifDBStmt->__anon1.compound.statements), MkExpressionStmt(MkListOne(MkExpCall(MkExpMember(MkExpIdentifier(MkIdentifier("db")), MkIdentifier("Commit")), MkList()))));
1439 exp->type = 23;
1440 exp->__anon1.compound = databaseOpenStmt;
1441 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*databaseOpenStmt->__anon1.compound.statements), MkExpressionStmt(MkListOne(MkExpIdentifier(MkIdentifier("db")))));
1442 tableStatements = (((void *)0));
1443 }
1444 else
1445 {
1446 FreeExpContents(exp);
1447 Compiler_Error(__ecereNameSpace__ecere__GetTranslatedString("ec", "No database table defined in this module or database_open already used.\n", (((void *)0))));
1448 exp->type = 16;
1449 }
1450 break;
1451 }
1452 }
1453 }
1454
1455 static void ProcessStatement(struct Statement * stmt)
1456 {
1457 switch(stmt->type)
1458 {
1459 case 0:
1460 ProcessStatement(stmt->__anon1.labeled.stmt);
1461 break;
1462 case 1:
1463 if(stmt->__anon1.caseStmt.exp)
1464 {
1465 ProcessExpression(stmt->__anon1.caseStmt.exp);
1466 }
1467 if(stmt->__anon1.caseStmt.stmt)
1468 {
1469 ProcessStatement(stmt->__anon1.caseStmt.stmt);
1470 }
1471 break;
1472 case 14:
1473 {
1474 ProcessDeclaration(stmt->__anon1.decl);
1475 break;
1476 }
1477 case 2:
1478 {
1479 struct Context * oldContext = curContext;
1480
1481 curContext = stmt->__anon1.compound.context;
1482 if(stmt->__anon1.compound.declarations)
1483 {
1484 struct Declaration * decl;
1485
1486 for(decl = (*stmt->__anon1.compound.declarations).first; decl; decl = decl->next)
1487 {
1488 ProcessDeclaration(decl);
1489 }
1490 }
1491 if(stmt->__anon1.compound.statements)
1492 {
1493 struct Statement * statement;
1494
1495 for(statement = (*stmt->__anon1.compound.statements).first; statement; statement = statement->next)
1496 {
1497 ProcessStatement(statement);
1498 }
1499 }
1500 curContext = oldContext;
1501 break;
1502 }
1503 case 3:
1504 {
1505 if(stmt->__anon1.expressions)
1506 {
1507 struct Expression * exp;
1508
1509 for(exp = (*stmt->__anon1.expressions).first; exp; exp = exp->next)
1510 {
1511 ProcessExpression(exp);
1512 }
1513 }
1514 break;
1515 }
1516 case 4:
1517 {
1518 struct Expression * exp;
1519
1520 for(exp = (*stmt->__anon1.ifStmt.exp).first; exp; exp = exp->next)
1521 {
1522 ProcessExpression(exp);
1523 }
1524 if(stmt->__anon1.ifStmt.stmt)
1525 {
1526 ProcessStatement(stmt->__anon1.ifStmt.stmt);
1527 }
1528 if(stmt->__anon1.ifStmt.elseStmt)
1529 {
1530 ProcessStatement(stmt->__anon1.ifStmt.elseStmt);
1531 }
1532 break;
1533 }
1534 case 5:
1535 {
1536 struct Expression * exp;
1537
1538 for(exp = (*stmt->__anon1.switchStmt.exp).first; exp; exp = exp->next)
1539 {
1540 ProcessExpression(exp);
1541 }
1542 ProcessStatement(stmt->__anon1.switchStmt.stmt);
1543 break;
1544 }
1545 case 6:
1546 {
1547 struct Expression * exp;
1548
1549 if(stmt->__anon1.whileStmt.exp)
1550 {
1551 for(exp = (*stmt->__anon1.whileStmt.exp).first; exp; exp = exp->next)
1552 {
1553 ProcessExpression(exp);
1554 }
1555 }
1556 if(stmt->__anon1.whileStmt.stmt)
1557 ProcessStatement(stmt->__anon1.whileStmt.stmt);
1558 break;
1559 }
1560 case 7:
1561 {
1562 ProcessStatement(stmt->__anon1.doWhile.stmt);
1563 if(stmt->__anon1.doWhile.exp)
1564 {
1565 struct Expression * exp;
1566
1567 for(exp = (*stmt->__anon1.doWhile.exp).first; exp; exp = exp->next)
1568 {
1569 ProcessExpression(exp);
1570 }
1571 }
1572 break;
1573 }
1574 case 8:
1575 {
1576 struct Expression * exp;
1577
1578 if(stmt->__anon1.forStmt.init)
1579 {
1580 ProcessStatement(stmt->__anon1.forStmt.init);
1581 }
1582 if(stmt->__anon1.forStmt.check)
1583 {
1584 ProcessStatement(stmt->__anon1.forStmt.check);
1585 }
1586 if(stmt->__anon1.forStmt.increment)
1587 {
1588 for(exp = (*stmt->__anon1.forStmt.increment).first; exp; exp = exp->next)
1589 {
1590 ProcessExpression(exp);
1591 }
1592 }
1593 if(stmt->__anon1.forStmt.stmt)
1594 ProcessStatement(stmt->__anon1.forStmt.stmt);
1595 break;
1596 }
1597 case 9:
1598 break;
1599 case 10:
1600 break;
1601 case 11:
1602 break;
1603 case 12:
1604 if(stmt->__anon1.expressions)
1605 {
1606 struct Expression * exp;
1607
1608 for(exp = (*stmt->__anon1.expressions).first; exp; exp = exp->next)
1609 {
1610 ProcessExpression(exp);
1611 }
1612 }
1613 break;
1614 case 15:
1615 case 16:
1616 {
1617 struct Identifier * _watch;
1618
1619 if(stmt->__anon1._watch.watcher)
1620 {
1621 ProcessExpression(stmt->__anon1._watch.watcher);
1622 }
1623 if(stmt->__anon1._watch.object)
1624 {
1625 ProcessExpression(stmt->__anon1._watch.object);
1626 }
1627 if(stmt->__anon1._watch.watches)
1628 {
1629 for(_watch = (*stmt->__anon1._watch.watches).first; _watch; _watch = _watch->next)
1630 {
1631 ProcessIdentifier(_watch);
1632 }
1633 }
1634 break;
1635 }
1636 case 17:
1637 {
1638 struct PropertyWatch * _watch;
1639
1640 if(stmt->__anon1._watch.watcher)
1641 {
1642 ProcessExpression(stmt->__anon1._watch.watcher);
1643 }
1644 if(stmt->__anon1._watch.object)
1645 {
1646 ProcessExpression(stmt->__anon1._watch.object);
1647 }
1648 if(stmt->__anon1._watch.watches)
1649 {
1650 for(_watch = (*stmt->__anon1._watch.watches).first; _watch; _watch = _watch->next)
1651 {
1652 if(_watch->compound)
1653 {
1654 ProcessStatement(_watch->compound);
1655 }
1656 }
1657 }
1658 break;
1659 }
1660 }
1661 }
1662
1663 static void ProcessInitializer(struct Initializer * initializer)
1664 {
1665 switch(initializer->type)
1666 {
1667 case 1:
1668 {
1669 struct Initializer * init;
1670
1671 for(init = (*initializer->__anon1.list).first; init; init = init->next)
1672 {
1673 ProcessInitializer(init);
1674 }
1675 break;
1676 }
1677 case 0:
1678 ProcessExpression(initializer->__anon1.exp);
1679 break;
1680 }
1681 }
1682
1683 static void ProcessInitDeclarator(struct InitDeclarator * decl)
1684 {
1685 if(decl->initializer)
1686 ProcessInitializer(decl->initializer);
1687 }
1688
1689 static void ProcessDeclaration(struct Declaration * decl)
1690 {
1691 switch(decl->type)
1692 {
1693 case 0:
1694 {
1695 struct Specifier * spec;
1696
1697 if(decl->__anon1.__anon1.specifiers)
1698 {
1699 for(spec = (*decl->__anon1.__anon1.specifiers).first; spec; spec = spec->next)
1700 {
1701 ProcessSpecifier(spec);
1702 }
1703 }
1704 break;
1705 }
1706 case 1:
1707 {
1708 if(decl->__anon1.__anon1.specifiers)
1709 {
1710 struct Specifier * s;
1711
1712 for(s = (*decl->__anon1.__anon1.specifiers).first; s; s = s->next)
1713 {
1714 ProcessSpecifier(s);
1715 }
1716 }
1717 if(decl->__anon1.__anon1.declarators && (*decl->__anon1.__anon1.declarators).first)
1718 {
1719 struct InitDeclarator * d;
1720
1721 for(d = (*decl->__anon1.__anon1.declarators).first; d; d = d->next)
1722 {
1723 ProcessInitDeclarator(d);
1724 }
1725 }
1726 break;
1727 }
1728 case 2:
1729 ProcessInstance(decl->__anon1.inst);
1730 break;
1731 }
1732 }
1733
1734 static void ProcessFunction(struct FunctionDefinition * func)
1735 {
1736 if(func->body)
1737 {
1738 ProcessStatement(func->body);
1739 }
1740 }
1741
1742 static void ProcessMemberInit(struct MemberInit * init)
1743 {
1744 if(init->initializer)
1745 {
1746 ProcessInitializer(init->initializer);
1747 }
1748 }
1749
1750 static void ProcessInstance(struct Instantiation * inst)
1751 {
1752 if(inst->members)
1753 {
1754 struct MembersInit * init;
1755 struct MemberInit * memberInit;
1756
1757 for(init = (*inst->members).first; init; init = init->next)
1758 {
1759 if(init->type == 0 && init->__anon1.dataMembers)
1760 {
1761 for(memberInit = (*init->__anon1.dataMembers).first; memberInit; memberInit = memberInit->next)
1762 {
1763 ProcessMemberInit(memberInit);
1764 }
1765 }
1766 if(init->type == 1)
1767 {
1768 ProcessClassFunction(init->__anon1.function);
1769 }
1770 }
1771 }
1772 }
1773
1774 static void ProcessClassFunction(struct ClassFunction * func)
1775 {
1776 if(func->body)
1777 {
1778 ProcessStatement(func->body);
1779 }
1780 }
1781
1782 static void ProcessProperty(struct PropertyDef * def)
1783 {
1784 if(def->getStmt)
1785 {
1786 ProcessStatement(def->getStmt);
1787 }
1788 if(def->setStmt)
1789 {
1790 ProcessStatement(def->setStmt);
1791 }
1792 }
1793
1794 static void ProcessClassDef(struct ClassDef * def)
1795 {
1796 switch(def->type)
1797 {
1798 case 2:
1799 ProcessDeclaration(def->__anon1.decl);
1800 break;
1801 case 1:
1802 {
1803 struct MemberInit * init;
1804
1805 for(init = (*def->__anon1.defProperties).first; init; init = init->next)
1806 {
1807 ProcessMemberInit(init);
1808 }
1809 break;
1810 }
1811 case 11:
1812 if(def->__anon1.__anon1.initializer)
1813 ProcessInitializer(def->__anon1.__anon1.initializer);
1814 break;
1815 case 0:
1816 ProcessClassFunction(def->__anon1.function);
1817 break;
1818 case 3:
1819 if(def->__anon1.propertyDef)
1820 {
1821 ProcessProperty(def->__anon1.propertyDef);
1822 }
1823 break;
1824 case 4:
1825 if(def->__anon1.propertyWatch && def->__anon1.propertyWatch->compound)
1826 {
1827 ProcessStatement(def->__anon1.propertyWatch->compound);
1828 }
1829 break;
1830 }
1831 }
1832
1833 static void ProcessClass(struct ClassDefinition * _class)
1834 {
1835 if(_class->definitions)
1836 {
1837 struct ClassDef * def;
1838
1839 for(def = (*_class->definitions).first; def; def = def->next)
1840 {
1841 ProcessClassDef(def);
1842 }
1843 }
1844 }
1845
1846 static int curSymbolID = 0;
1847
1848 extern struct External * MkExternalDeclaration(struct Declaration * declaration);
1849
1850 extern struct __ecereNameSpace__ecere__sys__OldList *  ast;
1851
1852 extern struct Expression * MkExpString(const char *  string);
1853
1854 extern struct Expression * MkExpInstance(struct Instantiation * inst);
1855
1856 extern struct Instantiation * MkInstantiation(struct Specifier * _class, struct Expression * exp, struct __ecereNameSpace__ecere__sys__OldList * members);
1857
1858 extern struct MembersInit * MkMembersInitList(struct __ecereNameSpace__ecere__sys__OldList * dataMembers);
1859
1860 extern struct MemberInit * MkMemberInit(struct __ecereNameSpace__ecere__sys__OldList * ids, struct Initializer * initializer);
1861
1862 extern struct Context * PushContext(void);
1863
1864 extern struct ClassDefinition * MkClass(struct Symbol * symbol, struct __ecereNameSpace__ecere__sys__OldList * baseSpecs, struct __ecereNameSpace__ecere__sys__OldList * definitions);
1865
1866 extern struct Symbol * DeclClass(int symbolID, const char *  name);
1867
1868 extern struct Context * globalContext;
1869
1870 extern void PopContext(struct Context * ctx);
1871
1872 extern struct ClassDef * MkClassDefDefaultProperty(struct __ecereNameSpace__ecere__sys__OldList * defProperties);
1873
1874 extern struct MemberInit * MkMemberInitExp(struct Expression * idExp, struct Initializer * initializer);
1875
1876 extern struct External * MkExternalClass(struct ClassDefinition * _class);
1877
1878 extern int strcmp(const char * , const char * );
1879
1880 extern char *  strcpy(char * , const char * );
1881
1882 extern struct ClassDef * MkClassDefProperty(struct PropertyDef * propertyDef);
1883
1884 extern struct PropertyDef * MkProperty(struct __ecereNameSpace__ecere__sys__OldList * specs, struct Declarator * decl, struct Identifier * id, struct Statement * setStmt, struct Statement * getStmt);
1885
1886 extern struct __ecereNameSpace__ecere__sys__OldList *  CopyList(struct __ecereNameSpace__ecere__sys__OldList *  source, void *  (*  CopyFunction)(void * ));
1887
1888 extern struct Specifier * CopySpecifier(struct Specifier * spec);
1889
1890 extern struct Declarator * CopyDeclarator(struct Declarator * declarator);
1891
1892 extern struct Declaration * MkDeclarationInst(struct Instantiation * inst);
1893
1894 extern struct Identifier * CopyIdentifier(struct Identifier * id);
1895
1896 extern struct Expression * MkExpClass(struct __ecereNameSpace__ecere__sys__OldList *  specifiers, struct Declarator * decl);
1897
1898 extern struct Expression * MkExpIndex(struct Expression * expression, struct __ecereNameSpace__ecere__sys__OldList * index);
1899
1900 extern struct ClassDef * MkClassDefClassPropertyValue(struct Identifier * id, struct Initializer * initializer);
1901
1902 extern struct Expression * MkExpDBTable(char *  table);
1903
1904 extern char *  __ecereNameSpace__ecere__sys__CopyString(const char *  string);
1905
1906 extern struct Expression * MkExpDBField(char *  table, struct Identifier * id);
1907
1908 unsigned int __ecereMethod___ecereNameSpace__ecere__sys__OldList_Insert(struct __ecereNameSpace__ecere__sys__OldList * this, void *  prevItem, void *  item);
1909
1910 static void ProcessDBTable(struct DBTableDef * table)
1911 {
1912 struct __ecereNameSpace__ecere__sys__OldList * rowClassDefs = MkList(), * idClassDefs = (((void *)0));
1913 char tableName[1024];
1914 char rowClassName[1024];
1915 int len = strlen(table->name);
1916 unsigned int indexed = 0;
1917 char tableID[1024];
1918 char nameField[1024];
1919 struct __ecereNameSpace__ecere__sys__OldList * args;
1920 struct __ecereNameSpace__ecere__sys__OldList * members;
1921 int symbolID = curSymbolID;
1922
1923 if(table->symbol)
1924 idClassDefs = MkList();
1925 nameField[0] = (char)0;
1926 memcpy(tableName, table->name + 1, len - 2);
1927 tableName[len - 2] = (char)0;
1928 __ecereNameSpace__ecere__sys__ChangeCh(tableName, ' ', '_');
1929 sprintf(tableID, "__ecereDBTable_%s", tableName);
1930 sprintf(rowClassName, "Row%s", tableName);
1931 __ecereNameSpace__ecere__sys__ChangeCh(rowClassName, ' ', '_');
1932 if(!tableStatements)
1933 {
1934 tableStatements = MkList();
1935 indexStatements = MkList();
1936 addFieldStatements = MkList();
1937 }
1938 {
1939 struct External * external;
1940
1941 external = MkExternalDeclaration(MkDeclaration(MkListOne(MkSpecifierName("Table")), MkListOne(MkInitDeclarator(MkDeclaratorIdentifier(MkIdentifier(tableID)), (((void *)0))))));
1942 external->__anon1.declaration->declMode = table->declMode;
1943 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Insert((&*ast), addAfter, external);
1944 args = MkList();
1945 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*tableStatements), MkExpressionStmt(MkListOne(MkExpOp(MkExpIdentifier(MkIdentifier(tableID)), '=', MkExpCall(MkExpMember(MkExpIdentifier(MkIdentifier("db")), MkIdentifier("OpenTable")), args)))));
1946 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*args), MkExpString(table->name));
1947 members = MkList();
1948 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*args), MkExpInstance(MkInstantiation((((void *)0)), (((void *)0)), MkListOne(MkMembersInitList(members)))));
1949 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*members), MkMemberInit((((void *)0)), MkInitializerAssignment(MkExpIdentifier(MkIdentifier("tableRows")))));
1950 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*members), MkMemberInit((((void *)0)), MkInitializerAssignment(MkExpIdentifier(MkIdentifier("create")))));
1951 }
1952 {
1953 struct ClassDefinition * _class;
1954 struct ClassDef * def;
1955 struct External * external;
1956 struct __ecereNameSpace__ecere__sys__OldList * inheritanceSpecs = MkList();
1957
1958 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*inheritanceSpecs), MkSpecifier(PRIVATE));
1959 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*inheritanceSpecs), MkSpecifierName("Row"));
1960 PushContext();
1961 _class = MkClass(DeclClass(globalContext->nextID++, rowClassName), inheritanceSpecs, rowClassDefs);
1962 PopContext(curContext);
1963 def = MkClassDefDefaultProperty(MkListOne(MkMemberInitExp(MkExpIdentifier(MkIdentifier("tbl")), MkInitializerAssignment(MkExpIdentifier(MkIdentifier(tableID))))));
1964 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*rowClassDefs), def);
1965 _class->symbol->idCode = symbolID;
1966 _class->declMode = table->declMode;
1967 external = MkExternalClass(_class);
1968 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Insert((&*ast), addAfter, external);
1969 addAfter = external;
1970 }
1971 if(table->definitions)
1972 {
1973 struct DBTableEntry * entry;
1974
1975 for(entry = (*table->definitions).first; entry; entry = entry->next)
1976 {
1977 switch(entry->type)
1978 {
1979 case 0:
1980 {
1981 unsigned int isIndex = 0;
1982 char fieldID[1024];
1983 struct __ecereNameSpace__ecere__sys__OldList * args;
1984 struct Specifier * spec = entry->__anon1.__anon1.dataType->qualifiers ? (struct Specifier *)(*entry->__anon1.__anon1.dataType->qualifiers).first : (((void *)0));
1985
1986 sprintf(fieldID, "__ecereDBField_%s_%s", tableName, entry->id->string);
1987 if(idClassDefs)
1988 {
1989 if(!nameField[0] && spec->type == 1 && (!strcmp(spec->__anon1.__anon1.name, "String") || !strcmp(spec->__anon1.__anon1.name, "eda::CIString")))
1990 {
1991 strcpy(nameField, entry->id->string);
1992 }
1993 if(!indexed && spec->type == 1 && !strcmp(spec->__anon1.__anon1.name, table->symbol->string))
1994 {
1995 struct Statement * rowSet = MkCompoundStmt(MkList(), MkList());
1996 char name[1024];
1997 struct ClassDef * def;
1998
1999 numIndexes = ((numIndexes > 1) ? numIndexes : 1);
2000 isIndex = 1;
2001 indexed = 1;
2002 sprintf(name, "_%s", entry->id->string);
2003 curContext = rowSet->__anon1.compound.context = __extension__ ({
2004 struct Context * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Context);
2005
2006 __ecereInstance1->parent = globalContext, __ecereInstance1;
2007 });
2008 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*rowSet->__anon1.compound.statements), MkExpressionStmt(MkListOne(MkExpCall(MkExpIdentifier(MkIdentifier("Find")), args = MkList()))));
2009 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*args), MkExpIdentifier(MkIdentifier(fieldID)));
2010 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*args), MkExpIdentifier(MkIdentifier("middle")));
2011 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*args), MkExpIdentifier(MkIdentifier("nil")));
2012 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*args), MkExpIdentifier(MkIdentifier("value")));
2013 curContext = globalContext;
2014 def = MkClassDefProperty(MkProperty(CopyList(entry->__anon1.__anon1.dataType->qualifiers, CopySpecifier), CopyDeclarator(entry->__anon1.__anon1.dataType->declarator), MkIdentifier(name), rowSet, (((void *)0))));
2015 def->__anon1.propertyDef->symbol->id = def->__anon1.propertyDef->symbol->idCode = symbolID;
2016 def->__anon1.propertyDef->__anon1.isDBProp = 1;
2017 def->memberAccess = 1;
2018 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*rowClassDefs), def);
2019 }
2020 }
2021 if(rowClassDefs)
2022 {
2023 struct Statement * rowSet = MkCompoundStmt(MkList(), MkList()), * rowGet = MkCompoundStmt(MkList(), MkList());
2024 struct ClassDef * def;
2025
2026 curContext = rowGet->__anon1.compound.context = __extension__ ({
2027 struct Context * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Context);
2028
2029 __ecereInstance1->parent = globalContext, __ecereInstance1;
2030 });
2031 if(spec->type == 1 && spec->__anon1.__anon1.symbol && spec->__anon1.__anon1.symbol->__anon1.registered && spec->__anon1.__anon1.symbol->__anon1.registered->type == 1)
2032 {
2033 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*rowGet->__anon1.compound.declarations), MkDeclarationInst(MkInstantiation(MkSpecifierName(spec->__anon1.__anon1.name), MkExpIdentifier(MkIdentifier("d")), (((void *)0)))));
2034 }
2035 else
2036 {
2037 struct Expression * exp;
2038
2039 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*rowGet->__anon1.compound.declarations), MkDeclaration(CopyList(entry->__anon1.__anon1.dataType->qualifiers, CopySpecifier), MkListOne(MkInitDeclarator(MkDeclaratorIdentifier(MkIdentifier("d")), MkInitializerAssignment(exp = MkExpConstant("0"))))));
2040 exp->destType = __extension__ ({
2041 struct Type * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Type);
2042
2043 __ecereInstance1->kind = 3, __ecereInstance1->refCount = 1, __ecereInstance1;
2044 });
2045 }
2046 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*rowGet->__anon1.compound.statements), MkExpressionStmt(MkListOne(MkExpCall(MkExpIdentifier(MkIdentifier("GetData")), args = MkList()))));
2047 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*args), MkExpIdentifier(MkIdentifier(fieldID)));
2048 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*args), MkExpIdentifier(MkIdentifier("d")));
2049 if(spec->type == 1 && spec->__anon1.__anon1.symbol && spec->__anon1.__anon1.symbol->__anon1.registered && spec->__anon1.__anon1.symbol->__anon1.registered->type == 1)
2050 {
2051 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*rowGet->__anon1.compound.statements), MkExpressionStmt(MkListOne(MkExpOp(MkExpIdentifier(MkIdentifier("value")), '=', MkExpIdentifier(MkIdentifier("d"))))));
2052 }
2053 else
2054 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*rowGet->__anon1.compound.statements), MkReturnStmt(MkListOne(MkExpIdentifier(MkIdentifier("d")))));
2055 curContext = rowSet->__anon1.compound.context = __extension__ ({
2056 struct Context * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Context);
2057
2058 __ecereInstance1->parent = globalContext, __ecereInstance1;
2059 });
2060 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*rowSet->__anon1.compound.statements), MkExpressionStmt(MkListOne(MkExpCall(MkExpIdentifier(MkIdentifier("SetData")), args = MkList()))));
2061 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*args), MkExpIdentifier(MkIdentifier(fieldID)));
2062 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*args), MkExpIdentifier(MkIdentifier("value")));
2063 curContext = globalContext;
2064 def = MkClassDefProperty(MkProperty(CopyList(entry->__anon1.__anon1.dataType->qualifiers, CopySpecifier), entry->__anon1.__anon1.dataType->declarator, CopyIdentifier(entry->id), rowSet, rowGet));
2065 def->__anon1.propertyDef->symbol->id = def->__anon1.propertyDef->symbol->idCode = symbolID;
2066 def->__anon1.propertyDef->__anon1.isDBProp = 1;
2067 def->memberAccess = 1;
2068 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*rowClassDefs), def);
2069 }
2070 {
2071 struct External * external;
2072
2073 external = MkExternalDeclaration(MkDeclaration(MkListOne(MkSpecifierName("Field")), MkListOne(MkInitDeclarator(MkDeclaratorIdentifier(MkIdentifier(fieldID)), (((void *)0))))));
2074 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*ast), external);
2075 external->__anon1.declaration->declMode = table->declMode;
2076 args = MkList();
2077 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*addFieldStatements), MkExpressionStmt(MkListOne(MkExpOp(MkExpIdentifier(MkIdentifier(fieldID)), '=', MkExpCall(MkExpMember(MkExpIdentifier(MkIdentifier(tableID)), MkIdentifier("FindField")), args)))));
2078 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*args), MkExpString(entry->__anon1.__anon1.name));
2079 args = MkList();
2080 __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))));
2081 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*args), MkExpString(entry->__anon1.__anon1.name));
2082 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*args), MkExpClass(CopyList(entry->__anon1.__anon1.dataType->qualifiers, CopySpecifier), CopyDeclarator(entry->__anon1.__anon1.dataType->declarator)));
2083 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*args), MkExpConstant("0"));
2084 }
2085 if(isIndex)
2086 {
2087 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*indexStatements), MkExpressionStmt(MkListOne(MkExpOp(MkExpMember(MkExpIndex(MkExpIdentifier(MkIdentifier("indexes")), MkListOne(MkExpConstant("0"))), MkIdentifier("field")), '=', MkExpIdentifier(MkIdentifier(fieldID))))));
2088 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*indexStatements), MkExpressionStmt(MkListOne(MkExpOp(MkExpMember(MkExpIndex(MkExpIdentifier(MkIdentifier("indexes")), MkListOne(MkExpConstant("0"))), MkIdentifier("order")), '=', MkExpIdentifier(MkIdentifier("ascending"))))));
2089 args = MkList();
2090 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*indexStatements), MkExpressionStmt(MkListOne(MkExpCall(MkExpMember(MkExpIdentifier(MkIdentifier(tableID)), MkIdentifier("Index")), args))));
2091 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*args), MkExpConstant("1"));
2092 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*args), MkExpIdentifier(MkIdentifier("indexes")));
2093 }
2094 break;
2095 }
2096 }
2097 }
2098 }
2099 if(table->symbol)
2100 {
2101 struct ClassDefinition * _class;
2102 struct External * external;
2103 struct ClassDef * def;
2104 struct Expression * exp;
2105
2106 PushContext();
2107 _class = MkClass(table->symbol, MkListOne(MkSpecifierName("Id")), idClassDefs);
2108 PopContext(curContext);
2109 _class->declMode = table->declMode;
2110 external = MkExternalClass(_class);
2111 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Insert((&*ast), addAfter, external);
2112 addAfter = external;
2113 def = MkClassDefClassPropertyValue(MkIdentifier("table"), MkInitializerAssignment(exp = MkExpOp((((void *)0)), '&', MkExpDBTable(__ecereNameSpace__ecere__sys__CopyString(table->name)))));
2114 ProcessExpression(exp);
2115 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*idClassDefs), def);
2116 if(nameField[0])
2117 {
2118 def = MkClassDefClassPropertyValue(MkIdentifier("nameField"), MkInitializerAssignment(exp = MkExpOp((((void *)0)), '&', MkExpDBField(__ecereNameSpace__ecere__sys__CopyString(table->name), MkIdentifier(nameField)))));
2119 ProcessExpression(exp);
2120 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*idClassDefs), def);
2121 }
2122 }
2123 if(table->definitions)
2124 {
2125 struct DBTableEntry * entry;
2126
2127 for(entry = (*table->definitions).first; entry; entry = entry->next)
2128 {
2129 switch(entry->type)
2130 {
2131 case 0:
2132 {
2133 char fieldID[1024];
2134 struct __ecereNameSpace__ecere__sys__OldList * args;
2135 struct Specifier * spec = entry->__anon1.__anon1.dataType->qualifiers ? (struct Specifier *)(*entry->__anon1.__anon1.dataType->qualifiers).first : (((void *)0));
2136
2137 sprintf(fieldID, "__ecereDBField_%s_%s", tableName, entry->id->string);
2138 if(idClassDefs && spec)
2139 {
2140 struct Statement * idSet = MkCompoundStmt(MkList(), MkList()), * idGet = MkCompoundStmt(MkList(), MkList());
2141 struct ClassDef * def;
2142
2143 curContext = idGet->__anon1.compound.context = __extension__ ({
2144 struct Context * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Context);
2145
2146 __ecereInstance1->parent = globalContext, __ecereInstance1;
2147 });
2148 __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"))))))))));
2149 if(spec->type == 1 && spec->__anon1.__anon1.symbol && spec->__anon1.__anon1.symbol->__anon1.registered && spec->__anon1.__anon1.symbol->__anon1.registered->type == 1)
2150 {
2151 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*idGet->__anon1.compound.declarations), MkDeclarationInst(MkInstantiation(MkSpecifierName(spec->__anon1.__anon1.name), MkExpIdentifier(MkIdentifier("d")), (((void *)0)))));
2152 }
2153 else
2154 {
2155 struct Expression * exp;
2156
2157 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*idGet->__anon1.compound.declarations), MkDeclaration(CopyList(entry->__anon1.__anon1.dataType->qualifiers, CopySpecifier), MkListOne(MkInitDeclarator(MkDeclaratorIdentifier(MkIdentifier("d")), MkInitializerAssignment(exp = MkExpConstant("0"))))));
2158 exp->destType = __extension__ ({
2159 struct Type * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Type);
2160
2161 __ecereInstance1->kind = 3, __ecereInstance1->refCount = 1, __ecereInstance1;
2162 });
2163 }
2164 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*idGet->__anon1.compound.statements), MkExpressionStmt(MkListOne(MkExpCall(MkExpMember(MkExpIdentifier(MkIdentifier("r")), MkIdentifier("GetData")), args = MkList()))));
2165 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*args), MkExpIdentifier(MkIdentifier(fieldID)));
2166 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*args), MkExpIdentifier(MkIdentifier("d")));
2167 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*idGet->__anon1.compound.statements), MkExpressionStmt(MkListOne(MkExpOp((((void *)0)), DELETE, MkExpIdentifier(MkIdentifier("r"))))));
2168 if(spec->type == 1 && spec->__anon1.__anon1.symbol && spec->__anon1.__anon1.symbol->__anon1.registered && spec->__anon1.__anon1.symbol->__anon1.registered->type == 1)
2169 {
2170 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*idGet->__anon1.compound.statements), MkExpressionStmt(MkListOne(MkExpOp(MkExpIdentifier(MkIdentifier("value")), '=', MkExpIdentifier(MkIdentifier("d"))))));
2171 }
2172 else
2173 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*idGet->__anon1.compound.statements), MkReturnStmt(MkListOne(MkExpIdentifier(MkIdentifier("d")))));
2174 curContext = idSet->__anon1.compound.context = __extension__ ({
2175 struct Context * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Context);
2176
2177 __ecereInstance1->parent = globalContext, __ecereInstance1;
2178 });
2179 __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"))))))))));
2180 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*idSet->__anon1.compound.statements), MkExpressionStmt(MkListOne(MkExpCall(MkExpMember(MkExpIdentifier(MkIdentifier("r")), MkIdentifier("SetData")), args = MkList()))));
2181 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*args), MkExpIdentifier(MkIdentifier(fieldID)));
2182 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*args), MkExpIdentifier(MkIdentifier("value")));
2183 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*idSet->__anon1.compound.statements), MkExpressionStmt(MkListOne(MkExpOp((((void *)0)), DELETE, MkExpIdentifier(MkIdentifier("r"))))));
2184 curContext = globalContext;
2185 def = MkClassDefProperty(MkProperty(CopyList(entry->__anon1.__anon1.dataType->qualifiers, CopySpecifier), CopyDeclarator(entry->__anon1.__anon1.dataType->declarator), CopyIdentifier(entry->id), idSet, idGet));
2186 def->__anon1.propertyDef->symbol->id = def->__anon1.propertyDef->symbol->idCode = symbolID;
2187 def->__anon1.propertyDef->__anon1.isDBProp = 1;
2188 def->memberAccess = 1;
2189 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*idClassDefs), def);
2190 }
2191 break;
2192 }
2193 case 1:
2194 {
2195 if(entry->__anon1.items && (*entry->__anon1.items).count)
2196 {
2197 char indexID[1024];
2198 struct DBIndexItem * item;
2199 int c;
2200 unsigned int needTable = 0;
2201 char num[16];
2202
2203 if(entry->id || indexed)
2204 {
2205 if(entry->id || (*entry->__anon1.items).count == 1)
2206 {
2207 struct External * external;
2208 struct Identifier * id = entry->id ? entry->id : ((struct DBIndexItem *)(*entry->__anon1.items).first)->id;
2209
2210 sprintf(indexID, "__ecereDBIndex_%s_%s", tableName, id->string);
2211 external = MkExternalDeclaration(MkDeclaration(MkListOne(MkSpecifierName("Table")), MkListOne(MkInitDeclarator(MkDeclaratorIdentifier(MkIdentifier(indexID)), (((void *)0))))));
2212 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*ast), external);
2213 external->__anon1.declaration->declMode = table->declMode;
2214 needTable = 1;
2215 }
2216 else
2217 Compiler_Error(__ecereNameSpace__ecere__GetTranslatedString("ec", "Multiple field index requires a name\n", (((void *)0))));
2218 }
2219 else
2220 {
2221 indexed = 1;
2222 strcpy(indexID, tableID);
2223 }
2224 for(c = 0, item = (*entry->__anon1.items).first; item; item = item->next, c++)
2225 {
2226 char fieldID[1024];
2227
2228 sprintf(num, "%d", c);
2229 sprintf(fieldID, "__ecereDBField_%s_%s", tableName, item->id->string);
2230 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*indexStatements), MkExpressionStmt(MkListOne(MkExpOp(MkExpMember(MkExpIndex(MkExpIdentifier(MkIdentifier("indexes")), MkListOne(MkExpConstant(num))), MkIdentifier("field")), '=', MkExpIdentifier(MkIdentifier(fieldID))))));
2231 __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"))))));
2232 }
2233 sprintf(num, "%d", c);
2234 numIndexes = ((numIndexes > c) ? numIndexes : c);
2235 if(needTable)
2236 {
2237 args = MkList();
2238 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*indexStatements), MkExpressionStmt(MkListOne(MkExpOp(MkExpIdentifier(MkIdentifier(indexID)), '=', MkExpCall(MkExpMember(MkExpIdentifier(MkIdentifier("db")), MkIdentifier("OpenTable")), args)))));
2239 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*args), MkExpString(table->name));
2240 members = MkList();
2241 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*args), MkExpInstance(MkInstantiation((((void *)0)), (((void *)0)), MkListOne(MkMembersInitList(members)))));
2242 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*members), MkMemberInit((((void *)0)), MkInitializerAssignment(MkExpIdentifier(MkIdentifier("tableRows")))));
2243 }
2244 args = MkList();
2245 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*indexStatements), MkExpressionStmt(MkListOne(MkExpCall(MkExpMember(MkExpIdentifier(MkIdentifier(indexID)), MkIdentifier("Index")), args))));
2246 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*args), MkExpConstant(num));
2247 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*args), MkExpIdentifier(MkIdentifier("indexes")));
2248 }
2249 break;
2250 }
2251 }
2252 }
2253 }
2254 }
2255
2256 extern unsigned int inCompiler;
2257
2258 extern void PrePreProcessClassDefinitions(void);
2259
2260 extern struct External * curExternal;
2261
2262 void ProcessDBTableDefinitions()
2263 {
2264 struct External * external;
2265
2266 addAfter = (((void *)0));
2267 curContext = globalContext;
2268 if(inCompiler)
2269 PrePreProcessClassDefinitions();
2270 DeclClass(0, "Field");
2271 DeclClass(0, "Table");
2272 DeclClass(0, "Row");
2273 DeclClass(0, "Id");
2274 numIndexes = 0;
2275 if(ast != (((void *)0)))
2276 {
2277 for(external = (*ast).first; external; external = external->next)
2278 {
2279 curExternal = external;
2280 if(external->symbol)
2281 curSymbolID = external->symbol->idCode;
2282 addAfter = external->prev;
2283 switch(external->type)
2284 {
2285 case 5:
2286 ProcessDBTable(external->__anon1.table);
2287 break;
2288 }
2289 }
2290 for(external = (*ast).first; external; external = external->next)
2291 {
2292 curExternal = external;
2293 if(external->symbol)
2294 curSymbolID = external->symbol->idCode;
2295 addAfter = external->prev;
2296 switch(external->type)
2297 {
2298 case 0:
2299 ProcessFunction(external->__anon1.function);
2300 break;
2301 case 1:
2302 ProcessDeclaration(external->__anon1.declaration);
2303 break;
2304 case 2:
2305 ProcessClass(external->__anon1._class);
2306 break;
2307 }
2308 }
2309 }
2310 curContext = globalContext;
2311 }
2312
2313 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__GlobalFunction;
2314
2315 struct __ecereNameSpace__ecere__com__GlobalFunction;
2316
2317 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);
2318
2319 void __ecereRegisterModule_dbpass(struct __ecereNameSpace__ecere__com__Instance * module)
2320 {
2321 struct __ecereNameSpace__ecere__com__Class __attribute__((unused)) * class;
2322
2323 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ProcessDBTableDefinitions", "void ProcessDBTableDefinitions(void)", ProcessDBTableDefinitions, module, 1);
2324 }
2325
2326 void __ecereUnregisterModule_dbpass(struct __ecereNameSpace__ecere__com__Instance * module)
2327 {
2328
2329 }
2330