Read-only mirrors. Development, issues and pull requests are on GitHub.

summaryrefslogtreecommitdiffhomepage
path: root/include
diff options
context:
space:
mode:
authorPhil Nash2014-04-23 07:03:15 +0100
committerPhil Nash2014-04-23 07:03:15 +0100
commit328a469c034487f6eec019ef3377e82f8bfb4ff1 (patch)
tree7a8bc73d0de2a6467a7897c8f8549c90a45bc949 /include
parent97150f27ac461507ab6a445ad7ac302d2dce7a9d (diff)
downloadcatch3-328a469c034487f6eec019ef3377e82f8bfb4ff1.tar.gz
Moved tostring impl into catch_tostring.hpp
Diffstat (limited to 'include')
-rw-r--r--include/internal/catch_impl.hpp1
-rw-r--r--include/internal/catch_tostring.h130
-rw-r--r--include/internal/catch_tostring.hpp127
3 files changed, 148 insertions, 110 deletions
diff --git a/include/internal/catch_impl.hpp b/include/internal/catch_impl.hpp
index 3f836e45..d25e1488 100644
--- a/include/internal/catch_impl.hpp
+++ b/include/internal/catch_impl.hpp
@@ -34,6 +34,7 @@
#include "catch_common.hpp"
#include "catch_section.hpp"
#include "catch_debugger.hpp"
+#include "catch_tostring.hpp"
#include "../reporters/catch_reporter_xml.hpp"
#include "../reporters/catch_reporter_junit.hpp"
diff --git a/include/internal/catch_tostring.h b/include/internal/catch_tostring.h
index 95717463..328dda7c 100644
--- a/include/internal/catch_tostring.h
+++ b/include/internal/catch_tostring.h
@@ -5,12 +5,11 @@
* Distributed under the Boost Software License, Version 1.0. (See accompanying
* file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
*/
-#ifndef TWOBLUECUBES_CATCH_TOSTRING_HPP_INCLUDED
-#define TWOBLUECUBES_CATCH_TOSTRING_HPP_INCLUDED
+#ifndef TWOBLUECUBES_CATCH_TOSTRING_H_INCLUDED
+#define TWOBLUECUBES_CATCH_TOSTRING_H_INCLUDED
#include "catch_common.h"
#include "catch_sfinae.hpp"
-#include "catch_interfaces_config.h"
#include <sstream>
#include <iomanip>
@@ -161,7 +160,7 @@ struct StringMaker<std::vector<T, Allocator> > {
namespace Detail {
template<typename T>
- inline std::string makeString( T const& value ) {
+ std::string makeString( T const& value ) {
return StringMaker<T>::convert( value );
}
} // end namespace Detail
@@ -180,116 +179,27 @@ std::string toString( T const& value ) {
// Built in overloads
-///////// !TBD: move this into impl file
-
-inline std::string toString( std::string const& value ) {
- std::string s = value;
- if( getCurrentContext().getConfig()->showInvisibles() ) {
- for(size_t i = 0; i < s.size(); ++i ) {
- std::string subs;
- switch( s[i] ) {
- case '\n': subs = "\\n"; break;
- case '\t': subs = "\\t"; break;
- default: break;
- }
- if( !subs.empty() ) {
- s = s.substr( 0, i ) + subs + s.substr( i+1 );
- ++i;
- }
- }
- }
- return "\"" + s + "\"";
-}
-
-inline std::string toString( std::wstring const& value ) {
-
- std::string s;
- s.reserve( value.size() );
- for(size_t i = 0; i < value.size(); ++i )
- s += value[i] <= 0xff ? static_cast<char>( value[i] ) : '?';
- return toString( s );
-}
-
-inline std::string toString( const char* const value ) {
- return value ? Catch::toString( std::string( value ) ) : std::string( "{null string}" );
-}
-
-inline std::string toString( char* const value ) {
- return Catch::toString( static_cast<const char*>( value ) );
-}
-
-inline std::string toString( int value ) {
- std::ostringstream oss;
- oss << value;
- return oss.str();
-}
-
-inline std::string toString( unsigned long value ) {
- std::ostringstream oss;
- if( value > 8192 )
- oss << "0x" << std::hex << value;
- else
- oss << value;
- return oss.str();
-}
-
-inline std::string toString( unsigned int value ) {
- return toString( static_cast<unsigned long>( value ) );
-}
-
-inline std::string toString( const double value ) {
- std::ostringstream oss;
- oss << std::setprecision( 10 )
- << std::fixed
- << value;
- std::string d = oss.str();
- std::size_t i = d.find_last_not_of( '0' );
- if( i != std::string::npos && i != d.size()-1 ) {
- if( d[i] == '.' )
- i++;
- d = d.substr( 0, i+1 );
- }
- return d;
-}
-
-inline std::string toString( bool value ) {
- return value ? "true" : "false";
-}
-
-inline std::string toString( char value ) {
- return value < ' '
- ? toString( static_cast<unsigned int>( value ) )
- : Detail::makeString( value );
-}
-
-inline std::string toString( signed char value ) {
- return toString( static_cast<char>( value ) );
-}
-
-inline std::string toString( unsigned char value ) {
- return toString( static_cast<char>( value ) );
-}
+std::string toString( std::string const& value );
+std::string toString( std::wstring const& value );
+std::string toString( const char* const value );
+std::string toString( char* const value );
+std::string toString( int value );
+std::string toString( unsigned long value );
+std::string toString( unsigned int value );
+std::string toString( const double value );
+std::string toString( bool value );
+std::string toString( char value );
+std::string toString( signed char value );
+std::string toString( unsigned char value );
#ifdef CATCH_CONFIG_CPP11_NULLPTR
-inline std::string toString( std::nullptr_t ) {
- return "nullptr";
-}
+std::string toString( std::nullptr_t );
#endif
#ifdef __OBJC__
- inline std::string toString( NSString const * const& nsstring ) {
- if( !nsstring )
- return "nil";
- return std::string( "@\"" ) + [nsstring UTF8String] + "\"";
- }
- inline std::string toString( NSString * CATCH_ARC_STRONG const& nsstring ) {
- if( !nsstring )
- return "nil";
- return std::string( "@\"" ) + [nsstring UTF8String] + "\"";
- }
- inline std::string toString( NSObject* const& nsObject ) {
- return toString( [nsObject description] );
- }
+ std::string toString( NSString const * const& nsstring );
+ std::string toString( NSString * CATCH_ARC_STRONG const& nsstring );
+ std::string toString( NSObject* const& nsObject );
#endif
namespace Detail {
@@ -310,4 +220,4 @@ inline std::string toString( std::nullptr_t ) {
} // end namespace Catch
-#endif // TWOBLUECUBES_CATCH_TOSTRING_HPP_INCLUDED
+#endif // TWOBLUECUBES_CATCH_TOSTRING_H_INCLUDED
diff --git a/include/internal/catch_tostring.hpp b/include/internal/catch_tostring.hpp
new file mode 100644
index 00000000..2eb94e63
--- /dev/null
+++ b/include/internal/catch_tostring.hpp
@@ -0,0 +1,127 @@
+/*
+ * Created by Phil on 23/4/2014.
+ * Copyright 2014 Two Blue Cubes Ltd. All rights reserved.
+ *
+ * Distributed under the Boost Software License, Version 1.0. (See accompanying
+ * file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ */
+#ifndef TWOBLUECUBES_CATCH_TOSTRING_HPP_INCLUDED
+#define TWOBLUECUBES_CATCH_TOSTRING_HPP_INCLUDED
+
+#include "catch_tostring.h"
+#include "catch_interfaces_config.h"
+
+namespace Catch {
+
+std::string toString( std::string const& value ) {
+ std::string s = value;
+ if( getCurrentContext().getConfig()->showInvisibles() ) {
+ for(size_t i = 0; i < s.size(); ++i ) {
+ std::string subs;
+ switch( s[i] ) {
+ case '\n': subs = "\\n"; break;
+ case '\t': subs = "\\t"; break;
+ default: break;
+ }
+ if( !subs.empty() ) {
+ s = s.substr( 0, i ) + subs + s.substr( i+1 );
+ ++i;
+ }
+ }
+ }
+ return "\"" + s + "\"";
+}
+std::string toString( std::wstring const& value ) {
+
+ std::string s;
+ s.reserve( value.size() );
+ for(size_t i = 0; i < value.size(); ++i )
+ s += value[i] <= 0xff ? static_cast<char>( value[i] ) : '?';
+ return toString( s );
+}
+
+std::string toString( const char* const value ) {
+ return value ? Catch::toString( std::string( value ) ) : std::string( "{null string}" );
+}
+
+std::string toString( char* const value ) {
+ return Catch::toString( static_cast<const char*>( value ) );
+}
+
+std::string toString( int value ) {
+ std::ostringstream oss;
+ oss << value;
+ return oss.str();
+}
+
+std::string toString( unsigned long value ) {
+ std::ostringstream oss;
+ if( value > 8192 )
+ oss << "0x" << std::hex << value;
+ else
+ oss << value;
+ return oss.str();
+}
+
+std::string toString( unsigned int value ) {
+ return toString( static_cast<unsigned long>( value ) );
+}
+
+std::string toString( const double value ) {
+ std::ostringstream oss;
+ oss << std::setprecision( 10 )
+ << std::fixed
+ << value;
+ std::string d = oss.str();
+ std::size_t i = d.find_last_not_of( '0' );
+ if( i != std::string::npos && i != d.size()-1 ) {
+ if( d[i] == '.' )
+ i++;
+ d = d.substr( 0, i+1 );
+ }
+ return d;
+}
+
+std::string toString( bool value ) {
+ return value ? "true" : "false";
+}
+
+std::string toString( char value ) {
+ return value < ' '
+ ? toString( static_cast<unsigned int>( value ) )
+ : Detail::makeString( value );
+}
+
+std::string toString( signed char value ) {
+ return toString( static_cast<char>( value ) );
+}
+
+std::string toString( unsigned char value ) {
+ return toString( static_cast<char>( value ) );
+}
+
+#ifdef CATCH_CONFIG_CPP11_NULLPTR
+std::string toString( std::nullptr_t ) {
+ return "nullptr";
+}
+#endif
+
+#ifdef __OBJC__
+ std::string toString( NSString const * const& nsstring ) {
+ if( !nsstring )
+ return "nil";
+ return std::string( "@\"" ) + [nsstring UTF8String] + "\"";
+ }
+ std::string toString( NSString * CATCH_ARC_STRONG const& nsstring ) {
+ if( !nsstring )
+ return "nil";
+ return std::string( "@\"" ) + [nsstring UTF8String] + "\"";
+ }
+ std::string toString( NSObject* const& nsObject ) {
+ return toString( [nsObject description] );
+ }
+#endif
+
+} // end namespace Catch
+
+#endif // TWOBLUECUBES_CATCH_TOSTRING_HPP_INCLUDED