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