Make LogBackend pure virtual, also clean and document.

This commit is contained in:
Atgeirr Flø Rasmussen 2016-05-09 10:42:28 +02:00
parent 03e833db1b
commit de87c5a5b5
3 changed files with 31 additions and 29 deletions

View File

@ -27,6 +27,9 @@ namespace Opm {
{
}
LogBackend::~LogBackend()
{
}
bool LogBackend::includeMessage(int64_t messageFlag) {
if (((messageFlag & m_mask) == messageFlag) &&

View File

@ -24,22 +24,38 @@
#include <cstdint>
#include <string>
namespace Opm {
namespace Opm
{
class LogBackend {
/// Abstract interface class for log backends.
class LogBackend
{
public:
/// Construct with given message mask.
explicit LogBackend(int64_t mask);
public:
LogBackend( int64_t mask );
virtual ~LogBackend() { };
virtual void addMessage(int64_t , const std::string& ) { };
/// Virtual destructor to enable inheritance.
virtual ~LogBackend();
int64_t getMask() const;
bool includeMessage(int64_t messageFlag);
/// Add a message to the backend.
///
/// Typically a subclass may filter, change, and output
/// messages based on configuration and the messageFlag.
virtual void addMessage(int64_t messageFlag, const std::string& message) = 0;
private:
int64_t m_mask;
};
}
/// The message mask types are specified in the
/// Opm::Log::MessageType namespace, in file LogUtils.hpp.
int64_t getMask() const;
protected:
/// Return true if all bits of messageFlag are also set in our mask.
bool includeMessage(int64_t messageFlag);
private:
int64_t m_mask;
};
} // namespace LogBackend
#endif

View File

@ -55,23 +55,6 @@ BOOST_AUTO_TEST_CASE(Test_Format) {
BOOST_AUTO_TEST_CASE(Test_AbstractBackend) {
int64_t mask = 1+4+16;
LogBackend backend(mask);
BOOST_CHECK_EQUAL(false , backend.includeMessage(0 ));
BOOST_CHECK_EQUAL(true , backend.includeMessage(1 ));
BOOST_CHECK_EQUAL(false , backend.includeMessage(2 ));
BOOST_CHECK_EQUAL(true , backend.includeMessage(4 ));
BOOST_CHECK_EQUAL(false , backend.includeMessage(8 ));
BOOST_CHECK_EQUAL(true , backend.includeMessage(16 ));
BOOST_CHECK_EQUAL(false, backend.includeMessage(6 ));
BOOST_CHECK_EQUAL(true , backend.includeMessage(5 ));
}
BOOST_AUTO_TEST_CASE(Test_Logger) {
Logger logger;
std::ostringstream log_stream;