Allow bitwise operation on enums

This commit is contained in:
gingerBill
2018-08-26 18:05:59 +01:00
parent e5735af6d6
commit 1830c1e57c
2 changed files with 32 additions and 24 deletions
+19 -10
View File
@@ -298,16 +298,6 @@ ExactValue exact_value_to_integer(ExactValue v) {
return r;
}
i64 exact_value_to_i64(ExactValue v) {
v = exact_value_to_integer(v);
i64 result = 0;
if (v.kind == ExactValue_Integer) {
return big_int_to_i64(&v.value_integer);
}
return result;
}
ExactValue exact_value_to_float(ExactValue v) {
switch (v.kind) {
case ExactValue_Integer:
@@ -370,6 +360,25 @@ ExactValue exact_value_make_imag(ExactValue v) {
return r;
}
i64 exact_value_to_i64(ExactValue v) {
v = exact_value_to_integer(v);
if (v.kind == ExactValue_Integer) {
return big_int_to_i64(&v.value_integer);
}
return 0;
}
f64 exact_value_to_f64(ExactValue v) {
v = exact_value_to_float(v);
if (v.kind == ExactValue_Float) {
return v.value_float;
}
return 0.0;
}
ExactValue exact_unary_operator_value(TokenKind op, ExactValue v, i32 precision, bool is_unsigned) {
switch (op) {