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
31 #include <sys/types.h>
32 extern void * __ecereNameSpace__ecere__com__eSystem_New(unsigned int size);
34 extern void * __ecereNameSpace__ecere__com__eSystem_New0(unsigned int size);
36 extern void * __ecereNameSpace__ecere__com__eSystem_Renew(void * memory, unsigned int size);
38 extern void * __ecereNameSpace__ecere__com__eSystem_Renew0(void * memory, unsigned int size);
40 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__sys__BTNode;
42 struct __ecereNameSpace__ecere__sys__BTNode;
44 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__sys__BinaryTree;
46 struct __ecereNameSpace__ecere__sys__BinaryTree
48 struct __ecereNameSpace__ecere__sys__BTNode * root;
50 int (* CompareKey)(struct __ecereNameSpace__ecere__sys__BinaryTree * tree, uintptr_t a, uintptr_t b);
51 void (* FreeKey)(void * key);
52 } __attribute__ ((gcc_struct));
54 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__sys__OldList;
56 struct __ecereNameSpace__ecere__sys__OldList
63 } __attribute__ ((gcc_struct));
65 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__Method;
67 struct __ecereNameSpace__ecere__com__Method
70 struct __ecereNameSpace__ecere__com__Method * parent;
71 struct __ecereNameSpace__ecere__com__Method * left;
72 struct __ecereNameSpace__ecere__com__Method * right;
77 struct __ecereNameSpace__ecere__com__Class * _class;
79 char * dataTypeString;
80 struct Type * dataType;
82 } __attribute__ ((gcc_struct));
84 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__Property;
86 struct __ecereNameSpace__ecere__com__Property
88 struct __ecereNameSpace__ecere__com__Property * prev;
89 struct __ecereNameSpace__ecere__com__Property * next;
91 unsigned int isProperty;
94 struct __ecereNameSpace__ecere__com__Class * _class;
95 char * dataTypeString;
96 struct __ecereNameSpace__ecere__com__Class * dataTypeClass;
97 struct Type * dataType;
98 void (* Set)(void * , int);
100 unsigned int (* IsSet)(void * );
104 unsigned int conversion;
105 unsigned int watcherOffset;
107 unsigned int compiled;
108 unsigned int selfWatchable;
109 unsigned int isWatchable;
110 } __attribute__ ((gcc_struct));
112 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_CodePosition;
120 } __attribute__ ((gcc_struct));
122 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Location;
126 struct CodePosition start;
127 struct CodePosition end;
128 } __attribute__ ((gcc_struct));
130 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Attrib;
136 struct __ecereNameSpace__ecere__sys__OldList * attribs;
137 } __attribute__ ((gcc_struct));
139 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_ExtDecl;
148 struct Attrib * attr;
149 } __attribute__ ((gcc_struct));
150 } __attribute__ ((gcc_struct));
152 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_ClassDefinition;
154 struct ClassDefinition;
156 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Context;
160 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Instantiation;
164 struct Instantiation * prev;
165 struct Instantiation * next;
167 struct Specifier * _class;
168 struct Expression * exp;
169 struct __ecereNameSpace__ecere__sys__OldList * members;
170 struct Symbol * symbol;
171 unsigned int fullSet;
172 unsigned int isConstant;
173 unsigned char * data;
174 struct Location nameLoc;
175 struct Location insideLoc;
177 } __attribute__ ((gcc_struct));
179 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Declaration;
183 struct Declaration * prev;
184 struct Declaration * next;
191 struct __ecereNameSpace__ecere__sys__OldList * specifiers;
192 struct __ecereNameSpace__ecere__sys__OldList * declarators;
193 } __attribute__ ((gcc_struct));
194 struct Instantiation * inst;
197 struct Identifier * id;
198 struct Expression * exp;
199 } __attribute__ ((gcc_struct));
200 } __attribute__ ((gcc_struct));
201 struct Specifier * extStorage;
202 struct Symbol * symbol;
204 } __attribute__ ((gcc_struct));
206 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Statement;
210 struct Statement * prev;
211 struct Statement * next;
216 struct __ecereNameSpace__ecere__sys__OldList * expressions;
219 struct Identifier * id;
220 struct Statement * stmt;
221 } __attribute__ ((gcc_struct)) labeled;
224 struct Expression * exp;
225 struct Statement * stmt;
226 } __attribute__ ((gcc_struct)) caseStmt;
229 struct __ecereNameSpace__ecere__sys__OldList * declarations;
230 struct __ecereNameSpace__ecere__sys__OldList * statements;
231 struct Context * context;
232 unsigned int isSwitch;
233 } __attribute__ ((gcc_struct)) compound;
236 struct __ecereNameSpace__ecere__sys__OldList * exp;
237 struct Statement * stmt;
238 struct Statement * elseStmt;
239 } __attribute__ ((gcc_struct)) ifStmt;
242 struct __ecereNameSpace__ecere__sys__OldList * exp;
243 struct Statement * stmt;
244 } __attribute__ ((gcc_struct)) switchStmt;
247 struct __ecereNameSpace__ecere__sys__OldList * exp;
248 struct Statement * stmt;
249 } __attribute__ ((gcc_struct)) whileStmt;
252 struct __ecereNameSpace__ecere__sys__OldList * exp;
253 struct Statement * stmt;
254 } __attribute__ ((gcc_struct)) doWhile;
257 struct Statement * init;
258 struct Statement * check;
259 struct __ecereNameSpace__ecere__sys__OldList * increment;
260 struct Statement * stmt;
261 } __attribute__ ((gcc_struct)) forStmt;
264 struct Identifier * id;
265 } __attribute__ ((gcc_struct)) gotoStmt;
268 struct Specifier * spec;
270 struct __ecereNameSpace__ecere__sys__OldList * inputFields;
271 struct __ecereNameSpace__ecere__sys__OldList * outputFields;
272 struct __ecereNameSpace__ecere__sys__OldList * clobberedFields;
273 } __attribute__ ((gcc_struct)) asmStmt;
276 struct Expression * watcher;
277 struct Expression * object;
278 struct __ecereNameSpace__ecere__sys__OldList * watches;
279 } __attribute__ ((gcc_struct)) _watch;
282 struct Identifier * id;
283 struct __ecereNameSpace__ecere__sys__OldList * exp;
284 struct __ecereNameSpace__ecere__sys__OldList * filter;
285 struct Statement * stmt;
286 } __attribute__ ((gcc_struct)) forEachStmt;
287 struct Declaration * decl;
288 } __attribute__ ((gcc_struct));
289 } __attribute__ ((gcc_struct));
291 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_TypeName;
295 struct TypeName * prev;
296 struct TypeName * next;
298 struct __ecereNameSpace__ecere__sys__OldList * qualifiers;
299 struct Declarator * declarator;
301 struct Expression * bitCount;
302 } __attribute__ ((gcc_struct));
304 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Initializer;
308 struct Initializer * prev;
309 struct Initializer * next;
314 struct Expression * exp;
315 struct __ecereNameSpace__ecere__sys__OldList * list;
316 } __attribute__ ((gcc_struct));
317 unsigned int isConstant;
318 } __attribute__ ((gcc_struct));
320 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__DataValue;
322 struct __ecereNameSpace__ecere__com__DataValue
337 } __attribute__ ((gcc_struct));
338 } __attribute__ ((gcc_struct));
340 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Expression;
344 struct Expression * prev;
345 struct Expression * next;
353 struct Identifier * identifier;
354 } __attribute__ ((gcc_struct));
355 struct Statement * compound;
356 struct Instantiation * instance;
358 struct __ecereNameSpace__ecere__sys__OldList * list;
361 struct __ecereNameSpace__ecere__sys__OldList * specifiers;
362 struct Declarator * decl;
363 } __attribute__ ((gcc_struct)) _classExp;
366 struct Identifier * id;
367 } __attribute__ ((gcc_struct)) classData;
370 struct Expression * exp;
371 struct __ecereNameSpace__ecere__sys__OldList * arguments;
372 struct Location argLoc;
373 } __attribute__ ((gcc_struct)) call;
376 struct Expression * exp;
377 struct __ecereNameSpace__ecere__sys__OldList * index;
378 } __attribute__ ((gcc_struct)) index;
381 struct Expression * exp;
382 struct Identifier * member;
384 unsigned int thisPtr;
385 } __attribute__ ((gcc_struct)) member;
389 struct Expression * exp1;
390 struct Expression * exp2;
391 } __attribute__ ((gcc_struct)) op;
392 struct TypeName * typeName;
393 struct Specifier * _class;
396 struct TypeName * typeName;
397 struct Expression * exp;
398 } __attribute__ ((gcc_struct)) cast;
401 struct Expression * cond;
402 struct __ecereNameSpace__ecere__sys__OldList * exp;
403 struct Expression * elseExp;
404 } __attribute__ ((gcc_struct)) cond;
407 struct TypeName * typeName;
408 struct Expression * size;
409 } __attribute__ ((gcc_struct)) _new;
412 struct TypeName * typeName;
413 struct Expression * size;
414 struct Expression * exp;
415 } __attribute__ ((gcc_struct)) _renew;
419 struct Identifier * id;
420 } __attribute__ ((gcc_struct)) db;
423 struct Expression * ds;
424 struct Expression * name;
425 } __attribute__ ((gcc_struct)) dbopen;
428 struct TypeName * typeName;
429 struct Initializer * initializer;
430 } __attribute__ ((gcc_struct)) initializer;
433 struct Expression * exp;
434 struct TypeName * typeName;
435 } __attribute__ ((gcc_struct)) vaArg;
436 } __attribute__ ((gcc_struct));
437 unsigned int debugValue;
438 struct __ecereNameSpace__ecere__com__DataValue val;
440 unsigned int hasAddress;
441 struct Type * expType;
442 struct Type * destType;
445 unsigned int byReference;
446 unsigned int isConstant;
447 unsigned int addedThis;
448 unsigned int needCast;
449 unsigned int thisPtr;
450 } __attribute__ ((gcc_struct));
452 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_TemplateDatatype;
454 struct TemplateDatatype;
456 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_TemplateArgument;
458 struct TemplateArgument;
460 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_TemplateParameter;
462 struct TemplateParameter;
464 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Specifier;
468 struct Specifier * prev;
469 struct Specifier * next;
477 struct ExtDecl * extDecl;
479 struct Symbol * symbol;
480 struct __ecereNameSpace__ecere__sys__OldList * templateArgs;
481 } __attribute__ ((gcc_struct));
484 struct Identifier * id;
485 struct __ecereNameSpace__ecere__sys__OldList * list;
486 struct __ecereNameSpace__ecere__sys__OldList * baseSpecs;
487 struct __ecereNameSpace__ecere__sys__OldList * definitions;
488 unsigned int addNameSpace;
489 struct Context * ctx;
490 struct ExtDecl * extDeclStruct;
491 } __attribute__ ((gcc_struct));
492 struct Expression * expression;
493 struct Specifier * _class;
494 struct TemplateParameter * templateParameter;
495 } __attribute__ ((gcc_struct));
496 } __attribute__ ((gcc_struct));
498 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Identifier;
502 struct Identifier * prev;
503 struct Identifier * next;
505 struct Symbol * classSym;
506 struct Specifier * _class;
508 struct Identifier * badID;
509 } __attribute__ ((gcc_struct));
511 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Pointer;
515 struct Pointer * prev;
516 struct Pointer * next;
518 struct __ecereNameSpace__ecere__sys__OldList * qualifiers;
519 struct Pointer * pointer;
520 } __attribute__ ((gcc_struct));
522 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Declarator;
526 struct Declarator * prev;
527 struct Declarator * next;
530 struct Symbol * symbol;
531 struct Declarator * declarator;
534 struct Identifier * identifier;
537 struct Expression * exp;
538 struct Expression * posExp;
539 struct Attrib * attrib;
540 } __attribute__ ((gcc_struct)) structDecl;
543 struct Expression * exp;
544 struct Specifier * enumClass;
545 } __attribute__ ((gcc_struct)) array;
548 struct __ecereNameSpace__ecere__sys__OldList * parameters;
549 } __attribute__ ((gcc_struct)) function;
552 struct Pointer * pointer;
553 } __attribute__ ((gcc_struct)) pointer;
556 struct ExtDecl * extended;
557 } __attribute__ ((gcc_struct)) extended;
558 } __attribute__ ((gcc_struct));
559 } __attribute__ ((gcc_struct));
561 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_FunctionDefinition;
563 struct FunctionDefinition;
565 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_DBTableDef;
569 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_External;
573 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_ModuleImport;
577 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_ClassImport;
581 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Symbol;
585 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Type;
594 struct Symbol * _class;
597 struct __ecereNameSpace__ecere__sys__OldList members;
599 } __attribute__ ((gcc_struct));
602 struct Type * returnType;
603 struct __ecereNameSpace__ecere__sys__OldList params;
604 struct Symbol * thisClass;
605 unsigned int staticMethod;
606 struct TemplateParameter * thisClassTemplate;
607 } __attribute__ ((gcc_struct));
610 struct __ecereNameSpace__ecere__com__Method * method;
611 struct __ecereNameSpace__ecere__com__Class * methodClass;
612 struct __ecereNameSpace__ecere__com__Class * usedClass;
613 } __attribute__ ((gcc_struct));
616 struct Type * arrayType;
618 struct Expression * arraySizeExp;
619 unsigned int freeExp;
620 struct Symbol * enumClass;
621 } __attribute__ ((gcc_struct));
623 struct TemplateParameter * templateParameter;
624 } __attribute__ ((gcc_struct));
634 unsigned int isSigned : 1;
635 unsigned int constant : 1;
636 unsigned int truth : 1;
637 unsigned int byReference : 1;
638 unsigned int extraParam : 1;
639 unsigned int directClassAccess : 1;
640 unsigned int computing : 1;
641 unsigned int keepCast : 1;
642 unsigned int passAsTemplate : 1;
643 unsigned int dllExport : 1;
644 unsigned int attrStdcall : 1;
645 unsigned int declaredWithStruct : 1;
646 } __attribute__ ((gcc_struct));
648 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__Class;
650 struct __ecereNameSpace__ecere__com__Class
652 struct __ecereNameSpace__ecere__com__Class * prev;
653 struct __ecereNameSpace__ecere__com__Class * next;
659 int (* Constructor)(struct __ecereNameSpace__ecere__com__Instance *);
660 void (* Destructor)(struct __ecereNameSpace__ecere__com__Instance *);
663 struct __ecereNameSpace__ecere__com__Class * base;
664 struct __ecereNameSpace__ecere__sys__BinaryTree methods;
665 struct __ecereNameSpace__ecere__sys__BinaryTree members;
666 struct __ecereNameSpace__ecere__sys__BinaryTree prop;
667 struct __ecereNameSpace__ecere__sys__OldList membersAndProperties;
668 struct __ecereNameSpace__ecere__sys__BinaryTree classProperties;
669 struct __ecereNameSpace__ecere__sys__OldList derivatives;
673 struct __ecereNameSpace__ecere__com__Instance * module;
674 struct __ecereNameSpace__ecere__com__NameSpace * nameSpace;
675 char * dataTypeString;
676 struct Type * dataType;
678 int defaultAlignment;
679 void (* Initialize)();
681 struct __ecereNameSpace__ecere__sys__OldList selfWatchers;
682 char * designerClass;
683 unsigned int noExpansion;
684 char * defaultProperty;
685 unsigned int comRedefinition;
687 unsigned int isRemote;
688 unsigned int internalDecl;
690 unsigned int computeSize;
692 int destructionWatchOffset;
694 struct __ecereNameSpace__ecere__sys__OldList delayedCPValues;
695 int inheritanceAccess;
698 struct __ecereNameSpace__ecere__sys__OldList conversions;
699 struct __ecereNameSpace__ecere__sys__OldList templateParams;
700 struct __ecereNameSpace__ecere__com__ClassTemplateArgument * templateArgs;
701 struct __ecereNameSpace__ecere__com__Class * templateClass;
702 struct __ecereNameSpace__ecere__sys__OldList templatized;
704 unsigned int isInstanceClass;
705 } __attribute__ ((gcc_struct));
707 extern long long __ecereNameSpace__ecere__com__eClass_GetProperty(struct __ecereNameSpace__ecere__com__Class * _class, char * name);
709 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__Instance;
711 struct __ecereNameSpace__ecere__com__Instance
714 struct __ecereNameSpace__ecere__com__Class * _class;
716 } __attribute__ ((gcc_struct));
718 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__DataMember;
720 struct __ecereNameSpace__ecere__com__DataMember
722 struct __ecereNameSpace__ecere__com__DataMember * prev;
723 struct __ecereNameSpace__ecere__com__DataMember * next;
725 unsigned int isProperty;
728 struct __ecereNameSpace__ecere__com__Class * _class;
729 char * dataTypeString;
730 struct __ecereNameSpace__ecere__com__Class * dataTypeClass;
731 struct Type * dataType;
735 struct __ecereNameSpace__ecere__sys__OldList members;
736 struct __ecereNameSpace__ecere__sys__BinaryTree membersAlpha;
739 } __attribute__ ((gcc_struct));
741 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__SerialBuffer;
743 struct __ecereNameSpace__ecere__com__SerialBuffer
745 unsigned char * _buffer;
749 } __attribute__ ((gcc_struct));
751 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__ClassTemplateArgument;
753 struct __ecereNameSpace__ecere__com__ClassTemplateArgument
759 char * dataTypeString;
760 struct __ecereNameSpace__ecere__com__Class * dataTypeClass;
761 } __attribute__ ((gcc_struct));
762 struct __ecereNameSpace__ecere__com__DataValue expression;
768 struct __ecereNameSpace__ecere__com__DataMember * member;
769 struct __ecereNameSpace__ecere__com__Property * prop;
770 struct __ecereNameSpace__ecere__com__Method * method;
771 } __attribute__ ((gcc_struct));
772 } __attribute__ ((gcc_struct));
773 } __attribute__ ((gcc_struct));
774 } __attribute__ ((gcc_struct));
776 extern struct Identifier * MkIdentifier(char * string);
778 struct Specifier * CopySpecifier(struct Specifier * spec);
780 struct Identifier * CopyIdentifier(struct Identifier * id)
784 struct Identifier * copy = MkIdentifier(id->string);
786 copy->_class = id->_class ? CopySpecifier(id->_class) : (((void *)0));
787 copy->classSym = id->classSym;
790 return (((void *)0));
793 extern struct __ecereNameSpace__ecere__sys__OldList * MkList(void);
795 extern void ListAdd(struct __ecereNameSpace__ecere__sys__OldList * list, void * item);
797 extern struct Pointer * MkPointer(struct __ecereNameSpace__ecere__sys__OldList * qualifiers, struct Pointer * pointer);
799 static struct Pointer * CopyPointer(struct Pointer * ptr)
803 struct __ecereNameSpace__ecere__sys__OldList * list = MkList();
804 struct Specifier * spec;
808 for(spec = (*ptr->qualifiers).first; spec; spec = spec->next)
809 ListAdd(list, CopySpecifier(spec));
811 return MkPointer(list, CopyPointer(ptr->pointer));
813 return (((void *)0));
816 extern struct Initializer * MkInitializerAssignment(struct Expression * exp);
818 struct Expression * CopyExpression(struct Expression * exp);
820 extern struct Initializer * MkInitializerList(struct __ecereNameSpace__ecere__sys__OldList * list);
822 struct __ecereNameSpace__ecere__sys__OldList * CopyList(struct __ecereNameSpace__ecere__sys__OldList * source, void * (* CopyFunction)(void * ));
824 static struct Initializer * CopyInitializer(struct Initializer * initializer)
826 struct Initializer * copy = (((void *)0));
829 if(initializer->type == 0)
830 copy = MkInitializerAssignment(CopyExpression(initializer->exp));
831 else if(initializer->type == 1)
832 copy = MkInitializerList(CopyList(initializer->list, CopyInitializer));
835 copy->loc = initializer->loc;
836 copy->isConstant = initializer->isConstant;
841 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_MemberInit;
845 struct MemberInit * prev;
846 struct MemberInit * next;
848 struct Location realLoc;
849 struct __ecereNameSpace__ecere__sys__OldList * identifiers;
850 struct Initializer * initializer;
852 unsigned int variable;
853 unsigned int takeOutExp;
854 } __attribute__ ((gcc_struct));
856 extern struct MemberInit * MkMemberInit(struct __ecereNameSpace__ecere__sys__OldList * ids, struct Initializer * initializer);
858 static struct MemberInit * CopyMemberInit(struct MemberInit * member)
860 return MkMemberInit(CopyList(member->identifiers, CopyIdentifier), CopyInitializer(member->initializer));
863 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_ClassFunction;
865 struct ClassFunction;
867 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_MembersInit;
871 struct MembersInit * prev;
872 struct MembersInit * next;
877 struct __ecereNameSpace__ecere__sys__OldList * dataMembers;
878 struct ClassFunction * function;
879 } __attribute__ ((gcc_struct));
880 } __attribute__ ((gcc_struct));
882 extern struct MembersInit * MkMembersInitList(struct __ecereNameSpace__ecere__sys__OldList * dataMembers);
884 static struct MembersInit * CopyMembersInit(struct MembersInit * members)
886 struct __ecereNameSpace__ecere__sys__OldList * list = (((void *)0));
888 switch(members->type)
894 struct MemberInit * member;
897 for(member = (*members->dataMembers).first; member; member = member->next)
898 ListAdd(list, CopyMemberInit(member));
902 return MkMembersInitList(list);
905 extern struct Instantiation * MkInstantiation(struct Specifier * _class, struct Expression * exp, struct __ecereNameSpace__ecere__sys__OldList * members);
907 static struct Instantiation * CopyInstantiation(struct Instantiation * inst)
909 struct Instantiation * copy;
910 struct __ecereNameSpace__ecere__sys__OldList * list = MkList();
911 struct MembersInit * member;
915 for(member = (*inst->members).first; member; member = member->next)
916 ListAdd(list, CopyMembersInit(member));
918 copy = MkInstantiation(CopySpecifier(inst->_class), CopyExpression(inst->exp), list);
919 copy->data = inst->data;
920 copy->loc = inst->loc;
921 copy->isConstant = inst->isConstant;
925 extern struct Expression * MkExpDummy(void);
927 extern struct Expression * MkExpIdentifier(struct Identifier * id);
929 extern struct Expression * MkExpInstance(struct Instantiation * inst);
931 extern struct Expression * MkExpConstant(char * string);
933 extern struct Expression * MkExpString(char * string);
935 extern struct Expression * MkExpOp(struct Expression * exp1, int op, struct Expression * exp2);
937 extern struct Expression * MkExpBrackets(struct __ecereNameSpace__ecere__sys__OldList * expressions);
939 extern struct Expression * MkExpIndex(struct Expression * expression, struct __ecereNameSpace__ecere__sys__OldList * index);
941 extern struct Expression * MkExpCall(struct Expression * expression, struct __ecereNameSpace__ecere__sys__OldList * arguments);
943 extern struct Expression * MkExpMember(struct Expression * expression, struct Identifier * member);
945 extern struct Expression * MkExpPointer(struct Expression * expression, struct Identifier * member);
947 extern struct Expression * MkExpTypeSize(struct TypeName * typeName);
949 struct TypeName * CopyTypeName(struct TypeName * typeName);
951 extern struct Expression * MkExpTypeAlign(struct TypeName * typeName);
953 extern struct Expression * MkExpCast(struct TypeName * typeName, struct Expression * expression);
955 extern struct Expression * MkExpCondition(struct Expression * cond, struct __ecereNameSpace__ecere__sys__OldList * expressions, struct Expression * elseExp);
957 extern struct Expression * MkExpVaArg(struct Expression * exp, struct TypeName * type);
959 extern struct Expression * MkExpExtensionCompound(struct Statement * compound);
961 static struct Statement * CopyStatement(struct Statement * stmt);
963 struct Expression * CopyExpression(struct Expression * exp)
965 struct Expression * result = (((void *)0));
971 result = MkExpDummy();
974 result = MkExpIdentifier(CopyIdentifier(exp->identifier));
977 result = MkExpInstance(CopyInstantiation(exp->instance));
980 result = MkExpConstant(exp->string);
983 result = MkExpString(exp->string);
986 result = MkExpOp(CopyExpression(exp->op.exp1), exp->op.op, CopyExpression(exp->op.exp2));
990 struct __ecereNameSpace__ecere__sys__OldList * list = MkList();
991 struct Expression * e;
993 for(e = (*exp->list).first; e; e = e->next)
994 ListAdd(list, CopyExpression(e));
995 result = MkExpBrackets(list);
1000 struct __ecereNameSpace__ecere__sys__OldList * list = MkList();
1001 struct Expression * e;
1003 for(e = (*exp->index.index).first; e; e = e->next)
1004 ListAdd(list, CopyExpression(e));
1005 result = MkExpIndex(CopyExpression(exp->index.exp), list);
1010 struct __ecereNameSpace__ecere__sys__OldList * list = MkList();
1011 struct Expression * arg;
1013 if(exp->call.arguments)
1015 for(arg = (*exp->call.arguments).first; arg; arg = arg->next)
1016 ListAdd(list, CopyExpression(arg));
1018 result = MkExpCall(CopyExpression(exp->call.exp), list);
1022 result = MkExpMember(CopyExpression(exp->member.exp), CopyIdentifier(exp->member.member));
1023 result->member.memberType = exp->member.memberType;
1024 result->member.thisPtr = exp->member.thisPtr;
1027 result = MkExpPointer(CopyExpression(exp->member.exp), CopyIdentifier(exp->member.member));
1030 result = MkExpTypeSize(CopyTypeName(exp->typeName));
1033 result = MkExpTypeAlign(CopyTypeName(exp->typeName));
1036 result = MkExpCast(CopyTypeName(exp->cast.typeName), CopyExpression(exp->cast.exp));
1040 struct __ecereNameSpace__ecere__sys__OldList * list = MkList();
1041 struct Expression * e;
1043 for(e = (*exp->cond.exp).first; e; e = e->next)
1044 ListAdd(list, CopyExpression(e));
1045 result = MkExpCondition(CopyExpression(exp->cond.cond), list, CopyExpression(exp->cond.elseExp));
1049 result = MkExpVaArg(CopyExpression(exp->vaArg.exp), CopyTypeName(exp->vaArg.typeName));
1052 result = MkExpExtensionCompound(CopyStatement(exp->compound));
1057 result->expType = exp->expType;
1059 exp->expType->refCount++;
1060 result->destType = exp->destType;
1062 exp->destType->refCount++;
1063 result->loc = exp->loc;
1064 result->isConstant = exp->isConstant;
1065 result->byReference = exp->byReference;
1070 extern struct Statement * MkCompoundStmt(struct __ecereNameSpace__ecere__sys__OldList * declarations, struct __ecereNameSpace__ecere__sys__OldList * statements);
1072 struct Declaration * CopyDeclaration(struct Declaration * decl);
1074 extern struct Statement * MkExpressionStmt(struct __ecereNameSpace__ecere__sys__OldList * expressions);
1076 extern struct Statement * MkBadDeclStmt(struct Declaration * decl);
1078 extern void * __ecereNameSpace__ecere__com__eInstance_New(struct __ecereNameSpace__ecere__com__Class * _class);
1080 static struct Statement * CopyStatement(struct Statement * stmt)
1082 struct Statement * result = (((void *)0));
1089 result = MkCompoundStmt(CopyList(stmt->compound.declarations, CopyDeclaration), CopyList(stmt->compound.statements, CopyStatement));
1090 result->compound.context = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Context);
1093 result = MkExpressionStmt(CopyList(stmt->expressions, CopyExpression));
1096 result = MkBadDeclStmt(CopyDeclaration(stmt->decl));
1102 result->loc = stmt->loc;
1107 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Enumerator;
1111 struct Enumerator * prev;
1112 struct Enumerator * next;
1113 struct Location loc;
1114 struct Identifier * id;
1115 struct Expression * exp;
1116 } __attribute__ ((gcc_struct));
1118 extern struct Enumerator * MkEnumerator(struct Identifier * id, struct Expression * exp);
1120 static struct Enumerator * CopyEnumerator(struct Enumerator * enumerator)
1122 return MkEnumerator(CopyIdentifier(enumerator->id), CopyExpression(enumerator->exp));
1125 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_PropertyDef;
1129 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_PropertyWatch;
1131 struct PropertyWatch;
1133 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_ClassDef;
1137 struct ClassDef * prev;
1138 struct ClassDef * next;
1139 struct Location loc;
1143 struct Declaration * decl;
1144 struct ClassFunction * function;
1145 struct __ecereNameSpace__ecere__sys__OldList * defProperties;
1146 struct PropertyDef * propertyDef;
1147 struct PropertyWatch * propertyWatch;
1149 struct Identifier * defaultProperty;
1152 struct Identifier * id;
1153 struct Initializer * initializer;
1154 } __attribute__ ((gcc_struct));
1155 } __attribute__ ((gcc_struct));
1158 } __attribute__ ((gcc_struct));
1160 extern struct ClassDef * MkClassDefDeclaration(struct Declaration * decl);
1162 struct ClassDef * CopyClassDef(struct ClassDef * def)
1167 return (((void *)0));
1169 return (((void *)0));
1171 return MkClassDefDeclaration(CopyDeclaration(def->decl));
1173 return (((void *)0));
1175 return (((void *)0));
1178 extern struct Specifier * MkSpecifier(int specifier);
1180 extern struct Specifier * MkEnum(struct Identifier * id, struct __ecereNameSpace__ecere__sys__OldList * list);
1182 extern struct Specifier * MkStructOrUnion(int type, struct Identifier * id, struct __ecereNameSpace__ecere__sys__OldList * definitions);
1184 struct ExtDecl * CopyExtDecl(struct ExtDecl * extDecl);
1186 extern char * __ecereNameSpace__ecere__sys__CopyString(char * string);
1188 extern struct Specifier * MkSpecifierSubClass(struct Specifier * _class);
1190 extern struct Specifier * MkSpecifierExtended(struct ExtDecl * extDecl);
1192 struct Specifier * CopySpecifier(struct Specifier * spec)
1198 return MkSpecifier(spec->specifier);
1201 struct Identifier * id = CopyIdentifier(spec->id);
1202 struct __ecereNameSpace__ecere__sys__OldList * list = MkList();
1203 struct Enumerator * enumerator;
1207 for(enumerator = (*spec->list).first; enumerator; enumerator = enumerator->next)
1208 ListAdd(list, CopyEnumerator(enumerator));
1210 return MkEnum(id, list);
1215 struct Identifier * id = CopyIdentifier(spec->id);
1216 struct __ecereNameSpace__ecere__sys__OldList * list = (((void *)0));
1217 struct ClassDef * def;
1218 struct Specifier * s;
1220 if(spec->definitions)
1225 for(def = (*spec->list).first; def; def = def->next)
1226 ListAdd(list, CopyClassDef(def));
1229 s = MkStructOrUnion(spec->type, id, list);
1230 s->extDeclStruct = CopyExtDecl(spec->extDeclStruct);
1235 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);
1240 return MkSpecifierSubClass(CopySpecifier(spec->_class));
1242 return __extension__ ({
1243 struct Specifier * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Specifier);
1245 __ecereInstance1->loc = spec->loc, __ecereInstance1->type = 8, __ecereInstance1->templateParameter = spec->templateParameter, __ecereInstance1;
1248 return MkSpecifierExtended(CopyExtDecl(spec->extDecl));
1250 return (((void *)0));
1253 extern struct TypeName * MkTypeName(struct __ecereNameSpace__ecere__sys__OldList * qualifiers, struct Declarator * declarator);
1255 struct Declarator * CopyDeclarator(struct Declarator * declarator);
1257 struct TypeName * CopyTypeName(struct TypeName * typeName)
1259 struct __ecereNameSpace__ecere__sys__OldList * list = (((void *)0));
1260 struct TypeName * copy;
1262 if(typeName->qualifiers)
1264 struct Specifier * spec;
1267 for(spec = (*typeName->qualifiers).first; spec; spec = spec->next)
1268 ListAdd(list, CopySpecifier(spec));
1270 copy = MkTypeName(list, CopyDeclarator(typeName->declarator));
1271 copy->classObjectType = typeName->classObjectType;
1275 extern struct ExtDecl * MkExtDeclAttrib(struct Attrib * attr);
1277 struct Attrib * CopyAttrib(struct Attrib * attrib);
1279 extern struct ExtDecl * MkExtDeclString(char * s);
1281 struct ExtDecl * CopyExtDecl(struct ExtDecl * extDecl)
1285 if(extDecl->type == 1)
1286 return MkExtDeclAttrib(CopyAttrib(extDecl->attr));
1287 else if(extDecl->type == 0)
1288 return MkExtDeclString(__ecereNameSpace__ecere__sys__CopyString(extDecl->s));
1290 return (((void *)0));
1293 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Attribute;
1297 struct Attribute * prev;
1298 struct Attribute * next;
1299 struct Location loc;
1301 struct Expression * exp;
1302 } __attribute__ ((gcc_struct));
1304 extern struct Attribute * MkAttribute(char * attr, struct Expression * exp);
1306 struct Attribute * CopyAttribute(struct Attribute * attrib)
1309 return MkAttribute(__ecereNameSpace__ecere__sys__CopyString(attrib->attr), CopyExpression(attrib->exp));
1310 return (((void *)0));
1313 extern struct Attrib * MkAttrib(int type, struct __ecereNameSpace__ecere__sys__OldList * attribs);
1315 struct Attrib * CopyAttrib(struct Attrib * attrib)
1318 return MkAttrib(attrib->type, CopyList(attrib->attribs, CopyAttribute));
1319 return (((void *)0));
1322 extern struct Declarator * MkStructDeclarator(struct Declarator * declarator, struct Expression * exp);
1324 extern struct Declarator * MkDeclaratorIdentifier(struct Identifier * id);
1326 extern struct Declarator * MkDeclaratorBrackets(struct Declarator * declarator);
1328 extern struct Declarator * MkDeclaratorEnumArray(struct Declarator * declarator, struct Specifier * _class);
1330 extern struct Declarator * MkDeclaratorArray(struct Declarator * declarator, struct Expression * exp);
1332 extern struct Declarator * MkDeclaratorFunction(struct Declarator * declarator, struct __ecereNameSpace__ecere__sys__OldList * parameters);
1334 extern struct Declarator * MkDeclaratorPointer(struct Pointer * pointer, struct Declarator * declarator);
1336 extern struct Declarator * MkDeclaratorExtended(struct ExtDecl * extended, struct Declarator * declarator);
1338 extern struct Declarator * MkDeclaratorExtendedEnd(struct ExtDecl * extended, struct Declarator * declarator);
1340 struct Declarator * CopyDeclarator(struct Declarator * declarator)
1344 switch(declarator->type)
1348 struct Declarator * decl = MkStructDeclarator(CopyDeclarator(declarator->declarator), CopyExpression(declarator->structDecl.exp));
1350 if(declarator->structDecl.attrib)
1351 decl->structDecl.attrib = CopyAttrib(declarator->structDecl.attrib);
1355 return MkDeclaratorIdentifier(CopyIdentifier(declarator->identifier));
1357 return MkDeclaratorBrackets(CopyDeclarator(declarator->declarator));
1359 if(declarator->array.enumClass)
1360 return MkDeclaratorEnumArray(CopyDeclarator(declarator->declarator), CopySpecifier(declarator->array.enumClass));
1362 return MkDeclaratorArray(CopyDeclarator(declarator->declarator), CopyExpression(declarator->array.exp));
1365 struct __ecereNameSpace__ecere__sys__OldList * parameters = MkList();
1366 struct TypeName * param;
1368 if(declarator->function.parameters)
1370 for(param = (*declarator->function.parameters).first; param; param = param->next)
1371 ListAdd(parameters, CopyTypeName(param));
1373 return MkDeclaratorFunction(CopyDeclarator(declarator->declarator), parameters);
1376 return MkDeclaratorPointer(CopyPointer(declarator->pointer.pointer), CopyDeclarator(declarator->declarator));
1378 return MkDeclaratorExtended(CopyExtDecl(declarator->extended.extended), CopyDeclarator(declarator->declarator));
1380 return MkDeclaratorExtendedEnd(CopyExtDecl(declarator->extended.extended), CopyDeclarator(declarator->declarator));
1383 return (((void *)0));
1386 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_InitDeclarator;
1388 struct InitDeclarator
1390 struct InitDeclarator * prev;
1391 struct InitDeclarator * next;
1392 struct Location loc;
1393 struct Declarator * declarator;
1394 struct Initializer * initializer;
1395 } __attribute__ ((gcc_struct));
1397 extern struct InitDeclarator * MkInitDeclarator(struct Declarator * declarator, struct Initializer * initializer);
1399 struct InitDeclarator * CopyInitDeclarator(struct InitDeclarator * initDecl)
1401 return MkInitDeclarator(CopyDeclarator(initDecl->declarator), CopyInitializer(initDecl->initializer));
1404 extern struct Declaration * MkDeclaration(struct __ecereNameSpace__ecere__sys__OldList * specifiers, struct __ecereNameSpace__ecere__sys__OldList * initDeclarators);
1406 struct Declaration * CopyDeclaration(struct Declaration * decl)
1410 return MkDeclaration(CopyList(decl->specifiers, CopySpecifier), CopyList(decl->declarators, CopyInitDeclarator));
1414 struct __ecereNameSpace__ecere__sys__OldList * specifiers = MkList(), * declarators = MkList();
1415 struct Specifier * spec;
1416 struct Declarator * declarator;
1418 for(spec = (*decl->specifiers).first; spec; spec = spec->next)
1419 ListAdd(specifiers, CopySpecifier(spec));
1420 if(decl->declarators)
1422 for(declarator = (*decl->declarators).first; declarator; declarator = declarator->next)
1423 ListAdd(declarators, CopyDeclarator(declarator));
1425 return MkDeclaration(specifiers, declarators);
1429 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__sys__Item;
1431 struct __ecereNameSpace__ecere__sys__Item
1433 struct __ecereNameSpace__ecere__sys__Item * prev;
1434 struct __ecereNameSpace__ecere__sys__Item * next;
1435 } __attribute__ ((gcc_struct));
1437 struct __ecereNameSpace__ecere__sys__OldList * CopyList(struct __ecereNameSpace__ecere__sys__OldList * source, void * (* CopyFunction)(void *))
1439 struct __ecereNameSpace__ecere__sys__OldList * list = (((void *)0));
1443 struct __ecereNameSpace__ecere__sys__Item * item;
1446 for(item = (*source).first; item; item = item->next)
1447 ListAdd(list, CopyFunction(item));
1452 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__GlobalFunction;
1454 struct __ecereNameSpace__ecere__com__GlobalFunction;
1456 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);
1458 void __ecereRegisterModule_copy(struct __ecereNameSpace__ecere__com__Instance * module)
1460 struct __ecereNameSpace__ecere__com__Class * class;
1462 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("CopyIdentifier", "Identifier CopyIdentifier(Identifier id)", CopyIdentifier, module, 2);
1463 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("CopyExpression", "Expression CopyExpression(Expression exp)", CopyExpression, module, 1);
1464 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("CopyClassDef", "ClassDef CopyClassDef(ClassDef def)", CopyClassDef, module, 2);
1465 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("CopySpecifier", "Specifier CopySpecifier(Specifier spec)", CopySpecifier, module, 2);
1466 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("CopyTypeName", "TypeName CopyTypeName(TypeName typeName)", CopyTypeName, module, 2);
1467 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("CopyExtDecl", "ExtDecl CopyExtDecl(ExtDecl extDecl)", CopyExtDecl, module, 2);
1468 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("CopyAttribute", "Attribute CopyAttribute(Attribute attrib)", CopyAttribute, module, 2);
1469 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("CopyAttrib", "Attrib CopyAttrib(Attrib attrib)", CopyAttrib, module, 2);
1470 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("CopyDeclarator", "Declarator CopyDeclarator(Declarator declarator)", CopyDeclarator, module, 2);
1471 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("CopyInitDeclarator", "InitDeclarator CopyInitDeclarator(InitDeclarator initDecl)", CopyInitDeclarator, module, 2);
1472 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("CopyDeclaration", "Declaration CopyDeclaration(Declaration decl)", CopyDeclaration, module, 2);
1473 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("CopyList", "ecere::sys::OldList * CopyList(ecere::sys::OldList * source, void * (* CopyFunction)(void *))", CopyList, module, 2);
1476 void __ecereUnregisterModule_copy(struct __ecereNameSpace__ecere__com__Instance * module)