compiler/libec: Added grammar rule for __builtin_offset
[sdk] / compiler / bootstrap / libec / bootstrap / copy.c
index c36c541..0fd2dcf 100644 (file)
@@ -1,4 +1,11 @@
 /* Code generated from eC source file: copy.ec */
+#if defined(_WIN32)
+#define __runtimePlatform 1
+#elif defined(__APPLE__)
+#define __runtimePlatform 3
+#else
+#define __runtimePlatform 2
+#endif
 #if defined(__GNUC__)
 typedef long long int64;
 typedef unsigned long long uint64;
@@ -28,9 +35,56 @@ typedef unsigned __int64 uint64;
 #else
 #define __ENDIAN_PAD(x) 0
 #endif
+#if defined(_WIN32)
+#   if defined(__GNUC__) || defined(__TINYC__)
+#      define ecere_stdcall __attribute__((__stdcall__))
+#      define ecere_gcc_struct __attribute__((gcc_struct))
+#   else
+#      define ecere_stdcall __stdcall
+#      define ecere_gcc_struct
+#   endif
+#else
+#   define ecere_stdcall
+#   define ecere_gcc_struct
+#endif
 #include <stdint.h>
 #include <sys/types.h>
-struct __ecereNameSpace__ecere__com__Instance;
+struct __ecereNameSpace__ecere__sys__OldList
+{
+void *  first;
+void *  last;
+int count;
+unsigned int offset;
+unsigned int circ;
+} ecere_gcc_struct;
+
+struct __ecereNameSpace__ecere__sys__BTNode;
+
+struct __ecereNameSpace__ecere__com__DataValue
+{
+union
+{
+char c;
+unsigned char uc;
+short s;
+unsigned short us;
+int i;
+unsigned int ui;
+void *  p;
+float f;
+double d;
+long long i64;
+uint64 ui64;
+} ecere_gcc_struct __anon1;
+} ecere_gcc_struct;
+
+struct __ecereNameSpace__ecere__com__SerialBuffer
+{
+unsigned char *  _buffer;
+unsigned int count;
+unsigned int _size;
+unsigned int pos;
+} ecere_gcc_struct;
 
 extern void *  __ecereNameSpace__ecere__com__eSystem_New(unsigned int size);
 
@@ -42,106 +96,50 @@ extern void *  __ecereNameSpace__ecere__com__eSystem_Renew0(void *  memory, unsi
 
 extern void __ecereNameSpace__ecere__com__eSystem_Delete(void *  memory);
 
-extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__sys__BTNode;
+struct CodePosition
+{
+int line;
+int charPos;
+int pos;
+int included;
+} ecere_gcc_struct;
 
-struct __ecereNameSpace__ecere__sys__BTNode;
+struct Context;
 
-extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__sys__BinaryTree;
+struct TemplateParameter;
 
-struct __ecereNameSpace__ecere__sys__BinaryTree
-{
-struct __ecereNameSpace__ecere__sys__BTNode * root;
-int count;
-int (*  CompareKey)(struct __ecereNameSpace__ecere__sys__BinaryTree * tree, uintptr_t a, uintptr_t b);
-void (*  FreeKey)(void *  key);
-} __attribute__ ((gcc_struct));
+struct ClassFunction;
 
-extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__sys__OldList;
+struct External;
 
-struct __ecereNameSpace__ecere__sys__OldList
-{
-void *  first;
-void *  last;
-int count;
-unsigned int offset;
-unsigned int circ;
-} __attribute__ ((gcc_struct));
+struct ModuleImport;
 
-extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__Method;
+struct ClassImport;
 
-struct __ecereNameSpace__ecere__com__Method
-{
-const char *  name;
-struct __ecereNameSpace__ecere__com__Method * parent;
-struct __ecereNameSpace__ecere__com__Method * left;
-struct __ecereNameSpace__ecere__com__Method * right;
-int depth;
-int (*  function)();
-int vid;
-int type;
-struct __ecereNameSpace__ecere__com__Class * _class;
-void *  symbol;
-const char *  dataTypeString;
-struct Type * dataType;
-int memberAccess;
-} __attribute__ ((gcc_struct));
+struct PropertyDef;
 
-extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__Property;
+struct PropertyWatch;
 
-struct __ecereNameSpace__ecere__com__Property
-{
-struct __ecereNameSpace__ecere__com__Property * prev;
-struct __ecereNameSpace__ecere__com__Property * next;
-const char *  name;
-unsigned int isProperty;
-int memberAccess;
-int id;
-struct __ecereNameSpace__ecere__com__Class * _class;
-const char *  dataTypeString;
-struct __ecereNameSpace__ecere__com__Class * dataTypeClass;
-struct Type * dataType;
-void (*  Set)(void * , int);
-int (*  Get)(void * );
-unsigned int (*  IsSet)(void * );
-void *  data;
-void *  symbol;
-int vid;
-unsigned int conversion;
-unsigned int watcherOffset;
-const char *  category;
-unsigned int compiled;
-unsigned int selfWatchable;
-unsigned int isWatchable;
-} __attribute__ ((gcc_struct));
+extern char *  __ecereNameSpace__ecere__sys__CopyString(const char *  string);
 
-extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_CodePosition;
+struct __ecereNameSpace__ecere__com__GlobalFunction;
 
-struct CodePosition
-{
-int line;
-int charPos;
-int pos;
-int included;
-} __attribute__ ((gcc_struct));
+extern struct __ecereNameSpace__ecere__sys__OldList *  MkList(void);
 
-extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Location;
+extern void ListAdd(struct __ecereNameSpace__ecere__sys__OldList * list, void *  item);
 
 struct Location
 {
 struct CodePosition start;
 struct CodePosition end;
-} __attribute__ ((gcc_struct));
-
-extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Attrib;
+} ecere_gcc_struct;
 
 struct Attrib
 {
 struct Location loc;
 int type;
 struct __ecereNameSpace__ecere__sys__OldList *  attribs;
-} __attribute__ ((gcc_struct));
-
-extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_ExtDecl;
+} ecere_gcc_struct;
 
 struct ExtDecl
 {
@@ -151,70 +149,278 @@ union
 {
 char * s;
 struct Attrib * attr;
-} __attribute__ ((gcc_struct)) __anon1;
-} __attribute__ ((gcc_struct));
+} ecere_gcc_struct __anon1;
+} ecere_gcc_struct;
 
-extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_ClassDefinition;
+extern struct Attrib * MkAttrib(int type, struct __ecereNameSpace__ecere__sys__OldList *  attribs);
 
-struct ClassDefinition;
+extern struct ExtDecl * MkExtDeclAttrib(struct Attrib * attr);
 
-extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Context;
+extern struct ExtDecl * MkExtDeclString(char * s);
 
-struct Context;
+struct __ecereNameSpace__ecere__com__Class;
 
-extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Instantiation;
+struct __ecereNameSpace__ecere__com__Instance
+{
+void * *  _vTbl;
+struct __ecereNameSpace__ecere__com__Class * _class;
+int _refCount;
+} ecere_gcc_struct;
 
-struct Instantiation
+extern long long __ecereNameSpace__ecere__com__eClass_GetProperty(struct __ecereNameSpace__ecere__com__Class * _class, const char *  name);
+
+extern void __ecereNameSpace__ecere__com__eClass_SetProperty(struct __ecereNameSpace__ecere__com__Class * _class, const char *  name, long long value);
+
+extern void *  __ecereNameSpace__ecere__com__eInstance_New(struct __ecereNameSpace__ecere__com__Class * _class);
+
+extern void __ecereNameSpace__ecere__com__eInstance_SetMethod(struct __ecereNameSpace__ecere__com__Instance * instance, const char *  name, void *  function);
+
+extern void __ecereNameSpace__ecere__com__eInstance_IncRef(struct __ecereNameSpace__ecere__com__Instance * instance);
+
+struct __ecereNameSpace__ecere__com__Property;
+
+extern void __ecereNameSpace__ecere__com__eInstance_FireSelfWatchers(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property);
+
+extern void __ecereNameSpace__ecere__com__eInstance_StopWatching(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property, struct __ecereNameSpace__ecere__com__Instance * object);
+
+extern void __ecereNameSpace__ecere__com__eInstance_Watch(void *  instance, struct __ecereNameSpace__ecere__com__Property * _property, void *  object, void (*  callback)(void * , void * ));
+
+extern void __ecereNameSpace__ecere__com__eInstance_FireWatchers(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property);
+
+struct Identifier;
+
+extern struct Identifier * MkIdentifier(const char *  string);
+
+struct Expression;
+
+extern struct Expression * MkExpDummy(void);
+
+extern struct Expression * MkExpIdentifier(struct Identifier * id);
+
+extern struct Expression * MkExpConstant(const char *  string);
+
+extern struct Expression * MkExpString(const char *  string);
+
+extern struct Expression * MkExpOp(struct Expression * exp1, int op, struct Expression * exp2);
+
+extern struct Expression * MkExpBrackets(struct __ecereNameSpace__ecere__sys__OldList * expressions);
+
+extern struct Expression * MkExpIndex(struct Expression * expression, struct __ecereNameSpace__ecere__sys__OldList * index);
+
+extern struct Expression * MkExpCall(struct Expression * expression, struct __ecereNameSpace__ecere__sys__OldList * arguments);
+
+extern struct Expression * MkExpMember(struct Expression * expression, struct Identifier * member);
+
+extern struct Expression * MkExpPointer(struct Expression * expression, struct Identifier * member);
+
+extern struct Expression * MkExpCondition(struct Expression * cond, struct __ecereNameSpace__ecere__sys__OldList * expressions, struct Expression * elseExp);
+
+struct Symbol;
+
+extern struct Symbol * FindClass(const char *  name);
+
+struct Declaration;
+
+extern struct Declaration * MkDeclaration(struct __ecereNameSpace__ecere__sys__OldList * specifiers, struct __ecereNameSpace__ecere__sys__OldList * initDeclarators);
+
+struct Specifier;
+
+struct Identifier
 {
-struct Instantiation * prev;
-struct Instantiation * next;
+struct Identifier * prev;
+struct Identifier * next;
 struct Location loc;
+struct Symbol * classSym;
 struct Specifier * _class;
-struct Expression * exp;
-struct __ecereNameSpace__ecere__sys__OldList *  members;
-struct Symbol * symbol;
-unsigned int fullSet;
-unsigned int isConstant;
-unsigned char *  data;
-struct Location nameLoc;
-struct Location insideLoc;
-unsigned int built;
-} __attribute__ ((gcc_struct));
-
-extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Declaration;
+char *  string;
+struct Identifier * badID;
+} ecere_gcc_struct;
 
