From b71dd676b5ebe3feec1eb2194e20453a3d01705d Mon Sep 17 00:00:00 2001 From: Sam Anthony Date: Sat, 1 Nov 2025 20:32:55 -0400 Subject: lookup output value in table --- fw/types.h | 41 ++++++++++++++++++++++++++--------------- 1 file changed, 26 insertions(+), 15 deletions(-) (limited to 'fw/types.h') diff --git a/fw/types.h b/fw/types.h index 55a17f6..f772878 100644 --- a/fw/types.h +++ b/fw/types.h @@ -15,25 +15,36 @@ typedef enum { typedef uint8_t U8; typedef uint16_t U16; typedef uint32_t U32; - typedef int8_t I8; typedef int16_t I16; typedef int32_t I32; +typedef enum { + NUM_U8, + NUM_U16, + NUM_U32, + NUM_I8, + NUM_I16, + NUM_I32, +} NumType; + // Number typedef struct { - enum { - NUM_U8, - NUM_U16, - NUM_U32, - NUM_I8, - NUM_I16, - NUM_I32, - } type; - U8 u8; - U16 u16; - U32 u32; - I8 i8; - I16 i16; - I32 i32; + NumType type; + union { + U8 u8; + U16 u16; + U32 u32; + I8 i8; + I16 i16; + I32 i32; + }; } Number; + +Status u32ToNum(U32 x, NumType t, Number *n); + +// Compare two numbers. +// -1 if a < b +// 0 if a == b +// 1 if a > b +Status cmpNum(Number a, Number b, int *ord); -- cgit v1.2.3