libcamera: log: Add an ASSERT macro
The ASSERT() macro is similar to the assert() macro defined by the C standard, but uses the libcamera logging infrastructure. Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Reviewed-by: Niklas Söderlund <niklas.soderlund@ragnatech.se> Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com>
This commit is contained in:
parent
99a3e7bcfb
commit
ce24c052de
2 changed files with 25 additions and 0 deletions
|
@ -36,6 +36,15 @@ private:
|
|||
|
||||
#define LOG(severity) LogMessage(__FILE__, __LINE__, Log##severity).stream()
|
||||
|
||||
#ifndef NDEBUG
|
||||
#define ASSERT(condition) static_cast<void>(({ \
|
||||
if (!(condition)) \
|
||||
LOG(Fatal) << "assertion \"" #condition "\" failed"; \
|
||||
}))
|
||||
#else
|
||||
#define ASSERT(condition) static_cast<void>(false && (condition))
|
||||
#endif
|
||||
|
||||
} /* namespace libcamera */
|
||||
|
||||
#endif /* __LIBCAMERA_LOG_H__ */
|
||||
|
|
|
@ -48,6 +48,22 @@ namespace libcamera {
|
|||
* terminates immediately after printing the message.
|
||||
*/
|
||||
|
||||
/**
|
||||
* \def ASSERT(condition)
|
||||
* \brief Abort program execution if assertion fails
|
||||
*
|
||||
* If \a condition is false, ASSERT() logs an error message with the Fatal log
|
||||
* level and aborts program execution.
|
||||
*
|
||||
* If the macro NDEBUG is defined before including log.h, ASSERT() generates no
|
||||
* code.
|
||||
*
|
||||
* Using conditions that have side effects with ASSERT() is not recommended, as
|
||||
* these effects would depend on whether NDEBUG is defined or not. Similarly,
|
||||
* ASSERT() should not be used to check for errors that can occur under normal
|
||||
* conditions as those checks would then be removed when compiling with NDEBUG.
|
||||
*/
|
||||
|
||||
static const char *log_severity_name(LogSeverity severity)
|
||||
{
|
||||
static const char * const names[] = {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue