From 19cbe665d0fbcd56fb0dfbba0be3b235cda96302 Mon Sep 17 00:00:00 2001 From: Taylan Kammer Date: Mon, 1 Jun 2026 19:27:32 +0200 Subject: Add a pair of rune API functions. --- src/zisp/value.zig | 5 +++++ src/zisp/value/array.zig | 2 +- src/zisp/value/double.zig | 1 + src/zisp/value/fixnum.zig | 1 + src/zisp/value/pair.zig | 2 +- src/zisp/value/rune.zig | 9 +++++++++ 6 files changed, 18 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/zisp/value.zig b/src/zisp/value.zig index b40f022..1a32dc5 100644 --- a/src/zisp/value.zig +++ b/src/zisp/value.zig @@ -195,6 +195,11 @@ pub fn sstrLen(x: u64) u8 { }; } +/// Transform back and forth between rune and sstr +pub fn runeXsstr(v: Value) Value { + return @bitCast(v.bits ^ (1 << 48)); +} + // Make sure false/true only differ in LSb. pub const MiscValue = enum(u8) { f, t, nil, eof, none, undef }; diff --git a/src/zisp/value/array.zig b/src/zisp/value/array.zig index 650cae1..59667c8 100644 --- a/src/zisp/value/array.zig +++ b/src/zisp/value/array.zig @@ -1,8 +1,8 @@ const builtin = @import("builtin"); const std = @import("std"); -const value = @import("../value.zig"); const gc = @import("../gc.zig"); +const value = @import("../value.zig"); const Value = value.Value; diff --git a/src/zisp/value/double.zig b/src/zisp/value/double.zig index 5cfe6ee..7b868fc 100644 --- a/src/zisp/value/double.zig +++ b/src/zisp/value/double.zig @@ -1,4 +1,5 @@ const value = @import("../value.zig"); + const Value = value.Value; // Zig API diff --git a/src/zisp/value/fixnum.zig b/src/zisp/value/fixnum.zig index d6e9184..0a6dd46 100644 --- a/src/zisp/value/fixnum.zig +++ b/src/zisp/value/fixnum.zig @@ -1,4 +1,5 @@ const std = @import("std"); + const value = @import("../value.zig"); const Value = value.Value; diff --git a/src/zisp/value/pair.zig b/src/zisp/value/pair.zig index ec7e69b..c468d4a 100644 --- a/src/zisp/value/pair.zig +++ b/src/zisp/value/pair.zig @@ -1,7 +1,7 @@ const std = @import("std"); -const value = @import("../value.zig"); const gc = @import("../gc.zig"); +const value = @import("../value.zig"); const ptr = @import("ptr.zig"); diff --git a/src/zisp/value/rune.zig b/src/zisp/value/rune.zig index 59a2d5d..32230c4 100644 --- a/src/zisp/value/rune.zig +++ b/src/zisp/value/rune.zig @@ -58,3 +58,12 @@ pub fn unpack(v: Value) ShortString { pub fn pred(v: Value) Value { return value.boole.pack(check(v)); } + +pub fn make(v: Value) Value { + value.sstr.assert(v); + return value.runeXsstr(v); +} + +pub fn name(v: Value) Value { + return value.runeXsstr(v); +} -- cgit v1.2.3