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;
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;
}
}
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);
}
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)
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"))
{
{
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
{
+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;
long long value2 = op2->i64;
exp->type = 2;
-exp->string = PrintInt64(op1->i64 + value2);
+exp->string = PrintInt64((op1->i64 + value2));
if(!exp->expType)
{
exp->expType = op1->type;
uint64 value2 = op2->ui64;
exp->type = 2;
-exp->string = PrintUInt64(op1->ui64 + 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;
long long value2 = op2->i64;
exp->type = 2;
-exp->string = PrintInt64(op1->i64 - value2);
+exp->string = PrintInt64((op1->i64 - value2));
if(!exp->expType)
{
exp->expType = op1->type;
uint64 value2 = op2->ui64;
exp->type = 2;
-exp->string = PrintUInt64(op1->ui64 - 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;
long long value2 = op2->i64;
exp->type = 2;
-exp->string = PrintInt64(op1->i64 * value2);
+exp->string = PrintInt64((op1->i64 * value2));
if(!exp->expType)
{
exp->expType = op1->type;
uint64 value2 = op2->ui64;
exp->type = 2;
-exp->string = PrintUInt64(op1->ui64 * 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;
long long value2 = op2->i64;
exp->type = 2;
-exp->string = PrintInt64(op1->i64 = value2);
+exp->string = PrintInt64((op1->i64 = value2));
if(!exp->expType)
{
exp->expType = op1->type;
uint64 value2 = op2->ui64;
exp->type = 2;
-exp->string = PrintUInt64(op1->ui64 = 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;
long long value2 = op2->i64;
exp->type = 2;
-exp->string = PrintInt64(op1->i64 += value2);
+exp->string = PrintInt64((op1->i64 += value2));
if(!exp->expType)
{
exp->expType = op1->type;
uint64 value2 = op2->ui64;
exp->type = 2;
-exp->string = PrintUInt64(op1->ui64 += 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;
long long value2 = op2->i64;
exp->type = 2;
-exp->string = PrintInt64(op1->i64 -= value2);
+exp->string = PrintInt64((op1->i64 -= value2));
if(!exp->expType)
{
exp->expType = op1->type;
uint64 value2 = op2->ui64;
exp->type = 2;
-exp->string = PrintUInt64(op1->ui64 -= 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;
long long value2 = op2->i64;
exp->type = 2;
-exp->string = PrintInt64(op1->i64 *= value2);
+exp->string = PrintInt64((op1->i64 *= value2));
if(!exp->expType)
{
exp->expType = op1->type;
uint64 value2 = op2->ui64;
exp->type = 2;
-exp->string = PrintUInt64(op1->ui64 *= 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;
long long value2 = op2->i64;
exp->type = 2;
-exp->string = PrintInt64(op1->i64 & value2);
+exp->string = PrintInt64((op1->i64 & value2));
if(!exp->expType)
{
exp->expType = op1->type;
uint64 value2 = op2->ui64;
exp->type = 2;
-exp->string = PrintUInt64(op1->ui64 & 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;
long long value2 = op2->i64;
exp->type = 2;
-exp->string = PrintInt64(op1->i64 | value2);
+exp->string = PrintInt64((op1->i64 | value2));
if(!exp->expType)
{
exp->expType = op1->type;
uint64 value2 = op2->ui64;
exp->type = 2;
-exp->string = PrintUInt64(op1->ui64 | 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;
long long value2 = op2->i64;
exp->type = 2;
-exp->string = PrintInt64(op1->i64 ^ value2);
+exp->string = PrintInt64((op1->i64 ^ value2));
if(!exp->expType)
{
exp->expType = op1->type;
uint64 value2 = op2->ui64;
exp->type = 2;
-exp->string = PrintUInt64(op1->ui64 ^ 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;
long long value2 = op2->i64;
exp->type = 2;
-exp->string = PrintInt64(op1->i64 << value2);
+exp->string = PrintInt64((op1->i64 << value2));
if(!exp->expType)
{
exp->expType = op1->type;
uint64 value2 = op2->ui64;
exp->type = 2;
-exp->string = PrintUInt64(op1->ui64 << 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;
long long value2 = op2->i64;
exp->type = 2;
-exp->string = PrintInt64(op1->i64 >> value2);
+exp->string = PrintInt64((op1->i64 >> value2));
if(!exp->expType)
{
exp->expType = op1->type;
uint64 value2 = op2->ui64;
exp->type = 2;
-exp->string = PrintUInt64(op1->ui64 >> 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;
long long value2 = op2->i64;
exp->type = 2;
-exp->string = PrintInt64(op1->i64 &= value2);
+exp->string = PrintInt64((op1->i64 &= value2));
if(!exp->expType)
{
exp->expType = op1->type;
uint64 value2 = op2->ui64;
exp->type = 2;
-exp->string = PrintUInt64(op1->ui64 &= 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;
long long value2 = op2->i64;
exp->type = 2;
-exp->string = PrintInt64(op1->i64 |= value2);
+exp->string = PrintInt64((op1->i64 |= value2));
if(!exp->expType)
{
exp->expType = op1->type;
uint64 value2 = op2->ui64;
exp->type = 2;
-exp->string = PrintUInt64(op1->ui64 |= 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;
long long value2 = op2->i64;
exp->type = 2;
-exp->string = PrintInt64(op1->i64 ^= value2);
+exp->string = PrintInt64((op1->i64 ^= value2));
if(!exp->expType)
{
exp->expType = op1->type;
uint64 value2 = op2->ui64;
exp->type = 2;
-exp->string = PrintUInt64(op1->ui64 ^= 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;
long long value2 = op2->i64;
exp->type = 2;
-exp->string = PrintInt64(op1->i64 <<= value2);
+exp->string = PrintInt64((op1->i64 <<= value2));
if(!exp->expType)
{
exp->expType = op1->type;
uint64 value2 = op2->ui64;
exp->type = 2;
-exp->string = PrintUInt64(op1->ui64 <<= 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;
long long value2 = op2->i64;
exp->type = 2;
-exp->string = PrintInt64(op1->i64 >>= value2);
+exp->string = PrintInt64((op1->i64 >>= value2));
if(!exp->expType)
{
exp->expType = op1->type;
uint64 value2 = op2->ui64;
exp->type = 2;
-exp->string = PrintUInt64(op1->ui64 >>= 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((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;
long long value2 = op2->i64;
exp->type = 2;
-exp->string = PrintInt64(op1->i64 == value2);
+exp->string = PrintInt64((long long)(op1->i64 == value2));
if(!exp->expType)
{
exp->expType = op1->type;
uint64 value2 = op2->ui64;
exp->type = 2;
-exp->string = PrintUInt64(op1->ui64 == 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;
long long value2 = op2->i64;
exp->type = 2;
-exp->string = PrintInt64(op1->i64 != value2);
+exp->string = PrintInt64((long long)(op1->i64 != value2));
if(!exp->expType)
{
exp->expType = op1->type;
uint64 value2 = op2->ui64;
exp->type = 2;
-exp->string = PrintUInt64(op1->ui64 != 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;
long long value2 = op2->i64;
exp->type = 2;
-exp->string = PrintInt64(op1->i64 && value2);
+exp->string = PrintInt64((long long)(op1->i64 && value2));
if(!exp->expType)
{
exp->expType = op1->type;
uint64 value2 = op2->ui64;
exp->type = 2;
-exp->string = PrintUInt64(op1->ui64 && 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;
long long value2 = op2->i64;
exp->type = 2;
-exp->string = PrintInt64(op1->i64 || value2);
+exp->string = PrintInt64((long long)(op1->i64 || value2));
if(!exp->expType)
{
exp->expType = op1->type;
uint64 value2 = op2->ui64;
exp->type = 2;
-exp->string = PrintUInt64(op1->ui64 || 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;
long long value2 = op2->i64;
exp->type = 2;
-exp->string = PrintInt64(op1->i64 > value2);
+exp->string = PrintInt64((long long)(op1->i64 > value2));
if(!exp->expType)
{
exp->expType = op1->type;
uint64 value2 = op2->ui64;
exp->type = 2;
-exp->string = PrintUInt64(op1->ui64 > 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;
long long value2 = op2->i64;
exp->type = 2;
-exp->string = PrintInt64(op1->i64 < value2);
+exp->string = PrintInt64((long long)(op1->i64 < value2));
if(!exp->expType)
{
exp->expType = op1->type;
uint64 value2 = op2->ui64;
exp->type = 2;
-exp->string = PrintUInt64(op1->ui64 < 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;
long long value2 = op2->i64;
exp->type = 2;
-exp->string = PrintInt64(op1->i64 >= value2);
+exp->string = PrintInt64((long long)(op1->i64 >= value2));
if(!exp->expType)
{
exp->expType = op1->type;
uint64 value2 = op2->ui64;
exp->type = 2;
-exp->string = PrintUInt64(op1->ui64 >= 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;
long long value2 = op2->i64;
exp->type = 2;
-exp->string = PrintInt64(op1->i64 <= value2);
+exp->string = PrintInt64((long long)(op1->i64 <= value2));
if(!exp->expType)
{
exp->expType = op1->type;
uint64 value2 = op2->ui64;
exp->type = 2;
-exp->string = PrintUInt64(op1->ui64 <= 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;
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
{
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
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);
}
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)
{
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);
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"))
{
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++;
}
e->cast.exp->needCast = 0x1;
}
ProcessExpressionType(exp->op.exp2);
+exp->op.exp2->opDestType = 0x0;
if(exp->op.exp2->destType && exp->op.op != '=')
exp->op.exp2->destType->count--;
if(assign && type1 && type1->kind == 13 && exp->op.exp2->expType)
{
if(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)
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)
if(!e->next)
{
FreeType(e->destType);
+e->opDestType = exp->opDestType;
e->destType = exp->destType;
if(e->destType)
{
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)
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);
}