compiler/libec: (#341, #351, #644, #771) Improved enum type matching and type handlin...
[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__eInstance_FireSelfWatchers(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property);
735
736 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__Instance;
737
738 struct __ecereNameSpace__ecere__com__Instance
739 {
740 int (* *  _vTbl)();
741 struct __ecereNameSpace__ecere__com__Class * _class;
742 int _refCount;
743 } __attribute__ ((gcc_struct));
744
745 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__DataMember;
746
747 struct __ecereNameSpace__ecere__com__DataMember
748 {
749 struct __ecereNameSpace__ecere__com__DataMember * prev;
750 struct __ecereNameSpace__ecere__com__DataMember * next;
751 char *  name;
752 unsigned int isProperty;
753 int memberAccess;
754 int id;
755 struct __ecereNameSpace__ecere__com__Class * _class;
756 char *  dataTypeString;
757 struct __ecereNameSpace__ecere__com__Class * dataTypeClass;
758 struct Type * dataType;
759 int type;
760 int offset;
761 int memberID;
762 struct __ecereNameSpace__ecere__sys__OldList members;
763 struct __ecereNameSpace__ecere__sys__BinaryTree membersAlpha;
764 int memberOffset;
765 int structAlignment;
766 } __attribute__ ((gcc_struct));
767
768 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__SerialBuffer;
769
770 struct __ecereNameSpace__ecere__com__SerialBuffer
771 {
772 unsigned char *  _buffer;
773 unsigned int count;
774 unsigned int _size;
775 unsigned int pos;
776 } __attribute__ ((gcc_struct));
777
778 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__ClassTemplateArgument;
779
780 struct __ecereNameSpace__ecere__com__ClassTemplateArgument
781 {
782 union
783 {
784 struct
785 {
786 char *  dataTypeString;
787 struct __ecereNameSpace__ecere__com__Class * dataTypeClass;
788 } __attribute__ ((gcc_struct));
789 struct __ecereNameSpace__ecere__com__DataValue expression;
790 struct
791 {
792 char *  memberString;
793 union
794 {
795 struct __ecereNameSpace__ecere__com__DataMember * member;
796 struct __ecereNameSpace__ecere__com__Property * prop;
797 struct __ecereNameSpace__ecere__com__Method * method;
798 } __attribute__ ((gcc_struct));
799 } __attribute__ ((gcc_struct));
800 } __attribute__ ((gcc_struct));
801 } __attribute__ ((gcc_struct));
802
803 enum yytokentype
804 {
805 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
806 };
807
808 typedef union YYSTYPE
809 {
810 int specifierType;
811 int i;
812 int declMode;
813 struct Identifier * id;
814 struct Expression * exp;
815 struct Specifier * specifier;
816 struct __ecereNameSpace__ecere__sys__OldList * list;
817 struct Enumerator * enumerator;
818 struct Declarator * declarator;
819 struct Pointer * pointer;
820 struct Initializer * initializer;
821 struct InitDeclarator * initDeclarator;
822 struct TypeName * typeName;
823 struct Declaration * declaration;
824 struct Statement * stmt;
825 struct FunctionDefinition * function;
826 struct External * external;
827 struct Context * context;
828 struct AsmField * asmField;
829 struct Attrib * attrib;
830 struct ExtDecl * extDecl;
831 struct Attribute * attribute;
832 struct Instantiation * instance;
833 struct MembersInit * membersInit;
834 struct MemberInit * memberInit;
835 struct ClassFunction * classFunction;
836 struct ClassDefinition * _class;
837 struct ClassDef * classDef;
838 struct PropertyDef * prop;
839 char * string;
840 struct Symbol * symbol;
841 struct PropertyWatch * propertyWatch;
842 struct TemplateParameter * templateParameter;
843 struct TemplateArgument * templateArgument;
844 struct TemplateDatatype * templateDatatype;
845 struct DBTableEntry * dbtableEntry;
846 struct DBIndexItem * dbindexItem;
847 struct DBTableDef * dbtableDef;
848 } __attribute__ ((gcc_struct)) YYSTYPE;
849
850 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Enumerator;
851
852 struct Enumerator;
853
854 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_InitDeclarator;
855
856 struct InitDeclarator;
857
858 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_AsmField;
859
860 struct AsmField;
861
862 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Attribute;
863
864 struct Attribute;
865
866 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_ClassFunction;
867
868 struct ClassFunction
869 {
870 struct ClassFunction * prev;
871 struct ClassFunction * next;
872 struct Location loc;
873 struct __ecereNameSpace__ecere__sys__OldList *  specifiers;
874 struct Declarator * declarator;
875 struct __ecereNameSpace__ecere__sys__OldList *  declarations;
876 struct Statement * body;
877 struct __ecereNameSpace__ecere__com__Class * _class;
878 struct __ecereNameSpace__ecere__sys__OldList attached;
879 int declMode;
880 struct Type * type;
881 struct Symbol * propSet;
882 unsigned int isVirtual;
883 unsigned int isConstructor;
884 unsigned int isDestructor;
885 unsigned int dontMangle;
886 int id;
887 int idCode;
888 } __attribute__ ((gcc_struct));
889
890 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_MembersInit;
891
892 struct MembersInit;
893
894 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_MemberInit;
895
896 struct MemberInit;
897
898 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_PropertyDef;
899
900 struct PropertyDef
901 {
902 struct PropertyDef * prev;
903 struct PropertyDef * next;
904 struct Location loc;
905 struct __ecereNameSpace__ecere__sys__OldList *  specifiers;
906 struct Declarator * declarator;
907 struct Identifier * id;
908 struct Statement * getStmt;
909 struct Statement * setStmt;
910 struct Statement * issetStmt;
911 struct Symbol * symbol;
912 struct Expression * category;
913 struct
914 {
915 unsigned int conversion : 1;
916 unsigned int isWatchable : 1;
917 unsigned int isDBProp : 1;
918 } __attribute__ ((gcc_struct));
919 } __attribute__ ((gcc_struct));
920
921 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_PropertyWatch;
922
923 struct PropertyWatch;
924
925 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_ClassDef;
926
927 struct ClassDef
928 {
929 struct ClassDef * prev;
930 struct ClassDef * next;
931 struct Location loc;
932 int type;
933 union
934 {
935 struct Declaration * decl;
936 struct ClassFunction * function;
937 struct __ecereNameSpace__ecere__sys__OldList *  defProperties;
938 struct PropertyDef * propertyDef;
939 struct PropertyWatch * propertyWatch;
940 char *  designer;
941 struct Identifier * defaultProperty;
942 struct
943 {
944 struct Identifier * id;
945 struct Initializer * initializer;
946 } __attribute__ ((gcc_struct));
947 } __attribute__ ((gcc_struct));
948 int memberAccess;
949 void *  object;
950 } __attribute__ ((gcc_struct));
951
952 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_DBTableEntry;
953
954 struct DBTableEntry;
955
956 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_DBIndexItem;
957
958 struct DBIndexItem;
959
960 extern YYSTYPE yylval;
961
962 extern struct Location yylloc;
963
964 extern struct Identifier * GetDeclId(struct Declarator * decl);
965
966 extern void ProcessExpressionType(struct Expression * exp);
967
968 extern void ComputeExpression(struct Expression * exp);
969
970 extern int strtol(char * , char * * , int base);
971
972 extern void FreeExpression(struct Expression * exp);
973
974 extern struct Type * ProcessType(struct __ecereNameSpace__ecere__sys__OldList * specs, struct Declarator * decl);
975
976 extern void PrintType(struct Type * type, char *  string, unsigned int printName, unsigned int fullName);
977
978 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__BitMember;
979
980 struct __ecereNameSpace__ecere__com__BitMember
981 {
982 struct __ecereNameSpace__ecere__com__BitMember * prev;
983 struct __ecereNameSpace__ecere__com__BitMember * next;
984 char *  name;
985 unsigned int isProperty;
986 int memberAccess;
987 int id;
988 struct __ecereNameSpace__ecere__com__Class * _class;
989 char *  dataTypeString;
990 struct __ecereNameSpace__ecere__com__Class * dataTypeClass;
991 struct Type * dataType;
992 int type;
993 int size;
994 int pos;
995 uint64 mask;
996 } __attribute__ ((gcc_struct));
997
998 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);
999
1000 extern void Compiler_Error(char *  format, ...);
1001
1002 extern char *  __ecereNameSpace__ecere__GetTranslatedString(char * name, char *  string, char *  stringAndContext);
1003
1004 extern void FreeType(struct Type * type);
1005
1006 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);
1007
1008 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);
1009
1010 extern struct __ecereNameSpace__ecere__com__DataMember * __ecereNameSpace__ecere__com__eMember_New(int type, int declMode);
1011
1012 extern unsigned int __ecereNameSpace__ecere__com__eMember_AddMember(struct __ecereNameSpace__ecere__com__DataMember * addTo, struct __ecereNameSpace__ecere__com__DataMember * dataMember);
1013
1014 extern unsigned int __ecereNameSpace__ecere__com__eClass_AddMember(struct __ecereNameSpace__ecere__com__Class * _class, struct __ecereNameSpace__ecere__com__DataMember * dataMember);
1015
1016 extern struct __ecereNameSpace__ecere__sys__OldList *  MkListOne(void *  item);
1017
1018 extern struct Declarator * MkDeclaratorIdentifier(struct Identifier * id);
1019
1020 extern char *  StringFromSpecDecl(struct __ecereNameSpace__ecere__sys__OldList * specs, struct Declarator * decl);
1021
1022 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);
1023
1024 extern unsigned int inCompiler;
1025
1026 extern char *  __ecereNameSpace__ecere__sys__CopyString(char *  string);
1027
1028 extern void __ecereNameSpace__ecere__com__eProperty_Watchable(struct __ecereNameSpace__ecere__com__Property * _property);
1029
1030 extern int printf(char * , ...);
1031
1032 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__ClassProperty;
1033
1034 struct __ecereNameSpace__ecere__com__ClassProperty;
1035
1036 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);
1037
1038 extern void *  __ecereNameSpace__ecere__com__eInstance_New(struct __ecereNameSpace__ecere__com__Class * _class);
1039
1040 static void AddDefinitions(struct __ecereNameSpace__ecere__com__Class * regClass, struct __ecereNameSpace__ecere__com__DataMember * member, struct __ecereNameSpace__ecere__sys__OldList * definitions)
1041 {
1042 if(definitions != (((void *)0)))
1043 {
1044 struct ClassDef * def;
1045
1046 for(def = definitions->first; def; def = def->next)
1047 {
1048 if(def->type == 2)
1049 {
1050 struct Declaration * decl = def->decl;
1051 struct __ecereNameSpace__ecere__com__DataMember * dataMember = (((void *)0));
1052 struct Type * dataType;
1053
1054 if(decl->type == 0)
1055 {
1056 struct Declarator * d;
1057
1058 if(decl->declarators)
1059 {
1060 for(d = (*decl->declarators).first; d; d = d->next)
1061 {
1062 struct Identifier * declId = GetDeclId(d);
1063
1064 if(declId)
1065 {
1066 if(regClass && regClass->type == 2)
1067 {
1068 struct Expression * sizeExp = (d->type == 0) ? d->structDecl.exp : (((void *)0));
1069 struct Expression * posExp = (d->type == 0) ? d->structDecl.posExp : (((void *)0));
1070 int bitSize = 0, bitPos = -1;
1071 char dataTypeString[8192];
1072
1073 dataTypeString[0] = (char)0;
1074 if(sizeExp)
1075 {
1076 ProcessExpressionType(sizeExp);
1077 ComputeExpression(sizeExp);
1078 if(sizeExp->isConstant)
1079 bitSize = strtol(sizeExp->constant, (((void *)0)), 0);
1080 FreeExpression(sizeExp);
1081 }
1082 if(posExp)
1083 {
1084 ProcessExpressionType(posExp);
1085 ComputeExpression(posExp);
1086 if(posExp->isConstant)
1087 bitPos = strtol(posExp->constant, (((void *)0)), 0);
1088 FreeExpression(posExp);
1089 }
1090 if(d->type == 0)
1091 {
1092 d->structDecl.posExp = (((void *)0));
1093 d->structDecl.exp = (((void *)0));
1094 }
1095 dataType = ProcessType(decl->specifiers, d);
1096 PrintType(dataType, dataTypeString, 0x0, 0x1);
1097 {
1098 struct __ecereNameSpace__ecere__com__BitMember * member = __ecereNameSpace__ecere__com__eClass_AddBitMember(regClass, declId->string, dataTypeString, 0, 0, def->memberAccess);
1099
1100 if(member)
1101 {
1102 member->size = bitSize;
1103 member->pos = bitPos;
1104 }
1105 dataMember = (struct __ecereNameSpace__ecere__com__DataMember *)member;
1106 }
1107 if(dataMember)
1108 dataMember->dataType = dataType;
1109 else
1110 {
1111 Compiler_Error(__ecereNameSpace__ecere__GetTranslatedString("ec", "Member with same name already exists %s in class %s\n", (((void *)0))), declId->string, regClass->name);
1112 FreeType(dataType);
1113 }
1114 }
1115 else
1116 {
1117 {
1118 char typeString[8192];
1119
1120 typeString[0] = (char)0;
1121 dataType = ProcessType(decl->specifiers, d);
1122 PrintType(dataType, typeString, 0x0, 0x1);
1123 if(member)
1124 {
1125 dataMember = __ecereNameSpace__ecere__com__eMember_AddDataMember(member, declId->string, typeString, 0, 0, def->memberAccess);
1126 if(!dataMember)
1127 Compiler_Error(__ecereNameSpace__ecere__GetTranslatedString("ec", "Member with same name already exists %s in member %s\n", (((void *)0))), declId->string, member->name);
1128 }
1129 else if(regClass)
1130 {
1131 dataMember = __ecereNameSpace__ecere__com__eClass_AddDataMember(regClass, declId->string, typeString, 0, 0, def->memberAccess);
1132 if(!dataMember)
1133 Compiler_Error(__ecereNameSpace__ecere__GetTranslatedString("ec", "Member with same name already exists %s in class %s\n", (((void *)0))), declId->string, regClass->name);
1134 }
1135 if(dataMember)
1136 dataMember->dataType = dataType;
1137 else
1138 FreeType(dataType);
1139 }
1140 }
1141 }
1142 }
1143 }
1144 else if(decl->specifiers)
1145 {
1146 struct Specifier * spec;
1147
1148 for(spec = (*decl->specifiers).first; spec; spec = spec->next)
1149 {
1150 if(spec->type == 3 || spec->type == 4)
1151 {
1152 if(spec->definitions && !spec->id)
1153 {
1154 struct __ecereNameSpace__ecere__com__DataMember * dataMember = __ecereNameSpace__ecere__com__eMember_New((spec->type == 4) ? 1 : 2, def->memberAccess);
1155
1156 AddDefinitions((((void *)0)), dataMember, spec->definitions);
1157 if(member)
1158 {
1159 __ecereNameSpace__ecere__com__eMember_AddMember(member, dataMember);
1160 }
1161 else
1162 {
1163 __ecereNameSpace__ecere__com__eClass_AddMember(regClass, dataMember);
1164 }
1165 }
1166 else if(spec->definitions && spec->id)
1167 {
1168 {
1169 struct Identifier * id = spec->id;
1170 char typeString[8192];
1171
1172 typeString[0] = (char)0;
1173 spec->id = (((void *)0));
1174 decl->declarators = MkListOne(MkDeclaratorIdentifier(id));
1175 dataType = ProcessType(decl->specifiers, (((void *)0)));
1176 PrintType(dataType, typeString, 0x0, 0x1);
1177 if(member)
1178 {
1179 dataMember = __ecereNameSpace__ecere__com__eMember_AddDataMember(member, id->string, typeString, 0, 0, def->memberAccess);
1180 if(!dataMember)
1181 Compiler_Error(__ecereNameSpace__ecere__GetTranslatedString("ec", "Member with same name already exists %s in member %s\n", (((void *)0))), id->string, member->name);
1182 }
1183 else
1184 {
1185 dataMember = __ecereNameSpace__ecere__com__eClass_AddDataMember(regClass, id->string, typeString, 0, 0, def->memberAccess);
1186 if(!dataMember)
1187 Compiler_Error(__ecereNameSpace__ecere__GetTranslatedString("ec", "Member with same name already exists %s in class %s\n", (((void *)0))), id->string, regClass->name);
1188 }
1189 if(dataMember)
1190 dataMember->dataType = dataType;
1191 else
1192 FreeType(dataType);
1193 }
1194 }
1195 }
1196 }
1197 }
1198 }
1199 else if(decl->type == 2)
1200 {
1201 struct Instantiation * inst = decl->inst;
1202 struct Expression * exp = inst->exp;
1203
1204 if(exp)
1205 {
1206 char * string = exp->identifier->string;
1207
1208 {
1209 struct Type * dataType = (dataType = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Type), dataType->kind = 8, dataType->_class = inst->_class->symbol, dataType->refCount = 1, dataType);
1210
1211 if(member)
1212 {
1213 dataMember = __ecereNameSpace__ecere__com__eMember_AddDataMember(member, string, inst->_class->name, 0, 0, def->memberAccess);
1214 if(!dataMember)
1215 Compiler_Error(__ecereNameSpace__ecere__GetTranslatedString("ec", "Member with same name already exists %s in member %s\n", (((void *)0))), string, member->name);
1216 }
1217 else
1218 {
1219 dataMember = __ecereNameSpace__ecere__com__eClass_AddDataMember(regClass, string, inst->_class->name, 0, 0, def->memberAccess);
1220 if(!dataMember)
1221 Compiler_Error(__ecereNameSpace__ecere__GetTranslatedString("ec", "Member with same name already exists %s in class %s\n", (((void *)0))), string, regClass->name);
1222 }
1223 if(dataMember)
1224 dataMember->dataType = dataType;
1225 else
1226 FreeType(dataType);
1227 }
1228 }
1229 }
1230 }
1231 else if(def->type == 3 && def->propertyDef)
1232 {
1233 struct PropertyDef * propertyDef = def->propertyDef;
1234 struct __ecereNameSpace__ecere__com__Property * prop;
1235 char * dataTypeString = StringFromSpecDecl(propertyDef->specifiers, propertyDef->declarator);
1236
1237 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);
1238 (__ecereNameSpace__ecere__com__eSystem_Delete(dataTypeString), dataTypeString = 0);
1239 if(prop)
1240 {
1241 if(inCompiler)
1242 prop->IsSet = (void *)propertyDef->issetStmt;
1243 prop->compiled = 0x0;
1244 prop->symbol = __extension__ ({
1245 struct Symbol * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Symbol);
1246
1247 __ecereInstance1->string = __ecereNameSpace__ecere__sys__CopyString(propertyDef->symbol->string), __ecereInstance1->id = propertyDef->symbol->id, __ecereInstance1->type = propertyDef->symbol->type, __ecereInstance1;
1248 });
1249 ((struct Symbol *)prop->symbol)->propCategory = propertyDef->category;
1250 propertyDef->category = (((void *)0));
1251 if(propertyDef->isWatchable)
1252 __ecereNameSpace__ecere__com__eProperty_Watchable(prop);
1253 }
1254 else
1255 printf("");
1256 propertyDef->symbol->_property = prop;
1257 if(propertyDef->symbol->type)
1258 propertyDef->symbol->type->refCount++;
1259 }
1260 else if(def->type == 10 && def->propertyDef)
1261 {
1262 struct PropertyDef * propertyDef = def->propertyDef;
1263 struct __ecereNameSpace__ecere__com__ClassProperty * prop;
1264 char * dataTypeString = StringFromSpecDecl(propertyDef->specifiers, propertyDef->declarator);
1265
1266 prop = __ecereNameSpace__ecere__com__eClass_AddClassProperty(regClass, propertyDef->id->string, dataTypeString, inCompiler ? propertyDef->setStmt : (((void *)0)), inCompiler ? propertyDef->getStmt : (((void *)0)));
1267 (__ecereNameSpace__ecere__com__eSystem_Delete(dataTypeString), dataTypeString = 0);
1268 }
1269 }
1270 }
1271 }
1272
1273 extern struct __ecereNameSpace__ecere__com__Class * __ecereNameSpace__ecere__com__eSystem_FindClass(struct __ecereNameSpace__ecere__com__Instance * module, char *  name);
1274
1275 extern struct __ecereNameSpace__ecere__com__Instance * privateModule;
1276
1277 extern struct Context * globalContext;
1278
1279 extern struct __ecereNameSpace__ecere__sys__OldList *  excludedSymbols;
1280
1281 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);
1282
1283 extern unsigned int buildingECERECOMModule;
1284
1285 extern int strcmp(const char * , const char * );
1286
1287 extern void FreeList(struct __ecereNameSpace__ecere__sys__OldList * list, void (*  FreeFunction)(void * ));
1288
1289 extern void FreeSpecifier(struct Specifier * spec);
1290
1291 extern struct Declarator * GetFuncDecl(struct Declarator * decl);
1292
1293 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);
1294
1295 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);
1296
1297 extern char *  strcpy(char * , const char * );
1298
1299 extern char *  strcat(char * , const char * );
1300
1301 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_OpTable;
1302
1303 struct OpTable
1304 {
1305 unsigned int (*  Add)(struct Expression *, struct Operand *, struct Operand *);
1306 unsigned int (*  Sub)(struct Expression *, struct Operand *, struct Operand *);
1307 unsigned int (*  Mul)(struct Expression *, struct Operand *, struct Operand *);
1308 unsigned int (*  Div)(struct Expression *, struct Operand *, struct Operand *);
1309 unsigned int (*  Mod)(struct Expression *, struct Operand *, struct Operand *);
1310 unsigned int (*  Neg)(struct Expression *, struct Operand *);
1311 unsigned int (*  Inc)(struct Expression *, struct Operand *);
1312 unsigned int (*  Dec)(struct Expression *, struct Operand *);
1313 unsigned int (*  Asign)(struct Expression *, struct Operand *, struct Operand *);
1314 unsigned int (*  AddAsign)(struct Expression *, struct Operand *, struct Operand *);
1315 unsigned int (*  SubAsign)(struct Expression *, struct Operand *, struct Operand *);
1316 unsigned int (*  MulAsign)(struct Expression *, struct Operand *, struct Operand *);
1317 unsigned int (*  DivAsign)(struct Expression *, struct Operand *, struct Operand *);
1318 unsigned int (*  ModAsign)(struct Expression *, struct Operand *, struct Operand *);
1319 unsigned int (*  BitAnd)(struct Expression *, struct Operand *, struct Operand *);
1320 unsigned int (*  BitOr)(struct Expression *, struct Operand *, struct Operand *);
1321 unsigned int (*  BitXor)(struct Expression *, struct Operand *, struct Operand *);
1322 unsigned int (*  LShift)(struct Expression *, struct Operand *, struct Operand *);
1323 unsigned int (*  RShift)(struct Expression *, struct Operand *, struct Operand *);
1324 unsigned int (*  BitNot)(struct Expression *, struct Operand *);
1325 unsigned int (*  AndAsign)(struct Expression *, struct Operand *, struct Operand *);
1326 unsigned int (*  OrAsign)(struct Expression *, struct Operand *, struct Operand *);
1327 unsigned int (*  XorAsign)(struct Expression *, struct Operand *, struct Operand *);
1328 unsigned int (*  LShiftAsign)(struct Expression *, struct Operand *, struct Operand *);
1329 unsigned int (*  RShiftAsign)(struct Expression *, struct Operand *, struct Operand *);
1330 unsigned int (*  Not)(struct Expression *, struct Operand *);
1331 unsigned int (*  Equ)(struct Expression *, struct Operand *, struct Operand *);
1332 unsigned int (*  Nqu)(struct Expression *, struct Operand *, struct Operand *);
1333 unsigned int (*  And)(struct Expression *, struct Operand *, struct Operand *);
1334 unsigned int (*  Or)(struct Expression *, struct Operand *, struct Operand *);
1335 unsigned int (*  Grt)(struct Expression *, struct Operand *, struct Operand *);
1336 unsigned int (*  Sma)(struct Expression *, struct Operand *, struct Operand *);
1337 unsigned int (*  GrtEqu)(struct Expression *, struct Operand *, struct Operand *);
1338 unsigned int (*  SmaEqu)(struct Expression *, struct Operand *, struct Operand *);
1339 unsigned int (*  Cond)(struct Expression *, struct Operand *, struct Operand *, struct Operand *);
1340 } __attribute__ ((gcc_struct));
1341
1342 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Operand;
1343
1344 struct Operand
1345 {
1346 int kind;
1347 struct Type * type;
1348 unsigned int ptrSize;
1349 union
1350 {
1351 char c;
1352 unsigned char uc;
1353 short s;
1354 unsigned short us;
1355 int i;
1356 unsigned int ui;
1357 float f;
1358 double d;
1359 long long i64;
1360 uint64 ui64;
1361 } __attribute__ ((gcc_struct));
1362 struct OpTable ops;
1363 } __attribute__ ((gcc_struct));
1364
1365 extern struct Operand GetOperand(struct Expression * exp);
1366
1367 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__ClassTemplateParameter;
1368
1369 struct __ecereNameSpace__ecere__com__ClassTemplateParameter;
1370
1371 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);
1372
1373 extern void __ecereNameSpace__ecere__com__eClass_DoneAddingTemplateParameters(struct __ecereNameSpace__ecere__com__Class * base);
1374
1375 void __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Remove(struct __ecereNameSpace__ecere__sys__BinaryTree * this, struct __ecereNameSpace__ecere__sys__BTNode * node);
1376
1377 void __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add(struct __ecereNameSpace__ecere__sys__OldList * this, void *  item);
1378
1379 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)
1380 {
1381 struct __ecereNameSpace__ecere__com__Class * regClass;
1382 struct ClassDef * def;
1383 unsigned int redefinition = 0x0;
1384
1385 regClass = __ecereNameSpace__ecere__com__eSystem_FindClass(privateModule, symbol->string);
1386 if(regClass && !regClass->internalDecl)
1387 {
1388 if(symbol->parent || (struct Symbol *)globalContext->classes.root == symbol)
1389 {
1390 __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Remove(&globalContext->classes, (struct __ecereNameSpace__ecere__sys__BTNode *)symbol);
1391 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*excludedSymbols), symbol);
1392 }
1393 redefinition = 0x1;
1394 if(inCompiler)
1395 {
1396 yylloc = *loc;
1397 Compiler_Error(__ecereNameSpace__ecere__GetTranslatedString("ec", "redefinition of class %s\n", (((void *)0))), symbol->string);
1398 return ;
1399 }
1400 }
1401 else
1402 {
1403 char baseName[1024] = "";
1404 unsigned int unitType = 0x0;
1405 unsigned int wouldBeEnum = 0x0;
1406 int inheritanceAccess = 1;
1407
1408 if(baseSpecs != (((void *)0)))
1409 {
1410 struct Type * baseType = ProcessType(baseSpecs, (((void *)0)));
1411
1412 PrintType(baseType, baseName, 0x0, 0x1);
1413 if(baseType->kind == 8)
1414 {
1415 if(baseType->_class->registered && classType == 0)
1416 {
1417 if(baseType->_class->registered->type == 3)
1418 classType = 3;
1419 else if(baseType->_class->registered->type == 2)
1420 classType = 2;
1421 else if(baseType->_class->registered->type == 5)
1422 classType = 5;
1423 else if(baseType->_class->registered->type == 4)
1424 {
1425 wouldBeEnum = 0x1;
1426 }
1427 }
1428 }
1429 else if(baseType->kind == 9 || baseType->kind == 10)
1430 {
1431 classType = 5;
1432 baseName[0] = '\0';
1433 }
1434 else
1435 unitType = 0x1;
1436 FreeType(baseType);
1437 if(((struct Specifier *)baseSpecs->first)->type == 0 && ((struct Specifier *)baseSpecs->first)->specifier == PRIVATE)
1438 inheritanceAccess = 2;
1439 }
1440 if(classType == 0)
1441 {
1442 if(unitType)
1443 classType = 3;
1444 if(definitions != (((void *)0)))
1445 {
1446 for(def = definitions->first; def; def = def->next)
1447 {
1448 if(def->type == 2)
1449 {
1450 struct Declaration * decl = def->decl;
1451
1452 if(decl->type == 0)
1453 {
1454 if(unitType)
1455 {
1456 classType = 2;
1457 break;
1458 }
1459 if(decl->declarators)
1460 {
1461 struct Declarator * d;
1462
1463 for(d = (*decl->declarators).first; d; d = d->next)
1464 {
1465 if(d->type != 0)
1466 continue;
1467 if(d->structDecl.exp)
1468 {
1469 classType = 2;
1470 break;
1471 }
1472 }
1473 if(d)
1474 break;
1475 }
1476 }
1477 }
1478 }
1479 }
1480 }
1481 if(classType == 0 && wouldBeEnum)
1482 classType = 4;
1483 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);
1484 if(regClass)
1485 regClass->symbol = symbol;
1486 }
1487 if(!redefinition)
1488 {
1489 if(classType == 6)
1490 {
1491 struct __ecereNameSpace__ecere__com__DataMember * unionMember = __ecereNameSpace__ecere__com__eMember_New(1, 1);
1492
1493 AddDefinitions(regClass, unionMember, definitions);
1494 __ecereNameSpace__ecere__com__eClass_AddMember(regClass, unionMember);
1495 }
1496 else
1497 AddDefinitions(regClass, (((void *)0)), definitions);
1498 }
1499 if(definitions != (((void *)0)))
1500 {
1501 for(def = definitions->first; def; def = def->next)
1502 {
1503 if(def->type == 0 && (def->function->isConstructor || def->function->isDestructor))
1504 {
1505 struct Specifier * spec = def->function->specifiers ? (*def->function->specifiers).last : (((void *)0));
1506
1507 if(!spec || spec->type != 1 || !spec->name || (strcmp(spec->name, regClass->name) && (!spec->symbol || !spec->symbol->registered || strcmp(spec->symbol->registered->name, regClass->name))))
1508 {
1509 yylloc = def->function->loc;
1510 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))));
1511 }
1512 FreeList(def->function->specifiers, FreeSpecifier);
1513 def->function->specifiers = (((void *)0));
1514 }
1515 if(def->type == 0 && def->function->declarator)
1516 {
1517 struct ClassFunction * func = def->function;
1518
1519 func->_class = regClass;
1520 if(!redefinition && !func->dontMangle)
1521 {
1522 struct Declarator * funcDecl = GetFuncDecl(func->declarator);
1523 struct Identifier * id = GetDeclId(funcDecl);
1524 struct __ecereNameSpace__ecere__com__Method * method;
1525
1526 if(func->isVirtual)
1527 {
1528 char * typeString = StringFromSpecDecl(func->specifiers, func->declarator);
1529
1530 method = __ecereNameSpace__ecere__com__eClass_AddVirtualMethod(regClass, id->string, typeString, inCompiler ? func->declarator->symbol : (((void *)0)), def->memberAccess);
1531 (__ecereNameSpace__ecere__com__eSystem_Delete(typeString), typeString = 0);
1532 }
1533 else
1534 {
1535 char * typeString = StringFromSpecDecl(func->specifiers, func->declarator);
1536
1537 method = __ecereNameSpace__ecere__com__eClass_AddMethod(regClass, id->string, typeString, inCompiler ? func->declarator->symbol : (((void *)0)), def->memberAccess);
1538 if(!method)
1539 Compiler_Error(__ecereNameSpace__ecere__GetTranslatedString("ec", "Redefinition of method %s in class %s\n", (((void *)0))), id->string, regClass->name);
1540 (__ecereNameSpace__ecere__com__eSystem_Delete(typeString), typeString = 0);
1541 }
1542 if(method && (method->type != 1 || method->_class == regClass))
1543 {
1544 method->symbol = __extension__ ({
1545 struct Symbol * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Symbol);
1546
1547 __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;
1548 });
1549 if(func->declarator->symbol->type)
1550 func->declarator->symbol->type->refCount++;
1551 func->declarator->symbol->method = method;
1552 }
1553 else
1554 {
1555 func->declarator->symbol->method = method;
1556 }
1557 }
1558 }
1559 }
1560 }
1561 if(regClass && symbol->templateParams)
1562 {
1563 struct TemplateParameter * param;
1564
1565 for(param = (*symbol->templateParams).first; param; param = param->next)
1566 {
1567 struct __ecereNameSpace__ecere__com__ClassTemplateArgument defaultArg = 
1568 {
1569 0, 0, 0, 0, 0
1570 };
1571
1572 if(param->defaultArgument)
1573 {
1574 switch(param->type)
1575 {
1576 case 0:
1577 defaultArg.dataTypeString = StringFromSpecDecl(param->defaultArgument->templateDatatype->specifiers, param->defaultArgument->templateDatatype->decl);
1578 break;
1579 case 1:
1580 {
1581 char memberString[1024];
1582
1583 memberString[0] = '\0';
1584 if(param->defaultArgument->identifier->_class)
1585 {
1586 if(param->defaultArgument->identifier->_class->type == 8)
1587 {
1588 if(param->defaultArgument->identifier->_class->templateParameter)
1589 strcpy(memberString, param->defaultArgument->identifier->_class->templateParameter->identifier->string);
1590 }
1591 else
1592 {
1593 if(param->defaultArgument->identifier->_class->name)
1594 strcpy(memberString, param->defaultArgument->identifier->_class->name);
1595 }
1596 }
1597 if(memberString[0])
1598 {
1599 strcat(memberString, "::");
1600 }
1601 strcat(memberString, param->defaultArgument->identifier->string);
1602 defaultArg.memberString = __ecereNameSpace__ecere__sys__CopyString(memberString);
1603 break;
1604 }
1605 case 2:
1606 {
1607 struct Operand op;
1608
1609 param->defaultArgument->expression->destType = ProcessType(param->dataType->specifiers, param->dataType->decl);
1610 ProcessExpressionType(param->defaultArgument->expression);
1611 ComputeExpression(param->defaultArgument->expression);
1612 op = GetOperand(param->defaultArgument->expression);
1613 defaultArg.expression.ui64 = op.ui64;
1614 break;
1615 }
1616 }
1617 }
1618 if(param->type == 1)
1619 {
1620 __ecereNameSpace__ecere__com__eClass_AddTemplateParameter(regClass, param->identifier->string, 1, (void *)param->memberType, &defaultArg);
1621 }
1622 else
1623 {
1624 char * typeString = param->dataType ? StringFromSpecDecl(param->dataType->specifiers, param->dataType->decl) : (((void *)0));
1625
1626 __ecereNameSpace__ecere__com__eClass_AddTemplateParameter(regClass, param->identifier->string, param->type, typeString, &defaultArg);
1627 (__ecereNameSpace__ecere__com__eSystem_Delete(typeString), typeString = 0);
1628 }
1629 if(param->type == 0 || param->type == 1)
1630 (__ecereNameSpace__ecere__com__eSystem_Delete(defaultArg.dataTypeString), defaultArg.dataTypeString = 0);
1631 }
1632 __ecereNameSpace__ecere__com__eClass_DoneAddingTemplateParameters(regClass);
1633 }
1634 }
1635
1636 extern struct External * curExternal;
1637
1638 extern struct __ecereNameSpace__ecere__sys__OldList *  ast;
1639
1640 extern struct Symbol * FindType(struct Context * ctx, char *  name);
1641
1642 extern struct Symbol * FindClass(char *  name);
1643
1644 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__sys__OldLink;
1645
1646 struct __ecereNameSpace__ecere__sys__OldLink
1647 {
1648 struct __ecereNameSpace__ecere__sys__OldLink * prev;
1649 struct __ecereNameSpace__ecere__sys__OldLink * next;
1650 void *  data;
1651 } __attribute__ ((gcc_struct));
1652
1653 extern struct ModuleImport * mainModule;
1654
1655 void PrePreProcessClassDefinitions()
1656 {
1657 struct External * external, * next;
1658
1659 curExternal = (((void *)0));
1660 if(ast)
1661 {
1662 for(external = (*ast).first; external; external = next)
1663 {
1664 next = external->next;
1665 curExternal = external;
1666 if(external->type == 2)
1667 {
1668 struct ClassDefinition * _class = external->_class;
1669
1670 if(_class->definitions && (!_class->symbol->registered || !inCompiler))
1671 {
1672 ProcessClass(0, _class->definitions, _class->symbol, _class->baseSpecs, (((void *)0)), &_class->loc, ast, external->prev, (((void *)0)), _class->declMode);
1673 _class->symbol->isStatic = _class->declMode == 3;
1674 }
1675 }
1676 else if(external->type == 1)
1677 {
1678 struct Declaration * declaration = external->declaration;
1679
1680 if(declaration->type == 1)
1681 {
1682 if(declaration->specifiers)
1683 {
1684 struct Specifier * specifier;
1685
1686 for(specifier = (*declaration->specifiers).first; specifier; specifier = specifier->next)
1687 {
1688 if((specifier->type == 2 || specifier->type == 3 || specifier->type == 4) && specifier->id && specifier->id->string && (declaration->declMode || specifier->baseSpecs || (specifier->type == 2 && specifier->definitions)))
1689 {
1690 struct Symbol * type = FindType(globalContext, specifier->id->string);
1691 struct Symbol * symbol = FindClass(specifier->id->string);
1692
1693 if(type)
1694 {
1695 declaration->declMode = 0;
1696 if(symbol)
1697 {
1698 __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Remove(&globalContext->classes, (struct __ecereNameSpace__ecere__sys__BTNode *)symbol);
1699 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*excludedSymbols), symbol);
1700 }
1701 }
1702 else if(symbol && !symbol->registered)
1703 {
1704 int classType;
1705
1706 if(specifier->type == 2)
1707 classType = 4;
1708 else if(specifier->type == 4)
1709 classType = 6;
1710 else
1711 classType = 1;
1712 ProcessClass(classType, specifier->definitions, symbol, specifier->baseSpecs, specifier->list, &specifier->loc, ast, external->prev, declaration->declarators, declaration->declMode);
1713 symbol->isStatic = declaration->declMode == 3;
1714 }
1715 }
1716 }
1717 }
1718 }
1719 }
1720 else if(external->type == 3)
1721 {
1722 }
1723 }
1724 {
1725 for(external = (*ast).first; external; external = external->next)
1726 {
1727 if(external->type == 2)
1728 {
1729 struct ClassDefinition * _class = external->_class;
1730
1731 if(_class->symbol)
1732 {
1733 struct __ecereNameSpace__ecere__sys__OldLink * link;
1734
1735 for(link = _class->symbol->templatedClasses.first; link; link = link->next)
1736 {
1737 struct Symbol * symbol = link->data;
1738
1739 symbol->registered = __ecereNameSpace__ecere__com__eSystem_FindClass(privateModule, symbol->string);
1740 }
1741 }
1742 }
1743 else if(external->type == 1)
1744 {
1745 struct Declaration * declaration = external->declaration;
1746
1747 if(declaration->type == 1)
1748 {
1749 if(declaration->specifiers)
1750 {
1751 struct Specifier * specifier;
1752
1753 for(specifier = (*declaration->specifiers).first; specifier; specifier = specifier->next)
1754 {
1755 if((specifier->type == 2 || specifier->type == 3 || specifier->type == 4) && specifier->id && specifier->id->string && (declaration->declMode || specifier->baseSpecs || (specifier->type == 2 && specifier->definitions)))
1756 {
1757 struct Symbol * type = FindType(globalContext, specifier->id->string);
1758 struct Symbol * symbol = FindClass(specifier->id->string);
1759
1760 if(type)
1761 {
1762 }
1763 else if(symbol)
1764 {
1765 struct __ecereNameSpace__ecere__sys__OldLink * link;
1766
1767 for(link = symbol->templatedClasses.first; link; link = link->next)
1768 {
1769 struct Symbol * tplSymbol = link->data;
1770
1771 tplSymbol->registered = __ecereNameSpace__ecere__com__eSystem_FindClass(privateModule, tplSymbol->string);
1772 tplSymbol->module = symbol->module ? symbol->module : mainModule;
1773 }
1774 }
1775 }
1776 }
1777 }
1778 }
1779 }
1780 }
1781 }
1782 }
1783 }
1784
1785 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__GlobalFunction;
1786
1787 struct __ecereNameSpace__ecere__com__GlobalFunction;
1788
1789 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);
1790
1791 void __ecereRegisterModule_firstPass(struct __ecereNameSpace__ecere__com__Instance * module)
1792 {
1793 struct __ecereNameSpace__ecere__com__Class * class;
1794
1795 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("PrePreProcessClassDefinitions", "void PrePreProcessClassDefinitions(void)", PrePreProcessClassDefinitions, module, 1);
1796 }
1797
1798 void __ecereUnregisterModule_firstPass(struct __ecereNameSpace__ecere__com__Instance * module)
1799 {
1800
1801 }
1802