f1fc213dce9d9b732d8cf557b8a29ce424c0cd13
[sdk] / compiler / bootstrap / libec / bootstrap / firstPass.c
1 /* Code generated from eC source file: firstPass.ec */
2 #if defined(__GNUC__)
3 typedef long long int64;
4 typedef unsigned long long uint64;
5 #ifndef _WIN32
6 #define __declspec(x)
7 #endif
8 #elif defined(__TINYC__)
9 #include <stdarg.h>
10 #define __builtin_va_list va_list
11 #define __builtin_va_start va_start
12 #define __builtin_va_end va_end
13 #ifdef _WIN32
14 #define strcasecmp stricmp
15 #define strncasecmp strnicmp
16 #define __declspec(x) __attribute__((x))
17 #else
18 #define __declspec(x)
19 #endif
20 typedef long long int64;
21 typedef unsigned long long uint64;
22 #else
23 typedef __int64 int64;
24 typedef unsigned __int64 uint64;
25 #endif
26 #ifdef __BIG_ENDIAN__
27 #define __ENDIAN_PAD(x) (8 - (x))
28 #else
29 #define __ENDIAN_PAD(x) 0
30 #endif
31 #include <stdint.h>
32 #include <sys/types.h>
33 extern void *  __ecereNameSpace__ecere__com__eSystem_New(unsigned int size);
34
35 extern void *  __ecereNameSpace__ecere__com__eSystem_New0(unsigned int size);
36
37 extern void *  __ecereNameSpace__ecere__com__eSystem_Renew(void *  memory, unsigned int size);
38
39 extern void *  __ecereNameSpace__ecere__com__eSystem_Renew0(void *  memory, unsigned int size);
40
41 extern void __ecereNameSpace__ecere__com__eSystem_Delete(void *  memory);
42
43 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__sys__BTNode;
44
45 struct __ecereNameSpace__ecere__sys__BTNode;
46
47 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__sys__BinaryTree;
48
49 struct __ecereNameSpace__ecere__sys__BinaryTree
50 {
51 struct __ecereNameSpace__ecere__sys__BTNode * root;
52 int count;
53 int (*  CompareKey)(struct __ecereNameSpace__ecere__sys__BinaryTree * tree, uintptr_t a, uintptr_t b);
54 void (*  FreeKey)(void *  key);
55 } __attribute__ ((gcc_struct));
56
57 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__sys__OldList;
58
59 struct __ecereNameSpace__ecere__sys__OldList
60 {
61 void *  first;
62 void *  last;
63 int count;
64 unsigned int offset;
65 unsigned int circ;
66 } __attribute__ ((gcc_struct));
67
68 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__Method;
69
70 struct __ecereNameSpace__ecere__com__Method
71 {
72 char *  name;
73 struct __ecereNameSpace__ecere__com__Method * parent;
74 struct __ecereNameSpace__ecere__com__Method * left;
75 struct __ecereNameSpace__ecere__com__Method * right;
76 int depth;
77 int (*  function)();
78 int vid;
79 int type;
80 struct __ecereNameSpace__ecere__com__Class * _class;
81 void *  symbol;
82 char *  dataTypeString;
83 struct Type * dataType;
84 int memberAccess;
85 } __attribute__ ((gcc_struct));
86
87 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__Property;
88
89 struct __ecereNameSpace__ecere__com__Property
90 {
91 struct __ecereNameSpace__ecere__com__Property * prev;
92 struct __ecereNameSpace__ecere__com__Property * next;
93 char *  name;
94 unsigned int isProperty;
95 int memberAccess;
96 int id;
97 struct __ecereNameSpace__ecere__com__Class * _class;
98 char *  dataTypeString;
99 struct __ecereNameSpace__ecere__com__Class * dataTypeClass;
100 struct Type * dataType;
101 void (*  Set)(void * , int);
102 int (*  Get)(void * );
103 unsigned int (*  IsSet)(void * );
104 void *  data;
105 void *  symbol;
106 int vid;
107 unsigned int conversion;
108 unsigned int watcherOffset;
109 char *  category;
110 unsigned int compiled;
111 unsigned int selfWatchable;
112 unsigned int isWatchable;
113 } __attribute__ ((gcc_struct));
114
115 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_CodePosition;
116
117 struct CodePosition
118 {
119 int line;
120 int charPos;
121 int pos;
122 int included;
123 } __attribute__ ((gcc_struct));
124
125 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Location;
126
127 struct Location
128 {
129 struct CodePosition start;
130 struct CodePosition end;
131 } __attribute__ ((gcc_struct));
132
133 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Attrib;
134
135 struct Attrib;
136
137 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_ExtDecl;
138
139 struct ExtDecl;
140
141 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_ClassDefinition;
142
143 struct ClassDefinition
144 {
145 struct ClassDefinition * prev;
146 struct ClassDefinition * next;
147 struct Location loc;
148 struct Specifier * _class;
149 struct __ecereNameSpace__ecere__sys__OldList *  baseSpecs;
150 struct __ecereNameSpace__ecere__sys__OldList *  definitions;
151 struct Symbol * symbol;
152 struct Location blockStart;
153 struct Location nameLoc;
154 int endid;
155 int declMode;
156 unsigned int deleteWatchable;
157 } __attribute__ ((gcc_struct));
158
159 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Context;
160
161 struct Context
162 {
163 struct Context * parent;
164 struct __ecereNameSpace__ecere__sys__BinaryTree types;
165 struct __ecereNameSpace__ecere__sys__BinaryTree classes;
166 struct __ecereNameSpace__ecere__sys__BinaryTree symbols;
167 struct __ecereNameSpace__ecere__sys__BinaryTree structSymbols;
168 int nextID;
169 int simpleID;
170 struct __ecereNameSpace__ecere__sys__BinaryTree templateTypes;
171 struct ClassDefinition * classDef;
172 unsigned int templateTypesOnly;
173 unsigned int hasNameSpace;
174 } __attribute__ ((gcc_struct));
175
176 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Instantiation;
177
178 struct Instantiation
179 {
180 struct Instantiation * prev;
181 struct Instantiation * next;
182 struct Location loc;
183 struct Specifier * _class;
184 struct Expression * exp;
185 struct __ecereNameSpace__ecere__sys__OldList *  members;
186 struct Symbol * symbol;
187 unsigned int fullSet;
188 unsigned int isConstant;
189 unsigned char *  data;
190 struct Location nameLoc;
191 struct Location insideLoc;
192 unsigned int built;
193 } __attribute__ ((gcc_struct));
194
195 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Declaration;
196
197 struct Declaration
198 {
199 struct Declaration * prev;
200 struct Declaration * next;
201 struct Location loc;
202 int type;
203 union
204 {
205 struct
206 {
207 struct __ecereNameSpace__ecere__sys__OldList *  specifiers;
208 struct __ecereNameSpace__ecere__sys__OldList *  declarators;
209 } __attribute__ ((gcc_struct));
210 struct Instantiation * inst;
211 struct
212 {
213 struct Identifier * id;
214 struct Expression * exp;
215 } __attribute__ ((gcc_struct));
216 } __attribute__ ((gcc_struct));
217 struct Specifier * extStorage;
218 struct Symbol * symbol;
219 int declMode;
220 } __attribute__ ((gcc_struct));
221
222 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Statement;
223
224 struct Statement;
225
226 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_TypeName;
227
228 struct TypeName;
229
230 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Initializer;
231
232 struct Initializer;
233
234 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__DataValue;
235
236 struct __ecereNameSpace__ecere__com__DataValue
237 {
238 union
239 {
240 char c;
241 unsigned char uc;
242 short s;
243 unsigned short us;
244 int i;
245 unsigned int ui;
246 void *  p;
247 float f;
248 double d;
249 long long i64;
250 uint64 ui64;
251 } __attribute__ ((gcc_struct));
252 } __attribute__ ((gcc_struct));
253
254 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Expression;
255
256 struct Expression
257 {
258 struct Expression * prev;
259 struct Expression * next;
260 struct Location loc;
261 int type;
262 union
263 {
264 struct
265 {
266 char *  constant;
267 struct Identifier * identifier;
268 } __attribute__ ((gcc_struct));
269 struct Statement * compound;
270 struct Instantiation * instance;
271 struct
272 {
273 char *  string;
274 unsigned int intlString;
275 } __attribute__ ((gcc_struct));
276 struct __ecereNameSpace__ecere__sys__OldList *  list;
277 struct
278 {
279 struct __ecereNameSpace__ecere__sys__OldList * specifiers;
280 struct Declarator * decl;
281 } __attribute__ ((gcc_struct)) _classExp;
282 struct
283 {
284 struct Identifier * id;
285 } __attribute__ ((gcc_struct)) classData;
286 struct
287 {
288 struct Expression * exp;
289 struct __ecereNameSpace__ecere__sys__OldList * arguments;
290 struct Location argLoc;
291 } __attribute__ ((gcc_struct)) call;
292 struct
293 {
294 struct Expression * exp;
295 struct __ecereNameSpace__ecere__sys__OldList * index;
296 } __attribute__ ((gcc_struct)) index;
297 struct
298 {
299 struct Expression * exp;
300 struct Identifier * member;
301 int memberType;
302 unsigned int thisPtr;
303 } __attribute__ ((gcc_struct)) member;
304 struct
305 {
306 int op;
307 struct Expression * exp1;
308 struct Expression * exp2;
309 } __attribute__ ((gcc_struct)) op;
310 struct TypeName * typeName;
311 struct Specifier * _class;
312 struct
313 {
314 struct TypeName * typeName;
315 struct Expression * exp;
316 } __attribute__ ((gcc_struct)) cast;
317 struct
318 {
319 struct Expression * cond;
320 struct __ecereNameSpace__ecere__sys__OldList * exp;
321 struct Expression * elseExp;
322 } __attribute__ ((gcc_struct)) cond;
323 struct
324 {
325 struct TypeName * typeName;
326 struct Expression * size;
327 } __attribute__ ((gcc_struct)) _new;
328 struct
329 {
330 struct TypeName * typeName;
331 struct Expression * size;
332 struct Expression * exp;
333 } __attribute__ ((gcc_struct)) _renew;
334 struct
335 {
336 char * table;
337 struct Identifier * id;
338 } __attribute__ ((gcc_struct)) db;
339 struct
340 {
341 struct Expression * ds;
342 struct Expression * name;
343 } __attribute__ ((gcc_struct)) dbopen;
344 struct
345 {
346 struct TypeName * typeName;
347 struct Initializer * initializer;
348 } __attribute__ ((gcc_struct)) initializer;
349 struct
350 {
351 struct Expression * exp;
352 struct TypeName * typeName;
353 } __attribute__ ((gcc_struct)) vaArg;
354 } __attribute__ ((gcc_struct));
355 unsigned int debugValue;
356 struct __ecereNameSpace__ecere__com__DataValue val;
357 uint64 address;
358 unsigned int hasAddress;
359 struct Type * expType;
360 struct Type * destType;
361 unsigned int usage;
362 int tempCount;
363 unsigned int byReference;
364 unsigned int isConstant;
365 unsigned int addedThis;
366 unsigned int needCast;
367 unsigned int thisPtr;
368 unsigned int opDestType;
369 } __attribute__ ((gcc_struct));
370
371 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_TemplateDatatype;
372
373 struct TemplateDatatype
374 {
375 struct __ecereNameSpace__ecere__sys__OldList *  specifiers;
376 struct Declarator * decl;
377 } __attribute__ ((gcc_struct));
378
379 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_TemplateArgument;
380
381 struct TemplateArgument
382 {
383 struct TemplateArgument * prev;
384 struct TemplateArgument * next;
385 struct Location loc;
386 struct Identifier * name;
387 int type;
388 union
389 {
390 struct Expression * expression;
391 struct Identifier * identifier;
392 struct TemplateDatatype * templateDatatype;
393 } __attribute__ ((gcc_struct));
394 } __attribute__ ((gcc_struct));
395
396 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_TemplateParameter;
397
398 struct TemplateParameter
399 {
400 struct TemplateParameter * prev;
401 struct TemplateParameter * next;
402 struct Location loc;
403 int type;
404 struct Identifier * identifier;
405 union
406 {
407 struct TemplateDatatype * dataType;
408 int memberType;
409 } __attribute__ ((gcc_struct));
410 struct TemplateArgument * defaultArgument;
411 char *  dataTypeString;
412 struct Type * baseType;
413 } __attribute__ ((gcc_struct));
414
415 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Specifier;
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 } __attribute__ ((gcc_struct));
433 struct
434 {
435 struct Identifier * id;
436 struct __ecereNameSpace__ecere__sys__OldList *  list;
437 struct __ecereNameSpace__ecere__sys__OldList *  baseSpecs;
438 struct __ecereNameSpace__ecere__sys__OldList *  definitions;
439 unsigned int addNameSpace;
440 struct Context * ctx;
441 struct ExtDecl * extDeclStruct;
442 } __attribute__ ((gcc_struct));
443 struct Expression * expression;
444 struct Specifier * _class;
445 struct TemplateParameter * templateParameter;
446 } __attribute__ ((gcc_struct));
447 } __attribute__ ((gcc_struct));
448
449 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Identifier;
450
451 struct Identifier
452 {
453 struct Identifier * prev;
454 struct Identifier * next;
455 struct Location loc;
456 struct Symbol * classSym;
457 struct Specifier * _class;
458 char *  string;
459 struct Identifier * badID;
460 } __attribute__ ((gcc_struct));
461
462 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Pointer;
463
464 struct Pointer;
465
466 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Declarator;
467
468 struct Declarator
469 {
470 struct Declarator * prev;
471 struct Declarator * next;
472 struct Location loc;
473 int type;
474 struct Symbol * symbol;
475 struct Declarator * declarator;
476 union
477 {
478 struct Identifier * identifier;
479 struct
480 {
481 struct Expression * exp;
482 struct Expression * posExp;
483 struct Attrib * attrib;
484 } __attribute__ ((gcc_struct)) structDecl;
485 struct
486 {
487 struct Expression * exp;
488 struct Specifier * enumClass;
489 } __attribute__ ((gcc_struct)) array;
490 struct
491 {
492 struct __ecereNameSpace__ecere__sys__OldList * parameters;
493 } __attribute__ ((gcc_struct)) function;
494 struct
495 {
496 struct Pointer * pointer;
497 } __attribute__ ((gcc_struct)) pointer;
498 struct
499 {
500 struct ExtDecl * extended;
501 } __attribute__ ((gcc_struct)) extended;
502 } __attribute__ ((gcc_struct));
503 } __attribute__ ((gcc_struct));
504
505 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_FunctionDefinition;
506
507 struct FunctionDefinition;
508
509 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_DBTableDef;
510
511 struct DBTableDef;
512
513 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_External;
514
515 struct External
516 {
517 struct External * prev;
518 struct External * next;
519 struct Location loc;
520 int type;
521 struct Symbol * symbol;
522 union
523 {
524 struct FunctionDefinition * function;
525 struct ClassDefinition * _class;
526 struct Declaration * declaration;
527 char *  importString;
528 struct Identifier * id;
529 struct DBTableDef * table;
530 } __attribute__ ((gcc_struct));
531 int importType;
532 } __attribute__ ((gcc_struct));
533
534 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_ModuleImport;
535
536 struct ModuleImport;
537
538 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_ClassImport;
539
540 struct ClassImport;
541
542 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Symbol;
543
544 struct Symbol
545 {
546 char *  string;
547 struct Symbol * parent;
548 struct Symbol * left;
549 struct Symbol * right;
550 int depth;
551 struct Type * type;
552 union
553 {
554 struct __ecereNameSpace__ecere__com__Method * method;
555 struct __ecereNameSpace__ecere__com__Property * _property;
556 struct __ecereNameSpace__ecere__com__Class * registered;
557 } __attribute__ ((gcc_struct));
558 int id;
559 int idCode;
560 union
561 {
562 struct
563 {
564 struct External * pointerExternal;
565 struct External * structExternal;
566 } __attribute__ ((gcc_struct));
567 struct
568 {
569 struct External * externalGet;
570 struct External * externalSet;
571 struct External * externalPtr;
572 struct External * externalIsSet;
573 } __attribute__ ((gcc_struct));
574 struct
575 {
576 struct External * methodExternal;
577 struct External * methodCodeExternal;
578 } __attribute__ ((gcc_struct));
579 } __attribute__ ((gcc_struct));
580 unsigned int imported;
581 unsigned int declaredStructSym;
582 struct __ecereNameSpace__ecere__com__Class * _class;
583 unsigned int declaredStruct;
584 unsigned int needConstructor;
585 unsigned int needDestructor;
586 char *  constructorName;
587 char *  structName;
588 char *  className;
589 char *  destructorName;
590 struct ModuleImport * module;
591 struct ClassImport * _import;
592 struct Location nameLoc;
593 unsigned int isParam;
594 unsigned int isRemote;
595 unsigned int isStruct;
596 unsigned int fireWatchersDone;
597 int declaring;
598 unsigned int classData;
599 unsigned int isStatic;
600 char *  shortName;
601 struct __ecereNameSpace__ecere__sys__OldList *  templateParams;
602 struct __ecereNameSpace__ecere__sys__OldList templatedClasses;
603 struct Context * ctx;
604 int isIterator;
605 struct Expression * propCategory;
606 } __attribute__ ((gcc_struct));
607
608 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Type;
609
610 struct Type
611 {
612 struct Type * prev;
613 struct Type * next;
614 int refCount;
615 union
616 {
617 struct Symbol * _class;
618 struct
619 {
620 struct __ecereNameSpace__ecere__sys__OldList members;
621 char *  enumName;
622 } __attribute__ ((gcc_struct));
623 struct
624 {
625 struct Type * returnType;
626 struct __ecereNameSpace__ecere__sys__OldList params;
627 struct Symbol * thisClass;
628 unsigned int staticMethod;
629 struct TemplateParameter * thisClassTemplate;
630 } __attribute__ ((gcc_struct));
631 struct
632 {
633 struct __ecereNameSpace__ecere__com__Method * method;
634 struct __ecereNameSpace__ecere__com__Class * methodClass;
635 struct __ecereNameSpace__ecere__com__Class * usedClass;
636 } __attribute__ ((gcc_struct));
637 struct
638 {
639 struct Type * arrayType;
640 int arraySize;
641 struct Expression * arraySizeExp;
642 unsigned int freeExp;
643 struct Symbol * enumClass;
644 } __attribute__ ((gcc_struct));
645 struct Type * type;
646 struct TemplateParameter * templateParameter;
647 } __attribute__ ((gcc_struct));
648 int kind;
649 unsigned int size;
650 char *  name;
651 char *  typeName;
652 int classObjectType;
653 int alignment;
654 unsigned int offset;
655 int bitFieldCount;
656 int count;
657 unsigned int isSigned : 1;
658 unsigned int constant : 1;
659 unsigned int truth : 1;
660 unsigned int byReference : 1;
661 unsigned int extraParam : 1;
662 unsigned int directClassAccess : 1;
663 unsigned int computing : 1;
664 unsigned int keepCast : 1;
665 unsigned int passAsTemplate : 1;
666 unsigned int dllExport : 1;
667 unsigned int attrStdcall : 1;
668 unsigned int declaredWithStruct : 1;
669 unsigned int typedByReference : 1;
670 } __attribute__ ((gcc_struct));
671
672 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__Class;
673
674 struct __ecereNameSpace__ecere__com__Class
675 {
676 struct __ecereNameSpace__ecere__com__Class * prev;
677 struct __ecereNameSpace__ecere__com__Class * next;
678 char *  name;
679 int offset;
680 int structSize;
681 int (* *  _vTbl)();
682 int vTblSize;
683 int (*  Constructor)(struct __ecereNameSpace__ecere__com__Instance *);
684 void (*  Destructor)(struct __ecereNameSpace__ecere__com__Instance *);
685 int offsetClass;
686 int sizeClass;
687 struct __ecereNameSpace__ecere__com__Class * base;
688 struct __ecereNameSpace__ecere__sys__BinaryTree methods;
689 struct __ecereNameSpace__ecere__sys__BinaryTree members;
690 struct __ecereNameSpace__ecere__sys__BinaryTree prop;
691 struct __ecereNameSpace__ecere__sys__OldList membersAndProperties;
692 struct __ecereNameSpace__ecere__sys__BinaryTree classProperties;
693 struct __ecereNameSpace__ecere__sys__OldList derivatives;
694 int memberID;
695 int startMemberID;
696 int type;
697 struct __ecereNameSpace__ecere__com__Instance * module;
698 struct __ecereNameSpace__ecere__com__NameSpace *  nameSpace;
699 char *  dataTypeString;
700 struct Type * dataType;
701 int typeSize;
702 int defaultAlignment;
703 void (*  Initialize)();
704 int memberOffset;
705 struct __ecereNameSpace__ecere__sys__OldList selfWatchers;
706 char *  designerClass;
707 unsigned int noExpansion;
708 char *  defaultProperty;
709 unsigned int comRedefinition;
710 int count;
711 int isRemote;
712 unsigned int internalDecl;
713 void *  data;
714 unsigned int computeSize;
715 int structAlignment;
716 int destructionWatchOffset;
717 unsigned int fixed;
718 struct __ecereNameSpace__ecere__sys__OldList delayedCPValues;
719 int inheritanceAccess;
720 char *  fullName;
721 void *  symbol;
722 struct __ecereNameSpace__ecere__sys__OldList conversions;
723 struct __ecereNameSpace__ecere__sys__OldList templateParams;
724 struct __ecereNameSpace__ecere__com__ClassTemplateArgument *  templateArgs;
725 struct __ecereNameSpace__ecere__com__Class * templateClass;
726 struct __ecereNameSpace__ecere__sys__OldList templatized;
727 int numParams;
728 unsigned int isInstanceClass;
729 unsigned int byValueSystemClass;
730 } __attribute__ ((gcc_struct));
731
732 extern long long __ecereNameSpace__ecere__com__eClass_GetProperty(struct __ecereNameSpace__ecere__com__Class * _class, char *  name);
733
734 extern void __ecereNameSpace__ecere__com__eClass_SetProperty(struct __ecereNameSpace__ecere__com__Class * _class, char *  name, long long value);
735
736 extern void __ecereNameSpace__ecere__com__eInstance_FireSelfWatchers(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property);
737
738 extern void __ecereNameSpace__ecere__com__eInstance_SetMethod(struct __ecereNameSpace__ecere__com__Instance * instance, char *  name, void *  function);
739
740 extern void __ecereNameSpace__ecere__com__eInstance_IncRef(struct __ecereNameSpace__ecere__com__Instance * instance);
741
742 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);
743
744 extern void __ecereNameSpace__ecere__com__eInstance_Watch(void *  instance, struct __ecereNameSpace__ecere__com__Property * _property, void *  object, void (*  callback)(void * , void * ));
745
746 extern void __ecereNameSpace__ecere__com__eInstance_FireWatchers(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property);
747
748 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__Instance;
749
750 struct __ecereNameSpace__ecere__com__Instance
751 {
752 int (* *  _vTbl)();
753 struct __ecereNameSpace__ecere__com__Class * _class;
754 int _refCount;
755 } __attribute__ ((gcc_struct));
756
757 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__DataMember;
758
759 struct __ecereNameSpace__ecere__com__DataMember
760 {
761 struct __ecereNameSpace__ecere__com__DataMember * prev;
762 struct __ecereNameSpace__ecere__com__DataMember * next;
763 char *  name;
764 unsigned int isProperty;
765 int memberAccess;
766 int id;
767 struct __ecereNameSpace__ecere__com__Class * _class;
768 char *  dataTypeString;
769 struct __ecereNameSpace__ecere__com__Class * dataTypeClass;
770 struct Type * dataType;
771 int type;
772 int offset;
773 int memberID;
774 struct __ecereNameSpace__ecere__sys__OldList members;
775 struct __ecereNameSpace__ecere__sys__BinaryTree membersAlpha;
776 int memberOffset;
777 int structAlignment;
778 } __attribute__ ((gcc_struct));
779
780 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__SerialBuffer;
781
782 struct __ecereNameSpace__ecere__com__SerialBuffer
783 {
784 unsigned char *  _buffer;
785 unsigned int count;
786 unsigned int _size;
787 unsigned int pos;
788 } __attribute__ ((gcc_struct));
789
790 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__ClassTemplateArgument;
791
792 struct __ecereNameSpace__ecere__com__ClassTemplateArgument
793 {
794 union
795 {
796 struct
797 {
798 char *  dataTypeString;
799 struct __ecereNameSpace__ecere__com__Class * dataTypeClass;
800 } __attribute__ ((gcc_struct));
801 struct __ecereNameSpace__ecere__com__DataValue expression;
802 struct
803 {
804 char *  memberString;
805 union
806 {
807 struct __ecereNameSpace__ecere__com__DataMember * member;
808 struct __ecereNameSpace__ecere__com__Property * prop;
809 struct __ecereNameSpace__ecere__com__Method * method;
810 } __attribute__ ((gcc_struct));
811 } __attribute__ ((gcc_struct));
812 } __attribute__ ((gcc_struct));
813 } __attribute__ ((gcc_struct));
814
815 enum yytokentype
816 {
817 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
818 };
819
820 typedef union YYSTYPE
821 {
822 int specifierType;
823 int i;
824 int declMode;
825 struct Identifier * id;
826 struct Expression * exp;
827 struct Specifier * specifier;
828 struct __ecereNameSpace__ecere__sys__OldList * list;
829 struct Enumerator * enumerator;
830 struct Declarator * declarator;
831 struct Pointer * pointer;
832 struct Initializer * initializer;
833 struct InitDeclarator * initDeclarator;
834 struct TypeName * typeName;
835 struct Declaration * declaration;
836 struct Statement * stmt;
837 struct FunctionDefinition * function;
838 struct External * external;
839 struct Context * context;
840 struct AsmField * asmField;
841 struct Attrib * attrib;
842 struct ExtDecl * extDecl;
843 struct Attribute * attribute;
844 struct Instantiation * instance;
845 struct MembersInit * membersInit;
846 struct MemberInit * memberInit;
847 struct ClassFunction * classFunction;
848 struct ClassDefinition * _class;
849 struct ClassDef * classDef;
850 struct PropertyDef * prop;
851 char * string;
852 struct Symbol * symbol;
853 struct PropertyWatch * propertyWatch;
854 struct TemplateParameter * templateParameter;
855 struct TemplateArgument * templateArgument;
856 struct TemplateDatatype * templateDatatype;
857 struct DBTableEntry * dbtableEntry;
858 struct DBIndexItem * dbindexItem;
859 struct DBTableDef * dbtableDef;
860 } __attribute__ ((gcc_struct)) YYSTYPE;
861
862 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Enumerator;
863
864 struct Enumerator;
865
866 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_InitDeclarator;
867
868 struct InitDeclarator;
869
870 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_AsmField;
871
872 struct AsmField;
873
874 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Attribute;
875
876 struct Attribute;
877
878 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_ClassFunction;
879
880 struct ClassFunction
881 {
882 struct ClassFunction * prev;
883 struct ClassFunction * next;
884 struct Location loc;
885 struct __ecereNameSpace__ecere__sys__OldList *  specifiers;
886 struct Declarator * declarator;
887 struct __ecereNameSpace__ecere__sys__OldList *  declarations;
888 struct Statement * body;
889 struct __ecereNameSpace__ecere__com__Class * _class;
890 struct __ecereNameSpace__ecere__sys__OldList attached;
891 int declMode;
892 struct Type * type;
893 struct Symbol * propSet;
894 unsigned int isVirtual;
895 unsigned int isConstructor;
896 unsigned int isDestructor;
897 unsigned int dontMangle;
898 int id;
899 int idCode;
900 } __attribute__ ((gcc_struct));
901
902 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_MembersInit;
903
904 struct MembersInit;
905
906 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_MemberInit;
907
908 struct MemberInit;
909
910 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_PropertyDef;
911
912 struct PropertyDef
913 {
914 struct PropertyDef * prev;
915 struct PropertyDef * next;
916 struct Location loc;
917 struct __ecereNameSpace__ecere__sys__OldList *  specifiers;
918 struct Declarator * declarator;
919 struct Identifier * id;
920 struct Statement * getStmt;
921 struct Statement * setStmt;
922 struct Statement * issetStmt;
923 struct Symbol * symbol;
924 struct Expression * category;
925 struct
926 {
927 unsigned int conversion : 1;
928 unsigned int isWatchable : 1;
929 unsigned int isDBProp : 1;
930 } __attribute__ ((gcc_struct));
931 } __attribute__ ((gcc_struct));
932
933 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_PropertyWatch;
934
935 struct PropertyWatch;
936
937 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_ClassDef;
938
939 struct ClassDef
940 {
941 struct ClassDef * prev;
942 struct ClassDef * next;
943 struct Location loc;
944 int type;
945 union
946 {
947 struct Declaration * decl;
948 struct ClassFunction * function;
949 struct __ecereNameSpace__ecere__sys__OldList *  defProperties;
950 struct PropertyDef * propertyDef;
951 struct PropertyWatch * propertyWatch;
952 char *  designer;
953 struct Identifier * defaultProperty;
954 struct
955 {
956 struct Identifier * id;
957 struct Initializer * initializer;
958 } __attribute__ ((gcc_struct));
959 } __attribute__ ((gcc_struct));
960 int memberAccess;
961 void *  object;
962 } __attribute__ ((gcc_struct));
963
964 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_DBTableEntry;
965
966 struct DBTableEntry;
967
968 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_DBIndexItem;
969
970 struct DBIndexItem;
971
972 extern YYSTYPE yylval;
973
974 extern struct Location yylloc;
975
976 extern struct Identifier * GetDeclId(struct Declarator * decl);
977
978 extern void ProcessExpressionType(struct Expression * exp);
979
980 extern void ComputeExpression(struct Expression * exp);
981
982 extern int strtol(char * , char * * , int base);
983
984 extern void FreeExpression(struct Expression * exp);
985
986 extern struct Type * ProcessType(struct __ecereNameSpace__ecere__sys__OldList * specs, struct Declarator * decl);
987
988 extern void PrintType(struct Type * type, char *  string, unsigned int printName, unsigned int fullName);
989
990 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__BitMember;
991
992 struct __ecereNameSpace__ecere__com__BitMember
993 {
994 struct __ecereNameSpace__ecere__com__BitMember * prev;
995 struct __ecereNameSpace__ecere__com__BitMember * next;
996 char *  name;
997 unsigned int isProperty;
998 int memberAccess;
999 int id;
1000 struct __ecereNameSpace__ecere__com__Class * _class;
1001 char *  dataTypeString;
1002 struct __ecereNameSpace__ecere__com__Class * dataTypeClass;
1003 struct Type * dataType;
1004 int type;
1005 int size;
1006 int pos;
1007 uint64 mask;
1008 } __attribute__ ((gcc_struct));
1009
1010 extern struct __ecereNameSpace__ecere__com__BitMember * __ecereNameSpace__ecere__com__eClass_AddBitMember(struct __ecereNameSpace__ecere__com__Class * _class, char *  name, char *  type, int bitSize, int bitPos, int declMode);
1011
1012 extern void Compiler_Error(char *  format, ...);
1013
1014 extern char *  __ecereNameSpace__ecere__GetTranslatedString(char * name, char *  string, char *  stringAndContext);
1015
1016 extern void FreeType(struct Type * type);
1017
1018 extern struct __ecereNameSpace__ecere__com__DataMember * __ecereNameSpace__ecere__com__eMember_AddDataMember(struct __ecereNameSpace__ecere__com__DataMember * member, char *  name, char *  type, unsigned int size, unsigned int alignment, int declMode);
1019
1020 extern struct __ecereNameSpace__ecere__com__DataMember * __ecereNameSpace__ecere__com__eClass_AddDataMember(struct __ecereNameSpace__ecere__com__Class * _class, char *  name, char *  type, unsigned int size, unsigned int alignment, int declMode);
1021
1022 extern struct __ecereNameSpace__ecere__com__DataMember * __ecereNameSpace__ecere__com__eMember_New(int type, int declMode);
1023
1024 extern unsigned int __ecereNameSpace__ecere__com__eMember_AddMember(struct __ecereNameSpace__ecere__com__DataMember * addTo, struct __ecereNameSpace__ecere__com__DataMember * dataMember);
1025
1026 extern unsigned int __ecereNameSpace__ecere__com__eClass_AddMember(struct __ecereNameSpace__ecere__com__Class * _class, struct __ecereNameSpace__ecere__com__DataMember * dataMember);
1027
1028 extern struct __ecereNameSpace__ecere__sys__OldList *  MkListOne(void *  item);
1029
1030 extern struct Declarator * MkDeclaratorIdentifier(struct Identifier * id);
1031
1032 extern char *  StringFromSpecDecl(struct __ecereNameSpace__ecere__sys__OldList * specs, struct Declarator * decl);
1033
1034 extern struct __ecereNameSpace__ecere__com__Property * __ecereNameSpace__ecere__com__eClass_AddProperty(struct __ecereNameSpace__ecere__com__Class * _class, char *  name, char *  dataType, void *  setStmt, void *  getStmt, int declMode);
1035
1036 extern unsigned int inCompiler;
1037
1038 extern char *  __ecereNameSpace__ecere__sys__CopyString(char *  string);
1039
1040 extern void __ecereNameSpace__ecere__com__eProperty_Watchable(struct __ecereNameSpace__ecere__com__Property * _property);
1041
1042 extern int printf(char * , ...);
1043
1044 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__ClassProperty;
1045
1046 struct __ecereNameSpace__ecere__com__ClassProperty;
1047
1048 extern struct __ecereNameSpace__ecere__com__ClassProperty * __ecereNameSpace__ecere__com__eClass_AddClassProperty(struct __ecereNameSpace__ecere__com__Class * _class, char *  name, char *  dataType, void *  setStmt, void *  getStmt);
1049
1050 extern void *  __ecereNameSpace__ecere__com__eInstance_New(struct __ecereNameSpace__ecere__com__Class * _class);
1051
1052 static void AddDefinitions(struct __ecereNameSpace__ecere__com__Class * regClass, struct __ecereNameSpace__ecere__com__DataMember * member, struct __ecereNameSpace__ecere__sys__OldList * definitions)
1053 {
1054 if(definitions != (((void *)0)))
1055 {
1056 struct ClassDef * def;
1057
1058 for(def = definitions->first; def; def = def->next)
1059 {
1060 if(def->type == 2)
1061 {
1062 struct Declaration * decl = def->decl;
1063 struct __ecereNameSpace__ecere__com__DataMember * dataMember = (((void *)0));
1064 struct Type * dataType;
1065
1066 if(decl->type == 0)
1067 {
1068 struct Declarator * d;
1069
1070 if(decl->declarators)
1071 {
1072 for(d = (*decl->declarators).first; d; d = d->next)
1073 {
1074 struct Identifier * declId = GetDeclId(d);
1075
1076 if(declId)
1077 {
1078 if(regClass && regClass->type == 2)
1079 {
1080 struct Expression * sizeExp = (d->type == 0) ? d->structDecl.exp : (((void *)0));
1081 struct Expression * posExp = (d->type == 0) ? d->structDecl.posExp : (((void *)0));
1082 int bitSize = 0, bitPos = -1;
1083 char dataTypeString[8192];
1084
1085 dataTypeString[0] = (char)0;
1086 if(sizeExp)
1087 {
1088 ProcessExpressionType(sizeExp);
1089 ComputeExpression(sizeExp);
1090 if(sizeExp->isConstant)
1091 bitSize = strtol(sizeExp->constant, (((void *)0)), 0);
1092 FreeExpression(sizeExp);
1093 }
1094 if(posExp)
1095 {
1096 ProcessExpressionType(posExp);
1097 ComputeExpression(posExp);
1098 if(posExp->isConstant)
1099 bitPos = strtol(posExp->constant, (((void *)0)), 0);
1100 FreeExpression(posExp);
1101 }
1102 if(d->type == 0)
1103 {
1104 d->structDecl.posExp = (((void *)0));
1105 d->structDecl.exp = (((void *)0));
1106 }
1107 dataType = ProcessType(decl->specifiers, d);
1108 PrintType(dataType, dataTypeString, 0x0, 0x1);
1109 {
1110 struct __ecereNameSpace__ecere__com__BitMember * member = __ecereNameSpace__ecere__com__eClass_AddBitMember(regClass, declId->string, dataTypeString, 0, 0, def->memberAccess);
1111
1112 if(member)
1113 {
1114 member->size = bitSize;
1115 member->pos = bitPos;
1116 }
1117 dataMember = (struct __ecereNameSpace__ecere__com__DataMember *)member;
1118 }
1119 if(dataMember)
1120 dataMember->dataType = dataType;
1121 else
1122 {
1123 Compiler_Error(__ecereNameSpace__ecere__GetTranslatedString("ec", "Member with same name already exists %s in class %s\n", (((void *)0))), declId->string, regClass->name);
1124 FreeType(dataType);
1125 }
1126 }
1127 else
1128 {
1129 {
1130 char typeString[8192];
1131
1132 typeString[0] = (char)0;
1133 dataType = ProcessType(decl->specifiers, d);
1134 PrintType(dataType, typeString, 0x0, 0x1);
1135 if(member)
1136 {
1137 dataMember = __ecereNameSpace__ecere__com__eMember_AddDataMember(member, declId->string, typeString, 0, 0, def->memberAccess);
1138 if(!dataMember)
1139 Compiler_Error(__ecereNameSpace__ecere__GetTranslatedString("ec", "Member with same name already exists %s in member %s\n", (((void *)0))), declId->string, member->name);
1140 }
1141 else if(regClass)
1142 {
1143 dataMember = __ecereNameSpace__ecere__com__eClass_AddDataMember(regClass, declId->string, typeString, 0, 0, def->memberAccess);
1144 if(!dataMember)
1145 Compiler_Error(__ecereNameSpace__ecere__GetTranslatedString("ec", "Member with same name already exists %s in class %s\n", (((void *)0))), declId->string, regClass->name);
1146 }
1147 if(dataMember)
1148 dataMember->dataType = dataType;
1149 else
1150 FreeType(dataType);
1151 }
1152 }
1153 }
1154 }
1155 }
1156 else if(decl->specifiers)
1157 {
1158 struct Specifier * spec;
1159
1160 for(spec = (*decl->specifiers).first; spec; spec = spec->next)
1161 {
1162 if(spec->type == 3 || spec->type == 4)
1163 {
1164 if(spec->definitions && !spec->id)
1165 {
1166 struct __ecereNameSpace__ecere__com__DataMember * dataMember = __ecereNameSpace__ecere__com__eMember_New((spec->type == 4) ? 1 : 2, def->memberAccess);
1167
1168 AddDefinitions((((void *)0)), dataMember, spec->definitions);
1169 if(member)
1170 {
1171 __ecereNameSpace__ecere__com__eMember_AddMember(member, dataMember);
1172 }
1173 else
1174 {
1175 __ecereNameSpace__ecere__com__eClass_AddMember(regClass, dataMember);
1176 }
1177 }
1178 else if(spec->definitions && spec->id)
1179 {
1180 {
1181 struct Identifier * id = spec->id;
1182 char typeString[8192];
1183
1184 typeString[0] = (char)0;
1185 spec->id = (((void *)0));
1186 decl->declarators = MkListOne(MkDeclaratorIdentifier(id));
1187 dataType = ProcessType(decl->specifiers, (((void *)0)));
1188 PrintType(dataType, typeString, 0x0, 0x1);
1189 if(member)
1190 {
1191 dataMember = __ecereNameSpace__ecere__com__eMember_AddDataMember(member, id->string, typeString, 0, 0, def->memberAccess);
1192 if(!dataMember)
1193 Compiler_Error(__ecereNameSpace__ecere__GetTranslatedString("ec", "Member with same name already exists %s in member %s\n", (((void *)0))), id->string, member->name);
1194 }
1195 else
1196 {
1197 dataMember = __ecereNameSpace__ecere__com__eClass_AddDataMember(regClass, id->string, typeString, 0, 0, def->memberAccess);
1198 if(!dataMember)
1199 Compiler_Error(__ecereNameSpace__ecere__GetTranslatedString("ec", "Member with same name already exists %s in class %s\n", (((void *)0))), id->string, regClass->name);
1200 }
1201 if(dataMember)
1202 dataMember->dataType = dataType;
1203 else
1204 FreeType(dataType);
1205 }
1206 }
1207 }
1208 }
1209 }
1210 }
1211 else if(decl->type == 2)
1212 {
1213 struct Instantiation * inst = decl->inst;
1214 struct Expression * exp = inst->exp;
1215
1216 if(exp)
1217 {
1218 char * string = exp->identifier->string;
1219
1220 {
1221 struct Type * dataType = (dataType = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Type), dataType->kind = 8, dataType->_class = inst->_class->symbol, dataType->refCount = 1, dataType);
1222
1223 if(member)
1224 {
1225 dataMember = __ecereNameSpace__ecere__com__eMember_AddDataMember(member, string, inst->_class->name, 0, 0, def->memberAccess);
1226 if(!dataMember)
1227 Compiler_Error(__ecereNameSpace__ecere__GetTranslatedString("ec", "Member with same name already exists %s in member %s\n", (((void *)0))), string, member->name);
1228 }
1229 else
1230 {
1231 dataMember = __ecereNameSpace__ecere__com__eClass_AddDataMember(regClass, string, inst->_class->name, 0, 0, def->memberAccess);
1232 if(!dataMember)
1233 Compiler_Error(__ecereNameSpace__ecere__GetTranslatedString("ec", "Member with same name already exists %s in class %s\n", (((void *)0))), string, regClass->name);
1234 }
1235 if(dataMember)
1236 dataMember->dataType = dataType;
1237 else
1238 FreeType(dataType);
1239 }
1240 }
1241 }
1242 }
1243 else if(def->type == 3 && def->propertyDef)
1244 {
1245 struct PropertyDef * propertyDef = def->propertyDef;
1246 struct __ecereNameSpace__ecere__com__Property * prop;
1247 char * dataTypeString = StringFromSpecDecl(propertyDef->specifiers, propertyDef->declarator);
1248
1249 prop = __ecereNameSpace__ecere__com__eClass_AddProperty(regClass, propertyDef->conversion ? (((void *)0)) : propertyDef->id->string, dataTypeString, inCompiler ? propertyDef->setStmt : (((void *)0)), inCompiler ? propertyDef->getStmt : (((void *)0)), def->memberAccess);
1250 (__ecereNameSpace__ecere__com__eSystem_Delete(dataTypeString), dataTypeString = 0);
1251 if(prop)
1252 {
1253 if(inCompiler)
1254 prop->IsSet = (void *)propertyDef->issetStmt;
1255 prop->compiled = 0x0;
1256 prop->symbol = __extension__ ({
1257 struct Symbol * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Symbol);
1258
1259 __ecereInstance1->string = __ecereNameSpace__ecere__sys__CopyString(propertyDef->symbol->string), __ecereInstance1->id = propertyDef->symbol->id, __ecereInstance1->type = propertyDef->symbol->type, __ecereInstance1;
1260 });
1261 ((struct Symbol *)prop->symbol)->propCategory = propertyDef->category;
1262 propertyDef->category = (((void *)0));
1263 if(propertyDef->isWatchable)
1264 __ecereNameSpace__ecere__com__eProperty_Watchable(prop);
1265 }
1266 else
1267 printf("");
1268 propertyDef->symbol->_property = prop;
1269 if(propertyDef->symbol->type)
1270 propertyDef->symbol->type->refCount++;
1271 }
1272 else if(def->type == 10 && def->propertyDef)
1273 {
1274 struct PropertyDef * propertyDef = def->propertyDef;
1275 struct __ecereNameSpace__ecere__com__ClassProperty * prop;
1276 char * dataTypeString = StringFromSpecDecl(propertyDef->specifiers, propertyDef->declarator);
1277
1278 prop = __ecereNameSpace__ecere__com__eClass_AddClassProperty(regClass, propertyDef->id->string, dataTypeString, inCompiler ? propertyDef->setStmt : (((void *)0)), inCompiler ? propertyDef->getStmt : (((void *)0)));
1279 (__ecereNameSpace__ecere__com__eSystem_Delete(dataTypeString), dataTypeString = 0);
1280 }
1281 }
1282 }
1283 }
1284
1285 extern struct __ecereNameSpace__ecere__com__Class * __ecereNameSpace__ecere__com__eSystem_FindClass(struct __ecereNameSpace__ecere__com__Instance * module, char *  name);
1286
1287 extern struct __ecereNameSpace__ecere__com__Instance * privateModule;
1288
1289 extern struct Context * globalContext;
1290
1291 extern struct __ecereNameSpace__ecere__sys__OldList *  excludedSymbols;
1292
1293 extern struct __ecereNameSpace__ecere__com__Class * __ecereNameSpace__ecere__com__eSystem_RegisterClass(int type, char *  name, char *  baseName, int size, int sizeClass, unsigned int (*  Constructor)(void * ), void (*  Destructor)(void * ), struct __ecereNameSpace__ecere__com__Instance * module, int declMode, int inheritanceAccess);
1294
1295 extern unsigned int buildingECERECOMModule;
1296
1297 extern int strcmp(const char * , const char * );
1298
1299 extern void FreeList(struct __ecereNameSpace__ecere__sys__OldList * list, void (*  FreeFunction)(void * ));
1300
1301 extern void FreeSpecifier(struct Specifier * spec);
1302
1303 extern struct Declarator * GetFuncDecl(struct Declarator * decl);
1304
1305 extern struct __ecereNameSpace__ecere__com__Method * __ecereNameSpace__ecere__com__eClass_AddVirtualMethod(struct __ecereNameSpace__ecere__com__Class * _class, char *  name, char *  type, void *  function, int declMode);
1306
1307 extern struct __ecereNameSpace__ecere__com__Method * __ecereNameSpace__ecere__com__eClass_AddMethod(struct __ecereNameSpace__ecere__com__Class * _class, char *  name, char *  type, void *  function, int declMode);
1308
1309 extern char *  strcpy(char * , const char * );
1310
1311 extern char *  strcat(char * , const char * );
1312
1313 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_OpTable;
1314
1315 struct OpTable
1316 {
1317 unsigned int (*  Add)(struct Expression *, struct Operand *, struct Operand *);
1318 unsigned int (*  Sub)(struct Expression *, struct Operand *, struct Operand *);
1319 unsigned int (*  Mul)(struct Expression *, struct Operand *, struct Operand *);
1320 unsigned int (*  Div)(struct Expression *, struct Operand *, struct Operand *);
1321 unsigned int (*  Mod)(struct Expression *, struct Operand *, struct Operand *);
1322 unsigned int (*  Neg)(struct Expression *, struct Operand *);
1323 unsigned int (*  Inc)(struct Expression *, struct Operand *);
1324 unsigned int (*  Dec)(struct Expression *, struct Operand *);
1325 unsigned int (*  Asign)(struct Expression *, struct Operand *, struct Operand *);
1326 unsigned int (*  AddAsign)(struct Expression *, struct Operand *, struct Operand *);
1327 unsigned int (*  SubAsign)(struct Expression *, struct Operand *, struct Operand *);
1328 unsigned int (*  MulAsign)(struct Expression *, struct Operand *, struct Operand *);
1329 unsigned int (*  DivAsign)(struct Expression *, struct Operand *, struct Operand *);
1330 unsigned int (*  ModAsign)(struct Expression *, struct Operand *, struct Operand *);
1331 unsigned int (*  BitAnd)(struct Expression *, struct Operand *, struct Operand *);
1332 unsigned int (*  BitOr)(struct Expression *, struct Operand *, struct Operand *);
1333 unsigned int (*  BitXor)(struct Expression *, struct Operand *, struct Operand *);
1334 unsigned int (*  LShift)(struct Expression *, struct Operand *, struct Operand *);
1335 unsigned int (*  RShift)(struct Expression *, struct Operand *, struct Operand *);
1336 unsigned int (*  BitNot)(struct Expression *, struct Operand *);
1337 unsigned int (*  AndAsign)(struct Expression *, struct Operand *, struct Operand *);
1338 unsigned int (*  OrAsign)(struct Expression *, struct Operand *, struct Operand *);
1339 unsigned int (*  XorAsign)(struct Expression *, struct Operand *, struct Operand *);
1340 unsigned int (*  LShiftAsign)(struct Expression *, struct Operand *, struct Operand *);
1341 unsigned int (*  RShiftAsign)(struct Expression *, struct Operand *, struct Operand *);
1342 unsigned int (*  Not)(struct Expression *, struct Operand *);
1343 unsigned int (*  Equ)(struct Expression *, struct Operand *, struct Operand *);
1344 unsigned int (*  Nqu)(struct Expression *, struct Operand *, struct Operand *);
1345 unsigned int (*  And)(struct Expression *, struct Operand *, struct Operand *);
1346 unsigned int (*  Or)(struct Expression *, struct Operand *, struct Operand *);
1347 unsigned int (*  Grt)(struct Expression *, struct Operand *, struct Operand *);
1348 unsigned int (*  Sma)(struct Expression *, struct Operand *, struct Operand *);
1349 unsigned int (*  GrtEqu)(struct Expression *, struct Operand *, struct Operand *);
1350 unsigned int (*  SmaEqu)(struct Expression *, struct Operand *, struct Operand *);
1351 unsigned int (*  Cond)(struct Expression *, struct Operand *, struct Operand *, struct Operand *);
1352 } __attribute__ ((gcc_struct));
1353
1354 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Operand;
1355
1356 struct Operand
1357 {
1358 int kind;
1359 struct Type * type;
1360 unsigned int ptrSize;
1361 union
1362 {
1363 char c;
1364 unsigned char uc;
1365 short s;
1366 unsigned short us;
1367 int i;
1368 unsigned int ui;
1369 float f;
1370 double d;
1371 long long i64;
1372 uint64 ui64;
1373 } __attribute__ ((gcc_struct));
1374 struct OpTable ops;
1375 } __attribute__ ((gcc_struct));
1376
1377 extern struct Operand GetOperand(struct Expression * exp);
1378
1379 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__ClassTemplateParameter;
1380
1381 struct __ecereNameSpace__ecere__com__ClassTemplateParameter;
1382
1383 extern struct __ecereNameSpace__ecere__com__ClassTemplateParameter * __ecereNameSpace__ecere__com__eClass_AddTemplateParameter(struct __ecereNameSpace__ecere__com__Class * _class, char *  name, int type, void *  info, struct __ecereNameSpace__ecere__com__ClassTemplateArgument * defaultArg);
1384
1385 extern void __ecereNameSpace__ecere__com__eClass_DoneAddingTemplateParameters(struct __ecereNameSpace__ecere__com__Class * base);
1386
1387 void __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Remove(struct __ecereNameSpace__ecere__sys__BinaryTree * this, struct __ecereNameSpace__ecere__sys__BTNode * node);
1388
1389 void __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add(struct __ecereNameSpace__ecere__sys__OldList * this, void *  item);
1390
1391 static void ProcessClass(int classType, struct __ecereNameSpace__ecere__sys__OldList * definitions, struct Symbol * symbol, struct __ecereNameSpace__ecere__sys__OldList * baseSpecs, struct __ecereNameSpace__ecere__sys__OldList * enumValues, struct Location * loc, struct __ecereNameSpace__ecere__sys__OldList * defs, void * after, struct __ecereNameSpace__ecere__sys__OldList * initDeclarators, int declMode)
1392 {
1393 struct __ecereNameSpace__ecere__com__Class * regClass;
1394 struct ClassDef * def;
1395 unsigned int redefinition = 0x0;
1396
1397 regClass = __ecereNameSpace__ecere__com__eSystem_FindClass(privateModule, symbol->string);
1398 if(regClass && !regClass->internalDecl)
1399 {
1400 if(symbol->parent || (struct Symbol *)globalContext->classes.root == symbol)
1401 {
1402 __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Remove(&globalContext->classes, (struct __ecereNameSpace__ecere__sys__BTNode *)symbol);
1403 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*excludedSymbols), symbol);
1404 }
1405 redefinition = 0x1;
1406 if(inCompiler)
1407 {
1408 yylloc = *loc;
1409 Compiler_Error(__ecereNameSpace__ecere__GetTranslatedString("ec", "redefinition of class %s\n", (((void *)0))), symbol->string);
1410 return ;
1411 }
1412 }
1413 else
1414 {
1415 char baseName[1024] = "";
1416 unsigned int unitType = 0x0;
1417 unsigned int wouldBeEnum = 0x0;
1418 int inheritanceAccess = 1;
1419
1420 if(baseSpecs != (((void *)0)))
1421 {
1422 struct Type * baseType = ProcessType(baseSpecs, (((void *)0)));
1423
1424 PrintType(baseType, baseName, 0x0, 0x1);
1425 if(baseType->kind == 8)
1426 {
1427 if(baseType->_class->registered && classType == 0)
1428 {
1429 if(baseType->_class->registered->type == 3)
1430 classType = 3;
1431 else if(baseType->_class->registered->type == 2)
1432 classType = 2;
1433 else if(baseType->_class->registered->type == 5)
1434 classType = 5;
1435 else if(baseType->_class->registered->type == 4)
1436 {
1437 wouldBeEnum = 0x1;
1438 }
1439 }
1440 }
1441 else if(baseType->kind == 9 || baseType->kind == 10)
1442 {
1443 classType = 5;
1444 baseName[0] = '\0';
1445 }
1446 else
1447 unitType = 0x1;
1448 FreeType(baseType);
1449 if(((struct Specifier *)baseSpecs->first)->type == 0 && ((struct Specifier *)baseSpecs->first)->specifier == PRIVATE)
1450 inheritanceAccess = 2;
1451 }
1452 if(classType == 0)
1453 {
1454 if(unitType)
1455 classType = 3;
1456 if(definitions != (((void *)0)))
1457 {
1458 for(def = definitions->first; def; def = def->next)
1459 {
1460 if(def->type == 2)
1461 {
1462 struct Declaration * decl = def->decl;
1463
1464 if(decl->type == 0)
1465 {
1466 if(unitType)
1467 {
1468 classType = 2;
1469 break;
1470 }
1471 if(decl->declarators)
1472 {
1473 struct Declarator * d;
1474
1475 for(d = (*decl->declarators).first; d; d = d->next)
1476 {
1477 if(d->type != 0)
1478 continue;
1479 if(d->structDecl.exp)
1480 {
1481 classType = 2;
1482 break;
1483 }
1484 }
1485 if(d)
1486 break;
1487 }
1488 }
1489 }
1490 }
1491 }
1492 }
1493 if(classType == 0 && wouldBeEnum)
1494 classType = 4;
1495 regClass = symbol->registered = __ecereNameSpace__ecere__com__eSystem_RegisterClass((classType == 6) ? 1 : classType, symbol->string, baseName[0] ? baseName : (((void *)0)), 0, 0, (((void *)0)), (((void *)0)), privateModule, buildingECERECOMModule ? 4 : declMode, inheritanceAccess);
1496 if(regClass)
1497 regClass->symbol = symbol;
1498 }
1499 if(!redefinition)
1500 {
1501 if(classType == 6)
1502 {
1503 struct __ecereNameSpace__ecere__com__DataMember * unionMember = __ecereNameSpace__ecere__com__eMember_New(1, 1);
1504
1505 AddDefinitions(regClass, unionMember, definitions);
1506 __ecereNameSpace__ecere__com__eClass_AddMember(regClass, unionMember);
1507 }
1508 else
1509 AddDefinitions(regClass, (((void *)0)), definitions);
1510 }
1511 if(definitions != (((void *)0)))
1512 {
1513 for(def = definitions->first; def; def = def->next)
1514 {
1515 if(def->type == 0 && (def->function->isConstructor || def->function->isDestructor))
1516 {
1517 struct Specifier * spec = def->function->specifiers ? (*def->function->specifiers).last : (((void *)0));
1518
1519 if(!spec || spec->type != 1 || !spec->name || (strcmp(spec->name, regClass->name) && (!spec->symbol || !spec->symbol->registered || strcmp(spec->symbol->registered->name, regClass->name))))
1520 {
1521 yylloc = def->function->loc;
1522 Compiler_Error(__ecereNameSpace__ecere__GetTranslatedString("ec", "wrong class name specified for %s\n", (((void *)0))), def->function->isConstructor ? __ecereNameSpace__ecere__GetTranslatedString("ec", "constructor", (((void *)0))) : __ecereNameSpace__ecere__GetTranslatedString("ec", "destructor", (((void *)0))));
1523 }
1524 FreeList(def->function->specifiers, FreeSpecifier);
1525 def->function->specifiers = (((void *)0));
1526 }
1527 if(def->type == 0 && def->function->declarator)
1528 {
1529 struct ClassFunction * func = def->function;
1530
1531 func->_class = regClass;
1532 if(!redefinition && !func->dontMangle)
1533 {
1534 struct Declarator * funcDecl = GetFuncDecl(func->declarator);
1535 struct Identifier * id = GetDeclId(funcDecl);
1536 struct __ecereNameSpace__ecere__com__Method * method;
1537
1538 if(func->isVirtual)
1539 {
1540 char * typeString = StringFromSpecDecl(func->specifiers, func->declarator);
1541
1542 method = __ecereNameSpace__ecere__com__eClass_AddVirtualMethod(regClass, id->string, typeString, inCompiler ? func->declarator->symbol : (((void *)0)), def->memberAccess);
1543 (__ecereNameSpace__ecere__com__eSystem_Delete(typeString), typeString = 0);
1544 }
1545 else
1546 {
1547 char * typeString = StringFromSpecDecl(func->specifiers, func->declarator);
1548
1549 method = __ecereNameSpace__ecere__com__eClass_AddMethod(regClass, id->string, typeString, inCompiler ? func->declarator->symbol : (((void *)0)), def->memberAccess);
1550 if(!method)
1551 Compiler_Error(__ecereNameSpace__ecere__GetTranslatedString("ec", "Redefinition of method %s in class %s\n", (((void *)0))), id->string, regClass->name);
1552 (__ecereNameSpace__ecere__com__eSystem_Delete(typeString), typeString = 0);
1553 }
1554 if(method && (method->type != 1 || method->_class == regClass))
1555 {
1556 method->symbol = __extension__ ({
1557 struct Symbol * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Symbol);
1558
1559 __ecereInstance1->string = __ecereNameSpace__ecere__sys__CopyString(func->declarator->symbol->string), __ecereInstance1->id = func->declarator->symbol->id, __ecereInstance1->type = func->declarator->symbol->type, __ecereInstance1->method = method, __ecereInstance1;
1560 });
1561 if(func->declarator->symbol->type)
1562 func->declarator->symbol->type->refCount++;
1563 func->declarator->symbol->method = method;
1564 }
1565 else
1566 {
1567 func->declarator->symbol->method = method;
1568 }
1569 }
1570 }
1571 }
1572 }
1573 if(regClass && symbol->templateParams)
1574 {
1575 struct TemplateParameter * param;
1576
1577 for(param = (*symbol->templateParams).first; param; param = param->next)
1578 {
1579 struct __ecereNameSpace__ecere__com__ClassTemplateArgument defaultArg =
1580 {
1581 .member = 0
1582 };
1583
1584 if(param->defaultArgument)
1585 {
1586 switch(param->type)
1587 {
1588 case 0:
1589 defaultArg.dataTypeString = StringFromSpecDecl(param->defaultArgument->templateDatatype->specifiers, param->defaultArgument->templateDatatype->decl);
1590 break;
1591 case 1:
1592 {
1593 char memberString[1024];
1594
1595 memberString[0] = '\0';
1596 if(param->defaultArgument->identifier->_class)
1597 {
1598 if(param->defaultArgument->identifier->_class->type == 8)
1599 {
1600 if(param->defaultArgument->identifier->_class->templateParameter)
1601 strcpy(memberString, param->defaultArgument->identifier->_class->templateParameter->identifier->string);
1602 }
1603 else
1604 {
1605 if(param->defaultArgument->identifier->_class->name)
1606 strcpy(memberString, param->defaultArgument->identifier->_class->name);
1607 }
1608 }
1609 if(memberString[0])
1610 {
1611 strcat(memberString, "::");
1612 }
1613 strcat(memberString, param->defaultArgument->identifier->string);
1614 defaultArg.memberString = __ecereNameSpace__ecere__sys__CopyString(memberString);
1615 break;
1616 }
1617 case 2:
1618 {
1619 struct Operand op;
1620
1621 param->defaultArgument->expression->destType = ProcessType(param->dataType->specifiers, param->dataType->decl);
1622 ProcessExpressionType(param->defaultArgument->expression);
1623 ComputeExpression(param->defaultArgument->expression);
1624 op = GetOperand(param->defaultArgument->expression);
1625 defaultArg.expression.ui64 = op.ui64;
1626 break;
1627 }
1628 }
1629 }
1630 if(param->type == 1)
1631 {
1632 __ecereNameSpace__ecere__com__eClass_AddTemplateParameter(regClass, param->identifier->string, 1, (void *)param->memberType, &defaultArg);
1633 }
1634 else
1635 {
1636 char * typeString = param->dataType ? StringFromSpecDecl(param->dataType->specifiers, param->dataType->decl) : (((void *)0));
1637
1638 __ecereNameSpace__ecere__com__eClass_AddTemplateParameter(regClass, param->identifier->string, param->type, typeString, &defaultArg);
1639 (__ecereNameSpace__ecere__com__eSystem_Delete(typeString), typeString = 0);
1640 }
1641 if(param->type == 0 || param->type == 1)
1642 (__ecereNameSpace__ecere__com__eSystem_Delete(defaultArg.dataTypeString), defaultArg.dataTypeString = 0);
1643 }
1644 __ecereNameSpace__ecere__com__eClass_DoneAddingTemplateParameters(regClass);
1645 }
1646 }
1647
1648 extern struct External * curExternal;
1649
1650 extern struct __ecereNameSpace__ecere__sys__OldList *  ast;
1651
1652 extern struct Symbol * FindType(struct Context * ctx, char *  name);
1653
1654 extern struct Symbol * FindClass(char *  name);
1655
1656 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__sys__OldLink;
1657
1658 struct __ecereNameSpace__ecere__sys__OldLink
1659 {
1660 struct __ecereNameSpace__ecere__sys__OldLink * prev;
1661 struct __ecereNameSpace__ecere__sys__OldLink * next;
1662 void *  data;
1663 } __attribute__ ((gcc_struct));
1664
1665 extern struct ModuleImport * mainModule;
1666
1667 void PrePreProcessClassDefinitions()
1668 {
1669 struct External * external, * next;
1670
1671 curExternal = (((void *)0));
1672 if(ast)
1673 {
1674 for(external = (*ast).first; external; external = next)
1675 {
1676 next = external->next;
1677 curExternal = external;
1678 if(external->type == 2)
1679 {
1680 struct ClassDefinition * _class = external->_class;
1681
1682 if(_class->definitions && (!_class->symbol->registered || !inCompiler))
1683 {
1684 ProcessClass(0, _class->definitions, _class->symbol, _class->baseSpecs, (((void *)0)), &_class->loc, ast, external->prev, (((void *)0)), _class->declMode);
1685 _class->symbol->isStatic = _class->declMode == 3;
1686 }
1687 }
1688 else if(external->type == 1)
1689 {
1690 struct Declaration * declaration = external->declaration;
1691
1692 if(declaration->type == 1)
1693 {
1694 if(declaration->specifiers)
1695 {
1696 struct Specifier * specifier;
1697
1698 for(specifier = (*declaration->specifiers).first; specifier; specifier = specifier->next)
1699 {
1700 if((specifier->type == 2 || specifier->type == 3 || specifier->type == 4) && specifier->id && specifier->id->string && (declaration->declMode || specifier->baseSpecs || (specifier->type == 2 && specifier->definitions)))
1701 {
1702 struct Symbol * type = FindType(globalContext, specifier->id->string);
1703 struct Symbol * symbol = FindClass(specifier->id->string);
1704
1705 if(type)
1706 {
1707 declaration->declMode = 0;
1708 if(symbol)
1709 {
1710 __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Remove(&globalContext->classes, (struct __ecereNameSpace__ecere__sys__BTNode *)symbol);
1711 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*excludedSymbols), symbol);
1712 }
1713 }
1714 else if(symbol && !symbol->registered)
1715 {
1716 int classType;
1717
1718 if(specifier->type == 2)
1719 classType = 4;
1720 else if(specifier->type == 4)
1721 classType = 6;
1722 else
1723 classType = 1;
1724 ProcessClass(classType, specifier->definitions, symbol, specifier->baseSpecs, specifier->list, &specifier->loc, ast, external->prev, declaration->declarators, declaration->declMode);
1725 symbol->isStatic = declaration->declMode == 3;
1726 }
1727 }
1728 }
1729 }
1730 }
1731 }
1732 else if(external->type == 3)
1733 {
1734 }
1735 }
1736 {
1737 for(external = (*ast).first; external; external = external->next)
1738 {
1739 if(external->type == 2)
1740 {
1741 struct ClassDefinition * _class = external->_class;
1742
1743 if(_class->symbol)
1744 {
1745 struct __ecereNameSpace__ecere__sys__OldLink * link;
1746
1747 for(link = _class->symbol->templatedClasses.first; link; link = link->next)
1748 {
1749 struct Symbol * symbol = link->data;
1750
1751 symbol->registered = __ecereNameSpace__ecere__com__eSystem_FindClass(privateModule, symbol->string);
1752 }
1753 }
1754 }
1755 else if(external->type == 1)
1756 {
1757 struct Declaration * declaration = external->declaration;
1758
1759 if(declaration->type == 1)
1760 {
1761 if(declaration->specifiers)
1762 {
1763 struct Specifier * specifier;
1764
1765 for(specifier = (*declaration->specifiers).first; specifier; specifier = specifier->next)
1766 {
1767 if((specifier->type == 2 || specifier->type == 3 || specifier->type == 4) && specifier->id && specifier->id->string && (declaration->declMode || specifier->baseSpecs || (specifier->type == 2 && specifier->definitions)))
1768 {
1769 struct Symbol * type = FindType(globalContext, specifier->id->string);
1770 struct Symbol * symbol = FindClass(specifier->id->string);
1771
1772 if(type)
1773 {
1774 }
1775 else if(symbol)
1776 {
1777 struct __ecereNameSpace__ecere__sys__OldLink * link;
1778
1779 for(link = symbol->templatedClasses.first; link; link = link->next)
1780 {
1781 struct Symbol * tplSymbol = link->data;
1782
1783 tplSymbol->registered = __ecereNameSpace__ecere__com__eSystem_FindClass(privateModule, tplSymbol->string);
1784 tplSymbol->module = symbol->module ? symbol->module : mainModule;
1785 }
1786 }
1787 }
1788 }
1789 }
1790 }
1791 }
1792 }
1793 }
1794 }
1795 }
1796
1797 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__GlobalFunction;
1798
1799 struct __ecereNameSpace__ecere__com__GlobalFunction;
1800
1801 extern struct __ecereNameSpace__ecere__com__GlobalFunction * __ecereNameSpace__ecere__com__eSystem_RegisterFunction(char *  name, char *  type, void *  func, struct __ecereNameSpace__ecere__com__Instance * module, int declMode);
1802
1803 void __ecereRegisterModule_firstPass(struct __ecereNameSpace__ecere__com__Instance * module)
1804 {
1805 struct __ecereNameSpace__ecere__com__Class * class;
1806
1807 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("PrePreProcessClassDefinitions", "void PrePreProcessClassDefinitions(void)", PrePreProcessClassDefinitions, module, 1);
1808 }
1809
1810 void __ecereUnregisterModule_firstPass(struct __ecereNameSpace__ecere__com__Instance * module)
1811 {
1812
1813 }
1814