gmio_core: add gmio_adv_[de,en]code_xxx() functions in byte_codec.h
This commit is contained in:
parent
bf8e01d237
commit
5951d7be70
@ -39,19 +39,18 @@
|
|||||||
* uintNN_t gmio_decode_uintNN_be(const uint8_t* bytes)
|
* uintNN_t gmio_decode_uintNN_be(const uint8_t* bytes)
|
||||||
*
|
*
|
||||||
* Functions that writes NNbit uint to memory in little-endian
|
* Functions that writes NNbit uint to memory in little-endian
|
||||||
* uintNN_t gmio_encode_uintNN_le(uintNN_t val, uint8_t* bytes);
|
* void gmio_encode_uintNN_le(uintNN_t val, uint8_t* bytes);
|
||||||
*
|
*
|
||||||
* Functions that writes NNbit uint to memory in big-endian
|
* Functions that writes NNbit uint to memory in big-endian
|
||||||
* uintNN_t gmio_encode_uintNN_be(uintNN_t val, uint8_t* bytes);
|
* void gmio_encode_uintNN_be(uintNN_t val, uint8_t* bytes);
|
||||||
*/
|
*/
|
||||||
|
|
||||||
GMIO_INLINE uint16_t gmio_decode_uint16_le(const uint8_t* bytes);
|
GMIO_INLINE uint16_t gmio_decode_uint16_le(const uint8_t* bytes);
|
||||||
GMIO_INLINE uint16_t gmio_decode_uint16_be(const uint8_t* bytes);
|
GMIO_INLINE uint16_t gmio_decode_uint16_be(const uint8_t* bytes);
|
||||||
GMIO_INLINE void gmio_encode_uint16_le(uint16_t val, uint8_t* bytes);
|
|
||||||
GMIO_INLINE void gmio_encode_uint16_be(uint16_t val, uint8_t* bytes);
|
|
||||||
|
|
||||||
GMIO_INLINE uint32_t gmio_decode_uint32_le(const uint8_t* bytes);
|
GMIO_INLINE uint32_t gmio_decode_uint32_le(const uint8_t* bytes);
|
||||||
GMIO_INLINE uint32_t gmio_decode_uint32_be(const uint8_t* bytes);
|
GMIO_INLINE uint32_t gmio_decode_uint32_be(const uint8_t* bytes);
|
||||||
|
GMIO_INLINE void gmio_encode_uint16_le(uint16_t val, uint8_t* bytes);
|
||||||
|
GMIO_INLINE void gmio_encode_uint16_be(uint16_t val, uint8_t* bytes);
|
||||||
GMIO_INLINE void gmio_encode_uint32_le(uint32_t val, uint8_t* bytes);
|
GMIO_INLINE void gmio_encode_uint32_le(uint32_t val, uint8_t* bytes);
|
||||||
GMIO_INLINE void gmio_encode_uint32_be(uint32_t val, uint8_t* bytes);
|
GMIO_INLINE void gmio_encode_uint32_be(uint32_t val, uint8_t* bytes);
|
||||||
|
|
||||||
@ -62,6 +61,39 @@ GMIO_INLINE void gmio_encode_uint64_le(uint64_t val, uint8_t* bytes);
|
|||||||
GMIO_INLINE void gmio_encode_uint64_be(uint64_t val, uint8_t* bytes);
|
GMIO_INLINE void gmio_encode_uint64_be(uint64_t val, uint8_t* bytes);
|
||||||
#endif /* GMIO_HAVE_INT64_TYPE */
|
#endif /* GMIO_HAVE_INT64_TYPE */
|
||||||
|
|
||||||
|
/* Functions that reads NNbit uint from memory (little-endian) and advances
|
||||||
|
* buffer pos
|
||||||
|
* uintNN_t gmio_adv_decode_uintNN_le(const uint8_t** bytes)
|
||||||
|
*
|
||||||
|
* Functions that reads NNbit uint from memory (big-endian) and advances
|
||||||
|
* buffer pos
|
||||||
|
* uintNN_t gmio_adv_decode_uintNN_be(const uint8_t** bytes)
|
||||||
|
*
|
||||||
|
* Functions that writes NNbit uint to memory in little-endian and returns
|
||||||
|
* advanced buffer pos
|
||||||
|
* uint8_t* gmio_adv_encode_uintNN_le(uintNN_t val, uint8_t* bytes)
|
||||||
|
*
|
||||||
|
* Functions that writes NNbit uint to memory in big-endian and returns
|
||||||
|
* advanced buffer pos
|
||||||
|
* uint8_t* gmio_adv_encode_uintNN_be(uintNN_t val, uint8_t* bytes)
|
||||||
|
*/
|
||||||
|
|
||||||
|
GMIO_INLINE uint16_t gmio_adv_decode_uint16_le(const uint8_t** bytes);
|
||||||
|
GMIO_INLINE uint16_t gmio_adv_decode_uint16_be(const uint8_t** bytes);
|
||||||
|
GMIO_INLINE uint32_t gmio_adv_decode_uint32_le(const uint8_t** bytes);
|
||||||
|
GMIO_INLINE uint32_t gmio_adv_decode_uint32_be(const uint8_t** bytes);
|
||||||
|
GMIO_INLINE uint8_t* gmio_adv_encode_uint16_le(uint16_t val, uint8_t* bytes);
|
||||||
|
GMIO_INLINE uint8_t* gmio_adv_encode_uint16_be(uint16_t val, uint8_t* bytes);
|
||||||
|
GMIO_INLINE uint8_t* gmio_adv_encode_uint32_le(uint32_t val, uint8_t* bytes);
|
||||||
|
GMIO_INLINE uint8_t* gmio_adv_encode_uint32_be(uint32_t val, uint8_t* bytes);
|
||||||
|
|
||||||
|
#ifdef GMIO_HAVE_INT64_TYPE
|
||||||
|
GMIO_INLINE uint64_t gmio_adv_decode_uint64_le(const uint8_t** bytes);
|
||||||
|
GMIO_INLINE uint64_t gmio_adv_decode_uint64_be(const uint8_t** bytes);
|
||||||
|
GMIO_INLINE uint8_t* gmio_adv_encode_uint64_le(uint64_t val, uint8_t* bytes);
|
||||||
|
GMIO_INLINE uint8_t* gmio_adv_encode_uint64_be(uint64_t val, uint8_t* bytes);
|
||||||
|
#endif /* GMIO_HAVE_INT64_TYPE */
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -162,4 +194,86 @@ void gmio_encode_uint64_be(uint64_t val, uint8_t* bytes)
|
|||||||
|
|
||||||
#endif /* GMIO_HAVE_INT64_TYPE */
|
#endif /* GMIO_HAVE_INT64_TYPE */
|
||||||
|
|
||||||
|
uint16_t gmio_adv_decode_uint16_le(const uint8_t** bytes)
|
||||||
|
{
|
||||||
|
const uint16_t val = gmio_decode_uint16_le(*bytes);
|
||||||
|
*bytes += 2;
|
||||||
|
return val;
|
||||||
|
}
|
||||||
|
|
||||||
|
uint16_t gmio_adv_decode_uint16_be(const uint8_t** bytes)
|
||||||
|
{
|
||||||
|
const uint16_t val = gmio_decode_uint16_be(*bytes);
|
||||||
|
*bytes += 2;
|
||||||
|
return val;
|
||||||
|
}
|
||||||
|
|
||||||
|
uint32_t gmio_adv_decode_uint32_le(const uint8_t** bytes)
|
||||||
|
{
|
||||||
|
const uint32_t val = gmio_decode_uint32_le(*bytes);
|
||||||
|
*bytes += 4;
|
||||||
|
return val;
|
||||||
|
}
|
||||||
|
|
||||||
|
uint32_t gmio_adv_decode_uint32_be(const uint8_t** bytes)
|
||||||
|
{
|
||||||
|
const uint32_t val = gmio_decode_uint32_be(*bytes);
|
||||||
|
*bytes += 4;
|
||||||
|
return val;
|
||||||
|
}
|
||||||
|
|
||||||
|
uint8_t* gmio_adv_encode_uint16_le(uint16_t val, uint8_t* bytes)
|
||||||
|
{
|
||||||
|
gmio_encode_uint16_le(val, bytes);
|
||||||
|
return bytes + 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
uint8_t* gmio_adv_encode_uint16_be(uint16_t val, uint8_t* bytes)
|
||||||
|
{
|
||||||
|
gmio_encode_uint16_be(val, bytes);
|
||||||
|
return bytes + 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
uint8_t* gmio_adv_encode_uint32_le(uint32_t val, uint8_t* bytes)
|
||||||
|
{
|
||||||
|
gmio_encode_uint32_le(val, bytes);
|
||||||
|
return bytes + 4;
|
||||||
|
}
|
||||||
|
|
||||||
|
uint8_t* gmio_adv_encode_uint32_be(uint32_t val, uint8_t* bytes)
|
||||||
|
{
|
||||||
|
gmio_encode_uint32_be(val, bytes);
|
||||||
|
return bytes + 4;
|
||||||
|
}
|
||||||
|
|
||||||
|
#ifdef GMIO_HAVE_INT64_TYPE
|
||||||
|
|
||||||
|
uint64_t gmio_adv_decode_uint64_le(const uint8_t** bytes)
|
||||||
|
{
|
||||||
|
const uint64_t val = gmio_decode_uint64_le(*bytes);
|
||||||
|
*bytes += 8;
|
||||||
|
return val;
|
||||||
|
}
|
||||||
|
|
||||||
|
uint64_t gmio_adv_decode_uint64_be(const uint8_t** bytes)
|
||||||
|
{
|
||||||
|
const uint64_t val = gmio_decode_uint64_be(*bytes);
|
||||||
|
*bytes += 8;
|
||||||
|
return val;
|
||||||
|
}
|
||||||
|
|
||||||
|
uint8_t* gmio_adv_encode_uint64_le(uint64_t val, uint8_t* bytes)
|
||||||
|
{
|
||||||
|
gmio_encode_uint64_le(val, bytes);
|
||||||
|
return bytes + 8;
|
||||||
|
}
|
||||||
|
|
||||||
|
uint8_t* gmio_adv_encode_uint64_be(uint64_t val, uint8_t* bytes)
|
||||||
|
{
|
||||||
|
gmio_encode_uint64_be(val, bytes);
|
||||||
|
return bytes + 8;
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif /* GMIO_HAVE_INT64_TYPE */
|
||||||
|
|
||||||
#endif /* GMIO_INTERNAL_BYTE_CODEC_H */
|
#endif /* GMIO_INTERNAL_BYTE_CODEC_H */
|
||||||
|
@ -75,53 +75,6 @@ static const struct tm* gmio_nonnull_datetime(const struct tm* datetime)
|
|||||||
return datetime;
|
return datetime;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Reads 16b uint from memory (little-endian) and advances buffer pos */
|
|
||||||
static uint16_t gmio_adv_decode_uint16_le(const uint8_t** bytes)
|
|
||||||
{
|
|
||||||
const uint16_t val = gmio_decode_uint16_le(*bytes);
|
|
||||||
*bytes += 2;
|
|
||||||
return val;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Reads 32b uint from memory (little-endian) and advances buffer pos */
|
|
||||||
static uint32_t gmio_adv_decode_uint32_le(const uint8_t** bytes)
|
|
||||||
{
|
|
||||||
const uint32_t val = gmio_decode_uint32_le(*bytes);
|
|
||||||
*bytes += 4;
|
|
||||||
return val;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Encodes little-endian 32b val in buffer and returns advanced buffer pos */
|
|
||||||
static uint8_t* gmio_adv_encode_uint32_le(uint32_t val, uint8_t* bytes)
|
|
||||||
{
|
|
||||||
gmio_encode_uint32_le(val, bytes);
|
|
||||||
return bytes + 4;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Encodes little-endian 16b val in buffer and returns advanced buffer pos */
|
|
||||||
static uint8_t* gmio_adv_encode_uint16_le(uint16_t val, uint8_t* bytes)
|
|
||||||
{
|
|
||||||
gmio_encode_uint16_le(val, bytes);
|
|
||||||
return bytes + 2;
|
|
||||||
}
|
|
||||||
|
|
||||||
#ifdef GMIO_HAVE_INT64_TYPE
|
|
||||||
/* Reads 64b uint from memory (little-endian) and advances buffer pos */
|
|
||||||
static uint64_t gmio_adv_decode_uint64_le(const uint8_t** bytes)
|
|
||||||
{
|
|
||||||
const uint64_t val = gmio_decode_uint64_le(*bytes);
|
|
||||||
*bytes += 8;
|
|
||||||
return val;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Encodes little-endian 64b val in buffer and returns advanced buffer pos */
|
|
||||||
static uint8_t* gmio_adv_encode_uint64_le(uint64_t val, uint8_t* bytes)
|
|
||||||
{
|
|
||||||
gmio_encode_uint64_le(val, bytes);
|
|
||||||
return bytes + 8;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* Helper to facilitate return from gmio_zip_write_xxx() API functions */
|
/* Helper to facilitate return from gmio_zip_write_xxx() API functions */
|
||||||
static size_t gmio_zip_write_returnhelper(
|
static size_t gmio_zip_write_returnhelper(
|
||||||
struct gmio_stream* stream,
|
struct gmio_stream* stream,
|
||||||
@ -142,8 +95,7 @@ static bool gmio_zip_read_checkhelper(
|
|||||||
return read == expected && !gmio_stream_error(stream);
|
return read == expected && !gmio_stream_error(stream);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Helper to facilitate return from gmio_zip_read_xxx() and gmio_zip_write_xxx()
|
/* Helper to facilitate return from gmio_zip_[read,write]_xxx() API functions */
|
||||||
* API functions */
|
|
||||||
static size_t gmio_zip_io_returnerr(size_t io_len, int error, int* ptr_error)
|
static size_t gmio_zip_io_returnerr(size_t io_len, int error, int* ptr_error)
|
||||||
{
|
{
|
||||||
if (ptr_error != NULL)
|
if (ptr_error != NULL)
|
||||||
|
Loading…
Reference in New Issue
Block a user