mirror of
				https://github.com/catchorg/Catch2.git
				synced 2025-10-31 20:27:11 +01:00 
			
		
		
		
	Add allocator support to StringMaker<vector>
- also extracted out 'rangeToString', in an attempt to make it easier to add support for other containers
This commit is contained in:
		| @@ -99,19 +99,27 @@ struct StringMaker<T*> { | ||||
|     } | ||||
| }; | ||||
|  | ||||
| template<typename T> | ||||
| struct StringMaker<std::vector<T> > { | ||||
|     static std::string convert( std::vector<T> const& v ) { | ||||
| namespace Detail { | ||||
|     template<typename InputIterator> | ||||
|     std::string rangeToString( InputIterator first, InputIterator last ) { | ||||
|         std::ostringstream oss; | ||||
|         oss << "{ "; | ||||
|         for( std::size_t i = 0; i < v.size(); ++ i ) { | ||||
|             oss << toString( v[i] ); | ||||
|             if( i < v.size() - 1 ) | ||||
|                 oss << ", "; | ||||
|         if( first != last ) { | ||||
|             oss << toString( *first ); | ||||
|             for( ++first ; first != last ; ++first ) { | ||||
|                 oss << ", " << toString( *first ); | ||||
|             } | ||||
|         } | ||||
|         oss << " }"; | ||||
|         return oss.str(); | ||||
|     } | ||||
| } | ||||
|  | ||||
| template<typename T, typename Allocator> | ||||
| struct StringMaker<std::vector<T, Allocator> > { | ||||
|     static std::string convert( std::vector<T,Allocator> const& v ) { | ||||
|         return Detail::rangeToString( v.begin(), v.end() ); | ||||
|     } | ||||
| }; | ||||
|  | ||||
| namespace Detail { | ||||
|   | ||||
| @@ -1,6 +1,6 @@ | ||||
| /* | ||||
|  *  CATCH v1.0 build 10 (master branch) | ||||
|  *  Generated: 2013-09-14 19:56:34.776409 | ||||
|  *  Generated: 2013-09-17 22:21:47.780755 | ||||
|  *  ---------------------------------------------------------- | ||||
|  *  This file has been merged from multiple headers. Please don't edit it directly | ||||
|  *  Copyright (c) 2012 Two Blue Cubes Ltd. All rights reserved. | ||||
| @@ -722,19 +722,27 @@ struct StringMaker<T*> { | ||||
|     } | ||||
| }; | ||||
|  | ||||
| template<typename T> | ||||
| struct StringMaker<std::vector<T> > { | ||||
|     static std::string convert( std::vector<T> const& v ) { | ||||
| namespace Detail { | ||||
|     template<typename InputIterator> | ||||
|     std::string rangeToString( InputIterator first, InputIterator last ) { | ||||
|         std::ostringstream oss; | ||||
|         oss << "{ "; | ||||
|         for( std::size_t i = 0; i < v.size(); ++ i ) { | ||||
|             oss << toString( v[i] ); | ||||
|             if( i < v.size() - 1 ) | ||||
|                 oss << ", "; | ||||
|         if( first != last ) { | ||||
|             oss << toString( *first ); | ||||
|             for( ++first ; first != last ; ++first ) { | ||||
|                 oss << ", " << toString( *first ); | ||||
|             } | ||||
|         } | ||||
|         oss << " }"; | ||||
|         return oss.str(); | ||||
|     } | ||||
| } | ||||
|  | ||||
| template<typename T, typename Allocator> | ||||
| struct StringMaker<std::vector<T, Allocator> > { | ||||
|     static std::string convert( std::vector<T,Allocator> const& v ) { | ||||
|         return Detail::rangeToString( v.begin(), v.end() ); | ||||
|     } | ||||
| }; | ||||
|  | ||||
| namespace Detail { | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Andy Sawyer
					Andy Sawyer