Print loaded files and errors, enable loading and searching

This commit is contained in:
Krzosa Karol
2024-07-06 09:51:39 +02:00
parent e3a176b2f9
commit 22828c9d23
7 changed files with 173 additions and 94 deletions

View File

@@ -1,30 +1,30 @@
Array<String> Matches = {};
char Prompt[256];
std::mutex SearchThreadArrayMutex;
bool SearchThreadStopSearching;
int64_t SearchThreadStopSearching;
WORK_FUNCTION(SearchForMatchesWork) {
if (Prompt[0] == 0) return;
int64_t search_thread_stop_searching = SearchThreadStopSearching;
SearchThreadArrayMutex.lock();
Matches.clear();
SearchThreadArrayMutex.unlock();
String buffer = {(char *)XArena.data, (int64_t)XArena.len};
String buffer = XGetArenaString();
String find = Prompt;
int64_t index = 0;
while (Seek(buffer, find, &index, SeekFlag_IgnoreCase)) {
String found = {buffer.data + index, find.len};
Matches.add(found);
Matches.bounded_add(found);
buffer = buffer.skip(index + find.len);
if (SearchThreadStopSearching) return;
if (search_thread_stop_searching != SearchThreadStopSearching) break;
}
}
void StartSearchingForMatches() {
SearchThreadStopSearching = true;
WaitUntilCompletion(&MainWorkQueue);
SearchThreadStopSearching = false;
SearchThreadStopSearching += 1;
PushWork(&MainWorkQueue, NULL, SearchForMatchesWork);
}
@@ -37,3 +37,7 @@ Array<String> LockSearchResults() {
void UnlockSearchResults() {
SearchThreadArrayMutex.unlock();
}
void InitSearch() {
Matches.reserve(100000);
}