Lines Matching refs:subject

55 // independently of subject and pattern char size.
112 size_t Search(Vector subject, size_t index) {
115 return BoyerMooreHorspoolSearch(subject, index);
117 return BoyerMooreSearch(subject, index);
119 return InitialSearch(subject, index);
121 return LinearSearch(subject, index);
123 return SingleCharSearch(subject, index);
144 size_t SingleCharSearch(Vector subject, size_t start_index);
145 size_t LinearSearch(Vector subject, size_t start_index);
146 size_t InitialSearch(Vector subject, size_t start_index);
147 size_t BoyerMooreHorspoolSearch(Vector subject, size_t start_index);
148 size_t BoyerMooreSearch(Vector subject, size_t start_index);
159 // Both pattern and subject are UC16. Reduce character to equivalence class.
216 // `subject`. Does not check that the whole pattern matches.
219 Vector<const Char> subject, size_t index) {
221 const size_t max_n = (subject.length() - pattern.length() + 1);
230 if (subject.forward()) {
234 void_pos = memchr(subject.start() + pos, search_byte, bytes_to_search);
236 CHECK_LE(pos, subject.length());
237 CHECK_LE(subject.length() - pos, SIZE_MAX / sizeof(Char));
238 void_pos = MemrchrFill(subject.start() + pattern.length() - 1,
244 return subject.length();
248 size_t raw_pos = static_cast<size_t>(char_pos - subject.start());
249 pos = subject.forward() ? raw_pos : (subject.length() - raw_pos - 1);
250 if (subject[pos] == pattern_first_char) {
257 return subject.length();
261 // Finds the first occurrence of the byte pattern[0] in string `subject`.
265 Vector<const uint8_t> subject,
268 const size_t subj_len = subject.length();
269 const size_t max_n = (subject.length() - pattern.length() + 1);
272 if (subject.forward()) {
273 pos = memchr(subject.start() + index, pattern_first_char, max_n - index);
275 pos = MemrchrFill(subject.start() + pattern.length() - 1,
284 size_t raw_pos = static_cast<size_t>(char_pos - subject.start());
285 return subject.forward() ? raw_pos : (subj_len - raw_pos - 1);
294 Vector subject,
297 return FindFirstCharacter(pattern_, subject, index);
307 Vector subject,
310 const size_t n = subject.length() - pattern_.length();
312 i = FindFirstCharacter(pattern_, subject, i);
313 if (i == subject.length())
314 return subject.length();
319 if (pattern_[j] != subject[i + j]) {
328 return subject.length();
337 Vector subject,
339 const size_t subject_length = subject.length();
353 while (last_char != (c = subject[index + j])) {
357 return subject.length();
360 while (pattern_[j] == (c = subject[index + j])) {
382 return subject.length();
456 Vector subject,
458 const size_t subject_length = subject.length();
474 while (last_char != (subject_char = subject[index + j])) {
484 while (pattern_[j] == (subject[index + j])) {
499 return BoyerMooreSearch(subject, index);
502 return subject.length();
537 // isn't found very early in the subject. Upgrades to BoyerMooreHorspool.
540 Vector subject,
550 for (size_t i = index, n = subject.length() - pattern_length; i <= n; i++) {
553 i = FindFirstCharacter(pattern_, subject, i);
554 if (i == subject.length())
555 return subject.length();
559 if (pattern_[j] != subject[i + j]) {
571 return BoyerMooreHorspoolSearch(subject, i);
574 return subject.length();
582 size_t SearchString(Vector<const Char> subject,
586 return search.Search(subject, start_index);