-struct Declaration
+struct Specifier
 {
-struct Declaration * prev;
-struct Declaration * next;
+struct Specifier * prev;
+struct Specifier * next;
 struct Location loc;
 int type;
 union
 {
+int specifier;
 struct
 {
-struct __ecereNameSpace__ecere__sys__OldList *  specifiers;
-struct __ecereNameSpace__ecere__sys__OldList *  declarators;
-} __attribute__ ((gcc_struct)) __anon1;
-struct Instantiation * inst;
+struct ExtDecl * extDecl;
+char *  name;
+struct Symbol * symbol;
+struct __ecereNameSpace__ecere__sys__OldList *  templateArgs;
+struct Specifier * nsSpec;
+} ecere_gcc_struct __anon1;
 struct
 {
 struct Identifier * id;
-struct Expression * exp;
-} __attribute__ ((gcc_struct)) __anon2;
-} __attribute__ ((gcc_struct)) __anon1;
-struct Specifier * extStorage;
-struct Symbol * symbol;
-int declMode;
-} __attribute__ ((gcc_struct));
+struct __ecereNameSpace__ecere__sys__OldList *  list;
+struct __ecereNameSpace__ecere__sys__OldList *  baseSpecs;
+struct __ecereNameSpace__ecere__sys__OldList *  definitions;
+unsigned int addNameSpace;
+struct Context * ctx;
+struct ExtDecl * extDeclStruct;
+} ecere_gcc_struct __anon2;
+struct Expression * expression;
+struct Specifier * _class;
+struct TemplateParameter * templateParameter;
+} ecere_gcc_struct __anon1;
+} ecere_gcc_struct;
 
-extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Statement;
+extern struct Specifier * MkSpecifier(int specifier);
 
-struct Statement
+extern struct Specifier * MkEnum(struct Identifier * id, struct __ecereNameSpace__ecere__sys__OldList * list);
+
+extern struct Specifier * MkStructOrUnion(int type, struct Identifier * id, struct __ecereNameSpace__ecere__sys__OldList * definitions);
+
+extern struct Specifier * MkSpecifierSubClass(struct Specifier * _class);
+
+extern struct Specifier * MkSpecifierExtended(struct ExtDecl * extDecl);
+
+struct Declarator;
+
+extern struct Expression * MkExpClass(struct __ecereNameSpace__ecere__sys__OldList *  specifiers, struct Declarator * decl);
+
+extern struct Declarator * MkStructDeclarator(struct Declarator * declarator, struct Expression * exp);
+
+extern struct Declarator * MkDeclaratorIdentifier(struct Identifier * id);
+
+extern struct Declarator * MkDeclaratorBrackets(struct Declarator * declarator);
+
+extern struct Declarator * MkDeclaratorEnumArray(struct Declarator * declarator, struct Specifier * _class);
+
+extern struct Declarator * MkDeclaratorArray(struct Declarator * declarator, struct Expression * exp);
+
+extern struct Declarator * MkDeclaratorFunction(struct Declarator * declarator, struct __ecereNameSpace__ecere__sys__OldList * parameters);
+
+extern struct Declarator * MkDeclaratorExtended(struct ExtDecl * extended, struct Declarator * declarator);
+
+extern struct Declarator * MkDeclaratorExtendedEnd(struct ExtDecl * extended, struct Declarator * declarator);
+
+struct __ecereNameSpace__ecere__sys__Item;
+
+struct __ecereNameSpace__ecere__sys__Item
 {
-struct Statement * prev;
-struct Statement * next;
-struct Location loc;
+struct __ecereNameSpace__ecere__sys__Item * prev;
+struct __ecereNameSpace__ecere__sys__Item * next;
+} ecere_gcc_struct;
+
+struct __ecereNameSpace__ecere__sys__OldList * CopyList(struct __ecereNameSpace__ecere__sys__OldList * source, void * (* CopyFunction)(void *))
+{
+struct __ecereNameSpace__ecere__sys__OldList * list = (((void *)0));
+
+if(source)
+{
+struct __ecereNameSpace__ecere__sys__Item * item;
+
+list = MkList();
+for(item = (*source).first; item; item = item->next)
+ListAdd(list, CopyFunction(item));
+}
+return list;
+}
+
+struct Pointer;
+
+struct Pointer
+{
+struct Pointer * prev;
+struct Pointer * next;
+struct Location loc;
+struct __ecereNameSpace__ecere__sys__OldList *  qualifiers;
+struct Pointer * pointer;
+} ecere_gcc_struct;
+
+extern struct Pointer * MkPointer(struct __ecereNameSpace__ecere__sys__OldList * qualifiers, struct Pointer * pointer);
+
+struct Declarator
+{
+struct Declarator * prev;
+struct Declarator * next;
+struct Location loc;
+int type;
+struct Symbol * symbol;
+struct Declarator * declarator;
+union
+{
+struct Identifier * identifier;
+struct
+{
+struct Expression * exp;
+struct Expression * posExp;
+struct Attrib * attrib;
+} ecere_gcc_struct structDecl;
+struct
+{
+struct Expression * exp;
+struct Specifier * enumClass;
+} ecere_gcc_struct array;
+struct
+{
+struct __ecereNameSpace__ecere__sys__OldList * parameters;
+} ecere_gcc_struct function;
+struct
+{
+struct Pointer * pointer;
+} ecere_gcc_struct pointer;
+struct
+{
+struct ExtDecl * extended;
+} ecere_gcc_struct extended;
+} ecere_gcc_struct __anon1;
+} ecere_gcc_struct;
+
+extern struct Declarator * MkDeclaratorPointer(struct Pointer * pointer, struct Declarator * declarator);
+
+struct Initializer;
+
+struct Initializer
+{
+struct Initializer * prev;
+struct Initializer * next;
+struct Location loc;
+int type;
+union
+{
+struct Expression * exp;
+struct __ecereNameSpace__ecere__sys__OldList *  list;
+} ecere_gcc_struct __anon1;
+unsigned int isConstant;
+struct Identifier * id;
+} ecere_gcc_struct;
+
+extern struct Initializer * MkInitializerAssignment(struct Expression * exp);
+
+extern struct Initializer * MkInitializerList(struct __ecereNameSpace__ecere__sys__OldList * list);
+
+struct MembersInit;
+
+struct MembersInit
+{
+struct MembersInit * prev;
+struct MembersInit * next;
+struct Location loc;
+int type;
+union
+{
+struct __ecereNameSpace__ecere__sys__OldList *  dataMembers;
+struct ClassFunction * function;
+} ecere_gcc_struct __anon1;
+} ecere_gcc_struct;
+
+extern struct MembersInit * MkMembersInitList(struct __ecereNameSpace__ecere__sys__OldList * dataMembers);
+
+struct Statement;
+
+extern struct Expression * MkExpExtensionCompound(struct Statement * compound);
+
+struct Statement
+{
+struct Statement * prev;
+struct Statement * next;
+struct Location loc;
 int type;
 union
 {
@@ -223,51 +429,51 @@ struct
 {
 struct Identifier * id;
 struct Statement * stmt;
-} __attribute__ ((gcc_struct)) labeled;
+} ecere_gcc_struct labeled;
 struct
 {
 struct Expression * exp;
 struct Statement * stmt;
-} __attribute__ ((gcc_struct)) caseStmt;
+} ecere_gcc_struct caseStmt;
 struct
 {
 struct __ecereNameSpace__ecere__sys__OldList * declarations;
 struct __ecereNameSpace__ecere__sys__OldList * statements;
 struct Context * context;
 unsigned int isSwitch;
-} __attribute__ ((gcc_struct)) compound;
+} ecere_gcc_struct compound;
 struct
 {
 struct __ecereNameSpace__ecere__sys__OldList * exp;
 struct Statement * stmt;
 struct Statement * elseStmt;
-} __attribute__ ((gcc_struct)) ifStmt;
+} ecere_gcc_struct ifStmt;
 struct
 {
 struct __ecereNameSpace__ecere__sys__OldList * exp;
 struct Statement * stmt;
-} __attribute__ ((gcc_struct)) switchStmt;
+} ecere_gcc_struct switchStmt;
 struct
 {
 struct __ecereNameSpace__ecere__sys__OldList * exp;
 struct Statement * stmt;
-} __attribute__ ((gcc_struct)) whileStmt;
+} ecere_gcc_struct whileStmt;
 struct
 {
 struct __ecereNameSpace__ecere__sys__OldList * exp;
 struct Statement * stmt;
-} __attribute__ ((gcc_struct)) doWhile;
+} ecere_gcc_struct doWhile;
 struct
 {
 struct Statement * init;
 struct Statement * check;
 struct __ecereNameSpace__ecere__sys__OldList * increment;
 struct Statement * stmt;
-} __attribute__ ((gcc_struct)) forStmt;
+} ecere_gcc_struct forStmt;
 struct
 {
 struct Identifier * id;
-} __attribute__ ((gcc_struct)) gotoStmt;
+} ecere_gcc_struct gotoStmt;
 struct
 {
 struct Specifier * spec;
@@ -275,359 +481,140 @@ char * statements;
 struct __ecereNameSpace__ecere__sys__OldList * inputFields;
 struct __ecereNameSpace__ecere__sys__OldList * outputFields;
 struct __ecereNameSpace__ecere__sys__OldList * clobberedFields;
-} __attribute__ ((gcc_struct)) asmStmt;
+} ecere_gcc_struct asmStmt;
 struct
 {
 struct Expression * watcher;
 struct Expression * object;
 struct __ecereNameSpace__ecere__sys__OldList * watches;
-} __attribute__ ((gcc_struct)) _watch;
+} ecere_gcc_struct _watch;
 struct
 {
 struct Identifier * id;
 struct __ecereNameSpace__ecere__sys__OldList * exp;
 struct __ecereNameSpace__ecere__sys__OldList * filter;
 struct Statement * stmt;
-} __attribute__ ((gcc_struct)) forEachStmt;
+} ecere_gcc_struct forEachStmt;
 struct Declaration * decl;
-} __attribute__ ((gcc_struct)) __anon1;
-} __attribute__ ((gcc_struct));
+} ecere_gcc_struct __anon1;
+} ecere_gcc_struct;
 
-extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_TypeName;
+extern struct Statement * MkCompoundStmt(struct __ecereNameSpace__ecere__sys__OldList * declarations, struct __ecereNameSpace__ecere__sys__OldList * statements);
 
-struct TypeName
-{
-struct TypeName * prev;
-struct TypeName * next;
-struct Location loc;
-struct __ecereNameSpace__ecere__sys__OldList *  qualifiers;
-struct Declarator * declarator;
-int classObjectType;
-struct Expression * bitCount;
-} __attribute__ ((gcc_struct));
+extern struct Statement * MkExpressionStmt(struct __ecereNameSpace__ecere__sys__OldList * expressions);
 
-extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Initializer;
+extern struct Statement * MkBadDeclStmt(struct Declaration * decl);
 
