hare

[hare] The Hare programming language
git clone https://git.torresjrjr.com/hare.git
Log | Files | Refs | README | LICENSE

commit 96386617783f88e7931bb22260b8385eaf9877b3
parent 89b74f28f03a195eac50eb8b6f0ed6a844f1f007
Author: Bor Grošelj Simić <bgs@turminal.net>
Date:   Sat, 28 Dec 2024 03:12:52 +0100

all: update for removal of switching on pointers

Signed-off-by: Bor Grošelj Simić <bgs@turminal.net>

Diffstat:
Mbufio/stream.ha | 7+++----
Mtime/chrono/timescale.ha | 116+++++++++++++++++++++++--------------------------------------------------------
2 files changed, 37 insertions(+), 86 deletions(-)

diff --git a/bufio/stream.ha b/bufio/stream.ha @@ -126,12 +126,11 @@ export fn setflush(s: io::handle, b: []u8) void = { export fn unread(s: io::handle, buf: []u8) void = { match (s) { case let st: *io::stream => - switch (st.reader) { - case &read => + if (st.reader == &read) { stream_unread(s: *stream, buf); - case &scan_read => + } else if (st.reader == &scan_read) { scan_unread(s: *scanner, buf); - case => + } else { abort("Attempted unread on unbuffered stream"); }; case => diff --git a/time/chrono/timescale.ha b/time/chrono/timescale.ha @@ -87,13 +87,8 @@ export const tai: timescale = timescale { }; fn tai_conv(ts: *timescale, i: time::instant) ([]time::instant | void) = { - let ret: []time::instant = []; - switch (ts) { - case &tai => - append(ret, i); - return ret; - case => - return void; + if (ts == &tai) { + return alloc([i]...); }; }; @@ -116,12 +111,10 @@ export const utc: timescale = timescale { }; fn utc_convto(ts: *timescale, i: time::instant) ([]time::instant | void) = { - let ret: []time::instant = []; - switch (ts) { - case &utc => - append(ret, i); - return ret; - case &tai => + if (ts == &utc) { + return alloc([i]...); + } else if (ts == &tai) { + let ret: []time::instant = []; if (!utc_isinitialized) { match (init_utc_leapsecs()) { case void => @@ -195,18 +188,14 @@ fn utc_convto(ts: *timescale, i: time::instant) ([]time::instant | void) = { continue; }; }; - case => - return void; }; }; fn utc_convfrom(ts: *timescale, i: time::instant) ([]time::instant | void) = { - let ret: []time::instant = []; - switch (ts) { - case &utc => - append(ret, i); - return ret; - case &tai => + if (ts == &utc) { + return alloc([i]...); + } else if (ts == &tai) { + let ret: []time::instant = []; if (!utc_isinitialized) { match (init_utc_leapsecs()) { case void => @@ -262,8 +251,6 @@ fn utc_convfrom(ts: *timescale, i: time::instant) ([]time::instant | void) = { continue; }; }; - case => - return void; }; }; @@ -285,30 +272,18 @@ export const gps: timescale = timescale { def GPS_OFFSET: time::duration = -19 * time::SECOND; fn gps_convto(ts: *timescale, i: time::instant) ([]time::instant | void) = { - let ret: []time::instant = []; - switch (ts) { - case &gps => - append(ret, i); - return ret; - case &tai => - append(ret, time::add(i, -GPS_OFFSET)); - return ret; - case => - return void; + if (ts == &gps) { + return alloc([i]...); + } else if (ts == &tai) { + return alloc([time::add(i, -GPS_OFFSET)]...); }; }; fn gps_convfrom(ts: *timescale, i: time::instant) ([]time::instant | void) = { - let ret: []time::instant = []; - switch (ts) { - case &gps => - append(ret, i); - return ret; - case &tai => - append(ret, time::add(i, GPS_OFFSET)); - return ret; - case => - return void; + if (ts == &gps) { + return alloc([i]...); + } else if (ts == &tai) { + return alloc([time::add(i, GPS_OFFSET)]...); }; }; @@ -330,31 +305,19 @@ export const tt: timescale = timescale { def TT_OFFSET: time::duration = 32184 * time::MILLISECOND; // 32.184 seconds fn tt_convto(ts: *timescale, i: time::instant) ([]time::instant | void) = { - let ret: []time::instant = []; - switch (ts) { - case &tt => - append(ret, i); - return ret; - case &tai => - append(ret, time::add(i, -TT_OFFSET)); - return ret; - case => - return void; + if (ts == &tt) { + return alloc([i]...); + } else if (ts == &tai) { + return alloc([time::add(i, -TT_OFFSET)]...); }; }; fn tt_convfrom(ts: *timescale, i: time::instant) ([]time::instant | void) = { - let ret: []time::instant = []; - switch (ts) { - case &tt => - append(ret, i); - return ret; - case &tai => - append(ret, time::add(i, TT_OFFSET)); - return ret; - case => - return void; + if (ts == &tt) { + return alloc([i]...); + } else if (ts == &tai) { + return alloc([time::add(i, TT_OFFSET)]...); }; }; @@ -394,11 +357,9 @@ def DELTA_JANSIX_ADJUSTMENT: time::duration = 82944 * time::MILLISECOND; fn mtc_convto(ts: *timescale, i: time::instant) ([]time::instant | void) = { let ret: []time::instant = []; - switch (ts) { - case &mtc => - append(ret, i); - return ret; - case &tai => + if (ts == &mtc) { + return alloc([i]...); + } else if (ts == &tai) { // Change epoch from that of the Mars Sol Date // to the Earth-Mars convergence date 2000 Jan 6th. let i = time::add(i, -DELTA_MARSEPOCH_JANSIX); @@ -415,20 +376,14 @@ fn mtc_convto(ts: *timescale, i: time::instant) ([]time::instant | void) = { // Get the TAI time. // assertion since TT and TAI are continuous. - append(ret, (tt.convto(&tai, i) as []time::instant)[0]); - return ret; - case => - return void; + return alloc([(tt.convto(&tai, i) as []time::instant)[0]]...); }; }; fn mtc_convfrom(ts: *timescale, i: time::instant) ([]time::instant | void) = { - let ret: []time::instant = []; - switch (ts) { - case &mtc => - append(ret, i); - return ret; - case &tai => + if (ts == &mtc) { + return alloc([i]...); + } else if (ts == &tai) { // Get the "Terrestrial Time". // assertion since TT and TAI are continuous. let i = (tt.convfrom(&tai, i) as []time::instant)[0]; @@ -445,10 +400,7 @@ fn mtc_convfrom(ts: *timescale, i: time::instant) ([]time::instant | void) = { i = time::add(i, -DELTA_JANSIX_ADJUSTMENT); // Change epoch to that of the Mars Sol Date. - append(ret, time::add(i, DELTA_MARSEPOCH_JANSIX)); - return ret; - case => - return void; + return alloc([time::add(i, DELTA_MARSEPOCH_JANSIX)]...); }; };