void BoyerMooreSearch::FindNextWorker(SearchParams* searchParams) { const char* text = searchParams->TextStart; int textLen = searchParams->TextLength; if (searchParams->MatchStart != nullptr) { text = searchParams->MatchStart + searchParams->MatchLength; // TODO(rpaquay): 2GB Limit textLen = (int)(searchParams->TextStart + searchParams->TextLength - text); } searchParams->MatchStart = (const char*)boyer_moore_algo( (const uint8_t*)text, textLen, (const uint8_t*)pattern_, patternLen_, matchCase_, delta1_, delta2_); if (searchParams->MatchStart != nullptr) { searchParams->MatchLength = patternLen_; } }
const char *BoyerMooreSearch::Search(const char *text, int textLen) { return (const char*)boyer_moore_algo((const uint8_t*)text, textLen, (const uint8_t*)pattern_, patternLen_, matchCase_, delta1_, delta2_); }