extern void * __ecereNameSpace__ecere__com__eSystem_Renew0(void * memory, unsigned int size);
+extern void __ecereNameSpace__ecere__com__eSystem_Delete(void * memory);
+
extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__sys__BTNode;
struct __ecereNameSpace__ecere__sys__BTNode;
} __attribute__ ((gcc_struct));
struct Statement * compound;
struct Instantiation * instance;
+struct
+{
char * string;
+unsigned int intlString;
+} __attribute__ ((gcc_struct));
struct __ecereNameSpace__ecere__sys__OldList * list;
struct
{
unsigned int addedThis;
unsigned int needCast;
unsigned int thisPtr;
+unsigned int opDestType;
} __attribute__ ((gcc_struct));
extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_TemplateDatatype;
struct __ecereNameSpace__ecere__sys__OldList methods;
struct __ecereNameSpace__ecere__sys__OldList properties;
unsigned int itself;
-unsigned int isRemote;
+int isRemote;
} __attribute__ ((gcc_struct));
extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Symbol;
char * defaultProperty;
unsigned int comRedefinition;
int count;
-unsigned int isRemote;
+int isRemote;
unsigned int internalDecl;
void * data;
unsigned int computeSize;
extern long long __ecereNameSpace__ecere__com__eClass_GetProperty(struct __ecereNameSpace__ecere__com__Class * _class, char * name);
+extern void __ecereNameSpace__ecere__com__eInstance_FireSelfWatchers(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property);
+
extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__Instance;
struct __ecereNameSpace__ecere__com__Instance
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, 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, BOOL = 367, _BOOL = 368, _COMPLEX = 369, _IMAGINARY = 370, RESTRICT = 371
+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, BOOL = 367, _BOOL = 368, _COMPLEX = 369, _IMAGINARY = 370, RESTRICT = 371, THREAD = 372
};
typedef union YYSTYPE
struct Location loc;
char * command;
struct Expression * expression;
+struct Identifier * symbolic;
} __attribute__ ((gcc_struct));
extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Attribute;
struct Statement * setStmt;
struct Statement * issetStmt;
struct Symbol * symbol;
-unsigned int conversion;
-unsigned int isWatchable;
struct Expression * category;
+struct
+{
+unsigned int conversion : 1;
+unsigned int isWatchable : 1;
+unsigned int isDBProp : 1;
+} __attribute__ ((gcc_struct));
} __attribute__ ((gcc_struct));
extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_PropertyWatch;
unsigned int internalValueCounter;
+extern unsigned int outputLineNumbers;
+
extern void OutputExpression(struct Expression * exp, struct __ecereNameSpace__ecere__com__Instance * f);
extern size_t strlen(const char * );
{
struct __ecereNameSpace__ecere__com__Instance * f = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass___ecereNameSpace__ecere__sys__TempFile);
int count;
+unsigned int backOutputLineNumbers = outputLineNumbers;
+outputLineNumbers = 0x0;
if(exp)
OutputExpression(exp, f);
((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, int pos, int mode))__extension__ ({
})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Read])(f, string + count, 1, 1023);
string[count] = '\0';
(__ecereNameSpace__ecere__com__eInstance_DecRef(f), f = 0);
+outputLineNumbers = backOutputLineNumbers;
}
}
extern int __ecereNameSpace__ecere__com__GetRuntimePlatform(void);
+extern char * strcat(char * , const char * );
+
extern char * __ecereNameSpace__ecere__sys__CopyString(char * string);
char * PrintInt(long long result)
{
char temp[100];
-if(result > (((long long)0x7fffffffffffffffLL)))
-sprintf(temp, ((__ecereNameSpace__ecere__com__GetRuntimePlatform() == 1) ? "0x%I64XLL" : "0x%llXLL"), result);
+if(result > (((int)0x7fffffff)))
+sprintf(temp, ((__ecereNameSpace__ecere__com__GetRuntimePlatform() == 1) ? "0x%I64X" : "0x%llX"), result);
else
-sprintf(temp, ((__ecereNameSpace__ecere__com__GetRuntimePlatform() == 1) ? "%I64dLL" : "%lldLL"), result);
+sprintf(temp, ((__ecereNameSpace__ecere__com__GetRuntimePlatform() == 1) ? "%I64d" : "%lld"), result);
+if(result > (((int)0x7fffffff)) || result < (((int)0x80000000)))
+strcat(temp, "LL");
return __ecereNameSpace__ecere__sys__CopyString(temp);
}
char temp[100];
if(result > (0xffffffff))
-sprintf(temp, ((__ecereNameSpace__ecere__com__GetRuntimePlatform() == 1) ? "0x%I64XLL" : "0x%llXLL"), result);
+sprintf(temp, ((__ecereNameSpace__ecere__com__GetRuntimePlatform() == 1) ? "0x%I64X" : "0x%llX"), result);
else
sprintf(temp, ((__ecereNameSpace__ecere__com__GetRuntimePlatform() == 1) ? "0x%I64X" : "0x%llX"), result);
+if(result > (0xffffffff))
+strcat(temp, "LL");
return __ecereNameSpace__ecere__sys__CopyString(temp);
}
return __ecereNameSpace__ecere__sys__CopyString(temp);
}
+extern char * strcpy(char * , const char * );
+
+extern unsigned int (* __ecereProp_float_Get_isInf)(float this);
+
+extern struct __ecereNameSpace__ecere__com__Property ** __ecereProp_float_isInf;
+
+extern int (* __ecereProp_float_Get_signBit)(float this);
+
+extern struct __ecereNameSpace__ecere__com__Property ** __ecereProp_float_signBit;
+
+extern unsigned int (* __ecereProp_float_Get_isNan)(float this);
+
+extern struct __ecereNameSpace__ecere__com__Property ** __ecereProp_float_isNan;
+
char * PrintFloat(float result)
{
char temp[350];
+if(__ecereProp_float_Get_isInf(result))
+{
+if(__ecereProp_float_Get_signBit(result))
+strcpy(temp, "-inf");
+else
+strcpy(temp, "inf");
+}
+else if(__ecereProp_float_Get_isNan(result))
+{
+if(__ecereProp_float_Get_signBit(result))
+strcpy(temp, "-nan");
+else
+strcpy(temp, "nan");
+}
+else
sprintf(temp, "%.16ff", result);
return __ecereNameSpace__ecere__sys__CopyString(temp);
}
+extern unsigned int (* __ecereProp_double_Get_isInf)(double this);
+
+extern struct __ecereNameSpace__ecere__com__Property ** __ecereProp_double_isInf;
+
+extern int (* __ecereProp_double_Get_signBit)(double this);
+
+extern struct __ecereNameSpace__ecere__com__Property ** __ecereProp_double_signBit;
+
+extern unsigned int (* __ecereProp_double_Get_isNan)(double this);
+
+extern struct __ecereNameSpace__ecere__com__Property ** __ecereProp_double_isNan;
+
char * PrintDouble(double result)
{
char temp[350];
+if(__ecereProp_double_Get_isInf(result))
+{
+if(__ecereProp_double_Get_signBit(result))
+strcpy(temp, "-inf");
+else
+strcpy(temp, "inf");
+}
+else if(__ecereProp_double_Get_isNan(result))
+{
+if(__ecereProp_double_Get_signBit(result))
+strcpy(temp, "-nan");
+else
+strcpy(temp, "nan");
+}
+else
sprintf(temp, "%.16f", result);
return __ecereNameSpace__ecere__sys__CopyString(temp);
}
struct OpTable ops;
} __attribute__ ((gcc_struct));
+unsigned int GetOpInt(struct Operand * op2, int * value2)
+{
+if(op2->kind == 3 && op2->type->isSigned)
+*value2 = op2->i;
+else if(op2->kind == 3)
+*value2 = (int)op2->ui;
+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)
+*value2 = (int)op2->us;
+else if(op2->kind == 1 && op2->type->isSigned)
+*value2 = (int)op2->c;
+else if(op2->kind == 24 || op2->kind == 1)
+*value2 = (int)op2->uc;
+else if(op2->kind == 6)
+*value2 = (int)op2->f;
+else if(op2->kind == 7)
+*value2 = (int)op2->d;
+else if(op2->kind == 13)
+*value2 = (int)op2->ui64;
+else
+return 0x0;
+return 0x1;
+}
+
struct Operand GetOperand(struct Expression * exp);
unsigned int GetInt(struct Expression * exp, int * value2)
{
struct Operand op2 = GetOperand(exp);
-if(op2.kind == 3 && op2.type->isSigned)
-*value2 = op2.i;
-else if(op2.kind == 3)
-*value2 = (int)op2.ui;
-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)
-*value2 = (int)op2.us;
-else if(op2.kind == 1 && op2.type->isSigned)
-*value2 = (int)op2.c;
-else if(op2.kind == 24 || op2.kind == 1)
-*value2 = (int)op2.uc;
-else if(op2.kind == 6)
-*value2 = (int)op2.f;
-else if(op2.kind == 7)
-*value2 = (int)op2.d;
-else if(op2.kind == 13)
-*value2 = (int)op2.ui64;
+return GetOpInt(&op2, value2);
+}
+
+unsigned int GetOpUInt(struct Operand * op2, unsigned int * value2)
+{
+if(op2->kind == 3 && op2->type->isSigned)
+*value2 = (unsigned int)op2->i;
+else if(op2->kind == 3)
+*value2 = op2->ui;
+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)
+*value2 = (unsigned int)op2->us;
+else if(op2->kind == 1 && op2->type->isSigned)
+*value2 = (unsigned int)op2->c;
+else if(op2->kind == 24 || op2->kind == 1)
+*value2 = (unsigned int)op2->uc;
+else if(op2->kind == 6)
+*value2 = (unsigned int)op2->f;
+else if(op2->kind == 7)
+*value2 = (unsigned int)op2->d;
+else if(op2->kind == 13)
+*value2 = (unsigned int)op2->ui64;
else
return 0x0;
return 0x1;
{
struct Operand op2 = GetOperand(exp);
-if(op2.kind == 3 && op2.type->isSigned)
-*value2 = (unsigned int)op2.i;
-else if(op2.kind == 3)
-*value2 = op2.ui;
-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)
-*value2 = (unsigned int)op2.us;
-else if(op2.kind == 1 && op2.type->isSigned)
-*value2 = (unsigned int)op2.c;
-else if(op2.kind == 24 || op2.kind == 1)
-*value2 = (unsigned int)op2.uc;
-else if(op2.kind == 6)
-*value2 = (unsigned int)op2.f;
-else if(op2.kind == 7)
-*value2 = (unsigned int)op2.d;
-else if(op2.kind == 13)
-*value2 = (unsigned int)op2.ui64;
+return GetOpUInt(&op2, value2);
+}
+
+unsigned int GetOpInt64(struct Operand * op2, long long * value2)
+{
+if(op2->kind == 3 && op2->type->isSigned)
+*value2 = (long long)op2->i;
+else if(op2->kind == 3)
+*value2 = (long long)op2->ui;
+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)
+*value2 = (long long)op2->us;
+else if(op2->kind == 1 && op2->type->isSigned)
+*value2 = (long long)op2->c;
+else if(op2->kind == 24 || op2->kind == 1)
+*value2 = (long long)op2->uc;
+else if(op2->kind == 6)
+*value2 = (long long)op2->f;
+else if(op2->kind == 7)
+*value2 = (long long)op2->d;
+else if(op2->kind == 13)
+*value2 = (long long)op2->ui64;
else
return 0x0;
return 0x1;
{
struct Operand op2 = GetOperand(exp);
-if(op2.kind == 3 && op2.type->isSigned)
-*value2 = (long long)op2.i;
-else if(op2.kind == 3)
-*value2 = (long long)op2.ui;
-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)
-*value2 = (long long)op2.us;
-else if(op2.kind == 1 && op2.type->isSigned)
-*value2 = (long long)op2.c;
-else if(op2.kind == 24 || op2.kind == 1)
-*value2 = (long long)op2.uc;
-else if(op2.kind == 6)
-*value2 = (long long)op2.f;
-else if(op2.kind == 7)
-*value2 = (long long)op2.d;
-else if(op2.kind == 13)
-*value2 = (long long)op2.ui64;
+return GetOpInt64(&op2, value2);
+}
+
+unsigned int GetOpUInt64(struct Operand * op2, uint64 * value2)
+{
+if(op2->kind == 3 && op2->type->isSigned)
+*value2 = (uint64)op2->i;
+else if(op2->kind == 3)
+*value2 = (uint64)op2->ui;
+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)
+*value2 = (uint64)op2->us;
+else if(op2->kind == 1 && op2->type->isSigned)
+*value2 = (uint64)op2->c;
+else if(op2->kind == 24 || op2->kind == 1)
+*value2 = (uint64)op2->uc;
+else if(op2->kind == 6)
+*value2 = (uint64)op2->f;
+else if(op2->kind == 7)
+*value2 = (uint64)op2->d;
+else if(op2->kind == 13)
+*value2 = op2->ui64;
else
return 0x0;
return 0x1;
{
struct Operand op2 = GetOperand(exp);
-if(op2.kind == 3 && op2.type->isSigned)
-*value2 = (uint64)op2.i;
-else if(op2.kind == 3)
-*value2 = (uint64)op2.ui;
-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)
-*value2 = (uint64)op2.us;
-else if(op2.kind == 1 && op2.type->isSigned)
-*value2 = (uint64)op2.c;
-else if(op2.kind == 24 || op2.kind == 1)
-*value2 = (uint64)op2.uc;
-else if(op2.kind == 6)
-*value2 = (uint64)op2.f;
-else if(op2.kind == 7)
-*value2 = (uint64)op2.d;
-else if(op2.kind == 13)
-*value2 = op2.ui64;
+return GetOpUInt64(&op2, value2);
+}
+
+unsigned int GetOpIntPtr(struct Operand * op2, intptr_t * value2)
+{
+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 == 24 || 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;
{
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 == 24 || 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;
+return GetOpIntPtr(&op2, value2);
+}
+
+unsigned int GetOpUIntPtr(struct Operand * op2, uintptr_t * value2)
+{
+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 == 24 || 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;
{
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 == 24 || 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;
+return GetOpUIntPtr(&op2, value2);
+}
+
+unsigned int GetOpIntSize(struct Operand * op2, ssize_t * value2)
+{
+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 == 24 || 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;
{
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 == 24 || 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;
+return GetOpIntSize(&op2, value2);
+}
+
+unsigned int GetOpUIntSize(struct Operand * op2, size_t * value2)
+{
+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 == 24 || 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;
{
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 == 24 || 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;
+return GetOpUIntSize(&op2, value2);
+}
+
+unsigned int GetOpShort(struct Operand * op2, short * value2)
+{
+if(op2->kind == 3 && op2->type->isSigned)
+*value2 = (short)op2->i;
+else if(op2->kind == 3)
+*value2 = (short)op2->ui;
+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)
+*value2 = (short)op2->us;
+else if(op2->kind == 1 && op2->type->isSigned)
+*value2 = (short)op2->c;
+else if(op2->kind == 24 || op2->kind == 1)
+*value2 = (short)op2->uc;
+else if(op2->kind == 6)
+*value2 = (short)op2->f;
+else if(op2->kind == 7)
+*value2 = (short)op2->d;
+else if(op2->kind == 13)
+*value2 = (short)op2->ui64;
else
return 0x0;
return 0x1;
{
struct Operand op2 = GetOperand(exp);
-if(op2.kind == 3 && op2.type->isSigned)
-*value2 = (short)op2.i;
-else if(op2.kind == 3)
-*value2 = (short)op2.ui;
-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)
-*value2 = (short)op2.us;
-else if(op2.kind == 1 && op2.type->isSigned)
-*value2 = (short)op2.c;
-else if(op2.kind == 24 || op2.kind == 1)
-*value2 = (short)op2.uc;
-else if(op2.kind == 6)
-*value2 = (short)op2.f;
-else if(op2.kind == 7)
-*value2 = (short)op2.d;
-else if(op2.kind == 13)
-*value2 = (short)op2.ui64;
+return GetOpShort(&op2, value2);
+}
+
+unsigned int GetOpUShort(struct Operand * op2, unsigned short * value2)
+{
+if(op2->kind == 3 && op2->type->isSigned)
+*value2 = (unsigned short)op2->i;
+else if(op2->kind == 3)
+*value2 = (unsigned short)op2->ui;
+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)
+*value2 = op2->us;
+else if(op2->kind == 1 && op2->type->isSigned)
+*value2 = (unsigned short)op2->c;
+else if(op2->kind == 24 || op2->kind == 1)
+*value2 = (unsigned short)op2->uc;
+else if(op2->kind == 6)
+*value2 = (unsigned short)op2->f;
+else if(op2->kind == 7)
+*value2 = (unsigned short)op2->d;
+else if(op2->kind == 13)
+*value2 = (unsigned short)op2->ui64;
else
return 0x0;
return 0x1;
{
struct Operand op2 = GetOperand(exp);
-if(op2.kind == 3 && op2.type->isSigned)
-*value2 = (unsigned short)op2.i;
-else if(op2.kind == 3)
-*value2 = (unsigned short)op2.ui;
-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)
-*value2 = op2.us;
-else if(op2.kind == 1 && op2.type->isSigned)
-*value2 = (unsigned short)op2.c;
-else if(op2.kind == 24 || op2.kind == 1)
-*value2 = (unsigned short)op2.uc;
-else if(op2.kind == 6)
-*value2 = (unsigned short)op2.f;
-else if(op2.kind == 7)
-*value2 = (unsigned short)op2.d;
-else if(op2.kind == 13)
-*value2 = (unsigned short)op2.ui64;
+return GetOpUShort(&op2, value2);
+}
+
+unsigned int GetOpChar(struct Operand * op2, char * value2)
+{
+if(op2->kind == 3 && op2->type->isSigned)
+*value2 = (char)op2->i;
+else if(op2->kind == 3)
+*value2 = (char)op2->ui;
+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)
+*value2 = (char)op2->us;
+else if(op2->kind == 1 && op2->type->isSigned)
+*value2 = op2->c;
+else if(op2->kind == 24 || op2->kind == 1)
+*value2 = (char)op2->uc;
+else if(op2->kind == 6)
+*value2 = (char)op2->f;
+else if(op2->kind == 7)
+*value2 = (char)op2->d;
+else if(op2->kind == 13)
+*value2 = (char)op2->ui64;
else
return 0x0;
return 0x1;
{
struct Operand op2 = GetOperand(exp);
-if(op2.kind == 3 && op2.type->isSigned)
-*value2 = (char)op2.i;
-else if(op2.kind == 3)
-*value2 = (char)op2.ui;
-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)
-*value2 = (char)op2.us;
-else if(op2.kind == 1 && op2.type->isSigned)
-*value2 = op2.c;
-else if(op2.kind == 24 || op2.kind == 1)
-*value2 = (char)op2.uc;
-else if(op2.kind == 6)
-*value2 = (char)op2.f;
-else if(op2.kind == 7)
-*value2 = (char)op2.d;
-else if(op2.kind == 13)
-*value2 = (char)op2.ui64;
+return GetOpChar(&op2, value2);
+}
+
+unsigned int GetOpUChar(struct Operand * op2, unsigned char * value2)
+{
+if(op2->kind == 3 && op2->type->isSigned)
+*value2 = (unsigned char)op2->i;
+else if(op2->kind == 3)
+*value2 = (unsigned char)op2->ui;
+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)
+*value2 = (unsigned char)op2->us;
+else if(op2->kind == 1 && op2->type->isSigned)
+*value2 = (unsigned char)op2->c;
+else if(op2->kind == 24 || op2->kind == 1)
+*value2 = op2->uc;
+else if(op2->kind == 6)
+*value2 = (unsigned char)op2->f;
+else if(op2->kind == 7)
+*value2 = (unsigned char)op2->d;
+else if(op2->kind == 13)
+*value2 = (unsigned char)op2->ui64;
else
return 0x0;
return 0x1;
{
struct Operand op2 = GetOperand(exp);
-if(op2.kind == 3 && op2.type->isSigned)
-*value2 = (unsigned char)op2.i;
-else if(op2.kind == 3)
-*value2 = (unsigned char)op2.ui;
-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)
-*value2 = (unsigned char)op2.us;
-else if(op2.kind == 1 && op2.type->isSigned)
-*value2 = (unsigned char)op2.c;
-else if(op2.kind == 24 || op2.kind == 1)
-*value2 = op2.uc;
-else if(op2.kind == 6)
-*value2 = (unsigned char)op2.f;
-else if(op2.kind == 7)
-*value2 = (unsigned char)op2.d;
-else if(op2.kind == 13)
-*value2 = (unsigned char)op2.ui64;
+return GetOpUChar(&op2, value2);
+}
+
+unsigned int GetOpFloat(struct Operand * op2, float * value2)
+{
+if(op2->kind == 3 && op2->type->isSigned)
+*value2 = (float)(float)op2->i;
+else if(op2->kind == 3)
+*value2 = (float)(float)op2->ui;
+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)
+*value2 = (float)(float)op2->us;
+else if(op2->kind == 1 && op2->type->isSigned)
+*value2 = (float)(float)op2->c;
+else if(op2->kind == 24 || op2->kind == 1)
+*value2 = (float)(float)op2->uc;
+else if(op2->kind == 6)
+*value2 = (float)op2->f;
+else if(op2->kind == 7)
+*value2 = (float)op2->d;
+else if(op2->kind == 13)
+*value2 = (float)(float)op2->ui64;
else
return 0x0;
return 0x1;
{
struct Operand op2 = GetOperand(exp);
-if(op2.kind == 3 && op2.type->isSigned)
-*value2 = (float)(float)op2.i;
-else if(op2.kind == 3)
-*value2 = (float)(float)op2.ui;
-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)
-*value2 = (float)(float)op2.us;
-else if(op2.kind == 1 && op2.type->isSigned)
-*value2 = (float)(float)op2.c;
-else if(op2.kind == 24 || op2.kind == 1)
-*value2 = (float)(float)op2.uc;
-else if(op2.kind == 6)
-*value2 = (float)op2.f;
-else if(op2.kind == 7)
-*value2 = (float)op2.d;
-else if(op2.kind == 13)
-*value2 = (float)(float)op2.ui64;
+return GetOpFloat(&op2, value2);
+}
+
+unsigned int GetOpDouble(struct Operand * op2, double * value2)
+{
+if(op2->kind == 3 && op2->type->isSigned)
+*value2 = (double)(double)op2->i;
+else if(op2->kind == 3)
+*value2 = (double)(double)op2->ui;
+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)
+*value2 = (double)(double)op2->us;
+else if(op2->kind == 1 && op2->type->isSigned)
+*value2 = (double)(double)op2->c;
+else if(op2->kind == 24 || op2->kind == 1)
+*value2 = (double)(double)op2->uc;
+else if(op2->kind == 6)
+*value2 = (double)op2->f;
+else if(op2->kind == 7)
+*value2 = (double)op2->d;
+else if(op2->kind == 13)
+*value2 = (double)(double)op2->ui64;
else
return 0x0;
return 0x1;
{
struct Operand op2 = GetOperand(exp);
-if(op2.kind == 3 && op2.type->isSigned)
-*value2 = (double)(double)op2.i;
-else if(op2.kind == 3)
-*value2 = (double)(double)op2.ui;
-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)
-*value2 = (double)(double)op2.us;
-else if(op2.kind == 1 && op2.type->isSigned)
-*value2 = (double)(double)op2.c;
-else if(op2.kind == 24 || op2.kind == 1)
-*value2 = (double)(double)op2.uc;
-else if(op2.kind == 6)
-*value2 = (double)op2.f;
-else if(op2.kind == 7)
-*value2 = (double)op2.d;
-else if(op2.kind == 13)
-*value2 = (double)(double)op2.ui64;
-else
-return 0x0;
-return 0x1;
+return GetOpDouble(&op2, value2);
}
void ComputeExpression(struct Expression * exp);
extern void Compiler_Error(char * format, ...);
-extern char * __ecereNameSpace__ecere__GetTranslatedString(struct __ecereNameSpace__ecere__com__Instance * module, char * string, char * stringAndContext);
-
-extern struct __ecereNameSpace__ecere__com__Instance * __thisModule;
+extern char * __ecereNameSpace__ecere__GetTranslatedString(char * name, char * string, char * stringAndContext);
int ComputeTypeSize(struct Type * type)
{
yylloc = type->arraySizeExp->loc;
if(inCompiler)
PrintExpression(type->arraySizeExp, expression);
-Compiler_Error(__ecereNameSpace__ecere__GetTranslatedString(__thisModule, "Array size not constant int (%s)\n", (((void *)0))), expression);
+Compiler_Error(__ecereNameSpace__ecere__GetTranslatedString("ec", "Array size not constant int (%s)\n", (((void *)0))), expression);
yylloc = oldLoc;
}
GetInt(type->arraySizeExp, &type->arraySize);
extern struct Declaration * MkDeclaration(struct __ecereNameSpace__ecere__sys__OldList * specifiers, struct __ecereNameSpace__ecere__sys__OldList * initDeclarators);
-extern char * strcpy(char * , const char * );
-
extern void MangleClassName(char * className);
extern void DeclareClass(struct Symbol * classSym, char * className);
struct __ecereNameSpace__ecere__sys__OldList * specifiers, * declarators;
struct __ecereNameSpace__ecere__sys__OldList * declarations = (((void *)0));
char structName[1024];
+struct Specifier * spec = (((void *)0));
external = (classSym->registered && classSym->registered->type == 1) ? classSym->pointerExternal : classSym->structExternal;
classSym->declaring++;
DeclareMembers(classSym->registered, 0x0);
structName[0] = (char)0;
FullClassNameCat(structName, name, 0x0);
-if(!skipNoHead)
+if(external && external->declaration && external->declaration->specifiers)
+{
+for(spec = (*external->declaration->specifiers).first; spec; spec = spec->next)
+{
+if(spec->type == 3 || spec->type == 4)
+break;
+}
+}
+if(!skipNoHead && (!spec || !spec->definitions))
{
unsigned int addedPadding = 0x0;
}
if(skipNoHead || declarations)
{
-if(external && external->declaration)
+if(spec)
{
-((struct Specifier *)(*external->declaration->specifiers).first)->definitions = declarations;
+if(declarations)
+spec->definitions = declarations;
if(curExternal && curExternal->symbol && curExternal->symbol->idCode < classSym->id)
{
if(classSym->structExternal)
}
}
-extern char * strcat(char * , const char * );
-
extern struct ModuleImport * FindModule(struct __ecereNameSpace__ecere__com__Instance * moduleToFind);
extern struct ModuleImport * mainModule;
__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 + structSize_Instance)))->importType != 1)
+if((prop->_class->module != privateModule || !strcmp(prop->_class->name, "float") || !strcmp(prop->_class->name, "double")) && ((struct __ecereNameSpace__ecere__com__Module *)(((char *)prop->_class->module + 24)))->importType != 1)
dllImport = 0x1;
}
if(!symbol->type)
source->refCount++;
}
else
-Compiler_Error(__ecereNameSpace__ecere__GetTranslatedString(__thisModule, "cannot dereference type\n", (((void *)0))));
+Compiler_Error(__ecereNameSpace__ecere__GetTranslatedString("ec", "cannot dereference type\n", (((void *)0))));
}
return type;
}
char * string = PrintHexUInt64(arg.expression.ui64);
exp = MkExpCast(MkTypeName(specs, decl), MkExpConstant(string));
+(__ecereNameSpace__ecere__com__eSystem_Delete(string), string = 0);
ProcessExpressionType(exp);
ComputeExpression(exp);
expString[0] = '\0';
expString[0] = '\0';
PrintExpression(member->initializer->exp, expString);
__ecereNameSpace__ecere__sys__ChangeCh(expString, '\n', ' ');
-Compiler_Error(__ecereNameSpace__ecere__GetTranslatedString(__thisModule, "unresolved symbol used as an instance method %s\n", (((void *)0))), expString);
+Compiler_Error(__ecereNameSpace__ecere__GetTranslatedString("ec", "unresolved symbol used as an instance method %s\n", (((void *)0))), expString);
}
}
else if(!MatchTypes(member->initializer->exp->expType, type, (((void *)0)), (((void *)0)), _class, 0x1, 0x1, 0x0, 0x0))
{
-Compiler_Error(__ecereNameSpace__ecere__GetTranslatedString(__thisModule, "incompatible instance method %s\n", (((void *)0))), ident->string);
+Compiler_Error(__ecereNameSpace__ecere__GetTranslatedString("ec", "incompatible instance method %s\n", (((void *)0))), ident->string);
}
}
else if(member->initializer)
{
if(method)
{
-Compiler_Error(__ecereNameSpace__ecere__GetTranslatedString(__thisModule, "couldn't find virtual method %s in class %s\n", (((void *)0))), ident->string, _class->fullName);
+Compiler_Error(__ecereNameSpace__ecere__GetTranslatedString("ec", "couldn't find virtual method %s in class %s\n", (((void *)0))), ident->string, _class->fullName);
}
else if(_class)
{
-Compiler_Error(__ecereNameSpace__ecere__GetTranslatedString(__thisModule, "couldn't find member %s in class %s\n", (((void *)0))), ident->string, _class->fullName);
+Compiler_Error(__ecereNameSpace__ecere__GetTranslatedString("ec", "couldn't find member %s in class %s\n", (((void *)0))), ident->string, _class->fullName);
if(inCompiler)
__ecereNameSpace__ecere__com__eClass_AddDataMember(_class, ident->string, "int", 0, 0, 1);
}
}
else if(_class)
-Compiler_Error(__ecereNameSpace__ecere__GetTranslatedString(__thisModule, "too many initializers for instantiation of class %s\n", (((void *)0))), _class->fullName);
+Compiler_Error(__ecereNameSpace__ecere__GetTranslatedString("ec", "too many initializers for instantiation of class %s\n", (((void *)0))), _class->fullName);
}
}
}
}
else if(classSym)
{
-Compiler_Error(__ecereNameSpace__ecere__GetTranslatedString(__thisModule, "couldn't find virtual method %s in class %s\n", (((void *)0))), unmangled, classSym->string);
+Compiler_Error(__ecereNameSpace__ecere__GetTranslatedString("ec", "couldn't find virtual method %s in class %s\n", (((void *)0))), unmangled, classSym->string);
}
}
createdExternal = ProcessClassFunction(classSym ? classSym->registered : (((void *)0)), members->function, ast, afterExternal, 0x1);
if(!method->dataType->dllExport)
{
imported = 0x1;
-if(method->_class->module != privateModule && ((struct __ecereNameSpace__ecere__com__Module *)(((char *)method->_class->module + structSize_Instance)))->importType != 1)
+if((method->_class->module != privateModule || !strcmp(method->_class->name, "float") || !strcmp(method->_class->name, "double")) && ((struct __ecereNameSpace__ecere__com__Module *)(((char *)method->_class->module + 24)))->importType != 1)
dllImport = 0x1;
}
}
if(!convert->dataType)
convert->dataType = ProcessTypeString(convert->dataTypeString, 0x0);
-if(MatchTypes(convert->dataType, dest, conversions, (((void *)0)), (((void *)0)), 0x0, 0x1, 0x0, 0x1))
+if((!isConversionExploration || convert->dataType->kind == 8 || !strcmp(_class->name, "String")) && MatchTypes(convert->dataType, dest, conversions, (((void *)0)), (((void *)0)), (convert->dataType->kind == 8 && !strcmp(convert->dataTypeString, "String")) ? 0x1 : 0x0, convert->dataType->kind == 8, 0x0, 0x1))
{
if(!conversions && !convert->Get)
return 0x1;
dest->_class->registered->dataType = ProcessTypeString(dest->_class->registered->dataTypeString, 0x0);
if(dest->_class->registered->dataType->kind == 8 || source->truth || dest->truth)
{
-if(MatchTypes(source, dest->_class->registered->dataType, conversions, (((void *)0)), (((void *)0)), 0x1, 0x1, 0x0, 0x0))
+if(MatchTypes(source, dest->_class->registered->dataType, conversions, (((void *)0)), (((void *)0)), 0x1, dest->_class->registered->dataType->kind == 8, 0x0, 0x0))
{
return 0x1;
}
if(!convert->dataType)
convert->dataType = ProcessTypeString(convert->dataTypeString, 0x0);
-if(convert->dataType != source && MatchTypes(convert->dataType, dest, conversions, (((void *)0)), (((void *)0)), 0x1, 0x1, 0x0, 0x1))
+if(convert->dataType != source && (!isConversionExploration || convert->dataType->kind == 8 || !strcmp(_class->name, "String")) && MatchTypes(convert->dataType, dest, conversions, (((void *)0)), (((void *)0)), convert->dataType->kind == 8, convert->dataType->kind == 8, 0x0, 0x1))
{
if(!conversions && !convert->Get)
return 0x1;
{
if(!source->_class->registered->dataType)
source->_class->registered->dataType = ProcessTypeString(source->_class->registered->dataTypeString, 0x0);
-if(MatchTypes(source->_class->registered->dataType, dest, conversions, (((void *)0)), (((void *)0)), 0x1, 0x1, 0x0, 0x0))
+if(!isConversionExploration || source->_class->registered->dataType->kind == 8 || !strcmp(source->_class->registered->name, "String"))
{
+if(MatchTypes(source->_class->registered->dataType, dest, conversions, (((void *)0)), (((void *)0)), source->_class->registered->dataType->kind == 8, source->_class->registered->dataType->kind == 8, 0x0, 0x0))
+return 0x1;
+else if(MatchTypes(dest, source->_class->registered->dataType, (((void *)0)), (((void *)0)), (((void *)0)), 0x0, 0x0, 0x0, 0x0))
return 0x1;
}
}
return 0x1;
else if(source->kind == 15 && (dest->kind == 3 || dest->kind == 2 || dest->kind == 1 || source->kind == 24 || 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 == 24 || source->kind == 5 || source->kind == 4 || source->kind == 22 || source->kind == 23))
+else if(dest->kind == 15 && !isConversionExploration && (source->kind == 3 || source->kind == 2 || source->kind == 1 || source->kind == 24 || 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 || (!(paramDest->kind == 13 && paramDest->type && paramDest->type->kind == 0) && (paramDest->kind != 8 || !__ecereNameSpace__ecere__com__eClass_IsDerived(source->thisClass ? source->thisClass->registered : owningClassSource, paramDest->_class->registered))))
{
if(paramDest && paramDest->kind == 8)
-Compiler_Error(__ecereNameSpace__ecere__GetTranslatedString(__thisModule, "method class must be derived from %s\n", (((void *)0))), paramDest->_class->string);
+Compiler_Error(__ecereNameSpace__ecere__GetTranslatedString("ec", "method class must be derived from %s\n", (((void *)0))), paramDest->_class->string);
else
-Compiler_Error(__ecereNameSpace__ecere__GetTranslatedString(__thisModule, "method class should not take an object\n", (((void *)0))));
+Compiler_Error(__ecereNameSpace__ecere__GetTranslatedString("ec", "method class should not take an object\n", (((void *)0))));
return 0x0;
}
paramDest = paramDest->next;
{
if(!paramSource || paramSource->kind != 8 || !__ecereNameSpace__ecere__com__eClass_IsDerived(paramSource->_class->registered, dest->thisClass->registered))
{
-Compiler_Error(__ecereNameSpace__ecere__GetTranslatedString(__thisModule, "method class must be derived from %s\n", (((void *)0))), dest->thisClass->string);
+Compiler_Error(__ecereNameSpace__ecere__GetTranslatedString("ec", "method class must be derived from %s\n", (((void *)0))), dest->thisClass->string);
return 0x0;
}
}
if(!paramSource || paramSource->kind != 8 || (owningClassDest && !__ecereNameSpace__ecere__com__eClass_IsDerived(paramSource->_class->registered, owningClassDest)))
{
if(owningClassDest)
-Compiler_Error(__ecereNameSpace__ecere__GetTranslatedString(__thisModule, "%s expected to be derived from method class\n", (((void *)0))), owningClassDest->fullName);
+Compiler_Error(__ecereNameSpace__ecere__GetTranslatedString("ec", "%s expected to be derived from method class\n", (((void *)0))), owningClassDest->fullName);
else
-Compiler_Error(__ecereNameSpace__ecere__GetTranslatedString(__thisModule, "overriding class expected to be derived from method class\n", (((void *)0))));
+Compiler_Error(__ecereNameSpace__ecere__GetTranslatedString("ec", "overriding class expected to be derived from method class\n", (((void *)0))));
return 0x0;
}
}
{
if(!__ecereNameSpace__ecere__com__eClass_IsDerived(source->thisClass ? source->thisClass->registered : owningClassSource, dest->thisClass->registered))
{
-Compiler_Error(__ecereNameSpace__ecere__GetTranslatedString(__thisModule, "method class must be derived from %s\n", (((void *)0))), dest->thisClass->string);
+Compiler_Error(__ecereNameSpace__ecere__GetTranslatedString("ec", "method class must be derived from %s\n", (((void *)0))), dest->thisClass->string);
return 0x0;
}
}
{
if(source->thisClass && source->thisClass->registered && owningClassDest && !__ecereNameSpace__ecere__com__eClass_IsDerived(source->thisClass->registered, owningClassDest))
{
-Compiler_Error(__ecereNameSpace__ecere__GetTranslatedString(__thisModule, "%s expected to be derived from method class\n", (((void *)0))), source->thisClass->registered->fullName);
+Compiler_Error(__ecereNameSpace__ecere__GetTranslatedString("ec", "%s expected to be derived from method class\n", (((void *)0))), source->thisClass->registered->fullName);
return 0x0;
}
}
}
if(!MatchTypes(source->returnType, dest->returnType, (((void *)0)), (((void *)0)), (((void *)0)), 0x1, 0x1, 0x0, 0x0))
{
-Compiler_Warning(__ecereNameSpace__ecere__GetTranslatedString(__thisModule, "incompatible return type for function\n", (((void *)0))));
+Compiler_Warning(__ecereNameSpace__ecere__GetTranslatedString("ec", "incompatible return type for function\n", (((void *)0))));
return 0x0;
}
for(; paramDest; paramDest = paramDest->next)
{
if(!paramSource)
{
-Compiler_Error(__ecereNameSpace__ecere__GetTranslatedString(__thisModule, "not enough parameters\n", (((void *)0))));
+Compiler_Error(__ecereNameSpace__ecere__GetTranslatedString("ec", "not enough parameters\n", (((void *)0))));
return 0x0;
}
{
type[0] = (char)0;
PrintType(paramDest, type, 0x0, 0x1);
-Compiler_Warning(__ecereNameSpace__ecere__GetTranslatedString(__thisModule, "incompatible parameter %s (expected %s)\n", (((void *)0))), paramSource->name, type);
+Compiler_Warning(__ecereNameSpace__ecere__GetTranslatedString("ec", "incompatible parameter %s (expected %s)\n", (((void *)0))), paramSource->name, type);
if(paramDestType != paramDest)
FreeType(paramDestType);
return 0x0;
}
if(paramSource)
{
-Compiler_Error(__ecereNameSpace__ecere__GetTranslatedString(__thisModule, "too many parameters\n", (((void *)0))));
+Compiler_Error(__ecereNameSpace__ecere__GetTranslatedString("ec", "too many parameters\n", (((void *)0))));
return 0x0;
}
return 0x1;
return 0x0;
}
+extern struct Expression * CopyExpression(struct Expression * exp);
+
extern unsigned long strtoul(const char * nptr, char * * endptr, int base);
void ReadString(char * output, char * string);
unsigned int MatchTypeExpression(struct Expression * sourceExp, struct Type * dest, struct __ecereNameSpace__ecere__sys__OldList * conversions, unsigned int skipUnitBla)
{
-struct Type * source = sourceExp->expType;
+struct Type * source;
struct Type * realDest = dest;
struct Type * backupSourceExpType = (((void *)0));
+struct Expression * computedExp = sourceExp;
+dest->refCount++;
+if(sourceExp->isConstant && sourceExp->type != 2 && sourceExp->type != 0 && sourceExp->type != 11 && dest->kind == 8 && dest->_class && dest->_class->registered && dest->_class->registered->type == 4)
+{
+computedExp = CopyExpression(sourceExp);
+ComputeExpression(computedExp);
+}
+source = sourceExp->expType;
if(dest->kind == 13 && sourceExp->type == 2 && !strtoul(sourceExp->constant, (((void *)0)), 0))
+{
+if(computedExp != sourceExp)
+{
+FreeExpression(computedExp);
+computedExp = sourceExp;
+}
+FreeType(dest);
return 0x1;
+}
if(!skipUnitBla && source && dest && source->kind == 8 && dest->kind == 8)
{
if(source->_class && source->_class->registered && source->_class->registered->type == 3)
for(destBase = dest->_class->registered; destBase && destBase->base && destBase->base->type != 1000; destBase = destBase->base)
;
if(sourceBase == destBase)
+{
+if(computedExp != sourceExp)
+{
+FreeExpression(computedExp);
+computedExp = sourceExp;
+}
+FreeType(dest);
return 0x1;
}
}
+}
if(source)
{
struct __ecereNameSpace__ecere__sys__OldList * specs;
long long value = (((int)0x7fffffff));
source->refCount++;
-dest->refCount++;
-if(sourceExp->type == 2)
+if(computedExp->type == 2)
{
if(source->isSigned)
-value = strtoll(sourceExp->constant, (((void *)0)), 0);
+value = strtoll(computedExp->constant, (((void *)0)), 0);
else
-value = strtoull(sourceExp->constant, (((void *)0)), 0);
+value = strtoull(computedExp->constant, (((void *)0)), 0);
}
-else if(sourceExp->type == 4 && sourceExp->op.op == '-' && !sourceExp->op.exp1 && sourceExp->op.exp2 && sourceExp->op.exp2->type == 2)
+else if(computedExp->type == 4 && sourceExp->op.op == '-' && !computedExp->op.exp1 && computedExp->op.exp2 && computedExp->op.exp2->type == 2)
{
if(source->isSigned)
-value = -strtoll(sourceExp->op.exp2->constant, (((void *)0)), 0);
+value = -strtoll(computedExp->op.exp2->constant, (((void *)0)), 0);
else
-value = -strtoull(sourceExp->op.exp2->constant, (((void *)0)), 0);
+value = -strtoull(computedExp->op.exp2->constant, (((void *)0)), 0);
+}
+if(computedExp != sourceExp)
+{
+FreeExpression(computedExp);
+computedExp = sourceExp;
}
if(dest->kind != 8 && source->kind == 8 && source->_class && source->_class->registered && !strcmp(source->_class->registered->fullName, "ecere::com::unichar"))
{
decl = SpecDeclFromString(string, specs, (((void *)0)));
FreeExpContents(sourceExp);
FreeType(sourceExp->expType);
-sourceExp->type = 26;
+sourceExp->type = 24;
sourceExp->_classExp.specifiers = specs;
sourceExp->_classExp.decl = decl;
sourceExp->expType = dest;
{
struct __ecereNameSpace__ecere__com__Class * _class = source->_class ? source->_class->registered : (((void *)0));
-if(_class && (_class->type == 3 || !strcmp(_class->fullName, "bool") || _class->type == 2))
+if(_class && (_class->type == 3 || _class->type == 2))
{
if(dest->kind != 8)
{
if(dest->kind == 8)
{
struct __ecereNameSpace__ecere__com__Class * _class = dest->_class ? dest->_class->registered : (((void *)0));
+unsigned int fittingValue = 0x0;
+
+if(_class && _class->type == 4)
+{
+struct __ecereNameSpace__ecere__com__Class * enumClass = __ecereNameSpace__ecere__com__eSystem_FindClass(privateModule, "enum");
+struct __ecereNameSpace__ecere__com__EnumClassData * c = (_class ? ((void *)(((char *)_class->data) + enumClass->offsetClass)) : (((void *)0)));
-if(_class && !dest->truth && (_class->type == 3 || !strcmp(_class->fullName, "bool") || (_class->type != 1 && !value && source->kind == 3) || _class->type == 2))
+if(c && value >= 0 && value <= c->largest)
+fittingValue = 0x1;
+}
+if(_class && !dest->truth && (_class->type == 3 || fittingValue || (_class->type != 1 && !value && source->kind == 3) || _class->type == 2))
{
if(_class->type == 0 || _class->type == 5)
{
}
return 0x0;
}
-if(!flag)
+if(!flag && !sourceExp->opDestType)
{
struct Expression * newExp = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Expression);
}
else
{
-while((sourceExp->type == 5 || sourceExp->type == 34) && sourceExp->list)
+if(computedExp != sourceExp)
+{
+FreeExpression(computedExp);
+computedExp = sourceExp;
+}
+while((sourceExp->type == 5 || sourceExp->type == 32) && sourceExp->list)
sourceExp = (*sourceExp->list).last;
if(sourceExp->type == 0)
{
sprintf(constant, "0x%X", (int)value->data);
sourceExp->constant = __ecereNameSpace__ecere__sys__CopyString(constant);
}
+FreeType(dest);
return 0x1;
}
}
}
}
if(dest->classObjectType != 2 && dest->kind == 8 && MatchWithEnums_Module(privateModule, sourceExp, dest, id->string, conversions))
+{
+FreeType(dest);
return 0x1;
}
}
+FreeType(dest);
+}
return 0x0;
}
int value2 = op2->i;
exp->type = 2;
-exp->string = PrintInt(op1->i + value2);
+exp->string = PrintInt((op1->i + value2));
if(!exp->expType)
{
exp->expType = op1->type;
unsigned int value2 = op2->ui;
exp->type = 2;
-exp->string = PrintUInt(op1->ui + value2);
+exp->string = PrintUInt((op1->ui + value2));
if(!exp->expType)
{
exp->expType = op1->type;
static unsigned int Int64Add(struct Expression * exp, struct Operand * op1, struct Operand * op2)
{
-int value2 = op2->i;
+long long value2 = op2->i64;
exp->type = 2;
-exp->string = PrintInt64(op1->i + value2);
+exp->string = PrintInt64((op1->i64 + value2));
if(!exp->expType)
{
exp->expType = op1->type;
static unsigned int UInt64Add(struct Expression * exp, struct Operand * op1, struct Operand * op2)
{
-unsigned int value2 = op2->ui;
+uint64 value2 = op2->ui64;
exp->type = 2;
-exp->string = PrintUInt64(op1->ui + value2);
+exp->string = PrintUInt64((op1->ui64 + value2));
if(!exp->expType)
{
exp->expType = op1->type;
short value2 = op2->s;
exp->type = 2;
-exp->string = PrintShort(op1->s + value2);
+exp->string = PrintShort((op1->s + value2));
if(!exp->expType)
{
exp->expType = op1->type;
unsigned short value2 = op2->us;
exp->type = 2;
-exp->string = PrintUShort(op1->us + value2);
+exp->string = PrintUShort((op1->us + value2));
if(!exp->expType)
{
exp->expType = op1->type;
char value2 = op2->c;
exp->type = 2;
-exp->string = PrintChar(op1->c + value2);
+exp->string = PrintChar((op1->c + value2));
if(!exp->expType)
{
exp->expType = op1->type;
unsigned char value2 = op2->uc;
exp->type = 2;
-exp->string = PrintUChar(op1->uc + value2);
+exp->string = PrintUChar((op1->uc + value2));
if(!exp->expType)
{
exp->expType = op1->type;
float value2 = op2->f;
exp->type = 2;
-exp->string = PrintFloat(op1->f + value2);
+exp->string = PrintFloat((float)(op1->f + value2));
if(!exp->expType)
{
exp->expType = op1->type;
double value2 = op2->d;
exp->type = 2;
-exp->string = PrintDouble(op1->d + value2);
+exp->string = PrintDouble((double)(op1->d + value2));
if(!exp->expType)
{
exp->expType = op1->type;
int value2 = op2->i;
exp->type = 2;
-exp->string = PrintInt(op1->i - value2);
+exp->string = PrintInt((op1->i - value2));
if(!exp->expType)
{
exp->expType = op1->type;
unsigned int value2 = op2->ui;
exp->type = 2;
-exp->string = PrintUInt(op1->ui - value2);
+exp->string = PrintUInt((op1->ui - value2));
if(!exp->expType)
{
exp->expType = op1->type;
static unsigned int Int64Sub(struct Expression * exp, struct Operand * op1, struct Operand * op2)
{
-int value2 = op2->i;
+long long value2 = op2->i64;
exp->type = 2;
-exp->string = PrintInt64(op1->i - value2);
+exp->string = PrintInt64((op1->i64 - value2));
if(!exp->expType)
{
exp->expType = op1->type;
static unsigned int UInt64Sub(struct Expression * exp, struct Operand * op1, struct Operand * op2)
{
-unsigned int value2 = op2->ui;
+uint64 value2 = op2->ui64;
exp->type = 2;
-exp->string = PrintUInt64(op1->ui - value2);
+exp->string = PrintUInt64((op1->ui64 - value2));
if(!exp->expType)
{
exp->expType = op1->type;
short value2 = op2->s;
exp->type = 2;
-exp->string = PrintShort(op1->s - value2);
+exp->string = PrintShort((op1->s - value2));
if(!exp->expType)
{
exp->expType = op1->type;
unsigned short value2 = op2->us;
exp->type = 2;
-exp->string = PrintUShort(op1->us - value2);
+exp->string = PrintUShort((op1->us - value2));
if(!exp->expType)
{
exp->expType = op1->type;
char value2 = op2->c;
exp->type = 2;
-exp->string = PrintChar(op1->c - value2);
+exp->string = PrintChar((op1->c - value2));
if(!exp->expType)
{
exp->expType = op1->type;
unsigned char value2 = op2->uc;
exp->type = 2;
-exp->string = PrintUChar(op1->uc - value2);
+exp->string = PrintUChar((op1->uc - value2));
if(!exp->expType)
{
exp->expType = op1->type;
float value2 = op2->f;
exp->type = 2;
-exp->string = PrintFloat(op1->f - value2);
+exp->string = PrintFloat((float)(op1->f - value2));
if(!exp->expType)
{
exp->expType = op1->type;
double value2 = op2->d;
exp->type = 2;
-exp->string = PrintDouble(op1->d - value2);
+exp->string = PrintDouble((double)(op1->d - value2));
if(!exp->expType)
{
exp->expType = op1->type;
int value2 = op2->i;
exp->type = 2;
-exp->string = PrintInt(op1->i * value2);
+exp->string = PrintInt((op1->i * value2));
if(!exp->expType)
{
exp->expType = op1->type;
unsigned int value2 = op2->ui;
exp->type = 2;
-exp->string = PrintUInt(op1->ui * value2);
+exp->string = PrintUInt((op1->ui * value2));
if(!exp->expType)
{
exp->expType = op1->type;
static unsigned int Int64Mul(struct Expression * exp, struct Operand * op1, struct Operand * op2)
{
-int value2 = op2->i;
+long long value2 = op2->i64;
exp->type = 2;
-exp->string = PrintInt64(op1->i * value2);
+exp->string = PrintInt64((op1->i64 * value2));
if(!exp->expType)
{
exp->expType = op1->type;
static unsigned int UInt64Mul(struct Expression * exp, struct Operand * op1, struct Operand * op2)
{
-unsigned int value2 = op2->ui;
+uint64 value2 = op2->ui64;
exp->type = 2;
-exp->string = PrintUInt64(op1->ui * value2);
+exp->string = PrintUInt64((op1->ui64 * value2));
if(!exp->expType)
{
exp->expType = op1->type;
short value2 = op2->s;
exp->type = 2;
-exp->string = PrintShort(op1->s * value2);
+exp->string = PrintShort((op1->s * value2));
if(!exp->expType)
{
exp->expType = op1->type;
unsigned short value2 = op2->us;
exp->type = 2;
-exp->string = PrintUShort(op1->us * value2);
+exp->string = PrintUShort((op1->us * value2));
if(!exp->expType)
{
exp->expType = op1->type;
char value2 = op2->c;
exp->type = 2;
-exp->string = PrintChar(op1->c * value2);
+exp->string = PrintChar((op1->c * value2));
if(!exp->expType)
{
exp->expType = op1->type;
unsigned char value2 = op2->uc;
exp->type = 2;
-exp->string = PrintUChar(op1->uc * value2);
+exp->string = PrintUChar((op1->uc * value2));
if(!exp->expType)
{
exp->expType = op1->type;
float value2 = op2->f;
exp->type = 2;
-exp->string = PrintFloat(op1->f * value2);
+exp->string = PrintFloat((float)(op1->f * value2));
if(!exp->expType)
{
exp->expType = op1->type;
double value2 = op2->d;
exp->type = 2;
-exp->string = PrintDouble(op1->d * value2);
+exp->string = PrintDouble((double)(op1->d * value2));
if(!exp->expType)
{
exp->expType = op1->type;
static unsigned int Int64Div(struct Expression * exp, struct Operand * op1, struct Operand * op2)
{
-int value2 = op2->i;
+long long value2 = op2->i64;
exp->type = 2;
-exp->string = PrintInt64(value2 ? (op1->i / value2) : 0);
+exp->string = PrintInt64(value2 ? (op1->i64 / value2) : 0);
if(!exp->expType)
{
exp->expType = op1->type;
static unsigned int UInt64Div(struct Expression * exp, struct Operand * op1, struct Operand * op2)
{
-unsigned int value2 = op2->ui;
+uint64 value2 = op2->ui64;
exp->type = 2;
-exp->string = PrintUInt64(value2 ? (op1->ui / value2) : 0);
+exp->string = PrintUInt64(value2 ? (op1->ui64 / value2) : 0);
if(!exp->expType)
{
exp->expType = op1->type;
float value2 = op2->f;
exp->type = 2;
-exp->string = PrintFloat(value2 ? (op1->f / value2) : 0);
+exp->string = PrintFloat(op1->f / value2);
if(!exp->expType)
{
exp->expType = op1->type;
double value2 = op2->d;
exp->type = 2;
-exp->string = PrintDouble(value2 ? (op1->d / value2) : 0);
+exp->string = PrintDouble(op1->d / value2);
if(!exp->expType)
{
exp->expType = op1->type;
static unsigned int Int64Mod(struct Expression * exp, struct Operand * op1, struct Operand * op2)
{
-int value2 = op2->i;
+long long value2 = op2->i64;
exp->type = 2;
-exp->string = PrintInt64(value2 ? (op1->i % value2) : 0);
+exp->string = PrintInt64(value2 ? (op1->i64 % value2) : 0);
if(!exp->expType)
{
exp->expType = op1->type;
static unsigned int UInt64Mod(struct Expression * exp, struct Operand * op1, struct Operand * op2)
{
-unsigned int value2 = op2->ui;
+uint64 value2 = op2->ui64;
exp->type = 2;
-exp->string = PrintUInt64(value2 ? (op1->ui % value2) : 0);
+exp->string = PrintUInt64(value2 ? (op1->ui64 % value2) : 0);
if(!exp->expType)
{
exp->expType = op1->type;
static unsigned int Int64Neg(struct Expression * exp, struct Operand * op1)
{
exp->type = 2;
-exp->string = PrintInt64((-op1->i));
+exp->string = PrintInt64((-op1->i64));
if(!exp->expType)
{
exp->expType = op1->type;
static unsigned int UInt64Neg(struct Expression * exp, struct Operand * op1)
{
exp->type = 2;
-exp->string = PrintUInt64((unsigned int)(-op1->ui));
+exp->string = PrintUInt64((uint64)(-op1->ui64));
if(!exp->expType)
{
exp->expType = op1->type;
static unsigned int Int64Inc(struct Expression * exp, struct Operand * op1)
{
exp->type = 2;
-exp->string = PrintInt64((++op1->i));
+exp->string = PrintInt64((++op1->i64));
if(!exp->expType)
{
exp->expType = op1->type;
static unsigned int UInt64Inc(struct Expression * exp, struct Operand * op1)
{
exp->type = 2;
-exp->string = PrintUInt64((++op1->ui));
+exp->string = PrintUInt64((++op1->ui64));
if(!exp->expType)
{
exp->expType = op1->type;
static unsigned int Int64Dec(struct Expression * exp, struct Operand * op1)
{
exp->type = 2;
-exp->string = PrintInt64((--op1->i));
+exp->string = PrintInt64((--op1->i64));
if(!exp->expType)
{
exp->expType = op1->type;
static unsigned int UInt64Dec(struct Expression * exp, struct Operand * op1)
{
exp->type = 2;
-exp->string = PrintUInt64((--op1->ui));
+exp->string = PrintUInt64((--op1->ui64));
if(!exp->expType)
{
exp->expType = op1->type;
int value2 = op2->i;
exp->type = 2;
-exp->string = PrintInt(op1->i = value2);
+exp->string = PrintInt((op1->i = value2));
if(!exp->expType)
{
exp->expType = op1->type;
unsigned int value2 = op2->ui;
exp->type = 2;
-exp->string = PrintUInt(op1->ui = value2);
+exp->string = PrintUInt((op1->ui = value2));
if(!exp->expType)
{
exp->expType = op1->type;
static unsigned int Int64Asign(struct Expression * exp, struct Operand * op1, struct Operand * op2)
{
-int value2 = op2->i;
+long long value2 = op2->i64;
exp->type = 2;
-exp->string = PrintInt64(op1->i = value2);
+exp->string = PrintInt64((op1->i64 = value2));
if(!exp->expType)
{
exp->expType = op1->type;
static unsigned int UInt64Asign(struct Expression * exp, struct Operand * op1, struct Operand * op2)
{
-unsigned int value2 = op2->ui;
+uint64 value2 = op2->ui64;
exp->type = 2;
-exp->string = PrintUInt64(op1->ui = value2);
+exp->string = PrintUInt64((op1->ui64 = value2));
if(!exp->expType)
{
exp->expType = op1->type;
short value2 = op2->s;
exp->type = 2;
-exp->string = PrintShort(op1->s = value2);
+exp->string = PrintShort((op1->s = value2));
if(!exp->expType)
{
exp->expType = op1->type;
unsigned short value2 = op2->us;
exp->type = 2;
-exp->string = PrintUShort(op1->us = value2);
+exp->string = PrintUShort((op1->us = value2));
if(!exp->expType)
{
exp->expType = op1->type;
char value2 = op2->c;
exp->type = 2;
-exp->string = PrintChar(op1->c = value2);
+exp->string = PrintChar((op1->c = value2));
if(!exp->expType)
{
exp->expType = op1->type;
unsigned char value2 = op2->uc;
exp->type = 2;
-exp->string = PrintUChar(op1->uc = value2);
+exp->string = PrintUChar((op1->uc = value2));
if(!exp->expType)
{
exp->expType = op1->type;
float value2 = op2->f;
exp->type = 2;
-exp->string = PrintFloat(op1->f = value2);
+exp->string = PrintFloat((float)(op1->f = value2));
if(!exp->expType)
{
exp->expType = op1->type;
double value2 = op2->d;
exp->type = 2;
-exp->string = PrintDouble(op1->d = value2);
+exp->string = PrintDouble((double)(op1->d = value2));
if(!exp->expType)
{
exp->expType = op1->type;
int value2 = op2->i;
exp->type = 2;
-exp->string = PrintInt(op1->i += value2);
+exp->string = PrintInt((op1->i += value2));
if(!exp->expType)
{
exp->expType = op1->type;
unsigned int value2 = op2->ui;
exp->type = 2;
-exp->string = PrintUInt(op1->ui += value2);
+exp->string = PrintUInt((op1->ui += value2));
if(!exp->expType)
{
exp->expType = op1->type;
static unsigned int Int64AddAsign(struct Expression * exp, struct Operand * op1, struct Operand * op2)
{
-int value2 = op2->i;
+long long value2 = op2->i64;
exp->type = 2;
-exp->string = PrintInt64(op1->i += value2);
+exp->string = PrintInt64((op1->i64 += value2));
if(!exp->expType)
{
exp->expType = op1->type;
static unsigned int UInt64AddAsign(struct Expression * exp, struct Operand * op1, struct Operand * op2)
{
-unsigned int value2 = op2->ui;
+uint64 value2 = op2->ui64;
exp->type = 2;
-exp->string = PrintUInt64(op1->ui += value2);
+exp->string = PrintUInt64((op1->ui64 += value2));
if(!exp->expType)
{
exp->expType = op1->type;
short value2 = op2->s;
exp->type = 2;
-exp->string = PrintShort(op1->s += value2);
+exp->string = PrintShort((op1->s += value2));
if(!exp->expType)
{
exp->expType = op1->type;
unsigned short value2 = op2->us;
exp->type = 2;
-exp->string = PrintUShort(op1->us += value2);
+exp->string = PrintUShort((op1->us += value2));
if(!exp->expType)
{
exp->expType = op1->type;
char value2 = op2->c;
exp->type = 2;
-exp->string = PrintChar(op1->c += value2);
+exp->string = PrintChar((op1->c += value2));
if(!exp->expType)
{
exp->expType = op1->type;
unsigned char value2 = op2->uc;
exp->type = 2;
-exp->string = PrintUChar(op1->uc += value2);
+exp->string = PrintUChar((op1->uc += value2));
if(!exp->expType)
{
exp->expType = op1->type;
float value2 = op2->f;
exp->type = 2;
-exp->string = PrintFloat(op1->f += value2);
+exp->string = PrintFloat((float)(op1->f += value2));
if(!exp->expType)
{
exp->expType = op1->type;
double value2 = op2->d;
exp->type = 2;
-exp->string = PrintDouble(op1->d += value2);
+exp->string = PrintDouble((double)(op1->d += value2));
if(!exp->expType)
{
exp->expType = op1->type;
int value2 = op2->i;
exp->type = 2;
-exp->string = PrintInt(op1->i -= value2);
+exp->string = PrintInt((op1->i -= value2));
if(!exp->expType)
{
exp->expType = op1->type;
unsigned int value2 = op2->ui;
exp->type = 2;
-exp->string = PrintUInt(op1->ui -= value2);
+exp->string = PrintUInt((op1->ui -= value2));
if(!exp->expType)
{
exp->expType = op1->type;
static unsigned int Int64SubAsign(struct Expression * exp, struct Operand * op1, struct Operand * op2)
{
-int value2 = op2->i;
+long long value2 = op2->i64;
exp->type = 2;
-exp->string = PrintInt64(op1->i -= value2);
+exp->string = PrintInt64((op1->i64 -= value2));
if(!exp->expType)
{
exp->expType = op1->type;
static unsigned int UInt64SubAsign(struct Expression * exp, struct Operand * op1, struct Operand * op2)
{
-unsigned int value2 = op2->ui;
+uint64 value2 = op2->ui64;
exp->type = 2;
-exp->string = PrintUInt64(op1->ui -= value2);
+exp->string = PrintUInt64((op1->ui64 -= value2));
if(!exp->expType)
{
exp->expType = op1->type;
short value2 = op2->s;
exp->type = 2;
-exp->string = PrintShort(op1->s -= value2);
+exp->string = PrintShort((op1->s -= value2));
if(!exp->expType)
{
exp->expType = op1->type;
unsigned short value2 = op2->us;
exp->type = 2;
-exp->string = PrintUShort(op1->us -= value2);
+exp->string = PrintUShort((op1->us -= value2));
if(!exp->expType)
{
exp->expType = op1->type;
char value2 = op2->c;
exp->type = 2;
-exp->string = PrintChar(op1->c -= value2);
+exp->string = PrintChar((op1->c -= value2));
if(!exp->expType)
{
exp->expType = op1->type;
unsigned char value2 = op2->uc;
exp->type = 2;
-exp->string = PrintUChar(op1->uc -= value2);
+exp->string = PrintUChar((op1->uc -= value2));
if(!exp->expType)
{
exp->expType = op1->type;
float value2 = op2->f;
exp->type = 2;
-exp->string = PrintFloat(op1->f -= value2);
+exp->string = PrintFloat((float)(op1->f -= value2));
if(!exp->expType)
{
exp->expType = op1->type;
double value2 = op2->d;
exp->type = 2;
-exp->string = PrintDouble(op1->d -= value2);
+exp->string = PrintDouble((double)(op1->d -= value2));
if(!exp->expType)
{
exp->expType = op1->type;
int value2 = op2->i;
exp->type = 2;
-exp->string = PrintInt(op1->i *= value2);
+exp->string = PrintInt((op1->i *= value2));
if(!exp->expType)
{
exp->expType = op1->type;
unsigned int value2 = op2->ui;
exp->type = 2;
-exp->string = PrintUInt(op1->ui *= value2);
+exp->string = PrintUInt((op1->ui *= value2));
if(!exp->expType)
{
exp->expType = op1->type;
static unsigned int Int64MulAsign(struct Expression * exp, struct Operand * op1, struct Operand * op2)
{
-int value2 = op2->i;
+long long value2 = op2->i64;
exp->type = 2;
-exp->string = PrintInt64(op1->i *= value2);
+exp->string = PrintInt64((op1->i64 *= value2));
if(!exp->expType)
{
exp->expType = op1->type;
static unsigned int UInt64MulAsign(struct Expression * exp, struct Operand * op1, struct Operand * op2)
{
-unsigned int value2 = op2->ui;
+uint64 value2 = op2->ui64;
exp->type = 2;
-exp->string = PrintUInt64(op1->ui *= value2);
+exp->string = PrintUInt64((op1->ui64 *= value2));
if(!exp->expType)
{
exp->expType = op1->type;
short value2 = op2->s;
exp->type = 2;
-exp->string = PrintShort(op1->s *= value2);
+exp->string = PrintShort((op1->s *= value2));
if(!exp->expType)
{
exp->expType = op1->type;
unsigned short value2 = op2->us;
exp->type = 2;
-exp->string = PrintUShort(op1->us *= value2);
+exp->string = PrintUShort((op1->us *= value2));
if(!exp->expType)
{
exp->expType = op1->type;
char value2 = op2->c;
exp->type = 2;
-exp->string = PrintChar(op1->c *= value2);
+exp->string = PrintChar((op1->c *= value2));
if(!exp->expType)
{
exp->expType = op1->type;
unsigned char value2 = op2->uc;
exp->type = 2;
-exp->string = PrintUChar(op1->uc *= value2);
+exp->string = PrintUChar((op1->uc *= value2));
if(!exp->expType)
{
exp->expType = op1->type;
float value2 = op2->f;
exp->type = 2;
-exp->string = PrintFloat(op1->f *= value2);
+exp->string = PrintFloat((float)(op1->f *= value2));
if(!exp->expType)
{
exp->expType = op1->type;
double value2 = op2->d;
exp->type = 2;
-exp->string = PrintDouble(op1->d *= value2);
+exp->string = PrintDouble((double)(op1->d *= value2));
if(!exp->expType)
{
exp->expType = op1->type;
static unsigned int Int64DivAsign(struct Expression * exp, struct Operand * op1, struct Operand * op2)
{
-int value2 = op2->i;
+long long value2 = op2->i64;
exp->type = 2;
-exp->string = PrintInt64(value2 ? (op1->i /= value2) : 0);
+exp->string = PrintInt64(value2 ? (op1->i64 /= value2) : 0);
if(!exp->expType)
{
exp->expType = op1->type;
static unsigned int UInt64DivAsign(struct Expression * exp, struct Operand * op1, struct Operand * op2)
{
-unsigned int value2 = op2->ui;
+uint64 value2 = op2->ui64;
exp->type = 2;
-exp->string = PrintUInt64(value2 ? (op1->ui /= value2) : 0);
+exp->string = PrintUInt64(value2 ? (op1->ui64 /= value2) : 0);
if(!exp->expType)
{
exp->expType = op1->type;
float value2 = op2->f;
exp->type = 2;
-exp->string = PrintFloat(value2 ? (op1->f /= value2) : 0);
+exp->string = PrintFloat(op1->f /= value2);
if(!exp->expType)
{
exp->expType = op1->type;
double value2 = op2->d;
exp->type = 2;
-exp->string = PrintDouble(value2 ? (op1->d /= value2) : 0);
+exp->string = PrintDouble(op1->d /= value2);
if(!exp->expType)
{
exp->expType = op1->type;
static unsigned int Int64ModAsign(struct Expression * exp, struct Operand * op1, struct Operand * op2)
{
-int value2 = op2->i;
+long long value2 = op2->i64;
exp->type = 2;
-exp->string = PrintInt64(value2 ? (op1->i %= value2) : 0);
+exp->string = PrintInt64(value2 ? (op1->i64 %= value2) : 0);
if(!exp->expType)
{
exp->expType = op1->type;
static unsigned int UInt64ModAsign(struct Expression * exp, struct Operand * op1, struct Operand * op2)
{
-unsigned int value2 = op2->ui;
+uint64 value2 = op2->ui64;
exp->type = 2;
-exp->string = PrintUInt64(value2 ? (op1->ui %= value2) : 0);
+exp->string = PrintUInt64(value2 ? (op1->ui64 %= value2) : 0);
if(!exp->expType)
{
exp->expType = op1->type;
int value2 = op2->i;
exp->type = 2;
-exp->string = PrintInt(op1->i & value2);
+exp->string = PrintInt((op1->i & value2));
if(!exp->expType)
{
exp->expType = op1->type;
unsigned int value2 = op2->ui;
exp->type = 2;
-exp->string = PrintUInt(op1->ui & value2);
+exp->string = PrintUInt((op1->ui & value2));
if(!exp->expType)
{
exp->expType = op1->type;
static unsigned int Int64BitAnd(struct Expression * exp, struct Operand * op1, struct Operand * op2)
{
-int value2 = op2->i;
+long long value2 = op2->i64;
exp->type = 2;
-exp->string = PrintInt64(op1->i & value2);
+exp->string = PrintInt64((op1->i64 & value2));
if(!exp->expType)
{
exp->expType = op1->type;
static unsigned int UInt64BitAnd(struct Expression * exp, struct Operand * op1, struct Operand * op2)
{
-unsigned int value2 = op2->ui;
+uint64 value2 = op2->ui64;
exp->type = 2;
-exp->string = PrintUInt64(op1->ui & value2);
+exp->string = PrintUInt64((op1->ui64 & value2));
if(!exp->expType)
{
exp->expType = op1->type;
short value2 = op2->s;
exp->type = 2;
-exp->string = PrintShort(op1->s & value2);
+exp->string = PrintShort((op1->s & value2));
if(!exp->expType)
{
exp->expType = op1->type;
unsigned short value2 = op2->us;
exp->type = 2;
-exp->string = PrintUShort(op1->us & value2);
+exp->string = PrintUShort((op1->us & value2));
if(!exp->expType)
{
exp->expType = op1->type;
char value2 = op2->c;
exp->type = 2;
-exp->string = PrintChar(op1->c & value2);
+exp->string = PrintChar((op1->c & value2));
if(!exp->expType)
{
exp->expType = op1->type;
unsigned char value2 = op2->uc;
exp->type = 2;
-exp->string = PrintUChar(op1->uc & value2);
+exp->string = PrintUChar((op1->uc & value2));
if(!exp->expType)
{
exp->expType = op1->type;
int value2 = op2->i;
exp->type = 2;
-exp->string = PrintInt(op1->i | value2);
+exp->string = PrintInt((op1->i | value2));
if(!exp->expType)
{
exp->expType = op1->type;
unsigned int value2 = op2->ui;
exp->type = 2;
-exp->string = PrintUInt(op1->ui | value2);
+exp->string = PrintUInt((op1->ui | value2));
if(!exp->expType)
{
exp->expType = op1->type;
static unsigned int Int64BitOr(struct Expression * exp, struct Operand * op1, struct Operand * op2)
{
-int value2 = op2->i;
+long long value2 = op2->i64;
exp->type = 2;
-exp->string = PrintInt64(op1->i | value2);
+exp->string = PrintInt64((op1->i64 | value2));
if(!exp->expType)
{
exp->expType = op1->type;
static unsigned int UInt64BitOr(struct Expression * exp, struct Operand * op1, struct Operand * op2)
{
-unsigned int value2 = op2->ui;
+uint64 value2 = op2->ui64;
exp->type = 2;
-exp->string = PrintUInt64(op1->ui | value2);
+exp->string = PrintUInt64((op1->ui64 | value2));
if(!exp->expType)
{
exp->expType = op1->type;
short value2 = op2->s;
exp->type = 2;
-exp->string = PrintShort(op1->s | value2);
+exp->string = PrintShort((op1->s | value2));
if(!exp->expType)
{
exp->expType = op1->type;
unsigned short value2 = op2->us;
exp->type = 2;
-exp->string = PrintUShort(op1->us | value2);
+exp->string = PrintUShort((op1->us | value2));
if(!exp->expType)
{
exp->expType = op1->type;
char value2 = op2->c;
exp->type = 2;
-exp->string = PrintChar(op1->c | value2);
+exp->string = PrintChar((op1->c | value2));
if(!exp->expType)
{
exp->expType = op1->type;
unsigned char value2 = op2->uc;
exp->type = 2;
-exp->string = PrintUChar(op1->uc | value2);
+exp->string = PrintUChar((op1->uc | value2));
if(!exp->expType)
{
exp->expType = op1->type;
int value2 = op2->i;
exp->type = 2;
-exp->string = PrintInt(op1->i ^ value2);
+exp->string = PrintInt((op1->i ^ value2));
if(!exp->expType)
{
exp->expType = op1->type;
unsigned int value2 = op2->ui;
exp->type = 2;
-exp->string = PrintUInt(op1->ui ^ value2);
+exp->string = PrintUInt((op1->ui ^ value2));
if(!exp->expType)
{
exp->expType = op1->type;
static unsigned int Int64BitXor(struct Expression * exp, struct Operand * op1, struct Operand * op2)
{
-int value2 = op2->i;
+long long value2 = op2->i64;
exp->type = 2;
-exp->string = PrintInt64(op1->i ^ value2);
+exp->string = PrintInt64((op1->i64 ^ value2));
if(!exp->expType)
{
exp->expType = op1->type;
static unsigned int UInt64BitXor(struct Expression * exp, struct Operand * op1, struct Operand * op2)
{
-unsigned int value2 = op2->ui;
+uint64 value2 = op2->ui64;
exp->type = 2;
-exp->string = PrintUInt64(op1->ui ^ value2);
+exp->string = PrintUInt64((op1->ui64 ^ value2));
if(!exp->expType)
{
exp->expType = op1->type;
short value2 = op2->s;
exp->type = 2;
-exp->string = PrintShort(op1->s ^ value2);
+exp->string = PrintShort((op1->s ^ value2));
if(!exp->expType)
{
exp->expType = op1->type;
unsigned short value2 = op2->us;
exp->type = 2;
-exp->string = PrintUShort(op1->us ^ value2);
+exp->string = PrintUShort((op1->us ^ value2));
if(!exp->expType)
{
exp->expType = op1->type;
char value2 = op2->c;
exp->type = 2;
-exp->string = PrintChar(op1->c ^ value2);
+exp->string = PrintChar((op1->c ^ value2));
if(!exp->expType)
{
exp->expType = op1->type;
unsigned char value2 = op2->uc;
exp->type = 2;
-exp->string = PrintUChar(op1->uc ^ value2);
+exp->string = PrintUChar((op1->uc ^ value2));
if(!exp->expType)
{
exp->expType = op1->type;
int value2 = op2->i;
exp->type = 2;
-exp->string = PrintInt(op1->i << value2);
+exp->string = PrintInt((op1->i << value2));
if(!exp->expType)
{
exp->expType = op1->type;
unsigned int value2 = op2->ui;
exp->type = 2;
-exp->string = PrintUInt(op1->ui << value2);
+exp->string = PrintUInt((op1->ui << value2));
if(!exp->expType)
{
exp->expType = op1->type;
static unsigned int Int64LShift(struct Expression * exp, struct Operand * op1, struct Operand * op2)
{
-int value2 = op2->i;
+long long value2 = op2->i64;
exp->type = 2;
-exp->string = PrintInt64(op1->i << value2);
+exp->string = PrintInt64((op1->i64 << value2));
if(!exp->expType)
{
exp->expType = op1->type;
static unsigned int UInt64LShift(struct Expression * exp, struct Operand * op1, struct Operand * op2)
{
-unsigned int value2 = op2->ui;
+uint64 value2 = op2->ui64;
exp->type = 2;
-exp->string = PrintUInt64(op1->ui << value2);
+exp->string = PrintUInt64((op1->ui64 << value2));
if(!exp->expType)
{
exp->expType = op1->type;
short value2 = op2->s;
exp->type = 2;
-exp->string = PrintShort(op1->s << value2);
+exp->string = PrintShort((op1->s << value2));
if(!exp->expType)
{
exp->expType = op1->type;
unsigned short value2 = op2->us;
exp->type = 2;
-exp->string = PrintUShort(op1->us << value2);
+exp->string = PrintUShort((op1->us << value2));
if(!exp->expType)
{
exp->expType = op1->type;
char value2 = op2->c;
exp->type = 2;
-exp->string = PrintChar(op1->c << value2);
+exp->string = PrintChar((op1->c << value2));
if(!exp->expType)
{
exp->expType = op1->type;
unsigned char value2 = op2->uc;
exp->type = 2;
-exp->string = PrintUChar(op1->uc << value2);
+exp->string = PrintUChar((op1->uc << value2));
if(!exp->expType)
{
exp->expType = op1->type;
int value2 = op2->i;
exp->type = 2;
-exp->string = PrintInt(op1->i >> value2);
+exp->string = PrintInt((op1->i >> value2));
if(!exp->expType)
{
exp->expType = op1->type;
unsigned int value2 = op2->ui;
exp->type = 2;
-exp->string = PrintUInt(op1->ui >> value2);
+exp->string = PrintUInt((op1->ui >> value2));
if(!exp->expType)
{
exp->expType = op1->type;
static unsigned int Int64RShift(struct Expression * exp, struct Operand * op1, struct Operand * op2)
{
-int value2 = op2->i;
+long long value2 = op2->i64;
exp->type = 2;
-exp->string = PrintInt64(op1->i >> value2);
+exp->string = PrintInt64((op1->i64 >> value2));
if(!exp->expType)
{
exp->expType = op1->type;
static unsigned int UInt64RShift(struct Expression * exp, struct Operand * op1, struct Operand * op2)
{
-unsigned int value2 = op2->ui;
+uint64 value2 = op2->ui64;
exp->type = 2;
-exp->string = PrintUInt64(op1->ui >> value2);
+exp->string = PrintUInt64((op1->ui64 >> value2));
if(!exp->expType)
{
exp->expType = op1->type;
short value2 = op2->s;
exp->type = 2;
-exp->string = PrintShort(op1->s >> value2);
+exp->string = PrintShort((op1->s >> value2));
if(!exp->expType)
{
exp->expType = op1->type;
unsigned short value2 = op2->us;
exp->type = 2;
-exp->string = PrintUShort(op1->us >> value2);
+exp->string = PrintUShort((op1->us >> value2));
if(!exp->expType)
{
exp->expType = op1->type;
char value2 = op2->c;
exp->type = 2;
-exp->string = PrintChar(op1->c >> value2);
+exp->string = PrintChar((op1->c >> value2));
if(!exp->expType)
{
exp->expType = op1->type;
unsigned char value2 = op2->uc;
exp->type = 2;
-exp->string = PrintUChar(op1->uc >> value2);
+exp->string = PrintUChar((op1->uc >> value2));
if(!exp->expType)
{
exp->expType = op1->type;
static unsigned int Int64BitNot(struct Expression * exp, struct Operand * op1)
{
exp->type = 2;
-exp->string = PrintInt64((~op1->i));
+exp->string = PrintInt64((long long)(~op1->i64));
if(!exp->expType)
{
exp->expType = op1->type;
static unsigned int UInt64BitNot(struct Expression * exp, struct Operand * op1)
{
exp->type = 2;
-exp->string = PrintUInt64((unsigned int)(~op1->ui));
+exp->string = PrintUInt64((uint64)(~op1->ui64));
if(!exp->expType)
{
exp->expType = op1->type;
int value2 = op2->i;
exp->type = 2;
-exp->string = PrintInt(op1->i &= value2);
+exp->string = PrintInt((op1->i &= value2));
if(!exp->expType)
{
exp->expType = op1->type;
unsigned int value2 = op2->ui;
exp->type = 2;
-exp->string = PrintUInt(op1->ui &= value2);
+exp->string = PrintUInt((op1->ui &= value2));
if(!exp->expType)
{
exp->expType = op1->type;
static unsigned int Int64AndAsign(struct Expression * exp, struct Operand * op1, struct Operand * op2)
{
-int value2 = op2->i;
+long long value2 = op2->i64;
exp->type = 2;
-exp->string = PrintInt64(op1->i &= value2);
+exp->string = PrintInt64((op1->i64 &= value2));
if(!exp->expType)
{
exp->expType = op1->type;
static unsigned int UInt64AndAsign(struct Expression * exp, struct Operand * op1, struct Operand * op2)
{
-unsigned int value2 = op2->ui;
+uint64 value2 = op2->ui64;
exp->type = 2;
-exp->string = PrintUInt64(op1->ui &= value2);
+exp->string = PrintUInt64((op1->ui64 &= value2));
if(!exp->expType)
{
exp->expType = op1->type;
short value2 = op2->s;
exp->type = 2;
-exp->string = PrintShort(op1->s &= value2);
+exp->string = PrintShort((op1->s &= value2));
if(!exp->expType)
{
exp->expType = op1->type;
unsigned short value2 = op2->us;
exp->type = 2;
-exp->string = PrintUShort(op1->us &= value2);
+exp->string = PrintUShort((op1->us &= value2));
if(!exp->expType)
{
exp->expType = op1->type;
char value2 = op2->c;
exp->type = 2;
-exp->string = PrintChar(op1->c &= value2);
+exp->string = PrintChar((op1->c &= value2));
if(!exp->expType)
{
exp->expType = op1->type;
unsigned char value2 = op2->uc;
exp->type = 2;
-exp->string = PrintUChar(op1->uc &= value2);
+exp->string = PrintUChar((op1->uc &= value2));
if(!exp->expType)
{
exp->expType = op1->type;
int value2 = op2->i;
exp->type = 2;
-exp->string = PrintInt(op1->i |= value2);
+exp->string = PrintInt((op1->i |= value2));
if(!exp->expType)
{
exp->expType = op1->type;
unsigned int value2 = op2->ui;
exp->type = 2;
-exp->string = PrintUInt(op1->ui |= value2);
+exp->string = PrintUInt((op1->ui |= value2));
if(!exp->expType)
{
exp->expType = op1->type;
static unsigned int Int64OrAsign(struct Expression * exp, struct Operand * op1, struct Operand * op2)
{
-int value2 = op2->i;
+long long value2 = op2->i64;
exp->type = 2;
-exp->string = PrintInt64(op1->i |= value2);
+exp->string = PrintInt64((op1->i64 |= value2));
if(!exp->expType)
{
exp->expType = op1->type;
static unsigned int UInt64OrAsign(struct Expression * exp, struct Operand * op1, struct Operand * op2)
{
-unsigned int value2 = op2->ui;
+uint64 value2 = op2->ui64;
exp->type = 2;
-exp->string = PrintUInt64(op1->ui |= value2);
+exp->string = PrintUInt64((op1->ui64 |= value2));
if(!exp->expType)
{
exp->expType = op1->type;
short value2 = op2->s;
exp->type = 2;
-exp->string = PrintShort(op1->s |= value2);
+exp->string = PrintShort((op1->s |= value2));
if(!exp->expType)
{
exp->expType = op1->type;
unsigned short value2 = op2->us;
exp->type = 2;
-exp->string = PrintUShort(op1->us |= value2);
+exp->string = PrintUShort((op1->us |= value2));
if(!exp->expType)
{
exp->expType = op1->type;
char value2 = op2->c;
exp->type = 2;
-exp->string = PrintChar(op1->c |= value2);
+exp->string = PrintChar((op1->c |= value2));
if(!exp->expType)
{
exp->expType = op1->type;
unsigned char value2 = op2->uc;
exp->type = 2;
-exp->string = PrintUChar(op1->uc |= value2);
+exp->string = PrintUChar((op1->uc |= value2));
if(!exp->expType)
{
exp->expType = op1->type;
int value2 = op2->i;
exp->type = 2;
-exp->string = PrintInt(op1->i ^= value2);
+exp->string = PrintInt((op1->i ^= value2));
if(!exp->expType)
{
exp->expType = op1->type;
unsigned int value2 = op2->ui;
exp->type = 2;
-exp->string = PrintUInt(op1->ui ^= value2);
+exp->string = PrintUInt((op1->ui ^= value2));
if(!exp->expType)
{
exp->expType = op1->type;
static unsigned int Int64XorAsign(struct Expression * exp, struct Operand * op1, struct Operand * op2)
{
-int value2 = op2->i;
+long long value2 = op2->i64;
exp->type = 2;
-exp->string = PrintInt64(op1->i ^= value2);
+exp->string = PrintInt64((op1->i64 ^= value2));
if(!exp->expType)
{
exp->expType = op1->type;
static unsigned int UInt64XorAsign(struct Expression * exp, struct Operand * op1, struct Operand * op2)
{
-unsigned int value2 = op2->ui;
+uint64 value2 = op2->ui64;
exp->type = 2;
-exp->string = PrintUInt64(op1->ui ^= value2);
+exp->string = PrintUInt64((op1->ui64 ^= value2));
if(!exp->expType)
{
exp->expType = op1->type;
short value2 = op2->s;
exp->type = 2;
-exp->string = PrintShort(op1->s ^= value2);
+exp->string = PrintShort((op1->s ^= value2));
if(!exp->expType)
{
exp->expType = op1->type;
unsigned short value2 = op2->us;
exp->type = 2;
-exp->string = PrintUShort(op1->us ^= value2);
+exp->string = PrintUShort((op1->us ^= value2));
if(!exp->expType)
{
exp->expType = op1->type;
char value2 = op2->c;
exp->type = 2;
-exp->string = PrintChar(op1->c ^= value2);
+exp->string = PrintChar((op1->c ^= value2));
if(!exp->expType)
{
exp->expType = op1->type;
unsigned char value2 = op2->uc;
exp->type = 2;
-exp->string = PrintUChar(op1->uc ^= value2);
+exp->string = PrintUChar((op1->uc ^= value2));
if(!exp->expType)
{
exp->expType = op1->type;
int value2 = op2->i;
exp->type = 2;
-exp->string = PrintInt(op1->i <<= value2);
+exp->string = PrintInt((op1->i <<= value2));
if(!exp->expType)
{
exp->expType = op1->type;
unsigned int value2 = op2->ui;
exp->type = 2;
-exp->string = PrintUInt(op1->ui <<= value2);
+exp->string = PrintUInt((op1->ui <<= value2));
if(!exp->expType)
{
exp->expType = op1->type;
static unsigned int Int64LShiftAsign(struct Expression * exp, struct Operand * op1, struct Operand * op2)
{
-int value2 = op2->i;
+long long value2 = op2->i64;
exp->type = 2;
-exp->string = PrintInt64(op1->i <<= value2);
+exp->string = PrintInt64((op1->i64 <<= value2));
if(!exp->expType)
{
exp->expType = op1->type;
static unsigned int UInt64LShiftAsign(struct Expression * exp, struct Operand * op1, struct Operand * op2)
{
-unsigned int value2 = op2->ui;
+uint64 value2 = op2->ui64;
exp->type = 2;
-exp->string = PrintUInt64(op1->ui <<= value2);
+exp->string = PrintUInt64((op1->ui64 <<= value2));
if(!exp->expType)
{
exp->expType = op1->type;
short value2 = op2->s;
exp->type = 2;
-exp->string = PrintShort(op1->s <<= value2);
+exp->string = PrintShort((op1->s <<= value2));
if(!exp->expType)
{
exp->expType = op1->type;
unsigned short value2 = op2->us;
exp->type = 2;
-exp->string = PrintUShort(op1->us <<= value2);
+exp->string = PrintUShort((op1->us <<= value2));
if(!exp->expType)
{
exp->expType = op1->type;
char value2 = op2->c;
exp->type = 2;
-exp->string = PrintChar(op1->c <<= value2);
+exp->string = PrintChar((op1->c <<= value2));
if(!exp->expType)
{
exp->expType = op1->type;
unsigned char value2 = op2->uc;
exp->type = 2;
-exp->string = PrintUChar(op1->uc <<= value2);
+exp->string = PrintUChar((op1->uc <<= value2));
if(!exp->expType)
{
exp->expType = op1->type;
int value2 = op2->i;
exp->type = 2;
-exp->string = PrintInt(op1->i >>= value2);
+exp->string = PrintInt((op1->i >>= value2));
if(!exp->expType)
{
exp->expType = op1->type;
unsigned int value2 = op2->ui;
exp->type = 2;
-exp->string = PrintUInt(op1->ui >>= value2);
+exp->string = PrintUInt((op1->ui >>= value2));
if(!exp->expType)
{
exp->expType = op1->type;
static unsigned int Int64RShiftAsign(struct Expression * exp, struct Operand * op1, struct Operand * op2)
{
-int value2 = op2->i;
+long long value2 = op2->i64;
exp->type = 2;
-exp->string = PrintInt64(op1->i >>= value2);
+exp->string = PrintInt64((op1->i64 >>= value2));
if(!exp->expType)
{
exp->expType = op1->type;
static unsigned int UInt64RShiftAsign(struct Expression * exp, struct Operand * op1, struct Operand * op2)
{
-unsigned int value2 = op2->ui;
+uint64 value2 = op2->ui64;
exp->type = 2;
-exp->string = PrintUInt64(op1->ui >>= value2);
+exp->string = PrintUInt64((op1->ui64 >>= value2));
if(!exp->expType)
{
exp->expType = op1->type;
short value2 = op2->s;
exp->type = 2;
-exp->string = PrintShort(op1->s >>= value2);
+exp->string = PrintShort((op1->s >>= value2));
if(!exp->expType)
{
exp->expType = op1->type;
unsigned short value2 = op2->us;
exp->type = 2;
-exp->string = PrintUShort(op1->us >>= value2);
+exp->string = PrintUShort((op1->us >>= value2));
if(!exp->expType)
{
exp->expType = op1->type;
char value2 = op2->c;
exp->type = 2;
-exp->string = PrintChar(op1->c >>= value2);
+exp->string = PrintChar((op1->c >>= value2));
if(!exp->expType)
{
exp->expType = op1->type;
unsigned char value2 = op2->uc;
exp->type = 2;
-exp->string = PrintUChar(op1->uc >>= value2);
+exp->string = PrintUChar((op1->uc >>= value2));
if(!exp->expType)
{
exp->expType = op1->type;
static unsigned int Int64Not(struct Expression * exp, struct Operand * op1)
{
exp->type = 2;
-exp->string = PrintInt64((int)(!op1->i));
+exp->string = PrintInt64((long long)(!op1->i64));
if(!exp->expType)
{
exp->expType = op1->type;
static unsigned int UInt64Not(struct Expression * exp, struct Operand * op1)
{
exp->type = 2;
-exp->string = PrintUInt64((unsigned int)(!op1->ui));
+exp->string = PrintUInt64((uint64)(!op1->ui64));
if(!exp->expType)
{
exp->expType = op1->type;
int value2 = op2->i;
exp->type = 2;
-exp->string = PrintInt(op1->i == value2);
+exp->string = PrintInt((int)(op1->i == value2));
if(!exp->expType)
{
exp->expType = op1->type;
unsigned int value2 = op2->ui;
exp->type = 2;
-exp->string = PrintUInt(op1->ui == value2);
+exp->string = PrintUInt((unsigned int)(op1->ui == value2));
if(!exp->expType)
{
exp->expType = op1->type;
static unsigned int Int64Equ(struct Expression * exp, struct Operand * op1, struct Operand * op2)
{
-int value2 = op2->i;
+long long value2 = op2->i64;
exp->type = 2;
-exp->string = PrintInt64(op1->i == value2);
+exp->string = PrintInt64((long long)(op1->i64 == value2));
if(!exp->expType)
{
exp->expType = op1->type;
static unsigned int UInt64Equ(struct Expression * exp, struct Operand * op1, struct Operand * op2)
{
-unsigned int value2 = op2->ui;
+uint64 value2 = op2->ui64;
exp->type = 2;
-exp->string = PrintUInt64(op1->ui == value2);
+exp->string = PrintUInt64((uint64)(op1->ui64 == value2));
if(!exp->expType)
{
exp->expType = op1->type;
short value2 = op2->s;
exp->type = 2;
-exp->string = PrintShort(op1->s == value2);
+exp->string = PrintShort((short)(op1->s == value2));
if(!exp->expType)
{
exp->expType = op1->type;
unsigned short value2 = op2->us;
exp->type = 2;
-exp->string = PrintUShort(op1->us == value2);
+exp->string = PrintUShort((unsigned short)(op1->us == value2));
if(!exp->expType)
{
exp->expType = op1->type;
char value2 = op2->c;
exp->type = 2;
-exp->string = PrintChar(op1->c == value2);
+exp->string = PrintChar((char)(op1->c == value2));
if(!exp->expType)
{
exp->expType = op1->type;
unsigned char value2 = op2->uc;
exp->type = 2;
-exp->string = PrintUChar(op1->uc == value2);
+exp->string = PrintUChar((unsigned char)(op1->uc == value2));
if(!exp->expType)
{
exp->expType = op1->type;
float value2 = op2->f;
exp->type = 2;
-exp->string = PrintFloat(op1->f == value2);
+exp->string = PrintFloat((float)(op1->f == value2));
if(!exp->expType)
{
exp->expType = op1->type;
double value2 = op2->d;
exp->type = 2;
-exp->string = PrintDouble(op1->d == value2);
+exp->string = PrintDouble((double)(op1->d == value2));
if(!exp->expType)
{
exp->expType = op1->type;
int value2 = op2->i;
exp->type = 2;
-exp->string = PrintInt(op1->i != value2);
+exp->string = PrintInt((int)(op1->i != value2));
if(!exp->expType)
{
exp->expType = op1->type;
unsigned int value2 = op2->ui;
exp->type = 2;
-exp->string = PrintUInt(op1->ui != value2);
+exp->string = PrintUInt((unsigned int)(op1->ui != value2));
if(!exp->expType)
{
exp->expType = op1->type;
static unsigned int Int64Nqu(struct Expression * exp, struct Operand * op1, struct Operand * op2)
{
-int value2 = op2->i;
+long long value2 = op2->i64;
exp->type = 2;
-exp->string = PrintInt64(op1->i != value2);
+exp->string = PrintInt64((long long)(op1->i64 != value2));
if(!exp->expType)
{
exp->expType = op1->type;
static unsigned int UInt64Nqu(struct Expression * exp, struct Operand * op1, struct Operand * op2)
{
-unsigned int value2 = op2->ui;
+uint64 value2 = op2->ui64;
exp->type = 2;
-exp->string = PrintUInt64(op1->ui != value2);
+exp->string = PrintUInt64((uint64)(op1->ui64 != value2));
if(!exp->expType)
{
exp->expType = op1->type;
short value2 = op2->s;
exp->type = 2;
-exp->string = PrintShort(op1->s != value2);
+exp->string = PrintShort((short)(op1->s != value2));
if(!exp->expType)
{
exp->expType = op1->type;
unsigned short value2 = op2->us;
exp->type = 2;
-exp->string = PrintUShort(op1->us != value2);
+exp->string = PrintUShort((unsigned short)(op1->us != value2));
if(!exp->expType)
{
exp->expType = op1->type;
char value2 = op2->c;
exp->type = 2;
-exp->string = PrintChar(op1->c != value2);
+exp->string = PrintChar((char)(op1->c != value2));
if(!exp->expType)
{
exp->expType = op1->type;
unsigned char value2 = op2->uc;
exp->type = 2;
-exp->string = PrintUChar(op1->uc != value2);
+exp->string = PrintUChar((unsigned char)(op1->uc != value2));
if(!exp->expType)
{
exp->expType = op1->type;
float value2 = op2->f;
exp->type = 2;
-exp->string = PrintFloat(op1->f != value2);
+exp->string = PrintFloat((float)(op1->f != value2));
if(!exp->expType)
{
exp->expType = op1->type;
double value2 = op2->d;
exp->type = 2;
-exp->string = PrintDouble(op1->d != value2);
+exp->string = PrintDouble((double)(op1->d != value2));
if(!exp->expType)
{
exp->expType = op1->type;
int value2 = op2->i;
exp->type = 2;
-exp->string = PrintInt(op1->i && value2);
+exp->string = PrintInt((int)(op1->i && value2));
if(!exp->expType)
{
exp->expType = op1->type;
unsigned int value2 = op2->ui;
exp->type = 2;
-exp->string = PrintUInt(op1->ui && value2);
+exp->string = PrintUInt((unsigned int)(op1->ui && value2));
if(!exp->expType)
{
exp->expType = op1->type;
static unsigned int Int64And(struct Expression * exp, struct Operand * op1, struct Operand * op2)
{
-int value2 = op2->i;
+long long value2 = op2->i64;
exp->type = 2;
-exp->string = PrintInt64(op1->i && value2);
+exp->string = PrintInt64((long long)(op1->i64 && value2));
if(!exp->expType)
{
exp->expType = op1->type;
static unsigned int UInt64And(struct Expression * exp, struct Operand * op1, struct Operand * op2)
{
-unsigned int value2 = op2->ui;
+uint64 value2 = op2->ui64;
exp->type = 2;
-exp->string = PrintUInt64(op1->ui && value2);
+exp->string = PrintUInt64((uint64)(op1->ui64 && value2));
if(!exp->expType)
{
exp->expType = op1->type;
short value2 = op2->s;
exp->type = 2;
-exp->string = PrintShort(op1->s && value2);
+exp->string = PrintShort((short)(op1->s && value2));
if(!exp->expType)
{
exp->expType = op1->type;
unsigned short value2 = op2->us;
exp->type = 2;
-exp->string = PrintUShort(op1->us && value2);
+exp->string = PrintUShort((unsigned short)(op1->us && value2));
if(!exp->expType)
{
exp->expType = op1->type;
char value2 = op2->c;
exp->type = 2;
-exp->string = PrintChar(op1->c && value2);
+exp->string = PrintChar((char)(op1->c && value2));
if(!exp->expType)
{
exp->expType = op1->type;
unsigned char value2 = op2->uc;
exp->type = 2;
-exp->string = PrintUChar(op1->uc && value2);
+exp->string = PrintUChar((unsigned char)(op1->uc && value2));
if(!exp->expType)
{
exp->expType = op1->type;
float value2 = op2->f;
exp->type = 2;
-exp->string = PrintFloat(op1->f && value2);
+exp->string = PrintFloat((float)(op1->f && value2));
if(!exp->expType)
{
exp->expType = op1->type;
double value2 = op2->d;
exp->type = 2;
-exp->string = PrintDouble(op1->d && value2);
+exp->string = PrintDouble((double)(op1->d && value2));
if(!exp->expType)
{
exp->expType = op1->type;
int value2 = op2->i;
exp->type = 2;
-exp->string = PrintInt(op1->i || value2);
+exp->string = PrintInt((int)(op1->i || value2));
if(!exp->expType)
{
exp->expType = op1->type;
unsigned int value2 = op2->ui;
exp->type = 2;
-exp->string = PrintUInt(op1->ui || value2);
+exp->string = PrintUInt((unsigned int)(op1->ui || value2));
if(!exp->expType)
{
exp->expType = op1->type;
static unsigned int Int64Or(struct Expression * exp, struct Operand * op1, struct Operand * op2)
{
-int value2 = op2->i;
+long long value2 = op2->i64;
exp->type = 2;
-exp->string = PrintInt64(op1->i || value2);
+exp->string = PrintInt64((long long)(op1->i64 || value2));
if(!exp->expType)
{
exp->expType = op1->type;
static unsigned int UInt64Or(struct Expression * exp, struct Operand * op1, struct Operand * op2)
{
-unsigned int value2 = op2->ui;
+uint64 value2 = op2->ui64;
exp->type = 2;
-exp->string = PrintUInt64(op1->ui || value2);
+exp->string = PrintUInt64((uint64)(op1->ui64 || value2));
if(!exp->expType)
{
exp->expType = op1->type;
short value2 = op2->s;
exp->type = 2;
-exp->string = PrintShort(op1->s || value2);
+exp->string = PrintShort((short)(op1->s || value2));
if(!exp->expType)
{
exp->expType = op1->type;
unsigned short value2 = op2->us;
exp->type = 2;
-exp->string = PrintUShort(op1->us || value2);
+exp->string = PrintUShort((unsigned short)(op1->us || value2));
if(!exp->expType)
{
exp->expType = op1->type;
char value2 = op2->c;
exp->type = 2;
-exp->string = PrintChar(op1->c || value2);
+exp->string = PrintChar((char)(op1->c || value2));
if(!exp->expType)
{
exp->expType = op1->type;
unsigned char value2 = op2->uc;
exp->type = 2;
-exp->string = PrintUChar(op1->uc || value2);
+exp->string = PrintUChar((unsigned char)(op1->uc || value2));
if(!exp->expType)
{
exp->expType = op1->type;
float value2 = op2->f;
exp->type = 2;
-exp->string = PrintFloat(op1->f || value2);
+exp->string = PrintFloat((float)(op1->f || value2));
if(!exp->expType)
{
exp->expType = op1->type;
double value2 = op2->d;
exp->type = 2;
-exp->string = PrintDouble(op1->d || value2);
+exp->string = PrintDouble((double)(op1->d || value2));
if(!exp->expType)
{
exp->expType = op1->type;
int value2 = op2->i;
exp->type = 2;
-exp->string = PrintInt(op1->i > value2);
+exp->string = PrintInt((int)(op1->i > value2));
if(!exp->expType)
{
exp->expType = op1->type;
unsigned int value2 = op2->ui;
exp->type = 2;
-exp->string = PrintUInt(op1->ui > value2);
+exp->string = PrintUInt((unsigned int)(op1->ui > value2));
if(!exp->expType)
{
exp->expType = op1->type;
static unsigned int Int64Grt(struct Expression * exp, struct Operand * op1, struct Operand * op2)
{
-int value2 = op2->i;
+long long value2 = op2->i64;
exp->type = 2;
-exp->string = PrintInt64(op1->i > value2);
+exp->string = PrintInt64((long long)(op1->i64 > value2));
if(!exp->expType)
{
exp->expType = op1->type;
static unsigned int UInt64Grt(struct Expression * exp, struct Operand * op1, struct Operand * op2)
{
-unsigned int value2 = op2->ui;
+uint64 value2 = op2->ui64;
exp->type = 2;
-exp->string = PrintUInt64(op1->ui > value2);
+exp->string = PrintUInt64((uint64)(op1->ui64 > value2));
if(!exp->expType)
{
exp->expType = op1->type;
short value2 = op2->s;
exp->type = 2;
-exp->string = PrintShort(op1->s > value2);
+exp->string = PrintShort((short)(op1->s > value2));
if(!exp->expType)
{
exp->expType = op1->type;
unsigned short value2 = op2->us;
exp->type = 2;
-exp->string = PrintUShort(op1->us > value2);
+exp->string = PrintUShort((unsigned short)(op1->us > value2));
if(!exp->expType)
{
exp->expType = op1->type;
char value2 = op2->c;
exp->type = 2;
-exp->string = PrintChar(op1->c > value2);
+exp->string = PrintChar((char)(op1->c > value2));
if(!exp->expType)
{
exp->expType = op1->type;
unsigned char value2 = op2->uc;
exp->type = 2;
-exp->string = PrintUChar(op1->uc > value2);
+exp->string = PrintUChar((unsigned char)(op1->uc > value2));
if(!exp->expType)
{
exp->expType = op1->type;
float value2 = op2->f;
exp->type = 2;
-exp->string = PrintFloat(op1->f > value2);
+exp->string = PrintFloat((float)(op1->f > value2));
if(!exp->expType)
{
exp->expType = op1->type;
double value2 = op2->d;
exp->type = 2;
-exp->string = PrintDouble(op1->d > value2);
+exp->string = PrintDouble((double)(op1->d > value2));
if(!exp->expType)
{
exp->expType = op1->type;
int value2 = op2->i;
exp->type = 2;
-exp->string = PrintInt(op1->i < value2);
+exp->string = PrintInt((int)(op1->i < value2));
if(!exp->expType)
{
exp->expType = op1->type;
unsigned int value2 = op2->ui;
exp->type = 2;
-exp->string = PrintUInt(op1->ui < value2);
+exp->string = PrintUInt((unsigned int)(op1->ui < value2));
if(!exp->expType)
{
exp->expType = op1->type;
static unsigned int Int64Sma(struct Expression * exp, struct Operand * op1, struct Operand * op2)
{
-int value2 = op2->i;
+long long value2 = op2->i64;
exp->type = 2;
-exp->string = PrintInt64(op1->i < value2);
+exp->string = PrintInt64((long long)(op1->i64 < value2));
if(!exp->expType)
{
exp->expType = op1->type;
static unsigned int UInt64Sma(struct Expression * exp, struct Operand * op1, struct Operand * op2)
{
-unsigned int value2 = op2->ui;
+uint64 value2 = op2->ui64;
exp->type = 2;
-exp->string = PrintUInt64(op1->ui < value2);
+exp->string = PrintUInt64((uint64)(op1->ui64 < value2));
if(!exp->expType)
{
exp->expType = op1->type;
short value2 = op2->s;
exp->type = 2;
-exp->string = PrintShort(op1->s < value2);
+exp->string = PrintShort((short)(op1->s < value2));
if(!exp->expType)
{
exp->expType = op1->type;
unsigned short value2 = op2->us;
exp->type = 2;
-exp->string = PrintUShort(op1->us < value2);
+exp->string = PrintUShort((unsigned short)(op1->us < value2));
if(!exp->expType)
{
exp->expType = op1->type;
char value2 = op2->c;
exp->type = 2;
-exp->string = PrintChar(op1->c < value2);
+exp->string = PrintChar((char)(op1->c < value2));
if(!exp->expType)
{
exp->expType = op1->type;
unsigned char value2 = op2->uc;
exp->type = 2;
-exp->string = PrintUChar(op1->uc < value2);
+exp->string = PrintUChar((unsigned char)(op1->uc < value2));
if(!exp->expType)
{
exp->expType = op1->type;
float value2 = op2->f;
exp->type = 2;
-exp->string = PrintFloat(op1->f < value2);
+exp->string = PrintFloat((float)(op1->f < value2));
if(!exp->expType)
{
exp->expType = op1->type;
double value2 = op2->d;
exp->type = 2;
-exp->string = PrintDouble(op1->d < value2);
+exp->string = PrintDouble((double)(op1->d < value2));
if(!exp->expType)
{
exp->expType = op1->type;
int value2 = op2->i;
exp->type = 2;
-exp->string = PrintInt(op1->i >= value2);
+exp->string = PrintInt((int)(op1->i >= value2));
if(!exp->expType)
{
exp->expType = op1->type;
unsigned int value2 = op2->ui;
exp->type = 2;
-exp->string = PrintUInt(op1->ui >= value2);
+exp->string = PrintUInt((unsigned int)(op1->ui >= value2));
if(!exp->expType)
{
exp->expType = op1->type;
static unsigned int Int64GrtEqu(struct Expression * exp, struct Operand * op1, struct Operand * op2)
{
-int value2 = op2->i;
+long long value2 = op2->i64;
exp->type = 2;
-exp->string = PrintInt64(op1->i >= value2);
+exp->string = PrintInt64((long long)(op1->i64 >= value2));
if(!exp->expType)
{
exp->expType = op1->type;
static unsigned int UInt64GrtEqu(struct Expression * exp, struct Operand * op1, struct Operand * op2)
{
-unsigned int value2 = op2->ui;
+uint64 value2 = op2->ui64;
exp->type = 2;
-exp->string = PrintUInt64(op1->ui >= value2);
+exp->string = PrintUInt64((uint64)(op1->ui64 >= value2));
if(!exp->expType)
{
exp->expType = op1->type;
short value2 = op2->s;
exp->type = 2;
-exp->string = PrintShort(op1->s >= value2);
+exp->string = PrintShort((short)(op1->s >= value2));
if(!exp->expType)
{
exp->expType = op1->type;
unsigned short value2 = op2->us;
exp->type = 2;
-exp->string = PrintUShort(op1->us >= value2);
+exp->string = PrintUShort((unsigned short)(op1->us >= value2));
if(!exp->expType)
{
exp->expType = op1->type;
char value2 = op2->c;
exp->type = 2;
-exp->string = PrintChar(op1->c >= value2);
+exp->string = PrintChar((char)(op1->c >= value2));
if(!exp->expType)
{
exp->expType = op1->type;
unsigned char value2 = op2->uc;
exp->type = 2;
-exp->string = PrintUChar(op1->uc >= value2);
+exp->string = PrintUChar((unsigned char)(op1->uc >= value2));
if(!exp->expType)
{
exp->expType = op1->type;
float value2 = op2->f;
exp->type = 2;
-exp->string = PrintFloat(op1->f >= value2);
+exp->string = PrintFloat((float)(op1->f >= value2));
if(!exp->expType)
{
exp->expType = op1->type;
double value2 = op2->d;
exp->type = 2;
-exp->string = PrintDouble(op1->d >= value2);
+exp->string = PrintDouble((double)(op1->d >= value2));
if(!exp->expType)
{
exp->expType = op1->type;
int value2 = op2->i;
exp->type = 2;
-exp->string = PrintInt(op1->i <= value2);
+exp->string = PrintInt((int)(op1->i <= value2));
if(!exp->expType)
{
exp->expType = op1->type;
unsigned int value2 = op2->ui;
exp->type = 2;
-exp->string = PrintUInt(op1->ui <= value2);
+exp->string = PrintUInt((unsigned int)(op1->ui <= value2));
if(!exp->expType)
{
exp->expType = op1->type;
static unsigned int Int64SmaEqu(struct Expression * exp, struct Operand * op1, struct Operand * op2)
{
-int value2 = op2->i;
+long long value2 = op2->i64;
exp->type = 2;
-exp->string = PrintInt64(op1->i <= value2);
+exp->string = PrintInt64((long long)(op1->i64 <= value2));
if(!exp->expType)
{
exp->expType = op1->type;
static unsigned int UInt64SmaEqu(struct Expression * exp, struct Operand * op1, struct Operand * op2)
{
-unsigned int value2 = op2->ui;
+uint64 value2 = op2->ui64;
exp->type = 2;
-exp->string = PrintUInt64(op1->ui <= value2);
+exp->string = PrintUInt64((uint64)(op1->ui64 <= value2));
if(!exp->expType)
{
exp->expType = op1->type;
short value2 = op2->s;
exp->type = 2;
-exp->string = PrintShort(op1->s <= value2);
+exp->string = PrintShort((short)(op1->s <= value2));
if(!exp->expType)
{
exp->expType = op1->type;
unsigned short value2 = op2->us;
exp->type = 2;
-exp->string = PrintUShort(op1->us <= value2);
+exp->string = PrintUShort((unsigned short)(op1->us <= value2));
if(!exp->expType)
{
exp->expType = op1->type;
char value2 = op2->c;
exp->type = 2;
-exp->string = PrintChar(op1->c <= value2);
+exp->string = PrintChar((char)(op1->c <= value2));
if(!exp->expType)
{
exp->expType = op1->type;
unsigned char value2 = op2->uc;
exp->type = 2;
-exp->string = PrintUChar(op1->uc <= value2);
+exp->string = PrintUChar((unsigned char)(op1->uc <= value2));
if(!exp->expType)
{
exp->expType = op1->type;
float value2 = op2->f;
exp->type = 2;
-exp->string = PrintFloat(op1->f <= value2);
+exp->string = PrintFloat((float)(op1->f <= value2));
if(!exp->expType)
{
exp->expType = op1->type;
double value2 = op2->d;
exp->type = 2;
-exp->string = PrintDouble(op1->d <= value2);
+exp->string = PrintDouble((double)(op1->d <= value2));
if(!exp->expType)
{
exp->expType = op1->type;
static unsigned int Int64Cond(struct Expression * exp, struct Operand * op1, struct Operand * op2, struct Operand * op3)
{
exp->type = 2;
-exp->string = PrintInt64(op1->i ? op2->i : op3->i);
+exp->string = PrintInt64(op1->i64 ? op2->i64 : op3->i64);
if(!exp->expType)
{
exp->expType = op1->type;
static unsigned int UInt64Cond(struct Expression * exp, struct Operand * op1, struct Operand * op2, struct Operand * op3)
{
exp->type = 2;
-exp->string = PrintUInt64(op1->ui ? op2->ui : op3->ui);
+exp->string = PrintUInt64(op1->ui64 ? op2->ui64 : op3->ui64);
if(!exp->expType)
{
exp->expType = op1->type;
return 0x1;
}
-static unsigned int FloatCond(struct Expression * exp, struct Operand * op1, struct Operand * op2, struct Operand * op3)
-{
-exp->type = 2;
-exp->string = PrintFloat(op1->f ? op2->f : op3->f);
-if(!exp->expType)
-{
-exp->expType = op1->type;
-if(op1->type)
-op1->type->refCount++;
-}
-return 0x1;
-}
-
-static unsigned int DoubleCond(struct Expression * exp, struct Operand * op1, struct Operand * op2, struct Operand * op3)
-{
-exp->type = 2;
-exp->string = PrintDouble(op1->d ? op2->d : op3->d);
-if(!exp->expType)
-{
-exp->expType = op1->type;
-if(op1->type)
-op1->type->refCount++;
-}
-return 0x1;
-}
-
struct OpTable intOps =
{
IntAdd, IntSub, IntMul, IntDiv, IntMod, IntNeg, IntInc, IntDec, IntAsign, IntAddAsign, IntSubAsign, IntMulAsign, IntDivAsign, IntModAsign, IntBitAnd, IntBitOr, IntBitXor, IntLShift, IntRShift, IntBitNot, IntAndAsign, IntOrAsign, IntXorAsign, IntLShiftAsign, IntRShiftAsign, IntNot, IntEqu, IntNqu, IntAnd, IntOr, IntGrt, IntSma, IntGrtEqu, IntSmaEqu, IntCond
case '\"':
output[d] = '\"';
break;
+case '\'':
+output[d] = '\'';
+break;
default:
-output[d++] = '\\';
output[d] = ch;
}
d++;
output[d] = '\0';
}
+int UnescapeString(char * d, char * s, int len)
+{
+int j = 0, k = 0;
+char ch;
+
+while(j < len && (ch = s[j]))
+{
+switch(ch)
+{
+case '\\':
+switch((ch = s[++j]))
+{
+case 'n':
+d[k] = '\n';
+break;
+case 't':
+d[k] = '\t';
+break;
+case 'a':
+d[k] = '\a';
+break;
+case 'b':
+d[k] = '\b';
+break;
+case 'f':
+d[k] = '\f';
+break;
+case 'r':
+d[k] = '\r';
+break;
+case 'v':
+d[k] = '\v';
+break;
+case '\\':
+d[k] = '\\';
+break;
+case '\"':
+d[k] = '\"';
+break;
+case '\'':
+d[k] = '\'';
+break;
+default:
+d[k] = '\\';
+d[k] = ch;
+}
+break;
+default:
+d[k] = ch;
+}
+j++, k++;
+}
+d[k] = '\0';
+return k;
+}
+
+char * OffsetEscapedString(char * s, int len, int offset)
+{
+char ch;
+int j = 0, k = 0;
+
+while(j < len && k < offset && (ch = s[j]))
+{
+if(ch == '\\')
+++j;
+j++, k++;
+}
+return (k == offset) ? s + j : (((void *)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 * * );
+extern float (* __ecereMethod_float_inf)(void);
+
+extern float (* __ecereMethod_float_nan)(void);
+
+extern double (* __ecereMethod_double_inf)(void);
+
+extern double (* __ecereMethod_double_nan)(void);
+
struct Operand GetOperand(struct Expression * exp)
{
struct Operand op =
type->_class->registered->dataType = ProcessTypeString(type->_class->registered->dataTypeString, 0x0);
type = type->_class->registered->dataType;
}
+if(exp->type == 3 && op.kind == 13)
+{
+op.ui64 = (uint64)exp->string;
+op.kind = 13;
+op.ops = uint64Ops;
+}
+else if(exp->isConstant && exp->type == 2)
+{
op.kind = type->kind;
op.type = exp->expType;
-if(exp->isConstant && exp->type == 2)
-{
switch(op.kind)
{
case 24:
case 1:
{
if(exp->constant[0] == '\'')
+{
op.c = exp->constant[1];
+op.ops = charOps;
+}
else if(type->isSigned)
{
op.c = (char)strtol(exp->constant, (((void *)0)), 0);
if(type->isSigned)
{
op.i64 = __ecereNameSpace__ecere__com___strtoi64(exp->constant, (((void *)0)), 0);
-op.ops = intOps;
+op.ops = int64Ops;
}
else
{
op.ui64 = __ecereNameSpace__ecere__com___strtoui64(exp->constant, (((void *)0)), 0);
-op.ops = uintOps;
+op.ops = uint64Ops;
}
op.kind = 4;
break;
op.kind = 4;
break;
case 6:
+if(!strcmp(exp->constant, "inf"))
+op.f = __ecereMethod_float_inf();
+else if(!strcmp(exp->constant, "-inf"))
+op.f = -__ecereMethod_float_inf();
+else if(!strcmp(exp->constant, "nan"))
+op.f = __ecereMethod_float_nan();
+else if(!strcmp(exp->constant, "-nan"))
+op.f = -__ecereMethod_float_nan();
+else
op.f = (float)strtod(exp->constant, (((void *)0)));
op.ops = floatOps;
break;
case 7:
+if(!strcmp(exp->constant, "inf"))
+op.d = __ecereMethod_double_inf();
+else if(!strcmp(exp->constant, "-inf"))
+op.d = -__ecereMethod_double_inf();
+else if(!strcmp(exp->constant, "nan"))
+op.d = __ecereMethod_double_nan();
+else if(!strcmp(exp->constant, "-nan"))
+op.d = -__ecereMethod_double_nan();
+else
op.d = (double)strtod(exp->constant, (((void *)0)));
op.ops = doubleOps;
break;
case 8:
op.ui64 = __ecereNameSpace__ecere__com___strtoui64(exp->constant, (((void *)0)), 0);
op.kind = 13;
-op.ops = uintOps;
+op.ops = uint64Ops;
break;
}
}
break;
}
default:
-Compiler_Error(__ecereNameSpace__ecere__GetTranslatedString(__thisModule, "Unhandled type populating instance\n", (((void *)0))));
+Compiler_Error(__ecereNameSpace__ecere__GetTranslatedString("ec", "Unhandled type populating instance\n", (((void *)0))));
}
}
ListAdd(memberList, member);
break;
}
default:
-Compiler_Error(__ecereNameSpace__ecere__GetTranslatedString(__thisModule, "Unhandled type populating instance\n", (((void *)0))));
+Compiler_Error(__ecereNameSpace__ecere__GetTranslatedString("ec", "Unhandled type populating instance\n", (((void *)0))));
}
}
ListAdd(memberList, member);
{
struct __ecereNameSpace__ecere__com__BitMember * bitMember = (struct __ecereNameSpace__ecere__com__BitMember *)dataMember;
struct Type * type;
-int part = 0;
+uint64 part;
-GetInt(value, &part);
bits = (bits & ~bitMember->mask);
if(!bitMember->dataType)
bitMember->dataType = ProcessTypeString(bitMember->dataTypeString, 0x0);
{
case 24:
case 1:
-if(type->isSigned)
-bits |= ((char)part << bitMember->pos);
-else
-bits |= ((unsigned char)part << bitMember->pos);
+{
+unsigned char v;
+
+type->isSigned ? GetChar(value, &v) : GetUChar(value, &v);
+part = (uint64)v;
break;
+}
case 2:
-if(type->isSigned)
-bits |= ((short)part << bitMember->pos);
-else
-bits |= ((unsigned short)part << bitMember->pos);
-break;
+{
+unsigned short v;
+
+type->isSigned ? GetShort(value, &v) : GetUShort(value, &v);
+part = (uint64)v;
+break;
+}
case 3:
case 5:
-if(type->isSigned)
-bits |= (part << bitMember->pos);
-else
-bits |= ((unsigned int)part << bitMember->pos);
+{
+unsigned int v;
+
+type->isSigned ? GetInt(value, &v) : GetUInt(value, &v);
+part = (uint64)v;
break;
+}
case 4:
-if(type->isSigned)
-bits |= ((long long)part << bitMember->pos);
-else
-bits |= ((uint64)part << bitMember->pos);
-break;
-case 22:
-if(type->isSigned)
{
-bits |= ((intptr_t)part << bitMember->pos);
+uint64 v;
+
+type->isSigned ? GetInt64(value, &v) : GetUInt64(value, &v);
+part = v;
+break;
}
-else
+case 22:
{
-bits |= ((uintptr_t)part << bitMember->pos);
-}
+intptr_t v;
+
+type->isSigned ? GetIntPtr(value, &v) : GetUIntPtr(value, &v);
+part = (uint64)v;
break;
-case 23:
-if(type->isSigned)
-{
-bits |= ((ssize_t)part << bitMember->pos);
}
-else
+case 23:
{
-bits |= ((size_t)part << bitMember->pos);
-}
+ssize_t v;
+
+type->isSigned ? GetIntSize(value, &v) : GetUIntSize(value, &v);
+part = (uint64)v;
break;
}
}
+bits += part << bitMember->pos;
+}
}
}
else
}
}
+static unsigned int Promote(struct Operand * op, int kind, unsigned int isSigned)
+{
+unsigned int result = 0x0;
+
+switch(kind)
+{
+case 2:
+if(op->kind == 1 || op->kind == 15 || op->kind == 24)
+result = isSigned ? GetOpShort(op, &op->s) : GetOpUShort(op, &op->us);
+break;
+case 3:
+case 5:
+if(op->kind == 1 || op->kind == 2 || op->kind == 15 || op->kind == 24)
+result = isSigned ? GetOpInt(op, &op->i) : GetOpUInt(op, &op->ui);
+break;
+case 4:
+if(op->kind == 1 || op->kind == 2 || op->kind == 3 || op->kind == 4 || op->kind == 5 || op->kind == 6 || op->kind == 7 || op->kind == 13 || op->kind == 15 || op->kind == 22 || op->kind == 23 || op->kind == 24)
+result = isSigned ? GetOpInt64(op, &op->i64) : GetOpUInt64(op, &op->ui64);
+break;
+case 6:
+if(op->kind == 1 || op->kind == 2 || op->kind == 3 || op->kind == 4 || op->kind == 5 || op->kind == 15 || op->kind == 22 || op->kind == 23 || op->kind == 24)
+result = GetOpFloat(op, &op->f);
+break;
+case 7:
+if(op->kind == 1 || op->kind == 2 || op->kind == 3 || op->kind == 4 || op->kind == 5 || op->kind == 6 || op->kind == 15 || op->kind == 22 || op->kind == 23 || op->kind == 24)
+result = GetOpDouble(op, &op->d);
+break;
+case 13:
+if(op->kind == 1 || op->kind == 2 || op->kind == 3 || op->kind == 4 || op->kind == 5 || op->kind == 6 || op->kind == 7 || op->kind == 13 || op->kind == 15 || op->kind == 22 || op->kind == 23 || op->kind == 24)
+result = GetOpUIntPtr(op, &op->ui64);
+break;
+case 15:
+if(op->kind == 1 || op->kind == 2 || op->kind == 3 || op->kind == 4 || op->kind == 5 || op->kind == 6 || op->kind == 7 || op->kind == 13 || op->kind == 15 || op->kind == 22 || op->kind == 23 || op->kind == 24)
+result = isSigned ? GetOpInt(op, &op->i) : GetOpUInt(op, &op->ui);
+break;
+case 22:
+if(op->kind == 1 || op->kind == 2 || op->kind == 3 || op->kind == 5 || op->kind == 15 || op->kind == 24)
+result = isSigned ? GetOpIntPtr(op, &op->i64) : GetOpUIntPtr(op, &op->i64);
+break;
+case 23:
+if(op->kind == 1 || op->kind == 2 || op->kind == 3 || op->kind == 5 || op->kind == 15 || op->kind == 24)
+result = isSigned ? GetOpIntSize(op, &op->ui64) : GetOpUIntSize(op, &op->ui64);
+break;
+}
+return result;
+}
+
void CallOperator(struct Expression * exp, struct Expression * exp1, struct Expression * exp2, struct Operand * op1, struct Operand * op2)
{
if(exp->op.op == SIZEOF)
}
else
{
+if(op1 && op2 && op1->type && op2->type && op1->kind != op2->kind)
+{
+if(Promote(op2, op1->kind, op1->type->isSigned))
+op2->kind = op1->kind, op2->ops = op1->ops;
+else if(Promote(op1, op2->kind, op2->type->isSigned))
+op1->kind = op2->kind, op1->ops = op2->ops;
+}
switch(exp->op.op)
{
case '+':
};
if(exp->op.exp2)
+{
+struct Expression * e = exp->op.exp2;
+
+while((e->type == 5 || e->type == 32 || e->type == 23) && e->list)
+{
+if(e->type == 5 || e->type == 32 || e->type == 23)
+{
+if(e->type == 23)
+e = (*((struct Statement *)(*e->compound->compound.statements).last)->expressions).last;
+else
+e = (*e->list).last;
+}
+}
+if(exp->op.op == 261 && e && e->expType)
+{
+if(e->type == 3 && e->string)
+{
+char * string = e->string;
+int len = strlen(string);
+char * tmp = __ecereNameSpace__ecere__com__eSystem_New(sizeof(char) * (len - 2 + 1));
+
+len = UnescapeString(tmp, string + 1, len - 2);
+(__ecereNameSpace__ecere__com__eSystem_Delete(tmp), tmp = 0);
+FreeExpContents(exp);
+exp->type = 2;
+exp->constant = PrintUInt(len + 1);
+}
+else
+{
+struct Type * type = e->expType;
+
+type->refCount++;
+FreeExpContents(exp);
+exp->type = 2;
+exp->constant = PrintUInt(ComputeTypeSize(type));
+FreeType(type);
+}
+break;
+}
+else
ComputeExpression(exp->op.exp2);
+}
if(exp->op.exp1)
{
ComputeExpression(exp->op.exp1);
break;
}
case 5:
-case 34:
+case 32:
{
struct Expression * e, * n;
if(!n)
{
struct __ecereNameSpace__ecere__sys__OldList * list = exp->list;
+struct Expression * prev = exp->prev;
+struct Expression * next = exp->next;
ComputeExpression(e);
FreeType(exp->expType);
FreeType(exp->destType);
*exp = *e;
+exp->prev = prev;
+exp->next = next;
((e ? (__ecereClass_Expression->Destructor ? __ecereClass_Expression->Destructor(e) : 0, __ecereNameSpace__ecere__com__eSystem_Delete(e)) : 0), e = 0);
(__ecereNameSpace__ecere__com__eSystem_Delete(list), list = 0);
}
struct __ecereNameSpace__ecere__com__DataMember * member = (((void *)0));
struct __ecereNameSpace__ecere__com__Class * convertTo = (((void *)0));
-if(type->kind == 19 && exp->member.exp->type == 26)
+if(type->kind == 19 && exp->member.exp->type == 24)
_class = __ecereNameSpace__ecere__com__eSystem_FindClass(privateModule, "ecere::com::Class");
if(!_class)
{
PopulateInstance(exp->instance);
break;
}
+case 6:
+{
+float floatValue;
+void (* Set)(void *, float) = (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;
+GetFloat(value, &floatValue);
+Set(exp->instance->data, floatValue);
+PopulateInstance(exp->instance);
+break;
+}
case 7:
{
double doubleValue;
case 1:
if(type->isSigned)
{
-char value;
+char value = (char)0;
-GetChar(e, &value);
+if(GetChar(e, &value))
+{
FreeExpContents(exp);
exp->constant = PrintChar(value);
exp->type = 2;
}
+}
else
{
-unsigned char value;
+unsigned char value = (unsigned char)0;
-GetUChar(e, &value);
+if(GetUChar(e, &value))
+{
FreeExpContents(exp);
exp->constant = PrintUChar(value);
exp->type = 2;
}
+}
break;
case 2:
if(type->isSigned)
{
-short value;
+short value = (short)0;
-GetShort(e, &value);
+if(GetShort(e, &value))
+{
FreeExpContents(exp);
exp->constant = PrintShort(value);
exp->type = 2;
}
+}
else
{
-unsigned short value;
+unsigned short value = (unsigned short)0;
-GetUShort(e, &value);
+if(GetUShort(e, &value))
+{
FreeExpContents(exp);
exp->constant = PrintUShort(value);
exp->type = 2;
}
+}
break;
case 3:
if(type->isSigned)
{
-int value;
+int value = 0;
-GetInt(e, &value);
+if(GetInt(e, &value))
+{
FreeExpContents(exp);
exp->constant = PrintInt(value);
exp->type = 2;
}
+}
else
{
-unsigned int value;
+unsigned int value = 0;
-GetUInt(e, &value);
+if(GetUInt(e, &value))
+{
FreeExpContents(exp);
exp->constant = PrintUInt(value);
exp->type = 2;
}
+}
break;
case 4:
if(type->isSigned)
{
-long long value;
+long long value = 0;
-GetInt64(e, &value);
+if(GetInt64(e, &value))
+{
FreeExpContents(exp);
exp->constant = PrintInt64(value);
exp->type = 2;
}
+}
else
{
-uint64 value;
+uint64 value = 0;
-GetUInt64(e, &value);
+if(GetUInt64(e, &value))
+{
FreeExpContents(exp);
exp->constant = PrintUInt64(value);
exp->type = 2;
}
+}
break;
case 22:
if(type->isSigned)
{
-intptr_t value;
+intptr_t value = 0;
-GetIntPtr(e, &value);
+if(GetIntPtr(e, &value))
+{
FreeExpContents(exp);
exp->constant = PrintInt64((long long)value);
exp->type = 2;
}
+}
else
{
-uintptr_t value;
+uintptr_t value = 0;
-GetUIntPtr(e, &value);
+if(GetUIntPtr(e, &value))
+{
FreeExpContents(exp);
exp->constant = PrintUInt64((uint64)value);
exp->type = 2;
}
+}
break;
case 23:
if(type->isSigned)
{
-ssize_t value;
+ssize_t value = 0;
-GetIntSize(e, &value);
+if(GetIntSize(e, &value))
+{
FreeExpContents(exp);
exp->constant = PrintInt64((long long)value);
exp->type = 2;
}
+}
else
{
-size_t value;
+size_t value = 0;
-GetUIntSize(e, &value);
+if(GetUIntSize(e, &value))
+{
FreeExpContents(exp);
exp->constant = PrintUInt64((uint64)value);
exp->type = 2;
}
+}
break;
case 6:
{
-float value;
+float value = 0;
-GetFloat(e, &value);
+if(GetFloat(e, &value))
+{
FreeExpContents(exp);
exp->constant = PrintFloat(value);
exp->type = 2;
+}
break;
}
case 7:
{
-double value;
+double value = 0;
-GetDouble(e, &value);
+if(GetDouble(e, &value))
+{
FreeExpContents(exp);
exp->constant = PrintDouble(value);
exp->type = 2;
+}
break;
}
}
int objectType = exp->expType ? exp->expType->classObjectType : 0;
*newExp = *exp;
+newExp->prev = (((void *)0));
+newExp->next = (((void *)0));
newExp->destType = (((void *)0));
if(convert->isGet)
{
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->type = 23;
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")))));
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->type = 23;
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")))));
return (((void *)0));
}
+extern unsigned int parseError;
+
+unsigned int GetParseError()
+{
+return parseError;
+}
+
extern struct __ecereNameSpace__ecere__com__Instance * fileInput;
int __ecereVMethodID___ecereNameSpace__ecere__sys__File_Write;
struct Expression * ParseExpressionString(char * expression)
{
+parseError = 0x0;
fileInput = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass___ecereNameSpace__ecere__sys__TempFile);
((int (*)(struct __ecereNameSpace__ecere__com__Instance *, void * buffer, unsigned int size, unsigned int count))__extension__ ({
struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = fileInput;
{
struct Expression * checkedExp = e, * newExp;
-while(((checkedExp->type == 5 || checkedExp->type == 34 || checkedExp->type == 25) && checkedExp->list) || checkedExp->type == 11)
+while(((checkedExp->type == 5 || checkedExp->type == 32 || checkedExp->type == 23) && checkedExp->list) || checkedExp->type == 11)
{
-if(checkedExp->type == 5 || checkedExp->type == 34 || checkedExp->type == 25)
+if(checkedExp->type == 5 || checkedExp->type == 32 || checkedExp->type == 23)
{
-if(checkedExp->type == 25)
+if(checkedExp->type == 23)
{
checkedExp = (*((struct Statement *)(*checkedExp->compound->compound.statements).last)->expressions).last;
}
char name[100];
struct __ecereNameSpace__ecere__sys__OldList * stmts = MkList();
-e->type = 25;
+e->type = 23;
sprintf(name, "__internalValue%03X", internalValueCounter++);
if(!curCompound->compound.declarations)
curCompound->compound.declarations = MkList();
}
}
checkedExp = e;
-while(((checkedExp->type == 5 || checkedExp->type == 34 || checkedExp->type == 25) && checkedExp->list) || checkedExp->type == 11)
+while(((checkedExp->type == 5 || checkedExp->type == 32 || checkedExp->type == 23) && checkedExp->list) || checkedExp->type == 11)
{
-if(checkedExp->type == 5 || checkedExp->type == 34 || checkedExp->type == 25)
+if(checkedExp->type == 5 || checkedExp->type == 32 || checkedExp->type == 23)
{
-if(checkedExp->type == 25)
+if(checkedExp->type == 23)
{
checkedExp = (*((struct Statement *)(*checkedExp->compound->compound.statements).last)->expressions).last;
}
{
if(destType->kind == 14)
{
-Compiler_Error(__ecereNameSpace__ecere__GetTranslatedString(__thisModule, "Unspecified type\n", (((void *)0))));
+Compiler_Error(__ecereNameSpace__ecere__GetTranslatedString("ec", "Unspecified type\n", (((void *)0))));
}
else if(!(destType->truth && e->expType->kind == 8 && e->expType->_class && e->expType->_class->registered && e->expType->_class->registered->type == 1))
{
extern struct Expression * MkExpCondition(struct Expression * cond, struct __ecereNameSpace__ecere__sys__OldList * expressions, struct Expression * elseExp);
-extern struct Expression * CopyExpression(struct Expression * exp);
-
extern struct Expression * MkExpTypeSize(struct TypeName * typeName);
extern struct Expression * MkExpClass(struct __ecereNameSpace__ecere__sys__OldList * specifiers, struct Declarator * decl);
{
struct Identifier * id = exp->identifier;
-if(!id)
+if(!id || !topContext)
return ;
if(id->_class && id->_class->name)
{
exp->expType = type;
if(type)
type->refCount++;
-if(type && (type->kind == 15 || (_class && _class->type == 4)))
+if(type && (type->kind == 15))
exp->isConstant = 0x1;
if(symbol->isParam || !strcmp(id->string, "this"))
{
for(c = 0; c < definedExpStackPos; c++)
if(definedExpStack[c] == definedExp)
break;
-if(c == definedExpStackPos && c < sizeof definedExpStack / sizeof(void *))
+if(c == definedExpStackPos && c < sizeof (definedExpStack) / sizeof(void *))
{
struct Location backupYylloc = yylloc;
+struct __ecereNameSpace__ecere__com__Instance * backInput = fileInput;
definedExpStack[definedExpStackPos++] = definedExp;
fileInput = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass___ecereNameSpace__ecere__sys__TempFile);
resetScanner();
expression_yyparse();
(__ecereNameSpace__ecere__com__eInstance_DecRef(fileInput), fileInput = 0);
+if(backInput)
+fileInput = backInput;
yylloc = backupYylloc;
if(parsedExpression)
{
{
if(inCompiler)
{
-Compiler_Error(__ecereNameSpace__ecere__GetTranslatedString(__thisModule, "Recursion in defined expression %s\n", (((void *)0))), id->string);
+Compiler_Error(__ecereNameSpace__ecere__GetTranslatedString("ec", "Recursion in defined expression %s\n", (((void *)0))), id->string);
}
}
}
else
{
unsigned int isSigned = constant[0] == '-';
-long long i64 = strtoll(constant, (((void *)0)), 0);
-uint64 ui64 = strtoull(constant, (((void *)0)), 0);
-unsigned int is64Bit = 0x0;
+char * endP = (((void *)0));
+long long i64 = strtoll(constant, &endP, 0);
+uint64 ui64 = strtoull(constant, &endP, 0);
+unsigned int is64Bit = endP && (!strcmp(endP, "LL") || !strcmp(endP, "ll"));
if(isSigned)
{
break;
}
case 13:
-case 28:
+case 26:
ProcessExpressionType(exp->_new.size);
exp->expType = __extension__ ({
struct Type * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Type);
DeclareType(exp->expType->type, 0x0, 0x0);
break;
case 14:
-case 29:
+case 27:
ProcessExpressionType(exp->_renew.size);
ProcessExpressionType(exp->_renew.exp);
exp->expType = __extension__ ({
unsigned int useDestType = 0x0, useSideType = 0x0;
struct Location oldyylloc = yylloc;
unsigned int useSideUnit = 0x0;
+struct __ecereNameSpace__ecere__com__Class * destClass = (exp->destType && exp->destType->kind == 8 && exp->destType->_class) ? exp->destType->_class->registered : (((void *)0));
struct Type * dummy = (dummy = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Type), dummy->count = 1, dummy->refCount = 1, dummy);
switch(exp->op.op)
case '+':
case '-':
useSideUnit = 0x1;
+useSideType = 0x1;
+useDestType = 0x1;
+break;
+case LEFT_OP:
+case RIGHT_OP:
+useSideType = 0x1;
+useDestType = 0x1;
+break;
case '|':
-case '&':
case '^':
+useSideType = 0x1;
+useDestType = 0x1;
+break;
case '/':
case '%':
+useSideType = 0x1;
+useDestType = 0x1;
+break;
+case '&':
case '*':
-if(exp->op.op != '*' || exp->op.exp1)
+if(exp->op.exp1)
{
useSideType = 0x1;
useDestType = 0x1;
}
if(exp->op.exp1)
{
-if(exp->destType && exp->destType->kind == 8 && exp->destType->_class && exp->destType->_class->registered && useDestType && ((exp->destType->_class->registered->type == 3 && useSideUnit) || exp->destType->_class->registered->type == 4 || exp->destType->_class->registered->type == 2))
+if(exp->op.exp2 && useSideUnit && useDestType && destClass && destClass->type == 3 && destClass->base->type != 3)
+useDestType = 0x0;
+if(destClass && useDestType && ((destClass->type == 3 && useSideUnit) || destClass->type == 4 || destClass->type == 2))
{
if(exp->op.exp1->destType)
FreeType(exp->op.exp1->destType);
exp->op.exp1->destType = exp->destType;
+exp->op.exp1->opDestType = 0x1;
if(exp->destType)
exp->destType->refCount++;
}
ProcessExpressionType(exp->op.exp1);
if(exp->op.exp1->destType && exp->op.op != '=')
exp->op.exp1->destType->count--;
+exp->op.exp1->opDestType = 0x0;
+if(!exp->op.exp2 && (exp->op.op == INC_OP || exp->op.op == DEC_OP) && exp->op.exp1->expType && exp->op.exp1->expType->kind == 8 && exp->op.exp1->expType->_class && exp->op.exp1->expType->_class->registered && exp->op.exp1->expType->_class->registered->type == 3)
+{
+exp->op.exp2 = MkExpConstant("1");
+exp->op.op = exp->op.op == INC_OP ? ADD_ASSIGN : SUB_ASSIGN;
+assign = 0x1;
+}
if(exp->op.exp1->destType == dummy)
{
FreeType(dummy);
else
{
exp->op.exp2->destType = exp->destType;
+if(!exp->op.exp1 || exp->op.op != '&')
+exp->op.exp2->opDestType = 0x1;
if(exp->destType)
exp->destType->refCount++;
}
if(type1 && type1->kind == 13)
{
if(exp->op.op == MUL_ASSIGN || exp->op.op == DIV_ASSIGN || exp->op.op == MOD_ASSIGN || exp->op.op == LEFT_ASSIGN || exp->op.op == RIGHT_ASSIGN || exp->op.op == AND_ASSIGN || exp->op.op == OR_ASSIGN)
-Compiler_Error(__ecereNameSpace__ecere__GetTranslatedString(__thisModule, "operator %s illegal on pointer\n", (((void *)0))), exp->op.op);
+Compiler_Error(__ecereNameSpace__ecere__GetTranslatedString("ec", "operator %s illegal on pointer\n", (((void *)0))), exp->op.op);
else if(exp->op.op == '=')
{
if(exp->op.exp2->destType)
type1->refCount++;
exp->expType = type1;
}
-else if(exp->destType && exp->destType->kind == 8 && exp->destType->_class && exp->destType->_class->registered && ((exp->destType->_class->registered->type == 3 && useDestType && useSideUnit) || (exp->destType->_class->registered->type == 4 && useDestType)))
+else if(destClass && ((destClass->type == 3 && useDestType && useSideUnit) || (destClass->type == 4 && useDestType)))
{
if(exp->op.exp2->destType)
FreeType(exp->op.exp2->destType);
exp->op.exp2->destType = exp->destType;
+if(exp->op.op != '&')
+exp->op.exp2->opDestType = 0x1;
if(exp->destType)
exp->destType->refCount++;
}
}
if(exp->op.exp2->destType && exp->op.op != '=')
exp->op.exp2->destType->count++;
+if(exp->op.op == SIZEOF)
+{
+struct Expression * e = exp->op.exp2;
+
+while((e->type == 5 || e->type == 32 || e->type == 23) && e->list)
+{
+if(e->type == 5 || e->type == 32 || e->type == 23)
+{
+if(e->type == 23)
+e = (*((struct Statement *)(*e->compound->compound.statements).last)->expressions).last;
+else
+e = (*e->list).last;
+}
+}
+if(e->type == 11 && e->cast.exp)
+e->cast.exp->needCast = 0x1;
+}
ProcessExpressionType(exp->op.exp2);
+exp->op.exp2->opDestType = 0x0;
if(exp->op.exp2->destType && exp->op.op != '=')
exp->op.exp2->destType->count--;
if(assign && type1 && type1->kind == 13 && exp->op.exp2->expType)
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))));
+Compiler_Error(__ecereNameSpace__ecere__GetTranslatedString("ec", "void *: unknown size\n", (((void *)0))));
}
else if(exp->op.exp2->expType->kind == 13 || exp->op.exp2->expType->kind == 12 || exp->op.exp2->expType->kind == 11 || exp->op.exp2->expType->kind == 16 || (type1->type->kind == 0 && exp->op.exp2->expType->kind == 8 && exp->op.exp2->expType->_class->registered && (exp->op.exp2->expType->_class->registered->type == 0 || exp->op.exp2->expType->_class->registered->type == 1 || exp->op.exp2->expType->_class->registered->type == 5)))
{
if(exp->op.op == ADD_ASSIGN)
-Compiler_Error(__ecereNameSpace__ecere__GetTranslatedString(__thisModule, "cannot add two pointers\n", (((void *)0))));
+Compiler_Error(__ecereNameSpace__ecere__GetTranslatedString("ec", "cannot add two pointers\n", (((void *)0))));
}
else if((exp->op.exp2->expType->kind == 8 && type1->kind == 13 && type1->type->kind == 8 && type1->type->_class == exp->op.exp2->expType->_class && exp->op.exp2->expType->_class->registered && exp->op.exp2->expType->_class->registered->type == 1))
{
if(exp->op.op == ADD_ASSIGN)
-Compiler_Error(__ecereNameSpace__ecere__GetTranslatedString(__thisModule, "cannot add two pointers\n", (((void *)0))));
+Compiler_Error(__ecereNameSpace__ecere__GetTranslatedString("ec", "cannot add two pointers\n", (((void *)0))));
}
else if(inCompiler)
{
PrintType(exp->op.exp2->expType, type1String, 0x0, 0x1);
PrintType(type1, type2String, 0x0, 0x1);
__ecereNameSpace__ecere__sys__ChangeCh(expString, '\n', ' ');
-Compiler_Warning(__ecereNameSpace__ecere__GetTranslatedString(__thisModule, "incompatible expression %s (%s); expected %s\n", (((void *)0))), expString, type1String, type2String);
+Compiler_Warning(__ecereNameSpace__ecere__GetTranslatedString("ec", "incompatible expression %s (%s); expected %s\n", (((void *)0))), expString, type1String, type2String);
}
}
if(exp->op.exp2->destType == dummy)
type2->isSigned = 0x1;
}
else
+{
type2 = exp->op.exp2->expType;
+if(type2)
+type2->refCount++;
+}
}
dummy->kind = 0;
if(exp->op.op == SIZEOF)
{
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.op == '-' && ((type1->kind == 8 && type1->_class->registered && type1->_class->registered->type == 4) || (type2->kind == 8 && type2->_class->registered && type2->_class->registered->type == 4)))
+{
+struct Type * intType;
+
+if(!type1->_class->registered->dataType)
+type1->_class->registered->dataType = ProcessTypeString(type1->_class->registered->dataTypeString, 0x0);
+if(!type2->_class->registered->dataType)
+type2->_class->registered->dataType = ProcessTypeString(type2->_class->registered->dataTypeString, 0x0);
+intType = ProcessTypeString((type1->_class->registered->dataType->kind == 4 || type2->_class->registered->dataType->kind == 4) ? "int64" : "int", 0x0);
+if(exp->op.exp1->destType)
+FreeType(exp->op.exp1->destType);
+if(exp->op.exp2->destType)
+FreeType(exp->op.exp2->destType);
+exp->op.exp1->destType = intType;
+exp->op.exp2->destType = intType;
+intType->refCount++;
+}
+else
+{
if(exp->op.exp2->destType)
FreeType(exp->op.exp2->destType);
exp->op.exp2->destType = type1;
FreeType(exp->op.exp1->destType);
exp->op.exp1->destType = type2;
type2->refCount++;
+}
if(!boolResult && type1->kind == 8 && (!exp->destType || exp->destType->kind != 8) && type1->_class->registered && type1->_class->registered->type == 3 && type2->_class->registered && type2->_class->registered->type == 3 && type1->_class->registered != type2->_class->registered)
-Compiler_Warning(__ecereNameSpace__ecere__GetTranslatedString(__thisModule, "operating on %s and %s with an untyped result, assuming %s\n", (((void *)0))), type1->_class->string, type2->_class->string, type1->_class->string);
+Compiler_Warning(__ecereNameSpace__ecere__GetTranslatedString("ec", "operating on %s and %s with an untyped result, assuming %s\n", (((void *)0))), type1->_class->string, type2->_class->string, type1->_class->string);
if(type1->kind == 13 && type1->type->kind == 20 && type2->kind != 13)
{
struct Expression * argExp = GetTemplateArgExp(type1->type->templateParameter, thisClass, 0x1);
ProcessExpressionType(classExp);
exp->op.exp2 = MkExpBrackets(MkListOne(MkExpOp(exp->op.exp2, '*', MkExpBrackets(MkListOne(MkExpCondition(MkExpBrackets(MkListOne(MkExpOp(MkExpOp(MkExpMember(CopyExpression(classExp), MkIdentifier("type")), EQ_OP, MkExpConstant("5")), OR_OP, MkExpOp(MkExpMember(CopyExpression(classExp), MkIdentifier("type")), EQ_OP, MkExpConstant("0"))))), MkListOne(MkExpTypeSize(MkTypeName(MkListOne(MkSpecifier(VOID)), MkDeclaratorPointer(MkPointer((((void *)0)), (((void *)0))), (((void *)0)))))), MkExpMember(classExp, MkIdentifier("typeSize"))))))));
if(!exp->op.exp2->expType)
+{
+if(type2)
+FreeType(type2);
type2 = exp->op.exp2->expType = ProcessTypeString("int", 0x0);
+type2->refCount++;
+}
ProcessExpressionType(exp->op.exp2);
}
}
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))));
+Compiler_Error(__ecereNameSpace__ecere__GetTranslatedString("ec", "void *: unknown size\n", (((void *)0))));
exp->expType = type1;
if(type1)
type1->refCount++;
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))));
+Compiler_Error(__ecereNameSpace__ecere__GetTranslatedString("ec", "void *: unknown size\n", (((void *)0))));
exp->expType = type2;
if(type2)
type2->refCount++;
}
else if((type1->kind == 13 && type2->kind != 13 && type2->kind != 12 && type2->kind != 11 && type2->kind != 16 && type2->kind != 8 && type2->kind != 19) || (type2->kind == 13 && type1->kind != 13 && type1->kind != 12 && type1->kind != 11 && type1->kind != 16 && type1->kind != 8 && type1->kind != 19))
{
-Compiler_Warning(__ecereNameSpace__ecere__GetTranslatedString(__thisModule, "different levels of indirection\n", (((void *)0))));
+Compiler_Warning(__ecereNameSpace__ecere__GetTranslatedString("ec", "different levels of indirection\n", (((void *)0))));
}
else
{
if(type1->kind == 13 && type2->kind == 13)
{
if(exp->op.op == '+')
-Compiler_Error(__ecereNameSpace__ecere__GetTranslatedString(__thisModule, "cannot add two pointers\n", (((void *)0))));
+Compiler_Error(__ecereNameSpace__ecere__GetTranslatedString("ec", "cannot add two pointers\n", (((void *)0))));
else if(exp->op.op == '-')
{
if(MatchTypes(type1->type, type2->type, (((void *)0)), (((void *)0)), (((void *)0)), 0x0, 0x0, 0x0, 0x0))
PrintType(exp->op.exp1->expType, type1, 0x0, 0x1);
PrintType(exp->op.exp2->expType, type2, 0x0, 0x1);
}
-Compiler_Warning(__ecereNameSpace__ecere__GetTranslatedString(__thisModule, "incompatible expressions %s (%s) and %s (%s)\n", (((void *)0))), expString1, type1, expString2, type2);
+Compiler_Warning(__ecereNameSpace__ecere__GetTranslatedString("ec", "incompatible expressions %s (%s) and %s (%s)\n", (((void *)0))), expString1, type1, expString2, type2);
}
}
}
exp->op.exp2->destType = type1->_class->registered->dataType;
exp->op.exp2->destType->refCount++;
CheckExpressionType(exp->op.exp2, exp->op.exp2->destType, 0x0);
+if(type2)
+FreeType(type2);
type2 = exp->op.exp2->destType;
+if(type2)
+type2->refCount++;
exp->expType = type2;
type2->refCount++;
}
exp->expType = type1;
type1->refCount++;
}
-if(!boolResult || exp->op.op == '>' || exp->op.op == '<')
+if(!boolResult || exp->op.op == '>' || exp->op.op == '<' || exp->op.op == GE_OP || exp->op.op == LE_OP)
+{
+unsigned int op1IsEnum = type1 && type1->kind == 8 && type1->_class && type1->_class->registered && type1->_class->registered->type == 4;
+unsigned int op2IsEnum = type2 && type2->kind == 8 && type2->_class && type2->_class->registered && type2->_class->registered->type == 4;
+
+if(exp->op.op == '*' || exp->op.op == '/' || exp->op.op == '-' || exp->op.op == '|' || exp->op.op == '^')
+{
+if(op1IsEnum && exp->op.exp2->expType)
+{
+if(CheckExpressionType(exp->op.exp1, exp->op.exp2->expType, 0x0))
+{
+if(exp->expType)
+FreeType(exp->expType);
+exp->expType = exp->op.exp2->expType;
+if(exp->op.exp2->expType)
+exp->op.exp2->expType->refCount++;
+valid = 0x1;
+}
+}
+else if(op2IsEnum && exp->op.exp1->expType)
{
-if(type1->kind == 8 && type1->_class && type1->_class->registered && type1->_class->registered->type == 4 && exp->op.exp2->expType)
+if(CheckExpressionType(exp->op.exp2, exp->op.exp1->expType, 0x0))
+{
+if(exp->expType)
+FreeType(exp->expType);
+exp->expType = exp->op.exp1->expType;
+if(exp->op.exp1->expType)
+exp->op.exp1->expType->refCount++;
+valid = 0x1;
+}
+}
+}
+else
+{
+if(op1IsEnum && exp->op.exp2->expType)
{
if(CheckExpressionType(exp->op.exp1, exp->op.exp2->expType, 0x0))
{
if(exp->expType)
FreeType(exp->expType);
exp->expType = exp->op.exp1->expType;
-if(exp->op.exp2->expType)
+if(exp->op.exp1->expType)
exp->op.exp1->expType->refCount++;
valid = 0x1;
}
}
-else if(type2 && (type2->kind == 8 && type2->_class && type2->_class->registered && type2->_class->registered->type == 4 && exp->op.exp1->expType))
+else if(op2IsEnum && exp->op.exp1->expType)
{
if(CheckExpressionType(exp->op.exp2, exp->op.exp1->expType, 0x0))
{
}
}
}
+}
if(!valid)
{
+if(type2 && type2->kind == 8 && type2->_class && type2->_class->registered && type2->_class->registered->type == 3 && (type1->kind != 8 || !type1->_class || !type1->_class->registered || type1->_class->registered->type != 3))
+{
+if(exp->op.exp1->destType)
+FreeType(exp->op.exp1->destType);
+exp->op.exp1->destType = type2;
+type2->refCount++;
+if(CheckExpressionType(exp->op.exp1, exp->op.exp1->destType, 0x0))
+{
+if(exp->expType)
+FreeType(exp->expType);
+exp->expType = exp->op.exp1->destType;
+if(exp->op.exp1->destType)
+exp->op.exp1->destType->refCount++;
+}
+}
+else
+{
if(exp->op.exp2->destType)
FreeType(exp->op.exp2->destType);
exp->op.exp2->destType = type1;
PrintType(exp->op.exp1->expType, type1String, 0x0, 0x1);
PrintType(exp->op.exp2->expType, type2String, 0x0, 0x1);
}
-Compiler_Warning(__ecereNameSpace__ecere__GetTranslatedString(__thisModule, "incompatible expressions %s (%s) and %s (%s)\n", (((void *)0))), expString1, type1String, expString2, type2String);
+Compiler_Warning(__ecereNameSpace__ecere__GetTranslatedString("ec", "incompatible expressions %s (%s) and %s (%s)\n", (((void *)0))), expString1, type1String, expString2, type2String);
if(type1->kind == 8 && type1->_class && type1->_class->registered && type1->_class->registered->type == 4)
{
exp->expType = exp->op.exp1->expType;
}
}
}
+}
else if(type2)
{
if(type2->kind == 8 && type2->_class && type2->_class->registered && type2->_class->registered->type == 4)
__ecereNameSpace__ecere__sys__ChangeCh(expString, '\n', ' ');
}
if(expString[0])
-Compiler_Error(__ecereNameSpace__ecere__GetTranslatedString(__thisModule, "couldn't determine type of %s\n", (((void *)0))), expString);
+Compiler_Error(__ecereNameSpace__ecere__GetTranslatedString("ec", "couldn't determine type of %s\n", (((void *)0))), expString);
}
if(exp->op.exp2 && !exp->op.exp2->expType)
{
__ecereNameSpace__ecere__sys__ChangeCh(expString, '\n', ' ');
}
if(expString[0])
-Compiler_Error(__ecereNameSpace__ecere__GetTranslatedString(__thisModule, "couldn't determine type of %s\n", (((void *)0))), expString);
+Compiler_Error(__ecereNameSpace__ecere__GetTranslatedString("ec", "couldn't determine type of %s\n", (((void *)0))), expString);
}
if(boolResult)
{
}
yylloc = oldyylloc;
FreeType(dummy);
+if(type2)
+FreeType(type2);
break;
}
case 5:
-case 34:
+case 32:
{
struct Expression * e;
if(!e->next)
{
FreeType(e->destType);
+e->opDestType = exp->opDestType;
e->destType = exp->destType;
if(e->destType)
{
}
if(functionType && functionType->kind != 11)
{
-Compiler_Error(__ecereNameSpace__ecere__GetTranslatedString(__thisModule, "called object %s is not a function\n", (((void *)0))), name);
+Compiler_Error(__ecereNameSpace__ecere__GetTranslatedString("ec", "called object %s is not a function\n", (((void *)0))), name);
}
else if(functionType)
{
{
yylloc = e->loc;
if(methodType && methodType->methodClass)
-Compiler_Error(__ecereNameSpace__ecere__GetTranslatedString(__thisModule, "too many arguments for method %s::%s (%d given, expected %d)\n", (((void *)0))), methodType->methodClass->fullName, methodType->method->name, (*exp->call.arguments).count, noParams ? 0 : functionType->params.count);
+Compiler_Error(__ecereNameSpace__ecere__GetTranslatedString("ec", "too many arguments for method %s::%s (%d given, expected %d)\n", (((void *)0))), methodType->methodClass->fullName, methodType->method->name, (*exp->call.arguments).count, noParams ? 0 : functionType->params.count);
else
-Compiler_Error(__ecereNameSpace__ecere__GetTranslatedString(__thisModule, "too many arguments for function %s (%d given, expected %d)\n", (((void *)0))), name, (*exp->call.arguments).count, noParams ? 0 : functionType->params.count);
+Compiler_Error(__ecereNameSpace__ecere__GetTranslatedString("ec", "too many arguments for function %s (%d given, expected %d)\n", (((void *)0))), name, (*exp->call.arguments).count, noParams ? 0 : functionType->params.count);
break;
}
if(methodType && type && type->kind == 20 && type->templateParameter->type == 0)
if(type && type->kind != 14)
{
if(methodType && methodType->methodClass)
-Compiler_Warning(__ecereNameSpace__ecere__GetTranslatedString(__thisModule, "not enough arguments for method %s::%s (%d given, expected %d)\n", (((void *)0))), methodType->methodClass->fullName, methodType->method->name, exp->call.arguments ? (*exp->call.arguments).count : 0, functionType->params.count + extra);
+Compiler_Warning(__ecereNameSpace__ecere__GetTranslatedString("ec", "not enough arguments for method %s::%s (%d given, expected %d)\n", (((void *)0))), methodType->methodClass->fullName, methodType->method->name, exp->call.arguments ? (*exp->call.arguments).count : 0, functionType->params.count + extra);
else
-Compiler_Warning(__ecereNameSpace__ecere__GetTranslatedString(__thisModule, "not enough arguments for function %s (%d given, expected %d)\n", (((void *)0))), name, exp->call.arguments ? (*exp->call.arguments).count : 0, functionType->params.count + extra);
+Compiler_Warning(__ecereNameSpace__ecere__GetTranslatedString("ec", "not enough arguments for function %s (%d given, expected %d)\n", (((void *)0))), name, exp->call.arguments ? (*exp->call.arguments).count : 0, functionType->params.count + extra);
}
yylloc = oldyylloc;
if(type && !type->refCount)
}
}
else
-Compiler_Warning(__ecereNameSpace__ecere__GetTranslatedString(__thisModule, "%s undefined; assuming extern returning int\n", (((void *)0))), string);
+Compiler_Warning(__ecereNameSpace__ecere__GetTranslatedString("ec", "%s undefined; assuming extern returning int\n", (((void *)0))), string);
symbol = __extension__ ({
struct Symbol * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Symbol);
{
}
else
-Compiler_Warning(__ecereNameSpace__ecere__GetTranslatedString(__thisModule, "callable object undefined; extern assuming returning int\n", (((void *)0))));
+Compiler_Warning(__ecereNameSpace__ecere__GetTranslatedString("ec", "callable object undefined; extern assuming returning int\n", (((void *)0))));
if(!functionType->returnType)
{
functionType->returnType = __extension__ ({
char * string = PrintHexUInt64(arg.expression.ui64);
exp = MkExpCast(MkTypeName(specs, decl), MkExpConstant(string));
+(__ecereNameSpace__ecere__com__eSystem_Delete(string), string = 0);
ProcessExpressionType(exp);
ComputeExpression(exp);
expString[0] = '\0';
int typeKind = type->kind;
struct __ecereNameSpace__ecere__com__Class * _class = (id && (!id->_class || id->_class->name)) ? (id->classSym ? id->classSym->registered : (type->_class ? type->_class->registered : (((void *)0)))) : (((void *)0));
-if(typeKind == 19 && exp->member.exp->type == 26)
+if(typeKind == 19 && exp->member.exp->type == 24)
{
_class = __ecereNameSpace__ecere__com__eSystem_FindClass(privateModule, "ecere::com::Class");
typeKind = 8;
if(id && id->_class && id->_class->name && !strcmp(id->_class->name, "property"))
exp->member.memberType = 1;
if(id && id->_class && type->_class && !__ecereNameSpace__ecere__com__eClass_IsDerived(type->_class->registered, _class))
-Compiler_Error(__ecereNameSpace__ecere__GetTranslatedString(__thisModule, "invalid class specifier %s for object of class %s\n", (((void *)0))), _class->fullName, type->_class->string);
+Compiler_Error(__ecereNameSpace__ecere__GetTranslatedString("ec", "invalid class specifier %s for object of class %s\n", (((void *)0))), _class->fullName, type->_class->string);
if(typeKind != 19)
{
if((exp->member.memberType == 0 && thisPtr) || exp->member.memberType == 3)
FreeExpContents(exp);
exp->type = 0;
exp->identifier = MkIdentifier("class");
-ProcessExpressionType(exp);
+FreeType(exp->expType);
+exp->expType = MkClassType("ecere::com::Class");
return ;
}
yylloc = exp->member.member->loc;
-Compiler_Error(__ecereNameSpace__ecere__GetTranslatedString(__thisModule, "couldn't find member %s in class %s\n", (((void *)0))), id->string, _class->fullName);
+Compiler_Error(__ecereNameSpace__ecere__GetTranslatedString("ec", "couldn't find member %s in class %s\n", (((void *)0))), id->string, _class->fullName);
if(inCompiler)
__ecereNameSpace__ecere__com__eClass_AddDataMember(_class, id->string, "int", 0, 0, 1);
}
char * string = PrintHexUInt64(arg.expression.ui64);
exp = MkExpCast(MkTypeName(specs, decl), MkExpConstant(string));
+(__ecereNameSpace__ecere__com__eSystem_Delete(string), string = 0);
ProcessExpressionType(exp);
ComputeExpression(exp);
expString[0] = '\0';
}
}
else
-Compiler_Error(__ecereNameSpace__ecere__GetTranslatedString(__thisModule, "undefined class %s\n", (((void *)0))), (id && (!id->_class || id->_class->name)) ? (id->classSym ? id->classSym->string : (type->_class ? type->_class->string : (((void *)0)))) : "(null)");
+Compiler_Error(__ecereNameSpace__ecere__GetTranslatedString("ec", "undefined class %s\n", (((void *)0))), (id && (!id->_class || id->_class->name)) ? (id->classSym ? id->classSym->string : (type->_class ? type->_class->string : (((void *)0)))) : "(null)");
}
else if(type && (type->kind == 9 || type->kind == 10))
{
PrintExpression(exp, expString);
__ecereNameSpace__ecere__sys__ChangeCh(expString, '\n', ' ');
}
-Compiler_Error(__ecereNameSpace__ecere__GetTranslatedString(__thisModule, "member operator on non-structure type expression %s\n", (((void *)0))), expString);
+Compiler_Error(__ecereNameSpace__ecere__GetTranslatedString("ec", "member operator on non-structure type expression %s\n", (((void *)0))), expString);
}
if(exp->expType && exp->expType->kind == 21 && (!exp->destType || exp->destType->kind != 21))
{
}
break;
}
-case 35:
+case 33:
{
struct Type * type = ProcessType(exp->initializer.typeName->qualifiers, exp->initializer.typeName->declarator);
exp->expType = type;
break;
}
-case 36:
+case 34:
{
struct Type * type = ProcessType(exp->vaArg.typeName->qualifiers, exp->vaArg.typeName->declarator);
exp->isConstant = 0x0;
break;
}
-case 25:
+case 23:
{
if(exp->compound && exp->compound->compound.statements && (*exp->compound->compound.statements).last)
{
}
break;
}
-case 26:
+case 24:
{
struct Specifier * spec = (*exp->_classExp.specifiers).first;
}
break;
}
-case 27:
+case 25:
{
struct __ecereNameSpace__ecere__com__Class * _class = thisClass ? thisClass : currentClass;
}
break;
}
-case 37:
+case 35:
{
struct Type * type = (((void *)0));
char * typeString = (((void *)0));
else
{
exp->expType = ProcessTypeString("Container", 0x0);
-Compiler_Error(__ecereNameSpace__ecere__GetTranslatedString(__thisModule, "Couldn't determine type of array elements\n", (((void *)0))));
+Compiler_Error(__ecereNameSpace__ecere__GetTranslatedString("ec", "Couldn't determine type of array elements\n", (((void *)0))));
}
break;
}
__ecereNameSpace__ecere__sys__ChangeCh(expString, '\n', ' ');
}
if(unresolved)
-Compiler_Error(__ecereNameSpace__ecere__GetTranslatedString(__thisModule, "unresolved identifier %s; expected %s\n", (((void *)0))), expString, type2);
+Compiler_Error(__ecereNameSpace__ecere__GetTranslatedString("ec", "unresolved identifier %s; expected %s\n", (((void *)0))), expString, type2);
else if(exp->type != 16)
-Compiler_Error(__ecereNameSpace__ecere__GetTranslatedString(__thisModule, "couldn't determine type of %s; expected %s\n", (((void *)0))), expString, type2);
+Compiler_Error(__ecereNameSpace__ecere__GetTranslatedString("ec", "couldn't determine type of %s; expected %s\n", (((void *)0))), expString, type2);
}
}
else
__ecereNameSpace__ecere__sys__ChangeCh(expString, '\n', ' ');
}
if(unresolved)
-Compiler_Error(__ecereNameSpace__ecere__GetTranslatedString(__thisModule, "unresolved identifier %s\n", (((void *)0))), expString);
+Compiler_Error(__ecereNameSpace__ecere__GetTranslatedString("ec", "unresolved identifier %s\n", (((void *)0))), expString);
else if(exp->type != 16)
-Compiler_Error(__ecereNameSpace__ecere__GetTranslatedString(__thisModule, "couldn't determine type of %s\n", (((void *)0))), expString);
+Compiler_Error(__ecereNameSpace__ecere__GetTranslatedString("ec", "couldn't determine type of %s\n", (((void *)0))), expString);
}
}
else
__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);
+Compiler_Warning(__ecereNameSpace__ecere__GetTranslatedString("ec", "incompatible expression %s (%s); expected %s\n", (((void *)0))), expString, type1, type2);
FreeType(exp->expType);
exp->destType->refCount++;
exp->expType = exp->destType;
else if(unresolved)
{
if(exp->identifier->_class && exp->identifier->_class->name)
-Compiler_Error(__ecereNameSpace__ecere__GetTranslatedString(__thisModule, "unresolved identifier %s::%s\n", (((void *)0))), exp->identifier->_class->name, exp->identifier->string);
+Compiler_Error(__ecereNameSpace__ecere__GetTranslatedString("ec", "unresolved identifier %s::%s\n", (((void *)0))), exp->identifier->_class->name, exp->identifier->string);
else if(exp->identifier->string && exp->identifier->string[0])
-Compiler_Error(__ecereNameSpace__ecere__GetTranslatedString(__thisModule, "unresolved identifier %s\n", (((void *)0))), exp->identifier->string);
+Compiler_Error(__ecereNameSpace__ecere__GetTranslatedString("ec", "unresolved identifier %s\n", (((void *)0))), exp->identifier->string);
}
else if(!exp->expType && exp->type != 16)
{
PrintExpression(exp, expString);
__ecereNameSpace__ecere__sys__ChangeCh(expString, '\n', ' ');
}
-Compiler_Error(__ecereNameSpace__ecere__GetTranslatedString(__thisModule, "couldn't determine type of %s\n", (((void *)0))), expString);
+Compiler_Error(__ecereNameSpace__ecere__GetTranslatedString("ec", "couldn't determine type of %s\n", (((void *)0))), expString);
}
if(inCompiler)
ApplyAnyObjectLogic(exp);
-if(!notByReference && exp->expType && exp->expType->kind == 8 && exp->expType->_class && exp->expType->_class->registered && exp->expType->_class->registered->type == 5 && (!exp->destType || (exp->destType->kind != 3 && exp->destType->kind != 4 && exp->destType->kind != 22 && exp->destType->kind != 23 && exp->destType->kind != 5 && exp->destType->kind != 2 && exp->destType->kind != 1)))
+if(!notByReference && exp->expType && exp->expType->kind == 8 && exp->expType->_class && exp->expType->_class->registered && exp->expType->_class->registered->type == 5 && (!exp->destType || (exp->destType->kind != 3 && exp->destType->kind != 4 && exp->destType->kind != 22 && exp->destType->kind != 23 && exp->destType->kind != 5 && exp->destType->kind != 2 && exp->destType->kind != 1 && exp->destType->kind != 24)))
{
exp->byReference = 0x1;
}
FreeType(initializerType);
if(type && type->kind != 12 && type->kind != 9 && type->kind != 10 && (type->kind != 8 || !type->_class->registered || type->_class->registered->type != 1))
{
-Compiler_Error(__ecereNameSpace__ecere__GetTranslatedString(__thisModule, "Assigning list initializer to non list\n", (((void *)0))));
+Compiler_Error(__ecereNameSpace__ecere__GetTranslatedString("ec", "Assigning list initializer to non list\n", (((void *)0))));
}
break;
}
struct Context * prevContext = curContext;
if(!stmt->compound.isSwitch)
-{
curCompound = stmt;
curContext = stmt->compound.context;
-}
if(stmt->compound.declarations)
{
for(decl = (*stmt->compound.declarations).first; decl; decl = decl->next)
char iteratorType[1024];
struct Type * source;
struct Expression * e;
-unsigned int isBuiltin = exp && (*exp).last && (((struct Expression *)(*exp).last)->type == 37 || (((struct Expression *)(*exp).last)->type == 11 && ((struct Expression *)(*exp).last)->cast.exp->type == 37));
+unsigned int isBuiltin = exp && (*exp).last && (((struct Expression *)(*exp).last)->type == 35 || (((struct Expression *)(*exp).last)->type == 11 && ((struct Expression *)(*exp).last)->cast.exp->type == 35));
struct Expression * arrayExp;
char * typeString = (((void *)0));
int builtinCount = 0;
struct Type * type = (((void *)0));
char typeStringBuf[1024];
-arrayExp = (((struct Expression *)(*exp).last)->type == 37) ? (struct Expression *)(*exp).last : ((struct Expression *)(*exp).last)->cast.exp;
+arrayExp = (((struct Expression *)(*exp).last)->type == 35) ? (struct Expression *)(*exp).last : ((struct Expression *)(*exp).last)->cast.exp;
if(((struct Expression *)(*exp).last)->type == 11)
{
struct TypeName * typeName = ((struct Expression *)(*exp).last)->cast.typeName;
else
{
arrayExp->expType = ProcessTypeString("Container", 0x0);
-Compiler_Error(__ecereNameSpace__ecere__GetTranslatedString(__thisModule, "Couldn't determine type of array elements\n", (((void *)0))));
+Compiler_Error(__ecereNameSpace__ecere__GetTranslatedString("ec", "Couldn't determine type of array elements\n", (((void *)0))));
}
}
else if(isLinkList && !isList)
}
else
{
-Compiler_Error(__ecereNameSpace__ecere__GetTranslatedString(__thisModule, "Expression is not a container\n", (((void *)0))));
+Compiler_Error(__ecereNameSpace__ecere__GetTranslatedString("ec", "Expression is not a container\n", (((void *)0))));
}
break;
}
ListAdd(stmt->expressions, MkExpCall(MkExpIdentifier(MkIdentifier("ecere::com::eInstance_Watch")), args));
}
else
-Compiler_Error(__ecereNameSpace__ecere__GetTranslatedString(__thisModule, "Property %s not found in class %s\n", (((void *)0))), prop->name, _class->fullName);
+Compiler_Error(__ecereNameSpace__ecere__GetTranslatedString("ec", "Property %s not found in class %s\n", (((void *)0))), propID->string, _class->fullName);
}
}
}
else
-Compiler_Error(__ecereNameSpace__ecere__GetTranslatedString(__thisModule, "Invalid watched object\n", (((void *)0))));
+Compiler_Error(__ecereNameSpace__ecere__GetTranslatedString("ec", "Invalid watched object\n", (((void *)0))));
}
curExternal = external;
curContext = context;
FreeList(watches, FreePropertyWatch);
}
else
-Compiler_Error(__ecereNameSpace__ecere__GetTranslatedString(__thisModule, "No observer specified and not inside a _class\n", (((void *)0))));
+Compiler_Error(__ecereNameSpace__ecere__GetTranslatedString("ec", "No observer specified and not inside a _class\n", (((void *)0))));
}
else
{
CreateFireWatcher(prop, object, stmt);
}
else
-Compiler_Error(__ecereNameSpace__ecere__GetTranslatedString(__thisModule, "Property %s not found in class %s\n", (((void *)0))), propID->string, _class->fullName);
+Compiler_Error(__ecereNameSpace__ecere__GetTranslatedString("ec", "Property %s not found in class %s\n", (((void *)0))), propID->string, _class->fullName);
}
}
else
FreeList(watches, FreeIdentifier);
}
else
-Compiler_Error(__ecereNameSpace__ecere__GetTranslatedString(__thisModule, "Invalid object specified and not inside a class\n", (((void *)0))));
+Compiler_Error(__ecereNameSpace__ecere__GetTranslatedString("ec", "Invalid object specified and not inside a class\n", (((void *)0))));
}
break;
}
ListAdd(stmt->expressions, MkExpCall(MkExpIdentifier(MkIdentifier("ecere::com::eInstance_StopWatching")), args));
}
else
-Compiler_Error(__ecereNameSpace__ecere__GetTranslatedString(__thisModule, "Property %s not found in class %s\n", (((void *)0))), prop->name, _class->fullName);
+Compiler_Error(__ecereNameSpace__ecere__GetTranslatedString("ec", "Property %s not found in class %s\n", (((void *)0))), propID->string, _class->fullName);
}
}
if(object)
FreeList(watches, FreeIdentifier);
}
else
-Compiler_Error(__ecereNameSpace__ecere__GetTranslatedString(__thisModule, "Invalid object specified and not inside a class\n", (((void *)0))));
+Compiler_Error(__ecereNameSpace__ecere__GetTranslatedString("ec", "Invalid object specified and not inside a class\n", (((void *)0))));
}
else
-Compiler_Error(__ecereNameSpace__ecere__GetTranslatedString(__thisModule, "No observer specified and not inside a class\n", (((void *)0))));
+Compiler_Error(__ecereNameSpace__ecere__GetTranslatedString("ec", "No observer specified and not inside a class\n", (((void *)0))));
}
break;
}
DeclareFunctionUtil("eSystem_New0");
DeclareFunctionUtil("eSystem_Renew");
DeclareFunctionUtil("eSystem_Renew0");
+DeclareFunctionUtil("eSystem_Delete");
DeclareFunctionUtil("eClass_GetProperty");
+DeclareFunctionUtil("eInstance_FireSelfWatchers");
DeclareStruct("ecere::com::Class", 0x0);
DeclareStruct("ecere::com::Instance", 0x0);
DeclareStruct("ecere::com::Property", 0x0);
else if(external->type == 1)
{
currentClass = (((void *)0));
+if(external->declaration)
ProcessDeclaration(external->declaration);
}
else if(external->type == 2)
}
currentClass = (((void *)0));
thisNameSpace = (((void *)0));
+curExternal = (((void *)0));
((temp->symbol ? (__ecereClass_Symbol->Destructor ? __ecereClass_Symbol->Destructor(temp->symbol) : 0, __ecereNameSpace__ecere__com__eSystem_Delete(temp->symbol)) : 0), temp->symbol = 0);
((temp ? (__ecereClass_External->Destructor ? __ecereClass_External->Destructor(temp) : 0, __ecereNameSpace__ecere__com__eSystem_Delete(temp)) : 0), temp = 0);
}
extern struct __ecereNameSpace__ecere__com__Class * __ecereNameSpace__ecere__com__eSystem_RegisterClass(int type, char * name, char * baseName, int size, int sizeClass, unsigned int (* Constructor)(void * ), void (* Destructor)(void * ), struct __ecereNameSpace__ecere__com__Instance * module, int declMode, int inheritanceAccess);
+extern struct __ecereNameSpace__ecere__com__Instance * __thisModule;
+
void __ecereRegisterModule_pass15(struct __ecereNameSpace__ecere__com__Instance * module)
{
struct __ecereNameSpace__ecere__com__Class * class;
__ecereNameSpace__ecere__com__eSystem_RegisterFunction("PrintUChar", "char * PrintUChar(byte result)", PrintUChar, module, 1);
__ecereNameSpace__ecere__com__eSystem_RegisterFunction("PrintFloat", "char * PrintFloat(float result)", PrintFloat, module, 1);
__ecereNameSpace__ecere__com__eSystem_RegisterFunction("PrintDouble", "char * PrintDouble(double result)", PrintDouble, module, 1);
+__ecereNameSpace__ecere__com__eSystem_RegisterFunction("GetOpInt", "bool GetOpInt(Operand op2, int * value2)", GetOpInt, module, 1);
__ecereNameSpace__ecere__com__eSystem_RegisterFunction("GetInt", "bool GetInt(Expression exp, int * value2)", GetInt, module, 1);
+__ecereNameSpace__ecere__com__eSystem_RegisterFunction("GetOpUInt", "bool GetOpUInt(Operand op2, uint * value2)", GetOpUInt, module, 1);
__ecereNameSpace__ecere__com__eSystem_RegisterFunction("GetUInt", "bool GetUInt(Expression exp, uint * value2)", GetUInt, module, 1);
+__ecereNameSpace__ecere__com__eSystem_RegisterFunction("GetOpInt64", "bool GetOpInt64(Operand op2, int64 * value2)", GetOpInt64, module, 1);
__ecereNameSpace__ecere__com__eSystem_RegisterFunction("GetInt64", "bool GetInt64(Expression exp, int64 * value2)", GetInt64, module, 1);
+__ecereNameSpace__ecere__com__eSystem_RegisterFunction("GetOpUInt64", "bool GetOpUInt64(Operand op2, uint64 * value2)", GetOpUInt64, module, 1);
__ecereNameSpace__ecere__com__eSystem_RegisterFunction("GetUInt64", "bool GetUInt64(Expression exp, uint64 * value2)", GetUInt64, module, 1);
+__ecereNameSpace__ecere__com__eSystem_RegisterFunction("GetOpIntPtr", "bool GetOpIntPtr(Operand op2, intptr * value2)", GetOpIntPtr, module, 1);
__ecereNameSpace__ecere__com__eSystem_RegisterFunction("GetIntPtr", "bool GetIntPtr(Expression exp, intptr * value2)", GetIntPtr, module, 1);
+__ecereNameSpace__ecere__com__eSystem_RegisterFunction("GetOpUIntPtr", "bool GetOpUIntPtr(Operand op2, uintptr * value2)", GetOpUIntPtr, module, 1);
__ecereNameSpace__ecere__com__eSystem_RegisterFunction("GetUIntPtr", "bool GetUIntPtr(Expression exp, uintptr * value2)", GetUIntPtr, module, 1);
+__ecereNameSpace__ecere__com__eSystem_RegisterFunction("GetOpIntSize", "bool GetOpIntSize(Operand op2, intsize * value2)", GetOpIntSize, module, 1);
__ecereNameSpace__ecere__com__eSystem_RegisterFunction("GetIntSize", "bool GetIntSize(Expression exp, intsize * value2)", GetIntSize, module, 1);
+__ecereNameSpace__ecere__com__eSystem_RegisterFunction("GetOpUIntSize", "bool GetOpUIntSize(Operand op2, uintsize * value2)", GetOpUIntSize, module, 1);
__ecereNameSpace__ecere__com__eSystem_RegisterFunction("GetUIntSize", "bool GetUIntSize(Expression exp, uintsize * value2)", GetUIntSize, module, 1);
+__ecereNameSpace__ecere__com__eSystem_RegisterFunction("GetOpShort", "bool GetOpShort(Operand op2, short * value2)", GetOpShort, module, 1);
__ecereNameSpace__ecere__com__eSystem_RegisterFunction("GetShort", "bool GetShort(Expression exp, short * value2)", GetShort, module, 1);
+__ecereNameSpace__ecere__com__eSystem_RegisterFunction("GetOpUShort", "bool GetOpUShort(Operand op2, uint16 * value2)", GetOpUShort, module, 1);
__ecereNameSpace__ecere__com__eSystem_RegisterFunction("GetUShort", "bool GetUShort(Expression exp, uint16 * value2)", GetUShort, module, 1);
+__ecereNameSpace__ecere__com__eSystem_RegisterFunction("GetOpChar", "bool GetOpChar(Operand op2, char * value2)", GetOpChar, module, 1);
__ecereNameSpace__ecere__com__eSystem_RegisterFunction("GetChar", "bool GetChar(Expression exp, char * value2)", GetChar, module, 1);
+__ecereNameSpace__ecere__com__eSystem_RegisterFunction("GetOpUChar", "bool GetOpUChar(Operand op2, byte * value2)", GetOpUChar, module, 1);
__ecereNameSpace__ecere__com__eSystem_RegisterFunction("GetUChar", "bool GetUChar(Expression exp, byte * value2)", GetUChar, module, 1);
+__ecereNameSpace__ecere__com__eSystem_RegisterFunction("GetOpFloat", "bool GetOpFloat(Operand op2, float * value2)", GetOpFloat, module, 1);
__ecereNameSpace__ecere__com__eSystem_RegisterFunction("GetFloat", "bool GetFloat(Expression exp, float * value2)", GetFloat, module, 1);
+__ecereNameSpace__ecere__com__eSystem_RegisterFunction("GetOpDouble", "bool GetOpDouble(Operand op2, double * value2)", GetOpDouble, module, 1);
__ecereNameSpace__ecere__com__eSystem_RegisterFunction("GetDouble", "bool GetDouble(Expression exp, double * value2)", GetDouble, 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("MatchWithEnums_Module", "bool MatchWithEnums_Module(ecere::com::Module mainModule, Expression sourceExp, Type dest, char * string, ecere::sys::OldList conversions)", MatchWithEnums_Module, module, 2);
__ecereNameSpace__ecere__com__eSystem_RegisterFunction("MatchTypeExpression", "bool MatchTypeExpression(Expression sourceExp, Type dest, ecere::sys::OldList conversions, bool skipUnitBla)", MatchTypeExpression, module, 2);
__ecereNameSpace__ecere__com__eSystem_RegisterFunction("ReadString", "void ReadString(char * output, char * string)", ReadString, module, 1);
+__ecereNameSpace__ecere__com__eSystem_RegisterFunction("UnescapeString", "int UnescapeString(char * d, char * s, int len)", UnescapeString, module, 1);
+__ecereNameSpace__ecere__com__eSystem_RegisterFunction("OffsetEscapedString", "char * OffsetEscapedString(char * s, int len, int offset)", OffsetEscapedString, module, 1);
__ecereNameSpace__ecere__com__eSystem_RegisterFunction("GetOperand", "Operand GetOperand(Expression exp)", GetOperand, module, 1);
__ecereNameSpace__ecere__com__eSystem_RegisterFunction("PopulateInstance", "void PopulateInstance(Instantiation inst)", PopulateInstance, module, 1);
__ecereNameSpace__ecere__com__eSystem_RegisterFunction("ComputeInstantiation", "void ComputeInstantiation(Expression exp)", ComputeInstantiation, module, 1);
__ecereNameSpace__ecere__com__eSystem_RegisterFunction("PrintType", "void PrintType(Type type, char * string, bool printName, bool fullName)", PrintType, module, 1);
__ecereNameSpace__ecere__com__eSystem_RegisterFunction("PrintTypeNoConst", "void PrintTypeNoConst(Type type, char * string, bool printName, bool fullName)", PrintTypeNoConst, module, 1);
__ecereNameSpace__ecere__com__eSystem_RegisterFunction("FindMemberAndOffset", "Type FindMemberAndOffset(Type type, char * string, uint * offset)", FindMemberAndOffset, module, 1);
+__ecereNameSpace__ecere__com__eSystem_RegisterFunction("GetParseError", "bool GetParseError(void)", GetParseError, module, 1);
__ecereNameSpace__ecere__com__eSystem_RegisterFunction("ParseExpressionString", "Expression ParseExpressionString(char * expression)", ParseExpressionString, module, 1);
__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);