diff --git a/uint16.h b/uint16.h index 091e51a..605f85e 100644 --- a/uint16.h +++ b/uint16.h @@ -2,7 +2,8 @@ #ifndef UINT16_H #define UINT16_H -#include +#include // uint16_t, int16_t +#include // size_t #ifdef __cplusplus extern "C" { @@ -58,6 +59,28 @@ uint16 uint16_read_big(const char *in); #endif +static inline size_t fmt_uint16(char* out, uint16 in) { + if (out) uint16_pack(out,in); + return 2; +} + +static inline size_t fmt_uint16_big(char* out, uint16 in) { + if (out) uint16_pack_big(out,in); + return 2; +} + +static inline size_t scan_uint16(const char* in, size_t len, uint16_t* b) { + if (len<2) return 0; + *b = uint16_read(in); + return 2; +} + +static inline size_t scan_uint16_big(const char* in, size_t len, uint16_t* b) { + if (len<2) return 0; + *b = uint16_read_big(in); + return 2; +} + #ifdef __cplusplus } #endif diff --git a/uint32.h b/uint32.h index fb94f0e..cffa72c 100644 --- a/uint32.h +++ b/uint32.h @@ -2,7 +2,8 @@ #ifndef UINT32_H #define UINT32_H -#include +#include // uint32_t, int32_t +#include // size_t #ifdef __cplusplus extern "C" { @@ -58,6 +59,28 @@ uint32 uint32_read_big(const char *in); #endif +static inline size_t fmt_uint32(char* out, uint32 in) { + if (out) uint32_pack(out,in); + return 4; +} + +static inline size_t fmt_uint32_big(char* out, uint32 in) { + if (out) uint32_pack_big(out,in); + return 4; +} + +static inline size_t scan_uint32(const char* in, size_t len, uint32_t* b) { + if (len<4) return 0; + *b = uint32_read(in); + return 4; +} + +static inline size_t scan_uint32_big(const char* in, size_t len, uint32_t* b) { + if (len<4) return 0; + *b = uint32_read_big(in); + return 4; +} + #ifdef __cplusplus } #endif diff --git a/uint64.h b/uint64.h index fef8c54..d2cdcde 100644 --- a/uint64.h +++ b/uint64.h @@ -2,7 +2,8 @@ #ifndef UINT64_H #define UINT64_H -#include +#include // uint64_t, int64_t +#include // size_t #ifdef __cplusplus extern "C" { @@ -29,6 +30,28 @@ uint64 uint64_read_big(const char *in); #endif +static inline size_t fmt_uint64(char* out, uint64 in) { + if (out) uint64_pack(out,in); + return 8; +} + +static inline size_t fmt_uint64_big(char* out, uint64 in) { + if (out) uint64_pack_big(out,in); + return 8; +} + +static inline size_t scan_uint64(const char* in, size_t len, uint64_t* b) { + if (len<8) return 0; + *b = uint64_read(in); + return 8; +} + +static inline size_t scan_uint64_big(const char* in, size_t len, uint64_t* b) { + if (len<8) return 0; + *b = uint64_read_big(in); + return 8; +} + #ifdef __cplusplus } #endif