diff --git a/src/ProjectManipulation/ParseFiles.cpp b/src/ProjectManipulation/ParseFiles.cpp index 45a68a2..35494f6 100644 --- a/src/ProjectManipulation/ParseFiles.cpp +++ b/src/ProjectManipulation/ParseFiles.cpp @@ -451,13 +451,6 @@ static int dumpErrors(const vector& listOfProject, const vector splited; splitString(errors[z], '\n', splited); @@ -476,13 +469,22 @@ static int dumpErrors(const vector& listOfProject, const vector #include #include -#include #include #include #include #include -#include -#include "utils.h" #include "errors.h" +#include "utils.h" #include "version.h" #include "graph_loops.h" @@ -1737,4 +1735,38 @@ void copyStringToShort(short*& result, const string& resVal, bool withEnd) if (withEnd) result[resVal.size()] = (short)'\0'; +} + +void dumpMessages(bool inCatch, const map>& messages, const char *vis_path) +{ + json byFileArray = json::array(); + for (auto& byFile : messages) + { + json inFile; + inFile["file"] = byFile.first; + + json messages = json::array(); + for (auto& message : byFile.second) + { + if (inCatch) + message.print(byFile.first); + messages.push_back(message.toJson()); + } + inFile["messages"] = messages; + byFileArray.push_back(inFile); + } + json allMessages; + allMessages["allMessages"] = byFileArray; + + const string dump = allMessages.dump().c_str(); + + if (dump.size()) + { + FILE* outF = fopen((string(vis_path) + "/error_messages.json").c_str(), "w"); + if (outF) + { + fprintf(outF, "%s", dump.c_str()); + fclose(outF); + } + } } \ No newline at end of file diff --git a/src/Utils/utils.h b/src/Utils/utils.h index e96fd1b..77136e4 100644 --- a/src/Utils/utils.h +++ b/src/Utils/utils.h @@ -5,7 +5,9 @@ #include #include +struct Messages; struct DataDirective; + namespace Distribution { class Array; @@ -98,3 +100,4 @@ std::set fillDistributedArraysD(const DataDirective& dataDirective std::set fillDistributedArrays(const DataDirective& dataDirectives, const std::map>& tableOfUniqNamesByArray, const std::map>& arrayLinksByFuncCalls, bool onlyCommon = false, bool shortName = false); void copyStringToShort(short*& result, const std::string& resVal, bool withEnd = true); +void dumpMessages(bool inCatch, const std::map>& messages, const char* vis_path);