-struct Initializer
-{
-struct Initializer * prev;
-struct Initializer * next;
-struct Location loc;
-int type;
-union
+struct __ecereNameSpace__ecere__sys__BinaryTree;
+
+struct __ecereNameSpace__ecere__sys__BinaryTree
 {
-struct Expression * exp;
-struct __ecereNameSpace__ecere__sys__OldList *  list;
-} __attribute__ ((gcc_struct)) __anon1;
-unsigned int isConstant;
-struct Identifier * id;
-} __attribute__ ((gcc_struct));
+struct __ecereNameSpace__ecere__sys__BTNode * root;
+int count;
+int (*  CompareKey)(struct __ecereNameSpace__ecere__sys__BinaryTree * tree, uintptr_t a, uintptr_t b);
+void (*  FreeKey)(void *  key);
+} ecere_gcc_struct;
 
-extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__DataValue;
+struct Attrib *  CopyAttrib(struct Attrib *  attrib);
 
-struct __ecereNameSpace__ecere__com__DataValue
+struct ExtDecl * CopyExtDecl(struct ExtDecl * extDecl)
 {
-union
+if(extDecl)
 {
-char c;
-unsigned char uc;
-short s;
-unsigned short us;
-int i;
-unsigned int ui;
-void *  p;
-float f;
-double d;
-long long i64;
-uint64 ui64;
-} __attribute__ ((gcc_struct)) __anon1;
-} __attribute__ ((gcc_struct));
+if(extDecl->type == 1)
+return MkExtDeclAttrib(CopyAttrib(extDecl->__anon1.attr));
+else if(extDecl->type == 0)
+return MkExtDeclString(__ecereNameSpace__ecere__sys__CopyString(extDecl->__anon1.s));
+}
+return (((void *)0));
+}
 
-extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Expression;
+struct __ecereNameSpace__ecere__com__Method;
 
-struct Expression
-{
-struct Expression * prev;
-struct Expression * next;
-struct Location loc;
-int type;
-union
+struct __ecereNameSpace__ecere__com__Module;
+
+extern struct __ecereNameSpace__ecere__com__GlobalFunction * __ecereNameSpace__ecere__com__eSystem_RegisterFunction(const char *  name, const char *  type, void *  func, struct __ecereNameSpace__ecere__com__Instance * module, int declMode);
+
+struct Type;
+
+struct __ecereNameSpace__ecere__com__Property
 {
-struct
+struct __ecereNameSpace__ecere__com__Property * prev;
+struct __ecereNameSpace__ecere__com__Property * next;
+const char *  name;
+unsigned int isProperty;
+int memberAccess;
+int id;
+struct __ecereNameSpace__ecere__com__Class * _class;
+const char *  dataTypeString;
+struct __ecereNameSpace__ecere__com__Class * dataTypeClass;
+struct Type * dataType;
+void (*  Set)(void * , int);
+int (*  Get)(void * );
+unsigned int (*  IsSet)(void * );
+void *  data;
+void *  symbol;
+int vid;
+unsigned int conversion;
+unsigned int watcherOffset;
+const char *  category;
+unsigned int compiled;
+unsigned int selfWatchable;
+unsigned int isWatchable;
+} ecere_gcc_struct;
+
+struct __ecereNameSpace__ecere__com__Method
 {
-char *  constant;
-struct Identifier * identifier;
-} __attribute__ ((gcc_struct)) __anon1;
-struct Statement * compound;
-struct Instantiation * instance;
-struct
+const char *  name;
+struct __ecereNameSpace__ecere__com__Method * parent;
+struct __ecereNameSpace__ecere__com__Method * left;
+struct __ecereNameSpace__ecere__com__Method * right;
+int depth;
+int (*  function)();
+int vid;
+int type;
+struct __ecereNameSpace__ecere__com__Class * _class;
+void *  symbol;
+const char *  dataTypeString;
+struct Type * dataType;
+int memberAccess;
+} ecere_gcc_struct;
+
+struct Symbol
 {
 char *  string;
-unsigned int intlString;
-} __attribute__ ((gcc_struct)) __anon2;
-struct __ecereNameSpace__ecere__sys__OldList *  list;
-struct
-{
-struct __ecereNameSpace__ecere__sys__OldList * specifiers;
-struct Declarator * decl;
-} __attribute__ ((gcc_struct)) _classExp;
-struct
-{
-struct Identifier * id;
-} __attribute__ ((gcc_struct)) classData;
-struct
-{
-struct Expression * exp;
-struct __ecereNameSpace__ecere__sys__OldList * arguments;
-struct Location argLoc;
-} __attribute__ ((gcc_struct)) call;
-struct
+struct Symbol * parent;
+struct Symbol * left;
+struct Symbol * right;
+int depth;
+struct Type * type;
+union
 {
-struct Expression * exp;
-struct __ecereNameSpace__ecere__sys__OldList * index;
-} __attribute__ ((gcc_struct)) index;
-struct
+struct __ecereNameSpace__ecere__com__Method * method;
+struct __ecereNameSpace__ecere__com__Property * _property;
+struct __ecereNameSpace__ecere__com__Class * registered;
+} ecere_gcc_struct __anon1;
+unsigned int notYetDeclared;
+union
 {
-struct Expression * exp;
-struct Identifier * member;
-int memberType;
-unsigned int thisPtr;
-} __attribute__ ((gcc_struct)) member;
 struct
 {
-int op;
-struct Expression * exp1;
-struct Expression * exp2;
-} __attribute__ ((gcc_struct)) op;
-struct TypeName * typeName;
-struct Specifier * _class;
+struct External * pointerExternal;
+struct External * structExternal;
+} ecere_gcc_struct __anon1;
 struct
 {
-struct TypeName * typeName;
-struct Expression * exp;
-} __attribute__ ((gcc_struct)) cast;
-struct
-{
-struct Expression * cond;
-struct __ecereNameSpace__ecere__sys__OldList * exp;
-struct Expression * elseExp;
-} __attribute__ ((gcc_struct)) cond;
-struct
-{
-struct TypeName * typeName;
-struct Expression * size;
-} __attribute__ ((gcc_struct)) _new;
-struct
-{
-struct TypeName * typeName;
-struct Expression * size;
-struct Expression * exp;
-} __attribute__ ((gcc_struct)) _renew;
-struct
-{
-char * table;
-struct Identifier * id;
-} __attribute__ ((gcc_struct)) db;
-struct
-{
-struct Expression * ds;
-struct Expression * name;
-} __attribute__ ((gcc_struct)) dbopen;
-struct
-{
-struct TypeName * typeName;
-struct Initializer * initializer;
-} __attribute__ ((gcc_struct)) initializer;
-struct
-{
-struct Expression * exp;
-struct TypeName * typeName;
-} __attribute__ ((gcc_struct)) vaArg;
-} __attribute__ ((gcc_struct)) __anon1;
-unsigned int debugValue;
-struct __ecereNameSpace__ecere__com__DataValue val;
-uint64 address;
-unsigned int hasAddress;
-struct Type * expType;
-struct Type * destType;
-unsigned int usage;
-int tempCount;
-unsigned int byReference;
-unsigned int isConstant;
-unsigned int addedThis;
-unsigned int needCast;
-unsigned int thisPtr;
-unsigned int opDestType;
-unsigned int needTemplateCast;
-} __attribute__ ((gcc_struct));
-
-extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_TemplateDatatype;
-
-struct TemplateDatatype;
-
-extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_TemplateArgument;
-
-struct TemplateArgument;
-
-extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_TemplateParameter;
-
-struct TemplateParameter;
-
-extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Specifier;
-
-struct Specifier
-{
-struct Specifier * prev;
-struct Specifier * next;
-struct Location loc;
-int type;
-union
-{
-int specifier;
-struct
-{
-struct ExtDecl * extDecl;
-char *  name;
-struct Symbol * symbol;
-struct __ecereNameSpace__ecere__sys__OldList *  templateArgs;
-} __attribute__ ((gcc_struct)) __anon1;
-struct
-{
-struct Identifier * id;
-struct __ecereNameSpace__ecere__sys__OldList *  list;
-struct __ecereNameSpace__ecere__sys__OldList *  baseSpecs;
-struct __ecereNameSpace__ecere__sys__OldList *  definitions;
-unsigned int addNameSpace;
-struct Context * ctx;
-struct ExtDecl * extDeclStruct;
-} __attribute__ ((gcc_struct)) __anon2;
-struct Expression * expression;
-struct Specifier * _class;
-struct TemplateParameter * templateParameter;
-} __attribute__ ((gcc_struct)) __anon1;
-} __attribute__ ((gcc_struct));
-
-extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Identifier;
-
-struct Identifier
-{
-struct Identifier * prev;
-struct Identifier * next;
-struct Location loc;
-struct Symbol * classSym;
-struct Specifier * _class;
-char *  string;
-struct Identifier * badID;
-} __attribute__ ((gcc_struct));
-
-extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Pointer;
-
-struct Pointer
-{
-struct Pointer * prev;
-struct Pointer * next;
-struct Location loc;
-struct __ecereNameSpace__ecere__sys__OldList *  qualifiers;
-struct Pointer * pointer;
-} __attribute__ ((gcc_struct));
-
-extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Declarator;
-
-struct Declarator
-{
-struct Declarator * prev;
-struct Declarator * next;
-struct Location loc;
-int type;
-struct Symbol * symbol;
-struct Declarator * declarator;
-union
-{
-struct Identifier * identifier;
-struct
-{
-struct Expression * exp;
-struct Expression * posExp;
-struct Attrib * attrib;
-} __attribute__ ((gcc_struct)) structDecl;
-struct
-{
-struct Expression * exp;
-struct Specifier * enumClass;
-} __attribute__ ((gcc_struct)) array;
-struct
-{
-struct __ecereNameSpace__ecere__sys__OldList * parameters;
-} __attribute__ ((gcc_struct)) function;
-struct
-{
-struct Pointer * pointer;
-} __attribute__ ((gcc_struct)) pointer;
-struct
-{
-struct ExtDecl * extended;
-} __attribute__ ((gcc_struct)) extended;
-} __attribute__ ((gcc_struct)) __anon1;
-} __attribute__ ((gcc_struct));
-
-extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_FunctionDefinition;
-
-struct FunctionDefinition;
-
-extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_DBTableDef;
-
-struct DBTableDef;
-
-extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_External;
-
-struct External;
-
-extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_ModuleImport;
-
-struct ModuleImport;
-
-extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_ClassImport;
-
-struct ClassImport;
-
-extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Symbol;
-
-struct Symbol
-{
-char *  string;
-struct Symbol * parent;
-struct Symbol * left;
-struct Symbol * right;
-int depth;
-struct Type * type;
-union
-{
-struct __ecereNameSpace__ecere__com__Method * method;
-struct __ecereNameSpace__ecere__com__Property * _property;
-struct __ecereNameSpace__ecere__com__Class * registered;
-} __attribute__ ((gcc_struct)) __anon1;
-int id;
-int idCode;
-union
-{
-struct
-{
-struct External * pointerExternal;
-struct External * structExternal;
-} __attribute__ ((gcc_struct)) __anon1;
-struct
-{
-struct External * externalGet;
-struct External * externalSet;
-struct External * externalPtr;
-struct External * externalIsSet;
-} __attribute__ ((gcc_struct)) __anon2;
+struct External * externalGet;
+struct External * externalSet;
+struct External * externalPtr;
+struct External * externalIsSet;
+} ecere_gcc_struct __anon2;
 struct
 {
 struct External * methodExternal;
 struct External * methodCodeExternal;
-} __attribute__ ((gcc_struct)) __anon3;
-} __attribute__ ((gcc_struct)) __anon2;
+} ecere_gcc_struct __anon3;
+} ecere_gcc_struct __anon2;
 unsigned int imported;
 unsigned int declaredStructSym;
 struct __ecereNameSpace__ecere__com__Class * _class;
