diff options
author | Laurent Pinchart <laurent.pinchart@ideasonboard.com> | 2021-04-14 00:26:39 +0300 |
---|---|---|
committer | Laurent Pinchart <laurent.pinchart@ideasonboard.com> | 2021-04-15 00:04:54 +0300 |
commit | df1d955d24d113771bd8fedc3bde7f230c059fb7 (patch) | |
tree | 5897cf7618d5419d6556829f3069675af7ea90cf | |
parent | 93be96431a5cdacfe632c3cfb6763b90649bc590 (diff) |
libcamera: log: Use compiler builtins to retrieve file and line number
Replace the __FILE__ and __LINE__ values passed to the _log() function
with default parameters, taking their values from the __builtin_FILE()
and __builtin_LINE() functions. This moves handling of the file and line
from the preprocessor to the compiler, which is generally preferred as
it increases type safety.
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>
-rw-r--r-- | include/libcamera/internal/log.h | 15 | ||||
-rw-r--r-- | src/libcamera/log.cpp | 17 |
2 files changed, 16 insertions, 16 deletions
diff --git a/include/libcamera/internal/log.h b/include/libcamera/internal/log.h index 0fdacc47..be0bab3c 100644 --- a/include/libcamera/internal/log.h +++ b/include/libcamera/internal/log.h @@ -89,21 +89,22 @@ public: protected: virtual std::string logPrefix() const = 0; - LogMessage _log(const char *file, unsigned int line, - const LogCategory *category, - LogSeverity severity) const; + LogMessage _log(const LogCategory *category, LogSeverity severity, + const char *fileName = __builtin_FILE(), + unsigned int line = __builtin_LINE()) const; }; -LogMessage _log(const char *file, unsigned int line, - const LogCategory *category, LogSeverity severity); +LogMessage _log(const LogCategory *category, LogSeverity severity, + const char *fileName = __builtin_FILE(), + unsigned int line = __builtin_LINE()); #ifndef __DOXYGEN__ #define _LOG_CATEGORY(name) logCategory##name #define _LOG1(severity) \ - _log(__FILE__, __LINE__, nullptr, Log##severity).stream() + _log(nullptr, Log##severity).stream() #define _LOG2(category, severity) \ - _log(__FILE__, __LINE__, &_LOG_CATEGORY(category)(), Log##severity).stream() + _log(&_LOG_CATEGORY(category)(), Log##severity).stream() /* * Expand the LOG() macro to _LOG1() or _LOG2() based on the number of diff --git a/src/libcamera/log.cpp b/src/libcamera/log.cpp index 9f86e645..94175ab3 100644 --- a/src/libcamera/log.cpp +++ b/src/libcamera/log.cpp @@ -897,19 +897,18 @@ Loggable::~Loggable() /** * \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] category The log message category * \param[in] severity The log message severity + * \param[in] fileName The file name where the message is logged from + * \param[in] line The line number where the message is logged from * * 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, - const LogCategory *category, - LogSeverity severity) const +LogMessage Loggable::_log(const LogCategory *category, LogSeverity severity, + const char *fileName, unsigned int line) const { LogMessage msg(fileName, line, category ? *category : LogCategory::defaultCategory(), @@ -921,18 +920,18 @@ LogMessage Loggable::_log(const char *fileName, unsigned int line, /** * \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] category The log message category * \param[in] severity The log message severity + * \param[in] fileName The file name where the message is logged from + * \param[in] line The line number where the message is logged from * * 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, - const LogCategory *category, LogSeverity severity) +LogMessage _log(const LogCategory *category, LogSeverity severity, + const char *fileName, unsigned int line) { return LogMessage(fileName, line, category ? *category : LogCategory::defaultCategory(), |