#pragma once #include #include #include #include #include struct Messages; struct DataDirective; namespace Distribution { class Array; class ArrayAccessInfo; template class Arrays; } namespace DIST = Distribution; std::string OnlyExt(const char *filename); std::string OnlyName(const char *filename); std::string FullNameWithExt(const char* filename); void printHelp(const char **passNames, const int lastPass); void convertToLower(std::string &str); void convertToUpper(std::string &str); void printVersion(const std::string = ""); const std::string printVersionAsFortranComm(); std::string convertFileName(const char *file); void printBlanks(const int sizeOfBlank, const int countOfBlanks); 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 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); std::string splitDirective(const std::string &in); std::string splitDirectiveFull(const std::string &in_); void splitString(const std::string &strIn, const char delim, std::vector &result, bool withQuotes = false); void splitString(const std::wstring& strIn, const char delim, std::vector& result, bool withQuotes = false); bool isSPF_comment(const std::string& bufStr); bool isDVM_comment(const std::string& bufStr); void sortFilesBySize(const char *proj_name); void uniteVectors(const std::vector, std::vector>>> &first, const std::vector, std::vector>>> &second, std::vector, std::vector>>> &result); void deletePointerAllocatedData(bool delLocal = false); void startLocalColletion(); void finishLocalColletion(); void deleteLeaks(); unsigned getUniqArrayId(); bool isAllRulesEqualWithoutArray(const std::vector>>> &allRules); bool isAllRulesEqual(const std::vector>>> &allRules); bool isAllRulesEqual(const std::vector>> &allRules); bool isAllRulesEqual(const std::vector> &allRules); int getNextNegativeLineNumber(); void findAndReplaceDimentions(std::vector>> &rule, const DIST::Arrays &allArrays); const std::set getExcludedModules(); extern "C" void removeFromCollection(void *pointer); extern "C" void addToCollection(const int line, const char *file, void *pointer, int type); std::vector findLinksBetweenArrays(DIST::Array *from, DIST::Array *to, const uint64_t regionId, bool withCheck = true); #ifdef _WIN32 void printStackTrace(); #endif template objT& getObjectForFileFromMap(const char *fileName, std::map &mapObject); bool isMpiFunction(const std::string& func); std::map createMapOfArrayAccess(const std::map, std::pair> &declaredArrays); std::string readFileToStr(const std::string& name); void writeFileFromStr(const std::string& name, const std::string& data); std::pair, std::vector> splitCommandLineForParse(char** argv, int argc, bool& isInline); std::string getClearName(const std::string& in); std::wstring fixedLongFormat(const wchar_t* old); std::map sortArraysByName(const std::set& toSort); bool createDirectory(const std::string& name); std::vector splitAndArgvCreate(const std::string& options); std::set fillDistributedArraysD(const DataDirective& dataDirectives, const std::map>& tableOfUniqNamesByArray, const std::map>& arrayLinksByFuncCalls, bool onlyCommon = false); 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); template inline T gcd(T a, T b) { while (a != b) { if (a > b) a = a - b; else b = b - a; } return a; }