From e7ccc2ead07b5dda0b6ad2ab72cb08a169d10374 Mon Sep 17 00:00:00 2001 From: Orange Date: Mon, 6 Oct 2025 14:25:52 +0300 Subject: [PATCH] added concept for iterators, reworked interface --- include/omath/utility/pattern_scan.hpp | 3 ++- source/utility/pattern_scan.cpp | 9 ++------- 2 files changed, 4 insertions(+), 8 deletions(-) diff --git a/include/omath/utility/pattern_scan.hpp b/include/omath/utility/pattern_scan.hpp index 781c344..d1596a9 100644 --- a/include/omath/utility/pattern_scan.hpp +++ b/include/omath/utility/pattern_scan.hpp @@ -36,10 +36,11 @@ namespace omath public: [[nodiscard]] - static std::optional::const_iterator> scan_for_pattern(const std::span& range, + static std::span::const_iterator scan_for_pattern(const std::span& range, const std::string_view& pattern); template + requires std::input_or_output_iterator> static IteratorType scan_for_pattern(const IteratorType& begin, const IteratorType& end, const std::string_view& pattern) { diff --git a/source/utility/pattern_scan.cpp b/source/utility/pattern_scan.cpp index cf19cc3..ff593f7 100644 --- a/source/utility/pattern_scan.cpp +++ b/source/utility/pattern_scan.cpp @@ -7,15 +7,10 @@ namespace omath { - std::optional::const_iterator> + std::span::const_iterator PatternScanner::scan_for_pattern(const std::span& range, const std::string_view& pattern) { - auto result = scan_for_pattern(range.begin(), range.end(), pattern); - - if (result == range.end()) - return std::nullopt; - - return result; + return scan_for_pattern(range.begin(), range.end(), pattern); } std::expected>, PatternScanError> PatternScanner::parse_pattern(const std::string_view& pattern_string)