HCoreBase/src/HStructConvByte.c
2025-06-30 18:06:31 +08:00

60 lines
1.6 KiB
C

#include "HStructConvByte.h"
#include "HDLog.h"
#include <stdint.h>
HSTRUCT_CONV_DEFINE(uint8_t)
{
HSTRUCT_CONV_BEGIN(uint8_t);
HSTRUCT_UPDATE(sizeof(uint8_t));
HSTRUCT_GET_DATA(uint8_t) = HSTRUCT_GET_TYPE();
HSTRUCT_END();
}
HSTRUCT_CONV_DEFINE(uint16_t)
{
HSTRUCT_CONV_BEGIN(uint16_t);
HSTRUCT_UPDATE(sizeof(uint16_t));
HSTRUCT_GET_DATA_RAW(uint8_t *)[0] = (HSTRUCT_GET_TYPE() >> 8) & 0xFF;
HSTRUCT_GET_DATA_RAW(uint8_t *)[1] = HSTRUCT_GET_TYPE() & 0xFF;
HSTRUCT_END();
}
HSTRUCT_CONV_DEFINE(uint32_t)
{
HSTRUCT_CONV_BEGIN(uint32_t);
HSTRUCT_UPDATE(sizeof(uint32_t));
HSTRUCT_GET_DATA_RAW(uint8_t *)[0] = (HSTRUCT_GET_TYPE() >> 24) & 0xFF;
HSTRUCT_GET_DATA_RAW(uint8_t *)[1] = (HSTRUCT_GET_TYPE() >> 16) & 0xFF;
HSTRUCT_GET_DATA_RAW(uint8_t *)[2] = (HSTRUCT_GET_TYPE() >> 8) & 0xFF;
HSTRUCT_GET_DATA_RAW(uint8_t *)[3] = HSTRUCT_GET_TYPE() & 0xFF;
HSTRUCT_END();
}
HSTRUCT_FROM_DEFINE(uint8_t)
{
HSTRUCT_FROM_BEGIN(uint8_t);
HSTRUCT_UPDATE(sizeof(uint8_t));
HSTRUCT_GET_TYPE() = HSTRUCT_GET_DATA(uint8_t);
HSTRUCT_END();
}
HSTRUCT_FROM_DEFINE(uint16_t)
{
HSTRUCT_FROM_BEGIN(uint16_t);
HSTRUCT_UPDATE(sizeof(uint16_t));
HSTRUCT_GET_TYPE() = (HSTRUCT_GET_DATA_RAW(uint8_t *)[0] << 8) | HSTRUCT_GET_DATA_RAW(uint8_t *)[1];
HSTRUCT_END();
}
HSTRUCT_FROM_DEFINE(uint32_t)
{
HSTRUCT_FROM_BEGIN(uint32_t);
HSTRUCT_UPDATE(sizeof(uint32_t));
HSTRUCT_GET_TYPE() = (HSTRUCT_GET_DATA_RAW(uint8_t *)[0] << 24) | (HSTRUCT_GET_DATA_RAW(uint8_t *)[1] << 16) |
(HSTRUCT_GET_DATA_RAW(uint8_t *)[2] << 8) | HSTRUCT_GET_DATA_RAW(uint8_t *)[3];
HSTRUCT_END();
}