#ifndef AI_LOGGER_H_INC #define AI_LOGGER_H_INC #include namespace Assimp { class LogStream; // --------------------------------------------------------------------------- /** @class Logger * @brief Abstract interface for logger implementations. */ class Logger { public: /** @enum LogSeverity * @brief Log severity to descripe granuality of logging. */ enum LogSeverity { NORMAL, //!< Normal granlality of logging VERBOSE //!< Debug infos will be logged, too }; /** @enum ErrorSeverity * @brief Description for severity of a log message */ enum ErrorSeverity { DEBUGGING = 1, //!< Debug log message INFO = 2, //!< Info log message WARN = 4, //!< Warn log message ERR = 8 //!< Error log message }; public: /** @brief Virtual destructor */ virtual ~Logger(); /** @brief Writes a debug message * @param message Debug message */ virtual void debug(const std::string &message)= 0; /** @brief Writes a info message * @param message Info message */ virtual void info(const std::string &message) = 0; /** @brief Writes a warning message * @param message Warn message */ virtual void warn(const std::string &message) = 0; /** @brief Writes an error message * @param message Error message */ virtual void error(const std::string &message) = 0; /** @brief Set a new log severity. * @param log_severity New severity for logging */ virtual void setLogSeverity(LogSeverity log_severity) = 0; /** @brief Attach a new logstream * @param pStream Logstream to attach */ virtual void attachStream(LogStream *pStream, unsigned int severity) = 0; /** @brief Detach a still attached stream from logger * @param pStream Logstream instance for detatching */ virtual void detatchStream(LogStream *pStream, unsigned int severity) = 0; protected: /** @brief Default constructor */ Logger(); }; // --------------------------------------------------------------------------- // Default constructor inline Logger::Logger() { // empty } // --------------------------------------------------------------------------- // Virtual destructor inline Logger::~Logger() { // empty } // --------------------------------------------------------------------------- } // Namespace Assimp #endif