summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTaylan Kammer <taylan.kammer@gmail.com>2026-06-01 19:27:32 +0200
committerTaylan Kammer <taylan.kammer@gmail.com>2026-06-01 19:27:32 +0200
commit19cbe665d0fbcd56fb0dfbba0be3b235cda96302 (patch)
treed5d57187810fe83df0a75b9707bdd4048b99a4ca
parent6fad780b6c0a8ac0bce4cd33fea54cb960b5e36d (diff)
Add a pair of rune API functions.
-rw-r--r--src/zisp/value.zig5
-rw-r--r--src/zisp/value/array.zig2
-rw-r--r--src/zisp/value/double.zig1
-rw-r--r--src/zisp/value/fixnum.zig1
-rw-r--r--src/zisp/value/pair.zig2
-rw-r--r--src/zisp/value/rune.zig9
6 files changed, 18 insertions, 2 deletions
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);
+}