From 0549c6af977fbdc450987f415c2481fa62c2b851 Mon Sep 17 00:00:00 2001 From: Marco Bubke Date: Mon, 1 Aug 2016 17:21:07 +0200 Subject: [PATCH] Utils: Add std::string conversion constructor and operator to small string Change-Id: Ia76d7647fc8d2c9b72bc5bce2e7a6e2c3fcc18cc Reviewed-by: Tim Jenssen --- src/libs/utils/smallstring.h | 10 ++++++++++ src/libs/utils/smallstringvector.h | 5 +++++ tests/unit/unittest/smallstringtest.cpp | 9 +++++++++ 3 files changed, 24 insertions(+) diff --git a/src/libs/utils/smallstring.h b/src/libs/utils/smallstring.h index 3d39366b87f..8c9c10de28c 100644 --- a/src/libs/utils/smallstring.h +++ b/src/libs/utils/smallstring.h @@ -42,6 +42,7 @@ #include #include #include +#include #include #pragma push_macro("constexpr") @@ -127,6 +128,10 @@ public: : SmallString(SmallString::fromQString(qString)) {} + SmallString(const std::string &stdString) + : SmallString(stdString.data(), stdString.size()) + {} + template::value>::type @@ -216,6 +221,11 @@ public: return toQString(); } + operator std::string() const + { + return std::string(data(), size()); + } + static SmallString fromUtf8(const char *characterPointer) { diff --git a/src/libs/utils/smallstringvector.h b/src/libs/utils/smallstringvector.h index 35233a08962..95ae44356c8 100644 --- a/src/libs/utils/smallstringvector.h +++ b/src/libs/utils/smallstringvector.h @@ -131,6 +131,11 @@ public: return clonedVector; } + operator std::vector() const + { + return std::vector(begin(), end()); + } + private: std::size_t totalByteSize() const { diff --git a/tests/unit/unittest/smallstringtest.cpp b/tests/unit/unittest/smallstringtest.cpp index 0e70dac0478..b634b84b6d4 100644 --- a/tests/unit/unittest/smallstringtest.cpp +++ b/tests/unit/unittest/smallstringtest.cpp @@ -319,6 +319,15 @@ TEST(SmallString, RBeginPlusOneIsEqualREndForSmallStringWidthSizeOne) ASSERT_THAT(beginPlusOne, Eq(text.rend())); } +TEST(SmallString, ConstructorStandardString) +{ + std::string stdStringText = "short string"; + + auto text = SmallString(stdStringText); + + ASSERT_THAT(text, SmallString("short string")); +} + TEST(SmallString, ToQString) { SmallString text("short string");