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 "../stdlib/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 #define LV_ASSERT_FORMAT_MSG(expr, format, ...) \ 54 do { \ 55 if(!(expr)) { \ 56 LV_LOG_ERROR("Asserted at expression: %s " format , #expr, __VA_ARGS__); \ 57 LV_ASSERT_HANDLER \ 58 } \ 59 } while(0) 60 61 /*----------------- 62 * ASSERTS 63 *-----------------*/ 64 65 #if LV_USE_ASSERT_NULL 66 # define LV_ASSERT_NULL(p) LV_ASSERT_MSG(p != NULL, "NULL pointer"); 67 #else 68 # define LV_ASSERT_NULL(p) 69 #endif 70 71 #if LV_USE_ASSERT_MALLOC 72 # define LV_ASSERT_MALLOC(p) LV_ASSERT_MSG(p != NULL, "Out of memory"); 73 #else 74 # define LV_ASSERT_MALLOC(p) 75 #endif 76 77 #if LV_USE_ASSERT_MEM_INTEGRITY 78 # define LV_ASSERT_MEM_INTEGRITY() LV_ASSERT_MSG(lv_mem_test() == LV_RESULT_OK, "Memory integrity error"); 79 #else 80 # define LV_ASSERT_MEM_INTEGRITY() 81 #endif 82 83 #ifdef __cplusplus 84 } /*extern "C"*/ 85 #endif 86 87 #endif /*LV_ASSERT_H*/ 88