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