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