29 enum class find_mode_type {
37 template <find_mode_type>
42 static constexpr std::size_t default_index{};
43 static constexpr bool forward_direction =
true;
44 static constexpr auto find = [](std::string_view source, std::string_view keyword,
45 std::size_t index = default_index) {
46 return source.find_first_of(keyword, index);
49 static constexpr auto keyword_size = [](std::string_view keyword) -> std::size_t {
return 1; };
54 static constexpr std::size_t default_index{};
55 static constexpr bool forward_direction =
true;
56 static constexpr auto find = [](std::string_view source, std::string_view keyword,
57 std::size_t index = default_index) {
return source.find(keyword, index); };
59 static constexpr auto keyword_size = [](std::string_view keyword) {
return keyword.size(); };
64 static constexpr auto default_index = std::string_view::npos;
65 static constexpr bool forward_direction{};
66 static constexpr auto find = [](std::string_view source, std::string_view keyword,
67 std::size_t index = default_index) {
68 return source.find_last_of(keyword, index);
71 static constexpr auto keyword_size = [](std::string_view keyword) -> std::size_t {
return 1; };
76 static constexpr auto default_index = std::string_view::npos;
77 static constexpr bool forward_direction{};
78 static constexpr auto find = [](std::string_view source, std::string_view keyword,
79 std::size_t index = default_index) {
return source.rfind(keyword, index); };
81 static constexpr auto keyword_size = [](std::string_view keyword) {
return keyword.size(); };
93 template <find_mode_type Mode>
94 constexpr auto uniform_find_string(std::string_view source, std::string_view keyword,
96 bool plus_keyword_size =
false) noexcept(noexcept(
string_finder_traits<Mode>::find(source, keyword, index))) {
99 if (plus_keyword_size && found_index != std::string_view::npos) {
113 template <find_mode_type Mode>
114 constexpr auto skip_keyword(std::size_t index, std::string_view keyword)
noexcept {
115 if constexpr (string_finder_traits<Mode>::forward_direction) {
116 return index + string_finder_traits<Mode>::keyword_size(keyword);
118 return index - string_finder_traits<Mode>::keyword_size(keyword);
Definition uniform_string_finder.hpp:38