From d2cb73c2ce7951ab6fcac83b5dca63eca65a8f24 Mon Sep 17 00:00:00 2001
From: koniifer <koniifer@proton.me>
Date: Thu, 19 Dec 2024 17:29:39 +0000
Subject: [PATCH] almost enums

---
 sysdata/libraries/stn/src/fmt.hb           | 15 +++++++--------
 sysdata/libraries/stn/src/log.hb           |  2 +-
 sysdata/programs/test/src/tests/stn/fmt.hb |  8 +++++++-
 3 files changed, 15 insertions(+), 10 deletions(-)

diff --git a/sysdata/libraries/stn/src/fmt.hb b/sysdata/libraries/stn/src/fmt.hb
index eaa6b8c..3adc1dd 100644
--- a/sysdata/libraries/stn/src/fmt.hb
+++ b/sysdata/libraries/stn/src/fmt.hb
@@ -149,14 +149,13 @@ fmt_nullable := fn(v: @Any(), str: ^u8, opts: FormatOptions): uint {
 
 fmt_enum := fn(v: @Any(), str: ^u8, opts: FormatOptions): uint {
 	T := @TypeOf(v)
-	// len := @len(@nameof(T));
-	// *@as(^[u8; @len(@nameof(T))], @bitcast(str)) = *@bitcast(@nameof(T));
-	// *@as(^[u8; 2], @bitcast(str + len)) = *@bitcast(".(\0")
-	// len += 2
-	// len += @inline(fmt_int, @as(usize(T), @bitcast(v)), str + len, 10);
-	// *@as(^[u8; 2], @bitcast(str + len)) = *@bitcast(".)\0")
-	// return len + 2
-	return fmt_int(@as(usize(T), @bitcast(v)), str, 10)
+	len := @len(@nameof(T));
+	*@as(^[u8; @len(@nameof(T))], @bitcast(str)) = *@bitcast(@nameof(T));
+	*@as(^[u8; 2], @bitcast(str + len)) = *@bitcast(".(\0")
+	len += 2
+	len += @inline(fmt_int, @as(usize(T), @bitcast(v)), str + len, 10);
+	*@as(^[u8; 2], @bitcast(str + len)) = *@bitcast(".)\0")
+	return len + 2
 }
 
 /* SAFETY:
diff --git a/sysdata/libraries/stn/src/log.hb b/sysdata/libraries/stn/src/log.hb
index 67a95b4..8420e79 100644
--- a/sysdata/libraries/stn/src/log.hb
+++ b/sysdata/libraries/stn/src/log.hb
@@ -24,7 +24,7 @@ print_buffer := memory.dangling(u8)
 
 print := fn(v: @Any(), opts: fmt.FormatOptions): void {
 	if @TypeOf(v) == ^u8 {
-		info(v)
+		@inline(log, opts.log, v)
 		return
 	}
 	if print_buffer == memory.dangling(u8) {
diff --git a/sysdata/programs/test/src/tests/stn/fmt.hb b/sysdata/programs/test/src/tests/stn/fmt.hb
index cfb2937..02ff093 100644
--- a/sysdata/programs/test/src/tests/stn/fmt.hb
+++ b/sysdata/programs/test/src/tests/stn/fmt.hb
@@ -12,9 +12,15 @@ SubThingy := struct {
 	b: bool,
 }
 
+OtherThingy := enum {
+	TheOther,
+	TheOtherer,
+}
+
 test := fn(): uint {
 	log.print("Hello, World!\0", .{log: .Error})
-	log.print(Thingy.(-100, -100, .(-math.PI, true)), .{})
+	log.print(OtherThingy.TheOther, .{})
+	log.print(Thingy.(-100, -100, .(-math.PI, true)), .{log: .Warn})
 	log.print(SubThingy.(-math.E, false), .{})
 	log.print(Color.{r: 255, g: 254, b: 253, a: 252}, .{radix: 2})
 	log.print(@as(f64, math.LN_2), .{radix: 16, decimal_digits: 1 << 32})