set_result(static_cast<T>(value.value<bool>()));
else if(value.check_type<int>())
set_result(static_cast<T>(value.value<int>()));
+ else if(value.check_type<unsigned>())
+ set_result(static_cast<T>(value.value<unsigned>()));
else if(value.check_type<float>())
set_result(static_cast<T>(value.value<float>()));
}
literal->token = (r_constant_value.value<bool>() ? "true" : "false");
else if(r_constant_value.check_type<int>())
literal->token = lexical_cast<string>(r_constant_value.value<int>());
+ else if(r_constant_value.check_type<unsigned>())
+ literal->token = lexical_cast<string>(r_constant_value.value<unsigned>())+"u";
else if(r_constant_value.check_type<float>())
{
literal->token = lexical_cast<string>(r_constant_value.value<float>());
set_result(evaluate_logical(oper, left_value.value<bool>(), r_constant_value.value<bool>()));
else if(!oper2 && left_value.check_type<int>())
set_result(evaluate_logical(oper, left_value.value<int>(), r_constant_value.value<int>()));
+ else if(!oper2 && left_value.check_type<unsigned>())
+ set_result(evaluate_logical(oper, left_value.value<unsigned>(), r_constant_value.value<unsigned>()));
}
else if((oper=='<' || oper=='>') && oper2!=oper)
{
if(left_value.check_type<int>())
set_result(evaluate_relation(binary.oper->token, left_value.value<int>(), r_constant_value.value<int>()));
+ else if(left_value.check_type<unsigned>())
+ set_result(evaluate_relation(binary.oper->token, left_value.value<unsigned>(), r_constant_value.value<unsigned>()));
else if(left_value.check_type<float>())
set_result(evaluate_relation(binary.oper->token, left_value.value<float>(), r_constant_value.value<float>()));
}
{
if(left_value.check_type<int>())
set_result((left_value.value<int>()==r_constant_value.value<int>()) == (oper=='='));
- if(left_value.check_type<float>())
+ else if(left_value.check_type<unsigned>())
+ set_result((left_value.value<unsigned>()==r_constant_value.value<unsigned>()) == (oper=='='));
+ else if(left_value.check_type<float>())
set_result((left_value.value<float>()==r_constant_value.value<float>()) == (oper=='='));
}
else if(oper=='+' || oper=='-' || oper=='*' || oper=='/')
{
if(left_value.check_type<int>())
set_result(evaluate_arithmetic(oper, left_value.value<int>(), r_constant_value.value<int>()));
+ else if(left_value.check_type<unsigned>())
+ set_result(evaluate_arithmetic(oper, left_value.value<unsigned>(), r_constant_value.value<unsigned>()));
else if(left_value.check_type<float>())
set_result(evaluate_arithmetic(oper, left_value.value<float>(), r_constant_value.value<float>()));
}
{
if(left_value.check_type<int>())
set_result(evaluate_int_special_op(oper, left_value.value<int>(), r_constant_value.value<int>()));
+ else if(left_value.check_type<unsigned>())
+ set_result(evaluate_int_special_op(oper, left_value.value<unsigned>(), r_constant_value.value<unsigned>()));
}
}
if(basic->kind==BasicTypeDeclaration::BOOL)
convert_to_result<bool>(r_constant_value);
- else if(basic->kind==BasicTypeDeclaration::INT && basic->size==32)
+ else if(basic->kind==BasicTypeDeclaration::INT && basic->size==32 && basic->sign)
convert_to_result<int>(r_constant_value);
+ else if(basic->kind==BasicTypeDeclaration::INT && basic->size==32 && !basic->sign)
+ convert_to_result<unsigned>(r_constant_value);
else if(basic->kind==BasicTypeDeclaration::FLOAT && basic->size==32)
convert_to_result<float>(r_constant_value);