2 typedef long long int64;
3 typedef unsigned long long uint64;
4 #elif defined(__TINYC__)
6 #define __builtin_va_list va_list
7 #define __builtin_va_start va_start
8 #define __builtin_va_end va_end
10 #define strcasecmp stricmp
11 #define strncasecmp strnicmp
12 #define __declspec(x) __attribute__((x))
14 typedef long long int64;
15 typedef unsigned long long uint64;
17 typedef __int64 int64;
18 typedef unsigned __int64 uint64;
21 #define __ENDIAN_PAD(x) (8 - (x))
23 #define __ENDIAN_PAD(x) 0
25 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__sys__BTNode;
27 struct __ecereNameSpace__ecere__sys__BTNode;
29 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__sys__BinaryTree;
31 struct __ecereNameSpace__ecere__sys__BinaryTree
33 struct __ecereNameSpace__ecere__sys__BTNode * root;
35 int (* CompareKey)(struct __ecereNameSpace__ecere__sys__BinaryTree * tree, unsigned int a, unsigned int b);
36 void (* FreeKey)(void * key);
39 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__sys__OldList;
41 struct __ecereNameSpace__ecere__sys__OldList
50 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__Method;
52 struct __ecereNameSpace__ecere__com__Method
55 struct __ecereNameSpace__ecere__com__Method * parent;
56 struct __ecereNameSpace__ecere__com__Method * left;
57 struct __ecereNameSpace__ecere__com__Method * right;
62 struct __ecereNameSpace__ecere__com__Class * _class;
64 char * dataTypeString;
65 struct Type * dataType;
69 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__Property;
71 struct __ecereNameSpace__ecere__com__Property
73 struct __ecereNameSpace__ecere__com__Property * prev;
74 struct __ecereNameSpace__ecere__com__Property * next;
76 unsigned int isProperty;
79 struct __ecereNameSpace__ecere__com__Class * _class;
80 char * dataTypeString;
81 struct __ecereNameSpace__ecere__com__Class * dataTypeClass;
82 struct Type * dataType;
85 unsigned int (* IsSet)();
89 unsigned int conversion;
90 unsigned int watcherOffset;
92 unsigned int compiled;
93 unsigned int selfWatchable;
94 unsigned int isWatchable;
97 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_CodePosition;
104 unsigned int included;
107 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Location;
111 struct CodePosition start;
112 struct CodePosition end;
115 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Attrib;
121 struct __ecereNameSpace__ecere__sys__OldList * attribs;
124 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_ExtDecl;
133 struct Attrib * attr;
137 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_ClassDefinition;
139 struct ClassDefinition;
141 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Context;
145 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Instantiation;
149 struct Instantiation * prev;
150 struct Instantiation * next;
152 struct Specifier * _class;
153 struct Expression * exp;
154 struct __ecereNameSpace__ecere__sys__OldList * members;
155 struct Symbol * symbol;
156 unsigned int fullSet;
157 unsigned int isConstant;
158 unsigned char * data;
159 struct Location nameLoc;
160 struct Location insideLoc;
164 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Declaration;
168 struct Declaration * prev;
169 struct Declaration * next;
176 struct __ecereNameSpace__ecere__sys__OldList * specifiers;
177 struct __ecereNameSpace__ecere__sys__OldList * declarators;
179 struct Instantiation * inst;
182 struct Identifier * id;
183 struct Expression * exp;
186 struct Specifier * extStorage;
187 struct Symbol * symbol;
191 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Statement;
195 struct Statement * prev;
196 struct Statement * next;
201 struct __ecereNameSpace__ecere__sys__OldList * expressions;
204 struct Identifier * id;
205 struct Statement * stmt;
209 struct Expression * exp;
210 struct Statement * stmt;
214 struct __ecereNameSpace__ecere__sys__OldList * declarations;
215 struct __ecereNameSpace__ecere__sys__OldList * statements;
216 struct Context * context;
217 unsigned int isSwitch;
221 struct __ecereNameSpace__ecere__sys__OldList * exp;
222 struct Statement * stmt;
223 struct Statement * elseStmt;
227 struct __ecereNameSpace__ecere__sys__OldList * exp;
228 struct Statement * stmt;
232 struct __ecereNameSpace__ecere__sys__OldList * exp;
233 struct Statement * stmt;
237 struct __ecereNameSpace__ecere__sys__OldList * exp;
238 struct Statement * stmt;
242 struct Statement * init;
243 struct Statement * check;
244 struct __ecereNameSpace__ecere__sys__OldList * increment;
245 struct Statement * stmt;
249 struct Identifier * id;
253 struct Specifier * spec;
255 struct __ecereNameSpace__ecere__sys__OldList * inputFields;
256 struct __ecereNameSpace__ecere__sys__OldList * outputFields;
257 struct __ecereNameSpace__ecere__sys__OldList * clobberedFields;
261 struct Expression * watcher;
262 struct Expression * object;
263 struct __ecereNameSpace__ecere__sys__OldList * watches;
267 struct Identifier * id;
268 struct __ecereNameSpace__ecere__sys__OldList * exp;
269 struct __ecereNameSpace__ecere__sys__OldList * filter;
270 struct Statement * stmt;
272 struct Declaration * decl;
276 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_TypeName;
280 struct TypeName * prev;
281 struct TypeName * next;
283 struct __ecereNameSpace__ecere__sys__OldList * qualifiers;
284 struct Declarator * declarator;
286 struct Expression * bitCount;
289 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Initializer;
293 struct Initializer * prev;
294 struct Initializer * next;
299 struct Expression * exp;
300 struct __ecereNameSpace__ecere__sys__OldList * list;
302 unsigned int isConstant;
305 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__DataValue;
307 struct __ecereNameSpace__ecere__com__DataValue
325 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Expression;
329 struct Expression * prev;
330 struct Expression * next;
338 struct Identifier * identifier;
340 struct Statement * compound;
341 struct Instantiation * instance;
343 struct __ecereNameSpace__ecere__sys__OldList * list;
346 struct __ecereNameSpace__ecere__sys__OldList * specifiers;
347 struct Declarator * decl;
351 struct Identifier * id;
355 struct Expression * exp;
356 struct __ecereNameSpace__ecere__sys__OldList * arguments;
357 struct Location argLoc;
361 struct Expression * exp;
362 struct __ecereNameSpace__ecere__sys__OldList * index;
366 struct Expression * exp;
367 struct Identifier * member;
369 unsigned int thisPtr;
374 struct Expression * exp1;
375 struct Expression * exp2;
377 struct TypeName * typeName;
378 struct Specifier * _class;
381 struct TypeName * typeName;
382 struct Expression * exp;
386 struct Expression * cond;
387 struct __ecereNameSpace__ecere__sys__OldList * exp;
388 struct Expression * elseExp;
392 struct TypeName * typeName;
393 struct Expression * size;
397 struct TypeName * typeName;
398 struct Expression * size;
399 struct Expression * exp;
404 struct Identifier * id;
408 struct Expression * ds;
409 struct Expression * name;
413 struct TypeName * typeName;
414 struct Initializer * initializer;
418 struct Expression * exp;
419 struct TypeName * typeName;
422 unsigned int debugValue;
423 struct __ecereNameSpace__ecere__com__DataValue val;
424 unsigned int address;
425 unsigned int hasAddress;
426 struct Type * expType;
427 struct Type * destType;
430 unsigned int byReference;
431 unsigned int isConstant;
432 unsigned int addedThis;
433 unsigned int needCast;
434 unsigned int thisPtr;
437 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_TemplateDatatype;
439 struct TemplateDatatype;
441 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_TemplateArgument;
443 struct TemplateArgument;
445 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_TemplateParameter;
447 struct TemplateParameter;
449 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Specifier;
453 struct Specifier * prev;
454 struct Specifier * next;
462 struct ExtDecl * extDecl;
464 struct Symbol * symbol;
465 struct __ecereNameSpace__ecere__sys__OldList * templateArgs;
469 struct Identifier * id;
470 struct __ecereNameSpace__ecere__sys__OldList * list;
471 struct __ecereNameSpace__ecere__sys__OldList * baseSpecs;
472 struct __ecereNameSpace__ecere__sys__OldList * definitions;
473 unsigned int addNameSpace;
474 struct Context * ctx;
476 struct Expression * expression;
477 struct Specifier * _class;
478 struct TemplateParameter * templateParameter;
482 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Identifier;
486 struct Identifier * prev;
487 struct Identifier * next;
489 struct Symbol * classSym;
490 struct Specifier * _class;
492 struct Identifier * badID;
495 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Pointer;
499 struct Pointer * prev;
500 struct Pointer * next;
502 struct __ecereNameSpace__ecere__sys__OldList * qualifiers;
503 struct Pointer * pointer;
506 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Declarator;
510 struct Declarator * prev;
511 struct Declarator * next;
514 struct Symbol * symbol;
515 struct Declarator * declarator;
518 struct Identifier * identifier;
521 struct Expression * exp;
522 struct Expression * posExp;
523 struct Attrib * attrib;
527 struct Expression * exp;
528 struct Specifier * enumClass;
532 struct __ecereNameSpace__ecere__sys__OldList * parameters;
536 struct Pointer * pointer;
540 struct ExtDecl * extended;
545 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_FunctionDefinition;
547 struct FunctionDefinition;
549 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_DBTableDef;
553 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_External;
557 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_ModuleImport;
561 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_ClassImport;
565 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Symbol;
569 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Type;
578 struct Symbol * _class;
581 struct __ecereNameSpace__ecere__sys__OldList members;
586 struct Type * returnType;
587 struct __ecereNameSpace__ecere__sys__OldList params;
588 struct Symbol * thisClass;
589 unsigned int staticMethod;
590 struct TemplateParameter * thisClassTemplate;
594 struct __ecereNameSpace__ecere__com__Method * method;
595 struct __ecereNameSpace__ecere__com__Class * methodClass;
596 struct __ecereNameSpace__ecere__com__Class * usedClass;
600 struct Type * arrayType;
602 struct Expression * arraySizeExp;
603 unsigned int freeExp;
604 struct Symbol * enumClass;
607 struct TemplateParameter * templateParameter;
609 unsigned int isSigned;
611 unsigned int constant;
618 unsigned int byReference;
619 unsigned int extraParam;
621 unsigned int directClassAccess;
622 unsigned int computing;
623 unsigned int dllExport;
625 unsigned int keepCast;
626 unsigned int passAsTemplate;
630 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__Class;
632 struct __ecereNameSpace__ecere__com__Class
634 struct __ecereNameSpace__ecere__com__Class * prev;
635 struct __ecereNameSpace__ecere__com__Class * next;
641 int (* Constructor)(struct __ecereNameSpace__ecere__com__Instance *);
642 void (* Destructor)(struct __ecereNameSpace__ecere__com__Instance *);
645 struct __ecereNameSpace__ecere__com__Class * base;
646 struct __ecereNameSpace__ecere__sys__BinaryTree methods;
647 struct __ecereNameSpace__ecere__sys__BinaryTree members;
648 struct __ecereNameSpace__ecere__sys__BinaryTree prop;
649 struct __ecereNameSpace__ecere__sys__OldList membersAndProperties;
650 struct __ecereNameSpace__ecere__sys__BinaryTree classProperties;
651 struct __ecereNameSpace__ecere__sys__OldList derivatives;
655 struct __ecereNameSpace__ecere__com__Instance * module;
656 struct __ecereNameSpace__ecere__com__NameSpace * nameSpace;
657 char * dataTypeString;
658 struct Type * dataType;
660 int defaultAlignment;
661 void (* Initialize)();
663 struct __ecereNameSpace__ecere__sys__OldList selfWatchers;
664 char * designerClass;
665 unsigned int noExpansion;
666 char * defaultProperty;
667 unsigned int comRedefinition;
669 unsigned int isRemote;
670 unsigned int internalDecl;
672 unsigned int computeSize;
674 int destructionWatchOffset;
676 struct __ecereNameSpace__ecere__sys__OldList delayedCPValues;
677 int inheritanceAccess;
680 struct __ecereNameSpace__ecere__sys__OldList conversions;
681 struct __ecereNameSpace__ecere__sys__OldList templateParams;
682 struct __ecereNameSpace__ecere__com__ClassTemplateArgument * templateArgs;
683 struct __ecereNameSpace__ecere__com__Class * templateClass;
684 struct __ecereNameSpace__ecere__sys__OldList templatized;
688 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__Instance;
690 struct __ecereNameSpace__ecere__com__Instance
693 struct __ecereNameSpace__ecere__com__Class * _class;
697 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__DataMember;
699 struct __ecereNameSpace__ecere__com__DataMember
701 struct __ecereNameSpace__ecere__com__DataMember * prev;
702 struct __ecereNameSpace__ecere__com__DataMember * next;
704 unsigned int isProperty;
707 struct __ecereNameSpace__ecere__com__Class * _class;
708 char * dataTypeString;
709 struct __ecereNameSpace__ecere__com__Class * dataTypeClass;
710 struct Type * dataType;
714 struct __ecereNameSpace__ecere__sys__OldList members;
715 struct __ecereNameSpace__ecere__sys__BinaryTree membersAlpha;
720 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__SerialBuffer;
722 struct __ecereNameSpace__ecere__com__SerialBuffer
724 unsigned char * _buffer;
730 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__ClassTemplateArgument;
732 struct __ecereNameSpace__ecere__com__ClassTemplateArgument
738 char * dataTypeString;
739 struct __ecereNameSpace__ecere__com__Class * dataTypeClass;
741 struct __ecereNameSpace__ecere__com__DataValue expression;
747 struct __ecereNameSpace__ecere__com__DataMember * member;
748 struct __ecereNameSpace__ecere__com__Property * prop;
749 struct __ecereNameSpace__ecere__com__Method * method;
755 extern struct Identifier * MkIdentifier(char * string);
757 struct Specifier * CopySpecifier(struct Specifier * spec);
759 struct Identifier * CopyIdentifier(struct Identifier * id)
763 struct Identifier * copy = MkIdentifier(id->string);
765 copy->_class = id->_class ? CopySpecifier(id->_class) : (((void *)0));
766 copy->classSym = id->classSym;
769 return (((void *)0));
772 extern struct __ecereNameSpace__ecere__sys__OldList * MkList(void);
774 extern void ListAdd(struct __ecereNameSpace__ecere__sys__OldList * list, void * item);
776 extern struct Pointer * MkPointer(struct __ecereNameSpace__ecere__sys__OldList * qualifiers, struct Pointer * pointer);
778 static struct Pointer * CopyPointer(struct Pointer * ptr)
782 struct __ecereNameSpace__ecere__sys__OldList * list = MkList();
783 struct Specifier * spec;
787 for(spec = (*ptr->qualifiers).first; spec; spec = spec->next)
788 ListAdd(list, CopySpecifier(spec));
790 return MkPointer(list, CopyPointer(ptr->pointer));
792 return (((void *)0));
795 extern struct Initializer * MkInitializerAssignment(struct Expression * exp);
797 struct Expression * CopyExpression(struct Expression * exp);
799 extern struct Initializer * MkInitializerList(struct __ecereNameSpace__ecere__sys__OldList * list);
801 struct __ecereNameSpace__ecere__sys__OldList * CopyList(struct __ecereNameSpace__ecere__sys__OldList * source, void * (* CopyFunction)(void * ));
803 static struct Initializer * CopyInitializer(struct Initializer * initializer)
805 struct Initializer * copy = (((void *)0));
808 if(initializer->type == 0)
809 copy = MkInitializerAssignment(CopyExpression(initializer->exp));
810 else if(initializer->type == 1)
811 copy = MkInitializerList(CopyList(initializer->list, CopyInitializer));
814 copy->loc = initializer->loc;
815 copy->isConstant = initializer->isConstant;
820 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_MemberInit;
824 struct MemberInit * prev;
825 struct MemberInit * next;
827 struct Location realLoc;
828 struct __ecereNameSpace__ecere__sys__OldList * identifiers;
829 struct Initializer * initializer;
831 unsigned int variable;
832 unsigned int takeOutExp;
835 extern struct MemberInit * MkMemberInit(struct __ecereNameSpace__ecere__sys__OldList * ids, struct Initializer * initializer);
837 static struct MemberInit * CopyMemberInit(struct MemberInit * member)
839 return MkMemberInit(CopyList(member->identifiers, CopyIdentifier), CopyInitializer(member->initializer));
842 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_ClassFunction;
844 struct ClassFunction;
846 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_MembersInit;
850 struct MembersInit * prev;
851 struct MembersInit * next;
856 struct __ecereNameSpace__ecere__sys__OldList * dataMembers;
857 struct ClassFunction * function;
861 extern struct MembersInit * MkMembersInitList(struct __ecereNameSpace__ecere__sys__OldList * dataMembers);
863 static struct MembersInit * CopyMembersInit(struct MembersInit * members)
865 struct __ecereNameSpace__ecere__sys__OldList * list = (((void *)0));
867 switch(members->type)
873 struct MemberInit * member;
876 for(member = (*members->dataMembers).first; member; member = member->next)
877 ListAdd(list, CopyMemberInit(member));
881 return MkMembersInitList(list);
884 extern struct Instantiation * MkInstantiation(struct Specifier * _class, struct Expression * exp, struct __ecereNameSpace__ecere__sys__OldList * members);
886 static struct Instantiation * CopyInstantiation(struct Instantiation * inst)
888 struct Instantiation * copy;
889 struct __ecereNameSpace__ecere__sys__OldList * list = MkList();
890 struct MembersInit * member;
894 for(member = (*inst->members).first; member; member = member->next)
895 ListAdd(list, CopyMembersInit(member));
897 copy = MkInstantiation(CopySpecifier(inst->_class), CopyExpression(inst->exp), list);
898 copy->data = inst->data;
899 copy->loc = inst->loc;
900 copy->isConstant = inst->isConstant;
904 extern struct Expression * MkExpDummy(void);
906 extern struct Expression * MkExpIdentifier(struct Identifier * id);
908 extern struct Expression * MkExpInstance(struct Instantiation * inst);
910 extern struct Expression * MkExpConstant(char * string);
912 extern struct Expression * MkExpString(char * string);
914 extern struct Expression * MkExpOp(struct Expression * exp1, int op, struct Expression * exp2);
916 extern struct Expression * MkExpBrackets(struct __ecereNameSpace__ecere__sys__OldList * expressions);
918 extern struct Expression * MkExpIndex(struct Expression * expression, struct __ecereNameSpace__ecere__sys__OldList * index);
920 extern struct Expression * MkExpCall(struct Expression * expression, struct __ecereNameSpace__ecere__sys__OldList * arguments);
922 extern struct Expression * MkExpMember(struct Expression * expression, struct Identifier * member);
924 extern struct Expression * MkExpPointer(struct Expression * expression, struct Identifier * member);
926 extern struct Expression * MkExpTypeSize(struct TypeName * typeName);
928 struct TypeName * CopyTypeName(struct TypeName * typeName);
930 extern struct Expression * MkExpTypeAlign(struct TypeName * typeName);
932 extern struct Expression * MkExpCast(struct TypeName * typeName, struct Expression * expression);
934 extern struct Expression * MkExpCondition(struct Expression * cond, struct __ecereNameSpace__ecere__sys__OldList * expressions, struct Expression * elseExp);
936 extern struct Expression * MkExpVaArg(struct Expression * exp, struct TypeName * type);
938 extern struct Expression * MkExpExtensionCompound(struct Statement * compound);
940 static struct Statement * CopyStatement(struct Statement * stmt);
942 struct Expression * CopyExpression(struct Expression * exp)
944 struct Expression * result = (((void *)0));
950 result = MkExpDummy();
953 result = MkExpIdentifier(CopyIdentifier(exp->identifier));
956 result = MkExpInstance(CopyInstantiation(exp->instance));
959 result = MkExpConstant(exp->string);
962 result = MkExpString(exp->string);
965 result = MkExpOp(CopyExpression(exp->op.exp1), exp->op.op, CopyExpression(exp->op.exp2));
969 struct __ecereNameSpace__ecere__sys__OldList * list = MkList();
970 struct Expression * e;
972 for(e = (*exp->list).first; e; e = e->next)
973 ListAdd(list, CopyExpression(e));
974 result = MkExpBrackets(list);
979 struct __ecereNameSpace__ecere__sys__OldList * list = MkList();
980 struct Expression * e;
982 for(e = (*exp->index.index).first; e; e = e->next)
983 ListAdd(list, CopyExpression(e));
984 result = MkExpIndex(CopyExpression(exp->index.exp), list);
989 struct __ecereNameSpace__ecere__sys__OldList * list = MkList();
990 struct Expression * arg;
992 if(exp->call.arguments)
994 for(arg = (*exp->call.arguments).first; arg; arg = arg->next)
995 ListAdd(list, CopyExpression(arg));
997 result = MkExpCall(CopyExpression(exp->call.exp), list);
1001 result = MkExpMember(CopyExpression(exp->member.exp), CopyIdentifier(exp->member.member));
1002 result->member.memberType = exp->member.memberType;
1003 result->member.thisPtr = exp->member.thisPtr;
1006 result = MkExpPointer(CopyExpression(exp->member.exp), CopyIdentifier(exp->member.member));
1009 result = MkExpTypeSize(CopyTypeName(exp->typeName));
1012 result = MkExpTypeAlign(CopyTypeName(exp->typeName));
1015 result = MkExpCast(CopyTypeName(exp->cast.typeName), CopyExpression(exp->cast.exp));
1019 struct __ecereNameSpace__ecere__sys__OldList * list = MkList();
1020 struct Expression * e;
1022 for(e = (*exp->cond.exp).first; e; e = e->next)
1023 ListAdd(list, CopyExpression(e));
1024 result = MkExpCondition(CopyExpression(exp->cond.cond), list, CopyExpression(exp->cond.elseExp));
1028 result = MkExpVaArg(CopyExpression(exp->vaArg.exp), CopyTypeName(exp->vaArg.typeName));
1031 result = MkExpExtensionCompound(CopyStatement(exp->compound));
1036 result->expType = exp->expType;
1038 exp->expType->refCount++;
1039 result->destType = exp->destType;
1041 exp->destType->refCount++;
1042 result->loc = exp->loc;
1043 result->isConstant = exp->isConstant;
1044 result->byReference = exp->byReference;
1049 extern struct Statement * MkCompoundStmt(struct __ecereNameSpace__ecere__sys__OldList * declarations, struct __ecereNameSpace__ecere__sys__OldList * statements);
1051 struct Declaration * CopyDeclaration(struct Declaration * decl);
1053 extern struct Statement * MkExpressionStmt(struct __ecereNameSpace__ecere__sys__OldList * expressions);
1055 extern void * __ecereNameSpace__ecere__com__eInstance_New(struct __ecereNameSpace__ecere__com__Class * _class);
1057 static struct Statement * CopyStatement(struct Statement * stmt)
1059 struct Statement * result = (((void *)0));
1066 result = MkCompoundStmt(CopyList(stmt->compound.declarations, CopyDeclaration), CopyList(stmt->compound.statements, CopyStatement));
1067 result->compound.context = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Context);
1070 result = MkExpressionStmt(CopyList(stmt->expressions, CopyExpression));
1076 result->loc = stmt->loc;
1081 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Enumerator;
1085 struct Enumerator * prev;
1086 struct Enumerator * next;
1087 struct Location loc;
1088 struct Identifier * id;
1089 struct Expression * exp;
1092 extern struct Enumerator * MkEnumerator(struct Identifier * id, struct Expression * exp);
1094 static struct Enumerator * CopyEnumerator(struct Enumerator * enumerator)
1096 return MkEnumerator(CopyIdentifier(enumerator->id), CopyExpression(enumerator->exp));
1099 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_PropertyDef;
1103 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_PropertyWatch;
1105 struct PropertyWatch;
1107 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_ClassDef;
1111 struct ClassDef * prev;
1112 struct ClassDef * next;
1113 struct Location loc;
1117 struct Declaration * decl;
1118 struct ClassFunction * function;
1119 struct __ecereNameSpace__ecere__sys__OldList * defProperties;
1120 struct PropertyDef * propertyDef;
1121 struct PropertyWatch * propertyWatch;
1123 struct Identifier * defaultProperty;
1126 struct Identifier * id;
1127 struct Initializer * initializer;
1134 extern struct ClassDef * MkClassDefDeclaration(struct Declaration * decl);
1136 struct ClassDef * CopyClassDef(struct ClassDef * def)
1141 return (((void *)0));
1143 return (((void *)0));
1145 return MkClassDefDeclaration(CopyDeclaration(def->decl));
1147 return (((void *)0));
1149 return (((void *)0));
1152 extern struct Specifier * MkSpecifier(int specifier);
1154 extern struct Specifier * MkEnum(struct Identifier * id, struct __ecereNameSpace__ecere__sys__OldList * list);
1156 extern struct Specifier * MkStructOrUnion(int type, struct Identifier * id, struct __ecereNameSpace__ecere__sys__OldList * definitions);
1158 extern char * __ecereNameSpace__ecere__sys__CopyString(char * string);
1160 extern struct Specifier * MkSpecifierSubClass(struct Specifier * _class);
1162 extern struct Specifier * MkSpecifierExtended(struct ExtDecl * extDecl);
1164 struct ExtDecl * CopyExtDecl(struct ExtDecl * extDecl);
1166 struct Specifier * CopySpecifier(struct Specifier * spec)
1168 void * __ecereTemp1;
1174 return MkSpecifier(spec->specifier);
1177 struct Identifier * id = CopyIdentifier(spec->id);
1178 struct __ecereNameSpace__ecere__sys__OldList * list = MkList();
1179 struct Enumerator * enumerator;
1183 for(enumerator = (*spec->list).first; enumerator; enumerator = enumerator->next)
1184 ListAdd(list, CopyEnumerator(enumerator));
1186 return MkEnum(id, list);
1191 struct Identifier * id = CopyIdentifier(spec->id);
1192 struct __ecereNameSpace__ecere__sys__OldList * list = (((void *)0));
1193 struct ClassDef * def;
1195 if(spec->definitions)
1200 for(def = (*spec->list).first; def; def = def->next)
1201 ListAdd(list, CopyClassDef(def));
1204 return MkStructOrUnion(spec->type, id, list);
1208 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);
1213 return MkSpecifierSubClass(CopySpecifier(spec->_class));
1215 return (__ecereTemp1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Specifier), ((struct Specifier *)__ecereTemp1)->loc = spec->loc, ((struct Specifier *)__ecereTemp1)->type = 8, ((struct Specifier *)__ecereTemp1)->templateParameter = spec->templateParameter, ((struct Specifier *)__ecereTemp1));
1217 return MkSpecifierExtended(CopyExtDecl(spec->extDecl));
1219 return (((void *)0));
1222 extern struct TypeName * MkTypeName(struct __ecereNameSpace__ecere__sys__OldList * qualifiers, struct Declarator * declarator);
1224 struct Declarator * CopyDeclarator(struct Declarator * declarator);
1226 struct TypeName * CopyTypeName(struct TypeName * typeName)
1228 struct __ecereNameSpace__ecere__sys__OldList * list = (((void *)0));
1229 struct TypeName * copy;
1231 if(typeName->qualifiers)
1233 struct Specifier * spec;
1236 for(spec = (*typeName->qualifiers).first; spec; spec = spec->next)
1237 ListAdd(list, CopySpecifier(spec));
1239 copy = MkTypeName(list, CopyDeclarator(typeName->declarator));
1240 copy->classObjectType = typeName->classObjectType;
1244 extern struct ExtDecl * MkExtDeclAttrib(struct Attrib * attr);
1246 struct Attrib * CopyAttrib(struct Attrib * attrib);
1248 extern struct ExtDecl * MkExtDeclString(char * s);
1250 struct ExtDecl * CopyExtDecl(struct ExtDecl * extDecl)
1254 if(extDecl->type == 1)
1255 return MkExtDeclAttrib(CopyAttrib(extDecl->attr));
1256 else if(extDecl->type == 0)
1257 return MkExtDeclString(__ecereNameSpace__ecere__sys__CopyString(extDecl->s));
1259 return (((void *)0));
1262 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Attribute;
1266 struct Attribute * prev;
1267 struct Attribute * next;
1268 struct Location loc;
1270 struct Expression * exp;
1273 extern struct Attribute * MkAttribute(char * attr, struct Expression * exp);
1275 struct Attribute * CopyAttribute(struct Attribute * attrib)
1278 return MkAttribute(__ecereNameSpace__ecere__sys__CopyString(attrib->attr), CopyExpression(attrib->exp));
1279 return (((void *)0));
1282 extern struct Attrib * MkAttrib(int type, struct __ecereNameSpace__ecere__sys__OldList * attribs);
1284 struct Attrib * CopyAttrib(struct Attrib * attrib)
1287 return MkAttrib(attrib->type, CopyList(attrib->attribs, CopyAttribute));
1288 return (((void *)0));
1291 extern struct Declarator * MkStructDeclarator(struct Declarator * declarator, struct Expression * exp);
1293 extern struct Declarator * MkDeclaratorIdentifier(struct Identifier * id);
1295 extern struct Declarator * MkDeclaratorBrackets(struct Declarator * declarator);
1297 extern struct Declarator * MkDeclaratorEnumArray(struct Declarator * declarator, struct Specifier * _class);
1299 extern struct Declarator * MkDeclaratorArray(struct Declarator * declarator, struct Expression * exp);
1301 extern struct Declarator * MkDeclaratorFunction(struct Declarator * declarator, struct __ecereNameSpace__ecere__sys__OldList * parameters);
1303 extern struct Declarator * MkDeclaratorPointer(struct Pointer * pointer, struct Declarator * declarator);
1305 extern struct Declarator * MkDeclaratorExtended(struct ExtDecl * extended, struct Declarator * declarator);
1307 extern struct Declarator * MkDeclaratorExtendedEnd(struct ExtDecl * extended, struct Declarator * declarator);
1309 struct Declarator * CopyDeclarator(struct Declarator * declarator)
1313 switch(declarator->type)
1317 struct Declarator * decl = MkStructDeclarator(CopyDeclarator(declarator->declarator), CopyExpression(declarator->structDecl.exp));
1319 if(declarator->structDecl.attrib)
1320 decl->structDecl.attrib = CopyAttrib(declarator->structDecl.attrib);
1324 return MkDeclaratorIdentifier(CopyIdentifier(declarator->identifier));
1326 return MkDeclaratorBrackets(CopyDeclarator(declarator->declarator));
1328 if(declarator->array.enumClass)
1329 return MkDeclaratorEnumArray(CopyDeclarator(declarator->declarator), CopySpecifier(declarator->array.enumClass));
1331 return MkDeclaratorArray(CopyDeclarator(declarator->declarator), CopyExpression(declarator->array.exp));
1334 struct __ecereNameSpace__ecere__sys__OldList * parameters = MkList();
1335 struct TypeName * param;
1337 if(declarator->function.parameters)
1339 for(param = (*declarator->function.parameters).first; param; param = param->next)
1340 ListAdd(parameters, CopyTypeName(param));
1342 return MkDeclaratorFunction(CopyDeclarator(declarator->declarator), parameters);
1345 return MkDeclaratorPointer(CopyPointer(declarator->pointer.pointer), CopyDeclarator(declarator->declarator));
1347 return MkDeclaratorExtended(CopyExtDecl(declarator->extended.extended), CopyDeclarator(declarator->declarator));
1349 return MkDeclaratorExtendedEnd(CopyExtDecl(declarator->extended.extended), CopyDeclarator(declarator->declarator));
1352 return (((void *)0));
1355 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_InitDeclarator;
1357 struct InitDeclarator
1359 struct InitDeclarator * prev;
1360 struct InitDeclarator * next;
1361 struct Location loc;
1362 struct Declarator * declarator;
1363 struct Initializer * initializer;
1366 extern struct InitDeclarator * MkInitDeclarator(struct Declarator * declarator, struct Initializer * initializer);
1368 struct InitDeclarator * CopyInitDeclarator(struct InitDeclarator * initDecl)
1370 return MkInitDeclarator(CopyDeclarator(initDecl->declarator), CopyInitializer(initDecl->initializer));
1373 extern struct Declaration * MkDeclaration(struct __ecereNameSpace__ecere__sys__OldList * specifiers, struct __ecereNameSpace__ecere__sys__OldList * initDeclarators);
1375 struct Declaration * CopyDeclaration(struct Declaration * decl)
1379 return MkDeclaration(CopyList(decl->specifiers, CopySpecifier), CopyList(decl->declarators, CopyInitDeclarator));
1383 struct __ecereNameSpace__ecere__sys__OldList * specifiers = MkList(), * declarators = MkList();
1384 struct Specifier * spec;
1385 struct Declarator * declarator;
1387 for(spec = (*decl->specifiers).first; spec; spec = spec->next)
1388 ListAdd(specifiers, CopySpecifier(spec));
1389 if(decl->declarators)
1391 for(declarator = (*decl->declarators).first; declarator; declarator = declarator->next)
1392 ListAdd(declarators, CopyDeclarator(declarator));
1394 return MkDeclaration(specifiers, declarators);
1398 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__sys__Item;
1400 struct __ecereNameSpace__ecere__sys__Item
1402 struct __ecereNameSpace__ecere__sys__Item * prev;
1403 struct __ecereNameSpace__ecere__sys__Item * next;
1406 struct __ecereNameSpace__ecere__sys__OldList * CopyList(struct __ecereNameSpace__ecere__sys__OldList * source, void * (* CopyFunction)(void *))
1408 struct __ecereNameSpace__ecere__sys__OldList * list = (((void *)0));
1412 struct __ecereNameSpace__ecere__sys__Item * item;
1415 for(item = (*source).first; item; item = item->next)
1416 ListAdd(list, CopyFunction(item));
1421 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__GlobalFunction;
1423 struct __ecereNameSpace__ecere__com__GlobalFunction;
1425 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);
1427 void __ecereRegisterModule_copy(struct __ecereNameSpace__ecere__com__Instance * module)
1429 struct __ecereNameSpace__ecere__com__Class * class;
1431 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("CopyIdentifier", "Identifier CopyIdentifier(Identifier id)", CopyIdentifier, module, 2);
1432 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("CopyExpression", "Expression CopyExpression(Expression exp)", CopyExpression, module, 1);
1433 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("CopyClassDef", "ClassDef CopyClassDef(ClassDef def)", CopyClassDef, module, 2);
1434 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("CopySpecifier", "Specifier CopySpecifier(Specifier spec)", CopySpecifier, module, 2);
1435 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("CopyTypeName", "TypeName CopyTypeName(TypeName typeName)", CopyTypeName, module, 2);
1436 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("CopyExtDecl", "ExtDecl CopyExtDecl(ExtDecl extDecl)", CopyExtDecl, module, 2);
1437 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("CopyAttribute", "Attribute CopyAttribute(Attribute attrib)", CopyAttribute, module, 2);
1438 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("CopyAttrib", "Attrib CopyAttrib(Attrib attrib)", CopyAttrib, module, 2);
1439 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("CopyDeclarator", "Declarator CopyDeclarator(Declarator declarator)", CopyDeclarator, module, 2);
1440 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("CopyInitDeclarator", "InitDeclarator CopyInitDeclarator(InitDeclarator initDecl)", CopyInitDeclarator, module, 2);
1441 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("CopyDeclaration", "Declaration CopyDeclaration(Declaration decl)", CopyDeclaration, module, 2);
1442 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("CopyList", "ecere::sys::OldList * CopyList(ecere::sys::OldList * source, void *( *)(void *))", CopyList, module, 2);
1445 void __ecereUnregisterModule_copy(struct __ecereNameSpace__ecere__com__Instance * module)