@@ -654,9 +641,8 @@ struct __ecereNameSpace__ecere__sys__OldList templatedClasses;
 struct Context * ctx;
 int isIterator;
 struct Expression * propCategory;
-} __attribute__ ((gcc_struct));
-
-extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Type;
+unsigned int mustRegister;
+} ecere_gcc_struct;
 
 struct Type
 {
@@ -670,7 +656,7 @@ struct
 {
 struct __ecereNameSpace__ecere__sys__OldList members;
 char *  enumName;
-} __attribute__ ((gcc_struct)) __anon1;
+} ecere_gcc_struct __anon1;
 struct
 {
 struct Type * returnType;
@@ -678,13 +664,13 @@ struct __ecereNameSpace__ecere__sys__OldList params;
 struct Symbol * thisClass;
 unsigned int staticMethod;
 struct TemplateParameter * thisClassTemplate;
-} __attribute__ ((gcc_struct)) __anon2;
+} ecere_gcc_struct __anon2;
 struct
 {
 struct __ecereNameSpace__ecere__com__Method * method;
 struct __ecereNameSpace__ecere__com__Class * methodClass;
 struct __ecereNameSpace__ecere__com__Class * usedClass;
-} __attribute__ ((gcc_struct)) __anon3;
+} ecere_gcc_struct __anon3;
 struct
 {
 struct Type * arrayType;
@@ -692,19 +678,22 @@ int arraySize;
 struct Expression * arraySizeExp;
 unsigned int freeExp;
 struct Symbol * enumClass;
-} __attribute__ ((gcc_struct)) __anon4;
+} ecere_gcc_struct __anon4;
 struct Type * type;
 struct TemplateParameter * templateParameter;
-} __attribute__ ((gcc_struct)) __anon1;
+} ecere_gcc_struct __anon1;
 int kind;
 unsigned int size;
 char *  name;
 char *  typeName;
+struct __ecereNameSpace__ecere__com__Class * thisClassFrom;
+int promotedFrom;
 int classObjectType;
 int alignment;
 unsigned int offset;
 int bitFieldCount;
 int count;
+int bitMemberSize;
 unsigned int isSigned : 1;
 unsigned int constant : 1;
 unsigned int truth : 1;
@@ -719,154 +708,264 @@ unsigned int attrStdcall : 1;
 unsigned int declaredWithStruct : 1;
 unsigned int typedByReference : 1;
 unsigned int casted : 1;
-} __attribute__ ((gcc_struct));
+unsigned int pointerAlignment : 1;
+unsigned int isLong : 1;
+unsigned int signedBeforePromotion : 1;
+} ecere_gcc_struct;
 
-extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__Class;
+struct Instantiation;
 
-struct __ecereNameSpace__ecere__com__Class
+struct Instantiation
 {
-struct __ecereNameSpace__ecere__com__Class * prev;
-struct __ecereNameSpace__ecere__com__Class * next;
-const char *  name;
-int offset;
-int structSize;
-int (* *  _vTbl)();
-int vTblSize;
-int (*  Constructor)(struct __ecereNameSpace__ecere__com__Instance *);
-void (*  Destructor)(struct __ecereNameSpace__ecere__com__Instance *);
-int offsetClass;
-int sizeClass;
-struct __ecereNameSpace__ecere__com__Class * base;
-struct __ecereNameSpace__ecere__sys__BinaryTree methods;
-struct __ecereNameSpace__ecere__sys__BinaryTree members;
-struct __ecereNameSpace__ecere__sys__BinaryTree prop;
-struct __ecereNameSpace__ecere__sys__OldList membersAndProperties;
-struct __ecereNameSpace__ecere__sys__BinaryTree classProperties;
-struct __ecereNameSpace__ecere__sys__OldList derivatives;
-int memberID;
-int startMemberID;
-int type;
-struct __ecereNameSpace__ecere__com__Instance * module;
-struct __ecereNameSpace__ecere__com__NameSpace *  nameSpace;
-const char *  dataTypeString;
-struct Type * dataType;
-int typeSize;
-int defaultAlignment;
-void (*  Initialize)();
-int memberOffset;
-struct __ecereNameSpace__ecere__sys__OldList selfWatchers;
-const char *  designerClass;
-unsigned int noExpansion;
-const char *  defaultProperty;
-unsigned int comRedefinition;
-int count;
-int isRemote;
-unsigned int internalDecl;
-void *  data;
-unsigned int computeSize;
-int structAlignment;
-int destructionWatchOffset;
-unsigned int fixed;
-struct __ecereNameSpace__ecere__sys__OldList delayedCPValues;
-int inheritanceAccess;
-const char *  fullName;
-void *  symbol;
-struct __ecereNameSpace__ecere__sys__OldList conversions;
-struct __ecereNameSpace__ecere__sys__OldList templateParams;
-struct __ecereNameSpace__ecere__com__ClassTemplateArgument *  templateArgs;
-struct __ecereNameSpace__ecere__com__Class * templateClass;
-struct __ecereNameSpace__ecere__sys__OldList templatized;
-int numParams;
-unsigned int isInstanceClass;
-unsigned int byValueSystemClass;
-} __attribute__ ((gcc_struct));
-
-extern long long __ecereNameSpace__ecere__com__eClass_GetProperty(struct __ecereNameSpace__ecere__com__Class * _class, const char *  name);
-
-extern void __ecereNameSpace__ecere__com__eClass_SetProperty(struct __ecereNameSpace__ecere__com__Class * _class, const char *  name, long long value);
-
-extern void __ecereNameSpace__ecere__com__eInstance_FireSelfWatchers(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property);
-
-extern void __ecereNameSpace__ecere__com__eInstance_SetMethod(struct __ecereNameSpace__ecere__com__Instance * instance, const char *  name, void *  function);
-
-extern void __ecereNameSpace__ecere__com__eInstance_IncRef(struct __ecereNameSpace__ecere__com__Instance * instance);
-
-extern void __ecereNameSpace__ecere__com__eInstance_StopWatching(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property, struct __ecereNameSpace__ecere__com__Instance * object);
+struct Instantiation * prev;
+struct Instantiation * next;
+struct Location loc;
+struct Specifier * _class;
+struct Expression * exp;
+struct __ecereNameSpace__ecere__sys__OldList *  members;
+struct Symbol * symbol;
+unsigned int fullSet;
+unsigned int isConstant;
+unsigned char *  data;
+struct Location nameLoc;
+struct Location insideLoc;
+unsigned int built;
+} ecere_gcc_struct;
 
-extern void __ecereNameSpace__ecere__com__eInstance_Watch(void *  instance, struct __ecereNameSpace__ecere__com__Property * _property, void *  object, void (*  callback)(void * , void * ));
+extern struct Instantiation * MkInstantiation(struct Specifier * _class, struct Expression * exp, struct __ecereNameSpace__ecere__sys__OldList * members);
 
-extern void __ecereNameSpace__ecere__com__eInstance_FireWatchers(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property);
+extern struct Expression * MkExpInstance(struct Instantiation * inst);
 
-extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__Instance;
-
-struct __ecereNameSpace__ecere__com__Instance
+struct Declaration
 {
-int (* *  _vTbl)();
-struct __ecereNameSpace__ecere__com__Class * _class;
-int _refCount;
-} __attribute__ ((gcc_struct));
+struct Declaration * prev;
+struct Declaration * next;
+struct Location loc;
+int type;
+union
+{
+struct
+{
+struct __ecereNameSpace__ecere__sys__OldList *  specifiers;
+struct __ecereNameSpace__ecere__sys__OldList *  declarators;
+} ecere_gcc_struct __anon1;
+struct Instantiation * inst;
+struct
+{
+struct Identifier * id;
+struct Expression * exp;
+} ecere_gcc_struct __anon2;
+} ecere_gcc_struct __anon1;
+struct Specifier * extStorage;
+struct Symbol * symbol;
+int declMode;
+} ecere_gcc_struct;
 
-extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__DataMember;
+struct TypeName;
 
-struct __ecereNameSpace__ecere__com__DataMember
+struct Expression
 {
-struct __ecereNameSpace__ecere__com__DataMember * prev;
-struct __ecereNameSpace__ecere__com__DataMember * next;
-const char *  name;
-unsigned int isProperty;
-int memberAccess;
-int id;
-struct __ecereNameSpace__ecere__com__Class * _class;
-const char *  dataTypeString;
-struct __ecereNameSpace__ecere__com__Class * dataTypeClass;
-struct Type * dataType;
+struct Expression * prev;
+struct Expression * next;
+struct Location loc;
 int type;
-int offset;
-int memberID;
-struct __ecereNameSpace__ecere__sys__OldList members;
-struct __ecereNameSpace__ecere__sys__BinaryTree membersAlpha;
-int memberOffset;
-int structAlignment;
-} __attribute__ ((gcc_struct));
+union
+{
+struct
+{
+char *  constant;
+struct Identifier * identifier;
+} ecere_gcc_struct __anon1;
+struct Statement * compound;
+struct Instantiation * instance;
+struct
+{
+char *  string;
+unsigned int intlString;
+unsigned int wideString;
+} ecere_gcc_struct __anon2;
+struct __ecereNameSpace__ecere__sys__OldList *  list;
+struct
+{
+struct __ecereNameSpace__ecere__sys__OldList * specifiers;
+struct Declarator * decl;
+} ecere_gcc_struct _classExp;
+struct
+{
+struct Identifier * id;
+} ecere_gcc_struct classData;
+struct
+{
+struct Expression * exp;
+struct __ecereNameSpace__ecere__sys__OldList * arguments;
+struct Location argLoc;
+} ecere_gcc_struct call;
+struct
+{
+struct Expression * exp;
+struct __ecereNameSpace__ecere__sys__OldList * index;
+} ecere_gcc_struct index;
+struct
+{
+struct Expression * exp;
+struct Identifier * member;
+int memberType;
+unsigned int thisPtr;
+} ecere_gcc_struct member;
+struct
+{
+int op;
+struct Expression * exp1;
+struct Expression * exp2;
+} ecere_gcc_struct op;
+struct TypeName * typeName;
+struct Specifier * _class;
+struct
+{
+struct TypeName * typeName;
+struct Expression * exp;
+} ecere_gcc_struct cast;
+struct
+{
+struct Expression * cond;
+struct __ecereNameSpace__ecere__sys__OldList * exp;
+struct Expression * elseExp;
+} ecere_gcc_struct cond;
+struct
+{
+struct TypeName * typeName;
+struct Expression * size;
+} ecere_gcc_struct _new;
+struct
+{
+struct TypeName * typeName;
+struct Expression * size;
+struct Expression * exp;
+} ecere_gcc_struct _renew;
+struct
+{
+char * table;
+struct Identifier * id;
+} ecere_gcc_struct db;
+struct
+{
+struct Expression * ds;
+struct Expression * name;
+} ecere_gcc_struct dbopen;
+struct
+{
+struct TypeName * typeName;
+struct Initializer * initializer;
+} ecere_gcc_struct initializer;
+struct
+{
+struct Expression * exp;
+struct TypeName * typeName;
+} ecere_gcc_struct vaArg;
+struct
+{
+struct TypeName * typeName;
+struct Identifier * id;
+} ecere_gcc_struct offset;
+} ecere_gcc_struct __anon1;
+unsigned int debugValue;
+struct __ecereNameSpace__ecere__com__DataValue val;
+uint64 address;
+unsigned int hasAddress;
+struct Type * expType;
+struct Type * destType;
+unsigned int usage;
+int tempCount;
+unsigned int byReference;
+unsigned int isConstant;
+unsigned int addedThis;
+unsigned int needCast;
+unsigned int thisPtr;
+unsigned int opDestType;
+unsigned int needTemplateCast;
+} ecere_gcc_struct;
 
-extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__SerialBuffer;
+extern struct Expression * MkExpTypeSize(struct TypeName * typeName);
 
-struct __ecereNameSpace__ecere__com__SerialBuffer
-{
-unsigned char *  _buffer;
-unsigned int count;
-unsigned int _size;
-unsigned int pos;
-} __attribute__ ((gcc_struct));
+extern struct Expression * MkExpTypeAlign(struct TypeName * typeName);
 
-extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__ClassTemplateArgument;
+extern struct Expression * MkExpOffsetOf(struct TypeName * typeName, struct Identifier * id);
 
-struct __ecereNameSpace__ecere__com__ClassTemplateArgument
+extern struct Expression * MkExpCast(struct TypeName * typeName, struct Expression * expression);
+
+extern struct Expression * MkExpVaArg(struct Expression * exp, struct TypeName * type);
+
+extern struct Expression * MkExpExtensionInitializer(struct TypeName * typeName, struct Initializer * initializer);
+
+struct TypeName
 {
-union
+struct TypeName * prev;
+struct TypeName * next;
+struct Location loc;
+struct __ecereNameSpace__ecere__sys__OldList *  qualifiers;
+struct Declarator * declarator;
+int classObjectType;
+struct Expression * bitCount;
+} ecere_gcc_struct;
+
+extern struct TypeName * MkTypeName(struct __ecereNameSpace__ecere__sys__OldList * qualifiers, struct Declarator * declarator);
+
+struct Enumerator;
+
+extern struct Enumerator * MkEnumerator(struct Identifier * id, struct Expression * exp);
+
+struct Enumerator
 {
-struct
+struct Enumerator * prev;
+struct Enumerator * next;
+struct Location loc;
+struct Identifier * id;
+struct Expression * exp;
+} ecere_gcc_struct;
+
+struct Attribute;
+
+extern struct Attribute * MkAttribute(char * attr, struct Expression * exp);
+
+struct Attribute
 {
-const char *  dataTypeString;
-struct __ecereNameSpace__ecere__com__Class * dataTypeClass;
-} __attribute__ ((gcc_struct)) __anon1;
-struct __ecereNameSpace__ecere__com__DataValue expression;
-struct
+struct Attribute * prev;
+struct Attribute * next;
+struct Location loc;
+char * attr;
+struct Expression * exp;
+} ecere_gcc_struct;
+
+struct ClassDef;
+
+struct ClassDef
 {
-const char *  memberString;
+struct ClassDef * prev;
+struct ClassDef * next;
+struct Location loc;
+int type;
 union
 {
-struct __ecereNameSpace__ecere__com__DataMember * member;
-struct __ecereNameSpace__ecere__com__Property * prop;
-struct __ecereNameSpace__ecere__com__Method * method;
-} __attribute__ ((gcc_struct)) __anon1;
-} __attribute__ ((gcc_struct)) __anon2;
-} __attribute__ ((gcc_struct)) __anon1;
-} __attribute__ ((gcc_struct));
+struct Declaration * decl;
+struct ClassFunction * function;
+struct __ecereNameSpace__ecere__sys__OldList *  defProperties;
+struct PropertyDef * propertyDef;
+struct PropertyWatch * propertyWatch;
+char *  designer;
+struct Identifier * defaultProperty;
+struct
+{
+struct Identifier * id;
+struct Initializer * initializer;
+} ecere_gcc_struct __anon1;
+} ecere_gcc_struct __anon1;
+int memberAccess;
+void *  object;
+} ecere_gcc_struct;
 
-extern struct Identifier * MkIdentifier(const char *  string);
+extern struct ClassDef * MkClassDefDeclaration(struct Declaration * decl);
 
-struct Specifier * CopySpecifier(struct Specifier * spec);
+struct Specifier *  CopySpecifier(struct Specifier *  spec);
 
 struct Identifier * CopyIdentifier(struct Identifier * id)
 {
@@ -881,12 +980,6 @@ return copy;
 return (((void *)0));
 }
 
-extern struct __ecereNameSpace__ecere__sys__OldList *  MkList(void);
-
-extern void ListAdd(struct __ecereNameSpace__ecere__sys__OldList * list, void *  item);
-
-extern struct Pointer * MkPointer(struct __ecereNameSpace__ecere__sys__OldList * qualifiers, struct Pointer * pointer);
-
 static struct Pointer * CopyPointer(struct Pointer * ptr)
 {
 if(ptr)
@@ -904,34 +997,18 @@ return MkPointer(list, CopyPointer(ptr->pointer));
 return (((void *)0));
 }
 
-extern struct Initializer * MkInitializerAssignment(struct Expression * exp);
-
-struct Expression * CopyExpression(struct Expression * exp);
-
-extern struct Initializer * MkInitializerList(struct __ecereNameSpace__ecere__sys__OldList * list);
-
-struct __ecereNameSpace__ecere__sys__OldList *  CopyList(struct __ecereNameSpace__ecere__sys__OldList *  source, void *  (*  CopyFunction)(void * ));
-
-static struct Initializer * CopyInitializer(struct Initializer * initializer)
-{
-struct Initializer * copy = (((void *)0));
+struct Attribute *  CopyAttribute(struct Attribute *  attrib);
 
-;
-if(initializer->type == 0)
-copy = MkInitializerAssignment(CopyExpression(initializer->__anon1.exp));
-else if(initializer->type == 1)
-copy = MkInitializerList(CopyList(initializer->__anon1.list, CopyInitializer));
-if(copy)
+struct Attrib * CopyAttrib(struct Attrib * attrib)
 {
-copy->loc = initializer->loc;
-if(initializer->id)
-copy->id = CopyIdentifier(initializer->id);
-copy->isConstant = initializer->isConstant;
-}
-return copy;
+if(attrib)
+return MkAttrib(attrib->type, CopyList(attrib->attribs, (void *)(CopyAttribute)));
+return (((void *)0));
 }
 
-extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_MemberInit;
+struct MemberInit;
+
+extern struct MemberInit * MkMemberInit(struct __ecereNameSpace__ecere__sys__OldList * ids, struct Initializer * initializer);
 
 struct MemberInit
 {
@@ -944,93 +1021,186 @@ struct Initializer * initializer;
 unsigned int used;
 unsigned int variable;
 unsigned int takeOutExp;
-} __attribute__ ((gcc_struct));
-
-extern struct MemberInit * MkMemberInit(struct __ecereNameSpace__ecere__sys__OldList * ids, struct Initializer * initializer);
+} ecere_gcc_struct;
 
-static struct MemberInit * CopyMemberInit(struct MemberInit * member)
-{
-return MkMemberInit(CopyList(member->identifiers, CopyIdentifier), CopyInitializer(member->initializer));
-}
-
-extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_ClassFunction;
+struct InitDeclarator;
 
-struct ClassFunction;
-
-extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_MembersInit;
+extern struct InitDeclarator * MkInitDeclarator(struct Declarator * declarator, struct Initializer * initializer);
 
-struct MembersInit
+struct InitDeclarator
 {
-struct MembersInit * prev;
-struct MembersInit * next;
+struct InitDeclarator * prev;
+struct InitDeclarator * next;
 struct Location loc;
-int type;
-union
-{
-struct __ecereNameSpace__ecere__sys__OldList *  dataMembers;
-struct ClassFunction * function;
-} __attribute__ ((gcc_struct)) __anon1;
-} __attribute__ ((gcc_struct));
+struct Declarator * declarator;
+struct Initializer * initializer;
+} ecere_gcc_struct;
 
-extern struct MembersInit * MkMembersInitList(struct __ecereNameSpace__ecere__sys__OldList * dataMembers);
+struct __ecereNameSpace__ecere__com__NameSpace;
 
-static struct MembersInit * CopyMembersInit(struct MembersInit * members)
+struct __ecereNameSpace__ecere__com__NameSpace
 {
-struct __ecereNameSpace__ecere__sys__OldList * list = (((void *)0));
+const char *  name;
+struct __ecereNameSpace__ecere__com__NameSpace *  btParent;
+struct __ecereNameSpace__ecere__com__NameSpace *  left;
+struct __ecereNameSpace__ecere__com__NameSpace *  right;
+int depth;
+struct __ecereNameSpace__ecere__com__NameSpace *  parent;
+struct __ecereNameSpace__ecere__sys__BinaryTree nameSpaces;
+struct __ecereNameSpace__ecere__sys__BinaryTree classes;
+struct __ecereNameSpace__ecere__sys__BinaryTree defines;
+struct __ecereNameSpace__ecere__sys__BinaryTree functions;
+} ecere_gcc_struct;
+
+struct __ecereNameSpace__ecere__com__Application
+{
+int argc;
+const char * *  argv;
+int exitCode;
+unsigned int isGUIApp;
+struct __ecereNameSpace__ecere__sys__OldList allModules;
+char *  parsedCommand;
+struct __ecereNameSpace__ecere__com__NameSpace systemNameSpace;
+} ecere_gcc_struct;
+
+struct __ecereNameSpace__ecere__com__Module
+{
+struct __ecereNameSpace__ecere__com__Instance * application;
+struct __ecereNameSpace__ecere__sys__OldList classes;
+struct __ecereNameSpace__ecere__sys__OldList defines;
+struct __ecereNameSpace__ecere__sys__OldList functions;
+struct __ecereNameSpace__ecere__sys__OldList modules;
+struct __ecereNameSpace__ecere__com__Instance * prev;
+struct __ecereNameSpace__ecere__com__Instance * next;
+const char *  name;
+void *  library;
+void *  Unload;
+int importType;
+int origImportType;
+struct __ecereNameSpace__ecere__com__NameSpace privateNameSpace;
+struct __ecereNameSpace__ecere__com__NameSpace publicNameSpace;
+} ecere_gcc_struct;
 
