From 41b4649d839af474bcb1fca799ad586b55769cf1 Mon Sep 17 00:00:00 2001 From: ALEXks Date: Sun, 13 Apr 2025 21:30:41 +0300 Subject: [PATCH] added json for call graph positions, removed SPF_GetGraphVizOfFunctions --- src/Utils/version.h | 2 +- src/VisualizerCalls/get_information.cpp | 73 ++++--------------------- 2 files changed, 13 insertions(+), 62 deletions(-) diff --git a/src/Utils/version.h b/src/Utils/version.h index 67ae29b..c6878ca 100644 --- a/src/Utils/version.h +++ b/src/Utils/version.h @@ -1,3 +1,3 @@ #pragma once -#define VERSION_SPF "2405" +#define VERSION_SPF "2406" diff --git a/src/VisualizerCalls/get_information.cpp b/src/VisualizerCalls/get_information.cpp index 90bd667..102b86f 100644 --- a/src/VisualizerCalls/get_information.cpp +++ b/src/VisualizerCalls/get_information.cpp @@ -641,12 +641,20 @@ int SPF_GetGraphFunctionPositions(void*& context, int winHandler, short *options } auto positions = buildLocationOfGraph(allFuncInfo, iters, coef, 0.9 * w, 0.9 * h, sendVisible ? &visible : NULL); + + json pos_array= json::array(); + for (auto& [fname, coords] : positions) { + json elem; + elem["functionName"] = fname; + elem["x"] = (double)coords.first; + elem["y"] = (double)coords.second; + pos_array.push_back(elem); + } - string resVal = ""; - resVal = to_string(positions.size()); - for (auto& elem : positions) - resVal += "|" + elem.first + "|" + to_string(elem.second.first) + "|" + to_string(elem.second.second); + json allPositions; + allPositions["allPositions"] = pos_array; + string resVal = allPositions.dump(); copyStringToShort(result, resVal); retSize = (int)resVal.size() + 1; } @@ -672,61 +680,6 @@ int SPF_GetGraphFunctionPositions(void*& context, int winHandler, short *options return retSize; } -int SPF_GetGraphVizOfFunctions(void*& context, short *options, short *projName, short *&result, short *&output, int *&outputSize, - short *&outputMessage, int *&outputMessageSize) -{ - MessageManager::clearCache(); - clearGlobalMessagesBuffer(); - setOptions(options); - - int retSize = -1; - try - { - runPassesForVisualizer(projName, { FILL_PAR_REGIONS_LINES }); - - map V; - vector E; - CreateCallGraphViz(NULL, allFuncInfo, V, E); - - string graph = to_string(V.size()) += "|"; - for (auto &v : V) - graph += v.second.to_string() + "|"; - - graph += to_string(E.size()) + "|"; - for (auto &e : E) - graph += e + "|"; - //erase last "|" - graph.erase(graph.end() - 1); - - copyStringToShort(result, graph); - retSize = (int)graph.size(); - - if (showDebug) - printf("GraphViz: '%s'\n", graph.c_str()); - } - catch (int ex) - { - try { __spf_print(1, "catch code %d\n", ex); } - catch (...) {} - if (ex == -99) - return -99; - else - retSize = -1; - } - catch (...) - { - retSize = -1; - } - - //convertBuffers(outputMessage, outputMessageSize, output, outputSize); - - if (showDebug) - printf("SAPFOR: return from DLL\n"); - - MessageManager::setWinHandler(-1); - return retSize; -} - extern int PASSES_DONE[EMPTY_PASS]; extern int *ALGORITHMS_DONE[EMPTY_ALGO]; extern const char *passNames[EMPTY_PASS + 1]; @@ -2463,8 +2416,6 @@ const wstring Sapfor_RunAnalysis(const char* analysisName_c, const char* options retCode = SPF_GetGraphFunctions(context, winHandler, optSh, projSh, result, output, outputSize, outputMessage, outputMessageSize); else if (whichRun == "SPF_GetGraphFunctionPositions") retCode = SPF_GetGraphFunctionPositions(context, winHandler, optSh, projSh, result, output, outputSize, outputMessage, outputMessageSize); - else if (whichRun == "SPF_GetGraphVizOfFunctions") - retCode = SPF_GetGraphVizOfFunctions(context, optSh, projSh, result, output, outputSize, outputMessage, outputMessageSize); else if (whichRun == "SPF_GetArrayDistribution") retCode = SPF_GetArrayDistribution(context, winHandler, optSh, projSh, result, output, outputSize, outputMessage, outputMessageSize, 0); else if (whichRun == "SPF_GetArrayDistributionOnlyAnalysis")