summaryrefslogtreecommitdiff
path: root/src/libzisp/value/char.zig
diff options
context:
space:
mode:
authorTaylan Kammer <taylan.kammer@gmail.com>2025-02-18 22:48:57 +0100
committerTaylan Kammer <taylan.kammer@gmail.com>2025-02-18 22:48:57 +0100
commit4d0db1a1065f18d879b3ff90da6ecb14e9e1ae31 (patch)
tree7c5c275e7f3dae7bf96377560269b5a1bfa1fb99 /src/libzisp/value/char.zig
parent2384a31c42f480c961785bcf0520bb0688b8e028 (diff)
update
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));
}