1 /**
2  * @file lv_assert.h
3  *
4  */
5 
6 #ifndef LV_ASSERT_H
7 #define LV_ASSERT_H
8 
9 #ifdef __cplusplus
10 extern "C" {
11 #endif
12 
13 /*********************
14  *      INCLUDES
15  *********************/
16 #include "../lv_conf_internal.h"
17 #include "lv_log.h"
18 #include "lv_mem.h"
19 #include LV_ASSERT_HANDLER_INCLUDE
20 
21 /*********************
22  *      DEFINES
23  *********************/
24 
25 /**********************
26  *      TYPEDEFS
27  **********************/
28 
29 /**********************
30  * GLOBAL PROTOTYPES
31  **********************/
32 
33 /**********************
34  *      MACROS
35  **********************/
36 
37 #define LV_ASSERT(expr)                                        \
38     do {                                                       \
39         if(!(expr)) {                                          \
40             LV_LOG_ERROR("Asserted at expression: %s", #expr); \
41             LV_ASSERT_HANDLER                                  \
42         }                                                      \
43     } while(0)
44 
45 #define LV_ASSERT_MSG(expr, msg)                                         \
46     do {                                                                 \
47         if(!(expr)) {                                                    \
48             LV_LOG_ERROR("Asserted at expression: %s (%s)", #expr, msg); \
49             LV_ASSERT_HANDLER                                            \
50         }                                                                \
51     } while(0)
52 
53 /*-----------------
54  * ASSERTS
55  *-----------------*/
56 
57 #if LV_USE_ASSERT_NULL
58 #   define LV_ASSERT_NULL(p) LV_ASSERT_MSG(p != NULL, "NULL pointer");
59 #else
60 #   define LV_ASSERT_NULL(p)
61 #endif
62 
63 #if LV_USE_ASSERT_MALLOC
64 #   define LV_ASSERT_MALLOC(p) LV_ASSERT_MSG(p != NULL, "Out of memory");
65 #else
66 #   define LV_ASSERT_MALLOC(p)
67 #endif
68 
69 #if LV_USE_ASSERT_MEM_INTEGRITY
70 #   define LV_ASSERT_MEM_INTEGRITY() LV_ASSERT_MSG(lv_mem_test() == LV_RES_OK, "Memory integrity error");
71 #else
72 #   define LV_ASSERT_MEM_INTEGRITY()
73 #endif
74 
75 #ifdef __cplusplus
76 } /*extern "C"*/
77 #endif
78 
79 #endif /*LV_ASSERT_H*/
80