Commit 418a98d2 authored by Tomáš Jakubec's avatar Tomáš Jakubec
Browse files

DBG refactor

parent c7005971
Loading
Loading
Loading
Loading
+2 −2
Original line number Original line Diff line number Diff line
#include <iostream>
#include <iostream>
//#define UNDEBUG
//#define UNDEBUG
//#define CONSOLE_COLOURED_OUTPUT
#define CONSOLE_COLOURED_OUTPUT
#include "../src/Debug/Debug.h"
#include "../src/Debug/Debug.h"
#include "../src/UnstructuredMesh/UnstructuredMesh.h"
#include "../src/UnstructuredMesh/UnstructuredMesh.h"
#include "../src/UnstructuredMesh/MeshFunctions/MeshFunctions.h"
#include "../src/UnstructuredMesh/MeshFunctions/MeshFunctions.h"
@@ -900,7 +900,7 @@ void testFPMA_poly(){
    ifstream file("Spark_mesh.fpma");
    ifstream file("Spark_mesh.fpma");
    reader.loadFromStream(file, mesh);
    reader.loadFromStream(file, mesh);


    CSVDBGVAR(mesh.getCells().size(), mesh.getVertices().size());
    DBGVAR_CSV(mesh.getCells().size(), mesh.getVertices().size());


    mesh.initializeCenters();
    mesh.initializeCenters();
    VTKMeshWriter<3, size_t, double> writer;
    VTKMeshWriter<3, size_t, double> writer;
+25 −12
Original line number Original line Diff line number Diff line
@@ -14,7 +14,20 @@ class ConsoleLogger {


public:
public:


    template<typename MSGTYPE, typename... MSGTYPES>
    static void writeMessage(const char* prefix, int line, const char* sourceFile, const MSGTYPE& message, const MSGTYPES&... rest) {
        writeMessage(prefix, line, sourceFile, message);
        writeMessage(prefix, line, sourceFile, rest...);
    }


    template<typename MSGTYPE>
    static void writeMessage(const char* prefix, int line, const char* sourceFile, const MSGTYPE& message) {


        std::cerr << prefix << " " << sourceFile << " << " << line << " >> ==> ";
        VariableExport::exportVariable(std::cerr, message);
        std::cerr << " <==\n";
    }


    template<typename VAR_NAME, typename VAR, typename ... REST>
    template<typename VAR_NAME, typename VAR, typename ... REST>
    static void writeVar(VAR_NAME name, VAR value, REST ... rest){
    static void writeVar(VAR_NAME name, VAR value, REST ... rest){
@@ -39,59 +52,59 @@ public:
        writeVar(line, cppFile,  rest...);
        writeVar(line, cppFile,  rest...);
    }
    }


    template<typename VAR_NAME, typename VAR>
    template<typename VAR>
    static void writeVar(int line, const char* cppFile, VAR_NAME name,const VAR& value){
    static void writeVar(int line, const char* cppFile, const char* name,const VAR& value){






#ifdef CONSOLE_COLOURED_OUTPUT
#ifdef CONSOLE_COLOURED_OUTPUT
#ifdef _WIN32
#ifdef _WIN32
        HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE);
        HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE);
        std::cerr << "In file " << cppFile << " at line " << line << " variable ";
        std::cerr << "== " << cppFile << " << " << line << " >> [[ ";
        SetConsoleTextAttribute(hConsole, FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_INTENSITY);
        SetConsoleTextAttribute(hConsole, FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_INTENSITY);
        std::cerr << name;
        std::cerr << name;
        SetConsoleTextAttribute(hConsole, FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE);
        SetConsoleTextAttribute(hConsole, FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE);
        std::cerr << " has value of ";
        std::cerr << " ]] ==> ";
        SetConsoleTextAttribute(hConsole, FOREGROUND_GREEN);
        SetConsoleTextAttribute(hConsole, FOREGROUND_GREEN);
        VariableExport::exportVariable(std::cerr, value);
        VariableExport::exportVariable(std::cerr, value);
        SetConsoleTextAttribute(hConsole, FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE);
        SetConsoleTextAttribute(hConsole, FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE);
        std::cerr << "\n";
        std::cerr << "\n";
#else
#else
        std::cerr << "In file " << cppFile << " at line " << line << " variable \033[0;33m" << name << "\033[0m has value of \033[0;32m";
        std::cerr << "== " << cppFile << " << " << line << " >> [[ \033[0;33m" << name << "\033[0m ]] ==> \033[0;32m";
        VariableExport::exportVariable(std::cerr, value);
        VariableExport::exportVariable(std::cerr, value);
        std::cerr << "\033[0m\n";
        std::cerr << "\033[0m\n";


#endif
#endif
#else
#else
        std::cerr << "== " << cppFile << " [[ " << line << " ]] <<< " << name << " >>> ";
        std::cerr << "== " << cppFile << " << " << line << " >> [[ " << name << " ]] ==> ";
        VariableExport::exportVariable(std::cerr, value);
        VariableExport::exportVariable(std::cerr, value);
        std::cerr << "\n";
        std::cerr << "\n";
#endif
#endif
    }
    }


    template<typename VAR_NAME, typename VAR>
    template<typename VAR>
    static void writeVar(int line, const char* cppFile, VAR_NAME name,const std::initializer_list<VAR>& value){
    static void writeVar(int line, const char* cppFile, const char* name,const std::initializer_list<VAR>& value){


#ifdef CONSOLE_COLOURED_OUTPUT
#ifdef CONSOLE_COLOURED_OUTPUT
#ifdef _WIN32
#ifdef _WIN32
        HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE);
        HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE);
        std::cerr << "In file " << cppFile << " at line " << line << " variable ";
        std::cerr << "== " << cppFile << " << " << line << " >> [[ ";
        SetConsoleTextAttribute(hConsole, FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_INTENSITY);
        SetConsoleTextAttribute(hConsole, FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_INTENSITY);
        std::cerr << name;
        std::cerr << name;
        SetConsoleTextAttribute(hConsole, FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE);
        SetConsoleTextAttribute(hConsole, FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE);
        std::cerr << " has value of ";
        std::cerr << " ]] ==> ";
        SetConsoleTextAttribute(hConsole, FOREGROUND_GREEN);
        SetConsoleTextAttribute(hConsole, FOREGROUND_GREEN);
        VariableExport::exportVariable(std::cerr, value);
        VariableExport::exportVariable(std::cerr, value);
        SetConsoleTextAttribute(hConsole, FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE);
        SetConsoleTextAttribute(hConsole, FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE);
        std::cerr << "\n";
        std::cerr << "\n";
