fixed shared memory parallelization, moved messages to single file

This commit is contained in:
ALEXks
2025-06-14 12:50:04 +03:00
parent 10636427ed
commit 9e777ceeab
8 changed files with 133 additions and 70 deletions

View File

@@ -144,10 +144,116 @@ static int decodeMessage(const string& message, vector<string>& pars, int &winH,
return 0;
}
void sendMessage_1lvl(const wstring& toSend) { MessageManager::sendFirstLvl (toSend); }
void sendMessage_2lvl(const wstring& toSend) { MessageManager::sendSecondLvl(toSend); }
static void sendMessage_1lvl(const wstring& toSend) { MessageManager::sendFirstLvl (toSend); }
static void sendMessage_2lvl(const wstring& toSend) { MessageManager::sendSecondLvl(toSend); }
void sendMessage_progress(const wstring& toSend) { MessageManager::sendProgress (toSend); }
void sendMessage_1lvl(int kind, ...)
{
va_list list;
va_start(list, kind);
if (kind == 0)
{
int iters = va_arg(list, int);
#ifdef _WIN32
sendMessage_1lvl(L"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> " + std::to_wstring(iters) + L" <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
#else
sendMessage_1lvl(L"running " + std::to_wstring(iters) + L" iteration of syntax analisys");
#endif
}
else if (kind == 1)
{
string str = va_arg(list, string);
#ifdef _WIN32
sendMessage_1lvl(wstring(L"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> '") + wstring(str.begin(), str.end()) + L"'");
#else
sendMessage_1lvl(wstring(L"running pass '") + wstring(str.begin(), str.end()) + L"'");
#endif
}
va_end(list);
}
void sendMessage_2lvl(int kind, ...)
{
va_list list;
va_start(list, kind);
if (kind == 0)
{
bool isFunction = va_arg(list, int);
string fName = va_arg(list, string);
#if _WIN32
if (isFunction)
sendMessage_2lvl(wstring(L"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> '") + to_wstring(fName) + L"'");
else
sendMessage_2lvl(wstring(L"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> '") + to_wstring(fName) + L"'");
#else
if (isFunction)
sendMessage_2lvl(wstring(L"processing function '") + wstring(fName.begin(), fName.end()) + L"'");
else
sendMessage_2lvl(wstring(L"processing module '") + wstring(fName.begin(), fName.end()) + L"'");
#endif
}
else if (kind == 1)
{
int idx = va_arg(list, int);
int all = va_arg(list, int);
#ifdef _WIN32
sendMessage_2lvl(wstring(L"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> ") + std::to_wstring(idx) + L"/" + std::to_wstring(all));
#else
sendMessage_2lvl(wstring(L"processing loop ") + std::to_wstring(idx) + L"/" + std::to_wstring(all));
#endif
}
else if (kind == 2)
{
sendMessage_2lvl(L"");
}
else if (kind == 3)
{
string file = va_arg(list, string);
#ifdef _WIN32
sendMessage_2lvl(L" <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> '" + to_wstring(file) + L"'");
#else
sendMessage_2lvl(L" processing file '" + to_wstring(file) + L"'");
#endif
}
else if (kind == 4)
{
int k = va_arg(list, int);
int all = va_arg(list, int);
#if _WIN32
wstring treeM = L"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> " + std::to_wstring(k + 1) + L"/" + std::to_wstring(all);
#else
wstring treeM = L"conflict resolution, processing group " + std::to_wstring(k + 1) + L"/" + std::to_wstring(all);
#endif
sendMessage_2lvl(treeM);
}
else if (kind == 5)
{
int z = va_arg(list, int);
int all = va_arg(list, int);
#ifdef _WIN32
wstring treeM = L"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> " + std::to_wstring(z + 1) + L"/" + std::to_wstring(all);
#else
wstring treeM = L"conflict resolution, processing array " + std::to_wstring(z + 1) + L"/" + std::to_wstring(all);
#endif
sendMessage_2lvl(treeM);
}
else if (kind == 6)
{
string funcName = va_arg(list, string);
#ifdef _WIN32
sendMessage_2lvl(wstring(L"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> '") + to_wstring(funcName) + L"'");
#else
sendMessage_2lvl(wstring(L"inlinig of function '") + to_wstring(funcName) + L"'");
#endif
}
va_end(list);
}
static string utf8_encode(const wstring& wstr)
{
if (wstr.empty())

View File

@@ -32,7 +32,8 @@ public:
static int init();
};
void sendMessage_1lvl(const std::wstring& toSend);
void sendMessage_2lvl(const std::wstring& toSend);
void sendMessage_1lvl(int kind, ...);
void sendMessage_2lvl(int kind, ...);
void sendMessage_progress(const std::wstring& toSend);
unsigned int GetPid();