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