// Copyright 2016 The Chromium Authors // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifdef UNSAFE_BUFFERS_BUILD // TODO(crbug.com/40285824): Remove this and convert code to safer constructs. #pragma allow_unsafe_buffers #endif #ifndef COMPONENTS_URL_PATTERN_INDEX_STRING_SPLITTER_H_ #define COMPONENTS_URL_PATTERN_INDEX_STRING_SPLITTER_H_ #include <iterator> #include <string_view> #include "base/check_op.h" #include "base/memory/raw_ptr.h" namespace url_pattern_index { // A zero-allocation string splitter. Splits a string into non-empty tokens // divided by separator characters as defined by the IsSeparator predicate. // However, instead of materializing and returning a collection of all tokens in // the string, it provides an InputIterator that can be used to extract the // tokens. // // TODO(pkalinnikov): Move it to "base/strings" after some generalization. template <typename IsSeparator> class StringSplitter { … }; template <typename IsSeparator> StringSplitter<IsSeparator> CreateStringSplitter(std::string_view text, IsSeparator is_separator) { … } } // namespace url_pattern_index #endif // COMPONENTS_URL_PATTERN_INDEX_STRING_SPLITTER_H_