summaryrefslogtreecommitdiffstats
path: root/src/libcola/cola_log.h
diff options
context:
space:
mode:
authorMarc Jeanmougin <marc.jeanmougin@telecom-paristech.fr>2018-04-29 14:25:32 +0000
committerMarc Jeanmougin <marc.jeanmougin@telecom-paristech.fr>2018-04-29 14:25:32 +0000
commitab5f8ff5869021958f4ae8b838c3d707a2e85eaa (patch)
tree4907675828a5401d013b7587538cc8541edd2764 /src/libcola/cola_log.h
parentmoved libcroco, libuemf, libdepixelize to 3rdparty folder (diff)
downloadinkscape-ab5f8ff5869021958f4ae8b838c3d707a2e85eaa.tar.gz
inkscape-ab5f8ff5869021958f4ae8b838c3d707a2e85eaa.zip
Put adaptagrams into its own folder
Diffstat (limited to 'src/libcola/cola_log.h')
-rw-r--r--src/libcola/cola_log.h203
1 files changed, 0 insertions, 203 deletions
diff --git a/src/libcola/cola_log.h b/src/libcola/cola_log.h
deleted file mode 100644
index c2c9419c7..000000000
--- a/src/libcola/cola_log.h
+++ /dev/null
@@ -1,203 +0,0 @@
-/*
- * vim: ts=4 sw=4 et tw=0 wm=0
- *
- * libcola - A library providing force-directed network layout using the
- * stress-majorization method subject to separation constraints.
- *
- * Copyright (C) 2006-2008 Monash University
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- * See the file LICENSE.LGPL distributed with the library.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
- *
-*/
-
-/*
-Logging code from DJJ article: http://www.ddj.com/cpp/201804215.
-
-Title: Logging In C++
-Author: Petru Marginean
-Keywords: OCT07 C++
-Description: Unpublished source code accompanying the article by Petru Marginean, in which he presents a C++ logging framework that is typesafe, thread-safe, and portable.
- */
-#ifndef __COLA_LOG_H__
-#define __COLA_LOG_H__
-
-#include <sstream>
-#include <string>
-#include <cstdio>
-
-namespace cola {
-inline std::string NowTime();
-
-enum TLogLevel {logERROR, logWARNING, logINFO, logDEBUG, logDEBUG1, logDEBUG2, logDEBUG3, logDEBUG4};
-
-template <typename T>
-class Log
-{
-public:
- Log();
- virtual ~Log();
- std::ostringstream& Get(TLogLevel level = logINFO);
-public:
- static TLogLevel& ReportingLevel();
- static std::string ToString(TLogLevel level);
- static TLogLevel FromString(const std::string& level);
-protected:
- std::ostringstream os;
-private:
- Log(const Log&);
- Log& operator =(const Log&);
-};
-
-template <typename T>
-Log<T>::Log()
-{
-}
-
-template <typename T>
-std::ostringstream& Log<T>::Get(TLogLevel level)
-{
- os << "- " << NowTime();
- os << " " << ToString(level) << ": ";
- os << std::string(level > logDEBUG ? level - logDEBUG : 0, '\t');
- return os;
-}
-
-template <typename T>
-Log<T>::~Log()
-{
- os << std::endl;
- T::Output(os.str());
-}
-
-template <typename T>
-TLogLevel& Log<T>::ReportingLevel()
-{
- static TLogLevel reportingLevel = cola::logDEBUG4;
- return reportingLevel;
-}
-
-template <typename T>
-std::string Log<T>::ToString(TLogLevel level)
-{
- static const char* const buffer[] = {"ERROR", "WARNING", "INFO", "DEBUG", "DEBUG1", "DEBUG2", "DEBUG3", "DEBUG4"};
- return buffer[level];
-}
-
-template <typename T>
-TLogLevel Log<T>::FromString(const std::string& level)
-{
- if (level == "DEBUG4")
- return logDEBUG4;
- if (level == "DEBUG3")
- return logDEBUG3;
- if (level == "DEBUG2")
- return logDEBUG2;
- if (level == "DEBUG1")
- return logDEBUG1;
- if (level == "DEBUG")
- return logDEBUG;
- if (level == "INFO")
- return logINFO;
- if (level == "WARNING")
- return logWARNING;
- if (level == "ERROR")
- return logERROR;
- Log<T>().Get(logWARNING) << "Unknown logging level '" << level << "'. Using INFO level as default.";
- return logINFO;
-}
-
-class Output2FILE
-{
-public:
- static FILE*& Stream();
- static void Output(const std::string& msg);
-};
-
-inline FILE*& Output2FILE::Stream()
-{
- static FILE* pStream = stderr;
- return pStream;
-}
-
-inline void Output2FILE::Output(const std::string& msg)
-{
- FILE* pStream = Stream();
- if (!pStream)
- return;
- fprintf(pStream, "%s", msg.c_str());
- fflush(pStream);
-}
-
-#if defined(WIN32) || defined(_WIN32) || defined(__WIN32__)
-# if defined (BUILDING_FILELOG_DLL)
-# define FILELOG_DECLSPEC __declspec (dllexport)
-# elif defined (USING_FILELOG_DLL)
-# define FILELOG_DECLSPEC __declspec (dllimport)
-# else
-# define FILELOG_DECLSPEC
-# endif // BUILDING_DBSIMPLE_DLL
-#else
-# define FILELOG_DECLSPEC
-#endif // _WIN32
-
-class FILELOG_DECLSPEC FILELog : public Log<Output2FILE> {};
-//typedef Log<Output2FILE> FILELog;
-
-#ifndef FILELOG_MAX_LEVEL
-#define FILELOG_MAX_LEVEL cola::logDEBUG4
-#endif
-
-#define FILE_LOG(level) \
- if (level > FILELOG_MAX_LEVEL) ;\
- else if (level > cola::FILELog::ReportingLevel() || !cola::Output2FILE::Stream()) ; \
- else cola::FILELog().Get(level)
-
-#if defined(WIN32) || defined(_WIN32) || defined(__WIN32__)
-
-#include <windows.h>
-
-inline std::string NowTime()
-{
- const int MAX_LEN = 200;
- char buffer[MAX_LEN];
- if (GetTimeFormatA(LOCALE_USER_DEFAULT, 0, 0,
- "HH':'mm':'ss", buffer, MAX_LEN) == 0)
- return "Error in NowTime()";
-
- char result[100] = {0};
- static DWORD first = GetTickCount();
- std::sprintf(result, "%s.%03ld", buffer, (long)(GetTickCount() - first) % 1000);
- return result;
-}
-
-#else
-
-#include <sys/time.h>
-
-inline std::string NowTime()
-{
- char buffer[11];
- time_t t;
- time(&t);
- tm r;
- strftime(buffer, sizeof(buffer), "%X", localtime_r(&t, &r));
- struct timeval tv;
- gettimeofday(&tv, 0);
- char result[100] = {0};
- std::sprintf(result, "%s.%03ld", buffer, (long)tv.tv_usec / 1000);
- return result;
-}
-
-#endif //WIN32
-
-} // namespace cola
-
-#endif //__COLA_LOG_H__