Update of lib/utils : make min and max inline, and add abs and constrain
authorNathael Pajani <nathael.pajani@ed3l.fr>
Fri, 12 Jun 2020 14:37:30 +0000 (16:37 +0200)
committerNathael Pajani <nathael.pajani@ed3l.fr>
Tue, 8 Nov 2022 16:03:05 +0000 (17:03 +0100)
include/lib/utils.h
lib/utils.c

index 93d2630..bb2f761 100644 (file)
@@ -65,9 +65,26 @@ static inline uint16_t ntohs(uint16_t val) __attribute__ ((alias ("byte_swap_16"
 static inline uint16_t htons(uint16_t val) __attribute__ ((alias ("byte_swap_16")));
 
 
-/* MIN and MAX */
-#define MIN(a, b)  (((a) < (b)) ? (a) : (b))
-#define MAX(a, b)  (((a) > (b)) ? (a) : (b))
+/* Min, Max and Abs */
+static inline uint32_t abs(int32_t val)
+{
+       return val < 0 ? -val : val;
+}
+
+static inline uint32_t min(uint32_t a, uint32_t b)
+{
+       return a < b ? a : b;
+}
+
+static inline uint32_t max(uint32_t a, uint32_t b)
+{
+       return a > b ? a : b;
+}
+
+static inline uint32_t constrain(int32_t val, int32_t min, int32_t max)
+{
+       return val < min ? min : val > max ? max : val;
+}
 
 
 #endif /* LIB_UTILS_H */
index c9bff81..96ad730 100644 (file)
@@ -103,3 +103,4 @@ uint8_t bits_set(uint32_t x)
 
        return r;
 }
+