Loading Unstructured_mesh/main.cpp +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" Loading Loading @@ -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; Loading src/Debug/ConsoleLogger.h +25 −12 Original line number Original line Diff line number Diff line Loading @@ -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){ Loading @@ -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 Loading src/Debug/Debug.h +9 −45 Original line number Original line Diff line number Diff line Loading @@ -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) Loading @@ -96,7 +60,7 @@ abort();} #define DBGVAR(...) #define DBGVAR(...) #define DBGMSG(msg) #define DBGMSG(...) #define DBGCHECK #define DBGCHECK Loading Loading
Unstructured_mesh/main.cpp +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" Loading Loading @@ -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; Loading
src/Debug/ConsoleLogger.h +25 −12 Original line number Original line Diff line number Diff line Loading @@ -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){ Loading @@ -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 Loading
src/Debug/Debug.h +9 −45 Original line number Original line Diff line number Diff line Loading @@ -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) Loading @@ -96,7 +60,7 @@ abort();} #define DBGVAR(...) #define DBGVAR(...) #define DBGMSG(msg) #define DBGMSG(...) #define DBGCHECK #define DBGCHECK Loading