diff --git a/include/neuron/type.h b/include/neuron/type.h index 34f0279f..b253ed67 100644 --- a/include/neuron/type.h +++ b/include/neuron/type.h @@ -28,6 +28,7 @@ extern "C" { #include #include #include +#include typedef enum { NEU_TYPE_INT8 = 1, @@ -443,6 +444,134 @@ static inline void neu_htons_p(uint16_t *pu) neu_ntohs_p(pu); } +static inline uint16_t neu_get_u16(uint8_t *bytes) +{ + uint16_t ret = 0; + uint8_t *t = NULL; + + t = (uint8_t *) &ret; + + t[0] = bytes[0]; + t[1] = bytes[1]; + + return ret; +} + +static inline int16_t neu_get_i16(uint8_t *bytes) +{ + int16_t ret = 0; + uint8_t *t = NULL; + + t = (uint8_t *) &ret; + + t[0] = bytes[0]; + t[1] = bytes[1]; + + return ret; +} + +static inline uint32_t neu_get_u32(uint8_t *bytes) +{ + uint32_t ret = 0; + uint8_t *t = NULL; + + t = (uint8_t *) &ret; + + t[0] = bytes[0]; + t[1] = bytes[1]; + t[2] = bytes[2]; + t[3] = bytes[3]; + + return ret; +} + +static inline int32_t neu_get_i32(uint8_t *bytes) +{ + int32_t ret = 0; + uint8_t *t = NULL; + + t = (uint8_t *) &ret; + + t[0] = bytes[0]; + t[1] = bytes[1]; + t[2] = bytes[2]; + t[3] = bytes[3]; + + return ret; +} + +static inline float neu_get_f32(uint8_t *bytes) +{ + float ret = 0; + uint8_t *t = NULL; + + t = (uint8_t *) &ret; + + t[0] = bytes[0]; + t[1] = bytes[1]; + t[2] = bytes[2]; + t[3] = bytes[3]; + + return ret; +} + +static inline uint64_t neu_get_u64(uint8_t *bytes) +{ + uint64_t ret = 0; + uint8_t *t = NULL; + + t = (uint8_t *) &ret; + + t[0] = bytes[0]; + t[1] = bytes[1]; + t[2] = bytes[2]; + t[3] = bytes[3]; + t[4] = bytes[4]; + t[5] = bytes[5]; + t[6] = bytes[6]; + t[7] = bytes[7]; + + return ret; +} + +static inline int64_t neu_get_i64(uint8_t *bytes) +{ + int64_t ret = 0; + uint8_t *t = NULL; + + t = (uint8_t *) &ret; + + t[0] = bytes[0]; + t[1] = bytes[1]; + t[2] = bytes[2]; + t[3] = bytes[3]; + t[4] = bytes[4]; + t[5] = bytes[5]; + t[6] = bytes[6]; + t[7] = bytes[7]; + + return ret; +} + +static inline double neu_get_f64(uint8_t *bytes) +{ + double ret = 0; + uint8_t *t = NULL; + + t = (uint8_t *) &ret; + + t[0] = bytes[0]; + t[1] = bytes[1]; + t[2] = bytes[2]; + t[3] = bytes[3]; + t[4] = bytes[4]; + t[5] = bytes[5]; + t[6] = bytes[6]; + t[7] = bytes[7]; + + return ret; +} + #ifdef __cplusplus } #endif