From 5ee185a4896e43c67b6d299becfa616da78fb9f4 Mon Sep 17 00:00:00 2001 From: Bruce Hill Date: Fri, 21 Mar 2025 21:48:53 -0400 Subject: Move stdlib into src/ --- src/stdlib/bytes.h | 38 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 src/stdlib/bytes.h (limited to 'src/stdlib/bytes.h') diff --git a/src/stdlib/bytes.h b/src/stdlib/bytes.h new file mode 100644 index 00000000..ac1b61a3 --- /dev/null +++ b/src/stdlib/bytes.h @@ -0,0 +1,38 @@ +#pragma once + +// An unsigned byte datatype + +#include +#include + +#include "datatypes.h" +#include "stdlib.h" +#include "types.h" +#include "util.h" + +#define Byte(b) ((Byte_t)(b)) + +PUREFUNC Text_t Byte$as_text(const void *b, bool colorize, const TypeInfo_t *type); + +Byte_t Byte$from_int(Int_t i, bool truncate); +Byte_t Byte$from_int64(int64_t i, bool truncate); +Byte_t Byte$from_int32(int32_t i, bool truncate); +Byte_t Byte$from_int16(int16_t i, bool truncate); +MACROLIKE Byte_t Byte$from_int8(int8_t i) { return (Byte_t)i; } +MACROLIKE Byte_t Byte$from_bool(bool b) { return (Byte_t)b; } + +extern const Byte_t Byte$min; +extern const Byte_t Byte$max; + +extern const TypeInfo_t Byte$info; + +Text_t Byte$hex(Byte_t byte, bool uppercase, bool prefix); + +typedef struct { + Byte_t value; + bool has_value:1; +} OptionalByte_t; + +#define NONE_BYTE ((OptionalByte_t){.has_value=false}) + +// vim: ts=4 sw=0 et cino=L2,l1,(0,W4,m1,\:0 -- cgit v1.2.3