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