Print loaded files and errors, enable loading and searching
This commit is contained in:
@@ -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);
|
||||
}
|
||||
Reference in New Issue
Block a user