summaryrefslogtreecommitdiff
path: root/src/libzisp/value/char.zig
diff options
context:
space:
mode:
Diffstat (limited to 'src/libzisp/value/char.zig')
-rw-r--r--src/libzisp/value/char.zig21
1 files changed, 14 insertions, 7 deletions
diff --git a/src/libzisp/value/char.zig b/src/libzisp/value/char.zig
index 6a38f0d..98bb26f 100644
--- a/src/libzisp/value/char.zig
+++ b/src/libzisp/value/char.zig
@@ -1,10 +1,11 @@
-const Value = @import("../value.zig").Value;
+const value = @import("../value.zig");
+
+const Value = value.Value;
+
+// Zig API
pub fn check(v: Value) bool {
- return v.isPacked() and
- !v.char.fixnum and
- !v.char.ptr and
- v.char.tag == .char;
+ return v.isOther(.char);
}
pub fn assert(v: Value) void {
@@ -15,10 +16,16 @@ pub fn assert(v: Value) void {
}
pub fn pack(c: u21) Value {
- return .{ .char = .{ .value = c } };
+ return .{ .char = .{ .char = c } };
}
pub fn unpack(v: Value) u21 {
assert(v);
- return @truncate(v.char.value);
+ return @truncate(v.char.char);
+}
+
+// Zisp API
+
+pub fn pred(v: Value) Value {
+ return value.boole.pack(check(v));
}