aboutsummaryrefslogtreecommitdiff
path: root/boot/symbol.cc
diff options
context:
space:
mode:
authorEugen Wissner <belka@caraus.de>2026-07-19 17:09:40 +0200
committerEugen Wissner <belka@caraus.de>2026-07-19 18:30:21 +0200
commitcdbc1695a93910df5729779de31912a3b4b4172b (patch)
tree43a4c5a192df7060f8a36c75d339be7ac5722f72 /boot/symbol.cc
parentcd2ee0c97348444779a155909b7ec78d89cfd2e0 (diff)
downloadelna-cdbc1695a93910df5729779de31912a3b4b4172b.tar.gz
Support unary plus operation
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