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