From 2e77718f07865fb6bfc7b3cd149fa63325fe87b7 Mon Sep 17 00:00:00 2001 From: Bananymous Date: Sat, 23 Dec 2023 18:43:52 +0200 Subject: [PATCH] BAN: Implement find() for StringView --- BAN/BAN/StringView.cpp | 16 ++++++++++++++++ BAN/include/BAN/StringView.h | 6 +++++- 2 files changed, 21 insertions(+), 1 deletion(-) diff --git a/BAN/BAN/StringView.cpp b/BAN/BAN/StringView.cpp index 3998455d..1aaf0701 100644 --- a/BAN/BAN/StringView.cpp +++ b/BAN/BAN/StringView.cpp @@ -145,6 +145,22 @@ namespace BAN return m_data[0]; } + BAN::Optional StringView::find(char ch) const + { + for (size_type i = 0; i < m_size; i++) + if (m_data[i] == ch) + return i; + return {}; + } + + BAN::Optional StringView::find(bool(*comp)(char)) const + { + for (size_type i = 0; i < m_size; i++) + if (comp(m_data[i])) + return i; + return {}; + } + bool StringView::contains(char ch) const { for (size_type i = 0; i < m_size; i++) diff --git a/BAN/include/BAN/StringView.h b/BAN/include/BAN/StringView.h index d7d275f7..d7c6080a 100644 --- a/BAN/include/BAN/StringView.h +++ b/BAN/include/BAN/StringView.h @@ -1,8 +1,9 @@ #pragma once -#include #include +#include #include +#include namespace BAN { @@ -35,6 +36,9 @@ namespace BAN char back() const; char front() const; + BAN::Optional find(char) const; + BAN::Optional find(bool(*comp)(char)) const; + bool contains(char) const; size_type count(char) const;