replaced w/ contents of is_custom.hpp

[SVN r28995]
This commit is contained in:
Jonathan Turkanis
2005-05-17 21:37:25 +00:00
parent 10fc87a2f3
commit b130ceca3a

View File

@@ -11,103 +11,29 @@
# pragma once
#endif
#include <utility> // pair.
#include <boost/config.hpp> // DEDUCED_TYPENAME.
#include <boost/iostreams/detail/ios.hpp>
#include <boost/iostreams/positioning.hpp> // stream_offset.
#include <boost/iostreams/traits.hpp>
#include <boost/mpl/not.hpp>
#include <boost/type_traits/is_base_and_derived.hpp>
namespace boost { namespace iostreams {
namespace boost { namespace iostreams {
template<typename T>
template<typename T>
struct operations;
namespace detail {
template<typename T> struct read_device_impl;
template<typename T> struct write_device_impl;
template<typename T> struct read_filter_impl;
template<typename T> struct write_filter_impl;
template<typename T> struct input_sequence_impl;
template<typename T> struct output_sequence_impl;
template<typename T> struct seek_impl;
template<typename T> struct close_impl;
template<typename T> struct flush_device_impl;
template<typename T> struct flush_filter_impl;
template<typename T> struct imbue_impl;
template<typename T> struct optimal_buffer_size_impl;
struct custom_tag { };
template<> struct read_device_impl<int> { typedef int type; };
template<> struct write_device_impl<int> { typedef int type; };
template<> struct read_filter_impl<int> { typedef int type; };
template<> struct write_filter_impl<int> { typedef int type; };
template<> struct input_sequence_impl<int> { typedef int type; };
template<> struct output_sequence_impl<int> { typedef int type; };
template<> struct seek_impl<int> { typedef int type; };
template<> struct close_impl<int> { typedef int type; };
template<> struct flush_device_impl<int> { typedef int type; };
template<> struct flush_filter_impl<int> { typedef int type; };
template<> struct imbue_impl<int> { typedef int type; };
template<> struct optimal_buffer_size_impl<int> { typedef int type; };
template<typename T>
struct is_custom
: mpl::not_<
is_base_and_derived< custom_tag, operations<T> >
>
{ };
} // End namespace detail.
template<typename T>
typename io_int<T>::type get(T&);
template<typename T>
std::streamsize read(T&, typename io_char<T>::type*, std::streamsize);
template<typename T, typename Source>
std::streamsize read(T&, Source&, typename io_char<T>::type*, std::streamsize);
template<typename T>
bool putback(T&, typename io_char<T>::type);
template<typename T>
bool put(T&, typename io_char<T>::type);
template<typename T>
std::streamsize write(T&, const typename io_char<T>::type*, std::streamsize);
template<typename T, typename Sink>
std::streamsize write(T&, Sink&, const typename io_char<T>::type*, std::streamsize);
template<typename T>
std::streampos seek( T& t, stream_offset off, BOOST_IOS::seekdir way,
BOOST_IOS::openmode which = BOOST_IOS::in | BOOST_IOS::out );
template<typename T>
std::pair<
BOOST_DEDUCED_TYPENAME io_char<T>::type*,
BOOST_DEDUCED_TYPENAME io_char<T>::type*
>
input_sequence(T&);
template<typename T>
std::pair<
BOOST_DEDUCED_TYPENAME io_char<T>::type*,
BOOST_DEDUCED_TYPENAME io_char<T>::type*
>
output_sequence(T&);
template<typename T>
void close(T&, BOOST_IOS::openmode);
template<typename T, typename Sink>
void close(T&, Sink& snk, BOOST_IOS::openmode);
template<typename T>
bool flush(T&);
template<typename T, typename Sink>
bool flush(T&, Sink&);
template<typename T, typename Locale>
void imbue(T&, const Locale&);
template<typename T>
std::streamsize optimal_buffer_size(const T&);
template<typename T>
struct operations : detail::custom_tag { };
} } // End namespaces iostreams, boost.