compiler/libec: Recognizing wide strings (L"text") distinctly
[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 unsigned int wideString;
375 } __attribute__ ((gcc_struct)) __anon2;
376 struct __ecereNameSpace__ecere__sys__OldList *  list;
377 struct
378 {
379 struct __ecereNameSpace__ecere__sys__OldList * specifiers;
380 struct Declarator * decl;
381 } __attribute__ ((gcc_struct)) _classExp;
382 struct
383 {
384 struct Identifier * id;
385 } __attribute__ ((gcc_struct)) classData;
386 struct
387 {
388 struct Expression * exp;
389 struct __ecereNameSpace__ecere__sys__OldList * arguments;
390 struct Location argLoc;
391 } __attribute__ ((gcc_struct)) call;
392 struct
393 {
394 struct Expression * exp;
395 struct __ecereNameSpace__ecere__sys__OldList * index;
396 } __attribute__ ((gcc_struct)) index;
397 struct
398 {
399 struct Expression * exp;
400 struct Identifier * member;
401 int memberType;
402 unsigned int thisPtr;
403 } __attribute__ ((gcc_struct)) member;
404 struct
405 {
406 int op;
407 struct Expression * exp1;
408 struct Expression * exp2;
409 } __attribute__ ((gcc_struct)) op;
410 struct TypeName * typeName;
411 struct Specifier * _class;
412 struct
413 {
414 struct TypeName * typeName;
415 struct Expression * exp;
416 } __attribute__ ((gcc_struct)) cast;
417 struct
418 {
419 struct Expression * cond;
420 struct __ecereNameSpace__ecere__sys__OldList * exp;
421 struct Expression * elseExp;
422 } __attribute__ ((gcc_struct)) cond;
423 struct
424 {
425 struct TypeName * typeName;
426 struct Expression * size;
427 } __attribute__ ((gcc_struct)) _new;
428 struct
429 {
430 struct TypeName * typeName;
431 struct Expression * size;
432 struct Expression * exp;
433 } __attribute__ ((gcc_struct)) _renew;
434 struct
435 {
436 char * table;
437 struct Identifier * id;
438 } __attribute__ ((gcc_struct)) db;
439 struct
440 {
441 struct Expression * ds;
442 struct Expression * name;
443 } __attribute__ ((gcc_struct)) dbopen;
444 struct
445 {
446 struct TypeName * typeName;
447 struct Initializer * initializer;
448 } __attribute__ ((gcc_struct)) initializer;
449 struct
450 {
451 struct Expression * exp;
452 struct TypeName * typeName;
453 } __attribute__ ((gcc_struct)) vaArg;
454 } __attribute__ ((gcc_struct)) __anon1;
455 unsigned int debugValue;
456 struct __ecereNameSpace__ecere__com__DataValue val;
457 uint64 address;
458 unsigned int hasAddress;
459 struct Type * expType;
460 struct Type * destType;
461 unsigned int usage;
462 int tempCount;
463 unsigned int byReference;
464 unsigned int isConstant;
465 unsigned int addedThis;
466 unsigned int needCast;
467 unsigned int thisPtr;
468 unsigned int opDestType;
469 unsigned int needTemplateCast;
470 } __attribute__ ((gcc_struct));
471
472 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_TemplateDatatype;
473
474 struct TemplateDatatype;
475
476 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_TemplateArgument;
477
478 struct TemplateArgument;
479
480 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_TemplateParameter;
481
482 struct TemplateParameter;
483
484 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Specifier;
485
486 struct Specifier
487 {
488 struct Specifier * prev;
489 struct Specifier * next;
490 struct Location loc;
491 int type;
492 union
493 {
494 int specifier;
495 struct
496 {
497 struct ExtDecl * extDecl;
498 char *  name;
499 struct Symbol * symbol;
500 struct __ecereNameSpace__ecere__sys__OldList *  templateArgs;
501 } __attribute__ ((gcc_struct)) __anon1;
502 struct
503 {
504 struct Identifier * id;
505 struct __ecereNameSpace__ecere__sys__OldList *  list;
506 struct __ecereNameSpace__ecere__sys__OldList *  baseSpecs;
507 struct __ecereNameSpace__ecere__sys__OldList *  definitions;
508 unsigned int addNameSpace;
509 struct Context * ctx;
510 struct ExtDecl * extDeclStruct;
511 } __attribute__ ((gcc_struct)) __anon2;
512 struct Expression * expression;
513 struct Specifier * _class;
514 struct TemplateParameter * templateParameter;
515 } __attribute__ ((gcc_struct)) __anon1;
516 } __attribute__ ((gcc_struct));
517
518 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Identifier;
519
520 struct Identifier
521 {
522 struct Identifier * prev;
523 struct Identifier * next;
524 struct Location loc;
525 struct Symbol * classSym;
526 struct Specifier * _class;
527 char *  string;
528 struct Identifier * badID;
529 } __attribute__ ((gcc_struct));
530
531 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Pointer;
532
533 struct Pointer
534 {
535 struct Pointer * prev;
536 struct Pointer * next;
537 struct Location loc;
538 struct __ecereNameSpace__ecere__sys__OldList *  qualifiers;
539 struct Pointer * pointer;
540 } __attribute__ ((gcc_struct));
541
542 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Declarator;
543
544 struct Declarator
545 {
546 struct Declarator * prev;
547 struct Declarator * next;
548 struct Location loc;
549 int type;
550 struct Symbol * symbol;
551 struct Declarator * declarator;
552 union
553 {
554 struct Identifier * identifier;
555 struct
556 {
557 struct Expression * exp;
558 struct Expression * posExp;
559 struct Attrib * attrib;
560 } __attribute__ ((gcc_struct)) structDecl;
561 struct
562 {
563 struct Expression * exp;
564 struct Specifier * enumClass;
565 } __attribute__ ((gcc_struct)) array;
566 struct
567 {
568 struct __ecereNameSpace__ecere__sys__OldList * parameters;
569 } __attribute__ ((gcc_struct)) function;
570 struct
571 {
572 struct Pointer * pointer;
573 } __attribute__ ((gcc_struct)) pointer;
574 struct
575 {
576 struct ExtDecl * extended;
577 } __attribute__ ((gcc_struct)) extended;
578 } __attribute__ ((gcc_struct)) __anon1;
579 } __attribute__ ((gcc_struct));
580
581 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_FunctionDefinition;
582
583 struct FunctionDefinition;
584
585 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_DBTableDef;
586
587 struct DBTableDef;
588
589 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_External;
590
591 struct External;
592
593 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_ModuleImport;
594
595 struct ModuleImport;
596
597 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_ClassImport;
598
599 struct ClassImport;
600
601 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Symbol;
602
603 struct Symbol
604 {
605 char *  string;
606 struct Symbol * parent;
607 struct Symbol * left;
608 struct Symbol * right;
609 int depth;
610 struct Type * type;
611 union
612 {
613 struct __ecereNameSpace__ecere__com__Method * method;
614 struct __ecereNameSpace__ecere__com__Property * _property;
615 struct __ecereNameSpace__ecere__com__Class * registered;
616 } __attribute__ ((gcc_struct)) __anon1;
617 int id;
618 int idCode;
619 union
620 {
621 struct
622 {
623 struct External * pointerExternal;
624 struct External * structExternal;
625 } __attribute__ ((gcc_struct)) __anon1;
626 struct
627 {
628 struct External * externalGet;
629 struct External * externalSet;
630 struct External * externalPtr;
631 struct External * externalIsSet;
632 } __attribute__ ((gcc_struct)) __anon2;
633 struct
634 {
635 struct External * methodExternal;
636 struct External * methodCodeExternal;
637 } __attribute__ ((gcc_struct)) __anon3;
638 } __attribute__ ((gcc_struct)) __anon2;
639 unsigned int imported;
640 unsigned int declaredStructSym;
641 struct __ecereNameSpace__ecere__com__Class * _class;
642 unsigned int declaredStruct;
643 unsigned int needConstructor;
644 unsigned int needDestructor;
645 char *  constructorName;
646 char *  structName;
647 char *  className;
648 char *  destructorName;
649 struct ModuleImport * module;
650 struct ClassImport * _import;
651 struct Location nameLoc;
652 unsigned int isParam;
653 unsigned int isRemote;
654 unsigned int isStruct;
655 unsigned int fireWatchersDone;
656 int declaring;
657 unsigned int classData;
658 unsigned int isStatic;
659 char *  shortName;
660 struct __ecereNameSpace__ecere__sys__OldList *  templateParams;
661 struct __ecereNameSpace__ecere__sys__OldList templatedClasses;
662 struct Context * ctx;
663 int isIterator;
664 struct Expression * propCategory;
665 } __attribute__ ((gcc_struct));
666
667 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Type;
668
669 struct Type
670 {
671 struct Type * prev;
672 struct Type * next;
673 int refCount;
674 union
675 {
676 struct Symbol * _class;
677 struct
678 {
679 struct __ecereNameSpace__ecere__sys__OldList members;
680 char *  enumName;
681 } __attribute__ ((gcc_struct)) __anon1;
682 struct
683 {
684 struct Type * returnType;
685 struct __ecereNameSpace__ecere__sys__OldList params;
686 struct Symbol * thisClass;
687 unsigned int staticMethod;
688 struct TemplateParameter * thisClassTemplate;
689 } __attribute__ ((gcc_struct)) __anon2;
690 struct
691 {
692 struct __ecereNameSpace__ecere__com__Method * method;
693 struct __ecereNameSpace__ecere__com__Class * methodClass;
694 struct __ecereNameSpace__ecere__com__Class * usedClass;
695 } __attribute__ ((gcc_struct)) __anon3;
696 struct
697 {
698 struct Type * arrayType;
699 int arraySize;
700 struct Expression * arraySizeExp;
701 unsigned int freeExp;
702 struct Symbol * enumClass;
703 } __attribute__ ((gcc_struct)) __anon4;
704 struct Type * type;
705 struct TemplateParameter * templateParameter;
706 } __attribute__ ((gcc_struct)) __anon1;
707 int kind;
708 unsigned int size;
709 char *  name;
710 char *  typeName;
711 int classObjectType;
712 int alignment;
713 unsigned int offset;
714 int bitFieldCount;
715 int count;
716 unsigned int isSigned : 1;
717 unsigned int constant : 1;
718 unsigned int truth : 1;
719 unsigned int byReference : 1;
720 unsigned int extraParam : 1;
721 unsigned int directClassAccess : 1;
722 unsigned int computing : 1;
723 unsigned int keepCast : 1;
724 unsigned int passAsTemplate : 1;
725 unsigned int dllExport : 1;
726 unsigned int attrStdcall : 1;
727 unsigned int declaredWithStruct : 1;
728 unsigned int typedByReference : 1;
729 unsigned int casted : 1;
730 } __attribute__ ((gcc_struct));
731
732 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__Class;
733
734 struct __ecereNameSpace__ecere__com__Class
735 {
736 struct __ecereNameSpace__ecere__com__Class * prev;
737 struct __ecereNameSpace__ecere__com__Class * next;
738 const char *  name;
739 int offset;
740 int structSize;
741 int (* *  _vTbl)();
742 int vTblSize;
743 int (*  Constructor)(struct __ecereNameSpace__ecere__com__Instance *);
744 void (*  Destructor)(struct __ecereNameSpace__ecere__com__Instance *);
745 int offsetClass;
746 int sizeClass;
747 struct __ecereNameSpace__ecere__com__Class * base;
748 struct __ecereNameSpace__ecere__sys__BinaryTree methods;
749 struct __ecereNameSpace__ecere__sys__BinaryTree members;
750 struct __ecereNameSpace__ecere__sys__BinaryTree prop;
751 struct __ecereNameSpace__ecere__sys__OldList membersAndProperties;
752 struct __ecereNameSpace__ecere__sys__BinaryTree classProperties;
753 struct __ecereNameSpace__ecere__sys__OldList derivatives;
754 int memberID;
755 int startMemberID;
756 int type;
757 struct __ecereNameSpace__ecere__com__Instance * module;
758 struct __ecereNameSpace__ecere__com__NameSpace *  nameSpace;
759 const char *  dataTypeString;
760 struct Type * dataType;
761 int typeSize;
762 int defaultAlignment;
763 void (*  Initialize)();
764 int memberOffset;
765 struct __ecereNameSpace__ecere__sys__OldList selfWatchers;
766 const char *  designerClass;
767 unsigned int noExpansion;
768 const char *  defaultProperty;
769 unsigned int comRedefinition;
770 int count;
771 int isRemote;
772 unsigned int internalDecl;
773 void *  data;
774 unsigned int computeSize;
775 int structAlignment;
776 int destructionWatchOffset;
777 unsigned int fixed;
778 struct __ecereNameSpace__ecere__sys__OldList delayedCPValues;
779 int inheritanceAccess;
780 const char *  fullName;
781 void *  symbol;
782 struct __ecereNameSpace__ecere__sys__OldList conversions;
783 struct __ecereNameSpace__ecere__sys__OldList templateParams;
784 struct __ecereNameSpace__ecere__com__ClassTemplateArgument *  templateArgs;
785 struct __ecereNameSpace__ecere__com__Class * templateClass;
786 struct __ecereNameSpace__ecere__sys__OldList templatized;
787 int numParams;
788 unsigned int isInstanceClass;
789 unsigned int byValueSystemClass;
790 } __attribute__ ((gcc_struct));
791
792 extern long long __ecereNameSpace__ecere__com__eClass_GetProperty(struct __ecereNameSpace__ecere__com__Class * _class, const char *  name);
793
794 extern void __ecereNameSpace__ecere__com__eClass_SetProperty(struct __ecereNameSpace__ecere__com__Class * _class, const char *  name, long long value);
795
796 extern void __ecereNameSpace__ecere__com__eInstance_FireSelfWatchers(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property);
797
798 extern void __ecereNameSpace__ecere__com__eInstance_SetMethod(struct __ecereNameSpace__ecere__com__Instance * instance, const char *  name, void *  function);
799
800 extern void __ecereNameSpace__ecere__com__eInstance_IncRef(struct __ecereNameSpace__ecere__com__Instance * instance);
801
802 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);
803
804 extern void __ecereNameSpace__ecere__com__eInstance_Watch(void *  instance, struct __ecereNameSpace__ecere__com__Property * _property, void *  object, void (*  callback)(void * , void * ));
805
806 extern void __ecereNameSpace__ecere__com__eInstance_FireWatchers(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property);
807
808 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__Instance;
809
810 struct __ecereNameSpace__ecere__com__Instance
811 {
812 int (* *  _vTbl)();
813 struct __ecereNameSpace__ecere__com__Class * _class;
814 int _refCount;
815 } __attribute__ ((gcc_struct));
816
817 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__DataMember;
818
819 struct __ecereNameSpace__ecere__com__DataMember
820 {
821 struct __ecereNameSpace__ecere__com__DataMember * prev;
822 struct __ecereNameSpace__ecere__com__DataMember * next;
823 const char *  name;
824 unsigned int isProperty;
825 int memberAccess;
826 int id;
827 struct __ecereNameSpace__ecere__com__Class * _class;
828 const char *  dataTypeString;
829 struct __ecereNameSpace__ecere__com__Class * dataTypeClass;
830 struct Type * dataType;
831 int type;
832 int offset;
833 int memberID;
834 struct __ecereNameSpace__ecere__sys__OldList members;
835 struct __ecereNameSpace__ecere__sys__BinaryTree membersAlpha;
836 int memberOffset;
837 int structAlignment;
838 } __attribute__ ((gcc_struct));
839
840 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__SerialBuffer;
841
842 struct __ecereNameSpace__ecere__com__SerialBuffer
843 {
844 unsigned char *  _buffer;
845 unsigned int count;
846 unsigned int _size;
847 unsigned int pos;
848 } __attribute__ ((gcc_struct));
849
850 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__ClassTemplateArgument;
851
852 struct __ecereNameSpace__ecere__com__ClassTemplateArgument
853 {
854 union
855 {
856 struct
857 {
858 const char *  dataTypeString;
859 struct __ecereNameSpace__ecere__com__Class * dataTypeClass;
860 } __attribute__ ((gcc_struct)) __anon1;
861 struct __ecereNameSpace__ecere__com__DataValue expression;
862 struct
863 {
864 const char *  memberString;
865 union
866 {
867 struct __ecereNameSpace__ecere__com__DataMember * member;
868 struct __ecereNameSpace__ecere__com__Property * prop;
869 struct __ecereNameSpace__ecere__com__Method * method;
870 } __attribute__ ((gcc_struct)) __anon1;
871 } __attribute__ ((gcc_struct)) __anon2;
872 } __attribute__ ((gcc_struct)) __anon1;
873 } __attribute__ ((gcc_struct));
874
875 extern struct Identifier * MkIdentifier(const char *  string);
876
877 struct Specifier * CopySpecifier(struct Specifier * spec);
878
879 struct Identifier * CopyIdentifier(struct Identifier * id)
880 {
881 if(id)
882 {
883 struct Identifier * copy = MkIdentifier(id->string);
884
885 copy->_class = id->_class ? CopySpecifier(id->_class) : (((void *)0));
886 copy->classSym = id->classSym;
887 return copy;
888 }
889 return (((void *)0));
890 }
891
892 extern struct __ecereNameSpace__ecere__sys__OldList *  MkList(void);
893
894 extern void ListAdd(struct __ecereNameSpace__ecere__sys__OldList * list, void *  item);
895
896 extern struct Pointer * MkPointer(struct __ecereNameSpace__ecere__sys__OldList * qualifiers, struct Pointer * pointer);
897
898 static struct Pointer * CopyPointer(struct Pointer * ptr)
899 {
900 if(ptr)
901 {
902 struct __ecereNameSpace__ecere__sys__OldList * list = MkList();
903 struct Specifier * spec;
904
905 if(ptr->qualifiers)
906 {
907 for(spec = (*ptr->qualifiers).first; spec; spec = spec->next)
908 ListAdd(list, CopySpecifier(spec));
909 }
910 return MkPointer(list, CopyPointer(ptr->pointer));
911 }
912 return (((void *)0));
913 }
914
915 extern struct Initializer * MkInitializerAssignment(struct Expression * exp);
916
917 struct Expression * CopyExpression(struct Expression * exp);
918
919 extern struct Initializer * MkInitializerList(struct __ecereNameSpace__ecere__sys__OldList * list);
920
921 struct __ecereNameSpace__ecere__sys__OldList *  CopyList(struct __ecereNameSpace__ecere__sys__OldList *  source, void *  (*  CopyFunction)(void * ));
922
923 static struct Initializer * CopyInitializer(struct Initializer * initializer)
924 {
925 struct Initializer * copy = (((void *)0));
926
927 ;
928 if(initializer->type == 0)
929 copy = MkInitializerAssignment(CopyExpression(initializer->__anon1.exp));
930 else if(initializer->type == 1)
931 copy = MkInitializerList(CopyList(initializer->__anon1.list, (void *)(CopyInitializer)));
932 if(copy)
933 {
934 copy->loc = initializer->loc;
935 if(initializer->id)
936 copy->id = CopyIdentifier(initializer->id);
937 copy->isConstant = initializer->isConstant;
938 }
939 return copy;
940 }
941
942 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_MemberInit;
943
944 struct MemberInit
945 {
946 struct MemberInit * prev;
947 struct MemberInit * next;
948 struct Location loc;
949 struct Location realLoc;
950 struct __ecereNameSpace__ecere__sys__OldList *  identifiers;
951 struct Initializer * initializer;
952 unsigned int used;
953 unsigned int variable;
954 unsigned int takeOutExp;
955 } __attribute__ ((gcc_struct));
956
957 extern struct MemberInit * MkMemberInit(struct __ecereNameSpace__ecere__sys__OldList * ids, struct Initializer * initializer);
958
959 static struct MemberInit * CopyMemberInit(struct MemberInit * member)
960 {
961 return MkMemberInit(CopyList(member->identifiers, (void *)(CopyIdentifier)), CopyInitializer(member->initializer));
962 }
963
964 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_ClassFunction;
965
966 struct ClassFunction;
967
968 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_MembersInit;
969
970 struct MembersInit
971 {
972 struct MembersInit * prev;
973 struct MembersInit * next;
974 struct Location loc;
975 int type;
976 union
977 {
978 struct __ecereNameSpace__ecere__sys__OldList *  dataMembers;
979 struct ClassFunction * function;
980 } __attribute__ ((gcc_struct)) __anon1;
981 } __attribute__ ((gcc_struct));
982
983 extern struct MembersInit * MkMembersInitList(struct __ecereNameSpace__ecere__sys__OldList * dataMembers);
984
985 static struct MembersInit * CopyMembersInit(struct MembersInit * members)
986 {
987 struct __ecereNameSpace__ecere__sys__OldList * list = (((void *)0));
988
989 switch(members->type)
990 {
991 case 0:
992 {
993 if(members)
994 {
995 struct MemberInit * member;
996
997 list = MkList();
998 for(member = (*members->__anon1.dataMembers).first; member; member = member->next)
999 ListAdd(list, CopyMemberInit(member));
1000 }
1001 }
1002 }
1003 return MkMembersInitList(list);
1004 }
1005
1006 extern struct Instantiation * MkInstantiation(struct Specifier * _class, struct Expression * exp, struct __ecereNameSpace__ecere__sys__OldList * members);
1007
1008 extern struct Symbol * FindClass(const char *  name);
1009
1010 static struct Instantiation * CopyInstantiation(struct Instantiation * inst)
1011 {
1012 struct Instantiation * copy;
1013 struct __ecereNameSpace__ecere__sys__OldList * list = MkList();
1014 struct MembersInit * member;
1015
1016 if(inst->members)
1017 {
1018 for(member = (*inst->members).first; member; member = member->next)
1019 ListAdd(list, CopyMembersInit(member));
1020 }
1021 copy = MkInstantiation(CopySpecifier(inst->_class), CopyExpression(inst->exp), list);
1022 copy->data = inst->data;
1023 if(inst->data)
1024 {
1025 struct Symbol * classSym = FindClass(inst->_class->__anon1.__anon1.name);
1026 struct __ecereNameSpace__ecere__com__Class * _class = classSym ? classSym->__anon1.registered : (((void *)0));
1027
1028 if(_class)
1029 {
1030 if(_class->type == 0)
1031 ((struct __ecereNameSpace__ecere__com__Instance *)(char *)((struct __ecereNameSpace__ecere__com__Instance *)copy->data))->_refCount++;
1032 }
1033 }
1034 copy->loc = inst->loc;
1035 copy->isConstant = inst->isConstant;
1036 return copy;
1037 }
1038
1039 extern void *  __ecereNameSpace__ecere__com__eInstance_New(struct __ecereNameSpace__ecere__com__Class * _class);
1040
1041 struct Expression * MoveExpContents(struct Expression * exp)
1042 {
1043 struct Expression * newExp = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Expression);
1044
1045 *newExp = *exp;
1046 newExp->prev = (((void *)0));
1047 newExp->next = (((void *)0));
1048 newExp->destType = (((void *)0));
1049 if(exp->expType)
1050 exp->expType->refCount++;
1051 return newExp;
1052 }
1053
1054 extern struct Expression * MkExpDummy(void);
1055
1056 extern struct Expression * MkExpIdentifier(struct Identifier * id);
1057
1058 extern struct Expression * MkExpInstance(struct Instantiation * inst);
1059
1060 extern struct Expression * MkExpConstant(const char *  string);
1061
1062 extern struct Expression * MkExpString(const char *  string);
1063
1064 extern struct Expression * MkExpOp(struct Expression * exp1, int op, struct Expression * exp2);
1065
1066 extern struct Expression * MkExpBrackets(struct __ecereNameSpace__ecere__sys__OldList * expressions);
1067
1068 extern struct Expression * MkExpIndex(struct Expression * expression, struct __ecereNameSpace__ecere__sys__OldList * index);
1069
1070 extern struct Expression * MkExpCall(struct Expression * expression, struct __ecereNameSpace__ecere__sys__OldList * arguments);
1071
1072 extern struct Expression * MkExpMember(struct Expression * expression, struct Identifier * member);
1073
1074 extern struct Expression * MkExpPointer(struct Expression * expression, struct Identifier * member);
1075
1076 extern struct Expression * MkExpTypeSize(struct TypeName * typeName);
1077
1078 struct TypeName * CopyTypeName(struct TypeName * typeName);
1079
1080 extern struct Expression * MkExpTypeAlign(struct TypeName * typeName);
1081
1082 extern struct Expression * MkExpCast(struct TypeName * typeName, struct Expression * expression);
1083
1084 extern struct Expression * MkExpCondition(struct Expression * cond, struct __ecereNameSpace__ecere__sys__OldList * expressions, struct Expression * elseExp);
1085
1086 extern struct Expression * MkExpVaArg(struct Expression * exp, struct TypeName * type);
1087
1088 extern struct Expression * MkExpExtensionCompound(struct Statement * compound);
1089
1090 static struct Statement * CopyStatement(struct Statement * stmt);
1091
1092 extern struct Expression * MkExpExtensionInitializer(struct TypeName * typeName, struct Initializer * initializer);
1093
1094 extern struct Expression * MkExpClass(struct __ecereNameSpace__ecere__sys__OldList *  specifiers, struct Declarator * decl);
1095
1096 struct Declarator * CopyDeclarator(struct Declarator * declarator);
1097
1098 struct Expression * CopyExpression(struct Expression * exp)
1099 {
1100 struct Expression * result = (((void *)0));
1101
1102 if(exp)
1103 switch(exp->type)
1104 {
1105 case 16:
1106 result = MkExpDummy();
1107 break;
1108 case 0:
1109 result = MkExpIdentifier(CopyIdentifier(exp->__anon1.__anon1.identifier));
1110 break;
1111 case 1:
1112 result = MkExpInstance(CopyInstantiation(exp->__anon1.instance));
1113 break;
1114 case 2:
1115 result = MkExpConstant(exp->__anon1.__anon2.string);
1116 break;
1117 case 3:
1118 result = MkExpString(exp->__anon1.__anon2.string);
1119 break;
1120 case 4:
1121 result = MkExpOp(CopyExpression(exp->__anon1.op.exp1), exp->__anon1.op.op, CopyExpression(exp->__anon1.op.exp2));
1122 break;
1123 case 5:
1124 {
1125 struct __ecereNameSpace__ecere__sys__OldList * list = MkList();
1126 struct Expression * e;
1127
1128 for(e = (*exp->__anon1.list).first; e; e = e->next)
1129 ListAdd(list, CopyExpression(e));
1130 result = MkExpBrackets(list);
1131 break;
1132 }
1133 case 6:
1134 {
1135 struct __ecereNameSpace__ecere__sys__OldList * list = MkList();
1136 struct Expression * e;
1137
1138 for(e = (*exp->__anon1.index.index).first; e; e = e->next)
1139 ListAdd(list, CopyExpression(e));
1140 result = MkExpIndex(CopyExpression(exp->__anon1.index.exp), list);
1141 break;
1142 }
1143 case 7:
1144 {
1145 struct __ecereNameSpace__ecere__sys__OldList * list = MkList();
1146 struct Expression * arg;
1147
1148 if(exp->__anon1.call.arguments)
1149 {
1150 for(arg = (*exp->__anon1.call.arguments).first; arg; arg = arg->next)
1151 ListAdd(list, CopyExpression(arg));
1152 }
1153 result = MkExpCall(CopyExpression(exp->__anon1.call.exp), list);
1154 break;
1155 }
1156 case 8:
1157 result = MkExpMember(CopyExpression(exp->__anon1.member.exp), CopyIdentifier(exp->__anon1.member.member));
1158 result->__anon1.member.memberType = exp->__anon1.member.memberType;
1159 result->__anon1.member.thisPtr = exp->__anon1.member.thisPtr;
1160 break;
1161 case 9:
1162 result = MkExpPointer(CopyExpression(exp->__anon1.member.exp), CopyIdentifier(exp->__anon1.member.member));
1163 break;
1164 case 10:
1165 result = MkExpTypeSize(CopyTypeName(exp->__anon1.typeName));
1166 break;
1167 case 36:
1168 result = MkExpTypeAlign(CopyTypeName(exp->__anon1.typeName));
1169 break;
1170 case 11:
1171 result = MkExpCast(CopyTypeName(exp->__anon1.cast.typeName), CopyExpression(exp->__anon1.cast.exp));
1172 break;
1173 case 12:
1174 {
1175 struct __ecereNameSpace__ecere__sys__OldList * list = MkList();
1176 struct Expression * e;
1177
1178 for(e = (*exp->__anon1.cond.exp).first; e; e = e->next)
1179 ListAdd(list, CopyExpression(e));
1180 result = MkExpCondition(CopyExpression(exp->__anon1.cond.cond), list, CopyExpression(exp->__anon1.cond.elseExp));
1181 break;
1182 }
1183 case 34:
1184 result = MkExpVaArg(CopyExpression(exp->__anon1.vaArg.exp), CopyTypeName(exp->__anon1.vaArg.typeName));
1185 break;
1186 case 23:
1187 result = MkExpExtensionCompound(CopyStatement(exp->__anon1.compound));
1188 break;
1189 case 33:
1190 result = MkExpExtensionInitializer(CopyTypeName(exp->__anon1.initializer.typeName), CopyInitializer(exp->__anon1.initializer.initializer));
1191 break;
1192 case 24:
1193 result = MkExpClass(CopyList(exp->__anon1._classExp.specifiers, (void *)(CopySpecifier)), CopyDeclarator(exp->__anon1._classExp.decl));
1194 break;
1195 }
1196 if(result)
1197 {
1198 result->expType = exp->expType;
1199 if(exp->expType)
1200 exp->expType->refCount++;
1201 result->destType = exp->destType;
1202 if(exp->destType)
1203 exp->destType->refCount++;
1204 result->loc = exp->loc;
1205 result->isConstant = exp->isConstant;
1206 result->byReference = exp->byReference;
1207 result->opDestType = exp->opDestType;
1208 result->needTemplateCast = exp->needTemplateCast;
1209 }
1210 return result;
1211 }
1212
1213 extern struct Statement * MkCompoundStmt(struct __ecereNameSpace__ecere__sys__OldList * declarations, struct __ecereNameSpace__ecere__sys__OldList * statements);
1214
1215 struct Declaration * CopyDeclaration(struct Declaration * decl);
1216
1217 extern struct Statement * MkExpressionStmt(struct __ecereNameSpace__ecere__sys__OldList * expressions);
1218
1219 extern struct Statement * MkBadDeclStmt(struct Declaration * decl);
1220
1221 static struct Statement * CopyStatement(struct Statement * stmt)
1222 {
1223 struct Statement * result = (((void *)0));
1224
1225 if(stmt)
1226 {
1227 switch(stmt->type)
1228 {
1229 case 2:
1230 result = MkCompoundStmt(CopyList(stmt->__anon1.compound.declarations, (void *)(CopyDeclaration)), CopyList(stmt->__anon1.compound.statements, (void *)(CopyStatement)));
1231 result->__anon1.compound.context = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Context);
1232 break;
1233 case 3:
1234 result = MkExpressionStmt(CopyList(stmt->__anon1.expressions, (void *)(CopyExpression)));
1235 break;
1236 case 14:
1237 result = MkBadDeclStmt(CopyDeclaration(stmt->__anon1.decl));
1238 break;
1239 }
1240 }
1241 if(result)
1242 {
1243 result->loc = stmt->loc;
1244 }
1245 return result;
1246 }
1247
1248 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Enumerator;
1249
1250 struct Enumerator
1251 {
1252 struct Enumerator * prev;
1253 struct Enumerator * next;
1254 struct Location loc;
1255 struct Identifier * id;
1256 struct Expression * exp;
1257 } __attribute__ ((gcc_struct));
1258
1259 extern struct Enumerator * MkEnumerator(struct Identifier * id, struct Expression * exp);
1260
1261 static struct Enumerator * CopyEnumerator(struct Enumerator * enumerator)
1262 {
1263 return MkEnumerator(CopyIdentifier(enumerator->id), CopyExpression(enumerator->exp));
1264 }
1265
1266 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_PropertyDef;
1267
1268 struct PropertyDef;
1269
1270 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_PropertyWatch;
1271
1272 struct PropertyWatch;
1273
1274 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_ClassDef;
1275
1276 struct ClassDef
1277 {
1278 struct ClassDef * prev;
1279 struct ClassDef * next;
1280 struct Location loc;
1281 int type;
1282 union
1283 {
1284 struct Declaration * decl;
1285 struct ClassFunction * function;
1286 struct __ecereNameSpace__ecere__sys__OldList *  defProperties;
1287 struct PropertyDef * propertyDef;
1288 struct PropertyWatch * propertyWatch;
1289 char *  designer;
1290 struct Identifier * defaultProperty;
1291 struct
1292 {
1293 struct Identifier * id;
1294 struct Initializer * initializer;
1295 } __attribute__ ((gcc_struct)) __anon1;
1296 } __attribute__ ((gcc_struct)) __anon1;
1297 int memberAccess;
1298 void *  object;
1299 } __attribute__ ((gcc_struct));
1300
1301 extern struct ClassDef * MkClassDefDeclaration(struct Declaration * decl);
1302
1303 struct ClassDef * CopyClassDef(struct ClassDef * def)
1304 {
1305 switch(def->type)
1306 {
1307 case 0:
1308 return (((void *)0));
1309 case 1:
1310 return (((void *)0));
1311 case 2:
1312 return MkClassDefDeclaration(CopyDeclaration(def->__anon1.decl));
1313 case 3:
1314 return (((void *)0));
1315 }
1316 return (((void *)0));
1317 }
1318
1319 extern struct Specifier * MkSpecifier(int specifier);
1320
1321 extern struct Specifier * MkEnum(struct Identifier * id, struct __ecereNameSpace__ecere__sys__OldList * list);
1322
1323 extern struct Specifier * MkStructOrUnion(int type, struct Identifier * id, struct __ecereNameSpace__ecere__sys__OldList * definitions);
1324
1325 struct ExtDecl * CopyExtDecl(struct ExtDecl * extDecl);
1326
1327 extern char *  __ecereNameSpace__ecere__sys__CopyString(const char *  string);
1328
1329 extern struct Specifier * MkSpecifierSubClass(struct Specifier * _class);
1330
1331 extern struct Specifier * MkSpecifierExtended(struct ExtDecl * extDecl);
1332
1333 struct Specifier * CopySpecifier(struct Specifier * spec)
1334 {
1335 if(spec)
1336 switch(spec->type)
1337 {
1338 case 0:
1339 return MkSpecifier(spec->__anon1.specifier);
1340 case 2:
1341 {
1342 struct Identifier * id = CopyIdentifier(spec->__anon1.__anon2.id);
1343 struct __ecereNameSpace__ecere__sys__OldList * list = MkList();
1344 struct Enumerator * enumerator;
1345
1346 if(spec->__anon1.__anon2.list)
1347 {
1348 for(enumerator = (*spec->__anon1.__anon2.list).first; enumerator; enumerator = enumerator->next)
1349 ListAdd(list, CopyEnumerator(enumerator));
1350 }
1351 return MkEnum(id, list);
1352 }
1353 case 3:
1354 case 4:
1355 {
1356 struct Identifier * id = CopyIdentifier(spec->__anon1.__anon2.id);
1357 struct __ecereNameSpace__ecere__sys__OldList * list = (((void *)0));
1358 struct ClassDef * def;
1359 struct Specifier * s;
1360
1361 if(spec->__anon1.__anon2.definitions)
1362 {
1363 list = MkList();
1364 if(spec->__anon1.__anon2.list)
1365 {
1366 for(def = (*spec->__anon1.__anon2.list).first; def; def = def->next)
1367 ListAdd(list, CopyClassDef(def));
1368 }
1369 }
1370 s = MkStructOrUnion(spec->type, id, list);
1371 s->__anon1.__anon2.extDeclStruct = CopyExtDecl(spec->__anon1.__anon2.extDeclStruct);
1372 return s;
1373 }
1374 case 1:
1375 {
1376 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);
1377
1378 return copy;
1379 }
1380 case 7:
1381 return MkSpecifierSubClass(CopySpecifier(spec->__anon1._class));
1382 case 8:
1383 return __extension__ ({
1384 struct Specifier * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Specifier);
1385
1386 __ecereInstance1->loc = spec->loc, __ecereInstance1->type = 8, __ecereInstance1->__anon1.templateParameter = spec->__anon1.templateParameter, __ecereInstance1;
1387 });
1388 case 5:
1389 return MkSpecifierExtended(CopyExtDecl(spec->__anon1.__anon1.extDecl));
1390 }
1391 return (((void *)0));
1392 }
1393
1394 extern struct TypeName * MkTypeName(struct __ecereNameSpace__ecere__sys__OldList * qualifiers, struct Declarator * declarator);
1395
1396 struct TypeName * CopyTypeName(struct TypeName * typeName)
1397 {
1398 struct __ecereNameSpace__ecere__sys__OldList * list = (((void *)0));
1399 struct TypeName * copy;
1400
1401 if(typeName->qualifiers)
1402 {
1403 struct Specifier * spec;
1404
1405 list = MkList();
1406 for(spec = (*typeName->qualifiers).first; spec; spec = spec->next)
1407 ListAdd(list, CopySpecifier(spec));
1408 }
1409 copy = MkTypeName(list, CopyDeclarator(typeName->declarator));
1410 copy->classObjectType = typeName->classObjectType;
1411 return copy;
1412 }
1413
1414 extern struct ExtDecl * MkExtDeclAttrib(struct Attrib * attr);
1415
1416 struct Attrib * CopyAttrib(struct Attrib * attrib);
1417
1418 extern struct ExtDecl * MkExtDeclString(char * s);
1419
1420 struct ExtDecl * CopyExtDecl(struct ExtDecl * extDecl)
1421 {
1422 if(extDecl)
1423 {
1424 if(extDecl->type == 1)
1425 return MkExtDeclAttrib(CopyAttrib(extDecl->__anon1.attr));
1426 else if(extDecl->type == 0)
1427 return MkExtDeclString(__ecereNameSpace__ecere__sys__CopyString(extDecl->__anon1.s));
1428 }
1429 return (((void *)0));
1430 }
1431
1432 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Attribute;
1433
1434 struct Attribute
1435 {
1436 struct Attribute * prev;
1437 struct Attribute * next;
1438 struct Location loc;
1439 char * attr;
1440 struct Expression * exp;
1441 } __attribute__ ((gcc_struct));
1442
1443 extern struct Attribute * MkAttribute(char * attr, struct Expression * exp);
1444
1445 struct Attribute * CopyAttribute(struct Attribute * attrib)
1446 {
1447 if(attrib)
1448 return MkAttribute(__ecereNameSpace__ecere__sys__CopyString(attrib->attr), CopyExpression(attrib->exp));
1449 return (((void *)0));
1450 }
1451
1452 extern struct Attrib * MkAttrib(int type, struct __ecereNameSpace__ecere__sys__OldList *  attribs);
1453
1454 struct Attrib * CopyAttrib(struct Attrib * attrib)
1455 {
1456 if(attrib)
1457 return MkAttrib(attrib->type, CopyList(attrib->attribs, (void *)(CopyAttribute)));
1458 return (((void *)0));
1459 }
1460
1461 extern struct Declarator * MkStructDeclarator(struct Declarator * declarator, struct Expression * exp);
1462
1463 extern struct Declarator * MkDeclaratorIdentifier(struct Identifier * id);
1464
1465 extern struct Declarator * MkDeclaratorBrackets(struct Declarator * declarator);
1466
1467 extern struct Declarator * MkDeclaratorEnumArray(struct Declarator * declarator, struct Specifier * _class);
1468
1469 extern struct Declarator * MkDeclaratorArray(struct Declarator * declarator, struct Expression * exp);
1470
1471 extern struct Declarator * MkDeclaratorFunction(struct Declarator * declarator, struct __ecereNameSpace__ecere__sys__OldList * parameters);
1472
1473 extern struct Declarator * MkDeclaratorPointer(struct Pointer * pointer, struct Declarator * declarator);
1474
1475 extern struct Declarator * MkDeclaratorExtended(struct ExtDecl * extended, struct Declarator * declarator);
1476
1477 extern struct Declarator * MkDeclaratorExtendedEnd(struct ExtDecl * extended, struct Declarator * declarator);
1478
1479 struct Declarator * CopyDeclarator(struct Declarator * declarator)
1480 {
1481 if(declarator)
1482 {
1483 switch(declarator->type)
1484 {
1485 case 0:
1486 {
1487 struct Declarator * decl = MkStructDeclarator(CopyDeclarator(declarator->declarator), CopyExpression(declarator->__anon1.structDecl.exp));
1488
1489 if(declarator->__anon1.structDecl.attrib)
1490 decl->__anon1.structDecl.attrib = CopyAttrib(declarator->__anon1.structDecl.attrib);
1491 return decl;
1492 }
1493 case 1:
1494 return MkDeclaratorIdentifier(CopyIdentifier(declarator->__anon1.identifier));
1495 case 2:
1496 return MkDeclaratorBrackets(CopyDeclarator(declarator->declarator));
1497 case 3:
1498 if(declarator->__anon1.array.enumClass)
1499 return MkDeclaratorEnumArray(CopyDeclarator(declarator->declarator), CopySpecifier(declarator->__anon1.array.enumClass));
1500 else
1501 return MkDeclaratorArray(CopyDeclarator(declarator->declarator), CopyExpression(declarator->__anon1.array.exp));
1502 case 4:
1503 {
1504 struct __ecereNameSpace__ecere__sys__OldList * parameters = MkList();
1505 struct TypeName * param;
1506
1507 if(declarator->__anon1.function.parameters)
1508 {
1509 for(param = (*declarator->__anon1.function.parameters).first; param; param = param->next)
1510 ListAdd(parameters, CopyTypeName(param));
1511 }
1512 return MkDeclaratorFunction(CopyDeclarator(declarator->declarator), parameters);
1513 }
1514 case 5:
1515 return MkDeclaratorPointer(CopyPointer(declarator->__anon1.pointer.pointer), CopyDeclarator(declarator->declarator));
1516 case 6:
1517 return MkDeclaratorExtended(CopyExtDecl(declarator->__anon1.extended.extended), CopyDeclarator(declarator->declarator));
1518 case 7:
1519 return MkDeclaratorExtendedEnd(CopyExtDecl(declarator->__anon1.extended.extended), CopyDeclarator(declarator->declarator));
1520 }
1521 }
1522 return (((void *)0));
1523 }
1524
1525 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_InitDeclarator;
1526
1527 struct InitDeclarator
1528 {
1529 struct InitDeclarator * prev;
1530 struct InitDeclarator * next;
1531 struct Location loc;
1532 struct Declarator * declarator;
1533 struct Initializer * initializer;
1534 } __attribute__ ((gcc_struct));
1535
1536 extern struct InitDeclarator * MkInitDeclarator(struct Declarator * declarator, struct Initializer * initializer);
1537
1538 struct InitDeclarator * CopyInitDeclarator(struct InitDeclarator * initDecl)
1539 {
1540 return MkInitDeclarator(CopyDeclarator(initDecl->declarator), CopyInitializer(initDecl->initializer));
1541 }
1542
1543 extern struct Declaration * MkDeclaration(struct __ecereNameSpace__ecere__sys__OldList * specifiers, struct __ecereNameSpace__ecere__sys__OldList * initDeclarators);
1544
1545 struct Declaration * CopyDeclaration(struct Declaration * decl)
1546 {
1547 if(decl->type == 1)
1548 {
1549 return MkDeclaration(CopyList(decl->__anon1.__anon1.specifiers, (void *)(CopySpecifier)), CopyList(decl->__anon1.__anon1.declarators, (void *)(CopyInitDeclarator)));
1550 }
1551 else
1552 {
1553 struct __ecereNameSpace__ecere__sys__OldList * specifiers = MkList(), * declarators = MkList();
1554 struct Specifier * spec;
1555 struct Declarator * declarator;
1556
1557 for(spec = (*decl->__anon1.__anon1.specifiers).first; spec; spec = spec->next)
1558 ListAdd(specifiers, CopySpecifier(spec));
1559 if(decl->__anon1.__anon1.declarators)
1560 {
1561 for(declarator = (*decl->__anon1.__anon1.declarators).first; declarator; declarator = declarator->next)
1562 ListAdd(declarators, CopyDeclarator(declarator));
1563 }
1564 return MkDeclaration(specifiers, declarators);
1565 }
1566 }
1567
1568 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__sys__Item;
1569
1570 struct __ecereNameSpace__ecere__sys__Item
1571 {
1572 struct __ecereNameSpace__ecere__sys__Item * prev;
1573 struct __ecereNameSpace__ecere__sys__Item * next;
1574 } __attribute__ ((gcc_struct));
1575
1576 struct __ecereNameSpace__ecere__sys__OldList * CopyList(struct __ecereNameSpace__ecere__sys__OldList * source, void * (* CopyFunction)(void *))
1577 {
1578 struct __ecereNameSpace__ecere__sys__OldList * list = (((void *)0));
1579
1580 if(source)
1581 {
1582 struct __ecereNameSpace__ecere__sys__Item * item;
1583
1584 list = MkList();
1585 for(item = (*source).first; item; item = item->next)
1586 ListAdd(list, CopyFunction(item));
1587 }
1588 return list;
1589 }
1590
1591 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__GlobalFunction;
1592
1593 struct __ecereNameSpace__ecere__com__GlobalFunction;
1594
1595 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);
1596
1597 void __ecereRegisterModule_copy(struct __ecereNameSpace__ecere__com__Instance * module)
1598 {
1599 struct __ecereNameSpace__ecere__com__Class __attribute__((unused)) * class;
1600
1601 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("CopyIdentifier", "Identifier CopyIdentifier(Identifier id)", CopyIdentifier, module, 2);
1602 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("MoveExpContents", "Expression MoveExpContents(Expression exp)", MoveExpContents, module, 2);
1603 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("CopyExpression", "Expression CopyExpression(Expression exp)", CopyExpression, module, 1);
1604 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("CopyClassDef", "ClassDef CopyClassDef(ClassDef def)", CopyClassDef, module, 2);
1605 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("CopySpecifier", "Specifier CopySpecifier(Specifier spec)", CopySpecifier, module, 2);
1606 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("CopyTypeName", "TypeName CopyTypeName(TypeName typeName)", CopyTypeName, module, 2);
1607 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("CopyExtDecl", "ExtDecl CopyExtDecl(ExtDecl extDecl)", CopyExtDecl, module, 2);
1608 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("CopyAttribute", "Attribute CopyAttribute(Attribute attrib)", CopyAttribute, module, 2);
1609 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("CopyAttrib", "Attrib CopyAttrib(Attrib attrib)", CopyAttrib, module, 2);
1610 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("CopyDeclarator", "Declarator CopyDeclarator(Declarator declarator)", CopyDeclarator, module, 2);
1611 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("CopyInitDeclarator", "InitDeclarator CopyInitDeclarator(InitDeclarator initDecl)", CopyInitDeclarator, module, 2);
1612 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("CopyDeclaration", "Declaration CopyDeclaration(Declaration decl)", CopyDeclaration, module, 2);
1613 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("CopyList", "ecere::sys::OldList * CopyList(ecere::sys::OldList * source, void * (* CopyFunction)(void *))", CopyList, module, 2);
1614 }
1615
1616 void __ecereUnregisterModule_copy(struct __ecereNameSpace__ecere__com__Instance * module)
1617 {
1618
1619 }
1620