return (Type*)(UNTAG(value_));
}
+ Type* untag_check(factor_vm* parent) const {
+ if (!type_p())
+ parent->type_error(Type::type_number, value_);
+ return untagged();
+ }
+
explicit tagged(cell tagged) : value_(tagged) {}
explicit tagged(Type* untagged) : value_(factor::tag(untagged)) {}
}
};
+template <typename Type> Type* factor_vm::untag_check(cell value) {
+ return tagged<Type>(value).untag_check(this);
+}
+
template <typename Type> Type* untag(cell value) {
return tagged<Type>(value).untagged();
}