diff options
Diffstat (limited to 'boot/symbol.cc')
| -rw-r--r-- | boot/symbol.cc | 27 |
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 |
