1 /* Code generated from eC source file: copy.ec */
3 typedef long long int64;
4 typedef unsigned long long uint64;
8 #elif defined(__TINYC__)
10 #define __builtin_va_list va_list
11 #define __builtin_va_start va_start
12 #define __builtin_va_end va_end
14 #define strcasecmp stricmp
15 #define strncasecmp strnicmp
16 #define __declspec(x) __attribute__((x))
20 typedef long long int64;
21 typedef unsigned long long uint64;
23 typedef __int64 int64;
24 typedef unsigned __int64 uint64;
27 #define __ENDIAN_PAD(x) (8 - (x))
29 #define __ENDIAN_PAD(x) 0
32 #include <sys/types.h>
33 extern void * __ecereNameSpace__ecere__com__eSystem_New(unsigned int size);
35 extern void * __ecereNameSpace__ecere__com__eSystem_New0(unsigned int size);
37 extern void * __ecereNameSpace__ecere__com__eSystem_Renew(void * memory, unsigned int size);
39 extern void * __ecereNameSpace__ecere__com__eSystem_Renew0(void * memory, unsigned int size);
41 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__sys__BTNode;
43 struct __ecereNameSpace__ecere__sys__BTNode;
45 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__sys__BinaryTree;
47 struct __ecereNameSpace__ecere__sys__BinaryTree
49 struct __ecereNameSpace__ecere__sys__BTNode * root;
51 int (* CompareKey)(struct __ecereNameSpace__ecere__sys__BinaryTree * tree, uintptr_t a, uintptr_t b);
52 void (* FreeKey)(void * key);
53 } __attribute__ ((gcc_struct));
55 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__sys__OldList;
57 struct __ecereNameSpace__ecere__sys__OldList
64 } __attribute__ ((gcc_struct));
66 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__Method;
68 struct __ecereNameSpace__ecere__com__Method
71 struct __ecereNameSpace__ecere__com__Method * parent;
72 struct __ecereNameSpace__ecere__com__Method * left;
73 struct __ecereNameSpace__ecere__com__Method * right;
78 struct __ecereNameSpace__ecere__com__Class * _class;
80 char * dataTypeString;
81 struct Type * dataType;
83 } __attribute__ ((gcc_struct));
85 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__Property;
87 struct __ecereNameSpace__ecere__com__Property
89 struct __ecereNameSpace__ecere__com__Property * prev;
90 struct __ecereNameSpace__ecere__com__Property * next;
92 unsigned int isProperty;
95 struct __ecereNameSpace__ecere__com__Class * _class;
96 char * dataTypeString;
97 struct __ecereNameSpace__ecere__com__Class * dataTypeClass;
98 struct Type * dataType;
99 void (* Set)(void * , int);
100 int (* Get)(void * );
101 unsigned int (* IsSet)(void * );
105 unsigned int conversion;
106 unsigned int watcherOffset;
108 unsigned int compiled;
109 unsigned int selfWatchable;
110 unsigned int isWatchable;
111 } __attribute__ ((gcc_struct));
113 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_CodePosition;
121 } __attribute__ ((gcc_struct));
123 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Location;
127 struct CodePosition start;
128 struct CodePosition end;
129 } __attribute__ ((gcc_struct));
131 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Attrib;
137 struct __ecereNameSpace__ecere__sys__OldList * attribs;
138 } __attribute__ ((gcc_struct));
140 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_ExtDecl;
149 struct Attrib * attr;
150 } __attribute__ ((gcc_struct));
151 } __attribute__ ((gcc_struct));
153 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_ClassDefinition;
155 struct ClassDefinition;
157 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Context;
161 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Instantiation;
165 struct Instantiation * prev;
166 struct Instantiation * next;
168 struct Specifier * _class;
169 struct Expression * exp;
170 struct __ecereNameSpace__ecere__sys__OldList * members;
171 struct Symbol * symbol;
172 unsigned int fullSet;
173 unsigned int isConstant;
174 unsigned char * data;
175 struct Location nameLoc;
176 struct Location insideLoc;
178 } __attribute__ ((gcc_struct));
180 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Declaration;
184 struct Declaration * prev;
185 struct Declaration * next;
192 struct __ecereNameSpace__ecere__sys__OldList * specifiers;
193 struct __ecereNameSpace__ecere__sys__OldList * declarators;
194 } __attribute__ ((gcc_struct));
195 struct Instantiation * inst;
198 struct Identifier * id;
199 struct Expression * exp;
200 } __attribute__ ((gcc_struct));
201 } __attribute__ ((gcc_struct));
202 struct Specifier * extStorage;
203 struct Symbol * symbol;
205 } __attribute__ ((gcc_struct));
207 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Statement;
211 struct Statement * prev;
212 struct Statement * next;
217 struct __ecereNameSpace__ecere__sys__OldList * expressions;
220 struct Identifier * id;
221 struct Statement * stmt;
222 } __attribute__ ((gcc_struct)) labeled;
225 struct Expression * exp;
226 struct Statement * stmt;
227 } __attribute__ ((gcc_struct)) caseStmt;
230 struct __ecereNameSpace__ecere__sys__OldList * declarations;
231 struct __ecereNameSpace__ecere__sys__OldList * statements;
232 struct Context * context;
233 unsigned int isSwitch;
234 } __attribute__ ((gcc_struct)) compound;
237 struct __ecereNameSpace__ecere__sys__OldList * exp;
238 struct Statement * stmt;
239 struct Statement * elseStmt;
240 } __attribute__ ((gcc_struct)) ifStmt;
243 struct __ecereNameSpace__ecere__sys__OldList * exp;
244 struct Statement * stmt;
245 } __attribute__ ((gcc_struct)) switchStmt;
248 struct __ecereNameSpace__ecere__sys__OldList * exp;
249 struct Statement * stmt;
250 } __attribute__ ((gcc_struct)) whileStmt;
253 struct __ecereNameSpace__ecere__sys__OldList * exp;
254 struct Statement * stmt;
255 } __attribute__ ((gcc_struct)) doWhile;
258 struct Statement * init;
259 struct Statement * check;
260 struct __ecereNameSpace__ecere__sys__OldList * increment;
261 struct Statement * stmt;
262 } __attribute__ ((gcc_struct)) forStmt;
265 struct Identifier * id;
266 } __attribute__ ((gcc_struct)) gotoStmt;
269 struct Specifier * spec;
271 struct __ecereNameSpace__ecere__sys__OldList * inputFields;
272 struct __ecereNameSpace__ecere__sys__OldList * outputFields;
273 struct __ecereNameSpace__ecere__sys__OldList * clobberedFields;
274 } __attribute__ ((gcc_struct)) asmStmt;
277 struct Expression * watcher;
278 struct Expression * object;
279 struct __ecereNameSpace__ecere__sys__OldList * watches;
280 } __attribute__ ((gcc_struct)) _watch;
283 struct Identifier * id;
284 struct __ecereNameSpace__ecere__sys__OldList * exp;
285 struct __ecereNameSpace__ecere__sys__OldList * filter;
286 struct Statement * stmt;
287 } __attribute__ ((gcc_struct)) forEachStmt;
288 struct Declaration * decl;
289 } __attribute__ ((gcc_struct));
290 } __attribute__ ((gcc_struct));
292 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_TypeName;
296 struct TypeName * prev;
297 struct TypeName * next;
299 struct __ecereNameSpace__ecere__sys__OldList * qualifiers;
300 struct Declarator * declarator;
302 struct Expression * bitCount;
303 } __attribute__ ((gcc_struct));
305 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Initializer;
309 struct Initializer * prev;
310 struct Initializer * next;
315 struct Expression * exp;
316 struct __ecereNameSpace__ecere__sys__OldList * list;
317 } __attribute__ ((gcc_struct));
318 unsigned int isConstant;
319 } __attribute__ ((gcc_struct));
321 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__DataValue;
323 struct __ecereNameSpace__ecere__com__DataValue
338 } __attribute__ ((gcc_struct));
339 } __attribute__ ((gcc_struct));
341 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Expression;
345 struct Expression * prev;
346 struct Expression * next;
354 struct Identifier * identifier;
355 } __attribute__ ((gcc_struct));
356 struct Statement * compound;
357 struct Instantiation * instance;
359 struct __ecereNameSpace__ecere__sys__OldList * list;
362 struct __ecereNameSpace__ecere__sys__OldList * specifiers;
363 struct Declarator * decl;
364 } __attribute__ ((gcc_struct)) _classExp;
367 struct Identifier * id;
368 } __attribute__ ((gcc_struct)) classData;
371 struct Expression * exp;
372 struct __ecereNameSpace__ecere__sys__OldList * arguments;
373 struct Location argLoc;
374 } __attribute__ ((gcc_struct)) call;
377 struct Expression * exp;
378 struct __ecereNameSpace__ecere__sys__OldList * index;
379 } __attribute__ ((gcc_struct)) index;
382 struct Expression * exp;
383 struct Identifier * member;
385 unsigned int thisPtr;
386 } __attribute__ ((gcc_struct)) member;
390 struct Expression * exp1;
391 struct Expression * exp2;
392 } __attribute__ ((gcc_struct)) op;
393 struct TypeName * typeName;
394 struct Specifier * _class;
397 struct TypeName * typeName;
398 struct Expression * exp;
399 } __attribute__ ((gcc_struct)) cast;
402 struct Expression * cond;
403 struct __ecereNameSpace__ecere__sys__OldList * exp;
404 struct Expression * elseExp;
405 } __attribute__ ((gcc_struct)) cond;
408 struct TypeName * typeName;
409 struct Expression * size;
410 } __attribute__ ((gcc_struct)) _new;
413 struct TypeName * typeName;
414 struct Expression * size;
415 struct Expression * exp;
416 } __attribute__ ((gcc_struct)) _renew;
420 struct Identifier * id;
421 } __attribute__ ((gcc_struct)) db;
424 struct Expression * ds;
425 struct Expression * name;
426 } __attribute__ ((gcc_struct)) dbopen;
429 struct TypeName * typeName;
430 struct Initializer * initializer;
431 } __attribute__ ((gcc_struct)) initializer;
434 struct Expression * exp;
435 struct TypeName * typeName;
436 } __attribute__ ((gcc_struct)) vaArg;
437 } __attribute__ ((gcc_struct));
438 unsigned int debugValue;
439 struct __ecereNameSpace__ecere__com__DataValue val;
441 unsigned int hasAddress;
442 struct Type * expType;
443 struct Type * destType;
446 unsigned int byReference;
447 unsigned int isConstant;
448 unsigned int addedThis;
449 unsigned int needCast;
450 unsigned int thisPtr;
451 } __attribute__ ((gcc_struct));
453 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_TemplateDatatype;
455 struct TemplateDatatype;
457 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_TemplateArgument;
459 struct TemplateArgument;
461 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_TemplateParameter;
463 struct TemplateParameter;
465 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Specifier;
469 struct Specifier * prev;
470 struct Specifier * next;
478 struct ExtDecl * extDecl;
480 struct Symbol * symbol;
481 struct __ecereNameSpace__ecere__sys__OldList * templateArgs;
482 } __attribute__ ((gcc_struct));
485 struct Identifier * id;
486 struct __ecereNameSpace__ecere__sys__OldList * list;
487 struct __ecereNameSpace__ecere__sys__OldList * baseSpecs;
488 struct __ecereNameSpace__ecere__sys__OldList * definitions;
489 unsigned int addNameSpace;
490 struct Context * ctx;
491 struct ExtDecl * extDeclStruct;
492 } __attribute__ ((gcc_struct));
493 struct Expression * expression;
494 struct Specifier * _class;
495 struct TemplateParameter * templateParameter;
496 } __attribute__ ((gcc_struct));
497 } __attribute__ ((gcc_struct));
499 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Identifier;
503 struct Identifier * prev;
504 struct Identifier * next;
506 struct Symbol * classSym;
507 struct Specifier * _class;
509 struct Identifier * badID;
510 } __attribute__ ((gcc_struct));
512 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Pointer;
516 struct Pointer * prev;
517 struct Pointer * next;
519 struct __ecereNameSpace__ecere__sys__OldList * qualifiers;
520 struct Pointer * pointer;
521 } __attribute__ ((gcc_struct));
523 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Declarator;
527 struct Declarator * prev;
528 struct Declarator * next;
531 struct Symbol * symbol;
532 struct Declarator * declarator;
535 struct Identifier * identifier;
538 struct Expression * exp;
539 struct Expression * posExp;
540 struct Attrib * attrib;
541 } __attribute__ ((gcc_struct)) structDecl;
544 struct Expression * exp;
545 struct Specifier * enumClass;
546 } __attribute__ ((gcc_struct)) array;
549 struct __ecereNameSpace__ecere__sys__OldList * parameters;
550 } __attribute__ ((gcc_struct)) function;
553 struct Pointer * pointer;
554 } __attribute__ ((gcc_struct)) pointer;
557 struct ExtDecl * extended;
558 } __attribute__ ((gcc_struct)) extended;
559 } __attribute__ ((gcc_struct));
560 } __attribute__ ((gcc_struct));
562 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_FunctionDefinition;
564 struct FunctionDefinition;
566 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_DBTableDef;
570 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_External;
574 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_ModuleImport;
578 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_ClassImport;
582 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Symbol;
586 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Type;
595 struct Symbol * _class;
598 struct __ecereNameSpace__ecere__sys__OldList members;
600 } __attribute__ ((gcc_struct));
603 struct Type * returnType;
604 struct __ecereNameSpace__ecere__sys__OldList params;
605 struct Symbol * thisClass;
606 unsigned int staticMethod;
607 struct TemplateParameter * thisClassTemplate;
608 } __attribute__ ((gcc_struct));
611 struct __ecereNameSpace__ecere__com__Method * method;
612 struct __ecereNameSpace__ecere__com__Class * methodClass;
613 struct __ecereNameSpace__ecere__com__Class * usedClass;
614 } __attribute__ ((gcc_struct));
617 struct Type * arrayType;
619 struct Expression * arraySizeExp;
620 unsigned int freeExp;
621 struct Symbol * enumClass;
622 } __attribute__ ((gcc_struct));
624 struct TemplateParameter * templateParameter;
625 } __attribute__ ((gcc_struct));
635 unsigned int isSigned : 1;
636 unsigned int constant : 1;
637 unsigned int truth : 1;
638 unsigned int byReference : 1;
639 unsigned int extraParam : 1;
640 unsigned int directClassAccess : 1;
641 unsigned int computing : 1;
642 unsigned int keepCast : 1;
643 unsigned int passAsTemplate : 1;
644 unsigned int dllExport : 1;
645 unsigned int attrStdcall : 1;
646 unsigned int declaredWithStruct : 1;
647 } __attribute__ ((gcc_struct));
649 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__Class;
651 struct __ecereNameSpace__ecere__com__Class
653 struct __ecereNameSpace__ecere__com__Class * prev;
654 struct __ecereNameSpace__ecere__com__Class * next;
660 int (* Constructor)(struct __ecereNameSpace__ecere__com__Instance *);
661 void (* Destructor)(struct __ecereNameSpace__ecere__com__Instance *);
664 struct __ecereNameSpace__ecere__com__Class * base;
665 struct __ecereNameSpace__ecere__sys__BinaryTree methods;
666 struct __ecereNameSpace__ecere__sys__BinaryTree members;
667 struct __ecereNameSpace__ecere__sys__BinaryTree prop;
668 struct __ecereNameSpace__ecere__sys__OldList membersAndProperties;
669 struct __ecereNameSpace__ecere__sys__BinaryTree classProperties;
670 struct __ecereNameSpace__ecere__sys__OldList derivatives;
674 struct __ecereNameSpace__ecere__com__Instance * module;
675 struct __ecereNameSpace__ecere__com__NameSpace * nameSpace;
676 char * dataTypeString;
677 struct Type * dataType;
679 int defaultAlignment;
680 void (* Initialize)();
682 struct __ecereNameSpace__ecere__sys__OldList selfWatchers;
683 char * designerClass;
684 unsigned int noExpansion;
685 char * defaultProperty;
686 unsigned int comRedefinition;
688 unsigned int isRemote;
689 unsigned int internalDecl;
691 unsigned int computeSize;
693 int destructionWatchOffset;
695 struct __ecereNameSpace__ecere__sys__OldList delayedCPValues;
696 int inheritanceAccess;
699 struct __ecereNameSpace__ecere__sys__OldList conversions;
700 struct __ecereNameSpace__ecere__sys__OldList templateParams;
701 struct __ecereNameSpace__ecere__com__ClassTemplateArgument * templateArgs;
702 struct __ecereNameSpace__ecere__com__Class * templateClass;
703 struct __ecereNameSpace__ecere__sys__OldList templatized;
705 unsigned int isInstanceClass;
706 } __attribute__ ((gcc_struct));
708 extern long long __ecereNameSpace__ecere__com__eClass_GetProperty(struct __ecereNameSpace__ecere__com__Class * _class, char * name);
710 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__Instance;
712 struct __ecereNameSpace__ecere__com__Instance
715 struct __ecereNameSpace__ecere__com__Class * _class;
717 } __attribute__ ((gcc_struct));
719 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__DataMember;
721 struct __ecereNameSpace__ecere__com__DataMember
723 struct __ecereNameSpace__ecere__com__DataMember * prev;
724 struct __ecereNameSpace__ecere__com__DataMember * next;
726 unsigned int isProperty;
729 struct __ecereNameSpace__ecere__com__Class * _class;
730 char * dataTypeString;
731 struct __ecereNameSpace__ecere__com__Class * dataTypeClass;
732 struct Type * dataType;
736 struct __ecereNameSpace__ecere__sys__OldList members;
737 struct __ecereNameSpace__ecere__sys__BinaryTree membersAlpha;
740 } __attribute__ ((gcc_struct));
742 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__SerialBuffer;
744 struct __ecereNameSpace__ecere__com__SerialBuffer
746 unsigned char * _buffer;
750 } __attribute__ ((gcc_struct));
752 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__ClassTemplateArgument;
754 struct __ecereNameSpace__ecere__com__ClassTemplateArgument
760 char * dataTypeString;
761 struct __ecereNameSpace__ecere__com__Class * dataTypeClass;
762 } __attribute__ ((gcc_struct));
763 struct __ecereNameSpace__ecere__com__DataValue expression;
769 struct __ecereNameSpace__ecere__com__DataMember * member;
770 struct __ecereNameSpace__ecere__com__Property * prop;
771 struct __ecereNameSpace__ecere__com__Method * method;
772 } __attribute__ ((gcc_struct));
773 } __attribute__ ((gcc_struct));
774 } __attribute__ ((gcc_struct));
775 } __attribute__ ((gcc_struct));
777 extern struct Identifier * MkIdentifier(char * string);
779 struct Specifier * CopySpecifier(struct Specifier * spec);
781 struct Identifier * CopyIdentifier(struct Identifier * id)
785 struct Identifier * copy = MkIdentifier(id->string);
787 copy->_class = id->_class ? CopySpecifier(id->_class) : (((void *)0));
788 copy->classSym = id->classSym;
791 return (((void *)0));
794 extern struct __ecereNameSpace__ecere__sys__OldList * MkList(void);
796 extern void ListAdd(struct __ecereNameSpace__ecere__sys__OldList * list, void * item);
798 extern struct Pointer * MkPointer(struct __ecereNameSpace__ecere__sys__OldList * qualifiers, struct Pointer * pointer);
800 static struct Pointer * CopyPointer(struct Pointer * ptr)
804 struct __ecereNameSpace__ecere__sys__OldList * list = MkList();
805 struct Specifier * spec;
809 for(spec = (*ptr->qualifiers).first; spec; spec = spec->next)
810 ListAdd(list, CopySpecifier(spec));
812 return MkPointer(list, CopyPointer(ptr->pointer));
814 return (((void *)0));
817 extern struct Initializer * MkInitializerAssignment(struct Expression * exp);
819 struct Expression * CopyExpression(struct Expression * exp);
821 extern struct Initializer * MkInitializerList(struct __ecereNameSpace__ecere__sys__OldList * list);
823 struct __ecereNameSpace__ecere__sys__OldList * CopyList(struct __ecereNameSpace__ecere__sys__OldList * source, void * (* CopyFunction)(void * ));
825 static struct Initializer * CopyInitializer(struct Initializer * initializer)
827 struct Initializer * copy = (((void *)0));
830 if(initializer->type == 0)
831 copy = MkInitializerAssignment(CopyExpression(initializer->exp));
832 else if(initializer->type == 1)
833 copy = MkInitializerList(CopyList(initializer->list, CopyInitializer));
836 copy->loc = initializer->loc;
837 copy->isConstant = initializer->isConstant;
842 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_MemberInit;
846 struct MemberInit * prev;
847 struct MemberInit * next;
849 struct Location realLoc;
850 struct __ecereNameSpace__ecere__sys__OldList * identifiers;
851 struct Initializer * initializer;
853 unsigned int variable;
854 unsigned int takeOutExp;
855 } __attribute__ ((gcc_struct));
857 extern struct MemberInit * MkMemberInit(struct __ecereNameSpace__ecere__sys__OldList * ids, struct Initializer * initializer);
859 static struct MemberInit * CopyMemberInit(struct MemberInit * member)
861 return MkMemberInit(CopyList(member->identifiers, CopyIdentifier), CopyInitializer(member->initializer));
864 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_ClassFunction;
866 struct ClassFunction;
868 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_MembersInit;
872 struct MembersInit * prev;
873 struct MembersInit * next;
878 struct __ecereNameSpace__ecere__sys__OldList * dataMembers;
879 struct ClassFunction * function;
880 } __attribute__ ((gcc_struct));
881 } __attribute__ ((gcc_struct));
883 extern struct MembersInit * MkMembersInitList(struct __ecereNameSpace__ecere__sys__OldList * dataMembers);
885 static struct MembersInit * CopyMembersInit(struct MembersInit * members)
887 struct __ecereNameSpace__ecere__sys__OldList * list = (((void *)0));
889 switch(members->type)
895 struct MemberInit * member;
898 for(member = (*members->dataMembers).first; member; member = member->next)
899 ListAdd(list, CopyMemberInit(member));
903 return MkMembersInitList(list);
906 extern struct Instantiation * MkInstantiation(struct Specifier * _class, struct Expression * exp, struct __ecereNameSpace__ecere__sys__OldList * members);
908 static struct Instantiation * CopyInstantiation(struct Instantiation * inst)
910 struct Instantiation * copy;
911 struct __ecereNameSpace__ecere__sys__OldList * list = MkList();
912 struct MembersInit * member;
916 for(member = (*inst->members).first; member; member = member->next)
917 ListAdd(list, CopyMembersInit(member));
919 copy = MkInstantiation(CopySpecifier(inst->_class), CopyExpression(inst->exp), list);
920 copy->data = inst->data;
921 copy->loc = inst->loc;
922 copy->isConstant = inst->isConstant;
926 extern struct Expression * MkExpDummy(void);
928 extern struct Expression * MkExpIdentifier(struct Identifier * id);
930 extern struct Expression * MkExpInstance(struct Instantiation * inst);
932 extern struct Expression * MkExpConstant(char * string);
934 extern struct Expression * MkExpString(char * string);
936 extern struct Expression * MkExpOp(struct Expression * exp1, int op, struct Expression * exp2);
938 extern struct Expression * MkExpBrackets(struct __ecereNameSpace__ecere__sys__OldList * expressions);
940 extern struct Expression * MkExpIndex(struct Expression * expression, struct __ecereNameSpace__ecere__sys__OldList * index);
942 extern struct Expression * MkExpCall(struct Expression * expression, struct __ecereNameSpace__ecere__sys__OldList * arguments);
944 extern struct Expression * MkExpMember(struct Expression * expression, struct Identifier * member);
946 extern struct Expression * MkExpPointer(struct Expression * expression, struct Identifier * member);
948 extern struct Expression * MkExpTypeSize(struct TypeName * typeName);
950 struct TypeName * CopyTypeName(struct TypeName * typeName);
952 extern struct Expression * MkExpTypeAlign(struct TypeName * typeName);
954 extern struct Expression * MkExpCast(struct TypeName * typeName, struct Expression * expression);
956 extern struct Expression * MkExpCondition(struct Expression * cond, struct __ecereNameSpace__ecere__sys__OldList * expressions, struct Expression * elseExp);
958 extern struct Expression * MkExpVaArg(struct Expression * exp, struct TypeName * type);
960 extern struct Expression * MkExpExtensionCompound(struct Statement * compound);
962 static struct Statement * CopyStatement(struct Statement * stmt);
964 struct Expression * CopyExpression(struct Expression * exp)
966 struct Expression * result = (((void *)0));
972 result = MkExpDummy();
975 result = MkExpIdentifier(CopyIdentifier(exp->identifier));
978 result = MkExpInstance(CopyInstantiation(exp->instance));
981 result = MkExpConstant(exp->string);
984 result = MkExpString(exp->string);
987 result = MkExpOp(CopyExpression(exp->op.exp1), exp->op.op, CopyExpression(exp->op.exp2));
991 struct __ecereNameSpace__ecere__sys__OldList * list = MkList();
992 struct Expression * e;
994 for(e = (*exp->list).first; e; e = e->next)
995 ListAdd(list, CopyExpression(e));
996 result = MkExpBrackets(list);
1001 struct __ecereNameSpace__ecere__sys__OldList * list = MkList();
1002 struct Expression * e;
1004 for(e = (*exp->index.index).first; e; e = e->next)
1005 ListAdd(list, CopyExpression(e));
1006 result = MkExpIndex(CopyExpression(exp->index.exp), list);
1011 struct __ecereNameSpace__ecere__sys__OldList * list = MkList();
1012 struct Expression * arg;
1014 if(exp->call.arguments)
1016 for(arg = (*exp->call.arguments).first; arg; arg = arg->next)
1017 ListAdd(list, CopyExpression(arg));
1019 result = MkExpCall(CopyExpression(exp->call.exp), list);
1023 result = MkExpMember(CopyExpression(exp->member.exp), CopyIdentifier(exp->member.member));
1024 result->member.memberType = exp->member.memberType;
1025 result->member.thisPtr = exp->member.thisPtr;
1028 result = MkExpPointer(CopyExpression(exp->member.exp), CopyIdentifier(exp->member.member));
1031 result = MkExpTypeSize(CopyTypeName(exp->typeName));
1034 result = MkExpTypeAlign(CopyTypeName(exp->typeName));
1037 result = MkExpCast(CopyTypeName(exp->cast.typeName), CopyExpression(exp->cast.exp));
1041 struct __ecereNameSpace__ecere__sys__OldList * list = MkList();
1042 struct Expression * e;
1044 for(e = (*exp->cond.exp).first; e; e = e->next)
1045 ListAdd(list, CopyExpression(e));
1046 result = MkExpCondition(CopyExpression(exp->cond.cond), list, CopyExpression(exp->cond.elseExp));
1050 result = MkExpVaArg(CopyExpression(exp->vaArg.exp), CopyTypeName(exp->vaArg.typeName));
1053 result = MkExpExtensionCompound(CopyStatement(exp->compound));
1058 result->expType = exp->expType;
1060 exp->expType->refCount++;
1061 result->destType = exp->destType;
1063 exp->destType->refCount++;
1064 result->loc = exp->loc;
1065 result->isConstant = exp->isConstant;
1066 result->byReference = exp->byReference;
1071 extern struct Statement * MkCompoundStmt(struct __ecereNameSpace__ecere__sys__OldList * declarations, struct __ecereNameSpace__ecere__sys__OldList * statements);
1073 struct Declaration * CopyDeclaration(struct Declaration * decl);
1075 extern struct Statement * MkExpressionStmt(struct __ecereNameSpace__ecere__sys__OldList * expressions);
1077 extern struct Statement * MkBadDeclStmt(struct Declaration * decl);
1079 extern void * __ecereNameSpace__ecere__com__eInstance_New(struct __ecereNameSpace__ecere__com__Class * _class);
1081 static struct Statement * CopyStatement(struct Statement * stmt)
1083 struct Statement * result = (((void *)0));
1090 result = MkCompoundStmt(CopyList(stmt->compound.declarations, CopyDeclaration), CopyList(stmt->compound.statements, CopyStatement));
1091 result->compound.context = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Context);
1094 result = MkExpressionStmt(CopyList(stmt->expressions, CopyExpression));
1097 result = MkBadDeclStmt(CopyDeclaration(stmt->decl));
1103 result->loc = stmt->loc;
1108 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Enumerator;
1112 struct Enumerator * prev;
1113 struct Enumerator * next;
1114 struct Location loc;
1115 struct Identifier * id;
1116 struct Expression * exp;
1117 } __attribute__ ((gcc_struct));
1119 extern struct Enumerator * MkEnumerator(struct Identifier * id, struct Expression * exp);
1121 static struct Enumerator * CopyEnumerator(struct Enumerator * enumerator)
1123 return MkEnumerator(CopyIdentifier(enumerator->id), CopyExpression(enumerator->exp));
1126 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_PropertyDef;
1130 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_PropertyWatch;
1132 struct PropertyWatch;
1134 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_ClassDef;
1138 struct ClassDef * prev;
1139 struct ClassDef * next;
1140 struct Location loc;
1144 struct Declaration * decl;
1145 struct ClassFunction * function;
1146 struct __ecereNameSpace__ecere__sys__OldList * defProperties;
1147 struct PropertyDef * propertyDef;
1148 struct PropertyWatch * propertyWatch;
1150 struct Identifier * defaultProperty;
1153 struct Identifier * id;
1154 struct Initializer * initializer;
1155 } __attribute__ ((gcc_struct));
1156 } __attribute__ ((gcc_struct));
1159 } __attribute__ ((gcc_struct));
1161 extern struct ClassDef * MkClassDefDeclaration(struct Declaration * decl);
1163 struct ClassDef * CopyClassDef(struct ClassDef * def)
1168 return (((void *)0));
1170 return (((void *)0));
1172 return MkClassDefDeclaration(CopyDeclaration(def->decl));
1174 return (((void *)0));
1176 return (((void *)0));
1179 extern struct Specifier * MkSpecifier(int specifier);
1181 extern struct Specifier * MkEnum(struct Identifier * id, struct __ecereNameSpace__ecere__sys__OldList * list);
1183 extern struct Specifier * MkStructOrUnion(int type, struct Identifier * id, struct __ecereNameSpace__ecere__sys__OldList * definitions);
1185 struct ExtDecl * CopyExtDecl(struct ExtDecl * extDecl);
1187 extern char * __ecereNameSpace__ecere__sys__CopyString(char * string);
1189 extern struct Specifier * MkSpecifierSubClass(struct Specifier * _class);
1191 extern struct Specifier * MkSpecifierExtended(struct ExtDecl * extDecl);
1193 struct Specifier * CopySpecifier(struct Specifier * spec)
1199 return MkSpecifier(spec->specifier);
1202 struct Identifier * id = CopyIdentifier(spec->id);
1203 struct __ecereNameSpace__ecere__sys__OldList * list = MkList();
1204 struct Enumerator * enumerator;
1208 for(enumerator = (*spec->list).first; enumerator; enumerator = enumerator->next)
1209 ListAdd(list, CopyEnumerator(enumerator));
1211 return MkEnum(id, list);
1216 struct Identifier * id = CopyIdentifier(spec->id);
1217 struct __ecereNameSpace__ecere__sys__OldList * list = (((void *)0));
1218 struct ClassDef * def;
1219 struct Specifier * s;
1221 if(spec->definitions)
1226 for(def = (*spec->list).first; def; def = def->next)
1227 ListAdd(list, CopyClassDef(def));
1230 s = MkStructOrUnion(spec->type, id, list);
1231 s->extDeclStruct = CopyExtDecl(spec->extDeclStruct);
1236 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);
1241 return MkSpecifierSubClass(CopySpecifier(spec->_class));
1243 return __extension__ ({
1244 struct Specifier * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Specifier);
1246 __ecereInstance1->loc = spec->loc, __ecereInstance1->type = 8, __ecereInstance1->templateParameter = spec->templateParameter, __ecereInstance1;
1249 return MkSpecifierExtended(CopyExtDecl(spec->extDecl));
1251 return (((void *)0));
1254 extern struct TypeName * MkTypeName(struct __ecereNameSpace__ecere__sys__OldList * qualifiers, struct Declarator * declarator);
1256 struct Declarator * CopyDeclarator(struct Declarator * declarator);
1258 struct TypeName * CopyTypeName(struct TypeName * typeName)
1260 struct __ecereNameSpace__ecere__sys__OldList * list = (((void *)0));
1261 struct TypeName * copy;
1263 if(typeName->qualifiers)
1265 struct Specifier * spec;
1268 for(spec = (*typeName->qualifiers).first; spec; spec = spec->next)
1269 ListAdd(list, CopySpecifier(spec));
1271 copy = MkTypeName(list, CopyDeclarator(typeName->declarator));
1272 copy->classObjectType = typeName->classObjectType;
1276 extern struct ExtDecl * MkExtDeclAttrib(struct Attrib * attr);
1278 struct Attrib * CopyAttrib(struct Attrib * attrib);
1280 extern struct ExtDecl * MkExtDeclString(char * s);
1282 struct ExtDecl * CopyExtDecl(struct ExtDecl * extDecl)
1286 if(extDecl->type == 1)
1287 return MkExtDeclAttrib(CopyAttrib(extDecl->attr));
1288 else if(extDecl->type == 0)
1289 return MkExtDeclString(__ecereNameSpace__ecere__sys__CopyString(extDecl->s));
1291 return (((void *)0));
1294 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Attribute;
1298 struct Attribute * prev;
1299 struct Attribute * next;
1300 struct Location loc;
1302 struct Expression * exp;
1303 } __attribute__ ((gcc_struct));
1305 extern struct Attribute * MkAttribute(char * attr, struct Expression * exp);
1307 struct Attribute * CopyAttribute(struct Attribute * attrib)
1310 return MkAttribute(__ecereNameSpace__ecere__sys__CopyString(attrib->attr), CopyExpression(attrib->exp));
1311 return (((void *)0));
1314 extern struct Attrib * MkAttrib(int type, struct __ecereNameSpace__ecere__sys__OldList * attribs);
1316 struct Attrib * CopyAttrib(struct Attrib * attrib)
1319 return MkAttrib(attrib->type, CopyList(attrib->attribs, CopyAttribute));
1320 return (((void *)0));
1323 extern struct Declarator * MkStructDeclarator(struct Declarator * declarator, struct Expression * exp);
1325 extern struct Declarator * MkDeclaratorIdentifier(struct Identifier * id);
1327 extern struct Declarator * MkDeclaratorBrackets(struct Declarator * declarator);
1329 extern struct Declarator * MkDeclaratorEnumArray(struct Declarator * declarator, struct Specifier * _class);
1331 extern struct Declarator * MkDeclaratorArray(struct Declarator * declarator, struct Expression * exp);
1333 extern struct Declarator * MkDeclaratorFunction(struct Declarator * declarator, struct __ecereNameSpace__ecere__sys__OldList * parameters);
1335 extern struct Declarator * MkDeclaratorPointer(struct Pointer * pointer, struct Declarator * declarator);
1337 extern struct Declarator * MkDeclaratorExtended(struct ExtDecl * extended, struct Declarator * declarator);
1339 extern struct Declarator * MkDeclaratorExtendedEnd(struct ExtDecl * extended, struct Declarator * declarator);
1341 struct Declarator * CopyDeclarator(struct Declarator * declarator)
1345 switch(declarator->type)
1349 struct Declarator * decl = MkStructDeclarator(CopyDeclarator(declarator->declarator), CopyExpression(declarator->structDecl.exp));
1351 if(declarator->structDecl.attrib)
1352 decl->structDecl.attrib = CopyAttrib(declarator->structDecl.attrib);
1356 return MkDeclaratorIdentifier(CopyIdentifier(declarator->identifier));
1358 return MkDeclaratorBrackets(CopyDeclarator(declarator->declarator));
1360 if(declarator->array.enumClass)
1361 return MkDeclaratorEnumArray(CopyDeclarator(declarator->declarator), CopySpecifier(declarator->array.enumClass));
1363 return MkDeclaratorArray(CopyDeclarator(declarator->declarator), CopyExpression(declarator->array.exp));
1366 struct __ecereNameSpace__ecere__sys__OldList * parameters = MkList();
1367 struct TypeName * param;
1369 if(declarator->function.parameters)
1371 for(param = (*declarator->function.parameters).first; param; param = param->next)
1372 ListAdd(parameters, CopyTypeName(param));
1374 return MkDeclaratorFunction(CopyDeclarator(declarator->declarator), parameters);
1377 return MkDeclaratorPointer(CopyPointer(declarator->pointer.pointer), CopyDeclarator(declarator->declarator));
1379 return MkDeclaratorExtended(CopyExtDecl(declarator->extended.extended), CopyDeclarator(declarator->declarator));
1381 return MkDeclaratorExtendedEnd(CopyExtDecl(declarator->extended.extended), CopyDeclarator(declarator->declarator));
1384 return (((void *)0));
1387 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_InitDeclarator;
1389 struct InitDeclarator
1391 struct InitDeclarator * prev;
1392 struct InitDeclarator * next;
1393 struct Location loc;
1394 struct Declarator * declarator;
1395 struct Initializer * initializer;
1396 } __attribute__ ((gcc_struct));
1398 extern struct InitDeclarator * MkInitDeclarator(struct Declarator * declarator, struct Initializer * initializer);
1400 struct InitDeclarator * CopyInitDeclarator(struct InitDeclarator * initDecl)
1402 return MkInitDeclarator(CopyDeclarator(initDecl->declarator), CopyInitializer(initDecl->initializer));
1405 extern struct Declaration * MkDeclaration(struct __ecereNameSpace__ecere__sys__OldList * specifiers, struct __ecereNameSpace__ecere__sys__OldList * initDeclarators);
1407 struct Declaration * CopyDeclaration(struct Declaration * decl)
1411 return MkDeclaration(CopyList(decl->specifiers, CopySpecifier), CopyList(decl->declarators, CopyInitDeclarator));
1415 struct __ecereNameSpace__ecere__sys__OldList * specifiers = MkList(), * declarators = MkList();
1416 struct Specifier * spec;
1417 struct Declarator * declarator;
1419 for(spec = (*decl->specifiers).first; spec; spec = spec->next)
1420 ListAdd(specifiers, CopySpecifier(spec));
1421 if(decl->declarators)
1423 for(declarator = (*decl->declarators).first; declarator; declarator = declarator->next)
1424 ListAdd(declarators, CopyDeclarator(declarator));
1426 return MkDeclaration(specifiers, declarators);
1430 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__sys__Item;
1432 struct __ecereNameSpace__ecere__sys__Item
1434 struct __ecereNameSpace__ecere__sys__Item * prev;
1435 struct __ecereNameSpace__ecere__sys__Item * next;
1436 } __attribute__ ((gcc_struct));
1438 struct __ecereNameSpace__ecere__sys__OldList * CopyList(struct __ecereNameSpace__ecere__sys__OldList * source, void * (* CopyFunction)(void *))
1440 struct __ecereNameSpace__ecere__sys__OldList * list = (((void *)0));
1444 struct __ecereNameSpace__ecere__sys__Item * item;
1447 for(item = (*source).first; item; item = item->next)
1448 ListAdd(list, CopyFunction(item));
1453 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__GlobalFunction;
1455 struct __ecereNameSpace__ecere__com__GlobalFunction;
1457 extern struct __ecereNameSpace__ecere__com__GlobalFunction * __ecereNameSpace__ecere__com__eSystem_RegisterFunction(char * name, char * type, void * func, struct __ecereNameSpace__ecere__com__Instance * module, int declMode);
1459 void __ecereRegisterModule_copy(struct __ecereNameSpace__ecere__com__Instance * module)
1461 struct __ecereNameSpace__ecere__com__Class * class;
1463 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("CopyIdentifier", "Identifier CopyIdentifier(Identifier id)", CopyIdentifier, module, 2);
1464 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("CopyExpression", "Expression CopyExpression(Expression exp)", CopyExpression, module, 1);
1465 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("CopyClassDef", "ClassDef CopyClassDef(ClassDef def)", CopyClassDef, module, 2);
1466 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("CopySpecifier", "Specifier CopySpecifier(Specifier spec)", CopySpecifier, module, 2);
1467 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("CopyTypeName", "TypeName CopyTypeName(TypeName typeName)", CopyTypeName, module, 2);
1468 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("CopyExtDecl", "ExtDecl CopyExtDecl(ExtDecl extDecl)", CopyExtDecl, module, 2);
1469 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("CopyAttribute", "Attribute CopyAttribute(Attribute attrib)", CopyAttribute, module, 2);
1470 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("CopyAttrib", "Attrib CopyAttrib(Attrib attrib)", CopyAttrib, module, 2);
1471 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("CopyDeclarator", "Declarator CopyDeclarator(Declarator declarator)", CopyDeclarator, module, 2);
1472 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("CopyInitDeclarator", "InitDeclarator CopyInitDeclarator(InitDeclarator initDecl)", CopyInitDeclarator, module, 2);
1473 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("CopyDeclaration", "Declaration CopyDeclaration(Declaration decl)", CopyDeclaration, module, 2);
1474 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("CopyList", "ecere::sys::OldList * CopyList(ecere::sys::OldList * source, void * (* CopyFunction)(void *))", CopyList, module, 2);
1477 void __ecereUnregisterModule_copy(struct __ecereNameSpace__ecere__com__Instance * module)