XFusion API v1.3.0
载入中...
搜索中...
未找到
xf_check.h
浏览该文件的文档.
1
12#ifndef __XF_CHECK_H__
13#define __XF_CHECK_H__
14
15/* ==================== [Includes] ========================================== */
16
17#include "../xf_common/xf_common.h"
18#include "../xf_utils_log/xf_utils_log.h"
19#include "xf_check_config.h"
20
30#ifdef __cplusplus
31extern "C" {
32#endif
33
34/* ==================== [Defines] =========================================== */
35
47#define XF_RETURN_VOID
48#define XF_ACTION_NO
54/* ==================== [Typedefs] ========================================== */
55
56/* ==================== [Global Prototypes] ================================= */
57
58/* ==================== [Macros] ============================================ */
59
60#if XF_CHECK_IS_ENABLE || XF_ASSERT_IS_ENABLE
69# define XF_CHECK_ACTION_RETURN(condition, retval, action) \
70 do { \
71 if (condition) { \
72 do {action} while (0); \
73 return retval; \
74 } \
75 } while (0)
76#else
77# define XF_CHECK_ACTION_RETURN(condition, retval, action)
78#endif
79
80#if XF_CHECK_IS_ENABLE || XF_ASSERT_IS_ENABLE
88# define XF_CHECK_ACTION_GOTO(condition, label, action) \
89 do { \
90 if (condition) { \
91 do {action} while (0); \
92 goto label; \
93 } \
94 } while (0)
95#else
96# define XF_CHECK_ACTION_GOTO(condition, retval, action)
97#endif
98
99#if XF_CHECK_IS_ENABLE
112# define XF_CHECK(condition, retval, tag, format, ...) \
113 XF_CHECK_ACTION_RETURN( \
114 !!(condition), retval, \
115 XF_LOGE((tag), format, ##__VA_ARGS__); \
116 )
117
127# define XF_CHECK_GOTO(condition, label, tag, format, ...) \
128 XF_CHECK_ACTION_GOTO( \
129 !!(condition), label, \
130 XF_LOGE((tag), format, ##__VA_ARGS__); \
131 )
132#else
133# define XF_CHECK(condition, retval, tag, format, ...) do { (void)tag; } while (0)
134# define XF_CHECK_GOTO(condition, label, tag, format, ...) do { (void)tag; } while (0)
135#endif
136
137#if XF_ASSERT_IS_ENABLE
150# define XF_ASSERT(condition, retval, tag, format, ...) \
151 XF_CHECK_ACTION_RETURN( \
152 !(condition), retval, \
153 XF_LOGE((tag), format, ##__VA_ARGS__); \
154 )
155
165# define XF_ASSERT_GOTO(condition, label, tag, format, ...) \
166 XF_CHECK_ACTION_GOTO( \
167 !(condition), label, \
168 XF_LOGE((tag), format, ##__VA_ARGS__); \
169 )
170#else
171# define XF_ASSERT(condition, retval, tag, format, ...) do { (void)tag; } while (0)
172# define XF_ASSERT_GOTO(condition, label, tag, format, ...) do { (void)tag; } while (0)
173#endif
174
175#if XF_ERROR_CHECK_IS_ENABLE
182# define XF_ERROR_CHECK(expression) \
183 do { \
184 xf_err_t __err = (expression); \
185 if (unlikely((__err) != XF_OK)) { \
186 XF_LOGE("xf_check", "An error occurred: " XSTR(expression != XF_OK)); \
187 XF_CHECK_ERROR_HANDLER \
188 } \
189 } while (0)
190#else
191# define XF_ERROR_CHECK(expression)
192#endif
193
194#ifdef __cplusplus
195} /* extern "C" */
196#endif
197
203#endif /* __XF_CHECK_H__ */
检查宏的配置。