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