diff options
Diffstat (limited to 'include/utf8_iterator.hpp')
-rw-r--r-- | include/utf8_iterator.hpp | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/include/utf8_iterator.hpp b/include/utf8_iterator.hpp new file mode 100644 index 0000000..1f9674b --- /dev/null +++ b/include/utf8_iterator.hpp @@ -0,0 +1,39 @@ +#ifndef FUD_UTF8_ITERATOR_HPP +#define FUD_UTF8_ITERATOR_HPP + +#include "string.hpp" +#include "utf8.hpp" + +#include <cstddef> +#include <optional> + +namespace fud { + +class Utf8Iterator { + private: + size_t m_index{0}; + // NOLINTBEGIN(cppcoreguidelines-avoid-const-or-ref-data-members) + const StringView m_view; + // NOLINTEND(cppcoreguidelines-avoid-const-or-ref-data-members) + + public: + explicit constexpr Utf8Iterator(const String& extString) : m_view{extString} + { + } + + explicit constexpr Utf8Iterator(const StringView& view) : m_view{view} + { + } + + constexpr void reset() + { + m_index = 0; + } + + [[nodiscard]] std::optional<ExtUtf8> peek() const; + std::optional<ExtUtf8> next(); +}; + +} // namespace fud + +#endif |