#if defined(__GNUC__)
typedef long long int64;
typedef unsigned long long uint64;
+#ifndef _WIN32
+#define __declspec(x)
+#endif
#elif defined(__TINYC__)
#include <stdarg.h>
#define __builtin_va_list va_list
#define strcasecmp stricmp
#define strncasecmp strnicmp
#define __declspec(x) __attribute__((x))
+#else
+#define __declspec(x)
#endif
typedef long long int64;
typedef unsigned long long uint64;
#else
#define __ENDIAN_PAD(x) 0
#endif
+#include <stdint.h>
+#include <sys/types.h>
+
+#if defined(_W64) || (defined(__WORDSIZE) && __WORDSIZE == 8) || defined(__x86_64__)
+#define _64BIT 1
+#else
+#define _64BIT 0
+#endif
+
+#define arch_PointerSize sizeof(void *)
+#define structSize_Instance (_64BIT ? 24 : 12)
+#define structSize_Module (_64BIT ? 560 : 300)
+#define structSize_NamedLink (_64BIT ? 32 : 16)
+
+extern void * __ecereNameSpace__ecere__com__eSystem_New(unsigned int size);
+
+extern void * __ecereNameSpace__ecere__com__eSystem_New0(unsigned int size);
+
+extern void * __ecereNameSpace__ecere__com__eSystem_Renew(void * memory, unsigned int size);
+
+extern void * __ecereNameSpace__ecere__com__eSystem_Renew0(void * memory, unsigned int size);
+
extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__sys__BTNode;
struct __ecereNameSpace__ecere__sys__BTNode;
{
struct __ecereNameSpace__ecere__sys__BTNode * root;
int count;
-int (* CompareKey)(struct __ecereNameSpace__ecere__sys__BinaryTree * tree, unsigned int a, unsigned int b);
+int (* CompareKey)(struct __ecereNameSpace__ecere__sys__BinaryTree * tree, uintptr_t a, uintptr_t b);
void (* FreeKey)(void * key);
-};
+} __attribute__ ((gcc_struct));
extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__sys__OldList;
int count;
unsigned int offset;
unsigned int circ;
-};
+} __attribute__ ((gcc_struct));
extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__Method;
char * dataTypeString;
struct Type * dataType;
int memberAccess;
-};
+} __attribute__ ((gcc_struct));
extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__Property;
char * dataTypeString;
struct __ecereNameSpace__ecere__com__Class * dataTypeClass;
struct Type * dataType;
-void (* Set)();
-int (* Get)();
-unsigned int (* IsSet)();
+void (* Set)(void * , int);
+int (* Get)(void * );
+unsigned int (* IsSet)(void * );
void * data;
void * symbol;
int vid;
unsigned int compiled;
unsigned int selfWatchable;
unsigned int isWatchable;
-};
+} __attribute__ ((gcc_struct));
extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_CodePosition;
int charPos;
int pos;
unsigned int included;
-};
+} __attribute__ ((gcc_struct));
extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Location;
{
struct CodePosition start;
struct CodePosition end;
-};
+} __attribute__ ((gcc_struct));
+
+extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Attrib;
+
+struct Attrib;
+
+extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_ExtDecl;
+
+struct ExtDecl
+{
+struct Location loc;
+int type;
+union
+{
+char * s;
+struct Attrib * attr;
+} __attribute__ ((gcc_struct));
+} __attribute__ ((gcc_struct));
extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_ClassDefinition;
int endid;
int declMode;
unsigned int deleteWatchable;
-};
+} __attribute__ ((gcc_struct));
extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Context;
struct ClassDefinition * classDef;
unsigned int templateTypesOnly;
unsigned int hasNameSpace;
-};
+} __attribute__ ((gcc_struct));
extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Instantiation;
struct Location nameLoc;
struct Location insideLoc;
unsigned int built;
-};
+} __attribute__ ((gcc_struct));
extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Declaration;
{
struct __ecereNameSpace__ecere__sys__OldList * specifiers;
struct __ecereNameSpace__ecere__sys__OldList * declarators;
-};
+} __attribute__ ((gcc_struct));
struct Instantiation * inst;
struct
{
struct Identifier * id;
struct Expression * exp;
-};
-};
+} __attribute__ ((gcc_struct));
+} __attribute__ ((gcc_struct));
struct Specifier * extStorage;
struct Symbol * symbol;
int declMode;
-};
+} __attribute__ ((gcc_struct));
extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Statement;
{
struct Identifier * id;
struct Statement * stmt;
-} labeled;
+} __attribute__ ((gcc_struct)) labeled;
struct
{
struct Expression * exp;
struct Statement * stmt;
-} caseStmt;
+} __attribute__ ((gcc_struct)) caseStmt;
struct
{
struct __ecereNameSpace__ecere__sys__OldList * declarations;
struct __ecereNameSpace__ecere__sys__OldList * statements;
struct Context * context;
unsigned int isSwitch;
-} compound;
+} __attribute__ ((gcc_struct)) compound;
struct
{
struct __ecereNameSpace__ecere__sys__OldList * exp;
struct Statement * stmt;
struct Statement * elseStmt;
-} ifStmt;
+} __attribute__ ((gcc_struct)) ifStmt;
struct
{
struct __ecereNameSpace__ecere__sys__OldList * exp;
struct Statement * stmt;
-} switchStmt;
+} __attribute__ ((gcc_struct)) switchStmt;
struct
{
struct __ecereNameSpace__ecere__sys__OldList * exp;
struct Statement * stmt;
-} whileStmt;
+} __attribute__ ((gcc_struct)) whileStmt;
struct
{
struct __ecereNameSpace__ecere__sys__OldList * exp;
struct Statement * stmt;
-} doWhile;
+} __attribute__ ((gcc_struct)) doWhile;
struct
{
struct Statement * init;
struct Statement * check;
struct __ecereNameSpace__ecere__sys__OldList * increment;
struct Statement * stmt;
-} forStmt;
+} __attribute__ ((gcc_struct)) forStmt;
struct
{
struct Identifier * id;
-} gotoStmt;
+} __attribute__ ((gcc_struct)) gotoStmt;
struct
{
struct Specifier * spec;
struct __ecereNameSpace__ecere__sys__OldList * inputFields;
struct __ecereNameSpace__ecere__sys__OldList * outputFields;
struct __ecereNameSpace__ecere__sys__OldList * clobberedFields;
-} asmStmt;
+} __attribute__ ((gcc_struct)) asmStmt;
struct
{
struct Expression * watcher;
struct Expression * object;
struct __ecereNameSpace__ecere__sys__OldList * watches;
-} _watch;
+} __attribute__ ((gcc_struct)) _watch;
struct
{
struct Identifier * id;
struct __ecereNameSpace__ecere__sys__OldList * exp;
struct __ecereNameSpace__ecere__sys__OldList * filter;
struct Statement * stmt;
-} forEachStmt;
+} __attribute__ ((gcc_struct)) forEachStmt;
struct Declaration * decl;
-};
-};
+} __attribute__ ((gcc_struct));
+} __attribute__ ((gcc_struct));
extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_TypeName;
struct Declarator * declarator;
int classObjectType;
struct Expression * bitCount;
-};
+} __attribute__ ((gcc_struct));
extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Initializer;
{
struct Expression * exp;
struct __ecereNameSpace__ecere__sys__OldList * list;
-};
+} __attribute__ ((gcc_struct));
unsigned int isConstant;
-};
+} __attribute__ ((gcc_struct));
extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__DataValue;
double d;
long long i64;
uint64 ui64;
-};
-};
+} __attribute__ ((gcc_struct));
+} __attribute__ ((gcc_struct));
extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Expression;
{
char * constant;
struct Identifier * identifier;
-};
+} __attribute__ ((gcc_struct));
struct Statement * compound;
struct Instantiation * instance;
char * string;
{
struct __ecereNameSpace__ecere__sys__OldList * specifiers;
struct Declarator * decl;
-} _classExp;
+} __attribute__ ((gcc_struct)) _classExp;
struct
{
struct Identifier * id;
-} classData;
+} __attribute__ ((gcc_struct)) classData;
struct
{
struct Expression * exp;
struct __ecereNameSpace__ecere__sys__OldList * arguments;
struct Location argLoc;
-} call;
+} __attribute__ ((gcc_struct)) call;
struct
{
struct Expression * exp;
struct __ecereNameSpace__ecere__sys__OldList * index;
-} index;
+} __attribute__ ((gcc_struct)) index;
struct
{
struct Expression * exp;
struct Identifier * member;
int memberType;
unsigned int thisPtr;
-} member;
+} __attribute__ ((gcc_struct)) member;
struct
{
int op;
struct Expression * exp1;
struct Expression * exp2;
-} op;
+} __attribute__ ((gcc_struct)) op;
struct TypeName * typeName;
struct Specifier * _class;
struct
{
struct TypeName * typeName;
struct Expression * exp;
-} cast;
+} __attribute__ ((gcc_struct)) cast;
struct
{
struct Expression * cond;
struct __ecereNameSpace__ecere__sys__OldList * exp;
struct Expression * elseExp;
-} cond;
+} __attribute__ ((gcc_struct)) cond;
struct
{
struct TypeName * typeName;
struct Expression * size;
-} _new;
+} __attribute__ ((gcc_struct)) _new;
struct
{
struct TypeName * typeName;
struct Expression * size;
struct Expression * exp;
-} _renew;
+} __attribute__ ((gcc_struct)) _renew;
struct
{
char * table;
struct Identifier * id;
-} db;
+} __attribute__ ((gcc_struct)) db;
struct
{
struct Expression * ds;
struct Expression * name;
-} dbopen;
+} __attribute__ ((gcc_struct)) dbopen;
struct
{
struct TypeName * typeName;
struct Initializer * initializer;
-} initializer;
+} __attribute__ ((gcc_struct)) initializer;
struct
{
struct Expression * exp;
struct TypeName * typeName;
-} vaArg;
-};
+} __attribute__ ((gcc_struct)) vaArg;
+} __attribute__ ((gcc_struct));
unsigned int debugValue;
struct __ecereNameSpace__ecere__com__DataValue val;
-unsigned int address;
+uint64 address;
unsigned int hasAddress;
struct Type * expType;
struct Type * destType;
unsigned int addedThis;
unsigned int needCast;
unsigned int thisPtr;
-};
+} __attribute__ ((gcc_struct));
extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_TemplateDatatype;
{
struct __ecereNameSpace__ecere__sys__OldList * specifiers;
struct Declarator * decl;
-};
+} __attribute__ ((gcc_struct));
extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_TemplateArgument;
{
struct TemplateDatatype * dataType;
int memberType;
-};
+} __attribute__ ((gcc_struct));
struct TemplateArgument * defaultArgument;
char * dataTypeString;
struct Type * baseType;
-};
+} __attribute__ ((gcc_struct));
extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Specifier;
int specifier;
struct
{
+struct ExtDecl * extDecl;
char * name;
struct Symbol * symbol;
struct __ecereNameSpace__ecere__sys__OldList * templateArgs;
-};
+} __attribute__ ((gcc_struct));
struct
{
struct Identifier * id;
struct __ecereNameSpace__ecere__sys__OldList * definitions;
unsigned int addNameSpace;
struct Context * ctx;
-};
+struct ExtDecl * extDeclStruct;
+} __attribute__ ((gcc_struct));
struct Expression * expression;
struct Specifier * _class;
struct TemplateParameter * templateParameter;
-};
-};
+} __attribute__ ((gcc_struct));
+} __attribute__ ((gcc_struct));
extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Identifier;
struct Specifier * _class;
char * string;
struct Identifier * badID;
-};
+} __attribute__ ((gcc_struct));
extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Pointer;
{
struct Expression * exp;
struct Expression * posExp;
-char * attrib;
-} structDecl;
+struct Attrib * attrib;
+} __attribute__ ((gcc_struct)) structDecl;
struct
{
struct Expression * exp;
struct Specifier * enumClass;
-} array;
+} __attribute__ ((gcc_struct)) array;
struct
{
struct __ecereNameSpace__ecere__sys__OldList * parameters;
-} function;
+} __attribute__ ((gcc_struct)) function;
struct
{
struct Pointer * pointer;
-} pointer;
+} __attribute__ ((gcc_struct)) pointer;
struct
{
-char * extended;
-} extended;
-};
-};
+struct ExtDecl * extended;
+} __attribute__ ((gcc_struct)) extended;
+} __attribute__ ((gcc_struct));
+} __attribute__ ((gcc_struct));
extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_FunctionDefinition;
struct Symbol * propSet;
int tempCount;
unsigned int propertyNoThis;
-};
+} __attribute__ ((gcc_struct));
extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_DBTableDef;
char * importString;
struct Identifier * id;
struct DBTableDef * table;
-};
+} __attribute__ ((gcc_struct));
int importType;
-};
+} __attribute__ ((gcc_struct));
extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_ModuleImport;
struct __ecereNameSpace__ecere__sys__OldList functions;
int importType;
int importAccess;
-};
+} __attribute__ ((gcc_struct));
extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_ClassImport;
struct __ecereNameSpace__ecere__sys__OldList properties;
unsigned int itself;
unsigned int isRemote;
-};
+} __attribute__ ((gcc_struct));
extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Symbol;
struct __ecereNameSpace__ecere__com__Method * method;
struct __ecereNameSpace__ecere__com__Property * _property;
struct __ecereNameSpace__ecere__com__Class * registered;
-};
+} __attribute__ ((gcc_struct));
int id;
int idCode;
union
{
struct External * pointerExternal;
struct External * structExternal;
-};
+} __attribute__ ((gcc_struct));
struct
{
struct External * externalGet;
struct External * externalSet;
struct External * externalPtr;
struct External * externalIsSet;
-};
+} __attribute__ ((gcc_struct));
struct
{
struct External * methodExternal;
struct External * methodCodeExternal;
-};
-};
+} __attribute__ ((gcc_struct));
+} __attribute__ ((gcc_struct));
unsigned int imported;
unsigned int declaredStructSym;
struct __ecereNameSpace__ecere__com__Class * _class;
struct Context * ctx;
int isIterator;
struct Expression * propCategory;
-};
+} __attribute__ ((gcc_struct));
extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Type;
{
struct __ecereNameSpace__ecere__sys__OldList members;
char * enumName;
-};
+} __attribute__ ((gcc_struct));
struct
{
struct Type * returnType;
struct Symbol * thisClass;
unsigned int staticMethod;
struct TemplateParameter * thisClassTemplate;
-};
+} __attribute__ ((gcc_struct));
struct
{
struct __ecereNameSpace__ecere__com__Method * method;
struct __ecereNameSpace__ecere__com__Class * methodClass;
struct __ecereNameSpace__ecere__com__Class * usedClass;
-};
+} __attribute__ ((gcc_struct));
struct
{
struct Type * arrayType;
struct Expression * arraySizeExp;
unsigned int freeExp;
struct Symbol * enumClass;
-};
+} __attribute__ ((gcc_struct));
struct Type * type;
struct TemplateParameter * templateParameter;
-};
+} __attribute__ ((gcc_struct));
unsigned int isSigned;
int kind;
unsigned int constant;
unsigned int keepCast;
unsigned int passAsTemplate;
int bitFieldCount;
-};
+} __attribute__ ((gcc_struct));
extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__Class;
struct __ecereNameSpace__ecere__com__Class * templateClass;
struct __ecereNameSpace__ecere__sys__OldList templatized;
int numParams;
-};
+} __attribute__ ((gcc_struct));
+
+extern long long __ecereNameSpace__ecere__com__eClass_GetProperty(struct __ecereNameSpace__ecere__com__Class * _class, char * name);
extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__Instance;
int (* * _vTbl)();
struct __ecereNameSpace__ecere__com__Class * _class;
int _refCount;
-};
+} __attribute__ ((gcc_struct));
extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__DataMember;
struct __ecereNameSpace__ecere__sys__BinaryTree membersAlpha;
int memberOffset;
int structAlignment;
-};
+} __attribute__ ((gcc_struct));
extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__SerialBuffer;
unsigned int count;
unsigned int _size;
unsigned int pos;
-};
+} __attribute__ ((gcc_struct));
extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__ClassTemplateArgument;
{
char * dataTypeString;
struct __ecereNameSpace__ecere__com__Class * dataTypeClass;
-};
+} __attribute__ ((gcc_struct));
struct __ecereNameSpace__ecere__com__DataValue expression;
struct
{
struct __ecereNameSpace__ecere__com__DataMember * member;
struct __ecereNameSpace__ecere__com__Property * prop;
struct __ecereNameSpace__ecere__com__Method * method;
-};
-};
-};
-};
-
-typedef unsigned int size_t;
+} __attribute__ ((gcc_struct));
+} __attribute__ ((gcc_struct));
+} __attribute__ ((gcc_struct));
+} __attribute__ ((gcc_struct));
void exit(int status);
enum yytokentype
{
-IDENTIFIER = 258, CONSTANT = 259, STRING_LITERAL = 260, SIZEOF = 261, PTR_OP = 262, INC_OP = 263, DEC_OP = 264, LEFT_OP = 265, RIGHT_OP = 266, LE_OP = 267, GE_OP = 268, EQ_OP = 269, NE_OP = 270, AND_OP = 271, OR_OP = 272, MUL_ASSIGN = 273, DIV_ASSIGN = 274, MOD_ASSIGN = 275, ADD_ASSIGN = 276, SUB_ASSIGN = 277, LEFT_ASSIGN = 278, RIGHT_ASSIGN = 279, AND_ASSIGN = 280, XOR_ASSIGN = 281, OR_ASSIGN = 282, TYPE_NAME = 283, TYPEDEF = 284, EXTERN = 285, STATIC = 286, AUTO = 287, REGISTER = 288, CHAR = 289, SHORT = 290, INT = 291, UINT = 292, INT64 = 293, LONG = 294, SIGNED = 295, UNSIGNED = 296, FLOAT = 297, DOUBLE = 298, CONST = 299, VOLATILE = 300, VOID = 301, VALIST = 302, STRUCT = 303, UNION = 304, ENUM = 305, ELLIPSIS = 306, CASE = 307, DEFAULT = 308, IF = 309, SWITCH = 310, WHILE = 311, DO = 312, FOR = 313, GOTO = 314, CONTINUE = 315, BREAK = 316, RETURN = 317, IFX = 318, ELSE = 319, CLASS = 320, THISCLASS = 321, CLASS_NAME = 322, PROPERTY = 323, SETPROP = 324, GETPROP = 325, NEWOP = 326, RENEW = 327, DELETE = 328, EXT_DECL = 329, EXT_STORAGE = 330, IMPORT = 331, DEFINE = 332, VIRTUAL = 333, EXT_ATTRIB = 334, PUBLIC = 335, PRIVATE = 336, TYPED_OBJECT = 337, ANY_OBJECT = 338, _INCREF = 339, EXTENSION = 340, ASM = 341, TYPEOF = 342, WATCH = 343, STOPWATCHING = 344, FIREWATCHERS = 345, WATCHABLE = 346, CLASS_DESIGNER = 347, CLASS_NO_EXPANSION = 348, CLASS_FIXED = 349, ISPROPSET = 350, CLASS_DEFAULT_PROPERTY = 351, PROPERTY_CATEGORY = 352, CLASS_DATA = 353, CLASS_PROPERTY = 354, SUBCLASS = 355, NAMESPACE = 356, NEW0OP = 357, RENEW0 = 358, VAARG = 359, DBTABLE = 360, DBFIELD = 361, DBINDEX = 362, DATABASE_OPEN = 363
+IDENTIFIER = 258, CONSTANT = 259, STRING_LITERAL = 260, SIZEOF = 261, PTR_OP = 262, INC_OP = 263, DEC_OP = 264, LEFT_OP = 265, RIGHT_OP = 266, LE_OP = 267, GE_OP = 268, EQ_OP = 269, NE_OP = 270, AND_OP = 271, OR_OP = 272, MUL_ASSIGN = 273, DIV_ASSIGN = 274, MOD_ASSIGN = 275, ADD_ASSIGN = 276, SUB_ASSIGN = 277, LEFT_ASSIGN = 278, RIGHT_ASSIGN = 279, AND_ASSIGN = 280, XOR_ASSIGN = 281, OR_ASSIGN = 282, TYPE_NAME = 283, TYPEDEF = 284, EXTERN = 285, STATIC = 286, AUTO = 287, REGISTER = 288, CHAR = 289, SHORT = 290, INT = 291, UINT = 292, INT64 = 293, LONG = 294, SIGNED = 295, UNSIGNED = 296, FLOAT = 297, DOUBLE = 298, CONST = 299, VOLATILE = 300, VOID = 301, VALIST = 302, STRUCT = 303, UNION = 304, ENUM = 305, ELLIPSIS = 306, CASE = 307, DEFAULT = 308, IF = 309, SWITCH = 310, WHILE = 311, DO = 312, FOR = 313, GOTO = 314, CONTINUE = 315, BREAK = 316, RETURN = 317, IFX = 318, ELSE = 319, CLASS = 320, THISCLASS = 321, CLASS_NAME = 322, PROPERTY = 323, SETPROP = 324, GETPROP = 325, NEWOP = 326, RENEW = 327, DELETE = 328, EXT_DECL = 329, EXT_STORAGE = 330, IMPORT = 331, DEFINE = 332, VIRTUAL = 333, ATTRIB = 334, PUBLIC = 335, PRIVATE = 336, TYPED_OBJECT = 337, ANY_OBJECT = 338, _INCREF = 339, EXTENSION = 340, ASM = 341, TYPEOF = 342, WATCH = 343, STOPWATCHING = 344, FIREWATCHERS = 345, WATCHABLE = 346, CLASS_DESIGNER = 347, CLASS_NO_EXPANSION = 348, CLASS_FIXED = 349, ISPROPSET = 350, CLASS_DEFAULT_PROPERTY = 351, PROPERTY_CATEGORY = 352, CLASS_DATA = 353, CLASS_PROPERTY = 354, SUBCLASS = 355, NAMESPACE = 356, NEW0OP = 357, RENEW0 = 358, VAARG = 359, DBTABLE = 360, DBFIELD = 361, DBINDEX = 362, DATABASE_OPEN = 363, ALIGNOF = 364, ATTRIB_DEP = 365, __ATTRIB = 366
};
typedef union YYSTYPE
struct External * external;
struct Context * context;
struct AsmField * asmField;
+struct Attrib * attrib;
+struct ExtDecl * extDecl;
+struct Attribute * attribute;
struct Instantiation * instance;
struct MembersInit * membersInit;
struct MemberInit * memberInit;
struct DBTableEntry * dbtableEntry;
struct DBIndexItem * dbindexItem;
struct DBTableDef * dbtableDef;
-} YYSTYPE;
+} __attribute__ ((gcc_struct)) YYSTYPE;
extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Enumerator;
struct Location loc;
struct Identifier * id;
struct Expression * exp;
-};
+} __attribute__ ((gcc_struct));
extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_InitDeclarator;
struct Location loc;
struct Declarator * declarator;
struct Initializer * initializer;
-};
+} __attribute__ ((gcc_struct));
extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_AsmField;
struct Location loc;
char * command;
struct Expression * expression;
-};
+} __attribute__ ((gcc_struct));
+
+extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Attribute;
+
+struct Attribute;
extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_ClassFunction;
unsigned int dontMangle;
int id;
int idCode;
-};
+} __attribute__ ((gcc_struct));
extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_MembersInit;
{
struct __ecereNameSpace__ecere__sys__OldList * dataMembers;
struct ClassFunction * function;
-};
-};
+} __attribute__ ((gcc_struct));
+} __attribute__ ((gcc_struct));
extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_MemberInit;
unsigned int used;
unsigned int variable;
unsigned int takeOutExp;
-};
+} __attribute__ ((gcc_struct));
extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_PropertyDef;
unsigned int conversion;
unsigned int isWatchable;
struct Expression * category;
-};
+} __attribute__ ((gcc_struct));
extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_PropertyWatch;
struct Statement * compound;
struct __ecereNameSpace__ecere__sys__OldList * properties;
unsigned int deleteWatch;
-};
+} __attribute__ ((gcc_struct));
extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_ClassDef;
{
struct Identifier * id;
struct Initializer * initializer;
-};
-};
+} __attribute__ ((gcc_struct));
+} __attribute__ ((gcc_struct));
int memberAccess;
void * object;
-};
+} __attribute__ ((gcc_struct));
extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_DBTableEntry;
unsigned int thisClassParams = 0x1;
-extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__sys__TempFile;
-
-struct __ecereNameSpace__ecere__sys__TempFile
-{
-char __ecere_padding[24];
-};
+unsigned int internalValueCounter;
extern void OutputExpression(struct Expression * exp, struct __ecereNameSpace__ecere__com__Instance * f);
-extern int strlen(const char * );
+extern size_t strlen(const char * );
+
+extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__sys__TempFile;
extern void * __ecereNameSpace__ecere__com__eInstance_New(struct __ecereNameSpace__ecere__com__Class * _class);
}
}
-extern int isspace(int c);
-
-long long _strtoi64(char * string, char ** endString, int base)
-{
-long long value = 0;
-int sign = 1;
-int c;
-char ch;
-
-for(c = 0; (ch = string[c]) && isspace(ch); c++)
-;
-if(ch == '+')
-c++;
-else if(ch == '-')
-{
-sign = -1;
-c++;
-}
-;
-if(!base)
-{
-if(ch == (char)0 && string[c + 1] == 'x')
-{
-base = 16;
-c += 2;
-}
-else if(ch == '0')
-{
-base = 8;
-c++;
-}
-else
-base = 10;
-}
-for(; (ch = string[c]); c++)
-{
-if(ch == '0')
-ch = (char)0;
-else if(ch >= '1' && ch <= '9')
-ch -= '1';
-else if(ch >= 'a' && ch <= 'z')
-ch -= 'a';
-else if(ch >= 'A' && ch <= 'Z')
-ch -= 'A';
-else
-{
-*endString = string + c;
-break;
-}
-if(ch < base)
-{
-value *= base;
-value += ch;
-}
-else
-{
-*endString = string + c;
-break;
-}
-}
-return sign * value;
-}
-
-uint64 _strtoui64(char * string, char ** endString, int base)
-{
-uint64 value = 0;
-int sign = 1;
-int c;
-char ch;
-
-for(c = 0; (ch = string[c]) && isspace(ch); c++)
-;
-if(ch == '+')
-c++;
-else if(ch == '-')
-{
-sign = -1;
-c++;
-}
-;
-if(!base)
-{
-if(ch == (char)0 && string[c + 1] == 'x')
-{
-base = 16;
-c += 2;
-}
-else if(ch == '0')
-{
-base = 8;
-c++;
-}
-else
-base = 10;
-}
-for(; (ch = string[c]); c++)
-{
-if(ch == '0')
-ch = (char)0;
-else if(ch >= '1' && ch <= '9')
-ch -= '1';
-else if(ch >= 'a' && ch <= 'z')
-ch -= 'a';
-else if(ch >= 'A' && ch <= 'Z')
-ch -= 'A';
-else
-{
-if(endString)
-*endString = string + c;
-break;
-}
-if(ch < base)
-{
-value *= base;
-value += ch;
-}
-else
-{
-if(endString)
-*endString = string + c;
-break;
-}
-}
-return sign * value;
-}
-
extern struct Type * ProcessTypeString(char * string, unsigned int staticMethod);
extern struct Type * ProcessType(struct __ecereNameSpace__ecere__sys__OldList * specs, struct Declarator * decl);
case 2:
case 3:
case 4:
+case 22:
+case 23:
if(type1->passAsTemplate && !type2->passAsTemplate)
return 0x1;
return type1->isSigned != type2->isSigned;
struct __ecereNameSpace__ecere__com__ClassProperty * left;
struct __ecereNameSpace__ecere__com__ClassProperty * right;
int depth;
-void (* Set)(struct __ecereNameSpace__ecere__com__Class *, int);
-int (* Get)(struct __ecereNameSpace__ecere__com__Class *);
+void (* Set)(struct __ecereNameSpace__ecere__com__Class *, long long);
+long long (* Get)(struct __ecereNameSpace__ecere__com__Class *);
char * dataTypeString;
struct Type * dataType;
unsigned int constant;
-};
+} __attribute__ ((gcc_struct));
extern struct __ecereNameSpace__ecere__com__ClassProperty * __ecereNameSpace__ecere__com__eClass_FindClassProperty(struct __ecereNameSpace__ecere__com__Class * _class, char * name);
{
char * dataTypeString;
int memberType;
-};
+} __attribute__ ((gcc_struct));
struct __ecereNameSpace__ecere__com__ClassTemplateArgument defaultArg;
void * param;
-char __ecere_padding[4];
-};
+} __attribute__ ((gcc_struct));
extern struct Expression * GetTemplateArgExpByName(char * paramName, struct __ecereNameSpace__ecere__com__Class * curClass, int tplType);
struct __ecereNameSpace__ecere__com__Property * prop = __ecereNameSpace__ecere__com__eClass_FindProperty(_class, id->string, privateModule);
struct __ecereNameSpace__ecere__com__Method * method = (((void *)0));
struct __ecereNameSpace__ecere__com__DataMember * member = (((void *)0));
-struct __ecereNameSpace__ecere__com__ClassProperty * classProp;
+struct __ecereNameSpace__ecere__com__ClassProperty * classProp = (((void *)0));
if(!prop)
{
char * PrintFloat(float result)
{
-char temp[100];
+char temp[350];
sprintf(temp, "%.16ff", result);
return __ecereNameSpace__ecere__sys__CopyString(temp);
char * PrintDouble(double result)
{
-char temp[100];
+char temp[350];
sprintf(temp, "%.16f", result);
return __ecereNameSpace__ecere__sys__CopyString(temp);
unsigned int (* GrtEqu)(struct Expression *, struct Operand *, struct Operand *);
unsigned int (* SmaEqu)(struct Expression *, struct Operand *, struct Operand *);
unsigned int (* Cond)(struct Expression *, struct Operand *, struct Operand *, struct Operand *);
-};
+} __attribute__ ((gcc_struct));
extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Operand;
unsigned int ui;
float f;
double d;
-unsigned char * p;
long long i64;
uint64 ui64;
-};
+} __attribute__ ((gcc_struct));
struct OpTable ops;
-};
+} __attribute__ ((gcc_struct));
struct Operand GetOperand(struct Expression * exp);
*value2 = op2.i;
else if(op2.kind == 3)
*value2 = (int)op2.ui;
-if(op2.kind == 4 && op2.type->isSigned)
+else if(op2.kind == 4 && op2.type->isSigned)
*value2 = (int)op2.i64;
else if(op2.kind == 4)
*value2 = (int)op2.ui64;
+else if(op2.kind == 23 && op2.type->isSigned)
+*value2 = (int)op2.i64;
+else if(op2.kind == 23)
+*value2 = (int)op2.ui64;
+else if(op2.kind == 22 && op2.type->isSigned)
+*value2 = (int)op2.i64;
+else if(op2.kind == 22)
+*value2 = (int)op2.ui64;
else if(op2.kind == 2 && op2.type->isSigned)
*value2 = (int)op2.s;
else if(op2.kind == 2)
else if(op2.kind == 7)
*value2 = (int)op2.d;
else if(op2.kind == 13)
-*value2 = (int)op2.ui;
+*value2 = (int)op2.ui64;
else
return 0x0;
return 0x1;
*value2 = (unsigned int)op2.i;
else if(op2.kind == 3)
*value2 = op2.ui;
-if(op2.kind == 4 && op2.type->isSigned)
+else if(op2.kind == 4 && op2.type->isSigned)
*value2 = (unsigned int)op2.i64;
else if(op2.kind == 4)
*value2 = (unsigned int)op2.ui64;
+else if(op2.kind == 23 && op2.type->isSigned)
+*value2 = (unsigned int)op2.i64;
+else if(op2.kind == 23)
+*value2 = (unsigned int)op2.ui64;
+else if(op2.kind == 22 && op2.type->isSigned)
+*value2 = (unsigned int)op2.i64;
+else if(op2.kind == 22)
+*value2 = (unsigned int)op2.ui64;
else if(op2.kind == 2 && op2.type->isSigned)
*value2 = (unsigned int)op2.s;
else if(op2.kind == 2)
else if(op2.kind == 7)
*value2 = (unsigned int)op2.d;
else if(op2.kind == 13)
-*value2 = op2.ui;
+*value2 = (unsigned int)op2.ui64;
else
return 0x0;
return 0x1;
*value2 = (long long)op2.i;
else if(op2.kind == 3)
*value2 = (long long)op2.ui;
-if(op2.kind == 4 && op2.type->isSigned)
+else if(op2.kind == 4 && op2.type->isSigned)
*value2 = op2.i64;
else if(op2.kind == 4)
*value2 = (long long)op2.ui64;
+else if(op2.kind == 23 && op2.type->isSigned)
+*value2 = op2.i64;
+else if(op2.kind == 23)
+*value2 = (long long)op2.ui64;
+else if(op2.kind == 22 && op2.type->isSigned)
+*value2 = op2.i64;
+else if(op2.kind == 22)
+*value2 = (long long)op2.ui64;
else if(op2.kind == 2 && op2.type->isSigned)
*value2 = (long long)op2.s;
else if(op2.kind == 2)
else if(op2.kind == 7)
*value2 = (long long)op2.d;
else if(op2.kind == 13)
-*value2 = (long long)op2.ui;
+*value2 = (long long)op2.ui64;
else
return 0x0;
return 0x1;
*value2 = (uint64)op2.i;
else if(op2.kind == 3)
*value2 = (uint64)op2.ui;
-if(op2.kind == 4 && op2.type->isSigned)
+else if(op2.kind == 4 && op2.type->isSigned)
*value2 = (uint64)op2.i64;
else if(op2.kind == 4)
*value2 = op2.ui64;
+else if(op2.kind == 23 && op2.type->isSigned)
+*value2 = (uint64)op2.i64;
+else if(op2.kind == 23)
+*value2 = op2.ui64;
+else if(op2.kind == 22 && op2.type->isSigned)
+*value2 = (uint64)op2.i64;
+else if(op2.kind == 22)
+*value2 = op2.ui64;
else if(op2.kind == 2 && op2.type->isSigned)
*value2 = (uint64)op2.s;
else if(op2.kind == 2)
else if(op2.kind == 7)
*value2 = (uint64)op2.d;
else if(op2.kind == 13)
-*value2 = (uint64)op2.ui;
+*value2 = op2.ui64;
+else
+return 0x0;
+return 0x1;
+}
+
+unsigned int GetIntPtr(struct Expression * exp, intptr_t * value2)
+{
+struct Operand op2 = GetOperand(exp);
+
+if(op2.kind == 3 && op2.type->isSigned)
+*value2 = (intptr_t)op2.i;
+else if(op2.kind == 3)
+*value2 = (intptr_t)op2.ui;
+else if(op2.kind == 4 && op2.type->isSigned)
+*value2 = (intptr_t)op2.i64;
+else if(op2.kind == 4)
+*value2 = (intptr_t)op2.ui64;
+else if(op2.kind == 23 && op2.type->isSigned)
+*value2 = (intptr_t)op2.i64;
+else if(op2.kind == 23)
+*value2 = (intptr_t)op2.ui64;
+else if(op2.kind == 22 && op2.type->isSigned)
+*value2 = (intptr_t)op2.i64;
+else if(op2.kind == 22)
+*value2 = (intptr_t)op2.ui64;
+else if(op2.kind == 2 && op2.type->isSigned)
+*value2 = (intptr_t)op2.s;
+else if(op2.kind == 2)
+*value2 = (intptr_t)op2.us;
+else if(op2.kind == 1 && op2.type->isSigned)
+*value2 = (intptr_t)op2.c;
+else if(op2.kind == 1)
+*value2 = (intptr_t)op2.uc;
+else if(op2.kind == 6)
+*value2 = (intptr_t)op2.f;
+else if(op2.kind == 7)
+*value2 = (intptr_t)op2.d;
+else if(op2.kind == 13)
+*value2 = (intptr_t)op2.ui64;
+else
+return 0x0;
+return 0x1;
+}
+
+unsigned int GetUIntPtr(struct Expression * exp, uintptr_t * value2)
+{
+struct Operand op2 = GetOperand(exp);
+
+if(op2.kind == 3 && op2.type->isSigned)
+*value2 = (uintptr_t)op2.i;
+else if(op2.kind == 3)
+*value2 = (uintptr_t)op2.ui;
+else if(op2.kind == 4 && op2.type->isSigned)
+*value2 = (uintptr_t)op2.i64;
+else if(op2.kind == 4)
+*value2 = (uintptr_t)op2.ui64;
+else if(op2.kind == 23 && op2.type->isSigned)
+*value2 = (uintptr_t)op2.i64;
+else if(op2.kind == 23)
+*value2 = (uintptr_t)op2.ui64;
+else if(op2.kind == 22 && op2.type->isSigned)
+*value2 = (uintptr_t)op2.i64;
+else if(op2.kind == 22)
+*value2 = (uintptr_t)op2.ui64;
+else if(op2.kind == 2 && op2.type->isSigned)
+*value2 = (uintptr_t)op2.s;
+else if(op2.kind == 2)
+*value2 = (uintptr_t)op2.us;
+else if(op2.kind == 1 && op2.type->isSigned)
+*value2 = (uintptr_t)op2.c;
+else if(op2.kind == 1)
+*value2 = (uintptr_t)op2.uc;
+else if(op2.kind == 6)
+*value2 = (uintptr_t)op2.f;
+else if(op2.kind == 7)
+*value2 = (uintptr_t)op2.d;
+else if(op2.kind == 13)
+*value2 = (uintptr_t)op2.ui64;
+else
+return 0x0;
+return 0x1;
+}
+
+unsigned int GetIntSize(struct Expression * exp, ssize_t * value2)
+{
+struct Operand op2 = GetOperand(exp);
+
+if(op2.kind == 3 && op2.type->isSigned)
+*value2 = (ssize_t)op2.i;
+else if(op2.kind == 3)
+*value2 = (ssize_t)op2.ui;
+else if(op2.kind == 4 && op2.type->isSigned)
+*value2 = (ssize_t)op2.i64;
+else if(op2.kind == 4)
+*value2 = (ssize_t)op2.ui64;
+else if(op2.kind == 23 && op2.type->isSigned)
+*value2 = (ssize_t)op2.i64;
+else if(op2.kind == 23)
+*value2 = (ssize_t)op2.ui64;
+else if(op2.kind == 22 && op2.type->isSigned)
+*value2 = (ssize_t)op2.i64;
+else if(op2.kind == 22)
+*value2 = (ssize_t)op2.ui64;
+else if(op2.kind == 2 && op2.type->isSigned)
+*value2 = (ssize_t)op2.s;
+else if(op2.kind == 2)
+*value2 = (ssize_t)op2.us;
+else if(op2.kind == 1 && op2.type->isSigned)
+*value2 = (ssize_t)op2.c;
+else if(op2.kind == 1)
+*value2 = (ssize_t)op2.uc;
+else if(op2.kind == 6)
+*value2 = (ssize_t)op2.f;
+else if(op2.kind == 7)
+*value2 = (ssize_t)op2.d;
+else if(op2.kind == 13)
+*value2 = (ssize_t)op2.ui64;
+else
+return 0x0;
+return 0x1;
+}
+
+unsigned int GetUIntSize(struct Expression * exp, size_t * value2)
+{
+struct Operand op2 = GetOperand(exp);
+
+if(op2.kind == 3 && op2.type->isSigned)
+*value2 = (size_t)op2.i;
+else if(op2.kind == 3)
+*value2 = (size_t)op2.ui;
+else if(op2.kind == 4 && op2.type->isSigned)
+*value2 = (size_t)op2.i64;
+else if(op2.kind == 4)
+*value2 = (size_t)op2.ui64;
+else if(op2.kind == 23 && op2.type->isSigned)
+*value2 = (size_t)op2.i64;
+else if(op2.kind == 23)
+*value2 = (size_t)op2.ui64;
+else if(op2.kind == 22 && op2.type->isSigned)
+*value2 = (size_t)op2.i64;
+else if(op2.kind == 22)
+*value2 = (size_t)op2.ui64;
+else if(op2.kind == 2 && op2.type->isSigned)
+*value2 = (size_t)op2.s;
+else if(op2.kind == 2)
+*value2 = (size_t)op2.us;
+else if(op2.kind == 1 && op2.type->isSigned)
+*value2 = (size_t)op2.c;
+else if(op2.kind == 1)
+*value2 = (size_t)op2.uc;
+else if(op2.kind == 6)
+*value2 = (size_t)op2.f;
+else if(op2.kind == 7)
+*value2 = (size_t)op2.d;
+else if(op2.kind == 13)
+*value2 = (size_t)op2.ui64;
else
return 0x0;
return 0x1;
*value2 = (short)op2.i;
else if(op2.kind == 3)
*value2 = (short)op2.ui;
-if(op2.kind == 4 && op2.type->isSigned)
+else if(op2.kind == 4 && op2.type->isSigned)
*value2 = (short)op2.i64;
else if(op2.kind == 4)
*value2 = (short)op2.ui64;
+else if(op2.kind == 23 && op2.type->isSigned)
+*value2 = (short)op2.i64;
+else if(op2.kind == 23)
+*value2 = (short)op2.ui64;
+else if(op2.kind == 22 && op2.type->isSigned)
+*value2 = (short)op2.i64;
+else if(op2.kind == 22)
+*value2 = (short)op2.ui64;
else if(op2.kind == 2 && op2.type->isSigned)
*value2 = op2.s;
else if(op2.kind == 2)
else if(op2.kind == 7)
*value2 = (short)op2.d;
else if(op2.kind == 13)
-*value2 = (short)op2.ui;
+*value2 = (short)op2.ui64;
else
return 0x0;
return 0x1;
*value2 = (unsigned short)op2.i;
else if(op2.kind == 3)
*value2 = (unsigned short)op2.ui;
-if(op2.kind == 4 && op2.type->isSigned)
+else if(op2.kind == 4 && op2.type->isSigned)
*value2 = (unsigned short)op2.i64;
else if(op2.kind == 4)
*value2 = (unsigned short)op2.ui64;
+else if(op2.kind == 23 && op2.type->isSigned)
+*value2 = (unsigned short)op2.i64;
+else if(op2.kind == 23)
+*value2 = (unsigned short)op2.ui64;
+else if(op2.kind == 22 && op2.type->isSigned)
+*value2 = (unsigned short)op2.i64;
+else if(op2.kind == 22)
+*value2 = (unsigned short)op2.ui64;
else if(op2.kind == 2 && op2.type->isSigned)
*value2 = (unsigned short)op2.s;
else if(op2.kind == 2)
else if(op2.kind == 7)
*value2 = (unsigned short)op2.d;
else if(op2.kind == 13)
-*value2 = (unsigned short)op2.ui;
+*value2 = (unsigned short)op2.ui64;
else
return 0x0;
return 0x1;
*value2 = (char)op2.i;
else if(op2.kind == 3)
*value2 = (char)op2.ui;
-if(op2.kind == 4 && op2.type->isSigned)
+else if(op2.kind == 4 && op2.type->isSigned)
*value2 = (char)op2.i64;
else if(op2.kind == 4)
*value2 = (char)op2.ui64;
+else if(op2.kind == 23 && op2.type->isSigned)
+*value2 = (char)op2.i64;
+else if(op2.kind == 23)
+*value2 = (char)op2.ui64;
+else if(op2.kind == 22 && op2.type->isSigned)
+*value2 = (char)op2.i64;
+else if(op2.kind == 22)
+*value2 = (char)op2.ui64;
else if(op2.kind == 2 && op2.type->isSigned)
*value2 = (char)op2.s;
else if(op2.kind == 2)
else if(op2.kind == 7)
*value2 = (char)op2.d;
else if(op2.kind == 13)
-*value2 = (char)op2.ui;
+*value2 = (char)op2.ui64;
else
return 0x0;
return 0x1;
*value2 = (unsigned char)op2.i;
else if(op2.kind == 3)
*value2 = (unsigned char)op2.ui;
-if(op2.kind == 4 && op2.type->isSigned)
+else if(op2.kind == 4 && op2.type->isSigned)
*value2 = (unsigned char)op2.i64;
else if(op2.kind == 4)
*value2 = (unsigned char)op2.ui64;
+else if(op2.kind == 23 && op2.type->isSigned)
+*value2 = (unsigned char)op2.i64;
+else if(op2.kind == 23)
+*value2 = (unsigned char)op2.ui64;
+else if(op2.kind == 22 && op2.type->isSigned)
+*value2 = (unsigned char)op2.i64;
+else if(op2.kind == 22)
+*value2 = (unsigned char)op2.ui64;
else if(op2.kind == 2 && op2.type->isSigned)
*value2 = (unsigned char)op2.s;
else if(op2.kind == 2)
else if(op2.kind == 7)
*value2 = (unsigned char)op2.d;
else if(op2.kind == 13)
-*value2 = (unsigned char)op2.ui;
+*value2 = (unsigned char)op2.ui64;
else
return 0x0;
return 0x1;
*value2 = (float)(float)op2.i;
else if(op2.kind == 3)
*value2 = (float)(float)op2.ui;
-if(op2.kind == 4 && op2.type->isSigned)
+else if(op2.kind == 4 && op2.type->isSigned)
*value2 = (float)(float)op2.i64;
else if(op2.kind == 4)
*value2 = (float)(float)op2.ui64;
+else if(op2.kind == 23 && op2.type->isSigned)
+*value2 = (float)(float)op2.i64;
+else if(op2.kind == 23)
+*value2 = (float)(float)op2.ui64;
+else if(op2.kind == 22 && op2.type->isSigned)
+*value2 = (float)(float)op2.i64;
+else if(op2.kind == 22)
+*value2 = (float)(float)op2.ui64;
else if(op2.kind == 2 && op2.type->isSigned)
*value2 = (float)(float)op2.s;
else if(op2.kind == 2)
else if(op2.kind == 7)
*value2 = (float)op2.d;
else if(op2.kind == 13)
-*value2 = (float)(float)op2.ui;
+*value2 = (float)(float)op2.ui64;
else
return 0x0;
return 0x1;
*value2 = (double)(double)op2.i;
else if(op2.kind == 3)
*value2 = (double)(double)op2.ui;
-if(op2.kind == 4 && op2.type->isSigned)
+else if(op2.kind == 4 && op2.type->isSigned)
*value2 = (double)(double)op2.i64;
else if(op2.kind == 4)
*value2 = (double)(double)op2.ui64;
+else if(op2.kind == 23 && op2.type->isSigned)
+*value2 = (double)(double)op2.i64;
+else if(op2.kind == 23)
+*value2 = (double)(double)op2.ui64;
+else if(op2.kind == 22 && op2.type->isSigned)
+*value2 = (double)(double)op2.i64;
+else if(op2.kind == 22)
+*value2 = (double)(double)op2.ui64;
else if(op2.kind == 2 && op2.type->isSigned)
*value2 = (double)(double)op2.s;
else if(op2.kind == 2)
else if(op2.kind == 7)
*value2 = (double)op2.d;
else if(op2.kind == 13)
-*value2 = (double)(double)op2.ui;
+*value2 = (double)(double)op2.ui64;
else
return 0x0;
return 0x1;
struct Context * SetupTemplatesContext(struct __ecereNameSpace__ecere__com__Class * _class);
+extern int targetBits;
+
int ComputeTypeSize(struct Type * type);
extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__BitMember;
int size;
int pos;
uint64 mask;
-};
+} __attribute__ ((gcc_struct));
extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__sys__OldLink;
struct __ecereNameSpace__ecere__sys__OldLink * prev;
struct __ecereNameSpace__ecere__sys__OldLink * next;
void * data;
-};
+} __attribute__ ((gcc_struct));
void FinishTemplatesContext(struct Context * context);
struct __ecereNameSpace__ecere__com__DataMember * member = isMember ? (struct __ecereNameSpace__ecere__com__DataMember *)_class : (((void *)0));
struct Context * context = isMember ? (((void *)0)) : SetupTemplatesContext(_class);
-if(member || ((_class->type == 2 || _class->type == 0 || _class->type == 1 || _class->type == 5) && (_class->type == 2 || _class->structSize == _class->offset) && _class->computeSize))
+if(member || ((_class->type == 2 || _class->type == 0 || _class->type == 1 || _class->type == 5) && (_class->type == 2 || (!_class->structSize || _class->structSize == _class->offset)) && _class->computeSize))
{
int c;
int unionMemberOffset = 0;
int bitFields = 0;
+if(member)
+{
+member->memberOffset = 0;
+if(targetBits < sizeof(void *) * 8)
+member->structAlignment = 0;
+}
+else if(targetBits < sizeof(void *) * 8)
+_class->structAlignment = 0;
+if(!member && ((_class->type == 0 || _class->type == 5) || (_class->type == 1 && _class->memberOffset && _class->memberOffset > _class->base->structSize)))
+_class->memberOffset = (_class->base && _class->type == 1) ? _class->base->structSize : 0;
if(!member && _class->destructionWatchOffset)
_class->memberOffset += sizeof(struct __ecereNameSpace__ecere__sys__OldList);
{
}
else
{
+int alignment;
+
ComputeClassMembers((struct __ecereNameSpace__ecere__com__Class *)dataMember, 0x1);
+alignment = dataMember->structAlignment;
if(isMember)
{
-int __simpleStruct2;
-int __simpleStruct0, __simpleStruct1;
+int __simpleStruct0;
+
+if(alignment)
+{
+int __simpleStruct0;
-member->structAlignment = (__simpleStruct0 = member->structAlignment, __simpleStruct1 = dataMember->structAlignment, (__simpleStruct0 > __simpleStruct1) ? __simpleStruct0 : __simpleStruct1);
+if(member->memberOffset % alignment)
+member->memberOffset += alignment - (member->memberOffset % alignment);
+member->structAlignment = (__simpleStruct0 = member->structAlignment, (__simpleStruct0 > alignment) ? __simpleStruct0 : alignment);
+}
dataMember->offset = member->memberOffset;
if(member->type == 1)
-unionMemberOffset = (__simpleStruct2 = dataMember->memberOffset, (unionMemberOffset > __simpleStruct2) ? unionMemberOffset : __simpleStruct2);
+unionMemberOffset = (__simpleStruct0 = dataMember->memberOffset, (unionMemberOffset > __simpleStruct0) ? unionMemberOffset : __simpleStruct0);
else
member->memberOffset += dataMember->memberOffset;
}
else
{
-int __simpleStruct0, __simpleStruct1;
+if(alignment)
+{
+int __simpleStruct0;
-_class->structAlignment = (__simpleStruct0 = _class->structAlignment, __simpleStruct1 = dataMember->structAlignment, (__simpleStruct0 > __simpleStruct1) ? __simpleStruct0 : __simpleStruct1);
+if(_class->memberOffset % alignment)
+_class->memberOffset += alignment - (_class->memberOffset % alignment);
+_class->structAlignment = (__simpleStruct0 = _class->structAlignment, (__simpleStruct0 > alignment) ? __simpleStruct0 : alignment);
+}
dataMember->offset = _class->memberOffset;
_class->memberOffset += dataMember->memberOffset;
}
{
if(_class->type != 2)
{
-_class->structSize = (_class->base ? (_class->base->templateClass ? _class->base->templateClass->structSize : _class->base->structSize) : 0) + _class->memberOffset;
+int extra = 0;
+
+if(_class->structAlignment)
+{
+if(_class->memberOffset % _class->structAlignment)
+extra += _class->structAlignment - (_class->memberOffset % _class->structAlignment);
+}
+_class->structSize = (_class->base ? (_class->base->templateClass ? _class->base->templateClass->structSize : _class->base->structSize) : 0) + _class->memberOffset + extra;
if(!member)
{
struct __ecereNameSpace__ecere__com__Property * prop;
struct __ecereNameSpace__ecere__sys__BinaryTree classes;
struct __ecereNameSpace__ecere__sys__BinaryTree defines;
struct __ecereNameSpace__ecere__sys__BinaryTree functions;
-};
+} __attribute__ ((gcc_struct));
extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__Module;
int origImportType;
struct __ecereNameSpace__ecere__com__NameSpace privateNameSpace;
struct __ecereNameSpace__ecere__com__NameSpace publicNameSpace;
-};
+} __attribute__ ((gcc_struct));
void ComputeModuleClasses(struct __ecereNameSpace__ecere__com__Instance * module)
{
struct __ecereNameSpace__ecere__com__Class * _class;
struct __ecereNameSpace__ecere__sys__OldLink * subModule;
-for(subModule = ((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->modules.first; subModule; subModule = subModule->next)
+for(subModule = ((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + structSize_Instance)))->modules.first; subModule; subModule = subModule->next)
ComputeModuleClasses(subModule->data);
-for(_class = ((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->classes.first; _class; _class = _class->next)
+for(_class = ((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + structSize_Instance)))->classes.first; _class; _class = _class->next)
ComputeClassMembers(_class, 0x0);
}
extern struct __ecereNameSpace__ecere__com__Instance * __thisModule;
-extern int __ecereNameSpace__ecere__com__eClass_GetProperty(struct __ecereNameSpace__ecere__com__Class * _class, char * name);
-
int ComputeTypeSize(struct Type * type)
{
unsigned int size = type ? type->size : 0;
case 4:
type->alignment = size = sizeof(long long);
break;
+case 22:
+type->alignment = size = targetBits / 8;
+break;
+case 23:
+type->alignment = size = targetBits / 8;
+break;
case 5:
type->alignment = size = sizeof(long);
break;
size = type->alignment = ComputeTypeSize(_class->dataType);
}
else
-size = type->alignment = sizeof(struct __ecereNameSpace__ecere__com__Instance **);
+size = type->alignment = targetBits / 8;
break;
}
case 13:
case 19:
-size = type->alignment = sizeof(void *);
+size = type->alignment = targetBits / 8;
break;
case 12:
if(type->arraySizeExp)
{
if(type->enumClass && type->enumClass->registered && type->enumClass->registered->type == 4)
{
-type->arraySize = __ecereNameSpace__ecere__com__eClass_GetProperty(type->enumClass->registered, "enumSize");
+type->arraySize = (int)__ecereNameSpace__ecere__com__eClass_GetProperty(type->enumClass->registered, "enumSize");
}
else
type->arraySize = 0;
struct Type * baseType = ProcessTemplateParameterType(param);
if(baseType)
+{
size = ComputeTypeSize(baseType);
+type->alignment = baseType->alignment;
+}
else
-size = sizeof(uint64);
+type->alignment = size = sizeof(uint64);
break;
}
case 15:
{
-size = sizeof(enum
+type->alignment = size = sizeof(enum
{
test
});
}
case 21:
{
-size = sizeof(void *);
+type->alignment = size = targetBits / 8;
break;
}
}
extern struct Expression * MkExpConstant(char * string);
-int AddMembers(struct __ecereNameSpace__ecere__sys__OldList * declarations, struct __ecereNameSpace__ecere__com__Class * _class, unsigned int isMember, unsigned int * retSize, struct __ecereNameSpace__ecere__com__Class * topClass)
+int AddMembers(struct __ecereNameSpace__ecere__sys__OldList * declarations, struct __ecereNameSpace__ecere__com__Class * _class, unsigned int isMember, unsigned int * retSize, struct __ecereNameSpace__ecere__com__Class * topClass, unsigned int * addedPadding)
{
struct __ecereNameSpace__ecere__com__DataMember * topMember = isMember ? (struct __ecereNameSpace__ecere__com__DataMember *)_class : (((void *)0));
unsigned int totalSize = 0;
struct __ecereNameSpace__ecere__com__DataMember * member;
struct Context * context = isMember ? (((void *)0)) : SetupTemplatesContext(_class);
+if(addedPadding)
+*addedPadding = 0x0;
if(!isMember && _class->base)
{
maxSize = _class->structSize;
{
if(_class->type == 1 || _class->type == 5)
-AddMembers(declarations, _class->base, 0x0, &totalSize, topClass);
+AddMembers(declarations, _class->base, 0x0, &totalSize, topClass, (((void *)0)));
else
maxSize -= _class->base->templateClass ? _class->base->templateClass->structSize : _class->base->structSize;
}
struct __ecereNameSpace__ecere__sys__OldList * specs = MkList(), * list = MkList();
size = 0;
-AddMembers(list, (struct __ecereNameSpace__ecere__com__Class *)member, 0x1, &size, topClass);
+AddMembers(list, (struct __ecereNameSpace__ecere__com__Class *)member, 0x1, &size, topClass, (((void *)0)));
ListAdd(specs, MkStructOrUnion((member->type == 1) ? 4 : 3, (((void *)0)), list));
ListAdd(declarations, MkClassDefDeclaration(MkStructDeclaration(specs, (((void *)0)), (((void *)0)))));
alignment = member->structAlignment;
}
else if(totalSize < maxSize && _class->type != 1000)
{
+int autoPadding = 0;
+
+if(!isMember && _class->structAlignment && totalSize % _class->structAlignment)
+autoPadding = _class->structAlignment - (totalSize % _class->structAlignment);
+if(totalSize + autoPadding < maxSize)
+{
char sizeString[50];
sprintf(sizeString, "%d", maxSize - totalSize);
ListAdd(declarations, MkClassDefDeclaration(MkStructDeclaration(MkListOne(MkSpecifier(CHAR)), MkListOne(MkDeclaratorArray(MkDeclaratorIdentifier(MkIdentifier("__ecere_padding")), MkExpConstant(sizeString))), (((void *)0)))));
+if(addedPadding)
+*addedPadding = 0x1;
+}
}
if(context)
FinishTemplatesContext(context);
extern struct Symbol * FindClass(char * name);
-extern char * strchr(char * , int);
+extern char * strchr(const char * , int);
extern void FullClassNameCat(char * output, char * className, unsigned int includeTemplateParams);
extern void FreeList(struct __ecereNameSpace__ecere__sys__OldList * list, void (* )(void * ));
+extern void FreeClassDef(struct ClassDef * def);
+
extern struct External * MkExternalDeclaration(struct Declaration * declaration);
extern struct Declaration * MkDeclaration(struct __ecereNameSpace__ecere__sys__OldList * specifiers, struct __ecereNameSpace__ecere__sys__OldList * initDeclarators);
struct Symbol * classSym = FindClass(name);
if(!inCompiler || !classSym)
-return (((void *)0));
+return ;
if(classSym->registered && (classSym->registered->type == 2 || classSym->registered->type == 3 || classSym->registered->type == 4))
-return (((void *)0));
+return ;
if(classSym->registered && classSym->imported && !classSym->declaredStructSym)
{
struct Declaration * decl;
DeclareStruct(classSym->registered->templateClass->fullName, skipNoHead);
classSym->declaring--;
}
-return (((void *)0));
+return ;
}
DeclareMembers(classSym->registered, 0x0);
structName[0] = (char)0;
FullClassNameCat(structName, name, 0x0);
if(!skipNoHead)
{
+unsigned int addedPadding = 0x0;
+
classSym->declaredStructSym = 0x1;
declarations = MkList();
-AddMembers(declarations, classSym->registered, 0x0, (((void *)0)), classSym->registered);
-if(!(*declarations).count)
+AddMembers(declarations, classSym->registered, 0x0, (((void *)0)), classSym->registered, &addedPadding);
+if(!(*declarations).count || ((*declarations).count == 1 && addedPadding))
{
-FreeList(declarations, (((void *)0)));
+FreeList(declarations, FreeClassDef);
declarations = (((void *)0));
}
}
unsigned int isVirtual;
unsigned int hasSet;
unsigned int hasGet;
-};
+} __attribute__ ((gcc_struct));
void __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add(struct __ecereNameSpace__ecere__sys__OldList * this, void * item);
__ecereMethod___ecereNameSpace__ecere__sys__OldList_Add(&classSym->_import->properties, symbol->_import);
}
imported = 0x1;
-if(prop->_class->module != privateModule && ((struct __ecereNameSpace__ecere__com__Module *)(((char *)prop->_class->module + 12)))->importType != 1)
+if(prop->_class->module != privateModule && ((struct __ecereNameSpace__ecere__com__Module *)(((char *)prop->_class->module + structSize_Instance)))->importType != 1)
dllImport = 0x1;
}
if(!symbol->type)
extern void __ecereNameSpace__ecere__com__eClass_FindNextMember(struct __ecereNameSpace__ecere__com__Class * _class, struct __ecereNameSpace__ecere__com__Class ** curClass, struct __ecereNameSpace__ecere__com__DataMember ** curMember, struct __ecereNameSpace__ecere__com__DataMember ** subMemberStack, int * subMemberStackPos);
-extern void * memcpy(void * , const void * , unsigned int size);
+extern void * memcpy(void * , const void * , size_t size);
void ProcessMethodType(struct __ecereNameSpace__ecere__com__Method * method);
if(type && type->kind == 20 && type->templateParameter->type == 0 && _class->templateArgs)
{
int id = 0;
-struct __ecereNameSpace__ecere__com__ClassTemplateParameter * curParam;
+struct __ecereNameSpace__ecere__com__ClassTemplateParameter * curParam = (((void *)0));
struct __ecereNameSpace__ecere__com__Class * sClass;
for(sClass = _class; sClass; sClass = sClass->base)
{
struct __ecereNameSpace__ecere__com__ClassTemplateArgument * arg = (((void *)0));
int id = 0;
-struct __ecereNameSpace__ecere__com__ClassTemplateParameter * curParam;
+struct __ecereNameSpace__ecere__com__ClassTemplateParameter * curParam = (((void *)0));
struct __ecereNameSpace__ecere__com__Class * sClass;
for(sClass = _class; sClass; sClass = sClass->base)
struct TemplatedType
{
-unsigned int key;
+uintptr_t key;
struct __ecereNameSpace__ecere__sys__BTNode * parent;
struct __ecereNameSpace__ecere__sys__BTNode * left;
struct __ecereNameSpace__ecere__sys__BTNode * right;
int depth;
struct TemplateParameter * param;
-};
+} __attribute__ ((gcc_struct));
unsigned int __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Add(struct __ecereNameSpace__ecere__sys__BinaryTree * this, struct __ecereNameSpace__ecere__sys__BTNode * node);
{
if(param->type == 0 && param->identifier)
{
-struct TemplatedType * type = (type = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_TemplatedType), type->key = (unsigned int)param->identifier->string, type->param = param, type);
+struct TemplatedType * type = (type = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_TemplatedType), type->key = (uintptr_t)param->identifier->string, type->param = param, type);
__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Add(&curContext->templateTypes, (struct __ecereNameSpace__ecere__sys__BTNode *)type);
}
{
p->param = param = (__ecereTemp1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_TemplateParameter), ((struct TemplateParameter *)__ecereTemp1)->identifier = MkIdentifier(p->name), ((struct TemplateParameter *)__ecereTemp1)->type = p->type, ((struct TemplateParameter *)__ecereTemp1)->dataTypeString = p->dataTypeString, ((struct TemplateParameter *)__ecereTemp1));
}
-type = (__ecereTemp1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_TemplatedType), ((struct TemplatedType *)__ecereTemp1)->key = (unsigned int)p->name, ((struct TemplatedType *)__ecereTemp1)->param = param, ((struct TemplatedType *)__ecereTemp1));
+type = (__ecereTemp1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_TemplatedType), ((struct TemplatedType *)__ecereTemp1)->key = (uintptr_t)p->name, ((struct TemplatedType *)__ecereTemp1)->param = param, ((struct TemplatedType *)__ecereTemp1));
__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Add(&curContext->templateTypes, (struct __ecereNameSpace__ecere__sys__BTNode *)type);
}
}
struct MethodImport * next;
char * name;
unsigned int isVirtual;
-};
+} __attribute__ ((gcc_struct));
void __ecereMethod___ecereNameSpace__ecere__sys__OldList_Remove(struct __ecereNameSpace__ecere__sys__OldList * this, void * item);
{
struct ModuleImport * module;
-if(method->_class->module && ((struct __ecereNameSpace__ecere__com__Module *)(((char *)method->_class->module + 12)))->name)
+if(method->_class->module && ((struct __ecereNameSpace__ecere__com__Module *)(((char *)method->_class->module + structSize_Instance)))->name)
module = FindModule(method->_class->module);
else
module = mainModule;
if(!method->dataType->dllExport)
{
imported = 0x1;
-if(method->_class->module != privateModule && ((struct __ecereNameSpace__ecere__com__Module *)(((char *)method->_class->module + 12)))->importType != 1)
+if(method->_class->module != privateModule && ((struct __ecereNameSpace__ecere__com__Module *)(((char *)method->_class->module + structSize_Instance)))->importType != 1)
dllImport = 0x1;
}
}
char * dataTypeString;
struct Type * dataType;
void * symbol;
-};
+} __attribute__ ((gcc_struct));
extern struct Context * globalContext;
struct FunctionImport * prev;
struct FunctionImport * next;
char * name;
-};
+} __attribute__ ((gcc_struct));
unsigned int DeclareFunction(struct __ecereNameSpace__ecere__com__GlobalFunction * function, char * name)
{
}
}
imported = symbol->_import ? 0x1 : 0x0;
-if(imported && function->module != privateModule && ((struct __ecereNameSpace__ecere__com__Module *)(((char *)function->module + 12)))->importType != 1)
+if(imported && function->module != privateModule && ((struct __ecereNameSpace__ecere__com__Module *)(((char *)function->module + structSize_Instance)))->importType != 1)
dllImport = 0x1;
}
DeclareType(function->dataType, 0x1, 0x1);
if(dllImport)
d = MkDeclaratorBrackets(MkDeclaratorPointer(MkPointer((((void *)0)), (((void *)0))), d));
d = SpecDeclFromString(function->dataTypeString, specifiers, d);
-if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)function->module + 12)))->importType == 1)
+if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)function->module + structSize_Instance)))->importType == 1)
{
struct Specifier * spec;
for(spec = (*specifiers).first; spec; spec = spec->next)
-if(spec->type == 5 && !strcmp(spec->name, "dllexport"))
+if(spec->type == 5 && spec->extDecl && spec->extDecl->type == 0 && !strcmp(spec->extDecl->s, "dllexport"))
{
__ecereMethod___ecereNameSpace__ecere__sys__OldList_Remove((&*specifiers), spec);
FreeSpecifier(spec);
symbol->id = curExternal->symbol->idCode;
}
}
-return (symbol && symbol->_import && function->module != privateModule && ((struct __ecereNameSpace__ecere__com__Module *)(((char *)function->module + 12)))->importType != 1) ? 0x1 : 0x0;
+return (symbol && symbol->_import && function->module != privateModule && ((struct __ecereNameSpace__ecere__com__Module *)(((char *)function->module + structSize_Instance)))->importType != 1) ? 0x1 : 0x0;
}
extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_GlobalData;
struct GlobalData
{
-unsigned int key;
+uintptr_t key;
struct __ecereNameSpace__ecere__sys__BTNode * parent;
struct __ecereNameSpace__ecere__sys__BTNode * left;
struct __ecereNameSpace__ecere__sys__BTNode * right;
struct Type * dataType;
void * symbol;
char * fullName;
-};
+} __attribute__ ((gcc_struct));
void DeclareGlobalData(struct GlobalData * data)
{
struct __ecereNameSpace__ecere__com__Property * convert;
unsigned int isGet;
struct Type * resultType;
-};
+} __attribute__ ((gcc_struct));
static struct __ecereNameSpace__ecere__com__Class * __ecereClass_Conversion;
return 0x1;
else if(dest->kind == 2 && source->kind == 1)
return 0x1;
-else if(dest->kind == 3 && (source->kind == 2 || source->kind == 1))
+else if(dest->kind == 3 && (source->kind == 2 || source->kind == 1 || source->kind == 23))
+return 0x1;
+else if(dest->kind == 4 && (source->kind == 2 || source->kind == 1 || source->kind == 3 || source->kind == 22 || source->kind == 23))
return 0x1;
-else if(dest->kind == 4 && (source->kind == 2 || source->kind == 1 || source->kind == 3))
+else if(dest->kind == 22 && (source->kind == 2 || source->kind == 1 || source->kind == 3 || source->kind == 23 || source->kind == 4))
return 0x1;
-else if(source->kind == 15 && (dest->kind == 3 || dest->kind == 2 || dest->kind == 1 || dest->kind == 5 || dest->kind == 4))
+else if(dest->kind == 23 && (source->kind == 2 || source->kind == 1 || source->kind == 3 || source->kind == 4 || source->kind == 22))
return 0x1;
-else if(dest->kind == 15 && (source->kind == 3 || source->kind == 2 || source->kind == 1 || source->kind == 5 || dest->kind == 4))
+else if(source->kind == 15 && (dest->kind == 3 || dest->kind == 2 || dest->kind == 1 || dest->kind == 5 || dest->kind == 4 || dest->kind == 22 || dest->kind == 23))
+return 0x1;
+else if(dest->kind == 15 && (source->kind == 3 || source->kind == 2 || source->kind == 1 || source->kind == 5 || source->kind == 4 || source->kind == 22 || source->kind == 23))
return 0x1;
else if((dest->kind == 11 || (dest->kind == 13 && dest->type->kind == 11) || dest->kind == 16) && ((source->kind == 11 || (source->kind == 13 && source->type->kind == 11) || source->kind == 16)))
{
if(paramDest->kind == 20 && paramDest->templateParameter->type == 0 && owningClassSource && paramSource->kind != 20)
{
int id = 0;
-struct __ecereNameSpace__ecere__com__ClassTemplateParameter * curParam;
+struct __ecereNameSpace__ecere__com__ClassTemplateParameter * curParam = (((void *)0));
struct __ecereNameSpace__ecere__com__Class * sClass;
for(sClass = owningClassSource; sClass; sClass = sClass->base)
struct __ecereNameSpace__ecere__com__BTNamedLink * right;
int depth;
void * data;
-};
+} __attribute__ ((gcc_struct));
extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__EnumClassData;
{
struct __ecereNameSpace__ecere__sys__OldList values;
int largest;
-};
+} __attribute__ ((gcc_struct));
extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__sys__NamedLink;
struct __ecereNameSpace__ecere__sys__NamedLink * next;
char * name;
void * data;
-};
+} __attribute__ ((gcc_struct));
extern void FreeExpContents(struct Expression * exp);
struct __ecereNameSpace__ecere__com__SubModule * next;
struct __ecereNameSpace__ecere__com__Instance * module;
int importMode;
-};
+} __attribute__ ((gcc_struct));
unsigned int ModuleVisibility(struct __ecereNameSpace__ecere__com__Instance * searchIn, struct __ecereNameSpace__ecere__com__Instance * searchFor)
{
if(searchFor == searchIn)
return 0x1;
-for(subModule = ((struct __ecereNameSpace__ecere__com__Module *)(((char *)searchIn + 12)))->modules.first; subModule; subModule = subModule->next)
+for(subModule = ((struct __ecereNameSpace__ecere__com__Module *)(((char *)searchIn + structSize_Instance)))->modules.first; subModule; subModule = subModule->next)
{
-if(subModule->importMode == 1 || searchIn == ((struct __ecereNameSpace__ecere__com__Module *)(((char *)searchIn + 12)))->application)
+if(subModule->importMode == 1 || searchIn == ((struct __ecereNameSpace__ecere__com__Module *)(((char *)searchIn + structSize_Instance)))->application)
{
if(ModuleVisibility(subModule->module, searchFor))
return 0x1;
struct __ecereNameSpace__ecere__sys__OldList allModules;
char * parsedCommand;
struct __ecereNameSpace__ecere__com__NameSpace systemNameSpace;
-};
+} __attribute__ ((gcc_struct));
unsigned int MatchWithEnums_Module(struct __ecereNameSpace__ecere__com__Instance * mainModule, struct Expression * sourceExp, struct Type * dest, char * string, struct __ecereNameSpace__ecere__sys__OldList * conversions)
{
struct __ecereNameSpace__ecere__com__Instance * module;
-if(MatchWithEnums_NameSpace(&((struct __ecereNameSpace__ecere__com__Application *)(((char *)((struct __ecereNameSpace__ecere__com__Module *)(((char *)mainModule + 12)))->application + 300)))->systemNameSpace, sourceExp, dest, string, conversions))
+if(MatchWithEnums_NameSpace(&((struct __ecereNameSpace__ecere__com__Application *)(((char *)((struct __ecereNameSpace__ecere__com__Module *)(((char *)mainModule + structSize_Instance)))->application + structSize_Module)))->systemNameSpace, sourceExp, dest, string, conversions))
return 0x1;
-if(MatchWithEnums_NameSpace(&((struct __ecereNameSpace__ecere__com__Module *)(((char *)((struct __ecereNameSpace__ecere__com__Module *)(((char *)mainModule + 12)))->application + 12)))->privateNameSpace, sourceExp, dest, string, conversions))
+if(MatchWithEnums_NameSpace(&((struct __ecereNameSpace__ecere__com__Module *)(((char *)((struct __ecereNameSpace__ecere__com__Module *)(((char *)mainModule + structSize_Instance)))->application + structSize_Instance)))->privateNameSpace, sourceExp, dest, string, conversions))
return 0x1;
-if(MatchWithEnums_NameSpace(&((struct __ecereNameSpace__ecere__com__Module *)(((char *)((struct __ecereNameSpace__ecere__com__Module *)(((char *)mainModule + 12)))->application + 12)))->publicNameSpace, sourceExp, dest, string, conversions))
+if(MatchWithEnums_NameSpace(&((struct __ecereNameSpace__ecere__com__Module *)(((char *)((struct __ecereNameSpace__ecere__com__Module *)(((char *)mainModule + structSize_Instance)))->application + structSize_Instance)))->publicNameSpace, sourceExp, dest, string, conversions))
return 0x1;
-for(module = ((struct __ecereNameSpace__ecere__com__Application *)(((char *)((struct __ecereNameSpace__ecere__com__Module *)(((char *)mainModule + 12)))->application + 300)))->allModules.first; module; module = ((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->next)
+for(module = ((struct __ecereNameSpace__ecere__com__Application *)(((char *)((struct __ecereNameSpace__ecere__com__Module *)(((char *)mainModule + structSize_Instance)))->application + structSize_Module)))->allModules.first; module; module = ((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + structSize_Instance)))->next)
{
-if(ModuleVisibility(mainModule, module) && MatchWithEnums_NameSpace(&((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->publicNameSpace, sourceExp, dest, string, conversions))
+if(ModuleVisibility(mainModule, module) && MatchWithEnums_NameSpace(&((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + structSize_Instance)))->publicNameSpace, sourceExp, dest, string, conversions))
return 0x1;
}
return 0x0;
output[d] = '\0';
}
+extern long long __ecereNameSpace__ecere__com___strtoi64(char * string, char * * endString, int base);
+
+extern uint64 __ecereNameSpace__ecere__com___strtoui64(char * string, char * * endString, int base);
+
extern double strtod(char * , char * * );
struct Operand GetOperand(struct Expression * exp)
case 4:
if(type->isSigned)
{
-op.i64 = _strtoi64(exp->constant, (((void *)0)), 0);
+op.i64 = __ecereNameSpace__ecere__com___strtoi64(exp->constant, (((void *)0)), 0);
+op.ops = intOps;
+}
+else
+{
+op.ui64 = __ecereNameSpace__ecere__com___strtoui64(exp->constant, (((void *)0)), 0);
+op.ops = uintOps;
+}
+op.kind = 3;
+break;
+case 22:
+if(type->isSigned)
+{
+op.i64 = __ecereNameSpace__ecere__com___strtoi64(exp->constant, (((void *)0)), 0);
+op.ops = intOps;
+}
+else
+{
+op.ui64 = __ecereNameSpace__ecere__com___strtoui64(exp->constant, (((void *)0)), 0);
+op.ops = uintOps;
+}
+op.kind = 3;
+break;
+case 23:
+if(type->isSigned)
+{
+op.i64 = __ecereNameSpace__ecere__com___strtoi64(exp->constant, (((void *)0)), 0);
op.ops = intOps;
}
else
{
-op.ui64 = _strtoui64(exp->constant, (((void *)0)), 0);
+op.ui64 = __ecereNameSpace__ecere__com___strtoui64(exp->constant, (((void *)0)), 0);
op.ops = uintOps;
}
op.kind = 3;
case 12:
case 13:
case 8:
-op.p = (unsigned char *)strtoul(exp->constant, (((void *)0)), 0);
+op.ui64 = __ecereNameSpace__ecere__com___strtoui64(exp->constant, (((void *)0)), 0);
op.kind = 13;
op.ops = uintOps;
break;
exp->type = 2;
break;
}
+case 22:
+{
+FreeExpContents(exp);
+exp->constant = PrintInt64((long long)*(intptr_t *)ptr);
+exp->type = 2;
+break;
+}
+case 23:
+{
+FreeExpContents(exp);
+exp->constant = PrintInt64((long long)*(intptr_t *)ptr);
+exp->type = 2;
+break;
+}
default:
Compiler_Error(__ecereNameSpace__ecere__GetTranslatedString(__thisModule, "Unhandled type populating instance\n", (((void *)0))));
}
exp->type = 2;
break;
}
+case 22:
+{
+exp->constant = PrintInt64((long long)*(intptr_t *)ptr);
+exp->type = 2;
+break;
+}
default:
Compiler_Error(__ecereNameSpace__ecere__GetTranslatedString(__thisModule, "Unhandled type populating instance\n", (((void *)0))));
}
GetInt64(value, (long long *)ptr);
break;
}
+case 22:
+{
+GetIntPtr(value, (intptr_t *)ptr);
+break;
+}
+case 23:
+{
+GetIntSize(value, (ssize_t *)ptr);
+break;
+}
case 6:
{
GetFloat(value, (float *)ptr);
{
void (* Set)(void *, long long) = (void *)prop->Set;
-Set(inst->data, _strtoi64(value->constant, (((void *)0)), 0));
+Set(inst->data, __ecereNameSpace__ecere__com___strtoi64(value->constant, (((void *)0)), 0));
+break;
+}
+case 22:
+{
+void (* Set)(void *, intptr_t) = (void *)prop->Set;
+
+Set(inst->data, (intptr_t)__ecereNameSpace__ecere__com___strtoi64(value->constant, (((void *)0)), 0));
+break;
+}
+case 23:
+{
+void (* Set)(void *, ssize_t) = (void *)prop->Set;
+
+Set(inst->data, (ssize_t)__ecereNameSpace__ecere__com___strtoi64(value->constant, (((void *)0)), 0));
break;
}
}
char temp[1024];
ReadString(temp, value->string);
-prop->Set(inst->data, temp);
+((void (*)(void *, void *))(void *)prop->Set)(inst->data, temp);
}
}
}
else
bits |= ((uint64)part << bitMember->pos);
break;
+case 22:
+if(type->isSigned)
+bits |= ((intptr_t)part << bitMember->pos);
+else
+bits |= ((uintptr_t)part << bitMember->pos);
+break;
+case 23:
+if(type->isSigned)
+bits |= ((ssize_t)part << bitMember->pos);
+else
+bits |= ((size_t)part << bitMember->pos);
+break;
}
}
}
PopulateInstance(exp->instance);
break;
}
+case 22:
+{
+intptr_t intValue;
+void (* Set)(void *, intptr_t) = (void *)prop->Set;
+
+exp->instance = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Instantiation);
+exp->instance->data = __ecereNameSpace__ecere__com__eSystem_New0(sizeof(unsigned char) * (_class->structSize));
+exp->instance->_class = MkSpecifierName(_class->fullName);
+exp->instance->loc = exp->loc;
+exp->type = 1;
+GetIntPtr(value, &intValue);
+Set(exp->instance->data, intValue);
+PopulateInstance(exp->instance);
+break;
+}
+case 23:
+{
+ssize_t intValue;
+void (* Set)(void *, ssize_t) = (void *)prop->Set;
+
+exp->instance = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Instantiation);
+exp->instance->data = __ecereNameSpace__ecere__com__eSystem_New0(sizeof(unsigned char) * (_class->structSize));
+exp->instance->_class = MkSpecifierName(_class->fullName);
+exp->instance->loc = exp->loc;
+exp->type = 1;
+GetIntSize(value, &intValue);
+Set(exp->instance->data, intValue);
+PopulateInstance(exp->instance);
+break;
+}
case 7:
{
double doubleValue;
exp->type = 2;
}
break;
+case 22:
+if(type->isSigned)
+{
+intptr_t value;
+
+GetIntPtr(e, &value);
+FreeExpContents(exp);
+exp->constant = PrintInt64((long long)value);
+exp->type = 2;
+}
+else
+{
+uintptr_t value;
+
+GetUIntPtr(e, &value);
+FreeExpContents(exp);
+exp->constant = PrintUInt64((uint64)value);
+exp->type = 2;
+}
+break;
+case 23:
+if(type->isSigned)
+{
+ssize_t value;
+
+GetIntSize(e, &value);
+FreeExpContents(exp);
+exp->constant = PrintInt64((long long)value);
+exp->type = 2;
+}
+else
+{
+size_t value;
+
+GetUIntSize(e, &value);
+FreeExpContents(exp);
+exp->constant = PrintUInt64((uint64)value);
+exp->type = 2;
+}
+break;
case 6:
{
float value;
return result;
}
-extern struct Expression * MkExpExtensionCompound(struct Statement * compound);
-
extern struct Statement * MkCompoundStmt(struct __ecereNameSpace__ecere__sys__OldList * declarations, struct __ecereNameSpace__ecere__sys__OldList * statements);
extern struct Statement * MkExpressionStmt(struct __ecereNameSpace__ecere__sys__OldList * expressions);
+extern struct Expression * MkExpMember(struct Expression * expression, struct Identifier * member);
+
void CheckTemplateTypes(struct Expression * exp)
{
if(exp->destType && exp->destType->passAsTemplate && exp->expType && exp->expType->kind != 20 && !exp->expType->passAsTemplate)
switch(exp->expType->kind)
{
case 7:
-exp->type = 4;
-exp->op.exp1 = (((void *)0));
+if(exp->destType->classObjectType)
+{
+if(exp->destType)
+exp->destType->refCount--;
+if(exp->expType)
+exp->expType->refCount--;
+((newExp ? (__ecereClass_Expression->Destructor ? __ecereClass_Expression->Destructor(newExp) : 0, __ecereNameSpace__ecere__com__eSystem_Delete(newExp)) : 0), newExp = 0);
+}
+else
+{
+struct __ecereNameSpace__ecere__sys__OldList * specs;
+struct __ecereNameSpace__ecere__sys__OldList * unionDefs = MkList();
+struct __ecereNameSpace__ecere__sys__OldList * statements = MkList();
+
context = PushContext();
-exp->op.exp2 = MkExpCast(MkTypeName(MkListOne(MkSpecifierName("uint64")), MkDeclaratorPointer(MkPointer((((void *)0)), (((void *)0))), (((void *)0)))), MkExpExtensionCompound(compound = MkCompoundStmt(MkListOne(MkDeclaration(MkListOne(MkSpecifier(DOUBLE)), MkListOne(MkInitDeclarator(MkDeclaratorIdentifier(MkIdentifier("__internal")), MkInitializerAssignment(newExp))))), MkListOne(MkExpressionStmt(MkListOne(MkExpOp((((void *)0)), '&', MkExpIdentifier(MkIdentifier("__internal")))))))));
-compound->compound.context = context;
+ListAdd(unionDefs, MkClassDefDeclaration(MkStructDeclaration(MkListOne(MkSpecifier(DOUBLE)), MkListOne(MkDeclaratorIdentifier(MkIdentifier("d"))), (((void *)0)))));
+ListAdd(unionDefs, MkClassDefDeclaration(MkStructDeclaration(MkListOne(MkSpecifierName("uint64")), MkListOne(MkDeclaratorIdentifier(MkIdentifier("i"))), (((void *)0)))));
+specs = MkListOne(MkStructOrUnion(4, (((void *)0)), unionDefs));
+exp->type = 25;
+exp->compound = MkCompoundStmt(MkListOne(MkDeclaration(specs, MkListOne(MkInitDeclarator(MkDeclaratorIdentifier(MkIdentifier("__internal_union")), (((void *)0)))))), statements);
+ListAdd(statements, MkExpressionStmt(MkListOne(MkExpOp(MkExpMember(MkExpIdentifier(MkIdentifier("__internal_union")), MkIdentifier("d")), '=', newExp))));
+ListAdd(statements, MkExpressionStmt(MkListOne(MkExpMember(MkExpIdentifier(MkIdentifier("__internal_union")), MkIdentifier("i")))));
+exp->compound->compound.context = context;
PopContext(context);
-exp->op.op = '*';
+}
break;
default:
exp->type = 11;
switch(exp->expType->kind)
{
case 7:
-exp->type = 4;
-exp->op.exp1 = (((void *)0));
+if(exp->destType->classObjectType)
+{
+if(exp->destType)
+exp->destType->refCount--;
+if(exp->expType)
+exp->expType->refCount--;
+((newExp ? (__ecereClass_Expression->Destructor ? __ecereClass_Expression->Destructor(newExp) : 0, __ecereNameSpace__ecere__com__eSystem_Delete(newExp)) : 0), newExp = 0);
+}
+else
+{
+struct __ecereNameSpace__ecere__sys__OldList * specs;
+struct __ecereNameSpace__ecere__sys__OldList * unionDefs = MkList();
+struct __ecereNameSpace__ecere__sys__OldList * statements = MkList();
+
context = PushContext();
-exp->op.exp2 = MkExpCast(MkTypeName(MkListOne(MkSpecifier(DOUBLE)), MkDeclaratorPointer(MkPointer((((void *)0)), (((void *)0))), (((void *)0)))), MkExpExtensionCompound(compound = MkCompoundStmt(MkListOne(MkDeclaration(MkListOne(MkSpecifierName("uint64")), MkListOne(MkInitDeclarator(MkDeclaratorIdentifier(MkIdentifier("__internal")), MkInitializerAssignment(newExp))))), MkListOne(MkExpressionStmt(MkListOne(MkExpOp((((void *)0)), '&', MkExpIdentifier(MkIdentifier("__internal")))))))));
-compound->compound.context = context;
+ListAdd(unionDefs, MkClassDefDeclaration(MkStructDeclaration(MkListOne(MkSpecifier(DOUBLE)), MkListOne(MkDeclaratorIdentifier(MkIdentifier("d"))), (((void *)0)))));
+ListAdd(unionDefs, MkClassDefDeclaration(MkStructDeclaration(MkListOne(MkSpecifierName("uint64")), MkListOne(MkDeclaratorIdentifier(MkIdentifier("i"))), (((void *)0)))));
+specs = MkListOne(MkStructOrUnion(4, (((void *)0)), unionDefs));
+exp->type = 25;
+exp->compound = MkCompoundStmt(MkListOne(MkDeclaration(specs, MkListOne(MkInitDeclarator(MkDeclaratorIdentifier(MkIdentifier("__internal_union")), (((void *)0)))))), statements);
+ListAdd(statements, MkExpressionStmt(MkListOne(MkExpOp(MkExpMember(MkExpIdentifier(MkIdentifier("__internal_union")), MkIdentifier("i")), '=', newExp))));
+ListAdd(statements, MkExpressionStmt(MkListOne(MkExpMember(MkExpIdentifier(MkIdentifier("__internal_union")), MkIdentifier("d")))));
+exp->compound->compound.context = context;
PopContext(context);
-exp->op.op = '*';
-ProcessExpressionType(exp->op.exp2);
+}
break;
case 8:
{
}
}
-extern int strncmp(const char * , const char * , int n);
+extern int strncmp(const char * , const char * , size_t n);
struct __ecereNameSpace__ecere__sys__BTNode * __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_FindPrefix(struct __ecereNameSpace__ecere__sys__BinaryTree * this, char * key);
static void GetTypeSpecs(struct Type * type, struct __ecereNameSpace__ecere__sys__OldList * specs)
{
-if(!type->isSigned)
+if(!type->isSigned && type->kind != 22 && type->kind != 23)
ListAdd(specs, MkSpecifier(UNSIGNED));
switch(type->kind)
{
case 4:
ListAdd(specs, MkSpecifier(INT64));
break;
+case 22:
+ListAdd(specs, MkSpecifierName(type->isSigned ? "intptr" : "uintptr"));
+break;
+case 23:
+ListAdd(specs, MkSpecifierName(type->isSigned ? "intsize" : "uintsize"));
+break;
case 3:
default:
ListAdd(specs, MkSpecifier(INT));
case 4:
strcat(string, type->isSigned ? "int64" : "uint64");
break;
+case 22:
+strcat(string, type->isSigned ? "intptr" : "uintptr");
+break;
+case 23:
+strcat(string, type->isSigned ? "intsize" : "uintsize");
+break;
case 1:
strcat(string, type->isSigned ? "char" : "byte");
break;
char constant[256];
exp->type = 2;
-sprintf(constant, "%d", classProp->Get(_class));
+sprintf(constant, "%d", (int)classProp->Get(_class));
exp->constant = __ecereNameSpace__ecere__sys__CopyString(constant);
}
}
extern struct __ecereNameSpace__ecere__com__NameSpace * globalData;
-extern char * strncpy(char * , const char * , int n);
+extern char * strncpy(char * , const char * , size_t n);
static struct GlobalData * FindGlobalData(char * name)
{
extern struct Expression * MkExpCall(struct Expression * expression, struct __ecereNameSpace__ecere__sys__OldList * arguments);
+extern int printf(char * , ...);
+
void __ecereMethod_Expression_Clear();
void ApplyAnyObjectLogic(struct Expression * e)
newExp->destType = ProcessType(specs, decl);
curContext = context;
e->type = 25;
-e->compound = MkCompoundStmt(MkListOne(MkDeclaration(specs, MkListOne(MkInitDeclarator(MkDeclaratorIdentifier(MkIdentifier("__internalValue")), MkInitializerAssignment(newExp))))), MkListOne(MkExpressionStmt(MkListOne(MkExpIdentifier(MkIdentifier("__internalValue"))))));
+if(curCompound)
+{
+char name[100];
+struct __ecereNameSpace__ecere__sys__OldList * stmts = MkList();
+
+sprintf(name, "__internalValue%03X", internalValueCounter++);
+if(!curCompound->compound.declarations)
+curCompound->compound.declarations = MkList();
+__ecereMethod___ecereNameSpace__ecere__sys__OldList_Insert((&*curCompound->compound.declarations), (((void *)0)), MkDeclaration(specs, MkListOne(MkInitDeclarator(MkDeclaratorIdentifier(MkIdentifier(name)), (((void *)0))))));
+ListAdd(stmts, MkExpressionStmt(MkListOne(MkExpOp(MkExpIdentifier(MkIdentifier(name)), '=', newExp))));
+ListAdd(stmts, MkExpressionStmt(MkListOne(MkExpIdentifier(MkIdentifier(name)))));
+e->compound = MkCompoundStmt((((void *)0)), stmts);
+}
+else
+printf("libec: compiler error, curCompound is null in ApplyAnyObjectLogic\n");
{
struct Type * type = e->destType;
}
}
-extern char * strstr(char * , const char * );
+extern char * strstr(const char * , const char * );
extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__DefinedExpression;
char * name;
char * value;
struct __ecereNameSpace__ecere__com__NameSpace * nameSpace;
-};
+} __attribute__ ((gcc_struct));
extern struct __ecereNameSpace__ecere__com__DefinedExpression * __ecereNameSpace__ecere__com__eSystem_FindDefine(struct __ecereNameSpace__ecere__com__Instance * module, char * name);
extern struct Expression * GetTemplateArgExp(struct TemplateParameter * param, struct __ecereNameSpace__ecere__com__Class * curClass, unsigned int pointer);
-extern struct Expression * MkExpMember(struct Expression * expression, struct Identifier * member);
-
extern struct Expression * MkExpCondition(struct Expression * cond, struct __ecereNameSpace__ecere__sys__OldList * expressions, struct Expression * elseExp);
extern struct Expression * CopyExpression(struct Expression * exp);
static void ProcessStatement(struct Statement * stmt);
+extern struct Expression * MkExpExtensionInitializer(struct TypeName * typeName, struct Initializer * initializer);
+
extern struct Initializer * MkInitializerList(struct __ecereNameSpace__ecere__sys__OldList * list);
-extern struct Declaration * MkDeclarationInst(struct Instantiation * inst);
+extern char * __ecereNameSpace__ecere__com__PrintString(struct __ecereNameSpace__ecere__com__Class * class, void * object, ...);
-extern struct Instantiation * MkInstantiationNamed(struct __ecereNameSpace__ecere__sys__OldList * specs, struct Expression * exp, struct __ecereNameSpace__ecere__sys__OldList * members);
+extern char * sourceFile;
void __ecereMethod___ecereNameSpace__ecere__sys__OldList_Clear(struct __ecereNameSpace__ecere__sys__OldList * this);
(__ecereNameSpace__ecere__com__eSystem_Delete(id->string), id->string = 0);
id->string = __ecereNameSpace__ecere__sys__CopyString(function->name);
name[0] = (char)0;
-if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)function->module + 12)))->importType != 1 && (!function->dataType || !function->dataType->dllExport))
+if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)function->module + structSize_Instance)))->importType != 1 && (!function->dataType || !function->dataType->dllExport))
strcpy(name, "__ecereFunction_");
FullClassNameCat(name, id->string, 0x0);
if(DeclareFunction(function, name))
exp->op.exp2->destType->count--;
if(assign && type1 && type1->kind == 13 && exp->op.exp2->expType)
{
-if(exp->op.exp2->expType->kind == 4 || exp->op.exp2->expType->kind == 3 || exp->op.exp2->expType->kind == 2 || exp->op.exp2->expType->kind == 1)
+if(exp->op.exp2->expType->kind == 23 || exp->op.exp2->expType->kind == 22 || exp->op.exp2->expType->kind == 4 || exp->op.exp2->expType->kind == 3 || exp->op.exp2->expType->kind == 2 || exp->op.exp2->expType->kind == 1)
{
if(exp->op.op != '=' && type1->type->kind == 0)
Compiler_Error(__ecereNameSpace__ecere__GetTranslatedString(__thisModule, "void *: unknown size\n", (((void *)0))));
}
else if(exp->op.exp1 && exp->op.exp2 && ((useSideType) || ((!type1 || type1->kind != 8 || !strcmp(type1->_class->string, "String")) && (!type2 || type2->kind != 8 || !strcmp(type2->_class->string, "String")))))
{
-if(type1 && type2 && ((type1->kind == 8 && strcmp(type1->_class->string, "String")) == (type2->kind == 8 && strcmp(type2->_class->string, "String"))))
+if(type1 && type2 && ((type1->kind == 8 && type1->_class && strcmp(type1->_class->string, "String")) == (type2->kind == 8 && type2->_class && strcmp(type2->_class->string, "String"))))
{
if(exp->op.exp2->destType)
FreeType(exp->op.exp2->destType);
}
}
}
-if(!boolResult && ((type1->kind == 13 || type1->kind == 12 || (type1->kind == 8 && !strcmp(type1->_class->string, "String"))) && (type2->kind == 4 || type2->kind == 3 || type2->kind == 2 || type2->kind == 1)))
+if(!boolResult && ((type1->kind == 13 || type1->kind == 12 || (type1->kind == 8 && !strcmp(type1->_class->string, "String"))) && (type2->kind == 23 || type2->kind == 22 || type2->kind == 4 || type2->kind == 3 || type2->kind == 2 || type2->kind == 1)))
{
if(type1->kind != 8 && type1->type->kind == 0)
Compiler_Error(__ecereNameSpace__ecere__GetTranslatedString(__thisModule, "void *: unknown size\n", (((void *)0))));
if(type1)
type1->refCount++;
}
-else if(!boolResult && ((type2->kind == 13 || type2->kind == 12 || (type2->kind == 8 && !strcmp(type2->_class->string, "String"))) && (type1->kind == 4 || type1->kind == 3 || type1->kind == 2 || type1->kind == 1)))
+else if(!boolResult && ((type2->kind == 13 || type2->kind == 12 || (type2->kind == 8 && !strcmp(type2->_class->string, "String"))) && (type1->kind == 23 || type1->kind == 22 || type1->kind == 4 || type1->kind == 3 || type1->kind == 2 || type1->kind == 1)))
{
if(type2->kind != 8 && type2->type->kind == 0)
Compiler_Error(__ecereNameSpace__ecere__GetTranslatedString(__thisModule, "void *: unknown size\n", (((void *)0))));
struct Expression * idExp = exp->call.exp;
struct Identifier * id = idExp->identifier;
-if(!strcmp(id->string, "__ENDIAN_PAD"))
+if(!strcmp(id->string, "__builtin_frame_address"))
+{
+exp->expType = ProcessTypeString("void *", 0x1);
+if(exp->call.arguments && (*exp->call.arguments).first)
+ProcessExpressionType((*exp->call.arguments).first);
+break;
+}
+else if(!strcmp(id->string, "__ENDIAN_PAD"))
{
exp->expType = ProcessTypeString("int", 0x1);
if(exp->call.arguments && (*exp->call.arguments).first)
if(!type)
emptyParams = 0x1;
-if(functionType->extraParam && e)
+if(functionType->extraParam && e && functionType->thisClass)
{
e->destType = MkClassType(functionType->thisClass->string);
e = e->next;
{
for(param = _class->templateParams.first; param; param = param->next)
{
-if(param->type == 1 && !strcmp(param->name, exp->member.member->string))
+if(param->type == 1 && exp->member.member && exp->member.member->string && !strcmp(param->name, exp->member.member->string))
break;
}
}
if(tClass && exp->expType->kind == 20 && exp->expType->templateParameter->type == 0)
{
int id = 0;
-struct __ecereNameSpace__ecere__com__ClassTemplateParameter * curParam;
+struct __ecereNameSpace__ecere__com__ClassTemplateParameter * curParam = (((void *)0));
struct __ecereNameSpace__ecere__com__Class * sClass;
for(sClass = tClass; sClass; sClass = sClass->base)
else if(tClass && exp->expType->kind == 13 && exp->expType->type && exp->expType->type->kind == 20 && exp->expType->type->templateParameter->type == 0)
{
int id = 0;
-struct __ecereNameSpace__ecere__com__ClassTemplateParameter * curParam;
+struct __ecereNameSpace__ecere__com__ClassTemplateParameter * curParam = (((void *)0));
struct __ecereNameSpace__ecere__com__Class * sClass;
for(sClass = tClass; sClass; sClass = sClass->base)
if(typeString)
{
char templateString[1024];
-struct __ecereNameSpace__ecere__sys__OldList * declarations = MkList();
-struct __ecereNameSpace__ecere__sys__OldList * instMembers = MkList();
-struct __ecereNameSpace__ecere__sys__OldList * specs = MkList();
struct __ecereNameSpace__ecere__sys__OldList * initializers = MkList();
-char count[128];
-struct Expression * e;
+struct __ecereNameSpace__ecere__sys__OldList * structInitializers = MkList();
+struct __ecereNameSpace__ecere__sys__OldList * specs = MkList();
struct Expression * expExt;
struct Declarator * decl = SpecDeclFromString(typeString, specs, (((void *)0)));
-struct Context * context = PushContext();
sprintf(templateString, "Container<%s>", typeString);
-ListAdd(instMembers, MkMemberInit(MkListOne(MkIdentifier("data")), MkInitializerAssignment(MkExpIdentifier(MkIdentifier("__internalList")))));
-sprintf(count, "%d", (*exp->list).count);
-ListAdd(instMembers, MkMemberInit(MkListOne(MkIdentifier("count")), MkInitializerAssignment(MkExpConstant(count))));
-ListAdd(instMembers, MkMemberInit(MkListOne(MkIdentifier("type")), MkInitializerAssignment(MkExpClass(CopyList(specs, CopySpecifier), CopyDeclarator(decl)))));
-ListAdd(instMembers, MkMemberInit(MkListOne(MkIdentifier("_vTbl")), MkInitializerAssignment(MkExpMember(MkExpClass(MkListOne(MkSpecifierName("BuiltInContainer")), (((void *)0))), MkIdentifier("_vTbl")))));
-ListAdd(instMembers, MkMemberInit(MkListOne(MkIdentifier("_class")), MkInitializerAssignment(MkExpClass(MkListOne(MkSpecifierName("BuiltInContainer")), (((void *)0))))));
if(exp->list)
{
+struct Expression * e;
+
type = ProcessTypeString(typeString, 0x0);
while(e = (*exp->list).first)
{
FreeType(type);
(__ecereNameSpace__ecere__com__eSystem_Delete(exp->list), exp->list = 0);
}
-ListAdd(declarations, MkDeclaration(specs, MkListOne(MkInitDeclarator(MkDeclaratorArray(PlugDeclarator(decl, MkDeclaratorIdentifier(MkIdentifier("__internalList"))), (((void *)0))), MkInitializerList(initializers)))));
-ListAdd(declarations, MkDeclarationInst(MkInstantiationNamed(MkListOne(MkSpecifierName("BuiltInContainer")), MkExpIdentifier(MkIdentifier("__internalContainer")), MkListOne(MkMembersInitList(instMembers)))));
+DeclareStruct("ecere::com::BuiltInContainer", 0x0);
+ListAdd(structInitializers, MkInitializerAssignment(MkExpMember(MkExpClass(MkListOne(MkSpecifierName("BuiltInContainer")), (((void *)0))), MkIdentifier("_vTbl"))));
+ProcessExpressionType(((struct Initializer *)(*structInitializers).last)->exp);
+ListAdd(structInitializers, MkInitializerAssignment(MkExpClass(MkListOne(MkSpecifierName("BuiltInContainer")), (((void *)0)))));
+ProcessExpressionType(((struct Initializer *)(*structInitializers).last)->exp);
+ListAdd(structInitializers, MkInitializerAssignment(MkExpConstant("0")));
+ProcessExpressionType(((struct Initializer *)(*structInitializers).last)->exp);
+ListAdd(structInitializers, MkInitializerAssignment(MkExpExtensionInitializer(MkTypeName(specs, MkDeclaratorArray(decl, (((void *)0)))), MkInitializerList(initializers))));
+ProcessExpressionType(((struct Initializer *)(*structInitializers).last)->exp);
+ListAdd(structInitializers, MkInitializerAssignment((__ecereTemp1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Expression), ((struct Expression *)__ecereTemp1)->type = 2, ((struct Expression *)__ecereTemp1)->constant = __ecereNameSpace__ecere__com__PrintString(__ecereClass_int, &(*initializers).count, (void *)0), ((struct Expression *)__ecereTemp1))));
+ProcessExpressionType(((struct Initializer *)(*structInitializers).last)->exp);
+ListAdd(structInitializers, MkInitializerAssignment(MkExpClass(CopyList(specs, CopySpecifier), CopyDeclarator(decl))));
+ProcessExpressionType(((struct Initializer *)(*structInitializers).last)->exp);
exp->expType = ProcessTypeString(templateString, 0x0);
exp->type = 5;
-exp->list = MkListOne(MkExpCast(MkTypeName(MkListOne(MkSpecifierName(templateString)), (((void *)0))), (expExt = MkExpExtensionCompound(MkCompoundStmt(declarations, MkListOne(MkExpressionStmt(MkListOne(MkExpOp((((void *)0)), '&', MkExpIdentifier(MkIdentifier("__internalContainer")))))))))));
-expExt->compound->compound.context = context;
-PopContext(context);
+exp->list = MkListOne(MkExpCast(MkTypeName(MkListOne(MkSpecifierName(templateString)), (((void *)0))), MkExpOp((((void *)0)), '&', expExt = MkExpExtensionInitializer(MkTypeName(MkListOne(MkSpecifierName("BuiltInContainer")), (((void *)0))), MkInitializerList(structInitializers)))));
ProcessExpressionType(expExt);
}
else
for(member = symbol->type->members.first; member; member = member->next)
{
-struct __ecereNameSpace__ecere__sys__NamedLink * value = (value = __ecereNameSpace__ecere__com__eSystem_New0(16), value->name = __ecereNameSpace__ecere__sys__CopyString(member->name), value);
+struct __ecereNameSpace__ecere__sys__NamedLink * value = (value = __ecereNameSpace__ecere__com__eSystem_New0(structSize_NamedLink), value->name = __ecereNameSpace__ecere__sys__CopyString(member->name), value);
__ecereMethod___ecereNameSpace__ecere__sys__OldList_Add(&exp->expType->members, value);
}
PrintExpression(exp, expString);
__ecereNameSpace__ecere__sys__ChangeCh(expString, '\n', ' ');
}
+if(!sourceFile || (strcmp(sourceFile, "src\\lexer.ec") && strcmp(sourceFile, "src/lexer.ec") && strcmp(sourceFile, "src\\grammar.ec") && strcmp(sourceFile, "src/grammar.ec")))
Compiler_Warning(__ecereNameSpace__ecere__GetTranslatedString(__thisModule, "incompatible expression %s (%s); expected %s\n", (((void *)0))), expString, type1, type2);
FreeType(exp->expType);
exp->destType->refCount++;
curFunction->propSet->fireWatchersDone = 0x1;
}
+extern struct Declaration * MkDeclarationInst(struct Instantiation * inst);
+
+extern struct Instantiation * MkInstantiationNamed(struct __ecereNameSpace__ecere__sys__OldList * specs, struct Expression * exp, struct __ecereNameSpace__ecere__sys__OldList * members);
+
extern struct Statement * MkIfStmt(struct __ecereNameSpace__ecere__sys__OldList * exp, struct Statement * statement, struct Statement * elseStmt);
extern struct Statement * MkForStmt(struct Statement * init, struct Statement * check, struct __ecereNameSpace__ecere__sys__OldList * inc, struct Statement * statement);
}
}
+void DeclareFunctionUtil(char * s)
+{
+struct __ecereNameSpace__ecere__com__GlobalFunction * function = __ecereNameSpace__ecere__com__eSystem_FindFunction(privateModule, s);
+
+if(function)
+{
+char name[1024];
+
+name[0] = (char)0;
+if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)function->module + structSize_Instance)))->importType != 1 && (!function->dataType || !function->dataType->dllExport))
+strcpy(name, "__ecereFunction_");
+FullClassNameCat(name, s, 0x0);
+DeclareFunction(function, name);
+}
+}
+
extern struct __ecereNameSpace__ecere__com__Instance * GetPrivateModule(void);
void ComputeDataTypes()
void * __ecereTemp1;
struct External * external;
struct External * temp = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_External);
+struct External * after = (((void *)0));
currentClass = (((void *)0));
containerClass = __ecereNameSpace__ecere__com__eSystem_FindClass(GetPrivateModule(), "Container");
+for(external = (*ast).first; external; external = external->next)
+{
+if(external->type == 1)
+{
+struct Declaration * decl = external->declaration;
+
+if(decl)
+{
+struct __ecereNameSpace__ecere__sys__OldList * decls = decl->declarators;
+
+if(decls)
+{
+struct InitDeclarator * initDecl = (*decls).first;
+
+if(initDecl)
+{
+struct Declarator * declarator = initDecl->declarator;
+
+if(declarator && declarator->type == 1)
+{
+struct Identifier * id = declarator->identifier;
+
+if(id && id->string)
+{
+if(!strcmp(id->string, "uintptr_t") || !strcmp(id->string, "intptr_t") || !strcmp(id->string, "size_t") || !strcmp(id->string, "ssize_t"))
+{
+external->symbol->id = -1001, external->symbol->idCode = -1001;
+after = external;
+}
+}
+}
+}
+}
+}
+}
+}
temp->symbol = (__ecereTemp1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Symbol), ((struct Symbol *)__ecereTemp1)->id = -1000, ((struct Symbol *)__ecereTemp1)->idCode = -1000, ((struct Symbol *)__ecereTemp1));
-__ecereMethod___ecereNameSpace__ecere__sys__OldList_Insert((&*ast), (((void *)0)), temp);
+__ecereMethod___ecereNameSpace__ecere__sys__OldList_Insert((&*ast), after, temp);
curExternal = temp;
+DeclareFunctionUtil("eSystem_New");
+DeclareFunctionUtil("eSystem_New0");
+DeclareFunctionUtil("eSystem_Renew");
+DeclareFunctionUtil("eSystem_Renew0");
+DeclareFunctionUtil("eClass_GetProperty");
DeclareStruct("ecere::com::Class", 0x0);
DeclareStruct("ecere::com::Instance", 0x0);
DeclareStruct("ecere::com::Property", 0x0);
__ecereNameSpace__ecere__com__eSystem_RegisterFunction("SetThisClass", "void SetThisClass(ecere::com::Class c)", SetThisClass, module, 1);
__ecereNameSpace__ecere__com__eSystem_RegisterFunction("GetThisClass", "ecere::com::Class GetThisClass(void)", GetThisClass, module, 1);
__ecereNameSpace__ecere__com__eSystem_RegisterFunction("PrintExpression", "void PrintExpression(Expression exp, char * string)", PrintExpression, module, 1);
-__ecereNameSpace__ecere__com__eSystem_RegisterFunction("_strtoi64", "int64 _strtoi64(char * string, char * * endString, int base)", _strtoi64, module, 2);
-__ecereNameSpace__ecere__com__eSystem_RegisterFunction("_strtoui64", "uint64 _strtoui64(char * string, char * * endString, int base)", _strtoui64, module, 2);
__ecereNameSpace__ecere__com__eSystem_RegisterFunction("ProcessTemplateParameterType", "Type ProcessTemplateParameterType(TemplateParameter param)", ProcessTemplateParameterType, module, 2);
__ecereNameSpace__ecere__com__eSystem_RegisterFunction("NeedCast", "bool NeedCast(Type type1, Type type2)", NeedCast, module, 2);
__ecereNameSpace__ecere__com__eSystem_RegisterFunction("PrintInt", "char * PrintInt(int64 result)", PrintInt, module, 1);
__ecereNameSpace__ecere__com__eSystem_RegisterFunction("GetUInt", "bool GetUInt(Expression exp, uint * value2)", GetUInt, module, 1);
__ecereNameSpace__ecere__com__eSystem_RegisterFunction("GetInt64", "bool GetInt64(Expression exp, int64 * value2)", GetInt64, module, 1);
__ecereNameSpace__ecere__com__eSystem_RegisterFunction("GetUInt64", "bool GetUInt64(Expression exp, uint64 * value2)", GetUInt64, module, 1);
+__ecereNameSpace__ecere__com__eSystem_RegisterFunction("GetIntPtr", "bool GetIntPtr(Expression exp, intptr * value2)", GetIntPtr, module, 1);
+__ecereNameSpace__ecere__com__eSystem_RegisterFunction("GetUIntPtr", "bool GetUIntPtr(Expression exp, uintptr * value2)", GetUIntPtr, module, 1);
+__ecereNameSpace__ecere__com__eSystem_RegisterFunction("GetIntSize", "bool GetIntSize(Expression exp, intsize * value2)", GetIntSize, module, 1);
+__ecereNameSpace__ecere__com__eSystem_RegisterFunction("GetUIntSize", "bool GetUIntSize(Expression exp, uintsize * value2)", GetUIntSize, module, 1);
__ecereNameSpace__ecere__com__eSystem_RegisterFunction("GetShort", "bool GetShort(Expression exp, short * value2)", GetShort, module, 1);
__ecereNameSpace__ecere__com__eSystem_RegisterFunction("GetUShort", "bool GetUShort(Expression exp, uint16 * value2)", GetUShort, module, 1);
__ecereNameSpace__ecere__com__eSystem_RegisterFunction("GetChar", "bool GetChar(Expression exp, char * value2)", GetChar, module, 1);
__ecereNameSpace__ecere__com__eSystem_RegisterFunction("ComputeClassMembers", "void ComputeClassMembers(ecere::com::Class _class, bool isMember)", ComputeClassMembers, module, 2);
__ecereNameSpace__ecere__com__eSystem_RegisterFunction("ComputeModuleClasses", "void ComputeModuleClasses(ecere::com::Module module)", ComputeModuleClasses, module, 1);
__ecereNameSpace__ecere__com__eSystem_RegisterFunction("ComputeTypeSize", "int ComputeTypeSize(Type type)", ComputeTypeSize, module, 1);
-__ecereNameSpace__ecere__com__eSystem_RegisterFunction("AddMembers", "int AddMembers(ecere::sys::OldList * declarations, ecere::com::Class _class, bool isMember, uint * retSize, ecere::com::Class topClass)", AddMembers, module, 2);
+__ecereNameSpace__ecere__com__eSystem_RegisterFunction("AddMembers", "int AddMembers(ecere::sys::OldList * declarations, ecere::com::Class _class, bool isMember, uint * retSize, ecere::com::Class topClass, bool * addedPadding)", AddMembers, module, 2);
__ecereNameSpace__ecere__com__eSystem_RegisterFunction("DeclareStruct", "void DeclareStruct(char * name, bool skipNoHead)", DeclareStruct, module, 2);
__ecereNameSpace__ecere__com__eSystem_RegisterFunction("DeclareProperty", "void DeclareProperty(ecere::com::Property prop, char * setName, char * getName)", DeclareProperty, module, 2);
__ecereNameSpace__ecere__com__eSystem_RegisterFunction("Dereference", "Type Dereference(Type source)", Dereference, module, 1);
__ecereNameSpace__ecere__com__eSystem_RegisterFunction("DeclareFunction", "bool DeclareFunction(ecere::com::GlobalFunction function, char * name)", DeclareFunction, module, 2);
__ecereNameSpace__ecere__com__eSystem_RegisterFunction("DeclareGlobalData", "void DeclareGlobalData(GlobalData data)", DeclareGlobalData, module, 2);
class = __ecereNameSpace__ecere__com__eSystem_RegisterClass(5, "Conversion", 0, sizeof(struct Conversion), 0, 0, 0, module, 2, 1);
-if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application == ((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + 12)))->application && class)
+if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + structSize_Instance)))->application == ((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + structSize_Instance)))->application && class)
__ecereClass_Conversion = class;
__ecereNameSpace__ecere__com__eSystem_RegisterFunction("MatchTypes", "bool MatchTypes(Type source, Type dest, ecere::sys::OldList conversions, ecere::com::Class owningClassSource, ecere::com::Class owningClassDest, bool doConversion, bool enumBaseType, bool acceptReversedParams, bool isConversionExploration)", MatchTypes, module, 1);
__ecereNameSpace__ecere__com__eSystem_RegisterFunction("MatchWithEnums_NameSpace", "bool MatchWithEnums_NameSpace(ecere::com::NameSpace nameSpace, Expression sourceExp, Type dest, char * string, ecere::sys::OldList conversions)", MatchWithEnums_NameSpace, module, 2);
__ecereNameSpace__ecere__com__eSystem_RegisterFunction("ReplaceExpContents", "void ReplaceExpContents(Expression checkedExp, Expression newExp)", ReplaceExpContents, module, 1);
__ecereNameSpace__ecere__com__eSystem_RegisterFunction("ApplyAnyObjectLogic", "void ApplyAnyObjectLogic(Expression e)", ApplyAnyObjectLogic, module, 1);
__ecereNameSpace__ecere__com__eSystem_RegisterFunction("ProcessExpressionType", "void ProcessExpressionType(Expression exp)", ProcessExpressionType, module, 1);
+__ecereNameSpace__ecere__com__eSystem_RegisterFunction("DeclareFunctionUtil", "void DeclareFunctionUtil(String s)", DeclareFunctionUtil, module, 1);
__ecereNameSpace__ecere__com__eSystem_RegisterFunction("ComputeDataTypes", "void ComputeDataTypes(void)", ComputeDataTypes, module, 1);
}