Go to the documentation of this file.
5 #ifndef __EVHTP_INTERNAL_H__
6 #define __EVHTP_INTERNAL_H__
13 #if defined __GNUC__ || defined __llvm__
14 # define evhtp_likely(x) __builtin_expect(!!(x), 1)
15 # define evhtp_unlikely(x) __builtin_expect(!!(x), 0)
17 # define evhtp_likely(x) (x)
18 # define evhtp_unlikely(x) (x)
21 #ifndef TAILQ_FOREACH_SAFE
22 #define TAILQ_FOREACH_SAFE(var, head, field, tvar) \
23 for ((var) = TAILQ_FIRST((head)); \
24 (var) && ((tvar) = TAILQ_NEXT((var), field), 1); \
28 #define evhtp_safe_free(_var, _freefn) do { \
34 #define evhtp_assert(x) \
36 if (evhtp_unlikely(!(x))) { \
37 fprintf(stderr, "Assertion failed: %s (%s:%s:%d)\n", # x, \
38 __func__, __FILE__, __LINE__); \
44 #define evhtp_alloc_assert(x) \
46 if (evhtp_unlikely(!x)) { \
47 fprintf(stderr, "Out of memory (%s:%s:%d)\n", \
48 __func__, __FILE__, __LINE__); \
54 #define evhtp_assert_fmt(x, fmt, ...) \
56 if (evhtp_unlikely(!(x))) { \
57 fprintf(stderr, "Assertion failed: %s (%s:%s:%d) " fmt "\n", \
58 # x, __func__, __FILE__, __LINE__, __VA_ARGS__); \
64 #define evhtp_errno_assert(x) \
66 if (evhtp_unlikely(!(x))) { \
67 fprintf(stderr, "%s [%d] (%s:%s:%d)\n", \
68 strerror(errno), errno, \
69 __func__, __FILE__, __LINE__); \