libcamera: log: De-duplicate _log() functions and LogMessage constructor

The _log() functions, as well as the LogMessage constructor, exist in
two versions, one that takes a log category, and one that doesn't. The
latter uses the default log category. This can be simplified by passing
a LogCategory pointer to _log(), which can then be null for the default
category, and moving the retrieval of the default log category from the
LogMessage constructor to the _log() function.

Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Tested-by: Sebastian Fricke <sebastian.fricke@posteo.net>
Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com>
This commit is contained in:
Laurent Pinchart 2021-04-14 00:20:06 +03:00
parent 304ea65551
commit 93be96431a
2 changed files with 12 additions and 67 deletions

View file

@ -55,8 +55,6 @@ const LogCategory &_LOG_CATEGORY(name)() \
class LogMessage class LogMessage
{ {
public: public:
LogMessage(const char *fileName, unsigned int line,
LogSeverity severity);
LogMessage(const char *fileName, unsigned int line, LogMessage(const char *fileName, unsigned int line,
const LogCategory &category, LogSeverity severity); const LogCategory &category, LogSeverity severity);
@ -92,23 +90,20 @@ protected:
virtual std::string logPrefix() const = 0; virtual std::string logPrefix() const = 0;
LogMessage _log(const char *file, unsigned int line, LogMessage _log(const char *file, unsigned int line,
LogSeverity severity) const; const LogCategory *category,
LogMessage _log(const char *file, unsigned int line,
const LogCategory &category,
LogSeverity severity) const; LogSeverity severity) const;
}; };
LogMessage _log(const char *file, unsigned int line, LogSeverity severity);
LogMessage _log(const char *file, unsigned int line, LogMessage _log(const char *file, unsigned int line,
const LogCategory &category, LogSeverity severity); const LogCategory *category, LogSeverity severity);
#ifndef __DOXYGEN__ #ifndef __DOXYGEN__
#define _LOG_CATEGORY(name) logCategory##name #define _LOG_CATEGORY(name) logCategory##name
#define _LOG1(severity) \ #define _LOG1(severity) \
_log(__FILE__, __LINE__, Log##severity).stream() _log(__FILE__, __LINE__, nullptr, Log##severity).stream()
#define _LOG2(category, severity) \ #define _LOG2(category, severity) \
_log(__FILE__, __LINE__, _LOG_CATEGORY(category)(), Log##severity).stream() _log(__FILE__, __LINE__, &_LOG_CATEGORY(category)(), Log##severity).stream()
/* /*
* Expand the LOG() macro to _LOG1() or _LOG2() based on the number of * Expand the LOG() macro to _LOG1() or _LOG2() based on the number of

View file

@ -763,24 +763,6 @@ const LogCategory &LogCategory::defaultCategory()
* directly. Use the LOG() macro instead access the log infrastructure. * directly. Use the LOG() macro instead access the log infrastructure.
*/ */
/**
* \brief Construct a log message for the default category
* \param[in] fileName The file name where the message is logged from
* \param[in] line The line number where the message is logged from
* \param[in] severity The log message severity, controlling how the message
* will be displayed
*
* Create a log message pertaining to line \a line of file \a fileName. The
* \a severity argument sets the message severity to control whether it will be
* output or dropped.
*/
LogMessage::LogMessage(const char *fileName, unsigned int line,
LogSeverity severity)
: category_(LogCategory::defaultCategory()), severity_(severity)
{
init(fileName, line);
}
/** /**
* \brief Construct a log message for a given category * \brief Construct a log message for a given category
* \param[in] fileName The file name where the message is logged from * \param[in] fileName The file name where the message is logged from
@ -913,26 +895,6 @@ Loggable::~Loggable()
* \return A string to be prefixed to the log message * \return A string to be prefixed to the log message
*/ */
/**
* \brief Create a temporary LogMessage object to log a message
* \param[in] fileName The file name where the message is logged from
* \param[in] line The line number where the message is logged from
* \param[in] severity The log message severity
*
* This method is used as a backeng by the LOG() macro to create a log message
* for locations inheriting from the Loggable class.
*
* \return A log message
*/
LogMessage Loggable::_log(const char *fileName, unsigned int line,
LogSeverity severity) const
{
LogMessage msg(fileName, line, severity);
msg.stream() << logPrefix() << ": ";
return msg;
}
/** /**
* \brief Create a temporary LogMessage object to log a message * \brief Create a temporary LogMessage object to log a message
* \param[in] fileName The file name where the message is logged from * \param[in] fileName The file name where the message is logged from
@ -946,31 +908,17 @@ LogMessage Loggable::_log(const char *fileName, unsigned int line,
* \return A log message * \return A log message
*/ */
LogMessage Loggable::_log(const char *fileName, unsigned int line, LogMessage Loggable::_log(const char *fileName, unsigned int line,
const LogCategory &category, const LogCategory *category,
LogSeverity severity) const LogSeverity severity) const
{ {
LogMessage msg(fileName, line, category, severity); LogMessage msg(fileName, line,
category ? *category : LogCategory::defaultCategory(),
severity);
msg.stream() << logPrefix() << ": "; msg.stream() << logPrefix() << ": ";
return msg; return msg;
} }
/**
* \brief Create a temporary LogMessage object to log a message
* \param[in] fileName The file name where the message is logged from
* \param[in] line The line number where the message is logged from
* \param[in] severity The log message severity
*
* This function is used as a backeng by the LOG() macro to create a log
* message for locations not inheriting from the Loggable class.
*
* \return A log message
*/
LogMessage _log(const char *fileName, unsigned int line, LogSeverity severity)
{
return LogMessage(fileName, line, severity);
}
/** /**
* \brief Create a temporary LogMessage object to log a message * \brief Create a temporary LogMessage object to log a message
* \param[in] fileName The file name where the message is logged from * \param[in] fileName The file name where the message is logged from
@ -984,9 +932,11 @@ LogMessage _log(const char *fileName, unsigned int line, LogSeverity severity)
* \return A log message * \return A log message
*/ */
LogMessage _log(const char *fileName, unsigned int line, LogMessage _log(const char *fileName, unsigned int line,
const LogCategory &category, LogSeverity severity) const LogCategory *category, LogSeverity severity)
{ {
return LogMessage(fileName, line, category, severity); return LogMessage(fileName, line,
category ? *category : LogCategory::defaultCategory(),
severity);
} }
/** /**