summaryrefslogtreecommitdiff
path: root/src/libzisp/value/char.zig
blob: 6a38f0d0ae285f5b42114fa417a85547692ce150 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
const Value = @import("../value.zig").Value;

pub fn check(v: Value) bool {
    return v.isPacked() and
        !v.char.fixnum and
        !v.char.ptr and
        v.char.tag == .char;
}

pub fn assert(v: Value) void {
    if (!check(v)) {
        v.dump();
        @panic("not char");
    }
}

pub fn pack(c: u21) Value {
    return .{ .char = .{ .value = c } };
}

pub fn unpack(v: Value) u21 {
    assert(v);
    return @truncate(v.char.value);
}