From 32b61fbced741d7cb424c93da333ef267361831d Mon Sep 17 00:00:00 2001 From: Scott Olsen Date: Thu, 20 Feb 2020 23:39:25 -0500 Subject: [PATCH] Add zero for other StdInt types --- core/StdInt.carp | 5 +++++ scratch | 17 +++++++++++++++++ 2 files changed, 22 insertions(+) create mode 100644 scratch diff --git a/core/StdInt.carp b/core/StdInt.carp index ea9f1292..b2769f8d 100644 --- a/core/StdInt.carp +++ b/core/StdInt.carp @@ -29,6 +29,7 @@ (register copy (Fn [&Int8] Int8)) (defn prn [a] (Int8.str a)) + (defn zero [] (from-long 0l)) (register from-bytes (Fn [&(Array Byte)] (Array Int8))) ) @@ -59,6 +60,7 @@ (register copy (Fn [&Int16] Int16)) (defn prn [a] (Int16.str a)) + (defn zero [] (from-long 0l)) (register from-bytes (Fn [&(Array Byte)] (Array Int16))) ) @@ -89,6 +91,7 @@ (register copy (Fn [&Int32] Int32)) (defn prn [a] (Int32.str a)) + (defn zero [] (from-long 0l)) (register from-bytes (Fn [&(Array Byte)] (Array Int32))) ) @@ -119,6 +122,7 @@ (register copy (Fn [&Int64] Int64)) (defn prn [a] (Int64.str a)) + (defn zero [] (from-long 0l)) (register from-bytes (Fn [&(Array Byte)] (Array Int64))) ) @@ -149,6 +153,7 @@ (register copy (Fn [&Uint8] Uint8)) (defn prn [a] (Uint8.str a)) + (defn zero [] (from-long 0l)) (register from-bytes (Fn [&(Array Byte)] (Array Uint8))) ) diff --git a/scratch b/scratch new file mode 100644 index 00000000..9c576dc7 --- /dev/null +++ b/scratch @@ -0,0 +1,17 @@ +(defn safe-to-int16 [m m2] + (match m + (Maybe.Just b) + (match m2 + (Maybe.Just bb) (Maybe.Just (to-int16 b bb)) + (Maybe.Nothing) (Maybe.Nothing)) + (Maybe.Nothing) (Maybe.Nothing))) + +(doc bytes->int16 + "Interprets the first two bytes in a byte sequence as an int16 value.") + (sig bytes->int16 (Fn [Order (Ref (Array Byte) a)] (Maybe Int))) + (defn bytes->int16 [order bs] + (let [first-byte (Array.nth bs 0) + second-byte (Array.nth bs 1)] + (match order + (Order.LittleEndian) (safe-to-int16 first-byte second-byte) + (Order.BigEndian) (safe-to-int16 second-byte first-byte))))