1// (C) Copyright 2008 CodeRage, LLC (turkanis at coderage dot com)
2// (C) Copyright 2003-2007 Jonathan Turkanis
3// Distributed under the Boost Software License, Version 1.0. (See accompanying
4// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt.)
5
6// See http://www.boost.org/libs/iostreams for documentation.
7
8#ifndef BOOST_IOSTREAMS_DETAIL_IOS_HPP_INCLUDED
9#define BOOST_IOSTREAMS_DETAIL_IOS_HPP_INCLUDED
10
11#if defined(_MSC_VER)
12# pragma once
13#endif
14
15#include <boost/config.hpp> // BOOST_MSVC.
16#include <boost/detail/workaround.hpp>
17#include <boost/iostreams/detail/config/wide_streams.hpp>
18#ifndef BOOST_IOSTREAMS_NO_STREAM_TEMPLATES
19# if !BOOST_WORKAROUND(__MWERKS__, <= 0x3003)
20# include <ios>
21# else
22# include <istream>
23# include <ostream>
24# endif
25#else
26# include <exception>
27# include <iosfwd>
28#endif
29
30namespace boost { namespace iostreams { namespace detail {
31
32#ifndef BOOST_IOSTREAMS_NO_STREAM_TEMPLATES //--------------------------------//
33# define BOOST_IOSTREAMS_BASIC_IOS(ch, tr) std::basic_ios< ch, tr >
34# if !BOOST_WORKAROUND(__MWERKS__, <= 0x3003) && \
35 !BOOST_WORKAROUND(BOOST_BORLANDC, < 0x600) \
36 /**/
37
38#define BOOST_IOS std::ios
39#define BOOST_IOSTREAMS_FAILURE std::ios::failure
40
41# else
42
43#define BOOST_IOS std::ios_base
44#define BOOST_IOSTREAMS_FAILURE std::ios_base::failure
45
46# endif
47#else // #ifndef BOOST_IOSTREAMS_NO_STREAM_TEMPLATES //-----------------------//
48
49#define BOOST_IOS std::ios
50#define BOOST_IOSTREAMS_BASIC_IOS(ch, tr) std::ios
51#define BOOST_IOSTREAMS_FAILURE boost::iostreams::detail::failure
52
53class failure : std::exception {
54public:
55 explicit failure(const std::string& what_arg) : what_(what_arg) { }
56 const char* what() const { return what_.c_str(); }
57private:
58 std::string what_;
59};
60
61#endif // #ifndef BOOST_IOSTREAMS_NO_STREAM_TEMPLATES //----------------------//
62
63} } } // End namespace failure, iostreams, boost.
64
65#endif // #ifndef BOOST_IOSTREAMS_DETAIL_IOS_HPP_INCLUDED
66

source code of boost/libs/iostreams/include/boost/iostreams/detail/ios.hpp