api documentation for ec_parse
[protos/libecoli.git] / include / ecoli_utils.h
1 /* SPDX-License-Identifier: BSD-3-Clause
2  * Copyright 2018, Olivier MATZ <zer0@droids-corp.org>
3  */
4
5 /**
6  * @defgroup utils Utils
7  * @{
8  *
9  * @brief Misc utils
10  */
11
12
13 #ifndef ECOLI_UTILS_
14 #define ECOLI_UTILS_
15
16 /**
17  * Cast a variable into a type, ensuring its initial type first
18  */
19 #define EC_CAST(x, old_type, new_type) ({       \
20         old_type __x = (x);                     \
21         (new_type)__x;                          \
22         })
23
24 /**
25  * Mark the end of the arguments list in some functions.
26  */
27 #define EC_VA_END ((void *)1)
28
29 /**
30  * Count number of elements in an array.
31  */
32 #define EC_COUNT_OF(x) ((sizeof(x)/sizeof(0[x])) / \
33                 ((size_t)(!(sizeof(x) % sizeof(0[x])))))
34
35 #endif
36
37 /** @} */