#else
#else
        std::cerr << "In file " << cppFile << " at line " << line << " variable \033[0;33m" << name << "\033[0m has value of \033[0;32m";
        std::cerr << "== " << cppFile << " << " << line << " >> [[ \033[0;33m" << name << "\033[0m ]] ==> \033[0;32m";
        VariableExport::exportVariable(std::cerr, value);
        VariableExport::exportVariable(std::cerr, value);
        std::cerr << "\033[0m\n";
        std::cerr << "\033[0m\n";


#endif
#endif
#else
#else
        std::cerr << "In file " << cppFile << " at line " << line << " variable " << name << " has value of ";
        std::cerr << "== " << cppFile << " << " << line << " >> [[ " << name << " ]] ==> ";
        VariableExport::exportVariable(std::cerr, value);
        VariableExport::exportVariable(std::cerr, value);
        std::cerr << "\n";
        std::cerr << "\n";
#endif
#endif
+9 −45
Original line number Original line Diff line number Diff line
@@ -28,67 +28,31 @@ namespace dbg {


#define STRVAR(var) #var, var
#define STRVAR(var) #var, var


#define DBG(comment)            \
std::cerr << "DBG in file "     \
<< __FILE__ << " at line " <<   \
__LINE__ << " says " << comment \
<< std::endl

#ifdef __linux__
#define SINGLE_DBGVAR(var)       \
std::cerr << "DBGVAR in file "   \
<< __FILE__ << " at line " <<    \
__LINE__ << " variable \033[0;33m" << #var \
<< "\033[0m has value of \033[0;31m" << var <<    \
"\033[0m" << std::endl
#elif _WIN32
#define SINGLE_DBGVAR(var)       \
std::cerr << "DBGVAR in file "   \
<< __FILE__ << " at line " <<    \
__LINE__ << " variable " << #var \
<< " has value of " << var << std::endl
#endif


#define SINGLE_DBGVAR_SC(var) SINGLE_DBGVAR(var);


#define DBGVAR(...) ConsoleLogger::writeVar(__LINE__, __FILE__, FOR_EACH(STRVAR, __VA_ARGS__))
#define DBGVAR(...) ConsoleLogger::writeVar(__LINE__, __FILE__, FOR_EACH(STRVAR, __VA_ARGS__))
#define DBGVARCOND(condition, ...) if(condition) DBGVAR(__VA_ARGS__)
#define DBGVARCOND(condition, ...) if(condition) DBGVAR(__VA_ARGS__)


#ifdef __linux__
#define DBGMSG(...) ConsoleLogger::writeMessage("++", __LINE__, __FILE__, __VA_ARGS__)
#define DBGMSG(message)       \
std::cerr << "DBGMSG contains \
message [[\033[0;32m" << message << "\033[0m]]"\
<< std::endl
#elif _WIN32
#define DBGMSG(message)       \
std::cerr << "DBGMSG contains \
message [[" << message << "]]"\
<< std::endl
#endif


#define DBGTRY(code)                        \
#define DBGTRY(code)                        \
try{code;}                                   \
try{code;}                                   \
catch(const std::exception& e){              \
catch(const std::exception& e){              \
DBG("something went wrong in try block: " << e.what());   \
ConsoleLogger::writeMessage("!!", __LINE__, __FILE__, std::string("something went wrong in try block: ") + e.what());   \
abort();}
abort();}


// Macros using html debug output
// Macros using html debug output
#define HTMLDBGVAR(...) dbg::DBGStatics::HDBGLog.writeVar(__LINE__, __FILE__, FOR_EACH(STRVAR, __VA_ARGS__))
#define DBGVAR_HTML(...) dbg::DBGStatics::HDBGLog.writeVar(__LINE__, __FILE__, FOR_EACH(STRVAR, __VA_ARGS__))
#define HTMLDBGCOND(condition, ...) if(condition) HTMLDBGVAR(__VA_ARGS__)
#define DBGVARCOND_HTML(condition, ...) if(condition) DBGVAR_HTML(__VA_ARGS__)


// Macros using csv debug output
// Macros using csv debug output
#define CSVDBGVAR(...) dbg::DBGStatics::CSVDBGLog.writeVar(__LINE__, __FILE__, FOR_EACH(STRVAR, __VA_ARGS__))
#define DBGVAR_CSV(...) dbg::DBGStatics::CSVDBGLog.writeVar(__LINE__, __FILE__, FOR_EACH(STRVAR, __VA_ARGS__))
#define CSVDBGCOND(condition, ...) if(condition) HTMLDBGVAR(__VA_ARGS__)
#define DBGVARCOND_CSV(condition, ...) if(condition) DBGVAR_HTML(__VA_ARGS__)




#define DBGCHECK DBG("check")
#define DBGCHECK ConsoleLogger::writeMessage("--", __LINE__, __FILE__, "check line")


#else

#define SINGLE_DBGVAR_SC(var)


#define SINGLE_DBGVAR(var)
#else


#define DBG(comment)
#define DBG(comment)


@@ -96,7 +60,7 @@ abort();}


#define DBGVAR(...)
#define DBGVAR(...)


#define DBGMSG(msg)
#define DBGMSG(...)


#define DBGCHECK
#define DBGCHECK