From 20690236d7f30b1d80f7f842374ab106109d54ee Mon Sep 17 00:00:00 2001 From: Marco Bubke Date: Thu, 18 Feb 2021 17:36:36 +0100 Subject: [PATCH] Utils: Add iterator constructors to small string Change-Id: I34e15177268f0733200d25c90fd935485c3176ae Reviewed-by: Thomas Hartmann Reviewed-by: Tim Jenssen --- src/libs/sqlite/sqlitebasestatement.cpp | 2 +- src/libs/utils/smallstring.h | 15 +++++++++++---- src/libs/utils/smallstringview.h | 19 ++++++++++++++----- 3 files changed, 26 insertions(+), 10 deletions(-) diff --git a/src/libs/sqlite/sqlitebasestatement.cpp b/src/libs/sqlite/sqlitebasestatement.cpp index cd6e2f0bb21..7412473dad1 100644 --- a/src/libs/sqlite/sqlitebasestatement.cpp +++ b/src/libs/sqlite/sqlitebasestatement.cpp @@ -716,7 +716,7 @@ StringType convertToTextForColumn(sqlite3_stmt *sqlStatment, int column) break; } - return StringType{"", 0}; + return {}; } } // namespace diff --git a/src/libs/utils/smallstring.h b/src/libs/utils/smallstring.h index 20d4a13e811..b04a2300a37 100644 --- a/src/libs/utils/smallstring.h +++ b/src/libs/utils/smallstring.h @@ -64,8 +64,8 @@ template class BasicSmallString { public: - using iterator = Internal::SmallStringIterator; - using const_iterator = Internal::SmallStringIterator; + using iterator = SmallStringView::iterator; + using const_iterator = SmallStringView::const_iterator; using reverse_iterator = std::reverse_iterator; using const_reverse_iterator = std::reverse_iterator; using size_type = std::size_t; @@ -113,8 +113,15 @@ public: BasicSmallString(const char *string, size_type size) : BasicSmallString(string, size, size) - { - } + {} + + explicit BasicSmallString(const_iterator begin, const_iterator end) + : BasicSmallString(SmallStringView{begin, end}) + {} + + explicit BasicSmallString(iterator begin, iterator end) + : BasicSmallString(SmallStringView{begin, end}) + {} template::value>> BasicSmallString(Type characterPointer) diff --git a/src/libs/utils/smallstringview.h b/src/libs/utils/smallstringview.h index 5559d222322..6d3ea5d35fe 100644 --- a/src/libs/utils/smallstringview.h +++ b/src/libs/utils/smallstringview.h @@ -49,6 +49,7 @@ class SmallStringView { public: using const_iterator = Internal::SmallStringIterator; + using iterator = Internal::SmallStringIterator; using const_reverse_iterator = std::reverse_iterator; using size_type = std::size_t; @@ -62,14 +63,22 @@ public: constexpr SmallStringView(const char *const string, const size_type size) noexcept : m_pointer(string) , m_size(size) - { - } + {} - constexpr SmallStringView(const const_iterator begin, const const_iterator end) noexcept + constexpr SmallStringView(const char *const begin, const char *const end) noexcept + : m_pointer(begin) + , m_size(static_cast(std::distance(begin, end))) + {} + + constexpr SmallStringView(const_iterator begin, const_iterator end) noexcept : m_pointer(begin.data()) , m_size(std::size_t(end - begin)) - { - } + {} + + constexpr SmallStringView(iterator begin, iterator end) noexcept + : m_pointer(begin.data()) + , m_size(std::size_t(end - begin)) + {} template = 0> constexpr SmallStringView(const String &string) noexcept