text: /**
   * @file lv_assert.h
   *
   */
  
  #ifndef LV_ASSERT_H
  #define LV_ASSERT_H
  
  #ifdef __cplusplus
  extern "C" {
  #endif
  
  /*********************
   *      INCLUDES
   *********************/
  #include "../lv_conf_internal.h"
  #include "lv_log.h"
  #include "lv_mem.h"
  #include <stdbool.h>
  #include LV_ASSERT_HANDLER_INCLUDE
  
  /*********************
   *      DEFINES
   *********************/
  
  /**********************
   *      TYPEDEFS
   **********************/
  
  /**********************
   * GLOBAL PROTOTYPES
   **********************/
  
  /**********************
   *      MACROS
   **********************/
  
  #define LV_ASSERT(expr)                                        \
      do {                                                       \
          if(!(expr)) {                                          \
              LV_LOG_ERROR("Asserted at expression: %s", #expr); \
              LV_ASSERT_HANDLER                                  \
          }                                                      \
      } while (0)
  
  #define LV_ASSERT_MSG(expr, msg)                                         \
      do {                                                                 \
          if(!(expr)) {                                                    \
              LV_LOG_ERROR("Asserted at expression: %s (%s)", #expr, msg); \
              LV_ASSERT_HANDLER                                            \
          }                                                                \
      } while (0)
  
  /*-----------------
   * ASSERTS
   *-----------------*/
  
  #if LV_USE_ASSERT_NULL
  #   define LV_ASSERT_NULL(p) LV_ASSERT_MSG(p != NULL, "NULL pointer");
  #else
  #   define LV_ASSERT_NULL(p)
  #endif
  
  #if LV_USE_ASSERT_MALLOC
  #   define LV_ASSERT_MALLOC(p) LV_ASSERT_MSG(p != NULL, "Out of memory");
  #else
  #   define LV_ASSERT_MALLOC(p)
  #endif
  
  #if LV_USE_ASSERT_MEM_INTEGRITY
  #   define LV_ASSERT_MEM_INTEGRITY() LV_ASSERT_MSG(lv_mem_test() == LV_RES_OK, "Memory integrity error");
  #else
  #   define LV_ASSERT_MEM_INTEGRITY()
  #endif
  
  #ifdef __cplusplus
  } /*extern "C"*/
  #endif
  
  #endif /*LV_ASSERT_H*/
  