From a2642f253a93be8a30aa623cbfaaab9179ec4fff Mon Sep 17 00:00:00 2001 From: Marco Bubke Date: Thu, 5 Jan 2017 13:25:46 +0100 Subject: [PATCH] Utils: Add io support for all BasicSmallStrings Change-Id: I4c37d0f5940f9424175db7dbf4d6b057f8ced9ef Reviewed-by: Tim Jenssen --- src/libs/utils/smallstringio.h | 45 ++++++++++++++++++++++------------ 1 file changed, 29 insertions(+), 16 deletions(-) diff --git a/src/libs/utils/smallstringio.h b/src/libs/utils/smallstringio.h index 42d44c96721..26424b22fe0 100644 --- a/src/libs/utils/smallstringio.h +++ b/src/libs/utils/smallstringio.h @@ -39,8 +39,8 @@ namespace Utils { -inline -QDataStream &operator<<(QDataStream &out, const SmallString &string) +template +QDataStream &operator<<(QDataStream &out, const BasicSmallString &string) { if (string.isEmpty()) out << quint32(0); @@ -50,8 +50,8 @@ QDataStream &operator<<(QDataStream &out, const SmallString &string) return out; } -inline -QDataStream &operator>>(QDataStream &in, SmallString &string) +template +QDataStream &operator>>(QDataStream &in, BasicSmallString &string) { quint32 size; @@ -83,13 +83,25 @@ std::ostream &operator<<(std::ostream &stream, const BasicSmallString &str { using std::operator<<; - return stream << std::string(string.data(), string.size()); + stream.write(string.data(), std::streamsize(string.size())); + + return stream; +} + +inline +std::ostream &operator<<(std::ostream &stream, SmallStringView string) +{ + using std::operator<<; + + stream.write(string.data(), std::streamsize(string.size())); + + return stream; } template void PrintTo(const BasicSmallString &string, ::std::ostream *os) { - Utils::SmallString formatedString = string.clone(); + BasicSmallString formatedString = string.clone(); formatedString.replace("\n", "\\n"); formatedString.replace("\t", "\\t"); @@ -101,7 +113,8 @@ void PrintTo(const BasicSmallString &string, ::std::ostream *os) *os<< "'"; } -inline QDataStream &operator<<(QDataStream &out, const SmallStringVector &stringVector) +template +QDataStream &operator<<(QDataStream &out, const BasicSmallStringVector &stringVector) { out << quint64(stringVector.size()); @@ -111,8 +124,8 @@ inline QDataStream &operator<<(QDataStream &out, const SmallStringVector &string return out; } -inline -QDataStream &operator>>(QDataStream &in, SmallStringVector &stringVector) +template +QDataStream &operator>>(QDataStream &in, BasicSmallStringVector &stringVector) { stringVector.clear(); @@ -123,7 +136,7 @@ QDataStream &operator>>(QDataStream &in, SmallStringVector &stringVector) stringVector.reserve(size); for (quint64 i = 0; i < size; ++i) { - SmallString string; + BasicSmallString string; in >> string; @@ -133,18 +146,18 @@ QDataStream &operator>>(QDataStream &in, SmallStringVector &stringVector) return in; } -inline -QDebug operator<<(QDebug debug, const SmallStringVector &stringVector) +template +QDebug operator<<(QDebug debug, const BasicSmallStringVector &stringVector) { - debug << "StringVector(" << stringVector.join(Utils::SmallString(", ")).constData() << ")"; + debug << "StringVector(" << stringVector.join(BasicSmallString(", ")).constData() << ")"; return debug; } -inline -void PrintTo(const SmallStringVector &textVector, ::std::ostream* os) +template +void PrintTo(const BasicSmallStringVector &textVector, ::std::ostream* os) { - *os << "[" << textVector.join(Utils::SmallString(", ")).constData() << "]"; + *os << "[" << textVector.join(BasicSmallString(", ")).constData() << "]"; } } // namespace Utils