Program Listing for File logging.h

Return to documentation for file (include/amici/logging.h)

#ifndef AMICI_LOGGER_H
#define AMICI_LOGGER_H

#include <string>
#include <vector>

namespace amici {

struct LogItem;

enum class LogSeverity {
    error,
    warning,
    debug,
};

class Logger
{
  public:
    Logger() = default;
    void log(
        LogSeverity severity,
        std::string const& identifier,
        std::string const& message
        );

#if SWIG_VERSION >= 0x040002
#else
    // swig 4.0.1 segfaults on "@param ..."
    // see https://github.com/swig/swig/issues/1643
#endif
    void
    log(LogSeverity severity, std::string const& identifier, char const* format,
        ...);

    std::vector<LogItem> items;
};


struct LogItem
{
    LogItem() = default;

    LogItem(
        LogSeverity severity,
        std::string const& identifier,
        std::string const& message
        ):
                  severity(severity)
                  ,identifier(identifier)
                  ,message(message)
                  {};

    LogSeverity severity;

    std::string identifier;

    std::string message;
};

} // namespace amici
#endif // AMICI_LOGGER_H