Helper Reference Manual 1.7.1
Loading...
Searching...
No Matches
macros.h
Go to the documentation of this file.
1/* SPDX-License-Identifier: BSD-3-Clause
2 * Copyright(C) 2023-2025 Nokia
3 */
4
11#ifndef ODPH_MACROS_H_
12#define ODPH_MACROS_H_
13
14#ifdef __cplusplus
15extern "C" {
16#endif
17
28#define ODPH_ARRAY_SIZE(a) (sizeof(a) / sizeof((a)[0]))
29
33#define ODPH_MIN(a, b) \
34 __extension__ ({ \
35 __typeof__(a) min_a = (a); \
36 __typeof__(b) min_b = (b); \
37 min_a < min_b ? min_a : min_b; \
38 })
39
43#define ODPH_MAX(a, b) \
44 __extension__ ({ \
45 __typeof__(a) max_a = (a); \
46 __typeof__(b) max_b = (b); \
47 max_a > max_b ? max_a : max_b; \
48 })
49
53#define ODPH_ABS(v) \
54 __extension__ ({ \
55 __typeof__(v) abs_v = (v); \
56 abs_v < 0 ? -abs_v : abs_v; \
57 })
58
63#define ODPH_DIV_ROUNDUP(dividend, divisor) \
64 __extension__ ({ \
65 __typeof__(dividend) _dividend = (dividend); \
66 __typeof__(divisor) _divisor = (divisor); \
67 (_dividend + _divisor - 1) / _divisor; \
68 })
69
73#define ODPH_ROUNDUP_MULTIPLE(x, y) \
74 __extension__ ({ \
75 __typeof__(x) _x = (x); \
76 __typeof__(y) _y = (y); \
77 _y * (ODPH_DIV_ROUNDUP(_x, _y)); \
78 })
79
84#ifdef __cplusplus
85}
86#endif
87
88#endif /* ODPH_MACROS_H_ */