-switch(members->type)
-{
-case 0:
-{
-if(members)
+void __ecereUnregisterModule_copy(struct __ecereNameSpace__ecere__com__Instance * module)
 {
-struct MemberInit * member;
 
-list = MkList();
-for(member = (*members->__anon1.dataMembers).first; member; member = member->next)
-ListAdd(list, CopyMemberInit(member));
-}
-}
-}
-return MkMembersInitList(list);
 }
 
-extern struct Instantiation * MkInstantiation(struct Specifier * _class, struct Expression * exp, struct __ecereNameSpace__ecere__sys__OldList * members);
-
-extern struct Symbol * FindClass(const char *  name);
+struct __ecereNameSpace__ecere__com__DataMember;
 
-static struct Instantiation * CopyInstantiation(struct Instantiation * inst)
+struct __ecereNameSpace__ecere__com__ClassTemplateArgument
 {
-struct Instantiation * copy;
-struct __ecereNameSpace__ecere__sys__OldList * list = MkList();
-struct MembersInit * member;
-
-if(inst->members)
+union
 {
-for(member = (*inst->members).first; member; member = member->next)
-ListAdd(list, CopyMembersInit(member));
-}
-copy = MkInstantiation(CopySpecifier(inst->_class), CopyExpression(inst->exp), list);
-copy->data = inst->data;
-if(inst->data)
+struct
 {
-struct Symbol * classSym = FindClass(inst->_class->__anon1.__anon1.name);
-struct __ecereNameSpace__ecere__com__Class * _class = classSym ? classSym->__anon1.registered : (((void *)0));
+const char *  dataTypeString;
+struct __ecereNameSpace__ecere__com__Class * dataTypeClass;
+} ecere_gcc_struct __anon1;
+struct __ecereNameSpace__ecere__com__DataValue expression;
+struct
+{
+const char *  memberString;
+union
+{
+struct __ecereNameSpace__ecere__com__DataMember * member;
+struct __ecereNameSpace__ecere__com__Property * prop;
+struct __ecereNameSpace__ecere__com__Method * method;
+} ecere_gcc_struct __anon1;
+} ecere_gcc_struct __anon2;
+} ecere_gcc_struct __anon1;
+} ecere_gcc_struct;
 
-if(_class)
+struct __ecereNameSpace__ecere__com__DataMember
 {
-if(_class->type == 0)
-((struct __ecereNameSpace__ecere__com__Instance *)(char *)((struct __ecereNameSpace__ecere__com__Instance *)copy->data))->_refCount++;
-}
-}
-copy->loc = inst->loc;
-copy->isConstant = inst->isConstant;
-return copy;
-}
+struct __ecereNameSpace__ecere__com__DataMember * prev;
+struct __ecereNameSpace__ecere__com__DataMember * next;
+const char *  name;
+unsigned int isProperty;
+int memberAccess;
+int id;
+struct __ecereNameSpace__ecere__com__Class * _class;
+const char *  dataTypeString;
+struct __ecereNameSpace__ecere__com__Class * dataTypeClass;
+struct Type * dataType;
+int type;
+int offset;
+int memberID;
+struct __ecereNameSpace__ecere__sys__OldList members;
+struct __ecereNameSpace__ecere__sys__BinaryTree membersAlpha;
+int memberOffset;
+short structAlignment;
+short pointerAlignment;
+} ecere_gcc_struct;
 
-extern void *  __ecereNameSpace__ecere__com__eInstance_New(struct __ecereNameSpace__ecere__com__Class * _class);
+struct __ecereNameSpace__ecere__com__Class
+{
+struct __ecereNameSpace__ecere__com__Class * prev;
+struct __ecereNameSpace__ecere__com__Class * next;
+const char *  name;
+int offset;
+int structSize;
+void * *  _vTbl;
+int vTblSize;
+unsigned int (*  Constructor)(void * );
+void (*  Destructor)(void * );
+int offsetClass;
+int sizeClass;
+struct __ecereNameSpace__ecere__com__Class * base;
+struct __ecereNameSpace__ecere__sys__BinaryTree methods;
+struct __ecereNameSpace__ecere__sys__BinaryTree members;
+struct __ecereNameSpace__ecere__sys__BinaryTree prop;
+struct __ecereNameSpace__ecere__sys__OldList membersAndProperties;
+struct __ecereNameSpace__ecere__sys__BinaryTree classProperties;
+struct __ecereNameSpace__ecere__sys__OldList derivatives;
+int memberID;
+int startMemberID;
+int type;
+struct __ecereNameSpace__ecere__com__Instance * module;
+struct __ecereNameSpace__ecere__com__NameSpace *  nameSpace;
+const char *  dataTypeString;
+struct Type * dataType;
+int typeSize;
+int defaultAlignment;
+void (*  Initialize)();
+int memberOffset;
+struct __ecereNameSpace__ecere__sys__OldList selfWatchers;
+const char *  designerClass;
+unsigned int noExpansion;
+const char *  defaultProperty;
+unsigned int comRedefinition;
+int count;
+int isRemote;
+unsigned int internalDecl;
+void *  data;
+unsigned int computeSize;
+short structAlignment;
+short pointerAlignment;
+int destructionWatchOffset;
+unsigned int fixed;
+struct __ecereNameSpace__ecere__sys__OldList delayedCPValues;
+int inheritanceAccess;
+const char *  fullName;
+void *  symbol;
+struct __ecereNameSpace__ecere__sys__OldList conversions;
+struct __ecereNameSpace__ecere__sys__OldList templateParams;
+struct __ecereNameSpace__ecere__com__ClassTemplateArgument *  templateArgs;
+struct __ecereNameSpace__ecere__com__Class * templateClass;
+struct __ecereNameSpace__ecere__sys__OldList templatized;
+int numParams;
+unsigned int isInstanceClass;
+unsigned int byValueSystemClass;
+} ecere_gcc_struct;
+
+extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Expression;
+
+extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Context;
+
+extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Specifier;
 
-struct Expression * CopyExpContents(struct Expression * exp)
+extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__Instance;
+
+struct Expression * MoveExpContents(struct Expression * exp)
 {
 struct Expression * newExp = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Expression);
 
@@ -1043,254 +1213,122 @@ exp->expType->refCount++;
 return newExp;
 }
 
-extern struct Expression * MkExpDummy(void);
-
-extern struct Expression * MkExpIdentifier(struct Identifier * id);
-
-extern struct Expression * MkExpInstance(struct Instantiation * inst);
-
-extern struct Expression * MkExpConstant(const char *  string);
-
-extern struct Expression * MkExpString(const char *  string);
-
-extern struct Expression * MkExpOp(struct Expression * exp1, int op, struct Expression * exp2);
-
-extern struct Expression * MkExpBrackets(struct __ecereNameSpace__ecere__sys__OldList * expressions);
-
-extern struct Expression * MkExpIndex(struct Expression * expression, struct __ecereNameSpace__ecere__sys__OldList * index);
-
-extern struct Expression * MkExpCall(struct Expression * expression, struct __ecereNameSpace__ecere__sys__OldList * arguments);
-
-extern struct Expression * MkExpMember(struct Expression * expression, struct Identifier * member);
-
-extern struct Expression * MkExpPointer(struct Expression * expression, struct Identifier * member);
-
-extern struct Expression * MkExpTypeSize(struct TypeName * typeName);
-
-struct TypeName * CopyTypeName(struct TypeName * typeName);
-
-extern struct Expression * MkExpTypeAlign(struct TypeName * typeName);
-
-extern struct Expression * MkExpCast(struct TypeName * typeName, struct Expression * expression);
-
-extern struct Expression * MkExpCondition(struct Expression * cond, struct __ecereNameSpace__ecere__sys__OldList * expressions, struct Expression * elseExp);
-
-extern struct Expression * MkExpVaArg(struct Expression * exp, struct TypeName * type);
-
-extern struct Expression * MkExpExtensionCompound(struct Statement * compound);
-
-static struct Statement * CopyStatement(struct Statement * stmt);
-
-extern struct Expression * MkExpExtensionInitializer(struct TypeName * typeName, struct Initializer * initializer);
+struct Expression *  CopyExpression(struct Expression *  exp);
 
