refs #624, #492 Refactor parts of CLogMessage into base class and use inheriting constructors to unify the construction idiom of CLogMessage and CStatusMessage.

This commit is contained in:
Mathew Sutcliffe
2016-03-19 23:33:37 +00:00
parent 2ce1f3da0a
commit caa01f846b
8 changed files with 230 additions and 187 deletions

View File

@@ -15,53 +15,9 @@
namespace BlackMisc
{
CLogMessage &CLogMessage::debug()
{
m_severity = CStatusMessage::SeverityDebug;
return *this;
}
CLogMessage::CLogMessage() = default;
CLogMessage &CLogMessage::info(QString format)
{
m_severity = CStatusMessage::SeverityInfo;
m_message = format;
return *this;
}
CLogMessage &CLogMessage::warning(QString format)
{
m_severity = CStatusMessage::SeverityWarning;
m_message = format;
return *this;
}
CLogMessage &CLogMessage::error(QString format)
{
m_severity = CStatusMessage::SeverityError;
m_message = format;
return *this;
}
CLogMessage &CLogMessage::validationInfo(QString format)
{
m_categories.remove(CLogCategory::uncategorized());
m_categories.push_back(CLogCategory::validation());
return info(format);
}
CLogMessage &CLogMessage::validationWarning(QString format)
{
m_categories.remove(CLogCategory::uncategorized());
m_categories.push_back(CLogCategory::validation());
return warning(format);
}
CLogMessage &CLogMessage::validationError(QString format)
{
m_categories.remove(CLogCategory::uncategorized());
m_categories.push_back(CLogCategory::validation());
return error(format);
}
CLogMessage::CLogMessage(const char *file, int line, const char *function) : m_logger(file, line, function) {}
CLogMessage::operator CStatusMessage()
{
@@ -125,37 +81,6 @@ namespace BlackMisc
}
}
namespace Private
{
template <size_t... Is> QString arg(index_sequence<Is...>, const QString &format, const QStringList &args) { return format.arg(args[Is]...); }
QString arg(index_sequence<>, const QString &format, const QStringList &) { return format; }
}
QString CLogMessage::message() const
{
if (m_message.isEmpty())
{
return m_args.join(" ");
}
else
{
switch (m_args.size())
{
case 0: return Private::arg(Private::make_index_sequence<0>(), m_message, m_args);
case 1: return Private::arg(Private::make_index_sequence<1>(), m_message, m_args);
case 2: return Private::arg(Private::make_index_sequence<2>(), m_message, m_args);
case 3: return Private::arg(Private::make_index_sequence<3>(), m_message, m_args);
case 4: return Private::arg(Private::make_index_sequence<4>(), m_message, m_args);
case 5: return Private::arg(Private::make_index_sequence<5>(), m_message, m_args);
case 6: return Private::arg(Private::make_index_sequence<6>(), m_message, m_args);
case 7: return Private::arg(Private::make_index_sequence<7>(), m_message, m_args);
case 8: return Private::arg(Private::make_index_sequence<8>(), m_message, m_args);
default: qWarning("Too many arguments"); // intentional fall-through
case 9: return Private::arg(Private::make_index_sequence<9>(), m_message, m_args);
}
}
}
//! Does category contain flag?
bool hasFlag(const QString &category, const QString &flag)
{