From b7aa93bcfa715ec1eaa3c86974631c6030cf5148 Mon Sep 17 00:00:00 2001 From: Hugues Delorme Date: Fri, 10 Apr 2015 14:25:57 +0200 Subject: [PATCH] gmio_core: add conversion routines for float32/int32 --- src/gmio_core/internal/convert.h | 27 +++++++++++++++++++++++---- 1 file changed, 23 insertions(+), 4 deletions(-) diff --git a/src/gmio_core/internal/convert.h b/src/gmio_core/internal/convert.h index 006f69d..c16165b 100644 --- a/src/gmio_core/internal/convert.h +++ b/src/gmio_core/internal/convert.h @@ -23,20 +23,39 @@ union gmio_uint_float_32 uint32_t as_uint32; gmio_float32_t as_float32; }; -typedef union gmio_uint_float_32 gmio_uint_float_32_t; -GMIO_INLINE gmio_float32_t gmio_convert_float32(uint32_t val) +union gmio_int_float_32 { - gmio_uint_float_32_t conv; + int32_t as_int32; + gmio_float32_t as_float32; +}; + +GMIO_INLINE gmio_float32_t gmio_convert_ufloat32(uint32_t val) +{ + union gmio_uint_float_32 conv; conv.as_uint32 = val; return conv.as_float32; } GMIO_INLINE uint32_t gmio_convert_uint32(gmio_float32_t val) { - gmio_uint_float_32_t conv; + union gmio_uint_float_32 conv; conv.as_float32 = val; return conv.as_uint32; } +GMIO_INLINE gmio_float32_t gmio_convert_sfloat32(int32_t val) +{ + union gmio_int_float_32 conv; + conv.as_int32 = val; + return conv.as_float32; +} + +GMIO_INLINE int32_t gmio_convert_int32(gmio_float32_t val) +{ + union gmio_int_float_32 conv; + conv.as_float32 = val; + return conv.as_int32; +} + #endif /* GMIO_INTERNAL_CONVERT_H */