compiler/libec; bootstrap: Improved anonymous instantiations implementation
[sdk] / compiler / bootstrap / libec / bootstrap / copy.c
1 #if defined(__GNUC__)
2 typedef long long int64;
3 typedef unsigned long long uint64;
4 #ifndef _WIN32
5 #define __declspec(x)
6 #endif
7 #elif defined(__TINYC__)
8 #include <stdarg.h>
9 #define __builtin_va_list va_list
10 #define __builtin_va_start va_start
11 #define __builtin_va_end va_end
12 #ifdef _WIN32
13 #define strcasecmp stricmp
14 #define strncasecmp strnicmp
15 #define __declspec(x) __attribute__((x))
16 #else
17 #define __declspec(x)
18 #endif
19 typedef long long int64;
20 typedef unsigned long long uint64;
21 #else
22 typedef __int64 int64;
23 typedef unsigned __int64 uint64;
24 #endif
25 #ifdef __BIG_ENDIAN__
26 #define __ENDIAN_PAD(x) (8 - (x))
27 #else
28 #define __ENDIAN_PAD(x) 0
29 #endif
30 #include <stdint.h>
31 #include <sys/types.h>
32 extern void *  __ecereNameSpace__ecere__com__eSystem_New(unsigned int size);
33
34 extern void *  __ecereNameSpace__ecere__com__eSystem_New0(unsigned int size);
35
36 extern void *  __ecereNameSpace__ecere__com__eSystem_Renew(void *  memory, unsigned int size);
37
38 extern void *  __ecereNameSpace__ecere__com__eSystem_Renew0(void *  memory, unsigned int size);
39
40 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__sys__BTNode;
41
42 struct __ecereNameSpace__ecere__sys__BTNode;
43
44 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__sys__BinaryTree;
45
46 struct __ecereNameSpace__ecere__sys__BinaryTree
47 {
48 struct __ecereNameSpace__ecere__sys__BTNode * root;
49 int count;
50 int (*  CompareKey)(struct __ecereNameSpace__ecere__sys__BinaryTree * tree, uintptr_t a, uintptr_t b);
51 void (*  FreeKey)(void *  key);
52 } __attribute__ ((gcc_struct));
53
54 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__sys__OldList;
55
56 struct __ecereNameSpace__ecere__sys__OldList
57 {
58 void *  first;
59 void *  last;
60 int count;
61 unsigned int offset;
62 unsigned int circ;
63 } __attribute__ ((gcc_struct));
64
65 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__Method;
66
67 struct __ecereNameSpace__ecere__com__Method
68 {
69 char *  name;
70 struct __ecereNameSpace__ecere__com__Method * parent;
71 struct __ecereNameSpace__ecere__com__Method * left;
72 struct __ecereNameSpace__ecere__com__Method * right;
73 int depth;
74 int (*  function)();
75 int vid;
76 int type;
77 struct __ecereNameSpace__ecere__com__Class * _class;
78 void *  symbol;
79 char *  dataTypeString;
80 struct Type * dataType;
81 int memberAccess;
82 } __attribute__ ((gcc_struct));
83
84 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__Property;
85
86 struct __ecereNameSpace__ecere__com__Property
87 {
88 struct __ecereNameSpace__ecere__com__Property * prev;
89 struct __ecereNameSpace__ecere__com__Property * next;
90 char *  name;
91 unsigned int isProperty;
92 int memberAccess;
93 int id;
94 struct __ecereNameSpace__ecere__com__Class * _class;
95 char *  dataTypeString;
96 struct __ecereNameSpace__ecere__com__Class * dataTypeClass;
97 struct Type * dataType;
98 void (*  Set)(void * , int);
99 int (*  Get)(void * );
100 unsigned int (*  IsSet)(void * );
101 void *  data;
102 void *  symbol;
103 int vid;
104 unsigned int conversion;
105 unsigned int watcherOffset;
106 char *  category;
107 unsigned int compiled;
108 unsigned int selfWatchable;
109 unsigned int isWatchable;
110 } __attribute__ ((gcc_struct));
111
112 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_CodePosition;
113
114 struct CodePosition
115 {
116 int line;
117 int charPos;
118 int pos;
119 unsigned int included;
120 } __attribute__ ((gcc_struct));
121
122 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Location;
123
124 struct Location
125 {
126 struct CodePosition start;
127 struct CodePosition end;
128 } __attribute__ ((gcc_struct));
129
130 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Attrib;
131
132 struct Attrib
133 {
134 struct Location loc;
135 int type;
136 struct __ecereNameSpace__ecere__sys__OldList *  attribs;
137 } __attribute__ ((gcc_struct));
138
139 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_ExtDecl;
140
141 struct ExtDecl
142 {
143 struct Location loc;
144 int type;
145 union
146 {
147 char * s;
148 struct Attrib * attr;
149 } __attribute__ ((gcc_struct));
150 } __attribute__ ((gcc_struct));
151
152 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_ClassDefinition;
153
154 struct ClassDefinition;
155
156 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Context;
157
158 struct Context;
159
160 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Instantiation;
161
162 struct Instantiation
163 {
164 struct Instantiation * prev;
165 struct Instantiation * next;
166 struct Location loc;
167 struct Specifier * _class;
168 struct Expression * exp;
169 struct __ecereNameSpace__ecere__sys__OldList *  members;
170 struct Symbol * symbol;
171 unsigned int fullSet;
172 unsigned int isConstant;
173 unsigned char *  data;
174 struct Location nameLoc;
175 struct Location insideLoc;
176 unsigned int built;
177 } __attribute__ ((gcc_struct));
178
179 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Declaration;
180
181 struct Declaration
182 {
183 struct Declaration * prev;
184 struct Declaration * next;
185 struct Location loc;
186 int type;
187 union
188 {
189 struct
190 {
191 struct __ecereNameSpace__ecere__sys__OldList *  specifiers;
192 struct __ecereNameSpace__ecere__sys__OldList *  declarators;
193 } __attribute__ ((gcc_struct));
194 struct Instantiation * inst;
195 struct
196 {
197 struct Identifier * id;
198 struct Expression * exp;
199 } __attribute__ ((gcc_struct));
200 } __attribute__ ((gcc_struct));
201 struct Specifier * extStorage;
202 struct Symbol * symbol;
203 int declMode;
204 } __attribute__ ((gcc_struct));
205
206 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Statement;
207
208 struct Statement
209 {
210 struct Statement * prev;
211 struct Statement * next;
212 struct Location loc;
213 int type;
214 union
215 {
216 struct __ecereNameSpace__ecere__sys__OldList *  expressions;
217 struct
218 {
219 struct Identifier * id;
220 struct Statement * stmt;
221 } __attribute__ ((gcc_struct)) labeled;
222 struct
223 {
224 struct Expression * exp;
225 struct Statement * stmt;
226 } __attribute__ ((gcc_struct)) caseStmt;
227 struct
228 {
229 struct __ecereNameSpace__ecere__sys__OldList * declarations;
230 struct __ecereNameSpace__ecere__sys__OldList * statements;
231 struct Context * context;
232 unsigned int isSwitch;
233 } __attribute__ ((gcc_struct)) compound;
234 struct
235 {
236 struct __ecereNameSpace__ecere__sys__OldList * exp;
237 struct Statement * stmt;
238 struct Statement * elseStmt;
239 } __attribute__ ((gcc_struct)) ifStmt;
240 struct
241 {
242 struct __ecereNameSpace__ecere__sys__OldList * exp;
243 struct Statement * stmt;
244 } __attribute__ ((gcc_struct)) switchStmt;
245 struct
246 {
247 struct __ecereNameSpace__ecere__sys__OldList * exp;
248 struct Statement * stmt;
249 } __attribute__ ((gcc_struct)) whileStmt;
250 struct
251 {
252 struct __ecereNameSpace__ecere__sys__OldList * exp;
253 struct Statement * stmt;
254 } __attribute__ ((gcc_struct)) doWhile;
255 struct
256 {
257 struct Statement * init;
258 struct Statement * check;
259 struct __ecereNameSpace__ecere__sys__OldList * increment;
260 struct Statement * stmt;
261 } __attribute__ ((gcc_struct)) forStmt;
262 struct
263 {
264 struct Identifier * id;
265 } __attribute__ ((gcc_struct)) gotoStmt;
266 struct
267 {
268 struct Specifier * spec;
269 char * statements;
270 struct __ecereNameSpace__ecere__sys__OldList * inputFields;
271 struct __ecereNameSpace__ecere__sys__OldList * outputFields;
272 struct __ecereNameSpace__ecere__sys__OldList * clobberedFields;
273 } __attribute__ ((gcc_struct)) asmStmt;
274 struct
275 {
276 struct Expression * watcher;
277 struct Expression * object;
278 struct __ecereNameSpace__ecere__sys__OldList * watches;
279 } __attribute__ ((gcc_struct)) _watch;
280 struct
281 {
282 struct Identifier * id;
283 struct __ecereNameSpace__ecere__sys__OldList * exp;
284 struct __ecereNameSpace__ecere__sys__OldList * filter;
285 struct Statement * stmt;
286 } __attribute__ ((gcc_struct)) forEachStmt;
287 struct Declaration * decl;
288 } __attribute__ ((gcc_struct));
289 } __attribute__ ((gcc_struct));
290
291 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_TypeName;
292
293 struct TypeName
294 {
295 struct TypeName * prev;
296 struct TypeName * next;
297 struct Location loc;
298 struct __ecereNameSpace__ecere__sys__OldList *  qualifiers;
299 struct Declarator * declarator;
300 int classObjectType;
301 struct Expression * bitCount;
302 } __attribute__ ((gcc_struct));
303
304 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Initializer;
305
306 struct Initializer
307 {
308 struct Initializer * prev;
309 struct Initializer * next;
310 struct Location loc;
311 int type;
312 union
313 {
314 struct Expression * exp;
315 struct __ecereNameSpace__ecere__sys__OldList *  list;
316 } __attribute__ ((gcc_struct));
317 unsigned int isConstant;
318 } __attribute__ ((gcc_struct));
319
320 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__DataValue;
321
322 struct __ecereNameSpace__ecere__com__DataValue
323 {
324 union
325 {
326 char c;
327 unsigned char uc;
328 short s;
329 unsigned short us;
330 int i;
331 unsigned int ui;
332 void *  p;
333 float f;
334 double d;
335 long long i64;
336 uint64 ui64;
337 } __attribute__ ((gcc_struct));
338 } __attribute__ ((gcc_struct));
339
340 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Expression;
341
342 struct Expression
343 {
344 struct Expression * prev;
345 struct Expression * next;
346 struct Location loc;
347 int type;
348 union
349 {
350 struct
351 {
352 char *  constant;
353 struct Identifier * identifier;
354 } __attribute__ ((gcc_struct));
355 struct Statement * compound;
356 struct Instantiation * instance;
357 char *  string;
358 struct __ecereNameSpace__ecere__sys__OldList *  list;
359 struct
360 {
361 struct __ecereNameSpace__ecere__sys__OldList * specifiers;
362 struct Declarator * decl;
363 } __attribute__ ((gcc_struct)) _classExp;
364 struct
365 {
366 struct Identifier * id;
367 } __attribute__ ((gcc_struct)) classData;
368 struct
369 {
370 struct Expression * exp;
371 struct __ecereNameSpace__ecere__sys__OldList * arguments;
372 struct Location argLoc;
373 } __attribute__ ((gcc_struct)) call;
374 struct
375 {
376 struct Expression * exp;
377 struct __ecereNameSpace__ecere__sys__OldList * index;
378 } __attribute__ ((gcc_struct)) index;
379 struct
380 {
381 struct Expression * exp;
382 struct Identifier * member;
383 int memberType;
384 unsigned int thisPtr;
385 } __attribute__ ((gcc_struct)) member;
386 struct
387 {
388 int op;
389 struct Expression * exp1;
390 struct Expression * exp2;
391 } __attribute__ ((gcc_struct)) op;
392 struct TypeName * typeName;
393 struct Specifier * _class;
394 struct
395 {
396 struct TypeName * typeName;
397 struct Expression * exp;
398 } __attribute__ ((gcc_struct)) cast;
399 struct
400 {
401 struct Expression * cond;
402 struct __ecereNameSpace__ecere__sys__OldList * exp;
403 struct Expression * elseExp;
404 } __attribute__ ((gcc_struct)) cond;
405 struct
406 {
407 struct TypeName * typeName;
408 struct Expression * size;
409 } __attribute__ ((gcc_struct)) _new;
410 struct
411 {
412 struct TypeName * typeName;
413 struct Expression * size;
414 struct Expression * exp;
415 } __attribute__ ((gcc_struct)) _renew;
416 struct
417 {
418 char * table;
419 struct Identifier * id;
420 } __attribute__ ((gcc_struct)) db;
421 struct
422 {
423 struct Expression * ds;
424 struct Expression * name;
425 } __attribute__ ((gcc_struct)) dbopen;
426 struct
427 {
428 struct TypeName * typeName;
429 struct Initializer * initializer;
430 } __attribute__ ((gcc_struct)) initializer;
431 struct
432 {
433 struct Expression * exp;
434 struct TypeName * typeName;
435 } __attribute__ ((gcc_struct)) vaArg;
436 } __attribute__ ((gcc_struct));
437 unsigned int debugValue;
438 struct __ecereNameSpace__ecere__com__DataValue val;
439 uint64 address;
440 unsigned int hasAddress;
441 struct Type * expType;
442 struct Type * destType;
443 unsigned int usage;
444 int tempCount;
445 unsigned int byReference;
446 unsigned int isConstant;
447 unsigned int addedThis;
448 unsigned int needCast;
449 unsigned int thisPtr;
450 } __attribute__ ((gcc_struct));
451
452 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_TemplateDatatype;
453
454 struct TemplateDatatype;
455
456 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_TemplateArgument;
457
458 struct TemplateArgument;
459
460 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_TemplateParameter;
461
462 struct TemplateParameter;
463
464 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Specifier;
465
466 struct Specifier
467 {
468 struct Specifier * prev;
469 struct Specifier * next;
470 struct Location loc;
471 int type;
472 union
473 {
474 int specifier;
475 struct
476 {
477 struct ExtDecl * extDecl;
478 char *  name;
479 struct Symbol * symbol;
480 struct __ecereNameSpace__ecere__sys__OldList *  templateArgs;
481 } __attribute__ ((gcc_struct));
482 struct
483 {
484 struct Identifier * id;
485 struct __ecereNameSpace__ecere__sys__OldList *  list;
486 struct __ecereNameSpace__ecere__sys__OldList *  baseSpecs;
487 struct __ecereNameSpace__ecere__sys__OldList *  definitions;
488 unsigned int addNameSpace;
489 struct Context * ctx;
490 struct ExtDecl * extDeclStruct;
491 } __attribute__ ((gcc_struct));
492 struct Expression * expression;
493 struct Specifier * _class;
494 struct TemplateParameter * templateParameter;
495 } __attribute__ ((gcc_struct));
496 } __attribute__ ((gcc_struct));
497
498 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Identifier;
499
500 struct Identifier
501 {
502 struct Identifier * prev;
503 struct Identifier * next;
504 struct Location loc;
505 struct Symbol * classSym;
506 struct Specifier * _class;
507 char *  string;
508 struct Identifier * badID;
509 } __attribute__ ((gcc_struct));
510
511 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Pointer;
512
513 struct Pointer
514 {
515 struct Pointer * prev;
516 struct Pointer * next;
517 struct Location loc;
518 struct __ecereNameSpace__ecere__sys__OldList *  qualifiers;
519 struct Pointer * pointer;
520 } __attribute__ ((gcc_struct));
521
522 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Declarator;
523
524 struct Declarator
525 {
526 struct Declarator * prev;
527 struct Declarator * next;
528 struct Location loc;
529 int type;
530 struct Symbol * symbol;
531 struct Declarator * declarator;
532 union
533 {
534 struct Identifier * identifier;
535 struct
536 {
537 struct Expression * exp;
538 struct Expression * posExp;
539 struct Attrib * attrib;
540 } __attribute__ ((gcc_struct)) structDecl;
541 struct
542 {
543 struct Expression * exp;
544 struct Specifier * enumClass;
545 } __attribute__ ((gcc_struct)) array;
546 struct
547 {
548 struct __ecereNameSpace__ecere__sys__OldList * parameters;
549 } __attribute__ ((gcc_struct)) function;
550 struct
551 {
552 struct Pointer * pointer;
553 } __attribute__ ((gcc_struct)) pointer;
554 struct
555 {
556 struct ExtDecl * extended;
557 } __attribute__ ((gcc_struct)) extended;
558 } __attribute__ ((gcc_struct));
559 } __attribute__ ((gcc_struct));
560
561 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_FunctionDefinition;
562
563 struct FunctionDefinition;
564
565 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_DBTableDef;
566
567 struct DBTableDef;
568
569 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_External;
570
571 struct External;
572
573 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_ModuleImport;
574
575 struct ModuleImport;
576
577 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_ClassImport;
578
579 struct ClassImport;
580
581 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Symbol;
582
583 struct Symbol;
584
585 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Type;
586
587 struct Type
588 {
589 struct Type * prev;
590 struct Type * next;
591 int refCount;
592 union
593 {
594 struct Symbol * _class;
595 struct
596 {
597 struct __ecereNameSpace__ecere__sys__OldList members;
598 char *  enumName;
599 } __attribute__ ((gcc_struct));
600 struct
601 {
602 struct Type * returnType;
603 struct __ecereNameSpace__ecere__sys__OldList params;
604 struct Symbol * thisClass;
605 unsigned int staticMethod;
606 struct TemplateParameter * thisClassTemplate;
607 } __attribute__ ((gcc_struct));
608 struct
609 {
610 struct __ecereNameSpace__ecere__com__Method * method;
611 struct __ecereNameSpace__ecere__com__Class * methodClass;
612 struct __ecereNameSpace__ecere__com__Class * usedClass;
613 } __attribute__ ((gcc_struct));
614 struct
615 {
616 struct Type * arrayType;
617 int arraySize;
618 struct Expression * arraySizeExp;
619 unsigned int freeExp;
620 struct Symbol * enumClass;
621 } __attribute__ ((gcc_struct));
622 struct Type * type;
623 struct TemplateParameter * templateParameter;
624 } __attribute__ ((gcc_struct));
625 unsigned int isSigned;
626 int kind;
627 unsigned int constant;
628 unsigned int size;
629 char *  name;
630 char *  typeName;
631 unsigned int count;
632 unsigned int truth;
633 int classObjectType;
634 unsigned int byReference;
635 unsigned int extraParam;
636 int alignment;
637 unsigned int directClassAccess;
638 unsigned int computing;
639 unsigned int dllExport;
640 unsigned int offset;
641 unsigned int keepCast;
642 unsigned int passAsTemplate;
643 int bitFieldCount;
644 } __attribute__ ((gcc_struct));
645
646 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__Class;
647
648 struct __ecereNameSpace__ecere__com__Class
649 {
650 struct __ecereNameSpace__ecere__com__Class * prev;
651 struct __ecereNameSpace__ecere__com__Class * next;
652 char *  name;
653 int offset;
654 int structSize;
655 int (* *  _vTbl)();
656 int vTblSize;
657 int (*  Constructor)(struct __ecereNameSpace__ecere__com__Instance *);
658 void (*  Destructor)(struct __ecereNameSpace__ecere__com__Instance *);
659 int offsetClass;
660 int sizeClass;
661 struct __ecereNameSpace__ecere__com__Class * base;
662 struct __ecereNameSpace__ecere__sys__BinaryTree methods;
663 struct __ecereNameSpace__ecere__sys__BinaryTree members;
664 struct __ecereNameSpace__ecere__sys__BinaryTree prop;
665 struct __ecereNameSpace__ecere__sys__OldList membersAndProperties;
666 struct __ecereNameSpace__ecere__sys__BinaryTree classProperties;
667 struct __ecereNameSpace__ecere__sys__OldList derivatives;
668 int memberID;
669 int startMemberID;
670 int type;
671 struct __ecereNameSpace__ecere__com__Instance * module;
672 struct __ecereNameSpace__ecere__com__NameSpace *  nameSpace;
673 char *  dataTypeString;
674 struct Type * dataType;
675 int typeSize;
676 int defaultAlignment;
677 void (*  Initialize)();
678 int memberOffset;
679 struct __ecereNameSpace__ecere__sys__OldList selfWatchers;
680 char *  designerClass;
681 unsigned int noExpansion;
682 char *  defaultProperty;
683 unsigned int comRedefinition;
684 int count;
685 unsigned int isRemote;
686 unsigned int internalDecl;
687 void *  data;
688 unsigned int computeSize;
689 int structAlignment;
690 int destructionWatchOffset;
691 unsigned int fixed;
692 struct __ecereNameSpace__ecere__sys__OldList delayedCPValues;
693 int inheritanceAccess;
694 char *  fullName;
695 void *  symbol;
696 struct __ecereNameSpace__ecere__sys__OldList conversions;
697 struct __ecereNameSpace__ecere__sys__OldList templateParams;
698 struct __ecereNameSpace__ecere__com__ClassTemplateArgument *  templateArgs;
699 struct __ecereNameSpace__ecere__com__Class * templateClass;
700 struct __ecereNameSpace__ecere__sys__OldList templatized;
701 int numParams;
702 } __attribute__ ((gcc_struct));
703
704 extern long long __ecereNameSpace__ecere__com__eClass_GetProperty(struct __ecereNameSpace__ecere__com__Class * _class, char *  name);
705
706 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__Instance;
707
708 struct __ecereNameSpace__ecere__com__Instance
709 {
710 int (* *  _vTbl)();
711 struct __ecereNameSpace__ecere__com__Class * _class;
712 int _refCount;
713 } __attribute__ ((gcc_struct));
714
715 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__DataMember;
716
717 struct __ecereNameSpace__ecere__com__DataMember
718 {
719 struct __ecereNameSpace__ecere__com__DataMember * prev;
720 struct __ecereNameSpace__ecere__com__DataMember * next;
721 char *  name;
722 unsigned int isProperty;
723 int memberAccess;
724 int id;
725 struct __ecereNameSpace__ecere__com__Class * _class;
726 char *  dataTypeString;
727 struct __ecereNameSpace__ecere__com__Class * dataTypeClass;
728 struct Type * dataType;
729 int type;
730 int offset;
731 int memberID;
732 struct __ecereNameSpace__ecere__sys__OldList members;
733 struct __ecereNameSpace__ecere__sys__BinaryTree membersAlpha;
734 int memberOffset;
735 int structAlignment;
736 } __attribute__ ((gcc_struct));
737
738 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__SerialBuffer;
739
740 struct __ecereNameSpace__ecere__com__SerialBuffer
741 {
742 unsigned char *  _buffer;
743 unsigned int count;
744 unsigned int _size;
745 unsigned int pos;
746 } __attribute__ ((gcc_struct));
747
748 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__ClassTemplateArgument;
749
750 struct __ecereNameSpace__ecere__com__ClassTemplateArgument
751 {
752 union
753 {
754 struct
755 {
756 char *  dataTypeString;
757 struct __ecereNameSpace__ecere__com__Class * dataTypeClass;
758 } __attribute__ ((gcc_struct));
759 struct __ecereNameSpace__ecere__com__DataValue expression;
760 struct
761 {
762 char *  memberString;
763 union
764 {
765 struct __ecereNameSpace__ecere__com__DataMember * member;
766 struct __ecereNameSpace__ecere__com__Property * prop;
767 struct __ecereNameSpace__ecere__com__Method * method;
768 } __attribute__ ((gcc_struct));
769 } __attribute__ ((gcc_struct));
770 } __attribute__ ((gcc_struct));
771 } __attribute__ ((gcc_struct));
772
773 extern struct Identifier * MkIdentifier(char *  string);
774
775 struct Specifier * CopySpecifier(struct Specifier * spec);
776
777 struct Identifier * CopyIdentifier(struct Identifier * id)
778 {
779 if(id)
780 {
781 struct Identifier * copy = MkIdentifier(id->string);
782
783 copy->_class = id->_class ? CopySpecifier(id->_class) : (((void *)0));
784 copy->classSym = id->classSym;
785 return copy;
786 }
787 return (((void *)0));
788 }
789
790 extern struct __ecereNameSpace__ecere__sys__OldList *  MkList(void);
791
792 extern void ListAdd(struct __ecereNameSpace__ecere__sys__OldList * list, void *  item);
793
794 extern struct Pointer * MkPointer(struct __ecereNameSpace__ecere__sys__OldList * qualifiers, struct Pointer * pointer);
795
796 static struct Pointer * CopyPointer(struct Pointer * ptr)
797 {
798 if(ptr)
799 {
800 struct __ecereNameSpace__ecere__sys__OldList * list = MkList();
801 struct Specifier * spec;
802
803 if(ptr->qualifiers)
804 {
805 for(spec = (*ptr->qualifiers).first; spec; spec = spec->next)
806 ListAdd(list, CopySpecifier(spec));
807 }
808 return MkPointer(list, CopyPointer(ptr->pointer));
809 }
810 return (((void *)0));
811 }
812
813 extern struct Initializer * MkInitializerAssignment(struct Expression * exp);
814
815 struct Expression * CopyExpression(struct Expression * exp);
816
817 extern struct Initializer * MkInitializerList(struct __ecereNameSpace__ecere__sys__OldList * list);
818
819 struct __ecereNameSpace__ecere__sys__OldList *  CopyList(struct __ecereNameSpace__ecere__sys__OldList *  source, void *  (*  CopyFunction)(void * ));
820
821 static struct Initializer * CopyInitializer(struct Initializer * initializer)
822 {
823 struct Initializer * copy = (((void *)0));
824
825 ;
826 if(initializer->type == 0)
827 copy = MkInitializerAssignment(CopyExpression(initializer->exp));
828 else if(initializer->type == 1)
829 copy = MkInitializerList(CopyList(initializer->list, CopyInitializer));
830 if(copy)
831 {
832 copy->loc = initializer->loc;
833 copy->isConstant = initializer->isConstant;
834 }
835 return copy;
836 }
837
838 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_MemberInit;
839
840 struct MemberInit
841 {
842 struct MemberInit * prev;
843 struct MemberInit * next;
844 struct Location loc;
845 struct Location realLoc;
846 struct __ecereNameSpace__ecere__sys__OldList *  identifiers;
847 struct Initializer * initializer;
848 unsigned int used;
849 unsigned int variable;
850 unsigned int takeOutExp;
851 } __attribute__ ((gcc_struct));
852
853 extern struct MemberInit * MkMemberInit(struct __ecereNameSpace__ecere__sys__OldList * ids, struct Initializer * initializer);
854
855 static struct MemberInit * CopyMemberInit(struct MemberInit * member)
856 {
857 return MkMemberInit(CopyList(member->identifiers, CopyIdentifier), CopyInitializer(member->initializer));
858 }
859
860 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_ClassFunction;
861
862 struct ClassFunction;
863
864 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_MembersInit;
865
866 struct MembersInit
867 {
868 struct MembersInit * prev;
869 struct MembersInit * next;
870 struct Location loc;
871 int type;
872 union
873 {
874 struct __ecereNameSpace__ecere__sys__OldList *  dataMembers;
875 struct ClassFunction * function;
876 } __attribute__ ((gcc_struct));
877 } __attribute__ ((gcc_struct));
878
879 extern struct MembersInit * MkMembersInitList(struct __ecereNameSpace__ecere__sys__OldList * dataMembers);
880
881 static struct MembersInit * CopyMembersInit(struct MembersInit * members)
882 {
883 struct __ecereNameSpace__ecere__sys__OldList * list = (((void *)0));
884
885 switch(members->type)
886 {
887 case 0:
888 {
889 if(members)
890 {
891 struct MemberInit * member;
892
893 list = MkList();
894 for(member = (*members->dataMembers).first; member; member = member->next)
895 ListAdd(list, CopyMemberInit(member));
896 }
897 }
898 }
899 return MkMembersInitList(list);
900 }
901
902 extern struct Instantiation * MkInstantiation(struct Specifier * _class, struct Expression * exp, struct __ecereNameSpace__ecere__sys__OldList * members);
903
904 static struct Instantiation * CopyInstantiation(struct Instantiation * inst)
905 {
906 struct Instantiation * copy;
907 struct __ecereNameSpace__ecere__sys__OldList * list = MkList();
908 struct MembersInit * member;
909
910 if(inst->members)
911 {
912 for(member = (*inst->members).first; member; member = member->next)
913 ListAdd(list, CopyMembersInit(member));
914 }
915 copy = MkInstantiation(CopySpecifier(inst->_class), CopyExpression(inst->exp), list);
916 copy->data = inst->data;
917 copy->loc = inst->loc;
918 copy->isConstant = inst->isConstant;
919 return copy;
920 }
921
922 extern struct Expression * MkExpDummy(void);
923
924 extern struct Expression * MkExpIdentifier(struct Identifier * id);
925
926 extern struct Expression * MkExpInstance(struct Instantiation * inst);
927
928 extern struct Expression * MkExpConstant(char *  string);
929
930 extern struct Expression * MkExpString(char *  string);
931
932 extern struct Expression * MkExpOp(struct Expression * exp1, int op, struct Expression * exp2);
933
934 extern struct Expression * MkExpBrackets(struct __ecereNameSpace__ecere__sys__OldList * expressions);
935
936 extern struct Expression * MkExpIndex(struct Expression * expression, struct __ecereNameSpace__ecere__sys__OldList * index);
937
938 extern struct Expression * MkExpCall(struct Expression * expression, struct __ecereNameSpace__ecere__sys__OldList * arguments);
939
940 extern struct Expression * MkExpMember(struct Expression * expression, struct Identifier * member);
941
942 extern struct Expression * MkExpPointer(struct Expression * expression, struct Identifier * member);
943
944 extern struct Expression * MkExpTypeSize(struct TypeName * typeName);
945
946 struct TypeName * CopyTypeName(struct TypeName * typeName);
947
948 extern struct Expression * MkExpTypeAlign(struct TypeName * typeName);
949
950 extern struct Expression * MkExpCast(struct TypeName * typeName, struct Expression * expression);
951
952 extern struct Expression * MkExpCondition(struct Expression * cond, struct __ecereNameSpace__ecere__sys__OldList * expressions, struct Expression * elseExp);
953
954 extern struct Expression * MkExpVaArg(struct Expression * exp, struct TypeName * type);
955
956 extern struct Expression * MkExpExtensionCompound(struct Statement * compound);
957
958 static struct Statement * CopyStatement(struct Statement * stmt);
959
960 struct Expression * CopyExpression(struct Expression * exp)
961 {
962 struct Expression * result = (((void *)0));
963
964 if(exp)
965 switch(exp->type)
966 {
967 case 16:
968 result = MkExpDummy();
969 break;
970 case 0:
971 result = MkExpIdentifier(CopyIdentifier(exp->identifier));
972 break;
973 case 1:
974 result = MkExpInstance(CopyInstantiation(exp->instance));
975 break;
976 case 2:
977 result = MkExpConstant(exp->string);
978 break;
979 case 3:
980 result = MkExpString(exp->string);
981 break;
982 case 4:
983 result = MkExpOp(CopyExpression(exp->op.exp1), exp->op.op, CopyExpression(exp->op.exp2));
984 break;
985 case 5:
986 {
987 struct __ecereNameSpace__ecere__sys__OldList * list = MkList();
988 struct Expression * e;
989
990 for(e = (*exp->list).first; e; e = e->next)
991 ListAdd(list, CopyExpression(e));
992 result = MkExpBrackets(list);
993 break;
994 }
995 case 6:
996 {
997 struct __ecereNameSpace__ecere__sys__OldList * list = MkList();
998 struct Expression * e;
999
1000 for(e = (*exp->index.index).first; e; e = e->next)
1001 ListAdd(list, CopyExpression(e));
1002 result = MkExpIndex(CopyExpression(exp->index.exp), list);
1003 break;
1004 }
1005 case 7:
1006 {
1007 struct __ecereNameSpace__ecere__sys__OldList * list = MkList();
1008 struct Expression * arg;
1009
1010 if(exp->call.arguments)
1011 {
1012 for(arg = (*exp->call.arguments).first; arg; arg = arg->next)
1013 ListAdd(list, CopyExpression(arg));
1014 }
1015 result = MkExpCall(CopyExpression(exp->call.exp), list);
1016 break;
1017 }
1018 case 8:
1019 result = MkExpMember(CopyExpression(exp->member.exp), CopyIdentifier(exp->member.member));
1020 result->member.memberType = exp->member.memberType;
1021 result->member.thisPtr = exp->member.thisPtr;
1022 break;
1023 case 9:
1024 result = MkExpPointer(CopyExpression(exp->member.exp), CopyIdentifier(exp->member.member));
1025 break;
1026 case 10:
1027 result = MkExpTypeSize(CopyTypeName(exp->typeName));
1028 break;
1029 case 38:
1030 result = MkExpTypeAlign(CopyTypeName(exp->typeName));
1031 break;
1032 case 11:
1033 result = MkExpCast(CopyTypeName(exp->cast.typeName), CopyExpression(exp->cast.exp));
1034 break;
1035 case 12:
1036 {
1037 struct __ecereNameSpace__ecere__sys__OldList * list = MkList();
1038 struct Expression * e;
1039
1040 for(e = (*exp->cond.exp).first; e; e = e->next)
1041 ListAdd(list, CopyExpression(e));
1042 result = MkExpCondition(CopyExpression(exp->cond.cond), list, CopyExpression(exp->cond.elseExp));
1043 break;
1044 }
1045 case 36:
1046 result = MkExpVaArg(CopyExpression(exp->vaArg.exp), CopyTypeName(exp->vaArg.typeName));
1047 break;
1048 case 25:
1049 result = MkExpExtensionCompound(CopyStatement(exp->compound));
1050 break;
1051 }
1052 if(result)
1053 {
1054 result->expType = exp->expType;
1055 if(exp->expType)
1056 exp->expType->refCount++;
1057 result->destType = exp->destType;
1058 if(exp->destType)
1059 exp->destType->refCount++;
1060 result->loc = exp->loc;
1061 result->isConstant = exp->isConstant;
1062 result->byReference = exp->byReference;
1063 }
1064 return result;
1065 }
1066
1067 extern struct Statement * MkCompoundStmt(struct __ecereNameSpace__ecere__sys__OldList * declarations, struct __ecereNameSpace__ecere__sys__OldList * statements);
1068
1069 struct Declaration * CopyDeclaration(struct Declaration * decl);
1070
1071 extern struct Statement * MkExpressionStmt(struct __ecereNameSpace__ecere__sys__OldList * expressions);
1072
1073 extern void *  __ecereNameSpace__ecere__com__eInstance_New(struct __ecereNameSpace__ecere__com__Class * _class);
1074
1075 static struct Statement * CopyStatement(struct Statement * stmt)
1076 {
1077 struct Statement * result = (((void *)0));
1078
1079 if(stmt)
1080 {
1081 switch(stmt->type)
1082 {
1083 case 2:
1084 result = MkCompoundStmt(CopyList(stmt->compound.declarations, CopyDeclaration), CopyList(stmt->compound.statements, CopyStatement));
1085 result->compound.context = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Context);
1086 break;
1087 case 3:
1088 result = MkExpressionStmt(CopyList(stmt->expressions, CopyExpression));
1089 break;
1090 }
1091 }
1092 if(result)
1093 {
1094 result->loc = stmt->loc;
1095 }
1096 return result;
1097 }
1098
1099 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Enumerator;
1100
1101 struct Enumerator
1102 {
1103 struct Enumerator * prev;
1104 struct Enumerator * next;
1105 struct Location loc;
1106 struct Identifier * id;
1107 struct Expression * exp;
1108 } __attribute__ ((gcc_struct));
1109
1110 extern struct Enumerator * MkEnumerator(struct Identifier * id, struct Expression * exp);
1111
1112 static struct Enumerator * CopyEnumerator(struct Enumerator * enumerator)
1113 {
1114 return MkEnumerator(CopyIdentifier(enumerator->id), CopyExpression(enumerator->exp));
1115 }
1116
1117 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_PropertyDef;
1118
1119 struct PropertyDef;
1120
1121 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_PropertyWatch;
1122
1123 struct PropertyWatch;
1124
1125 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_ClassDef;
1126
1127 struct ClassDef
1128 {
1129 struct ClassDef * prev;
1130 struct ClassDef * next;
1131 struct Location loc;
1132 int type;
1133 union
1134 {
1135 struct Declaration * decl;
1136 struct ClassFunction * function;
1137 struct __ecereNameSpace__ecere__sys__OldList *  defProperties;
1138 struct PropertyDef * propertyDef;
1139 struct PropertyWatch * propertyWatch;
1140 char *  designer;
1141 struct Identifier * defaultProperty;
1142 struct
1143 {
1144 struct Identifier * id;
1145 struct Initializer * initializer;
1146 } __attribute__ ((gcc_struct));
1147 } __attribute__ ((gcc_struct));
1148 int memberAccess;
1149 void *  object;
1150 } __attribute__ ((gcc_struct));
1151
1152 extern struct ClassDef * MkClassDefDeclaration(struct Declaration * decl);
1153
1154 struct ClassDef * CopyClassDef(struct ClassDef * def)
1155 {
1156 switch(def->type)
1157 {
1158 case 0:
1159 return (((void *)0));
1160 case 1:
1161 return (((void *)0));
1162 case 2:
1163 return MkClassDefDeclaration(CopyDeclaration(def->decl));
1164 case 3:
1165 return (((void *)0));
1166 }
1167 return (((void *)0));
1168 }
1169
1170 extern struct Specifier * MkSpecifier(int specifier);
1171
1172 extern struct Specifier * MkEnum(struct Identifier * id, struct __ecereNameSpace__ecere__sys__OldList * list);
1173
1174 extern struct Specifier * MkStructOrUnion(int type, struct Identifier * id, struct __ecereNameSpace__ecere__sys__OldList * definitions);
1175
1176 struct ExtDecl * CopyExtDecl(struct ExtDecl * extDecl);
1177
1178 extern char *  __ecereNameSpace__ecere__sys__CopyString(char *  string);
1179
1180 extern struct Specifier * MkSpecifierSubClass(struct Specifier * _class);
1181
1182 extern struct Specifier * MkSpecifierExtended(struct ExtDecl * extDecl);
1183
1184 struct Specifier * CopySpecifier(struct Specifier * spec)
1185 {
1186 if(spec)
1187 switch(spec->type)
1188 {
1189 case 0:
1190 return MkSpecifier(spec->specifier);
1191 case 2:
1192 {
1193 struct Identifier * id = CopyIdentifier(spec->id);
1194 struct __ecereNameSpace__ecere__sys__OldList * list = MkList();
1195 struct Enumerator * enumerator;
1196
1197 if(spec->list)
1198 {
1199 for(enumerator = (*spec->list).first; enumerator; enumerator = enumerator->next)
1200 ListAdd(list, CopyEnumerator(enumerator));
1201 }
1202 return MkEnum(id, list);
1203 }
1204 case 3:
1205 case 4:
1206 {
1207 struct Identifier * id = CopyIdentifier(spec->id);
1208 struct __ecereNameSpace__ecere__sys__OldList * list = (((void *)0));
1209 struct ClassDef * def;
1210 struct Specifier * s;
1211
1212 if(spec->definitions)
1213 {
1214 list = MkList();
1215 if(spec->list)
1216 {
1217 for(def = (*spec->list).first; def; def = def->next)
1218 ListAdd(list, CopyClassDef(def));
1219 }
1220 }
1221 s = MkStructOrUnion(spec->type, id, list);
1222 s->extDeclStruct = CopyExtDecl(spec->extDeclStruct);
1223 return s;
1224 }
1225 case 1:
1226 {
1227 struct Specifier * copy = (copy = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Specifier), copy->type = 1, copy->name = __ecereNameSpace__ecere__sys__CopyString(spec->name), copy->symbol = spec->symbol, copy->templateArgs = (((void *)0)), copy);
1228
1229 return copy;
1230 }
1231 case 7:
1232 return MkSpecifierSubClass(CopySpecifier(spec->_class));
1233 case 8:
1234 return __extension__ ({
1235 struct Specifier * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Specifier);
1236
1237 __ecereInstance1->loc = spec->loc, __ecereInstance1->type = 8, __ecereInstance1->templateParameter = spec->templateParameter, __ecereInstance1;
1238 });
1239 case 5:
1240 return MkSpecifierExtended(CopyExtDecl(spec->extDecl));
1241 }
1242 return (((void *)0));
1243 }
1244
1245 extern struct TypeName * MkTypeName(struct __ecereNameSpace__ecere__sys__OldList * qualifiers, struct Declarator * declarator);
1246
1247 struct Declarator * CopyDeclarator(struct Declarator * declarator);
1248
1249 struct TypeName * CopyTypeName(struct TypeName * typeName)
1250 {
1251 struct __ecereNameSpace__ecere__sys__OldList * list = (((void *)0));
1252 struct TypeName * copy;
1253
1254 if(typeName->qualifiers)
1255 {
1256 struct Specifier * spec;
1257
1258 list = MkList();
1259 for(spec = (*typeName->qualifiers).first; spec; spec = spec->next)
1260 ListAdd(list, CopySpecifier(spec));
1261 }
1262 copy = MkTypeName(list, CopyDeclarator(typeName->declarator));
1263 copy->classObjectType = typeName->classObjectType;
1264 return copy;
1265 }
1266
1267 extern struct ExtDecl * MkExtDeclAttrib(struct Attrib * attr);
1268
1269 struct Attrib * CopyAttrib(struct Attrib * attrib);
1270
1271 extern struct ExtDecl * MkExtDeclString(char * s);
1272
1273 struct ExtDecl * CopyExtDecl(struct ExtDecl * extDecl)
1274 {
1275 if(extDecl)
1276 {
1277 if(extDecl->type == 1)
1278 return MkExtDeclAttrib(CopyAttrib(extDecl->attr));
1279 else if(extDecl->type == 0)
1280 return MkExtDeclString(__ecereNameSpace__ecere__sys__CopyString(extDecl->s));
1281 }
1282 return (((void *)0));
1283 }
1284
1285 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Attribute;
1286
1287 struct Attribute
1288 {
1289 struct Attribute * prev;
1290 struct Attribute * next;
1291 struct Location loc;
1292 char * attr;
1293 struct Expression * exp;
1294 } __attribute__ ((gcc_struct));
1295
1296 extern struct Attribute * MkAttribute(char * attr, struct Expression * exp);
1297
1298 struct Attribute * CopyAttribute(struct Attribute * attrib)
1299 {
1300 if(attrib)
1301 return MkAttribute(__ecereNameSpace__ecere__sys__CopyString(attrib->attr), CopyExpression(attrib->exp));
1302 return (((void *)0));
1303 }
1304
1305 extern struct Attrib * MkAttrib(int type, struct __ecereNameSpace__ecere__sys__OldList *  attribs);
1306
1307 struct Attrib * CopyAttrib(struct Attrib * attrib)
1308 {
1309 if(attrib)
1310 return MkAttrib(attrib->type, CopyList(attrib->attribs, CopyAttribute));
1311 return (((void *)0));
1312 }
1313
1314 extern struct Declarator * MkStructDeclarator(struct Declarator * declarator, struct Expression * exp);
1315
1316 extern struct Declarator * MkDeclaratorIdentifier(struct Identifier * id);
1317
1318 extern struct Declarator * MkDeclaratorBrackets(struct Declarator * declarator);
1319
1320 extern struct Declarator * MkDeclaratorEnumArray(struct Declarator * declarator, struct Specifier * _class);
1321
1322 extern struct Declarator * MkDeclaratorArray(struct Declarator * declarator, struct Expression * exp);
1323
1324 extern struct Declarator * MkDeclaratorFunction(struct Declarator * declarator, struct __ecereNameSpace__ecere__sys__OldList * parameters);
1325
1326 extern struct Declarator * MkDeclaratorPointer(struct Pointer * pointer, struct Declarator * declarator);
1327
1328 extern struct Declarator * MkDeclaratorExtended(struct ExtDecl * extended, struct Declarator * declarator);
1329
1330 extern struct Declarator * MkDeclaratorExtendedEnd(struct ExtDecl * extended, struct Declarator * declarator);
1331
1332 struct Declarator * CopyDeclarator(struct Declarator * declarator)
1333 {
1334 if(declarator)
1335 {
1336 switch(declarator->type)
1337 {
1338 case 0:
1339 {
1340 struct Declarator * decl = MkStructDeclarator(CopyDeclarator(declarator->declarator), CopyExpression(declarator->structDecl.exp));
1341
1342 if(declarator->structDecl.attrib)
1343 decl->structDecl.attrib = CopyAttrib(declarator->structDecl.attrib);
1344 return decl;
1345 }
1346 case 1:
1347 return MkDeclaratorIdentifier(CopyIdentifier(declarator->identifier));
1348 case 2:
1349 return MkDeclaratorBrackets(CopyDeclarator(declarator->declarator));
1350 case 3:
1351 if(declarator->array.enumClass)
1352 return MkDeclaratorEnumArray(CopyDeclarator(declarator->declarator), CopySpecifier(declarator->array.enumClass));
1353 else
1354 return MkDeclaratorArray(CopyDeclarator(declarator->declarator), CopyExpression(declarator->array.exp));
1355 case 4:
1356 {
1357 struct __ecereNameSpace__ecere__sys__OldList * parameters = MkList();
1358 struct TypeName * param;
1359
1360 if(declarator->function.parameters)
1361 {
1362 for(param = (*declarator->function.parameters).first; param; param = param->next)
1363 ListAdd(parameters, CopyTypeName(param));
1364 }
1365 return MkDeclaratorFunction(CopyDeclarator(declarator->declarator), parameters);
1366 }
1367 case 5:
1368 return MkDeclaratorPointer(CopyPointer(declarator->pointer.pointer), CopyDeclarator(declarator->declarator));
1369 case 6:
1370 return MkDeclaratorExtended(CopyExtDecl(declarator->extended.extended), CopyDeclarator(declarator->declarator));
1371 case 7:
1372 return MkDeclaratorExtendedEnd(CopyExtDecl(declarator->extended.extended), CopyDeclarator(declarator->declarator));
1373 }
1374 }
1375 return (((void *)0));
1376 }
1377
1378 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_InitDeclarator;
1379
1380 struct InitDeclarator
1381 {
1382 struct InitDeclarator * prev;
1383 struct InitDeclarator * next;
1384 struct Location loc;
1385 struct Declarator * declarator;
1386 struct Initializer * initializer;
1387 } __attribute__ ((gcc_struct));
1388
1389 extern struct InitDeclarator * MkInitDeclarator(struct Declarator * declarator, struct Initializer * initializer);
1390
1391 struct InitDeclarator * CopyInitDeclarator(struct InitDeclarator * initDecl)
1392 {
1393 return MkInitDeclarator(CopyDeclarator(initDecl->declarator), CopyInitializer(initDecl->initializer));
1394 }
1395
1396 extern struct Declaration * MkDeclaration(struct __ecereNameSpace__ecere__sys__OldList * specifiers, struct __ecereNameSpace__ecere__sys__OldList * initDeclarators);
1397
1398 struct Declaration * CopyDeclaration(struct Declaration * decl)
1399 {
1400 if(decl->type == 1)
1401 {
1402 return MkDeclaration(CopyList(decl->specifiers, CopySpecifier), CopyList(decl->declarators, CopyInitDeclarator));
1403 }
1404 else
1405 {
1406 struct __ecereNameSpace__ecere__sys__OldList * specifiers = MkList(), * declarators = MkList();
1407 struct Specifier * spec;
1408 struct Declarator * declarator;
1409
1410 for(spec = (*decl->specifiers).first; spec; spec = spec->next)
1411 ListAdd(specifiers, CopySpecifier(spec));
1412 if(decl->declarators)
1413 {
1414 for(declarator = (*decl->declarators).first; declarator; declarator = declarator->next)
1415 ListAdd(declarators, CopyDeclarator(declarator));
1416 }
1417 return MkDeclaration(specifiers, declarators);
1418 }
1419 }
1420
1421 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__sys__Item;
1422
1423 struct __ecereNameSpace__ecere__sys__Item
1424 {
1425 struct __ecereNameSpace__ecere__sys__Item * prev;
1426 struct __ecereNameSpace__ecere__sys__Item * next;
1427 } __attribute__ ((gcc_struct));
1428
1429 struct __ecereNameSpace__ecere__sys__OldList * CopyList(struct __ecereNameSpace__ecere__sys__OldList * source, void * (* CopyFunction)(void *))
1430 {
1431 struct __ecereNameSpace__ecere__sys__OldList * list = (((void *)0));
1432
1433 if(source)
1434 {
1435 struct __ecereNameSpace__ecere__sys__Item * item;
1436
1437 list = MkList();
1438 for(item = (*source).first; item; item = item->next)
1439 ListAdd(list, CopyFunction(item));
1440 }
1441 return list;
1442 }
1443
1444 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__GlobalFunction;
1445
1446 struct __ecereNameSpace__ecere__com__GlobalFunction;
1447
1448 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);
1449
1450 void __ecereRegisterModule_copy(struct __ecereNameSpace__ecere__com__Instance * module)
1451 {
1452 struct __ecereNameSpace__ecere__com__Class * class;
1453
1454 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("CopyIdentifier", "Identifier CopyIdentifier(Identifier id)", CopyIdentifier, module, 2);
1455 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("CopyExpression", "Expression CopyExpression(Expression exp)", CopyExpression, module, 1);
1456 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("CopyClassDef", "ClassDef CopyClassDef(ClassDef def)", CopyClassDef, module, 2);
1457 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("CopySpecifier", "Specifier CopySpecifier(Specifier spec)", CopySpecifier, module, 2);
1458 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("CopyTypeName", "TypeName CopyTypeName(TypeName typeName)", CopyTypeName, module, 2);
1459 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("CopyExtDecl", "ExtDecl CopyExtDecl(ExtDecl extDecl)", CopyExtDecl, module, 2);
1460 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("CopyAttribute", "Attribute CopyAttribute(Attribute attrib)", CopyAttribute, module, 2);
1461 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("CopyAttrib", "Attrib CopyAttrib(Attrib attrib)", CopyAttrib, module, 2);
1462 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("CopyDeclarator", "Declarator CopyDeclarator(Declarator declarator)", CopyDeclarator, module, 2);
1463 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("CopyInitDeclarator", "InitDeclarator CopyInitDeclarator(InitDeclarator initDecl)", CopyInitDeclarator, module, 2);
1464 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("CopyDeclaration", "Declaration CopyDeclaration(Declaration decl)", CopyDeclaration, module, 2);
1465 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("CopyList", "ecere::sys::OldList * CopyList(ecere::sys::OldList * source, void *( *)(void *))", CopyList, module, 2);
1466 }
1467
1468 void __ecereUnregisterModule_copy(struct __ecereNameSpace__ecere__com__Instance * module)
1469 {
1470
1471 }
1472