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;
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;
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 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)
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';
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)))
{
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;
}
}
{
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);
+{
+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;
}
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)
{
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++;
}
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)
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("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)
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);
}
}
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(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(type1->kind == 8 && type1->_class && type1->_class->registered && type1->_class->registered->type == 4 && exp->op.exp2->expType)
+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;
}
}
}
+}
else if(type2)
{
if(type2->kind == 8 && type2->_class && type2->_class->registered && type2->_class->registered->type == 4)
}
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)
{
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;
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;
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';
}
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));
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;
ListAdd(stmt->expressions, MkExpCall(MkExpIdentifier(MkIdentifier("ecere::com::eInstance_Watch")), args));
}
else
-Compiler_Error(__ecereNameSpace__ecere__GetTranslatedString("ec", "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);
}
}
}
ListAdd(stmt->expressions, MkExpCall(MkExpIdentifier(MkIdentifier("ecere::com::eInstance_StopWatching")), args));
}
else
-Compiler_Error(__ecereNameSpace__ecere__GetTranslatedString("ec", "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)
DeclareFunctionUtil("eSystem_New0");
DeclareFunctionUtil("eSystem_Renew");
DeclareFunctionUtil("eSystem_Renew0");
+DeclareFunctionUtil("eSystem_Delete");
DeclareFunctionUtil("eClass_GetProperty");
DeclareFunctionUtil("eInstance_FireSelfWatchers");
DeclareStruct("ecere::com::Class", 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);
}
__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);