Add substr() method. It looks correct to me. Fingers crossed!

This commit is contained in:
King_DuckZ 2020-04-30 21:09:53 +02:00
parent f70899aed1
commit 4f54739ab6

View file

@ -48,6 +48,7 @@ namespace dhandy {
constexpr string<S + S2 - 1, Ch> operator+ ( const string<S2, Ch>& parOther ) const; constexpr string<S + S2 - 1, Ch> operator+ ( const string<S2, Ch>& parOther ) const;
constexpr value_type operator[] ( std::size_t parIndex ) const; constexpr value_type operator[] ( std::size_t parIndex ) const;
constexpr bool operator== (const string<S, Ch>& other) const; constexpr bool operator== (const string<S, Ch>& other) const;
template <std::size_t Start, std::size_t Len=S-1> constexpr auto substr() const;
template <std::size_t S2> constexpr bool operator== (const string<S2, Ch>&) const { return false; } template <std::size_t S2> constexpr bool operator== (const string<S2, Ch>&) const { return false; }
template <typename... Args> template <typename... Args>
@ -122,6 +123,12 @@ namespace dhandy {
constexpr bool string<S, Ch>::operator== (const string<S, Ch>& other) const { constexpr bool string<S, Ch>::operator== (const string<S, Ch>& other) const {
return implem::eq(*this, other); return implem::eq(*this, other);
} }
template <std::size_t S, typename Ch>
template <std::size_t Start, std::size_t Len>
constexpr auto string<S, Ch>::substr() const {
return string<std::min(S - 1 - std::min(Start, S - 1), Len) + 1, Ch>(m_data + std::min(Start, S - 1)) + make_string("");
}
} //namespace bt } //namespace bt
} //namespace dhandy } //namespace dhandy