Removed templated StringRef ctor and added StringRef literal

This commit is contained in:
Phil Nash 2017-11-21 11:08:08 +00:00
parent c39109dce3
commit e4a898eaaa
5 changed files with 15 additions and 17 deletions

View File

@ -15,7 +15,7 @@
namespace {
// Report the error condition
void reportFatal( char const * const message ) {
Catch::getCurrentContext().getResultCapture()->handleFatalErrorCondition( Catch::StringRef::fromRaw( message ) );
Catch::getCurrentContext().getResultCapture()->handleFatalErrorCondition( message );
}
}

View File

@ -132,7 +132,7 @@ namespace Catch {
}
void RunContext::resetAssertionInfo() {
m_lastAssertionInfo.macroName = StringRef();
m_lastAssertionInfo.capturedExpression = "{Unknown expression after the reported line}";
m_lastAssertionInfo.capturedExpression = "{Unknown expression after the reported line}"_sr;
}
bool RunContext::sectionStarted(SectionInfo const & sectionInfo, Counts & assertions) {

View File

@ -17,11 +17,9 @@
#include <cstring>
namespace Catch {
auto StringRef::fromRaw( char const* rawChars ) -> StringRef {
return rawChars
? StringRef( rawChars,static_cast<StringRef::size_type>(std::strlen(rawChars) ) )
: StringRef();
}
StringRef::StringRef( char const* rawChars ) noexcept
: StringRef( rawChars, static_cast<StringRef::size_type>(std::strlen(rawChars) ) )
{}
StringRef::operator std::string() const {
return std::string( m_start, m_size );

View File

@ -23,10 +23,12 @@ namespace Catch {
/// visible - but it does mean (substring) StringRefs should not be shared between
/// threads.
class StringRef {
public:
using size_type = std::size_t;
private:
friend struct StringRefTestAccess;
using size_type = std::size_t;
char const* m_start;
size_type m_size;
@ -54,11 +56,7 @@ namespace Catch {
other.m_data = nullptr;
}
template<size_t Size>
StringRef( char const(& rawChars)[Size] ) noexcept
: m_start( rawChars ),
m_size( static_cast<size_type>( Size-1 ) )
{}
StringRef( char const* rawChars ) noexcept;
StringRef( char const* rawChars, size_type size ) noexcept
: m_start( rawChars ),
@ -82,8 +80,6 @@ namespace Catch {
return *this;
}
static auto fromRaw( char const *rawChars ) -> StringRef;
operator std::string() const;
void swap( StringRef& other ) noexcept;
@ -120,6 +116,10 @@ namespace Catch {
auto operator << ( std::ostream& os, StringRef const& sr ) -> std::ostream&;
inline auto operator ""_sr( char const* rawChars, std::size_t size ) noexcept -> StringRef {
return StringRef( rawChars, size );
}
} // namespace Catch
#endif // CATCH_STRINGREF_H_INCLUDED

View File

@ -35,7 +35,7 @@ auto makeTestInvoker( void (C::*testAsMethod)() ) noexcept -> ITestInvoker* {
}
struct NameAndTags {
NameAndTags( StringRef name_ = "", StringRef tags_ = "" ) noexcept;
NameAndTags( StringRef name_ = StringRef(), StringRef tags_ = StringRef() ) noexcept;
StringRef name;
StringRef tags;
};