// See http://www.boost.org for updates, documentation, and revision history.
// (C) Samuel Krempp 2001
-// krempp@crans.ens-cachan.fr
// Permission to copy, use, modify, sell and
// distribute this software is granted provided this copyright notice appears
// in all copies. This software is provided "as is" without express or implied
#include <string>
#include <iosfwd>
-#include <boost/config.hpp>
+#include <boost/format/detail/config_macros.hpp>
namespace boost {
-template<class charT, class Traits = BOOST_IO_STD char_traits<charT> > class basic_format;
+ template <class Ch,
+#if !( BOOST_WORKAROUND(__GNUC__, <3) && defined(__STL_CONFIG_H) )
+ class Tr = BOOST_IO_STD char_traits<Ch> >
+#else
+ class Tr = std::string_char_traits<Ch> >
+#endif
+ class basic_format;
+
+ typedef basic_format<char > format;
-typedef basic_format<char > format;
-#if !defined(BOOST_NO_STD_WSTRING) && !defined(BOOST_NO_STD_WSTREAMBUF)
-typedef basic_format<wchar_t > wformat;
+#if !defined(BOOST_NO_STD_WSTRING) && !defined(BOOST_NO_STD_WSTREAMBUF) \
+ && !defined(BOOST_NO_STRINGSTREAM) && !defined(BOOST_FORMAT_IGNORE_STRINGSTREAM)
+ //we use either sstream or strstream, and strstream doesnt support wchar
+ typedef basic_format<wchar_t > wformat;
#endif
+ template<class Ch, class Tr>
+ std::basic_string<Ch, Tr> str(const basic_format<Ch, Tr>& ) ;
+
namespace io {
-enum format_error_bits { bad_format_string_bit = 1,
- too_few_args_bit = 2, too_many_args_bit = 4,
- out_of_range_bit = 8,
- all_error_bits = 255, no_error_bits=0 };
-
-// Convertion: format to string
-template<class Ch, class Tr>
-std::basic_string<Ch, Tr> str(const basic_format<Ch, Tr>& ) ;
+ using ::boost::str; // it used to bed define in boost::io, keep compatibility
+ enum format_error_bits { bad_format_string_bit = 1,
+ too_few_args_bit = 2, too_many_args_bit = 4,
+ out_of_range_bit = 8,
+ all_error_bits = 255, no_error_bits=0 };
+
} // namespace io
-template< class Ch, class Tr>
-BOOST_IO_STD basic_ostream<Ch, Tr>&
-operator<<( BOOST_IO_STD basic_ostream<Ch, Tr>&, const basic_format<Ch, Tr>&);
+ template< class Ch, class Tr>
+ BOOST_IO_STD basic_ostream<Ch, Tr>&
+ operator<<( BOOST_IO_STD basic_ostream<Ch, Tr>&, const basic_format<Ch, Tr>&);
} // namespace boost