27 void BufferSearch::operator()(
const std::string_view::value_type *buffer, std::size_t bufferSize)
29 if (m_hasResult || (!m_giveUpTerm.empty() && m_giveUpTermIterator == m_giveUpTerm.end())) {
32 for (
auto i = buffer, end = buffer + bufferSize;
i != end; ++
i) {
33 const auto currentChar = *
i;
34 if (m_searchTermIterator == m_searchTerm.end()) {
35 if (m_terminationChars.empty()) {
38 for (
const auto &terminationChar : m_terminationChars) {
39 if (currentChar == terminationChar) {
46 m_callback(*
this, std::move(m_result));
49 m_result += currentChar;
52 if (currentChar == *m_searchTermIterator) {
53 ++m_searchTermIterator;
55 m_searchTermIterator = m_searchTerm.begin();
57 if (m_giveUpTerm.empty()) {
60 if (currentChar == *m_giveUpTermIterator) {
61 ++m_giveUpTermIterator;
63 m_giveUpTermIterator = m_giveUpTerm.begin();
71 void BufferSearch::reset()
73 m_searchTermIterator = m_searchTerm.begin();
74 m_giveUpTermIterator = m_giveUpTerm.begin();
75 m_terminationTermIterator = m_terminationTerm.begin();
Contains all utilities provides by the c++utilities library.