From dd865697ef2a6a95700d9ed34a0919e8351d1e39 Mon Sep 17 00:00:00 2001 From: dzaima Date: Wed, 19 May 2021 15:08:55 +0300 Subject: [PATCH] updated formatter --- src/h.h | 2 ++ src/load.c | 12 +++++++++--- src/sysfn.c | 9 +++++---- 3 files changed, 16 insertions(+), 7 deletions(-) diff --git a/src/h.h b/src/h.h index 6b74d166..25bfa3ef 100644 --- a/src/h.h +++ b/src/h.h @@ -263,6 +263,8 @@ B m_str32(u32* s); // meant to be used as m_str32(U"{𝕨‿𝕩}"), so doesn't B bqn_exec(B str, B path, B args); // consumes both B bqn_execFile(B path, B args); // consumes +B bqn_fmt(B x); // consumes +B bqn_repr(B x); // consumes NOINLINE NORETURN void thr(B b); NOINLINE NORETURN void thrM(char* s); diff --git a/src/load.c b/src/load.c index e421651e..896107aa 100644 --- a/src/load.c +++ b/src/load.c @@ -23,10 +23,13 @@ B load_comp; B load_compArg; #ifdef FORMATTER -B load_fmt; +B load_fmt, load_repr; B bqn_fmt(B x) { // consumes return c1(load_fmt, x); } +B bqn_repr(B x) { // consumes + return c1(load_repr, x); +} #endif void load_gcFn() { @@ -170,8 +173,11 @@ static inline void load_init() { #include "formatter" ); B fmtM = m_funBlock(fmt_b, 0); ptr_dec(fmt_b); - load_fmt = TI(fmtM).m1_d(fmtM, m_caB(4, (B[]){inc(bi_type), inc(bi_decp), inc(bi_fmtF), inc(bi_fmtN)})); - gc_add(load_fmt); + B fmtR = c1(fmtM, m_caB(4, (B[]){inc(bi_type), inc(bi_decp), inc(bi_fmtF), inc(bi_repr)})); + BS2B fget = TI(fmtR).get; + load_fmt = fget(fmtR, 0); gc_add(load_fmt); + load_repr = fget(fmtR, 1); gc_add(load_repr); + dec(fmtR); #endif gc_enable(); #endif // NO_COMP diff --git a/src/sysfn.c b/src/sysfn.c index a52787cf..7e6341ec 100644 --- a/src/sysfn.c +++ b/src/sysfn.c @@ -34,10 +34,11 @@ B glyph_c1(B t, B x) { B repr_c1(B t, B x) { #define BL 100 - char buf[BL]; - if (isF64(x)) snprintf(buf, BL, "%g", x.f); - else snprintf(buf, BL, "(fmtN: not given a number?)"); - return m_str8(strlen(buf), buf); + if (isF64(x)) { + char buf[BL]; + snprintf(buf, BL, "%g", x.f); + return m_str8(strlen(buf), buf); + } else return bqn_repr(x); } B fill_c1(B t, B x) {