-extern struct Expression * MkExpClass(struct __ecereNameSpace__ecere__sys__OldList *  specifiers, struct Declarator * decl);
-
-struct Declarator * CopyDeclarator(struct Declarator * declarator);
-
-struct Expression * CopyExpression(struct Expression * exp)
+static struct Initializer * CopyInitializer(struct Initializer * initializer)
 {
-struct Expression * result = (((void *)0));
+struct Initializer * copy = (((void *)0));
 
-if(exp)
-switch(exp->type)
-{
-case 16:
-result = MkExpDummy();
-break;
-case 0:
-result = MkExpIdentifier(CopyIdentifier(exp->__anon1.__anon1.identifier));
-break;
-case 1:
-result = MkExpInstance(CopyInstantiation(exp->__anon1.instance));
-break;
-case 2:
-result = MkExpConstant(exp->__anon1.__anon2.string);
-break;
-case 3:
-result = MkExpString(exp->__anon1.__anon2.string);
-break;
-case 4:
-result = MkExpOp(CopyExpression(exp->__anon1.op.exp1), exp->__anon1.op.op, CopyExpression(exp->__anon1.op.exp2));
-break;
-case 5:
+;
+if(initializer->type == 0)
+copy = MkInitializerAssignment(CopyExpression(initializer->__anon1.exp));
+else if(initializer->type == 1)
+copy = MkInitializerList(CopyList(initializer->__anon1.list, (void *)(CopyInitializer)));
+if(copy)
 {
-struct __ecereNameSpace__ecere__sys__OldList * list = MkList();
-struct Expression * e;
-
-for(e = (*exp->__anon1.list).first; e; e = e->next)
-ListAdd(list, CopyExpression(e));
-result = MkExpBrackets(list);
-break;
+copy->loc = initializer->loc;
+if(initializer->id)
+copy->id = CopyIdentifier(initializer->id);
+copy->isConstant = initializer->isConstant;
 }
-case 6:
-{
-struct __ecereNameSpace__ecere__sys__OldList * list = MkList();
-struct Expression * e;
-
-for(e = (*exp->__anon1.index.index).first; e; e = e->next)
-ListAdd(list, CopyExpression(e));
-result = MkExpIndex(CopyExpression(exp->__anon1.index.exp), list);
-break;
+return copy;
 }
-case 7:
-{
-struct __ecereNameSpace__ecere__sys__OldList * list = MkList();
-struct Expression * arg;
 
-if(exp->__anon1.call.arguments)
+static struct Enumerator * CopyEnumerator(struct Enumerator * enumerator)
 {
-for(arg = (*exp->__anon1.call.arguments).first; arg; arg = arg->next)
-ListAdd(list, CopyExpression(arg));
-}
-result = MkExpCall(CopyExpression(exp->__anon1.call.exp), list);
-break;
+return MkEnumerator(CopyIdentifier(enumerator->id), CopyExpression(enumerator->exp));
 }
-case 8:
-result = MkExpMember(CopyExpression(exp->__anon1.member.exp), CopyIdentifier(exp->__anon1.member.member));
-result->__anon1.member.memberType = exp->__anon1.member.memberType;
-result->__anon1.member.thisPtr = exp->__anon1.member.thisPtr;
-break;
-case 9:
-result = MkExpPointer(CopyExpression(exp->__anon1.member.exp), CopyIdentifier(exp->__anon1.member.member));
-break;
-case 10:
-result = MkExpTypeSize(CopyTypeName(exp->__anon1.typeName));
-break;
-case 36:
-result = MkExpTypeAlign(CopyTypeName(exp->__anon1.typeName));
-break;
-case 11:
-result = MkExpCast(CopyTypeName(exp->__anon1.cast.typeName), CopyExpression(exp->__anon1.cast.exp));
-break;
-case 12:
-{
-struct __ecereNameSpace__ecere__sys__OldList * list = MkList();
-struct Expression * e;
 
-for(e = (*exp->__anon1.cond.exp).first; e; e = e->next)
-ListAdd(list, CopyExpression(e));
-result = MkExpCondition(CopyExpression(exp->__anon1.cond.cond), list, CopyExpression(exp->__anon1.cond.elseExp));
-break;
-}
-case 34:
-result = MkExpVaArg(CopyExpression(exp->__anon1.vaArg.exp), CopyTypeName(exp->__anon1.vaArg.typeName));
-break;
-case 23:
-result = MkExpExtensionCompound(CopyStatement(exp->__anon1.compound));
-break;
-case 33:
-result = MkExpExtensionInitializer(CopyTypeName(exp->__anon1.initializer.typeName), CopyInitializer(exp->__anon1.initializer.initializer));
-break;
-case 24:
-result = MkExpClass(CopyList(exp->__anon1._classExp.specifiers, CopySpecifier), CopyDeclarator(exp->__anon1._classExp.decl));
-break;
-}
-if(result)
+struct Attribute * CopyAttribute(struct Attribute * attrib)
 {
-result->expType = exp->expType;
-if(exp->expType)
-exp->expType->refCount++;
-result->destType = exp->destType;
-if(exp->destType)
-exp->destType->refCount++;
-result->loc = exp->loc;
-result->isConstant = exp->isConstant;
-result->byReference = exp->byReference;
-result->opDestType = exp->opDestType;
-result->needTemplateCast = exp->needTemplateCast;
-}
-return result;
+if(attrib)
+return MkAttribute(__ecereNameSpace__ecere__sys__CopyString(attrib->attr), CopyExpression(attrib->exp));
+return (((void *)0));
 }
 
-extern struct Statement * MkCompoundStmt(struct __ecereNameSpace__ecere__sys__OldList * declarations, struct __ecereNameSpace__ecere__sys__OldList * statements);
-
-struct Declaration * CopyDeclaration(struct Declaration * decl);
-
-extern struct Statement * MkExpressionStmt(struct __ecereNameSpace__ecere__sys__OldList * expressions);
-
-extern struct Statement * MkBadDeclStmt(struct Declaration * decl);
+static struct MemberInit * CopyMemberInit(struct MemberInit * member)
+{
+return MkMemberInit(CopyList(member->identifiers, (void *)(CopyIdentifier)), CopyInitializer(member->initializer));
+}
 
-static struct Statement * CopyStatement(struct Statement * stmt)
+static struct MembersInit * CopyMembersInit(struct MembersInit * members)
 {
-struct Statement * result = (((void *)0));
+struct __ecereNameSpace__ecere__sys__OldList * list = (((void *)0));
 
-if(stmt)
+switch(members->type)
 {
-switch(stmt->type)
+case 0:
 {
-case 2:
-result = MkCompoundStmt(CopyList(stmt->__anon1.compound.declarations, CopyDeclaration), CopyList(stmt->__anon1.compound.statements, CopyStatement));
-result->__anon1.compound.context = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Context);
-break;
-case 3:
-result = MkExpressionStmt(CopyList(stmt->__anon1.expressions, CopyExpression));
-break;
-case 14:
-result = MkBadDeclStmt(CopyDeclaration(stmt->__anon1.decl));
-break;
+if(members)
+{
+struct MemberInit * member;
+
+list = MkList();
+for(member = (*members->__anon1.dataMembers).first; member; member = member->next)
+ListAdd(list, CopyMemberInit(member));
 }
 }
-if(result)
-{
-result->loc = stmt->loc;
 }
-return result;
+return MkMembersInitList(list);
 }
 
-extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Enumerator;
-
-struct Enumerator
+static struct Instantiation * CopyInstantiation(struct Instantiation * inst)
 {
-struct Enumerator * prev;
-struct Enumerator * next;
-struct Location loc;
-struct Identifier * id;
-struct Expression * exp;
-} __attribute__ ((gcc_struct));
-
-extern struct Enumerator * MkEnumerator(struct Identifier * id, struct Expression * exp);
+struct Instantiation * copy;
+struct __ecereNameSpace__ecere__sys__OldList * list = MkList();
+struct MembersInit * member;
 
-static struct Enumerator * CopyEnumerator(struct Enumerator * enumerator)
+if(inst->members)
 {
-return MkEnumerator(CopyIdentifier(enumerator->id), CopyExpression(enumerator->exp));
+for(member = (*inst->members).first; member; member = member->next)
+ListAdd(list, CopyMembersInit(member));
 }
+copy = MkInstantiation(CopySpecifier(inst->_class), CopyExpression(inst->exp), list);
+copy->data = inst->data;
+if(inst->data)
+{
+struct Symbol * classSym = FindClass(inst->_class->__anon1.__anon1.name);
+struct __ecereNameSpace__ecere__com__Class * _class = classSym ? classSym->__anon1.registered : (((void *)0));
 
-extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_PropertyDef;
-
-struct PropertyDef;
-
-extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_PropertyWatch;
+if(_class)
+{
+if(_class->type == 0)
+((struct __ecereNameSpace__ecere__com__Instance *)(char *)((struct __ecereNameSpace__ecere__com__Instance *)copy->data))->_refCount++;
+}
+}
+copy->loc = inst->loc;
+copy->isConstant = inst->isConstant;
+return copy;
+}
 
-struct PropertyWatch;
+struct Declaration *  CopyDeclaration(struct Declaration *  decl);
 
-extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_ClassDef;
+static struct Statement * CopyStatement(struct Statement * stmt)
+{
+struct Statement * result = (((void *)0));
 
-struct ClassDef
+if(stmt)
 {
-struct ClassDef * prev;
-struct ClassDef * next;
-struct Location loc;
-int type;
-union
+switch(stmt->type)
 {
-struct Declaration * decl;
-struct ClassFunction * function;
-struct __ecereNameSpace__ecere__sys__OldList *  defProperties;
-struct PropertyDef * propertyDef;
-struct PropertyWatch * propertyWatch;
-char *  designer;
-struct Identifier * defaultProperty;
-struct
+case 2:
+result = MkCompoundStmt(CopyList(stmt->__anon1.compound.declarations, (void *)(CopyDeclaration)), CopyList(stmt->__anon1.compound.statements, (void *)(CopyStatement)));
+result->__anon1.compound.context = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Context);
+break;
+case 3:
+result = MkExpressionStmt(CopyList(stmt->__anon1.expressions, (void *)(CopyExpression)));
+break;
+case 14:
+result = MkBadDeclStmt(CopyDeclaration(stmt->__anon1.decl));
+break;
+}
+}
+if(result)
 {
-struct Identifier * id;
-struct Initializer * initializer;
-} __attribute__ ((gcc_struct)) __anon1;
-} __attribute__ ((gcc_struct)) __anon1;
-int memberAccess;
-void *  object;
-} __attribute__ ((gcc_struct));
-
-extern struct ClassDef * MkClassDefDeclaration(struct Declaration * decl);
+result->loc = stmt->loc;
+}
+return result;
+}
 
 struct ClassDef * CopyClassDef(struct ClassDef * def)
 {
@@ -1308,20 +1346,6 @@ return (((void *)0));
 return (((void *)0));
 }
 
-extern struct Specifier * MkSpecifier(int specifier);
-
-extern struct Specifier * MkEnum(struct Identifier * id, struct __ecereNameSpace__ecere__sys__OldList * list);
-
-extern struct Specifier * MkStructOrUnion(int type, struct Identifier * id, struct __ecereNameSpace__ecere__sys__OldList * definitions);
-
-struct ExtDecl * CopyExtDecl(struct ExtDecl * extDecl);
-
-extern char *  __ecereNameSpace__ecere__sys__CopyString(const char *  string);
-
-extern struct Specifier * MkSpecifierSubClass(struct Specifier * _class);
-
-extern struct Specifier * MkSpecifierExtended(struct ExtDecl * extDecl);
-
 struct Specifier * CopySpecifier(struct Specifier * spec)
 {
 if(spec)
@@ -1383,7 +1407,7 @@ return MkSpecifierExtended(CopyExtDecl(spec->__anon1.__anon1.extDecl));
 return (((void *)0));
 }
 
-extern struct TypeName * MkTypeName(struct __ecereNameSpace__ecere__sys__OldList * qualifiers, struct Declarator * declarator);
+struct Declarator *  CopyDeclarator(struct Declarator *  declarator);
 
 struct TypeName * CopyTypeName(struct TypeName * typeName)
 {
@@ -1403,70 +1427,128 @@ copy->classObjectType = typeName->classObjectType;
 return copy;
 }
 
-extern struct ExtDecl * MkExtDeclAttrib(struct Attrib * attr);
-
-struct Attrib * CopyAttrib(struct Attrib * attrib);
+struct InitDeclarator * CopyInitDeclarator(struct InitDeclarator * initDecl)
+{
+return MkInitDeclarator(CopyDeclarator(initDecl->declarator), CopyInitializer(initDecl->initializer));
+}
 
