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