From 593c6e928c4c25a3ed17f3bb0cfd1bc7024afb96 Mon Sep 17 00:00:00 2001 From: ALEXks Date: Thu, 18 Sep 2025 21:09:43 +0300 Subject: [PATCH] added json to global results --- src/Utils/utils.cpp | 41 +- src/Utils/utils.h | 2 +- src/Utils/version.h | 2 +- src/VisualizerCalls/get_information.cpp | 615 ++++++++++-------------- 4 files changed, 275 insertions(+), 385 deletions(-) diff --git a/src/Utils/utils.cpp b/src/Utils/utils.cpp index e680054..08c0aed 100644 --- a/src/Utils/utils.cpp +++ b/src/Utils/utils.cpp @@ -390,32 +390,15 @@ void clearGlobalBuffer() { globalOutputBuffer = ""; } const string& getGlobalBuffer() { return globalOutputBuffer; } set allocated; -set allocatedInt; -static void convertGlobalBuffer(short *&result, int *&resultSize) -{ - const unsigned len = (unsigned)globalOutputBuffer.size(); - result = new short[len + 1]; - allocated.insert(result); - - result[len] = '\0'; - for (unsigned i = 0; i < len; ++i) - result[i] = globalOutputBuffer[i]; - - resultSize = new int[1]; - resultSize[0] = (int)len; -} - extern map> SPF_messages; //file ->messages void clearGlobalMessagesBuffer() { //clear allocated memory for (auto& elem : allocated) - delete[]elem; - for (auto& elem : allocatedInt) - delete[]elem; + delete []elem; allocated.clear(); - allocatedInt.clear(); - + + SPF_messages.clear(); } @@ -451,7 +434,7 @@ static map> removeCopies(map> return out; } -static void convertGlobalMessagesBuffer(short *&result, int *&resultSize) +static string convertGlobalMessagesBuffer() { auto copySPF_messages = removeCopies(SPF_messages); for (auto &byFile : copySPF_messages) @@ -489,21 +472,13 @@ static void convertGlobalMessagesBuffer(short *&result, int *&resultSize) json all; all["allMessages"] = allMessages; - const string str = all.dump(); - const unsigned len = (unsigned)str.size(); - - copyStringToShort(result, str); - allocated.insert(result); - - resultSize = new int[1]; - resultSize[0] = (int)len; + return all.dump(); } - -void convertBuffers(short*& resultM, int*& resultSizeM, short*& result, int*& resultSize) +void convertBuffers(string &resultM, string &result) { - convertGlobalMessagesBuffer(resultM, resultSizeM); - convertGlobalBuffer(result, resultSize); + resultM = convertGlobalMessagesBuffer(); + result = getGlobalBuffer(); } bool isSPF_comment(const string &bufStr) diff --git a/src/Utils/utils.h b/src/Utils/utils.h index fc2611f..f4b4208 100644 --- a/src/Utils/utils.h +++ b/src/Utils/utils.h @@ -33,7 +33,7 @@ void addToGlobalBufferAndPrint(const std::string &toPrint); void clearGlobalBuffer(); const std::string& getGlobalBuffer(); std::wstring to_wstring(const std::string); -void convertBuffers(short*& resultM, int*& resultSizeM, short*& result, int*& resultSize); +void convertBuffers(std::string& resultM, std::string& result); void clearGlobalMessagesBuffer(); std::string renameInclude(const std::string& inc); void copyIncludes(const std::set &allIncludeFiles, const std::map>> &commentsToInclude, const std::map>>& newCopyDeclToIncl, const char *folderName, bool keepSpfDirs, bool isFreeStyle, bool isRename, int removeDirs = 0); diff --git a/src/Utils/version.h b/src/Utils/version.h index e2700aa..dce1888 100644 --- a/src/Utils/version.h +++ b/src/Utils/version.h @@ -1,3 +1,3 @@ #pragma once -#define VERSION_SPF "2444" +#define VERSION_SPF "2445" diff --git a/src/VisualizerCalls/get_information.cpp b/src/VisualizerCalls/get_information.cpp index d375cd0..0aee959 100644 --- a/src/VisualizerCalls/get_information.cpp +++ b/src/VisualizerCalls/get_information.cpp @@ -64,8 +64,6 @@ using std::to_string; using std::make_pair; using json = nlohmann::json; -extern set allocated; -extern set allocatedInt; extern bool runAsClient; extern const char* VISUALIZER_DATA_PATH; @@ -360,8 +358,7 @@ static void runPassesForVisualizer(const short *projName, const vector & throw rethrow; } -int SPF_StatisticAnalyzer(void*& context, int winHandler, short* options, short* pppaOptions, short*& output, int*& outputSize, - short*& outputMessage, int*& outputMessageSize) +int SPF_StatisticAnalyzer(void*& context, int winHandler, short* options, short* pppaOptions, string &output, string &outputMessage) { MessageManager::clearCache(); MessageManager::setWinHandler(winHandler); @@ -394,7 +391,7 @@ int SPF_StatisticAnalyzer(void*& context, int winHandler, short* options, short* retSize = -1; } - convertBuffers(outputMessage, outputMessageSize, output, outputSize); + convertBuffers(outputMessage, output); if (showDebug) printf("SAPFOR: return from DLL\n"); @@ -402,8 +399,7 @@ int SPF_StatisticAnalyzer(void*& context, int winHandler, short* options, short* return retSize; } -int SPF_ParseFiles(void*& context, int winHandler, short *options, short* projName, short*& output, int*& outputSize, - short*& outputMessage, int*& outputMessageSize) +int SPF_ParseFiles(void*& context, int winHandler, short *options, short* projName, string& output, string& outputMessage) { MessageManager::clearCache(); MessageManager::setWinHandler(winHandler); @@ -414,7 +410,6 @@ int SPF_ParseFiles(void*& context, int winHandler, short *options, short* projNa try { runPassesForVisualizer(projName, { PARSE_FILES }); - retSize = 0; } catch (int ex) @@ -431,7 +426,7 @@ int SPF_ParseFiles(void*& context, int winHandler, short *options, short* projNa retSize = -1; } - convertBuffers(outputMessage, outputMessageSize, output, outputSize); + convertBuffers(outputMessage, output); if (showDebug) printf("SAPFOR: return from DLL\n"); @@ -440,9 +435,7 @@ int SPF_ParseFiles(void*& context, int winHandler, short *options, short* projNa } extern vector filesCompilationOrder; -int SPF_ParseFilesWithOrder(void*& context, int winHandler, short* options, short* projName, short*& result, - short*& output, int*& outputSize, - short*& outputMessage, int*& outputMessageSize) +int SPF_ParseFilesWithOrder(void*& context, int winHandler, short* options, short* projName, string& result, string& output, string& outputMessage) { MessageManager::clearCache(); MessageManager::setWinHandler(winHandler); @@ -462,8 +455,7 @@ int SPF_ParseFilesWithOrder(void*& context, int winHandler, short* options, shor json filesOrder; filesOrder["allFiles"] = filesArray; - string resVal = filesOrder.dump(); - copyStringToShort(result, resVal); + result = filesOrder.dump(); retSize = 0; } catch (int ex) @@ -480,7 +472,7 @@ int SPF_ParseFilesWithOrder(void*& context, int winHandler, short* options, shor retSize = -1; } - convertBuffers(outputMessage, outputMessageSize, output, outputSize); + convertBuffers(outputMessage, output); if (showDebug) printf("SAPFOR: return from DLL\n"); @@ -489,22 +481,20 @@ int SPF_ParseFilesWithOrder(void*& context, int winHandler, short* options, shor } extern map> loopGraph; // file -> Info -int SPF_GetGraphLoops(void*& context, int winHandler, short *options, short *projName, short *&result, short *&output, int *&outputSize, - short *&outputMessage, int *&outputMessageSize) +int SPF_GetGraphLoops(void*& context, int winHandler, short *options, short *projName, string& result, string& output, string& outputMessage) { MessageManager::clearCache(); MessageManager::setWinHandler(winHandler); clearGlobalMessagesBuffer(); setOptions(options); - int retSize = -1; + int retSize = -1; try { runPassesForVisualizer(projName, { LOOP_GRAPH } ); - string resVal = convertToJson(loopGraph).dump(); - copyStringToShort(result, resVal); - retSize = (int)resVal.size() + 1; + result = convertToJson(loopGraph).dump(); + retSize = result.size(); } catch (int ex) { @@ -519,7 +509,7 @@ int SPF_GetGraphLoops(void*& context, int winHandler, short *options, short *pro retSize = -1; } - convertBuffers(outputMessage, outputMessageSize, output, outputSize); + convertBuffers(outputMessage, output); if (showDebug) printf("SAPFOR: return from DLL\n"); @@ -529,8 +519,7 @@ int SPF_GetGraphLoops(void*& context, int winHandler, short *options, short *pro } extern map> allFuncInfo; // file -> Info -int SPF_GetGraphFunctions(void*& context, int winHandler, short *options, short *projName, short *&result, short *&output, int *&outputSize, - short *&outputMessage, int *&outputMessageSize) +int SPF_GetGraphFunctions(void*& context, int winHandler, short *options, short *projName, string& result, string& output, string& outputMessage) { MessageManager::clearCache(); MessageManager::setWinHandler(winHandler); @@ -542,9 +531,8 @@ int SPF_GetGraphFunctions(void*& context, int winHandler, short *options, short { runPassesForVisualizer(projName, { FILL_PAR_REGIONS_LINES } ); - string resVal = convertToJson(allFuncInfo).dump(); - copyStringToShort(result, resVal); - retSize = (int)resVal.size() + 1; + result = convertToJson(allFuncInfo).dump(); + retSize = result.size(); } catch (int ex) { @@ -559,7 +547,7 @@ int SPF_GetGraphFunctions(void*& context, int winHandler, short *options, short retSize = -1; } - convertBuffers(outputMessage, outputMessageSize, output, outputSize); + convertBuffers(outputMessage, output); if (showDebug) printf("SAPFOR: return from DLL\n"); @@ -568,8 +556,7 @@ int SPF_GetGraphFunctions(void*& context, int winHandler, short *options, short return retSize; } -int SPF_GetGraphFunctionPositions(void*& context, int winHandler, short *options, short *projName, short *&result, short *&output, int *&outputSize, - short *&outputMessage, int *&outputMessageSize) +int SPF_GetGraphFunctionPositions(void*& context, int winHandler, short *options, short *projName, string& result, string& output, string& outputMessage) { MessageManager::clearCache(); MessageManager::setWinHandler(winHandler); @@ -644,9 +631,8 @@ int SPF_GetGraphFunctionPositions(void*& context, int winHandler, short *options json allPositions; allPositions["allPositions"] = pos_array; - string resVal = allPositions.dump(); - copyStringToShort(result, resVal); - retSize = (int)resVal.size() + 1; + result = allPositions.dump(); + retSize = result.size(); } catch (int ex) { @@ -661,7 +647,7 @@ int SPF_GetGraphFunctionPositions(void*& context, int winHandler, short *options retSize = -1; } - convertBuffers(outputMessage, outputMessageSize, output, outputSize); + convertBuffers(outputMessage, output); if (showDebug) printf("SAPFOR: return from DLL\n"); @@ -681,26 +667,25 @@ int SPF_GetPassesState(void*& context, int *&passInfo) return EMPTY_PASS; } -int SPF_GetPassesStateStr(void*& context, short *&passInfo) +int SPF_GetPassesStateStr(void*& context, string &passInfo) { MessageManager::clearCache(); - string donePasses = ""; + passInfo = ""; for (int i = 0; i < EMPTY_PASS; ++i) { if (showDebug) printf("SAPFOR: pass %d is %d with name %s\n", 1, PASSES_DONE[i], passNames[i]); if (PASSES_DONE[i] == 1) { - donePasses += passNames[i] + string("|"); + passInfo += passNames[i] + string("|"); } } //erase last "|" - if (donePasses != "" && donePasses[donePasses.size() - 1] == '|') - donePasses.erase(donePasses.end() - 1); + if (passInfo != "" && passInfo[passInfo.size() - 1] == '|') + passInfo.erase(passInfo.end() - 1); - copyStringToShort(passInfo, donePasses); - return (int)donePasses.size(); + return passInfo.size(); } @@ -727,8 +712,8 @@ static void printDeclArraysState() } extern vector parallelRegions; -int SPF_GetArrayDistribution(void*& context, int winHandler, short *options, short *projName, short *&result, short *&output, int *&outputSize, - short *&outputMessage, int *&outputMessageSize, int regime) +int SPF_GetArrayDistribution(void*& context, int winHandler, short *options, short *projName, string& result, string& output, string& outputMessage, + int regime) { MessageManager::clearCache(); MessageManager::setWinHandler(winHandler); @@ -766,9 +751,8 @@ int SPF_GetArrayDistribution(void*& context, int winHandler, short *options, sho json allRegions; allRegions["allRegions"] = regions; - string resVal = allRegions.dump(); - copyStringToShort(result, resVal); - retSize = (int)resVal.size() + 1; + result = allRegions.dump(); + retSize = result.size(); } catch (int ex) { @@ -782,7 +766,7 @@ int SPF_GetArrayDistribution(void*& context, int winHandler, short *options, sho retSize = -1; } - convertBuffers(outputMessage, outputMessageSize, output, outputSize); + convertBuffers(outputMessage, output); if (showDebug) printf("SAPFOR: return from DLL with code %d\n", retSize); @@ -795,7 +779,7 @@ extern map> arrayLinksByFuncCalls; //toModify[0] = size, toModify[1] arrayAddr, all triplets to modify for each dims //ex: toModify A[1*J + 1]: [0] = 4, [1] = x000A, [2] = 0, [3] = 1, [4] = 1 -int SPF_ModifyArrayDistribution(void*& context, int winHandler, short *options, short *projName, short *&output, int *&outputSize, short *&outputMessage, int *&outputMessageSize, +int SPF_ModifyArrayDistribution(void*& context, int winHandler, short *options, short *projName, string &output, string &outputMessage, int regId, int64_t *toModify) { MessageManager::clearCache(); @@ -969,7 +953,7 @@ extern map> intervals; extern vector> topologies; int SPF_CreateParallelVariant(void*& context, int winHandler, short *options, short *projName, short *folderName, int64_t *variants, int *varLen, - short *&output, int *&outputSize, short *&outputMessage, int *&outputMessageSize, short *&predictorStats) + string &output, string &outputMessage, string &predictorStats) { MessageManager::clearCache(); if (folderName == NULL) @@ -1072,11 +1056,9 @@ int SPF_CreateParallelVariant(void*& context, int winHandler, short *options, sh summed.TotalScorePar += predFile.second.TotalScorePar; } - string predictRes = summed.toJson().dump(); - copyStringToShort(predictorStats, predictRes); - - __spf_print(1, " statistic to send: %s\n", predictRes.c_str()); - retSize = (int)predictRes.size(); + predictorStats = summed.toJson().dump(); + __spf_print(1, " statistic to send: %s\n", predictorStats.c_str()); + retSize = predictorStats.size(); } catch (int ex) { @@ -1092,7 +1074,7 @@ int SPF_CreateParallelVariant(void*& context, int winHandler, short *options, sh retSize = -1; } - convertBuffers(outputMessage, outputMessageSize, output, outputSize); + convertBuffers(outputMessage, output); if (showDebug) printf("SAPFOR: return from DLL\n"); @@ -1101,8 +1083,7 @@ int SPF_CreateParallelVariant(void*& context, int winHandler, short *options, sh } -int SPF_GetArrayLinks(void*& context, int winHandler, short *options, short *projName, short *&result, short *&output, int *&outputSize, - short *&outputMessage, int *&outputMessageSize) +int SPF_GetArrayLinks(void*& context, int winHandler, short *options, short *projName, string &result, string &output, string &outputMessage) { MessageManager::clearCache(); MessageManager::setWinHandler(winHandler); @@ -1144,9 +1125,8 @@ int SPF_GetArrayLinks(void*& context, int winHandler, short *options, short *pro json links; links["allLinks"] = allLinks; - string resVal = links.dump(); - copyStringToShort(result, resVal); - retSize = (int)resVal.size() + 1; + result = links.dump(); + retSize = result.size(); } catch (int ex) { @@ -1161,7 +1141,7 @@ int SPF_GetArrayLinks(void*& context, int winHandler, short *options, short *pro retSize = -1; } - convertBuffers(outputMessage, outputMessageSize, output, outputSize); + convertBuffers(outputMessage, output); if (showDebug) printf("SAPFOR: return from DLL\n"); @@ -1171,8 +1151,8 @@ int SPF_GetArrayLinks(void*& context, int winHandler, short *options, short *pro } extern std::pair min_max_block; -int SPF_GetMaxMinBlockDistribution(void*& context, int winHandler, short *options, short *projName, short *&result, short *&output, int *&outputSize, - short *&outputMessage, int *&outputMessageSize) +int SPF_GetMaxMinBlockDistribution(void*& context, int winHandler, short *options, short *projName, string &result, string &output, + string &outputMessage) { MessageManager::clearCache(); //MessageManager::setWinHandler(winHandler); @@ -1184,11 +1164,8 @@ int SPF_GetMaxMinBlockDistribution(void*& context, int winHandler, short *option { runPassesForVisualizer(projName, { GET_MIN_MAX_BLOCK_DIST }); - string resVal = ""; - resVal = to_string(min_max_block.first) + " " + to_string(min_max_block.second); - - copyStringToShort(result, resVal); - retSize = (int)resVal.size() + 1; + result = to_string(min_max_block.first) + " " + to_string(min_max_block.second); + retSize = result.size(); } catch (int ex) { @@ -1203,7 +1180,7 @@ int SPF_GetMaxMinBlockDistribution(void*& context, int winHandler, short *option retSize = -1; } - convertBuffers(outputMessage, outputMessageSize, output, outputSize); + convertBuffers(outputMessage, output); if (showDebug) printf("SAPFOR: return from DLL\n"); @@ -1212,68 +1189,65 @@ int SPF_GetMaxMinBlockDistribution(void*& context, int winHandler, short *option return retSize; } -int SPF_GetVersionAndBuildDate(void*& context, short *&result) +int SPF_GetVersionAndBuildDate(void*& context, string &result) { MessageManager::clearCache(); - string resVal = ""; - resVal += string(VERSION_SPF) + " |" + __DATE__ + "| |" +__TIME__ + "| "; + json info; - copyStringToShort(result, resVal); - return (int)resVal.size() + 1; + info["version"] = VERSION_SPF; + info["build_date"] = __DATE__; + info["build_time"] = __TIME__; + + result = info.dump(); + return result.size(); } -int SPF_GetCurrentPID(void*& context, short*& result) +int SPF_GetCurrentPID(void*& context, string &result) { MessageManager::clearCache(); - string resVal = to_string(GetPid()); - copyStringToShort(result, resVal); - return (int)resVal.size() + 1; + result = to_string(GetPid()); + return result.size(); } extern string openDvmStatistic(const char* path, bool& isOk); -int SPF_OpenDvmStatistic(void*& context, const short* path, short*& result) +int SPF_OpenDvmStatistic(void*& context, const short* path, string &result) { MessageManager::clearCache(); - string resVal = ""; + result = ""; int strL = -1; char* pathCh = ConvertShortToChar(path, strL); checkNull(pathCh, convertFileName(__FILE__).c_str(), __LINE__); bool ok = true; - resVal = openDvmStatistic(pathCh, ok); + result = openDvmStatistic(pathCh, ok); if (!ok) printInternalError(convertFileName(__FILE__).c_str(), __LINE__); - - copyStringToShort(result, resVal); - return (int)resVal.size() + 1; + return result.size(); } extern set intrinsicF; extern void initIntrinsicFunctionNames(); -int SPF_GetIntrinsics(void*& context, short *&result) +int SPF_GetIntrinsics(void*& context, string &result) { MessageManager::clearCache(); initIntrinsicFunctionNames(); - string resVal = ""; + result = ""; for (auto it = intrinsicF.begin(); it != intrinsicF.end(); ++it) { if (it != intrinsicF.begin()) - resVal += " " + *it; + result += " " + *it; else - resVal += *it; + result += *it; } - - copyStringToShort(result, resVal); - return (int)resVal.size() + 1; + return result.size(); } extern map>> includeDependencies; -int SPF_GetIncludeDependencies(void*& context, int winHandler, short *options, short *projName, short *&result, short*& output, int*& outputSize, - short*& outputMessage, int*& outputMessageSize) +int SPF_GetIncludeDependencies(void*& context, int winHandler, short *options, short *projName, string &result, string &output, string &outputMessage) { MessageManager::clearCache(); MessageManager::setWinHandler(winHandler); @@ -1307,10 +1281,8 @@ int SPF_GetIncludeDependencies(void*& context, int winHandler, short *options, s json allIncludes; allIncludes["allIncludes"] = inc_array; - string resVal = allIncludes.dump(); - - copyStringToShort(result, resVal); - retSize = (int)resVal.size() + 1; + result = allIncludes.dump(); + retSize = result.size(); } catch (int ex) { @@ -1325,14 +1297,13 @@ int SPF_GetIncludeDependencies(void*& context, int winHandler, short *options, s retSize = -1; } - convertBuffers(outputMessage, outputMessageSize, output, outputSize); + convertBuffers(outputMessage, output); MessageManager::setWinHandler(-1); return retSize; } -int SPF_SetFunctionsToInclude(void*& context, int winHandler, short *options, short *projName, short *&result, short *&output, int *&outputSize, - short *&outputMessage, int *&outputMessageSize) +int SPF_SetFunctionsToInclude(void*& context, int winHandler, short *options, short *projName, string &result, string &output, string &outputMessage) { MessageManager::clearCache(); MessageManager::setWinHandler(winHandler); @@ -1344,9 +1315,8 @@ int SPF_SetFunctionsToInclude(void*& context, int winHandler, short *options, sh { runPassesForVisualizer(projName, { FIND_FUNC_TO_INCLUDE }); - string resVal = convertToJson(allFuncInfo).dump(); - copyStringToShort(result, resVal); - retSize = (int)resVal.size() + 1; + result = convertToJson(allFuncInfo).dump(); + retSize = result.size(); } catch (int ex) { @@ -1361,7 +1331,7 @@ int SPF_SetFunctionsToInclude(void*& context, int winHandler, short *options, sh retSize = -1; } - convertBuffers(outputMessage, outputMessageSize, output, outputSize); + convertBuffers(outputMessage, output); if (showDebug) printf("SAPFOR: return from DLL\n"); @@ -1369,8 +1339,7 @@ int SPF_SetFunctionsToInclude(void*& context, int winHandler, short *options, sh return retSize; } -int SPF_GetAllDeclaratedArrays(void*& context, int winHandler, short *options, short *projName, short *&result, short *&output, int *&outputSize, - short *&outputMessage, int *&outputMessageSize) +int SPF_GetAllDeclaratedArrays(void*& context, int winHandler, short *options, short *projName, string &result, string &output, string &outputMessage) { MessageManager::clearCache(); MessageManager::setWinHandler(winHandler); @@ -1391,10 +1360,8 @@ int SPF_GetAllDeclaratedArrays(void*& context, int winHandler, short *options, s json allArrays; allArrays["allArrays"] = arrays; - string resVal = allArrays.dump(); - - copyStringToShort(result, resVal); - retSize = (int)resVal.size() + 1; + result = allArrays.dump(); + retSize = result.size(); } catch (int ex) { @@ -1410,7 +1377,7 @@ int SPF_GetAllDeclaratedArrays(void*& context, int winHandler, short *options, s retSize = -1; } - convertBuffers(outputMessage, outputMessageSize, output, outputSize); + convertBuffers(outputMessage, output); if (showDebug) printf("SAPFOR: return from DLL\n"); @@ -1420,8 +1387,7 @@ int SPF_GetAllDeclaratedArrays(void*& context, int winHandler, short *options, s extern map lineInfo; extern map, set>> dirsInfo; -int SPF_GetFileLineInfo(void*& context, int winHandler, short *options, short *projName, short *&result, short *&output, int *&outputSize, - short *&outputMessage, int *&outputMessageSize) +int SPF_GetFileLineInfo(void*& context, int winHandler, short *options, short *projName, string &result, string &output, string &outputMessage) { MessageManager::clearCache(); MessageManager::setWinHandler(winHandler); @@ -1458,10 +1424,8 @@ int SPF_GetFileLineInfo(void*& context, int winHandler, short *options, short *p json allMetrics; allMetrics["allMetrics"] = metric_array; - string resVal = allMetrics.dump(); - - copyStringToShort(result, resVal); - retSize = (int)resVal.size() + 1; + result = allMetrics.dump(); + retSize = result.size(); } catch (int ex) { @@ -1476,7 +1440,7 @@ int SPF_GetFileLineInfo(void*& context, int winHandler, short *options, short *p retSize = -1; } - convertBuffers(outputMessage, outputMessageSize, output, outputSize); + convertBuffers(outputMessage, output); if (showDebug) printf("SAPFOR: return from DLL\n"); @@ -1590,8 +1554,7 @@ int SPF_SetDistributionFlagToArrays(void*& context, const char* keys, const char } static int simpleTransformPass(const passes PASS_NAME, short *options, short *projName, short *folderName, - short *&output, int *&outputSize, short *&outputMessage, int *&outputMessageSize, - bool isBuildParallel = false) + string &output, string &outputMessage, bool isBuildParallel = false) { clearGlobalMessagesBuffer(); setOptions(options, isBuildParallel); @@ -1615,7 +1578,7 @@ static int simpleTransformPass(const passes PASS_NAME, short *options, short *pr retCode = -1; } - convertBuffers(outputMessage, outputMessageSize, output, outputSize); + convertBuffers(outputMessage, output); if (showDebug) printf("SAPFOR: return from DLL\n"); @@ -1624,239 +1587,210 @@ static int simpleTransformPass(const passes PASS_NAME, short *options, short *pr } -int SPF_CorrectCodeStylePass(void*& context, int winHandler, short *options, short *projName, short *folderName, short *&output, - int *&outputSize, short *&outputMessage, int *&outputMessageSize) +int SPF_CorrectCodeStylePass(void*& context, int winHandler, short *options, short *projName, short *folderName, string &output, string &outputMessage) { MessageManager::clearCache(); MessageManager::setWinHandler(winHandler); - return simpleTransformPass(CORRECT_CODE_STYLE, options, projName, folderName, output, outputSize, outputMessage, outputMessageSize); + return simpleTransformPass(CORRECT_CODE_STYLE, options, projName, folderName, output, outputMessage); } -int SPF_DuplicateFunctionChains(void*& context, int winHandler, short *options, short* projName, short* folderName, short*& output, - int*& outputSize, short*& outputMessage, int*& outputMessageSize) +int SPF_DuplicateFunctionChains(void*& context, int winHandler, short *options, short* projName, short* folderName, string &output, string &outputMessage) { MessageManager::clearCache(); MessageManager::setWinHandler(winHandler); - return simpleTransformPass(DUPLICATE_FUNCTIONS, options, projName, folderName, output, outputSize, outputMessage, outputMessageSize); + return simpleTransformPass(DUPLICATE_FUNCTIONS, options, projName, folderName, output, outputMessage); } -int SPF_ResolveParallelRegionConflicts(void*& context, int winHandler, short *options, short *projName, short *folderName, short *&output, - int *&outputSize, short *&outputMessage, int *&outputMessageSize) +int SPF_ResolveParallelRegionConflicts(void*& context, int winHandler, short *options, short *projName, short *folderName, string &output, string &outputMessage) { MessageManager::clearCache(); MessageManager::setWinHandler(winHandler); - return simpleTransformPass(RESOLVE_PAR_REGIONS, options, projName, folderName, output, outputSize, outputMessage, outputMessageSize); + return simpleTransformPass(RESOLVE_PAR_REGIONS, options, projName, folderName, output, outputMessage); } -int SPF_RemoveDistArraysFromIO(void*& context, int winHandler, short* options, short* projName, short* folderName, short*& output, - int*& outputSize, short*& outputMessage, int*& outputMessageSize) +int SPF_RemoveDistArraysFromIO(void*& context, int winHandler, short* options, short* projName, short* folderName, string &output, string &outputMessage) { MessageManager::clearCache(); MessageManager::setWinHandler(winHandler); - return simpleTransformPass(REMOVE_DIST_ARRAYS_FROM_IO, options, projName, folderName, output, outputSize, outputMessage, outputMessageSize); + return simpleTransformPass(REMOVE_DIST_ARRAYS_FROM_IO, options, projName, folderName, output, outputMessage); } -int SPF_PrivateExpansion(void*& context, int winHandler, short *options, short *projName, short *folderName, short *&output, - int *&outputSize, short *&outputMessage, int *&outputMessageSize) +int SPF_PrivateExpansion(void*& context, int winHandler, short *options, short *projName, short *folderName, string &output, string &outputMessage) { MessageManager::clearCache(); MessageManager::setWinHandler(winHandler); - return simpleTransformPass(PRIVATE_ARRAYS_EXPANSION, options, projName, folderName, output, outputSize, outputMessage, outputMessageSize); + return simpleTransformPass(PRIVATE_ARRAYS_EXPANSION, options, projName, folderName, output, outputMessage); } -int SPF_PrivateShrinking(void*& context, int winHandler, short *options, short *projName, short *folderName, short *&output, - int *&outputSize, short *&outputMessage, int *&outputMessageSize) +int SPF_PrivateShrinking(void*& context, int winHandler, short *options, short *projName, short *folderName, string &output, string &outputMessage) { MessageManager::clearCache(); MessageManager::setWinHandler(winHandler); - return simpleTransformPass(PRIVATE_ARRAYS_SHRINKING, options, projName, folderName, output, outputSize, outputMessage, outputMessageSize); + return simpleTransformPass(PRIVATE_ARRAYS_SHRINKING, options, projName, folderName, output, outputMessage); } -int SPF_PrivateRemoving(void*& context, int winHandler, short *options, short *projName, short *folderName, short *&output, - int *&outputSize, short *&outputMessage, int *&outputMessageSize) +int SPF_PrivateRemoving(void*& context, int winHandler, short *options, short *projName, short *folderName, string &output, string &outputMessage) { MessageManager::clearCache(); MessageManager::setWinHandler(winHandler); - return simpleTransformPass(PRIVATE_REMOVING, options, projName, folderName, output, outputSize, outputMessage, outputMessageSize); + return simpleTransformPass(PRIVATE_REMOVING, options, projName, folderName, output, outputMessage); } -int SPF_LoopFission(void*& context, int winHandler, short *options, short *projName, short *folderName, short *&output, - int *&outputSize, short *&outputMessage, int *&outputMessageSize) +int SPF_LoopFission(void*& context, int winHandler, short *options, short *projName, short *folderName, string &output, string &outputMessage) { MessageManager::clearCache(); MessageManager::setWinHandler(winHandler); - return simpleTransformPass(LOOPS_SPLITTER, options, projName, folderName, output, outputSize, outputMessage, outputMessageSize); + return simpleTransformPass(LOOPS_SPLITTER, options, projName, folderName, output, outputMessage); } -int SPF_LoopUnion(void*& context, int winHandler, short *options, short *projName, short *folderName, short *&output, - int *&outputSize, short *&outputMessage, int *&outputMessageSize) +int SPF_LoopUnion(void*& context, int winHandler, short *options, short *projName, short *folderName, string &output, string &outputMessage) { MessageManager::clearCache(); MessageManager::setWinHandler(winHandler); - return simpleTransformPass(LOOPS_COMBINER, options, projName, folderName, output, outputSize, outputMessage, outputMessageSize); + return simpleTransformPass(LOOPS_COMBINER, options, projName, folderName, output, outputMessage); } -int SPF_LoopUnrolling(void*& context, int winHandler, short *options, short *projName, short *folderName, short *&output, - int *&outputSize, short *&outputMessage, int *&outputMessageSize) +int SPF_LoopUnrolling(void*& context, int winHandler, short *options, short *projName, short *folderName, string &output, string &outputMessage) { MessageManager::clearCache(); MessageManager::setWinHandler(winHandler); - return simpleTransformPass(UNROLL_LOOPS, options, projName, folderName, output, outputSize, outputMessage, outputMessageSize); + return simpleTransformPass(UNROLL_LOOPS, options, projName, folderName, output, outputMessage); } -int SPF_CreateIntervalsTree(void*& context, int winHandler, short *options, short *projName, short *folderName, short *&output, - int *&outputSize, short *&outputMessage, int *&outputMessageSize) +int SPF_CreateIntervalsTree(void*& context, int winHandler, short *options, short *projName, short *folderName, string &output, string &outputMessage) { MessageManager::clearCache(); MessageManager::setWinHandler(winHandler); - return simpleTransformPass(INSERT_INTER_TREE, options, projName, folderName, output, outputSize, outputMessage, outputMessageSize); + return simpleTransformPass(INSERT_INTER_TREE, options, projName, folderName, output, outputMessage); } -int SPF_RemoveOmpDirectives(void*& context, int winHandler, short* options, short* projName, short* folderName, short*& output, - int*& outputSize, short*& outputMessage, int*& outputMessageSize) +int SPF_RemoveOmpDirectives(void*& context, int winHandler, short* options, short* projName, short* folderName, string &output, string &outputMessage) { MessageManager::clearCache(); MessageManager::setWinHandler(winHandler); - return simpleTransformPass(REMOVE_OMP_DIRS_TRANSFORM, options, projName, folderName, output, outputSize, outputMessage, outputMessageSize); + return simpleTransformPass(REMOVE_OMP_DIRS_TRANSFORM, options, projName, folderName, output, outputMessage); } -int SPF_RemoveDvmDirectives(void*& context, int winHandler, short *options, short *projName, short *folderName, short *&output, - int *&outputSize, short *&outputMessage, int *&outputMessageSize) +int SPF_RemoveDvmDirectives(void*& context, int winHandler, short *options, short *projName, short *folderName, string &output, string &outputMessage) { MessageManager::clearCache(); MessageManager::setWinHandler(winHandler); - return simpleTransformPass(REMOVE_DVM_DIRS, options, projName, folderName, output, outputSize, outputMessage, outputMessageSize); + return simpleTransformPass(REMOVE_DVM_DIRS, options, projName, folderName, output, outputMessage); } -int SPF_RemoveSpfDirectives(void*& context, int winHandler, short* options, short* projName, short* folderName, short*& output, - int*& outputSize, short*& outputMessage, int*& outputMessageSize) +int SPF_RemoveSpfDirectives(void*& context, int winHandler, short* options, short* projName, short* folderName, string &output, string &outputMessage) { MessageManager::clearCache(); MessageManager::setWinHandler(winHandler); - return simpleTransformPass(REMOVE_SPF_DIRS, options, projName, folderName, output, outputSize, outputMessage, outputMessageSize); + return simpleTransformPass(REMOVE_SPF_DIRS, options, projName, folderName, output, outputMessage); } -int SPF_RemoveDvmDirectivesToComments(void*& context, int winHandler, short *options, short *projName, short *folderName, short *&output, - int *&outputSize, short *&outputMessage, int *&outputMessageSize) +int SPF_RemoveDvmDirectivesToComments(void*& context, int winHandler, short *options, short *projName, short *folderName, string &output, string &outputMessage) { MessageManager::clearCache(); MessageManager::setWinHandler(winHandler); - return simpleTransformPass(REMOVE_DVM_DIRS_TO_COMMENTS, options, projName, folderName, output, outputSize, outputMessage, outputMessageSize); + return simpleTransformPass(REMOVE_DVM_DIRS_TO_COMMENTS, options, projName, folderName, output, outputMessage); } -int SPF_RemoveComments(void*& context, int winHandler, short* options, short* projName, short* folderName, short*& output, - int*& outputSize, short*& outputMessage, int*& outputMessageSize) +int SPF_RemoveComments(void*& context, int winHandler, short* options, short* projName, short* folderName, string &output, string &outputMessage) { MessageManager::clearCache(); MessageManager::setWinHandler(winHandler); - return simpleTransformPass(REMOVE_COMMENTS, options, projName, folderName, output, outputSize, outputMessage, outputMessageSize); + return simpleTransformPass(REMOVE_COMMENTS, options, projName, folderName, output, outputMessage); } -int SPF_RemoveDvmIntervals(void*& context, int winHandler, short *options, short *projName, short *folderName, short *&output, - int *&outputSize, short *&outputMessage, int *&outputMessageSize) +int SPF_RemoveDvmIntervals(void*& context, int winHandler, short *options, short *projName, short *folderName, string &output, string &outputMessage) { MessageManager::clearCache(); MessageManager::setWinHandler(winHandler); - return simpleTransformPass(REMOVE_DVM_INTERVALS, options, projName, folderName, output, outputSize, outputMessage, outputMessageSize); + return simpleTransformPass(REMOVE_DVM_INTERVALS, options, projName, folderName, output, outputMessage); } -int SPF_CreateCheckpoints(void*& context, int winHandler, short* options, short* projName, short* folderName, short*& output, - int*& outputSize, short*& outputMessage, int*& outputMessageSize) +int SPF_CreateCheckpoints(void*& context, int winHandler, short* options, short* projName, short* folderName, string &output, string &outputMessage) { MessageManager::clearCache(); MessageManager::setWinHandler(winHandler); - return simpleTransformPass(CREATE_CHECKPOINTS, options, projName, folderName, output, outputSize, outputMessage, outputMessageSize); + return simpleTransformPass(CREATE_CHECKPOINTS, options, projName, folderName, output, outputMessage); } -int SPF_ConvertStructures(void*& context, int winHandler, short* options, short* projName, short* folderName, short*& output, - int*& outputSize, short*& outputMessage, int*& outputMessageSize) +int SPF_ConvertStructures(void*& context, int winHandler, short* options, short* projName, short* folderName, string &output, string &outputMessage) { MessageManager::clearCache(); MessageManager::setWinHandler(winHandler); - return simpleTransformPass(CONVERT_STRUCTURES_TO_SIMPLE, options, projName, folderName, output, outputSize, outputMessage, outputMessageSize); + return simpleTransformPass(CONVERT_STRUCTURES_TO_SIMPLE, options, projName, folderName, output, outputMessage); } -int SPF_InitDeclsWithZero(void*& context, int winHandler, short* options, short* projName, short* folderName, short*& output, - int*& outputSize, short*& outputMessage, int*& outputMessageSize) +int SPF_InitDeclsWithZero(void*& context, int winHandler, short* options, short* projName, short* folderName, string &output, string &outputMessage) { MessageManager::clearCache(); MessageManager::setWinHandler(winHandler); - return simpleTransformPass(SET_TO_ALL_DECL_INIT_ZERO, options, projName, folderName, output, outputSize, outputMessage, outputMessageSize); + return simpleTransformPass(SET_TO_ALL_DECL_INIT_ZERO, options, projName, folderName, output, outputMessage); } -int SPF_RemoveUnusedFunctions(void*& context, int winHandler, short* options, short* projName, short* folderName, short*& output, - int*& outputSize, short*& outputMessage, int*& outputMessageSize) +int SPF_RemoveUnusedFunctions(void*& context, int winHandler, short* options, short* projName, short* folderName, string &output, string &outputMessage) { MessageManager::clearCache(); MessageManager::setWinHandler(winHandler); - return simpleTransformPass(REMOVE_UNUSED_FUNCTIONS, options, projName, folderName, output, outputSize, outputMessage, outputMessageSize); + return simpleTransformPass(REMOVE_UNUSED_FUNCTIONS, options, projName, folderName, output, outputMessage); } -int SPF_ExpressionSubstitution(void*& context, int winHandler, short* options, short* projName, short* folderName, short*& output, - int*& outputSize, short*& outputMessage, int*& outputMessageSize) +int SPF_ExpressionSubstitution(void*& context, int winHandler, short* options, short* projName, short* folderName, string &output, string &outputMessage) { MessageManager::clearCache(); MessageManager::setWinHandler(winHandler); - return simpleTransformPass(SUBST_EXPR_RD_AND_UNPARSE, options, projName, folderName, output, outputSize, outputMessage, outputMessageSize); + return simpleTransformPass(SUBST_EXPR_RD_AND_UNPARSE, options, projName, folderName, output, outputMessage); } -int SPF_InsertDvmhRegions(void*& context, int winHandler, short* options, short* projName, short* folderName, short*& output, - int*& outputSize, short*& outputMessage, int*& outputMessageSize) +int SPF_InsertDvmhRegions(void*& context, int winHandler, short* options, short* projName, short* folderName, string &output, string &outputMessage) { MessageManager::clearCache(); MessageManager::setWinHandler(winHandler); ignoreArrayDistributeState = true; - return simpleTransformPass(INSERT_REGIONS, options, projName, folderName, output, outputSize, outputMessage, outputMessageSize); + return simpleTransformPass(INSERT_REGIONS, options, projName, folderName, output, outputMessage); } -int SPF_ResolveCommonBlockConflicts(void*& context, int winHandler, short* options, short* projName, short* folderName, short*& output, - int*& outputSize, short*& outputMessage, int*& outputMessageSize) +int SPF_ResolveCommonBlockConflicts(void*& context, int winHandler, short* options, short* projName, short* folderName, string &output, string &outputMessage) { MessageManager::clearCache(); MessageManager::setWinHandler(winHandler); ignoreArrayDistributeState = true; - return simpleTransformPass(FIX_COMMON_BLOCKS, options, projName, folderName, output, outputSize, outputMessage, outputMessageSize); + return simpleTransformPass(FIX_COMMON_BLOCKS, options, projName, folderName, output, outputMessage); } -int SPF_SharedMemoryParallelization(void*& context, int winHandler, short* options, short* projName, short* folderName, short*& output, - int*& outputSize, short*& outputMessage, int*& outputMessageSize) +int SPF_SharedMemoryParallelization(void*& context, int winHandler, short* options, short* projName, short* folderName, string &output, string &outputMessage) { MessageManager::clearCache(); MessageManager::setWinHandler(winHandler); ignoreArrayDistributeState = true; sharedMemoryParallelization = 1; - return simpleTransformPass(INSERT_PARALLEL_DIRS_NODIST, options, projName, folderName, output, outputSize, outputMessage, outputMessageSize, true); + return simpleTransformPass(INSERT_PARALLEL_DIRS_NODIST, options, projName, folderName, output, outputMessage, true); } -int SPF_InsertPrivateFromGUI(void*& context, int winHandler, short* options, short* projName, short* folderName, short*& output, - int*& outputSize, short*& outputMessage, int*& outputMessageSize) +int SPF_InsertPrivateFromGUI(void*& context, int winHandler, short* options, short* projName, short* folderName, string &output, string &outputMessage) { MessageManager::clearCache(); MessageManager::setWinHandler(winHandler); - return simpleTransformPass(INSERT_NO_DISTR_FLAGS_FROM_GUI, options, projName, folderName, output, outputSize, outputMessage, outputMessageSize); + return simpleTransformPass(INSERT_NO_DISTR_FLAGS_FROM_GUI, options, projName, folderName, output, outputMessage); } -int SPF_RemoveDeadCode(void*& context, int winHandler, short* options, short* projName, short* folderName, short*& output, - int*& outputSize, short*& outputMessage, int*& outputMessageSize) +int SPF_RemoveDeadCode(void*& context, int winHandler, short* options, short* projName, short* folderName, string &output, string &outputMessage) { MessageManager::clearCache(); MessageManager::setWinHandler(winHandler); - return simpleTransformPass(REMOVE_DEAD_CODE_AND_UNPARSE, options, projName, folderName, output, outputSize, outputMessage, outputMessageSize); + return simpleTransformPass(REMOVE_DEAD_CODE_AND_UNPARSE, options, projName, folderName, output, outputMessage); } -int SPF_InsertImplicitNone(void*& context, int winHandler, short* options, short* projName, short* folderName, short*& output, - int*& outputSize, short*& outputMessage, int*& outputMessageSize) +int SPF_InsertImplicitNone(void*& context, int winHandler, short* options, short* projName, short* folderName, string &output, string &outputMessage) { MessageManager::clearCache(); MessageManager::setWinHandler(winHandler); - return simpleTransformPass(SET_IMPLICIT_NONE, options, projName, folderName, output, outputSize, outputMessage, outputMessageSize); + return simpleTransformPass(SET_IMPLICIT_NONE, options, projName, folderName, output, outputMessage); } -int SPF_RenameIncludes(void*& context, int winHandler, short* options, short* projName, short* folderName, short*& output, - int*& outputSize, short*& outputMessage, int*& outputMessageSize) +int SPF_RenameIncludes(void*& context, int winHandler, short* options, short* projName, short* folderName, string &output, string &outputMessage) { MessageManager::clearCache(); MessageManager::setWinHandler(winHandler); - return simpleTransformPass(RENAME_INLCUDES, options, projName, folderName, output, outputSize, outputMessage, outputMessageSize); + return simpleTransformPass(RENAME_INLCUDES, options, projName, folderName, output, outputMessage); } static inline void convertBackSlash(char *str, int strL) @@ -1867,49 +1801,26 @@ static inline void convertBackSlash(char *str, int strL) } //TODO: need to extend 'outFileName' to vector -static int inline runModificationPass(passes passName, short* projName, short* folderName, - int& size, int*& sizes, short*& newFilesNames, short*& newFiles, - const string outFileName) +static int inline runModificationPass(passes passName, short* projName, short* folderName, vector> &newFiles, const string outFileName) { PASSES_DONE[passName] = 0; runPassesForVisualizer(projName, { passName }, folderName); //fill data - // size - число файлов для мод. - // sizes - размеры границ в буфере newFiles - // newFilesNames - имена файлов для мод., разд. '|' - // newFiles - буфер - + // newFiles: <имена файлов для мод, содержимое файла> string newFile; - - size = 1; - + if (SgFile::switchToFile(outFileName.c_str()) == -1) printInternalError(convertFileName(__FILE__).c_str(), __LINE__); newFile = unparseProjectToString(current_file, EXPAND_EXTRACT_PAR_REGION); - - sizes = new int[size + 1]; - newFilesNames = new short[outFileName.size()]; - newFiles = new short[newFile.size()]; - - allocated.insert(newFilesNames); - allocated.insert(newFiles); - allocatedInt.insert(sizes); - - sizes[0] = 0; - sizes[1] = sizes[0] + newFile.size(); - copyStringToShort(newFilesNames, outFileName); - copyStringToShort(newFiles, newFile); - - return (int)outFileName.size() + 1; + newFiles.push_back(make_pair(outFileName, newFile)); + return newFiles.size(); } extern tuple inData; -int SPF_ChangeSpfIntervals(void*& context, int winHandler, short *options, short *projName, short *folderName, short *&output, - int *&outputSize, short *&outputMessage, int *&outputMessageSize, - short *fileNameToMod, int *toModifyLines, - int &size, int *&sizes, short *&newFilesNames, short *&newFiles) +int SPF_ChangeSpfIntervals(void*& context, int winHandler, short *options, short *projName, short *folderName, string &output, string &outputMessage, + short *fileNameToMod, int *toModifyLines, vector> &newFiles) { MessageManager::clearCache(); MessageManager::setWinHandler(winHandler); @@ -1927,7 +1838,7 @@ int SPF_ChangeSpfIntervals(void*& context, int winHandler, short *options, short std::get<1>(inData) = toModifyLines[0]; std::get<2>(inData) = toModifyLines[1]; std::get<3>(inData) = toModifyLines[2]; - retCode = runModificationPass(EXPAND_EXTRACT_PAR_REGION, projName, folderName, size, sizes, newFilesNames, newFiles, file_c); + retCode = runModificationPass(EXPAND_EXTRACT_PAR_REGION, projName, folderName, newFiles, file_c); } catch (int ex) { @@ -1951,8 +1862,7 @@ int SPF_ChangeSpfIntervals(void*& context, int winHandler, short *options, short extern vector> inDataProc; int SPF_InlineProcedure(void*& context, int winHandler, short *options, short* projName, short* folderName, short* name, short* file, int line, - short*& output, int*& outputSize, short*& outputMessage, int*& outputMessageSize, - int& size, int*& sizes, short*& newFilesNames, short*& newFiles) + string &output, string &outputMessage, vector>& newFiles) { MessageManager::clearCache(); MessageManager::setWinHandler(winHandler); @@ -1968,7 +1878,7 @@ int SPF_InlineProcedure(void*& context, int winHandler, short *options, short* p convertBackSlash(file_c, tmp); inDataProc.push_back(std::make_tuple(name_c, file_c, line)); - retCode = runModificationPass(INLINE_PROCEDURES, projName, folderName, size, sizes, newFilesNames, newFiles, file_c); + retCode = runModificationPass(INLINE_PROCEDURES, projName, folderName, newFiles, file_c); } catch (int ex) { @@ -1992,8 +1902,7 @@ int SPF_InlineProcedure(void*& context, int winHandler, short *options, short* p extern pair inOnlyForloopOnPlace; int SPF_LoopUnionCurrent(void*& context, int winHandler, short* options, short* projName, short* folderName, short* file, int line, - short*& output, int*& outputSize, short*& outputMessage, int*& outputMessageSize, - int& size, int*& sizes, short*& newFilesNames, short*& newFiles) + string &output, string &outputMessage, vector> &newFiles) { MessageManager::clearCache(); MessageManager::setWinHandler(winHandler); @@ -2010,7 +1919,7 @@ int SPF_LoopUnionCurrent(void*& context, int winHandler, short* options, short* convertBackSlash(file_c, tmp); inOnlyForloopOnPlace = make_pair(file_c, line); - retCode = runModificationPass(LOOPS_COMBINER, projName, folderName, size, sizes, newFilesNames, newFiles, file_c); + retCode = runModificationPass(LOOPS_COMBINER, projName, folderName, newFiles, file_c); } catch (int ex) { @@ -2035,8 +1944,7 @@ int SPF_LoopUnionCurrent(void*& context, int winHandler, short* options, short* extern map>> inDataChains; extern set inDataChainsStart; int SPF_InlineProcedures(void*& context, int winHandler, short* options, short* projName, short* folderName, - short* names, short*& output, int*& outputSize, short*& outputMessage, int*& outputMessageSize, - int type) + short* names, string &output, string &outputMessage, int type) { MessageManager::clearCache(); MessageManager::setWinHandler(winHandler); @@ -2149,7 +2057,7 @@ int SPF_InlineProcedures(void*& context, int winHandler, short* options, short* retCode = -1; } - convertBuffers(outputMessage, outputMessageSize, output, outputSize); + convertBuffers(outputMessage, output); if (showDebug) printf("SAPFOR: return from DLL\n"); @@ -2160,7 +2068,7 @@ int SPF_InlineProcedures(void*& context, int winHandler, short* options, short* extern map>> filesToInclude; int SPF_InsertIncludesPass(void*& context, int winHandler, short *options, short *projName, short *folderName, char *visFilesToInclude, - short *&output, int *&outputSize, short *&outputMessage, int *&outputMessageSize) + string &output, string &outputMessage) { MessageManager::clearCache(); MessageManager::setWinHandler(winHandler); @@ -2196,20 +2104,19 @@ int SPF_InsertIncludesPass(void*& context, int winHandler, short *options, short } i += 2 * num; } - return simpleTransformPass(INSERT_INCLUDES, options, projName, folderName, output, outputSize, outputMessage, outputMessageSize); + return simpleTransformPass(INSERT_INCLUDES, options, projName, folderName, output, outputMessage); } -int SPF_LoopEndDoConverterPass(void*& context, int winHandler, short *options, short *projName, short *folderName, short *&output, int *&outputSize, short *&outputMessage, int *&outputMessageSize) +int SPF_LoopEndDoConverterPass(void*& context, int winHandler, short *options, short *projName, short *folderName, string &output, string &outputMessage) { MessageManager::clearCache(); MessageManager::setWinHandler(winHandler); - return simpleTransformPass(CONVERT_TO_ENDDO, options, projName, folderName, output, outputSize, outputMessage, outputMessageSize); + return simpleTransformPass(CONVERT_TO_ENDDO, options, projName, folderName, output, outputMessage); } extern map> gCovInfo; -int SPF_GetGCovInfo(void*& context, int winHandler, short *options, short *projName, short *&result, short *&output, int *&outputSize, - short *&outputMessage, int *&outputMessageSize) +int SPF_GetGCovInfo(void*& context, int winHandler, short *options, short *projName, string &result, string &output, string &outputMessage) { MessageManager::clearCache(); MessageManager::setWinHandler(winHandler); @@ -2243,10 +2150,8 @@ int SPF_GetGCovInfo(void*& context, int winHandler, short *options, short *projN json allGCov; allGCov["allGCov"] = gcov_array; - string resVal = allGCov.dump(); - - copyStringToShort(result, resVal); - retSize = (int)resVal.size(); + result = allGCov.dump(); + retSize = result.size(); } catch (int ex) { @@ -2263,7 +2168,7 @@ int SPF_GetGCovInfo(void*& context, int winHandler, short *options, short *projN retSize = -1; } - convertBuffers(outputMessage, outputMessageSize, output, outputSize); + convertBuffers(outputMessage, output); if (showDebug) printf("SAPFOR: return from DLL\n"); @@ -2273,22 +2178,20 @@ int SPF_GetGCovInfo(void*& context, int winHandler, short *options, short *projN } extern void deleteAllAllocatedData(bool enable); +extern set allocated; + void SPF_deleteAllAllocatedData(void*& context) { MessageManager::clearCache(); for (auto& elem : allocated) - delete[]elem; - for (auto& elem : allocatedInt) - delete[]elem; + delete []elem; allocated.clear(); - allocatedInt.clear(); + deleteAllAllocatedData(true); } -static wstring finishJniCall(int retCode, const short* result, const short* output, const int* outputSize, - const short* outputMessage, const int* outputMessageSize, const short* predictorStats = NULL); void createNeededException() { if (passDone == 2) @@ -2306,12 +2209,13 @@ static short* toShort(const char* str) return arr; } -static wstring toWstring(const short* array, int size) +template +static STR toString(const short* array, int size) { if (size == 0) - return L""; + return STR(); - wstring str = L""; + STR str; for (int z = 0; z < size; ++z) str += array[z]; return str; @@ -2332,23 +2236,40 @@ static wstring toWstring(const int* array, int size) return str; } - static void codeInfo(wstring& total, const wstring& toAdd) { total += std::to_wstring(toAdd.size()) + L" " + toAdd; } -static wstring finishJniCall(int retCode, const short* result, const short* output, const int* outputSize, - const short* outputMessage, const int* outputMessageSize, const short* predictorStats) -{ - wstring codedResult = L""; +static wstring finishJniCall(int retCode, const string& result, const string& output, const string& outputMessage, + const string *predictorStats = nullptr, const vector>* newFiles = nullptr) +{ + json results; + results["errorCode"] = retCode; + results["result"] = result; + results["output"] = output; + results["outputMessage"] = outputMessage; + results["predictorStats"] = predictorStats ? *predictorStats : ""; - codedResult += std::to_wstring(retCode) + L" "; - codeInfo(codedResult, toWstring(result, (result) ? strLen(result) : 0)); - codeInfo(codedResult, toWstring(output, (outputSize) ? (outputSize[0]) : 0)); - codeInfo(codedResult, toWstring(outputMessage, (outputMessageSize) ? (outputMessageSize[0]) : 0)); - codeInfo(codedResult, toWstring(predictorStats, (predictorStats) ? strLen(predictorStats) : 0)); + json filesToModify = json::array(); + if (newFiles) + { + for (auto& [name, text] : *newFiles) + { + json newFile; + newFile["name"] = name; + newFile["text"] = text; + filesToModify.push_back(newFile); + } + } + results["files"] = filesToModify; + + string resVal = results.dump(); + short* resValS; + copyStringToShort(resValS, resVal); + + wstring codedResult = toString(resValS, resVal.size()); return codedResult; } @@ -2357,8 +2278,8 @@ static wstring finishJniCall(const int size, const int* sizes, const short* newF wstring codedResult = L""; codeInfo(codedResult, toWstring(sizes, (sizes) ? (size + 1) : 0)); - codeInfo(codedResult, toWstring(newFilesNames, (newFilesNames) ? strLen(newFilesNames) : 0)); - codeInfo(codedResult, toWstring(newFiles, (newFiles) ? strLen(newFiles) : 0)); + codeInfo(codedResult, toString(newFilesNames, (newFilesNames) ? strLen(newFilesNames) : 0)); + codeInfo(codedResult, toString(newFiles, (newFiles) ? strLen(newFiles) : 0)); return codedResult; } @@ -2406,8 +2327,7 @@ const wstring Sapfor_RunAnalysis(const char* analysisName_c, const char* options const string whichRun = analysisName_c; int retCode = 0; - short* result = NULL, * output = NULL, * outputMessage = NULL; - int* outputSize = NULL, * outputMessageSize = NULL; + string result, output, outputMessage; short* projSh = toShort(projName_c); short* optSh = toShort(options_c); @@ -2415,33 +2335,33 @@ const wstring Sapfor_RunAnalysis(const char* analysisName_c, const char* options try { if (whichRun == "SPF_GetGraphLoops") - retCode = SPF_GetGraphLoops(context, winHandler, optSh, projSh, result, output, outputSize, outputMessage, outputMessageSize); + retCode = SPF_GetGraphLoops(context, winHandler, optSh, projSh, result, output, outputMessage); else if (whichRun == "SPF_GetGraphFunctions") - retCode = SPF_GetGraphFunctions(context, winHandler, optSh, projSh, result, output, outputSize, outputMessage, outputMessageSize); + retCode = SPF_GetGraphFunctions(context, winHandler, optSh, projSh, result, output, outputMessage); else if (whichRun == "SPF_GetGraphFunctionPositions") - retCode = SPF_GetGraphFunctionPositions(context, winHandler, optSh, projSh, result, output, outputSize, outputMessage, outputMessageSize); + retCode = SPF_GetGraphFunctionPositions(context, winHandler, optSh, projSh, result, output, outputMessage); else if (whichRun == "SPF_GetArrayDistribution") - retCode = SPF_GetArrayDistribution(context, winHandler, optSh, projSh, result, output, outputSize, outputMessage, outputMessageSize, 0); + retCode = SPF_GetArrayDistribution(context, winHandler, optSh, projSh, result, output, outputMessage, 0); else if (whichRun == "SPF_GetArrayDistributionOnlyAnalysis") - retCode = SPF_GetArrayDistribution(context, winHandler, optSh, projSh, result, output, outputSize, outputMessage, outputMessageSize, 1); + retCode = SPF_GetArrayDistribution(context, winHandler, optSh, projSh, result, output, outputMessage, 1); else if (whichRun == "SPF_GetArrayDistributionOnlyRegions") - retCode = SPF_GetArrayDistribution(context, winHandler, optSh, projSh, result, output, outputSize, outputMessage, outputMessageSize, 2); + retCode = SPF_GetArrayDistribution(context, winHandler, optSh, projSh, result, output, outputMessage, 2); else if (whichRun == "SPF_SetFunctionsToInclude") - retCode = SPF_SetFunctionsToInclude(context, winHandler, optSh, projSh, result, output, outputSize, outputMessage, outputMessageSize); + retCode = SPF_SetFunctionsToInclude(context, winHandler, optSh, projSh, result, output, outputMessage); else if (whichRun == "SPF_GetAllDeclaratedArrays") - retCode = SPF_GetAllDeclaratedArrays(context, winHandler, optSh, projSh, result, output, outputSize, outputMessage, outputMessageSize); + retCode = SPF_GetAllDeclaratedArrays(context, winHandler, optSh, projSh, result, output, outputMessage); else if (whichRun == "SPF_GetFileLineInfo") - retCode = SPF_GetFileLineInfo(context, winHandler, optSh, projSh, result, output, outputSize, outputMessage, outputMessageSize); + retCode = SPF_GetFileLineInfo(context, winHandler, optSh, projSh, result, output, outputMessage); else if (whichRun == "SPF_GetIncludeDependencies") - retCode = SPF_GetIncludeDependencies(context, winHandler, optSh, projSh, result, output, outputSize, outputMessage, outputMessageSize); + retCode = SPF_GetIncludeDependencies(context, winHandler, optSh, projSh, result, output, outputMessage); else if (whichRun == "SPF_GetGCovInfo") - retCode = SPF_GetGCovInfo(context, winHandler, optSh, projSh, result, output, outputSize, outputMessage, outputMessageSize); + retCode = SPF_GetGCovInfo(context, winHandler, optSh, projSh, result, output, outputMessage); else if (whichRun == "SPF_ParseFiles") - retCode = SPF_ParseFiles(context, winHandler, optSh, projSh, output, outputSize, outputMessage, outputMessageSize); + retCode = SPF_ParseFiles(context, winHandler, optSh, projSh, output, outputMessage); else if (whichRun == "SPF_ParseFilesWithOrder") - retCode = SPF_ParseFilesWithOrder(context, winHandler, optSh, projSh, result, output, outputSize, outputMessage, outputMessageSize); + retCode = SPF_ParseFilesWithOrder(context, winHandler, optSh, projSh, result, output, outputMessage); else if (whichRun == "SPF_StatisticAnalyzer") - retCode = SPF_StatisticAnalyzer(context, winHandler, optSh, projSh, output, outputSize, outputMessage, outputMessageSize); + retCode = SPF_StatisticAnalyzer(context, winHandler, optSh, projSh, output, outputMessage); else if (whichRun == "SPF_GetPassesStateStr") retCode = SPF_GetPassesStateStr(context, result); else if (whichRun == "SPF_GetVersionAndBuildDate") @@ -2453,9 +2373,9 @@ const wstring Sapfor_RunAnalysis(const char* analysisName_c, const char* options else if (whichRun == "SPF_deleteAllAllocatedData") SPF_deleteAllAllocatedData(context); else if (whichRun == "SPF_GetArrayLinks") - retCode = SPF_GetArrayLinks(context, winHandler, optSh, projSh, result, output, outputSize, outputMessage, outputMessageSize); + retCode = SPF_GetArrayLinks(context, winHandler, optSh, projSh, result, output, outputMessage); else if (whichRun == "SPF_GetMaxMinBlockDistribution") - retCode = SPF_GetMaxMinBlockDistribution(context, winHandler, optSh, projSh, result, output, outputSize, outputMessage, outputMessageSize); + retCode = SPF_GetMaxMinBlockDistribution(context, winHandler, optSh, projSh, result, output, outputMessage); else if (whichRun == "SPF_СhangeDirectory") // russian C { if (options_c == NULL) @@ -2488,7 +2408,7 @@ const wstring Sapfor_RunAnalysis(const char* analysisName_c, const char* options catch (...) { printf("SAPFOR: wrong exit from main DLL block for JAVA\n"); - convertBuffers(outputMessage, outputMessageSize, output, outputSize); + convertBuffers(outputMessage, output); retCode = -1004; } @@ -2496,7 +2416,7 @@ const wstring Sapfor_RunAnalysis(const char* analysisName_c, const char* options delete[]optSh; fflush(NULL); - const wstring codedResult = finishJniCall(retCode, result, output, outputSize, outputMessage, outputMessageSize); + const wstring codedResult = finishJniCall(retCode, result, output, outputMessage); return codedResult; } @@ -2506,9 +2426,7 @@ const wstring Sapfor_RunTransformation(const char* transformName_c, const char* const string whichRun = transformName_c; int retCode = 0; - short* result = NULL, * output = NULL, * outputMessage = NULL; - int* outputSize = NULL, * outputMessageSize = NULL; - short* predStats = NULL; + string result, output, outputMessage, predStats; short* projSh = toShort(projName_c); short* optSh = toShort(options_c); @@ -2516,71 +2434,71 @@ const wstring Sapfor_RunTransformation(const char* transformName_c, const char* short* addOpt = toShort(addOpt_c); if (whichRun == "SPF_CorrectCodeStylePass") - retCode = SPF_CorrectCodeStylePass(context, winHandler, optSh, projSh, fold, output, outputSize, outputMessage, outputMessageSize); + retCode = SPF_CorrectCodeStylePass(context, winHandler, optSh, projSh, fold, output, outputMessage); else if (whichRun == "SPF_RemoveOmpDirectives") - retCode = SPF_RemoveOmpDirectives(context, winHandler, optSh, projSh, fold, output, outputSize, outputMessage, outputMessageSize); + retCode = SPF_RemoveOmpDirectives(context, winHandler, optSh, projSh, fold, output, outputMessage); else if (whichRun == "SPF_RemoveDvmDirectives") - retCode = SPF_RemoveDvmDirectives(context, winHandler, optSh, projSh, fold, output, outputSize, outputMessage, outputMessageSize); + retCode = SPF_RemoveDvmDirectives(context, winHandler, optSh, projSh, fold, output, outputMessage); else if (whichRun == "SPF_RemoveSpfDirectives") - retCode = SPF_RemoveSpfDirectives(context, winHandler, optSh, projSh, fold, output, outputSize, outputMessage, outputMessageSize); + retCode = SPF_RemoveSpfDirectives(context, winHandler, optSh, projSh, fold, output, outputMessage); else if (whichRun == "SPF_RemoveDvmDirectivesToComments") - retCode = SPF_RemoveDvmDirectivesToComments(context, winHandler, optSh, projSh, fold, output, outputSize, outputMessage, outputMessageSize); + retCode = SPF_RemoveDvmDirectivesToComments(context, winHandler, optSh, projSh, fold, output, outputMessage); else if (whichRun == "SPF_RemoveComments") - retCode = SPF_RemoveComments(context, winHandler, optSh, projSh, fold, output, outputSize, outputMessage, outputMessageSize); + retCode = SPF_RemoveComments(context, winHandler, optSh, projSh, fold, output, outputMessage); else if (whichRun == "SPF_InsertIncludesPass") - retCode = SPF_InsertIncludesPass(context, winHandler, optSh, projSh, fold, (char*)addOpt_c, output, outputSize, outputMessage, outputMessageSize); + retCode = SPF_InsertIncludesPass(context, winHandler, optSh, projSh, fold, (char*)addOpt_c, output, outputMessage); else if (whichRun == "SPF_ResolveParallelRegionConflicts") - retCode = SPF_ResolveParallelRegionConflicts(context, winHandler, optSh, projSh, fold, output, outputSize, outputMessage, outputMessageSize); + retCode = SPF_ResolveParallelRegionConflicts(context, winHandler, optSh, projSh, fold, output, outputMessage); else if (whichRun == "SPF_RemoveDistArraysFromIO") - retCode = SPF_RemoveDistArraysFromIO(context, winHandler, optSh, projSh, fold, output, outputSize, outputMessage, outputMessageSize); + retCode = SPF_RemoveDistArraysFromIO(context, winHandler, optSh, projSh, fold, output, outputMessage); else if (whichRun == "SPF_LoopEndDoConverterPass") - retCode = SPF_LoopEndDoConverterPass(context, winHandler, optSh, projSh, fold, output, outputSize, outputMessage, outputMessageSize); + retCode = SPF_LoopEndDoConverterPass(context, winHandler, optSh, projSh, fold, output, outputMessage); else if (whichRun == "SPF_LoopFission") - retCode = SPF_LoopFission(context, winHandler, optSh, projSh, fold, output, outputSize, outputMessage, outputMessageSize); + retCode = SPF_LoopFission(context, winHandler, optSh, projSh, fold, output, outputMessage); else if (whichRun == "SPF_LoopUnion") - retCode = SPF_LoopUnion(context, winHandler, optSh, projSh, fold, output, outputSize, outputMessage, outputMessageSize); + retCode = SPF_LoopUnion(context, winHandler, optSh, projSh, fold, output, outputMessage); else if (whichRun == "SPF_LoopUnrolling") - retCode = SPF_LoopUnrolling(context, winHandler, optSh, projSh, fold, output, outputSize, outputMessage, outputMessageSize); + retCode = SPF_LoopUnrolling(context, winHandler, optSh, projSh, fold, output, outputMessage); else if (whichRun == "SPF_PrivateExpansion") - retCode = SPF_PrivateExpansion(context, winHandler, optSh, projSh, fold, output, outputSize, outputMessage, outputMessageSize); + retCode = SPF_PrivateExpansion(context, winHandler, optSh, projSh, fold, output, outputMessage); else if (whichRun == "SPF_PrivateShrinking") - retCode = SPF_PrivateShrinking(context, winHandler, optSh, projSh, fold, output, outputSize, outputMessage, outputMessageSize); + retCode = SPF_PrivateShrinking(context, winHandler, optSh, projSh, fold, output, outputMessage); else if (whichRun == "SPF_PrivateRemoving") - retCode = SPF_PrivateRemoving(context, winHandler, optSh, projSh, fold, output, outputSize, outputMessage, outputMessageSize); + retCode = SPF_PrivateRemoving(context, winHandler, optSh, projSh, fold, output, outputMessage); else if (whichRun == "SPF_CreateIntervalsTree") - retCode = SPF_CreateIntervalsTree(context, winHandler, optSh, projSh, fold, output, outputSize, outputMessage, outputMessageSize); + retCode = SPF_CreateIntervalsTree(context, winHandler, optSh, projSh, fold, output, outputMessage); else if (whichRun == "SPF_RemoveDvmIntervals") - retCode = SPF_RemoveDvmIntervals(context, winHandler, optSh, projSh, fold, output, outputSize, outputMessage, outputMessageSize); + retCode = SPF_RemoveDvmIntervals(context, winHandler, optSh, projSh, fold, output, outputMessage); else if (whichRun == "SPF_DuplicateFunctionChains") - retCode = SPF_DuplicateFunctionChains(context, winHandler, optSh, projSh, fold, output, outputSize, outputMessage, outputMessageSize); + retCode = SPF_DuplicateFunctionChains(context, winHandler, optSh, projSh, fold, output, outputMessage); else if (whichRun == "SPF_InlineProcedures") - retCode = SPF_InlineProcedures(context, winHandler, optSh, projSh, fold, addOpt, output, outputSize, outputMessage, outputMessageSize, 0); + retCode = SPF_InlineProcedures(context, winHandler, optSh, projSh, fold, addOpt, output, outputMessage, 0); else if (whichRun == "SPF_InlineProceduresH") - retCode = SPF_InlineProcedures(context, winHandler, optSh, projSh, fold, addOpt, output, outputSize, outputMessage, outputMessageSize, 1); + retCode = SPF_InlineProcedures(context, winHandler, optSh, projSh, fold, addOpt, output, outputMessage, 1); else if (whichRun == "SPF_CreateCheckpoints") - retCode = SPF_CreateCheckpoints(context, winHandler, optSh, projSh, fold, output, outputSize, outputMessage, outputMessageSize); + retCode = SPF_CreateCheckpoints(context, winHandler, optSh, projSh, fold, output, outputMessage); else if (whichRun == "SPF_ConvertStructures") - retCode = SPF_ConvertStructures(context, winHandler, optSh, projSh, fold, output, outputSize, outputMessage, outputMessageSize); + retCode = SPF_ConvertStructures(context, winHandler, optSh, projSh, fold, output, outputMessage); else if (whichRun == "SPF_InitDeclsWithZero") - retCode = SPF_InitDeclsWithZero(context, winHandler, optSh, projSh, fold, output, outputSize, outputMessage, outputMessageSize); + retCode = SPF_InitDeclsWithZero(context, winHandler, optSh, projSh, fold, output, outputMessage); else if (whichRun == "SPF_RemoveUnusedFunctions") - retCode = SPF_RemoveUnusedFunctions(context, winHandler, optSh, projSh, fold, output, outputSize, outputMessage, outputMessageSize); + retCode = SPF_RemoveUnusedFunctions(context, winHandler, optSh, projSh, fold, output, outputMessage); else if (whichRun == "SPF_ExpressionSubstitution") - retCode = SPF_ExpressionSubstitution(context, winHandler, optSh, projSh, fold, output, outputSize, outputMessage, outputMessageSize); + retCode = SPF_ExpressionSubstitution(context, winHandler, optSh, projSh, fold, output, outputMessage); else if (whichRun == "SPF_InsertDvmhRegions") - retCode = SPF_InsertDvmhRegions(context, winHandler, optSh, projSh, fold, output, outputSize, outputMessage, outputMessageSize); + retCode = SPF_InsertDvmhRegions(context, winHandler, optSh, projSh, fold, output, outputMessage); else if (whichRun == "SPF_ResolveCommonBlockConflicts") - retCode = SPF_ResolveCommonBlockConflicts(context, winHandler, optSh, projSh, fold, output, outputSize, outputMessage, outputMessageSize); + retCode = SPF_ResolveCommonBlockConflicts(context, winHandler, optSh, projSh, fold, output, outputMessage); else if (whichRun == "SPF_SharedMemoryParallelization") - retCode = SPF_SharedMemoryParallelization(context, winHandler, optSh, projSh, fold, output, outputSize, outputMessage, outputMessageSize); + retCode = SPF_SharedMemoryParallelization(context, winHandler, optSh, projSh, fold, output, outputMessage); else if (whichRun == "SPF_InsertPrivateFromGUI") - retCode = SPF_InsertPrivateFromGUI(context, winHandler, optSh, projSh, fold, output, outputSize, outputMessage, outputMessageSize); + retCode = SPF_InsertPrivateFromGUI(context, winHandler, optSh, projSh, fold, output, outputMessage); else if (whichRun == "SPF_RemoveDeadCode") - retCode = SPF_RemoveDeadCode(context, winHandler, optSh, projSh, fold, output, outputSize, outputMessage, outputMessageSize); + retCode = SPF_RemoveDeadCode(context, winHandler, optSh, projSh, fold, output, outputMessage); else if (whichRun == "SPF_InsertImplicitNone") - retCode = SPF_InsertImplicitNone(context, winHandler, optSh, projSh, fold, output, outputSize, outputMessage, outputMessageSize); + retCode = SPF_InsertImplicitNone(context, winHandler, optSh, projSh, fold, output, outputMessage); else if (whichRun == "SPF_RenameIncludes") - retCode = SPF_RenameIncludes(context, winHandler, optSh, projSh, fold, output, outputSize, outputMessage, outputMessageSize); + retCode = SPF_RenameIncludes(context, winHandler, optSh, projSh, fold, output, outputMessage); else if (whichRun == "SPF_CreateParallelVariant") { vector splited; @@ -2591,7 +2509,7 @@ const wstring Sapfor_RunTransformation(const char* transformName_c, const char* int varLen = -1; fillInfo(splited, variants, varLen); - retCode = SPF_CreateParallelVariant(context, winHandler, optSh, projSh, fold, variants, &varLen, output, outputSize, outputMessage, outputMessageSize, predStats); + retCode = SPF_CreateParallelVariant(context, winHandler, optSh, projSh, fold, variants, &varLen, output, outputMessage, predStats); if (retCode > 0) delete[]variants; @@ -2609,7 +2527,7 @@ const wstring Sapfor_RunTransformation(const char* transformName_c, const char* delete[]addOpt; fflush(NULL); - const wstring codedResult = finishJniCall(retCode, result, output, outputSize, outputMessage, outputMessageSize, predStats); + const wstring codedResult = finishJniCall(retCode, result, output, outputMessage, &predStats, nullptr); return codedResult; } @@ -2620,10 +2538,8 @@ const wstring Sapfor_RunModification(const char* modifyName_c, const char* optio const string whichRun = modifyName_c; int retCode = 0; - short* result = NULL, * output = NULL, * outputMessage = NULL; - int* outputSize = NULL, * outputMessageSize = NULL; - int size = 0, * sizes = NULL; - short* newFilesNames = NULL, * newFiles = NULL; + string result, output, outputMessage; + vector> newFiles; short* projSh = toShort(projName_c); short* optSh = toShort(options_c); @@ -2645,7 +2561,7 @@ const wstring Sapfor_RunModification(const char* modifyName_c, const char* optio int64_t* modify = NULL; fillInfo(addOpt2_c, modify); - retCode = SPF_ModifyArrayDistribution(context, winHandler, optSh, projSh, output, outputSize, outputMessage, outputMessageSize, regId, modify); + retCode = SPF_ModifyArrayDistribution(context, winHandler, optSh, projSh, output, outputMessage, regId, modify); delete[]modify; } else if (whichRun == "SPF_InlineProcedure") @@ -2657,7 +2573,7 @@ const wstring Sapfor_RunModification(const char* modifyName_c, const char* optio { vector tmpPar = { toShort(splitS[0].c_str()), toShort(splitS[1].c_str()) }; int line = std::stoi(addOpt2_c); - retCode = SPF_InlineProcedure(context, winHandler, optSh, projSh, fold, tmpPar[0], tmpPar[1], line, output, outputSize, outputMessage, outputMessageSize, size, sizes, newFiles, newFilesNames); + retCode = SPF_InlineProcedure(context, winHandler, optSh, projSh, fold, tmpPar[0], tmpPar[1], line, output, outputMessage, newFiles); delete[] tmpPar[0]; delete[] tmpPar[1]; @@ -2669,7 +2585,7 @@ const wstring Sapfor_RunModification(const char* modifyName_c, const char* optio { short* file = toShort(addOpt1_c); int line = std::stoi(addOpt2_c); - retCode = SPF_LoopUnionCurrent(context, winHandler, optSh, projSh, fold, file, line, output, outputSize, outputMessage, outputMessageSize, size, sizes, newFiles, newFilesNames); + retCode = SPF_LoopUnionCurrent(context, winHandler, optSh, projSh, fold, file, line, output, outputMessage, newFiles); delete[]file; } else if (whichRun == "SPF_ChangeSpfIntervals") @@ -2677,7 +2593,7 @@ const wstring Sapfor_RunModification(const char* modifyName_c, const char* optio short* fileNameToMod = toShort(addOpt1_c); int* toModifyLines = NULL; fillInfo(addOpt2_c, toModifyLines); - retCode = SPF_ChangeSpfIntervals(context, winHandler, optSh, projSh, fold, output, outputSize, outputMessage, outputMessageSize, fileNameToMod, toModifyLines, size, sizes, newFiles, newFilesNames); + retCode = SPF_ChangeSpfIntervals(context, winHandler, optSh, projSh, fold, output, outputMessage, fileNameToMod, toModifyLines, newFiles); delete[]fileNameToMod; delete[]toModifyLines; } @@ -2697,10 +2613,9 @@ const wstring Sapfor_RunModification(const char* modifyName_c, const char* optio delete[]fold; fflush(NULL); - convertBuffers(outputMessage, outputMessageSize, output, outputSize); - wstring codedResult = finishJniCall(retCode, result, output, outputSize, outputMessage, outputMessageSize); - codedResult += finishJniCall(size, sizes, newFilesNames, newFiles); - + convertBuffers(outputMessage, output); + const wstring codedResult = finishJniCall(retCode, result, output, outputMessage, nullptr, &newFiles); + //wprintf(L"%s\n", codedResult.c_str()); return codedResult; }