StringRef appends itself to std::string efficiently

This commit is contained in:
Martin Hořeňovský 2018-02-28 16:02:25 +01:00
parent cf4b7eead9
commit 950ccf4749
3 changed files with 9 additions and 2 deletions

View File

@ -65,9 +65,9 @@ namespace Catch {
expr = m_info.capturedExpression;
else {
expr.reserve( m_info.macroName.size() + m_info.capturedExpression.size() + 4 );
expr += m_info.macroName.c_str();
expr += m_info.macroName;
expr += "( ";
expr += m_info.capturedExpression.c_str();
expr += m_info.capturedExpression;
expr += " )";
}
return expr;

View File

@ -115,6 +115,11 @@ namespace Catch {
return os.write(str.m_start, str.m_size);
}
auto operator+=( std::string& lhs, StringRef const& rhs ) -> std::string& {
lhs.append(rhs.m_start, rhs.m_size);
return lhs;
}
} // namespace Catch
#if defined(__clang__)

View File

@ -92,6 +92,8 @@ namespace Catch {
auto operator[] ( size_type index ) const noexcept -> char;
friend auto operator += ( std::string& lhs, StringRef const& rhs ) -> std::string&;
public: // named queries
auto empty() const noexcept -> bool {
return m_size == 0;