2 typedef long long int64;
3 typedef unsigned long long uint64;
7 #elif defined(__TINYC__)
9 #define __builtin_va_list va_list
10 #define __builtin_va_start va_start
11 #define __builtin_va_end va_end
13 #define strcasecmp stricmp
14 #define strncasecmp strnicmp
15 #define __declspec(x) __attribute__((x))
19 typedef long long int64;
20 typedef unsigned long long uint64;
22 typedef __int64 int64;
23 typedef unsigned __int64 uint64;
26 #define __ENDIAN_PAD(x) (8 - (x))
28 #define __ENDIAN_PAD(x) 0
32 typedef unsigned long long int uintptr_t;
33 typedef long long int intptr_t;
35 typedef unsigned int uintptr_t;
41 extern void * __ecereNameSpace__ecere__com__eSystem_New(unsigned int size);
43 extern void * __ecereNameSpace__ecere__com__eSystem_New0(unsigned int size);
45 extern void * __ecereNameSpace__ecere__com__eSystem_Renew(void * memory, unsigned int size);
47 extern void * __ecereNameSpace__ecere__com__eSystem_Renew0(void * memory, unsigned int size);
49 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__sys__BTNode;
51 struct __ecereNameSpace__ecere__sys__BTNode;
53 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__sys__BinaryTree;
55 struct __ecereNameSpace__ecere__sys__BinaryTree
57 struct __ecereNameSpace__ecere__sys__BTNode * root;
59 int (* CompareKey)(struct __ecereNameSpace__ecere__sys__BinaryTree * tree, uintptr_t a, uintptr_t b);
60 void (* FreeKey)(void * key);
61 } __attribute__ ((gcc_struct));
63 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__sys__OldList;
65 struct __ecereNameSpace__ecere__sys__OldList
72 } __attribute__ ((gcc_struct));
74 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__Method;
76 struct __ecereNameSpace__ecere__com__Method
79 struct __ecereNameSpace__ecere__com__Method * parent;
80 struct __ecereNameSpace__ecere__com__Method * left;
81 struct __ecereNameSpace__ecere__com__Method * right;
86 struct __ecereNameSpace__ecere__com__Class * _class;
88 char * dataTypeString;
89 struct Type * dataType;
91 } __attribute__ ((gcc_struct));
93 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__Property;
95 struct __ecereNameSpace__ecere__com__Property
97 struct __ecereNameSpace__ecere__com__Property * prev;
98 struct __ecereNameSpace__ecere__com__Property * next;
100 unsigned int isProperty;
103 struct __ecereNameSpace__ecere__com__Class * _class;
104 char * dataTypeString;
105 struct __ecereNameSpace__ecere__com__Class * dataTypeClass;
106 struct Type * dataType;
109 unsigned int (* IsSet)();
113 unsigned int conversion;
114 unsigned int watcherOffset;
116 unsigned int compiled;
117 unsigned int selfWatchable;
118 unsigned int isWatchable;
119 } __attribute__ ((gcc_struct));
121 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_CodePosition;
128 unsigned int included;
129 } __attribute__ ((gcc_struct));
131 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Location;
135 struct CodePosition start;
136 struct CodePosition end;
137 } __attribute__ ((gcc_struct));
139 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Attrib;
145 struct __ecereNameSpace__ecere__sys__OldList * attribs;
146 } __attribute__ ((gcc_struct));
148 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_ExtDecl;
157 struct Attrib * attr;
158 } __attribute__ ((gcc_struct));
159 } __attribute__ ((gcc_struct));
161 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_ClassDefinition;
163 struct ClassDefinition;
165 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Context;
169 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Instantiation;
173 struct Instantiation * prev;
174 struct Instantiation * next;
176 struct Specifier * _class;
177 struct Expression * exp;
178 struct __ecereNameSpace__ecere__sys__OldList * members;
179 struct Symbol * symbol;
180 unsigned int fullSet;
181 unsigned int isConstant;
182 unsigned char * data;
183 struct Location nameLoc;
184 struct Location insideLoc;
186 } __attribute__ ((gcc_struct));
188 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Declaration;
192 struct Declaration * prev;
193 struct Declaration * next;
200 struct __ecereNameSpace__ecere__sys__OldList * specifiers;
201 struct __ecereNameSpace__ecere__sys__OldList * declarators;
202 } __attribute__ ((gcc_struct));
203 struct Instantiation * inst;
206 struct Identifier * id;
207 struct Expression * exp;
208 } __attribute__ ((gcc_struct));
209 } __attribute__ ((gcc_struct));
210 struct Specifier * extStorage;
211 struct Symbol * symbol;
213 } __attribute__ ((gcc_struct));
215 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Statement;
219 struct Statement * prev;
220 struct Statement * next;
225 struct __ecereNameSpace__ecere__sys__OldList * expressions;
228 struct Identifier * id;
229 struct Statement * stmt;
230 } __attribute__ ((gcc_struct)) labeled;
233 struct Expression * exp;
234 struct Statement * stmt;
235 } __attribute__ ((gcc_struct)) caseStmt;
238 struct __ecereNameSpace__ecere__sys__OldList * declarations;
239 struct __ecereNameSpace__ecere__sys__OldList * statements;
240 struct Context * context;
241 unsigned int isSwitch;
242 } __attribute__ ((gcc_struct)) compound;
245 struct __ecereNameSpace__ecere__sys__OldList * exp;
246 struct Statement * stmt;
247 struct Statement * elseStmt;
248 } __attribute__ ((gcc_struct)) ifStmt;
251 struct __ecereNameSpace__ecere__sys__OldList * exp;
252 struct Statement * stmt;
253 } __attribute__ ((gcc_struct)) switchStmt;
256 struct __ecereNameSpace__ecere__sys__OldList * exp;
257 struct Statement * stmt;
258 } __attribute__ ((gcc_struct)) whileStmt;
261 struct __ecereNameSpace__ecere__sys__OldList * exp;
262 struct Statement * stmt;
263 } __attribute__ ((gcc_struct)) doWhile;
266 struct Statement * init;
267 struct Statement * check;
268 struct __ecereNameSpace__ecere__sys__OldList * increment;
269 struct Statement * stmt;
270 } __attribute__ ((gcc_struct)) forStmt;
273 struct Identifier * id;
274 } __attribute__ ((gcc_struct)) gotoStmt;
277 struct Specifier * spec;
279 struct __ecereNameSpace__ecere__sys__OldList * inputFields;
280 struct __ecereNameSpace__ecere__sys__OldList * outputFields;
281 struct __ecereNameSpace__ecere__sys__OldList * clobberedFields;
282 } __attribute__ ((gcc_struct)) asmStmt;
285 struct Expression * watcher;
286 struct Expression * object;
287 struct __ecereNameSpace__ecere__sys__OldList * watches;
288 } __attribute__ ((gcc_struct)) _watch;
291 struct Identifier * id;
292 struct __ecereNameSpace__ecere__sys__OldList * exp;
293 struct __ecereNameSpace__ecere__sys__OldList * filter;
294 struct Statement * stmt;
295 } __attribute__ ((gcc_struct)) forEachStmt;
296 struct Declaration * decl;
297 } __attribute__ ((gcc_struct));
298 } __attribute__ ((gcc_struct));
300 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_TypeName;
304 struct TypeName * prev;
305 struct TypeName * next;
307 struct __ecereNameSpace__ecere__sys__OldList * qualifiers;
308 struct Declarator * declarator;
310 struct Expression * bitCount;
311 } __attribute__ ((gcc_struct));
313 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Initializer;
317 struct Initializer * prev;
318 struct Initializer * next;
323 struct Expression * exp;
324 struct __ecereNameSpace__ecere__sys__OldList * list;
325 } __attribute__ ((gcc_struct));
326 unsigned int isConstant;
327 } __attribute__ ((gcc_struct));
329 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__DataValue;
331 struct __ecereNameSpace__ecere__com__DataValue
346 } __attribute__ ((gcc_struct));
347 } __attribute__ ((gcc_struct));
349 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Expression;
353 struct Expression * prev;
354 struct Expression * next;
362 struct Identifier * identifier;
363 } __attribute__ ((gcc_struct));
364 struct Statement * compound;
365 struct Instantiation * instance;
367 struct __ecereNameSpace__ecere__sys__OldList * list;
370 struct __ecereNameSpace__ecere__sys__OldList * specifiers;
371 struct Declarator * decl;
372 } __attribute__ ((gcc_struct)) _classExp;
375 struct Identifier * id;
376 } __attribute__ ((gcc_struct)) classData;
379 struct Expression * exp;
380 struct __ecereNameSpace__ecere__sys__OldList * arguments;
381 struct Location argLoc;
382 } __attribute__ ((gcc_struct)) call;
385 struct Expression * exp;
386 struct __ecereNameSpace__ecere__sys__OldList * index;
387 } __attribute__ ((gcc_struct)) index;
390 struct Expression * exp;
391 struct Identifier * member;
393 unsigned int thisPtr;
394 } __attribute__ ((gcc_struct)) member;
398 struct Expression * exp1;
399 struct Expression * exp2;
400 } __attribute__ ((gcc_struct)) op;
401 struct TypeName * typeName;
402 struct Specifier * _class;
405 struct TypeName * typeName;
406 struct Expression * exp;
407 } __attribute__ ((gcc_struct)) cast;
410 struct Expression * cond;
411 struct __ecereNameSpace__ecere__sys__OldList * exp;
412 struct Expression * elseExp;
413 } __attribute__ ((gcc_struct)) cond;
416 struct TypeName * typeName;
417 struct Expression * size;
418 } __attribute__ ((gcc_struct)) _new;
421 struct TypeName * typeName;
422 struct Expression * size;
423 struct Expression * exp;
424 } __attribute__ ((gcc_struct)) _renew;
428 struct Identifier * id;
429 } __attribute__ ((gcc_struct)) db;
432 struct Expression * ds;
433 struct Expression * name;
434 } __attribute__ ((gcc_struct)) dbopen;
437 struct TypeName * typeName;
438 struct Initializer * initializer;
439 } __attribute__ ((gcc_struct)) initializer;
442 struct Expression * exp;
443 struct TypeName * typeName;
444 } __attribute__ ((gcc_struct)) vaArg;
445 } __attribute__ ((gcc_struct));
446 unsigned int debugValue;
447 struct __ecereNameSpace__ecere__com__DataValue val;
448 unsigned int address;
449 unsigned int hasAddress;
450 struct Type * expType;
451 struct Type * destType;
454 unsigned int byReference;
455 unsigned int isConstant;
456 unsigned int addedThis;
457 unsigned int needCast;
458 unsigned int thisPtr;
459 } __attribute__ ((gcc_struct));
461 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_TemplateDatatype;
463 struct TemplateDatatype;
465 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_TemplateArgument;
467 struct TemplateArgument;
469 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_TemplateParameter;
471 struct TemplateParameter;
473 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Specifier;
477 struct Specifier * prev;
478 struct Specifier * next;
486 struct ExtDecl * extDecl;
488 struct Symbol * symbol;
489 struct __ecereNameSpace__ecere__sys__OldList * templateArgs;
490 } __attribute__ ((gcc_struct));
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));
507 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Identifier;
511 struct Identifier * prev;
512 struct Identifier * next;
514 struct Symbol * classSym;
515 struct Specifier * _class;
517 struct Identifier * badID;
518 } __attribute__ ((gcc_struct));
520 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Pointer;
524 struct Pointer * prev;
525 struct Pointer * next;
527 struct __ecereNameSpace__ecere__sys__OldList * qualifiers;
528 struct Pointer * pointer;
529 } __attribute__ ((gcc_struct));
531 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Declarator;
535 struct Declarator * prev;
536 struct Declarator * next;
539 struct Symbol * symbol;
540 struct Declarator * declarator;
543 struct Identifier * identifier;
546 struct Expression * exp;
547 struct Expression * posExp;
548 struct Attrib * attrib;
549 } __attribute__ ((gcc_struct)) structDecl;
552 struct Expression * exp;
553 struct Specifier * enumClass;
554 } __attribute__ ((gcc_struct)) array;
557 struct __ecereNameSpace__ecere__sys__OldList * parameters;
558 } __attribute__ ((gcc_struct)) function;
561 struct Pointer * pointer;
562 } __attribute__ ((gcc_struct)) pointer;
565 struct ExtDecl * extended;
566 } __attribute__ ((gcc_struct)) extended;
567 } __attribute__ ((gcc_struct));
568 } __attribute__ ((gcc_struct));
570 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_FunctionDefinition;
572 struct FunctionDefinition;
574 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_DBTableDef;
578 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_External;
582 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_ModuleImport;
586 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_ClassImport;
590 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Symbol;
594 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Type;
603 struct Symbol * _class;
606 struct __ecereNameSpace__ecere__sys__OldList members;
608 } __attribute__ ((gcc_struct));
611 struct Type * returnType;
612 struct __ecereNameSpace__ecere__sys__OldList params;
613 struct Symbol * thisClass;
614 unsigned int staticMethod;
615 struct TemplateParameter * thisClassTemplate;
616 } __attribute__ ((gcc_struct));
619 struct __ecereNameSpace__ecere__com__Method * method;
620 struct __ecereNameSpace__ecere__com__Class * methodClass;
621 struct __ecereNameSpace__ecere__com__Class * usedClass;
622 } __attribute__ ((gcc_struct));
625 struct Type * arrayType;
627 struct Expression * arraySizeExp;
628 unsigned int freeExp;
629 struct Symbol * enumClass;
630 } __attribute__ ((gcc_struct));
632 struct TemplateParameter * templateParameter;
633 } __attribute__ ((gcc_struct));
634 unsigned int isSigned;
636 unsigned int constant;
643 unsigned int byReference;
644 unsigned int extraParam;
646 unsigned int directClassAccess;
647 unsigned int computing;
648 unsigned int dllExport;
650 unsigned int keepCast;
651 unsigned int passAsTemplate;
653 } __attribute__ ((gcc_struct));
655 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__Class;
657 struct __ecereNameSpace__ecere__com__Class
659 struct __ecereNameSpace__ecere__com__Class * prev;
660 struct __ecereNameSpace__ecere__com__Class * next;
666 int (* Constructor)(struct __ecereNameSpace__ecere__com__Instance *);
667 void (* Destructor)(struct __ecereNameSpace__ecere__com__Instance *);
670 struct __ecereNameSpace__ecere__com__Class * base;
671 struct __ecereNameSpace__ecere__sys__BinaryTree methods;
672 struct __ecereNameSpace__ecere__sys__BinaryTree members;
673 struct __ecereNameSpace__ecere__sys__BinaryTree prop;
674 struct __ecereNameSpace__ecere__sys__OldList membersAndProperties;
675 struct __ecereNameSpace__ecere__sys__BinaryTree classProperties;
676 struct __ecereNameSpace__ecere__sys__OldList derivatives;
680 struct __ecereNameSpace__ecere__com__Instance * module;
681 struct __ecereNameSpace__ecere__com__NameSpace * nameSpace;
682 char * dataTypeString;
683 struct Type * dataType;
685 int defaultAlignment;
686 void (* Initialize)();
688 struct __ecereNameSpace__ecere__sys__OldList selfWatchers;
689 char * designerClass;
690 unsigned int noExpansion;
691 char * defaultProperty;
692 unsigned int comRedefinition;
694 unsigned int isRemote;
695 unsigned int internalDecl;
697 unsigned int computeSize;
699 int destructionWatchOffset;
701 struct __ecereNameSpace__ecere__sys__OldList delayedCPValues;
702 int inheritanceAccess;
705 struct __ecereNameSpace__ecere__sys__OldList conversions;
706 struct __ecereNameSpace__ecere__sys__OldList templateParams;
707 struct __ecereNameSpace__ecere__com__ClassTemplateArgument * templateArgs;
708 struct __ecereNameSpace__ecere__com__Class * templateClass;
709 struct __ecereNameSpace__ecere__sys__OldList templatized;
711 } __attribute__ ((gcc_struct));
713 extern long long __ecereNameSpace__ecere__com__eClass_GetProperty(struct __ecereNameSpace__ecere__com__Class * _class, char * name);
715 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__Instance;
717 struct __ecereNameSpace__ecere__com__Instance
720 struct __ecereNameSpace__ecere__com__Class * _class;
722 } __attribute__ ((gcc_struct));
724 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__DataMember;
726 struct __ecereNameSpace__ecere__com__DataMember
728 struct __ecereNameSpace__ecere__com__DataMember * prev;
729 struct __ecereNameSpace__ecere__com__DataMember * next;
731 unsigned int isProperty;
734 struct __ecereNameSpace__ecere__com__Class * _class;
735 char * dataTypeString;
736 struct __ecereNameSpace__ecere__com__Class * dataTypeClass;
737 struct Type * dataType;
741 struct __ecereNameSpace__ecere__sys__OldList members;
742 struct __ecereNameSpace__ecere__sys__BinaryTree membersAlpha;
745 } __attribute__ ((gcc_struct));
747 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__SerialBuffer;
749 struct __ecereNameSpace__ecere__com__SerialBuffer
751 unsigned char * _buffer;
755 } __attribute__ ((gcc_struct));
757 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__ClassTemplateArgument;
759 struct __ecereNameSpace__ecere__com__ClassTemplateArgument
765 char * dataTypeString;
766 struct __ecereNameSpace__ecere__com__Class * dataTypeClass;
767 } __attribute__ ((gcc_struct));
768 struct __ecereNameSpace__ecere__com__DataValue expression;
774 struct __ecereNameSpace__ecere__com__DataMember * member;
775 struct __ecereNameSpace__ecere__com__Property * prop;
776 struct __ecereNameSpace__ecere__com__Method * method;
777 } __attribute__ ((gcc_struct));
778 } __attribute__ ((gcc_struct));
779 } __attribute__ ((gcc_struct));
780 } __attribute__ ((gcc_struct));
782 extern struct Identifier * MkIdentifier(char * string);
784 struct Specifier * CopySpecifier(struct Specifier * spec);
786 struct Identifier * CopyIdentifier(struct Identifier * id)
790 struct Identifier * copy = MkIdentifier(id->string);
792 copy->_class = id->_class ? CopySpecifier(id->_class) : (((void *)0));
793 copy->classSym = id->classSym;
796 return (((void *)0));
799 extern struct __ecereNameSpace__ecere__sys__OldList * MkList(void);
801 extern void ListAdd(struct __ecereNameSpace__ecere__sys__OldList * list, void * item);
803 extern struct Pointer * MkPointer(struct __ecereNameSpace__ecere__sys__OldList * qualifiers, struct Pointer * pointer);
805 static struct Pointer * CopyPointer(struct Pointer * ptr)
809 struct __ecereNameSpace__ecere__sys__OldList * list = MkList();
810 struct Specifier * spec;
814 for(spec = (*ptr->qualifiers).first; spec; spec = spec->next)
815 ListAdd(list, CopySpecifier(spec));
817 return MkPointer(list, CopyPointer(ptr->pointer));
819 return (((void *)0));
822 extern struct Initializer * MkInitializerAssignment(struct Expression * exp);
824 struct Expression * CopyExpression(struct Expression * exp);
826 extern struct Initializer * MkInitializerList(struct __ecereNameSpace__ecere__sys__OldList * list);
828 struct __ecereNameSpace__ecere__sys__OldList * CopyList(struct __ecereNameSpace__ecere__sys__OldList * source, void * (* CopyFunction)(void * ));
830 static struct Initializer * CopyInitializer(struct Initializer * initializer)
832 struct Initializer * copy = (((void *)0));
835 if(initializer->type == 0)
836 copy = MkInitializerAssignment(CopyExpression(initializer->exp));
837 else if(initializer->type == 1)
838 copy = MkInitializerList(CopyList(initializer->list, CopyInitializer));
841 copy->loc = initializer->loc;
842 copy->isConstant = initializer->isConstant;
847 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_MemberInit;
851 struct MemberInit * prev;
852 struct MemberInit * next;
854 struct Location realLoc;
855 struct __ecereNameSpace__ecere__sys__OldList * identifiers;
856 struct Initializer * initializer;
858 unsigned int variable;
859 unsigned int takeOutExp;
860 } __attribute__ ((gcc_struct));
862 extern struct MemberInit * MkMemberInit(struct __ecereNameSpace__ecere__sys__OldList * ids, struct Initializer * initializer);
864 static struct MemberInit * CopyMemberInit(struct MemberInit * member)
866 return MkMemberInit(CopyList(member->identifiers, CopyIdentifier), CopyInitializer(member->initializer));
869 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_ClassFunction;
871 struct ClassFunction;
873 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_MembersInit;
877 struct MembersInit * prev;
878 struct MembersInit * next;
883 struct __ecereNameSpace__ecere__sys__OldList * dataMembers;
884 struct ClassFunction * function;
885 } __attribute__ ((gcc_struct));
886 } __attribute__ ((gcc_struct));
888 extern struct MembersInit * MkMembersInitList(struct __ecereNameSpace__ecere__sys__OldList * dataMembers);
890 static struct MembersInit * CopyMembersInit(struct MembersInit * members)
892 struct __ecereNameSpace__ecere__sys__OldList * list = (((void *)0));
894 switch(members->type)
900 struct MemberInit * member;
903 for(member = (*members->dataMembers).first; member; member = member->next)
904 ListAdd(list, CopyMemberInit(member));
908 return MkMembersInitList(list);
911 extern struct Instantiation * MkInstantiation(struct Specifier * _class, struct Expression * exp, struct __ecereNameSpace__ecere__sys__OldList * members);
913 static struct Instantiation * CopyInstantiation(struct Instantiation * inst)
915 struct Instantiation * copy;
916 struct __ecereNameSpace__ecere__sys__OldList * list = MkList();
917 struct MembersInit * member;
921 for(member = (*inst->members).first; member; member = member->next)
922 ListAdd(list, CopyMembersInit(member));
924 copy = MkInstantiation(CopySpecifier(inst->_class), CopyExpression(inst->exp), list);
925 copy->data = inst->data;
926 copy->loc = inst->loc;
927 copy->isConstant = inst->isConstant;
931 extern struct Expression * MkExpDummy(void);
933 extern struct Expression * MkExpIdentifier(struct Identifier * id);
935 extern struct Expression * MkExpInstance(struct Instantiation * inst);
937 extern struct Expression * MkExpConstant(char * string);
939 extern struct Expression * MkExpString(char * string);
941 extern struct Expression * MkExpOp(struct Expression * exp1, int op, struct Expression * exp2);
943 extern struct Expression * MkExpBrackets(struct __ecereNameSpace__ecere__sys__OldList * expressions);
945 extern struct Expression * MkExpIndex(struct Expression * expression, struct __ecereNameSpace__ecere__sys__OldList * index);
947 extern struct Expression * MkExpCall(struct Expression * expression, struct __ecereNameSpace__ecere__sys__OldList * arguments);
949 extern struct Expression * MkExpMember(struct Expression * expression, struct Identifier * member);
951 extern struct Expression * MkExpPointer(struct Expression * expression, struct Identifier * member);
953 extern struct Expression * MkExpTypeSize(struct TypeName * typeName);
955 struct TypeName * CopyTypeName(struct TypeName * typeName);
957 extern struct Expression * MkExpTypeAlign(struct TypeName * typeName);
959 extern struct Expression * MkExpCast(struct TypeName * typeName, struct Expression * expression);
961 extern struct Expression * MkExpCondition(struct Expression * cond, struct __ecereNameSpace__ecere__sys__OldList * expressions, struct Expression * elseExp);
963 extern struct Expression * MkExpVaArg(struct Expression * exp, struct TypeName * type);
965 extern struct Expression * MkExpExtensionCompound(struct Statement * compound);
967 static struct Statement * CopyStatement(struct Statement * stmt);
969 struct Expression * CopyExpression(struct Expression * exp)
971 struct Expression * result = (((void *)0));
977 result = MkExpDummy();
980 result = MkExpIdentifier(CopyIdentifier(exp->identifier));
983 result = MkExpInstance(CopyInstantiation(exp->instance));
986 result = MkExpConstant(exp->string);
989 result = MkExpString(exp->string);
992 result = MkExpOp(CopyExpression(exp->op.exp1), exp->op.op, CopyExpression(exp->op.exp2));
996 struct __ecereNameSpace__ecere__sys__OldList * list = MkList();
997 struct Expression * e;
999 for(e = (*exp->list).first; e; e = e->next)
1000 ListAdd(list, CopyExpression(e));
1001 result = MkExpBrackets(list);
1006 struct __ecereNameSpace__ecere__sys__OldList * list = MkList();
1007 struct Expression * e;
1009 for(e = (*exp->index.index).first; e; e = e->next)
1010 ListAdd(list, CopyExpression(e));
1011 result = MkExpIndex(CopyExpression(exp->index.exp), list);
1016 struct __ecereNameSpace__ecere__sys__OldList * list = MkList();
1017 struct Expression * arg;
1019 if(exp->call.arguments)
1021 for(arg = (*exp->call.arguments).first; arg; arg = arg->next)
1022 ListAdd(list, CopyExpression(arg));
1024 result = MkExpCall(CopyExpression(exp->call.exp), list);
1028 result = MkExpMember(CopyExpression(exp->member.exp), CopyIdentifier(exp->member.member));
1029 result->member.memberType = exp->member.memberType;
1030 result->member.thisPtr = exp->member.thisPtr;
1033 result = MkExpPointer(CopyExpression(exp->member.exp), CopyIdentifier(exp->member.member));
1036 result = MkExpTypeSize(CopyTypeName(exp->typeName));
1039 result = MkExpTypeAlign(CopyTypeName(exp->typeName));
1042 result = MkExpCast(CopyTypeName(exp->cast.typeName), CopyExpression(exp->cast.exp));
1046 struct __ecereNameSpace__ecere__sys__OldList * list = MkList();
1047 struct Expression * e;
1049 for(e = (*exp->cond.exp).first; e; e = e->next)
1050 ListAdd(list, CopyExpression(e));
1051 result = MkExpCondition(CopyExpression(exp->cond.cond), list, CopyExpression(exp->cond.elseExp));
1055 result = MkExpVaArg(CopyExpression(exp->vaArg.exp), CopyTypeName(exp->vaArg.typeName));
1058 result = MkExpExtensionCompound(CopyStatement(exp->compound));
1063 result->expType = exp->expType;
1065 exp->expType->refCount++;
1066 result->destType = exp->destType;
1068 exp->destType->refCount++;
1069 result->loc = exp->loc;
1070 result->isConstant = exp->isConstant;
1071 result->byReference = exp->byReference;
1076 extern struct Statement * MkCompoundStmt(struct __ecereNameSpace__ecere__sys__OldList * declarations, struct __ecereNameSpace__ecere__sys__OldList * statements);
1078 struct Declaration * CopyDeclaration(struct Declaration * decl);
1080 extern struct Statement * MkExpressionStmt(struct __ecereNameSpace__ecere__sys__OldList * expressions);
1082 extern void * __ecereNameSpace__ecere__com__eInstance_New(struct __ecereNameSpace__ecere__com__Class * _class);
1084 static struct Statement * CopyStatement(struct Statement * stmt)
1086 struct Statement * result = (((void *)0));
1093 result = MkCompoundStmt(CopyList(stmt->compound.declarations, CopyDeclaration), CopyList(stmt->compound.statements, CopyStatement));
1094 result->compound.context = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Context);
1097 result = MkExpressionStmt(CopyList(stmt->expressions, CopyExpression));
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)
1195 void * __ecereTemp1;
1201 return MkSpecifier(spec->specifier);
1204 struct Identifier * id = CopyIdentifier(spec->id);
1205 struct __ecereNameSpace__ecere__sys__OldList * list = MkList();
1206 struct Enumerator * enumerator;
1210 for(enumerator = (*spec->list).first; enumerator; enumerator = enumerator->next)
1211 ListAdd(list, CopyEnumerator(enumerator));
1213 return MkEnum(id, list);
1218 struct Identifier * id = CopyIdentifier(spec->id);
1219 struct __ecereNameSpace__ecere__sys__OldList * list = (((void *)0));
1220 struct ClassDef * def;
1221 struct Specifier * s;
1223 if(spec->definitions)
1228 for(def = (*spec->list).first; def; def = def->next)
1229 ListAdd(list, CopyClassDef(def));
1232 s = MkStructOrUnion(spec->type, id, list);
1233 s->extDeclStruct = CopyExtDecl(spec->extDeclStruct);
1238 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);
1243 return MkSpecifierSubClass(CopySpecifier(spec->_class));
1245 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));
1247 return MkSpecifierExtended(CopyExtDecl(spec->extDecl));
1249 return (((void *)0));
1252 extern struct TypeName * MkTypeName(struct __ecereNameSpace__ecere__sys__OldList * qualifiers, struct Declarator * declarator);
1254 struct Declarator * CopyDeclarator(struct Declarator * declarator);
1256 struct TypeName * CopyTypeName(struct TypeName * typeName)
1258 struct __ecereNameSpace__ecere__sys__OldList * list = (((void *)0));
1259 struct TypeName * copy;
1261 if(typeName->qualifiers)
1263 struct Specifier * spec;
1266 for(spec = (*typeName->qualifiers).first; spec; spec = spec->next)
1267 ListAdd(list, CopySpecifier(spec));
1269 copy = MkTypeName(list, CopyDeclarator(typeName->declarator));
1270 copy->classObjectType = typeName->classObjectType;
1274 extern struct ExtDecl * MkExtDeclAttrib(struct Attrib * attr);
1276 struct Attrib * CopyAttrib(struct Attrib * attrib);
1278 extern struct ExtDecl * MkExtDeclString(char * s);
1280 struct ExtDecl * CopyExtDecl(struct ExtDecl * extDecl)
1284 if(extDecl->type == 1)
1285 return MkExtDeclAttrib(CopyAttrib(extDecl->attr));
1286 else if(extDecl->type == 0)
1287 return MkExtDeclString(__ecereNameSpace__ecere__sys__CopyString(extDecl->s));
1289 return (((void *)0));
1292 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Attribute;
1296 struct Attribute * prev;
1297 struct Attribute * next;
1298 struct Location loc;
1300 struct Expression * exp;
1301 } __attribute__ ((gcc_struct));
1303 extern struct Attribute * MkAttribute(char * attr, struct Expression * exp);
1305 struct Attribute * CopyAttribute(struct Attribute * attrib)
1308 return MkAttribute(__ecereNameSpace__ecere__sys__CopyString(attrib->attr), CopyExpression(attrib->exp));
1309 return (((void *)0));
1312 extern struct Attrib * MkAttrib(int type, struct __ecereNameSpace__ecere__sys__OldList * attribs);
1314 struct Attrib * CopyAttrib(struct Attrib * attrib)
1317 return MkAttrib(attrib->type, CopyList(attrib->attribs, CopyAttribute));
1318 return (((void *)0));
1321 extern struct Declarator * MkStructDeclarator(struct Declarator * declarator, struct Expression * exp);
1323 extern struct Declarator * MkDeclaratorIdentifier(struct Identifier * id);
1325 extern struct Declarator * MkDeclaratorBrackets(struct Declarator * declarator);
1327 extern struct Declarator * MkDeclaratorEnumArray(struct Declarator * declarator, struct Specifier * _class);
1329 extern struct Declarator * MkDeclaratorArray(struct Declarator * declarator, struct Expression * exp);
1331 extern struct Declarator * MkDeclaratorFunction(struct Declarator * declarator, struct __ecereNameSpace__ecere__sys__OldList * parameters);
1333 extern struct Declarator * MkDeclaratorPointer(struct Pointer * pointer, struct Declarator * declarator);
1335 extern struct Declarator * MkDeclaratorExtended(struct ExtDecl * extended, struct Declarator * declarator);
1337 extern struct Declarator * MkDeclaratorExtendedEnd(struct ExtDecl * extended, struct Declarator * declarator);
1339 struct Declarator * CopyDeclarator(struct Declarator * declarator)
1343 switch(declarator->type)
1347 struct Declarator * decl = MkStructDeclarator(CopyDeclarator(declarator->declarator), CopyExpression(declarator->structDecl.exp));
1349 if(declarator->structDecl.attrib)
1350 decl->structDecl.attrib = CopyAttrib(declarator->structDecl.attrib);
1354 return MkDeclaratorIdentifier(CopyIdentifier(declarator->identifier));
1356 return MkDeclaratorBrackets(CopyDeclarator(declarator->declarator));
1358 if(declarator->array.enumClass)
1359 return MkDeclaratorEnumArray(CopyDeclarator(declarator->declarator), CopySpecifier(declarator->array.enumClass));
1361 return MkDeclaratorArray(CopyDeclarator(declarator->declarator), CopyExpression(declarator->array.exp));
1364 struct __ecereNameSpace__ecere__sys__OldList * parameters = MkList();
1365 struct TypeName * param;
1367 if(declarator->function.parameters)
1369 for(param = (*declarator->function.parameters).first; param; param = param->next)
1370 ListAdd(parameters, CopyTypeName(param));
1372 return MkDeclaratorFunction(CopyDeclarator(declarator->declarator), parameters);
1375 return MkDeclaratorPointer(CopyPointer(declarator->pointer.pointer), CopyDeclarator(declarator->declarator));
1377 return MkDeclaratorExtended(CopyExtDecl(declarator->extended.extended), CopyDeclarator(declarator->declarator));
1379 return MkDeclaratorExtendedEnd(CopyExtDecl(declarator->extended.extended), CopyDeclarator(declarator->declarator));
1382 return (((void *)0));
1385 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_InitDeclarator;
1387 struct InitDeclarator
1389 struct InitDeclarator * prev;
1390 struct InitDeclarator * next;
1391 struct Location loc;
1392 struct Declarator * declarator;
1393 struct Initializer * initializer;
1394 } __attribute__ ((gcc_struct));
1396 extern struct InitDeclarator * MkInitDeclarator(struct Declarator * declarator, struct Initializer * initializer);
1398 struct InitDeclarator * CopyInitDeclarator(struct InitDeclarator * initDecl)
1400 return MkInitDeclarator(CopyDeclarator(initDecl->declarator), CopyInitializer(initDecl->initializer));
1403 extern struct Declaration * MkDeclaration(struct __ecereNameSpace__ecere__sys__OldList * specifiers, struct __ecereNameSpace__ecere__sys__OldList * initDeclarators);
1405 struct Declaration * CopyDeclaration(struct Declaration * decl)
1409 return MkDeclaration(CopyList(decl->specifiers, CopySpecifier), CopyList(decl->declarators, CopyInitDeclarator));
1413 struct __ecereNameSpace__ecere__sys__OldList * specifiers = MkList(), * declarators = MkList();
1414 struct Specifier * spec;
1415 struct Declarator * declarator;
1417 for(spec = (*decl->specifiers).first; spec; spec = spec->next)
1418 ListAdd(specifiers, CopySpecifier(spec));
1419 if(decl->declarators)
1421 for(declarator = (*decl->declarators).first; declarator; declarator = declarator->next)
1422 ListAdd(declarators, CopyDeclarator(declarator));
1424 return MkDeclaration(specifiers, declarators);
1428 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__sys__Item;
1430 struct __ecereNameSpace__ecere__sys__Item
1432 struct __ecereNameSpace__ecere__sys__Item * prev;
1433 struct __ecereNameSpace__ecere__sys__Item * next;
1434 } __attribute__ ((gcc_struct));
1436 struct __ecereNameSpace__ecere__sys__OldList * CopyList(struct __ecereNameSpace__ecere__sys__OldList * source, void * (* CopyFunction)(void *))
1438 struct __ecereNameSpace__ecere__sys__OldList * list = (((void *)0));
1442 struct __ecereNameSpace__ecere__sys__Item * item;
1445 for(item = (*source).first; item; item = item->next)
1446 ListAdd(list, CopyFunction(item));
1451 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__GlobalFunction;
1453 struct __ecereNameSpace__ecere__com__GlobalFunction;
1455 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);
1457 void __ecereRegisterModule_copy(struct __ecereNameSpace__ecere__com__Instance * module)
1459 struct __ecereNameSpace__ecere__com__Class * class;
1461 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("CopyIdentifier", "Identifier CopyIdentifier(Identifier id)", CopyIdentifier, module, 2);
1462 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("CopyExpression", "Expression CopyExpression(Expression exp)", CopyExpression, module, 1);
1463 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("CopyClassDef", "ClassDef CopyClassDef(ClassDef def)", CopyClassDef, module, 2);
1464 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("CopySpecifier", "Specifier CopySpecifier(Specifier spec)", CopySpecifier, module, 2);
1465 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("CopyTypeName", "TypeName CopyTypeName(TypeName typeName)", CopyTypeName, module, 2);
1466 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("CopyExtDecl", "ExtDecl CopyExtDecl(ExtDecl extDecl)", CopyExtDecl, module, 2);
1467 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("CopyAttribute", "Attribute CopyAttribute(Attribute attrib)", CopyAttribute, module, 2);
1468 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("CopyAttrib", "Attrib CopyAttrib(Attrib attrib)", CopyAttrib, module, 2);
1469 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("CopyDeclarator", "Declarator CopyDeclarator(Declarator declarator)", CopyDeclarator, module, 2);
1470 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("CopyInitDeclarator", "InitDeclarator CopyInitDeclarator(InitDeclarator initDecl)", CopyInitDeclarator, module, 2);
1471 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("CopyDeclaration", "Declaration CopyDeclaration(Declaration decl)", CopyDeclaration, module, 2);
1472 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("CopyList", "ecere::sys::OldList * CopyList(ecere::sys::OldList * source, void *( *)(void *))", CopyList, module, 2);
1475 void __ecereUnregisterModule_copy(struct __ecereNameSpace__ecere__com__Instance * module)