-extern struct ExtDecl * MkExtDeclString(char * s);
+struct Expression * CopyExpression(struct Expression * exp)
+{
+struct Expression * result = (((void *)0));
 
-struct ExtDecl * CopyExtDecl(struct ExtDecl * extDecl)
+if(exp)
+switch(exp->type)
 {
-if(extDecl)
+case 16:
+result = MkExpDummy();
+break;
+case 0:
+result = MkExpIdentifier(CopyIdentifier(exp->__anon1.__anon1.identifier));
+break;
+case 1:
+result = MkExpInstance(CopyInstantiation(exp->__anon1.instance));
+break;
+case 2:
+result = MkExpConstant(exp->__anon1.__anon2.string);
+break;
+case 3:
+result = MkExpString(exp->__anon1.__anon2.string);
+break;
+case 4:
+result = MkExpOp(CopyExpression(exp->__anon1.op.exp1), exp->__anon1.op.op, CopyExpression(exp->__anon1.op.exp2));
+break;
+case 5:
 {
-if(extDecl->type == 1)
-return MkExtDeclAttrib(CopyAttrib(extDecl->__anon1.attr));
-else if(extDecl->type == 0)
-return MkExtDeclString(__ecereNameSpace__ecere__sys__CopyString(extDecl->__anon1.s));
-}
-return (((void *)0));
-}
-
-extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Attribute;
+struct __ecereNameSpace__ecere__sys__OldList * list = MkList();
+struct Expression * e;
 
-struct Attribute
+for(e = (*exp->__anon1.list).first; e; e = e->next)
+ListAdd(list, CopyExpression(e));
+result = MkExpBrackets(list);
+break;
+}
+case 6:
 {
-struct Attribute * prev;
-struct Attribute * next;
-struct Location loc;
-char * attr;
-struct Expression * exp;
-} __attribute__ ((gcc_struct));
+struct __ecereNameSpace__ecere__sys__OldList * list = MkList();
+struct Expression * e;
 
-extern struct Attribute * MkAttribute(char * attr, struct Expression * exp);
+for(e = (*exp->__anon1.index.index).first; e; e = e->next)
+ListAdd(list, CopyExpression(e));
+result = MkExpIndex(CopyExpression(exp->__anon1.index.exp), list);
+break;
+}
+case 7:
+{
+struct __ecereNameSpace__ecere__sys__OldList * list = MkList();
+struct Expression * arg;
 
-struct Attribute * CopyAttribute(struct Attribute * attrib)
+if(exp->__anon1.call.arguments)
 {
-if(attrib)
-return MkAttribute(__ecereNameSpace__ecere__sys__CopyString(attrib->attr), CopyExpression(attrib->exp));
-return (((void *)0));
+for(arg = (*exp->__anon1.call.arguments).first; arg; arg = arg->next)
+ListAdd(list, CopyExpression(arg));
 }
+result = MkExpCall(CopyExpression(exp->__anon1.call.exp), list);
+break;
+}
+case 8:
+result = MkExpMember(CopyExpression(exp->__anon1.member.exp), CopyIdentifier(exp->__anon1.member.member));
+result->__anon1.member.memberType = exp->__anon1.member.memberType;
+result->__anon1.member.thisPtr = exp->__anon1.member.thisPtr;
+break;
+case 9:
+result = MkExpPointer(CopyExpression(exp->__anon1.member.exp), CopyIdentifier(exp->__anon1.member.member));
+break;
+case 10:
+result = MkExpTypeSize(CopyTypeName(exp->__anon1.typeName));
+break;
+case 36:
+result = MkExpTypeAlign(CopyTypeName(exp->__anon1.typeName));
+break;
+case 40:
+result = MkExpOffsetOf(CopyTypeName(exp->__anon1.typeName), CopyIdentifier(exp->__anon1.__anon1.identifier));
+break;
+case 11:
+result = MkExpCast(CopyTypeName(exp->__anon1.cast.typeName), CopyExpression(exp->__anon1.cast.exp));
+break;
+case 12:
+{
+struct __ecereNameSpace__ecere__sys__OldList * list = MkList();
+struct Expression * e;
 
-extern struct Attrib * MkAttrib(int type, struct __ecereNameSpace__ecere__sys__OldList *  attribs);
-
-struct Attrib * CopyAttrib(struct Attrib * attrib)
+for(e = (*exp->__anon1.cond.exp).first; e; e = e->next)
+ListAdd(list, CopyExpression(e));
+result = MkExpCondition(CopyExpression(exp->__anon1.cond.cond), list, CopyExpression(exp->__anon1.cond.elseExp));
+break;
+}
+case 34:
+result = MkExpVaArg(CopyExpression(exp->__anon1.vaArg.exp), CopyTypeName(exp->__anon1.vaArg.typeName));
+break;
+case 23:
+result = MkExpExtensionCompound(CopyStatement(exp->__anon1.compound));
+break;
+case 33:
+result = MkExpExtensionInitializer(CopyTypeName(exp->__anon1.initializer.typeName), CopyInitializer(exp->__anon1.initializer.initializer));
+break;
+case 24:
+result = MkExpClass(CopyList(exp->__anon1._classExp.specifiers, (void *)(CopySpecifier)), CopyDeclarator(exp->__anon1._classExp.decl));
+break;
+}
+if(result)
 {
-if(attrib)
-return MkAttrib(attrib->type, CopyList(attrib->attribs, CopyAttribute));
-return (((void *)0));
+result->expType = exp->expType;
+if(exp->expType)
+exp->expType->refCount++;
+result->destType = exp->destType;
+if(exp->destType)
+exp->destType->refCount++;
+result->loc = exp->loc;
+result->isConstant = exp->isConstant;
+result->byReference = exp->byReference;
+result->opDestType = exp->opDestType;
+result->needTemplateCast = exp->needTemplateCast;
+}
+return result;
 }
-
-extern struct Declarator * MkStructDeclarator(struct Declarator * declarator, struct Expression * exp);
-
-extern struct Declarator * MkDeclaratorIdentifier(struct Identifier * id);
-
-extern struct Declarator * MkDeclaratorBrackets(struct Declarator * declarator);
-
-extern struct Declarator * MkDeclaratorEnumArray(struct Declarator * declarator, struct Specifier * _class);
-
-extern struct Declarator * MkDeclaratorArray(struct Declarator * declarator, struct Expression * exp);
-
-extern struct Declarator * MkDeclaratorFunction(struct Declarator * declarator, struct __ecereNameSpace__ecere__sys__OldList * parameters);
-
-extern struct Declarator * MkDeclaratorPointer(struct Pointer * pointer, struct Declarator * declarator);
-
-extern struct Declarator * MkDeclaratorExtended(struct ExtDecl * extended, struct Declarator * declarator);
-
-extern struct Declarator * MkDeclaratorExtendedEnd(struct ExtDecl * extended, struct Declarator * declarator);
 
 struct Declarator * CopyDeclarator(struct Declarator * declarator)
 {
@@ -1514,31 +1596,11 @@ return MkDeclaratorExtendedEnd(CopyExtDecl(declarator->__anon1.extended.extended
 return (((void *)0));
 }
 
-extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_InitDeclarator;
-
-struct InitDeclarator
-{
-struct InitDeclarator * prev;
-struct InitDeclarator * next;
-struct Location loc;
-struct Declarator * declarator;
-struct Initializer * initializer;
-} __attribute__ ((gcc_struct));
-
-extern struct InitDeclarator * MkInitDeclarator(struct Declarator * declarator, struct Initializer * initializer);
-
-struct InitDeclarator * CopyInitDeclarator(struct InitDeclarator * initDecl)
-{
-return MkInitDeclarator(CopyDeclarator(initDecl->declarator), CopyInitializer(initDecl->initializer));
-}
-
-extern struct Declaration * MkDeclaration(struct __ecereNameSpace__ecere__sys__OldList * specifiers, struct __ecereNameSpace__ecere__sys__OldList * initDeclarators);
-
 struct Declaration * CopyDeclaration(struct Declaration * decl)
 {
 if(decl->type == 1)
 {
-return MkDeclaration(CopyList(decl->__anon1.__anon1.specifiers, CopySpecifier), CopyList(decl->__anon1.__anon1.declarators, CopyInitDeclarator));
+return MkDeclaration(CopyList(decl->__anon1.__anon1.specifiers, (void *)(CopySpecifier)), CopyList(decl->__anon1.__anon1.declarators, (void *)(CopyInitDeclarator)));
 }
 else
 {
@@ -1557,41 +1619,12 @@ return MkDeclaration(specifiers, declarators);
 }
 }
 
-extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__sys__Item;
-
-struct __ecereNameSpace__ecere__sys__Item
-{
-struct __ecereNameSpace__ecere__sys__Item * prev;
-struct __ecereNameSpace__ecere__sys__Item * next;
-} __attribute__ ((gcc_struct));
-
-struct __ecereNameSpace__ecere__sys__OldList * CopyList(struct __ecereNameSpace__ecere__sys__OldList * source, void * (* CopyFunction)(void *))
-{
-struct __ecereNameSpace__ecere__sys__OldList * list = (((void *)0));
-
-if(source)
-{
-struct __ecereNameSpace__ecere__sys__Item * item;
-
-list = MkList();
-for(item = (*source).first; item; item = item->next)
-ListAdd(list, CopyFunction(item));
-}
-return list;
-}
-
-extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__GlobalFunction;
-
-struct __ecereNameSpace__ecere__com__GlobalFunction;
-
-extern struct __ecereNameSpace__ecere__com__GlobalFunction * __ecereNameSpace__ecere__com__eSystem_RegisterFunction(const char *  name, const char *  type, void *  func, struct __ecereNameSpace__ecere__com__Instance * module, int declMode);
-
 void __ecereRegisterModule_copy(struct __ecereNameSpace__ecere__com__Instance * module)
 {
 struct __ecereNameSpace__ecere__com__Class __attribute__((unused)) * class;
 
 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("CopyIdentifier", "Identifier CopyIdentifier(Identifier id)", CopyIdentifier, module, 2);
-__ecereNameSpace__ecere__com__eSystem_RegisterFunction("CopyExpContents", "Expression CopyExpContents(Expression exp)", CopyExpContents, module, 2);
+__ecereNameSpace__ecere__com__eSystem_RegisterFunction("MoveExpContents", "Expression MoveExpContents(Expression exp)", MoveExpContents, module, 2);
 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("CopyExpression", "Expression CopyExpression(Expression exp)", CopyExpression, module, 1);
 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("CopyClassDef", "ClassDef CopyClassDef(ClassDef def)", CopyClassDef, module, 2);
 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("CopySpecifier", "Specifier CopySpecifier(Specifier spec)", CopySpecifier, module, 2);
@@ -1605,8 +1638,3 @@ __ecereNameSpace__ecere__com__eSystem_RegisterFunction("CopyDeclaration", "Decla
 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("CopyList", "ecere::sys::OldList * CopyList(ecere::sys::OldList * source, void * (* CopyFunction)(void *))", CopyList, module, 2);
 }
 
-void __ecereUnregisterModule_copy(struct __ecereNameSpace__ecere__com__Instance * module)
-{
-
-}
-