diff options
| author | Taylan Kammer <taylan.kammer@gmail.com> | 2025-03-30 18:34:00 +0200 |
|---|---|---|
| committer | Taylan Kammer <taylan.kammer@gmail.com> | 2025-03-30 18:34:00 +0200 |
| commit | 3d05c94b9d8aa964e4ff848c95d5999cec170e04 (patch) | |
| tree | 2864753404e8c9cb9fa8bce537772a29b90d1cbd /src/libzisp/value/pair.zig | |
| parent | 9340f3c44ca0d9d4fdee905fc6e8b428824b9185 (diff) | |
Big cleanup.
Diffstat (limited to 'src/libzisp/value/pair.zig')
| -rw-r--r-- | src/libzisp/value/pair.zig | 55 |
1 files changed, 0 insertions, 55 deletions
diff --git a/src/libzisp/value/pair.zig b/src/libzisp/value/pair.zig deleted file mode 100644 index 6ea1edf..0000000 --- a/src/libzisp/value/pair.zig +++ /dev/null @@ -1,55 +0,0 @@ -const std = @import("std"); - -const value = @import("../value.zig"); -const gc = @import("../gc.zig"); - -const ptr = @import("ptr.zig"); - -const Value = value.Value; - -// Zig API - -pub fn check(v: Value) bool { - return ptr.checkZispTag(v, .pair); -} - -pub fn assert(v: Value) void { - if (!check(v)) { - v.dump(); - @panic("not pair"); - } -} - -// Zisp API - -pub fn pred(v: Value) Value { - return value.boole.pack(check(v)); -} - -pub fn cons(v1: Value, v2: Value) Value { - return ptr.pack(@ptrCast(gc.cons(v1, v2)), .pair); -} - -fn getMem(v: Value) *[2]Value { - return @ptrCast(ptr.unpack(v).@"0"); -} - -pub fn car(v: Value) Value { - assert(v); - return getMem(v)[0]; -} - -pub fn cdr(v: Value) Value { - assert(v); - return getMem(v)[1]; -} - -pub fn setcar(v: Value, new: Value) void { - assert(v); - getMem(v)[0] = new; -} - -pub fn setcdr(v: Value, new: Value) void { - assert(v); - getMem(v)[1] = new; -} |
