aboutsummaryrefslogtreecommitdiff
path: root/boot/symbol.cc
diff options
context:
space:
mode:
Diffstat (limited to 'boot/symbol.cc')
-rw-r--r--boot/symbol.cc27
1 files changed, 27 insertions, 0 deletions
diff --git a/boot/symbol.cc b/boot/symbol.cc
index 6ad89b7..7b45612 100644
--- a/boot/symbol.cc
+++ b/boot/symbol.cc
@@ -420,6 +420,33 @@ namespace elna::boot
return false;
}
+ bool is_numeric_type(const type& checked)
+ {
+ type resolved = resolve_underlying_type(checked);
+
+ return is_primitive_type(resolved, "Int")
+ || is_primitive_type(resolved, "Word")
+ || is_primitive_type(resolved, "Float");
+ }
+
+ bool is_integral_type(const type& checked)
+ {
+ type resolved = resolve_underlying_type(checked);
+
+ return is_primitive_type(resolved, "Int")
+ || is_primitive_type(resolved, "Word");
+ }
+
+ bool is_discrete_type(const type& checked)
+ {
+ type resolved = resolve_underlying_type(checked);
+
+ return is_primitive_type(resolved, "Int")
+ || is_primitive_type(resolved, "Word")
+ || is_primitive_type(resolved, "Bool")
+ || is_primitive_type(resolved, "Char");
+ }
+
bool is_any_pointer_type(const type& checked)
{
return checked.get<pointer_type>() != nullptr