X-Git-Url: https://git.cinelerra-gg.org/git/?a=blobdiff_plain;f=cinelerra-5.1%2Ftools%2Fmakeappimagetool%2Flog.cpp;fp=cinelerra-5.1%2Ftools%2Fmakeappimagetool%2Flog.cpp;h=cf6e050d4e2a35b5f0393a2cfebddf438a390efa;hb=194ea84742f4d9973b1aad567fe833ca13a8c4f9;hp=0000000000000000000000000000000000000000;hpb=d8393b13b37b8654f0039ec1dba9a71c02af9411;p=goodguy%2Fcinelerra.git diff --git a/cinelerra-5.1/tools/makeappimagetool/log.cpp b/cinelerra-5.1/tools/makeappimagetool/log.cpp new file mode 100644 index 00000000..cf6e050d --- /dev/null +++ b/cinelerra-5.1/tools/makeappimagetool/log.cpp @@ -0,0 +1,131 @@ +// local includes +#include "includes/log.h" + +namespace linuxdeploy { + namespace core { + namespace log { + LD_LOGLEVEL ldLog::verbosity = LD_INFO; + + void ldLog::setVerbosity(LD_LOGLEVEL verbosity) { + ldLog::verbosity = verbosity; + } + + ldLog::ldLog() { + prependSpace = false; + currentLogLevel = LD_INFO; + logLevelSet = false; + }; + + ldLog::ldLog(bool prependSpace, bool logLevelSet, LD_LOGLEVEL logLevel) { + this->prependSpace = prependSpace; + this->currentLogLevel = logLevel; + this->logLevelSet = logLevelSet; + } + + void ldLog::checkPrependSpace() { + if (prependSpace) { + stream << " "; + prependSpace = false; + } + } + + bool ldLog::checkVerbosity() { +// std::cerr << "current: " << currentLogLevel << " verbosity: " << verbosity << std::endl; + return (currentLogLevel >= verbosity); + } + + ldLog ldLog::operator<<(const std::string& message) { + if (checkVerbosity()) { + checkPrependSpace(); + stream << message; + } + + return ldLog(true, logLevelSet, currentLogLevel); + } + ldLog ldLog::operator<<(const char* message) { + if (checkVerbosity()) { + checkPrependSpace(); + stream << message; + } + + return ldLog(true, logLevelSet, currentLogLevel); + } + + ldLog ldLog::operator<<(const boost::filesystem::path& path) { + if (checkVerbosity()) { + checkPrependSpace(); + stream << path.string(); + } + + return ldLog(true, logLevelSet, currentLogLevel); + } + + ldLog ldLog::operator<<(const int val) { + return ldLog::operator<<(std::to_string(val)); + } + + ldLog ldLog::operator<<(const size_t val) { + return ldLog::operator<<(std::to_string(val)); + } + + ldLog ldLog::operator<<(const double val) { + return ldLog::operator<<(std::to_string(val)); + } + + ldLog ldLog::operator<<(stdEndlType strm) { + if (checkVerbosity()) { + checkPrependSpace(); + stream << strm; + } + + return ldLog(false, logLevelSet, currentLogLevel); + } + + ldLog ldLog::operator<<(const LD_LOGLEVEL logLevel) { + if (logLevelSet) { + throw std::runtime_error( + "log level must be first element passed via the stream insertion operator"); + } + + logLevelSet = true; + currentLogLevel = logLevel; + + if (checkVerbosity()) { + switch (logLevel) { + case LD_DEBUG: + stream << "DEBUG: "; + break; + case LD_WARNING: + stream << "WARNING: "; + break; + case LD_ERROR: + stream << "ERROR: "; + break; + default: + break; + } + } + + return ldLog(false, logLevelSet, currentLogLevel); + } + + ldLog ldLog::operator<<(const LD_STREAM_CONTROL streamControl) { + bool prependSpace = true; + + switch (streamControl) { + case LD_NO_SPACE: + prependSpace = false; + break; + default: + break; + } + + return ldLog(prependSpace, logLevelSet, currentLogLevel); + } + + void ldLog::write(const char* s, const size_t n) { + stream.write(s, n); + } + } + } +}