Chris@16
|
1 // (C) Copyright Gennadiy Rozental 2004-2008.
|
Chris@16
|
2 // Distributed under the Boost Software License, Version 1.0.
|
Chris@16
|
3 // (See accompanying file LICENSE_1_0.txt or copy at
|
Chris@16
|
4 // http://www.boost.org/LICENSE_1_0.txt)
|
Chris@16
|
5
|
Chris@16
|
6 // See http://www.boost.org/libs/test for the library home page.
|
Chris@16
|
7 //
|
Chris@16
|
8 // File : $RCSfile$
|
Chris@16
|
9 //
|
Chris@101
|
10 // Version : $Revision$
|
Chris@16
|
11 //
|
Chris@16
|
12 // Description : basic_cstring i/o implementation
|
Chris@16
|
13 // ***************************************************************************
|
Chris@16
|
14
|
Chris@16
|
15 #ifndef BOOST_TEST_BASIC_CSTRING_IO_HPP_071894GER
|
Chris@16
|
16 #define BOOST_TEST_BASIC_CSTRING_IO_HPP_071894GER
|
Chris@16
|
17
|
Chris@16
|
18 // Boost.Test
|
Chris@16
|
19 #include <boost/test/utils/basic_cstring/basic_cstring.hpp>
|
Chris@16
|
20
|
Chris@16
|
21 // STL
|
Chris@16
|
22 #include <iosfwd>
|
Chris@16
|
23 #include <string>
|
Chris@16
|
24
|
Chris@16
|
25 #include <boost/test/detail/suppress_warnings.hpp>
|
Chris@16
|
26
|
Chris@16
|
27 //____________________________________________________________________________//
|
Chris@16
|
28
|
Chris@16
|
29 namespace boost {
|
Chris@16
|
30
|
Chris@16
|
31 namespace unit_test {
|
Chris@16
|
32
|
Chris@16
|
33 #ifdef BOOST_CLASSIC_IOSTREAMS
|
Chris@16
|
34
|
Chris@16
|
35 template<typename CharT>
|
Chris@16
|
36 inline std::ostream&
|
Chris@16
|
37 operator<<( std::ostream& os, basic_cstring<CharT> const& str )
|
Chris@16
|
38 {
|
Chris@16
|
39 typedef typename ut_detail::bcs_base_char<CharT>::type char_type;
|
Chris@16
|
40 char_type const* const beg = reinterpret_cast<char_type const* const>( str.begin() );
|
Chris@16
|
41 char_type const* const end = reinterpret_cast<char_type const* const>( str.end() );
|
Chris@16
|
42 os << std::basic_string<char_type>( beg, end - beg );
|
Chris@16
|
43
|
Chris@16
|
44 return os;
|
Chris@16
|
45 }
|
Chris@16
|
46
|
Chris@16
|
47 #else
|
Chris@16
|
48
|
Chris@16
|
49 template<typename CharT1, typename Tr,typename CharT2>
|
Chris@16
|
50 inline std::basic_ostream<CharT1,Tr>&
|
Chris@16
|
51 operator<<( std::basic_ostream<CharT1,Tr>& os, basic_cstring<CharT2> const& str )
|
Chris@16
|
52 {
|
Chris@16
|
53 CharT1 const* const beg = reinterpret_cast<CharT1 const*>( str.begin() ); // !!
|
Chris@16
|
54 CharT1 const* const end = reinterpret_cast<CharT1 const*>( str.end() );
|
Chris@16
|
55 os << std::basic_string<CharT1,Tr>( beg, end - beg );
|
Chris@16
|
56
|
Chris@16
|
57 return os;
|
Chris@16
|
58 }
|
Chris@16
|
59
|
Chris@16
|
60 #endif
|
Chris@16
|
61
|
Chris@16
|
62 //____________________________________________________________________________//
|
Chris@16
|
63
|
Chris@16
|
64
|
Chris@16
|
65 } // namespace unit_test
|
Chris@16
|
66
|
Chris@16
|
67 } // namespace boost
|
Chris@16
|
68
|
Chris@16
|
69 //____________________________________________________________________________//
|
Chris@16
|
70
|
Chris@16
|
71 #include <boost/test/detail/enable_warnings.hpp>
|
Chris@16
|
72
|
Chris@16
|
73 #endif // BOOST_TEST_BASIC_CSTRING_IO_HPP_071894GER
|