diff --git a/boost/boost/iostreams/categories.hpp b/boost/boost/iostreams/categories.hpp deleted file mode 100644 index 96304d0217..0000000000 --- a/boost/boost/iostreams/categories.hpp +++ /dev/null @@ -1,142 +0,0 @@ -// (C) Copyright Jonathan Turkanis 2003. -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt.) - -// See http://www.boost.org/libs/iostreams for documentation. - -// Contains category and mode tags for classifying filters, devices and -// standard stream and stream buffers types. - -#ifndef BOOST_IOSTREAMS_CATEGORIES_HPP_INCLUDED -#define BOOST_IOSTREAMS_CATEGORIES_HPP_INCLUDED - -#if defined(_MSC_VER) && (_MSC_VER >= 1020) -# pragma once -#endif - -namespace boost { namespace iostreams { - -//------------------Tags for dispatch according to i/o mode-------------------// - -struct any_tag { }; -namespace detail { struct two_sequence : virtual any_tag { }; } -namespace detail { struct random_access : virtual any_tag { }; } -namespace detail { struct one_head : virtual any_tag { }; } -namespace detail { struct two_head : virtual any_tag { }; } -struct input : virtual any_tag { }; -struct output : virtual any_tag { }; -struct bidirectional : virtual input, virtual output, detail::two_sequence { }; -struct dual_use : virtual input, virtual output { }; // Pseudo-mode. -struct input_seekable : virtual input, virtual detail::random_access { }; -struct output_seekable : virtual output, virtual detail::random_access { }; -struct seekable - : virtual input_seekable, - virtual output_seekable, - detail::one_head - { }; -struct dual_seekable - : virtual input_seekable, - virtual output_seekable, - detail::two_head - { }; -struct bidirectional_seekable - : input_seekable, output_seekable, - bidirectional, detail::two_head - { }; - -//------------------Tags for use as i/o categories----------------------------// - -struct device_tag : virtual any_tag { }; -struct filter_tag : virtual any_tag { }; - - // - // Tags for optional behavior. - // - -struct peekable_tag : virtual any_tag { }; // Devices. -struct closable_tag : virtual any_tag { }; -struct flushable_tag : virtual any_tag { }; -struct localizable_tag : virtual any_tag { }; -struct optimally_buffered_tag : virtual any_tag { }; -struct direct_tag : virtual any_tag { }; // Devices. -struct multichar_tag : virtual any_tag { }; // Filters. - -struct source_tag : device_tag, input { }; -struct sink_tag : device_tag, output { }; -struct bidirectional_device_tag : device_tag, bidirectional { }; -struct seekable_device_tag : virtual device_tag, seekable { }; - -struct input_filter_tag : filter_tag, input { }; -struct output_filter_tag : filter_tag, output { }; -struct bidirectional_filter_tag : filter_tag, bidirectional { }; -struct seekable_filter_tag : filter_tag, seekable { }; -struct dual_use_filter_tag : filter_tag, dual_use { }; - -struct multichar_input_filter_tag - : multichar_tag, - input_filter_tag - { }; -struct multichar_output_filter_tag - : multichar_tag, - output_filter_tag - { }; -struct multichar_bidirectional_filter_tag - : multichar_tag, - bidirectional_filter_tag - { }; -struct multichar_seekable_filter_tag - : multichar_tag, - seekable_filter_tag - { }; -struct multichar_dual_use_filter_tag - : filter_tag, - dual_use - { }; - - // - // Tags for standard streams and streambufs. - // - -struct std_io_tag : virtual localizable_tag { }; -struct istream_tag - : virtual input_seekable, - virtual device_tag, - virtual peekable_tag, - virtual std_io_tag - { }; -struct ostream_tag - : virtual output_seekable, - virtual device_tag, - virtual peekable_tag, - virtual std_io_tag - { }; -struct iostream_tag - : seekable_device_tag, - istream_tag, - ostream_tag - { }; -struct streambuf_tag - : seekable_device_tag, - peekable_tag, - std_io_tag - { }; -struct stringstream_tag - : dual_seekable, - device_tag, - std_io_tag - { }; -struct stringbuf_tag - : dual_seekable, - device_tag, - std_io_tag - { }; - -namespace detail { - -struct linked_tag : streambuf_tag { }; - -} // End namespace detail. - -} } // End namespaces iostreams, boost. - -#endif // #ifndef BOOST_IOSTREAMS_CATEGORIES_HPP_INCLUDED diff --git a/boost/boost/iostreams/chain.hpp b/boost/boost/iostreams/chain.hpp deleted file mode 100644 index a88f8f48c4..0000000000 --- a/boost/boost/iostreams/chain.hpp +++ /dev/null @@ -1,563 +0,0 @@ -// (C) Copyright Jonathan Turkanis 2003. -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt.) - -// See http://www.boost.org/libs/iostreams for documentation. - -#ifndef BOOST_IOSTREAMS_DETAIL_CHAIN_HPP_INCLUDED -#define BOOST_IOSTREAMS_DETAIL_CHAIN_HPP_INCLUDED - -#if defined(_MSC_VER) && (_MSC_VER >= 1020) -# pragma once -#endif - -#include // for_each. -#include -#include -#include // unary_function. -#include // advance. -#include -#include // allocator, auto_ptr. -#include -#include // logic_error, out_of_range. -#include -#include // BOOST_MSVC, template friends, -#include // BOOST_NESTED_TEMPLATE -#include -#include -#include -#include -#include // pubsync. -#include -#include -#include -#include // is_filter. -#include -#include -#include -#include -#include -#include -#if BOOST_WORKAROUND(BOOST_MSVC, < 1310) -# include -#endif - -// Sometimes type_info objects must be compared by name. Borrowed from -// Boost.Python and Boost.Function. -#if (defined(__GNUC__) && __GNUC__ >= 3) || \ - defined(_AIX) || \ - (defined(__sgi) && defined(__host_mips)) || \ - (defined(linux) && defined(__INTEL_COMPILER) && defined(__ICC)) \ - /**/ -# include -# define BOOST_IOSTREAMS_COMPARE_TYPE_ID(X,Y) \ - (std::strcmp((X).name(),(Y).name()) == 0) -#else -# define BOOST_IOSTREAMS_COMPARE_TYPE_ID(X,Y) ((X)==(Y)) -#endif - -// Deprecated -#define BOOST_IOSTREAMS_COMPONENT_TYPE(chain, index) \ - chain.component_type( index ) \ - /**/ - -#if !BOOST_WORKAROUND(BOOST_MSVC, < 1310) -# define BOOST_IOSTREAMS_COMPONENT(chain, index, target) \ - chain.component< target >( index ) \ - /**/ -#else -# define BOOST_IOSTREAMS_COMPONENT(chain, index, target) \ - chain.component( index, ::boost::type< target >() ) \ - /**/ -#endif - -namespace boost { namespace iostreams { - -//--------------Definition of chain and wchain--------------------------------// - -namespace detail { - -template class chain_client; - -// -// Concept name: Chain. -// Description: Represents a chain of stream buffers which provides access -// to the first buffer in the chain and send notifications when the -// streambufs are added to or removed from chain. -// Refines: Closable device with mode equal to typename Chain::mode. -// Models: chain, converting_chain. -// Example: -// -// class chain { -// public: -// typedef xxx chain_type; -// typedef xxx client_type; -// typedef xxx mode; -// bool is_complete() const; // Ready for i/o. -// template -// void push( const T& t, // Adds a stream buffer to -// streamsize, // chain, based on t, with -// streamsize ); // given buffer and putback -// // buffer sizes. Pass -1 to -// // request default size. -// protected: -// void register_client(client_type* client); // Associate client. -// void notify(); // Notify client. -// }; -// - -// -// Description: Represents a chain of filters with an optional device at the -// end. -// Template parameters: -// Self - A class deriving from the current instantiation of this template. -// This is an example of the Curiously Recurring Template Pattern. -// Ch - The character type. -// Tr - The character traits type. -// Alloc - The allocator type. -// Mode - A mode tag. -// -template -class chain_base { -public: - typedef Ch char_type; - BOOST_IOSTREAMS_STREAMBUF_TYPEDEFS(Tr) - typedef Alloc allocator_type; - typedef Mode mode; - struct category - : Mode, - device_tag - { }; - typedef chain_client client_type; - friend class chain_client; -private: - typedef linked_streambuf streambuf_type; - typedef std::list list_type; - typedef chain_base my_type; -protected: - chain_base() : pimpl_(new chain_impl) { } - chain_base(const chain_base& rhs): pimpl_(rhs.pimpl_) { } -public: - - //----------Buffer sizing-------------------------------------------------// - - // Sets the size of the buffer created for the devices to be added to this - // chain. Does not affect the size of the buffer for devices already - // added. - void set_device_buffer_size(int n) { pimpl_->device_buffer_size_ = n; } - - // Sets the size of the buffer created for the filters to be added - // to this chain. Does not affect the size of the buffer for filters already - // added. - void set_filter_buffer_size(int n) { pimpl_->filter_buffer_size_ = n; } - - // Sets the size of the putback buffer for filters and devices to be added - // to this chain. Does not affect the size of the buffer for filters or - // devices already added. - void set_pback_size(int n) { pimpl_->pback_size_ = n; } - - //----------Device interface----------------------------------------------// - - std::streamsize read(char_type* s, std::streamsize n); - std::streamsize write(const char_type* s, std::streamsize n); - std::streampos seek(stream_offset off, BOOST_IOS::seekdir way); - - //----------Direct component access---------------------------------------// - - const std::type_info& component_type(int n) const - { - if (static_cast(n) >= size()) - throw std::out_of_range("bad chain offset"); - return (*boost::next(list().begin(), n))->component_type(); - } - -#if !BOOST_WORKAROUND(BOOST_MSVC, < 1310) - // Deprecated. - template - const std::type_info& component_type() const { return component_type(N); } - - template - T* component(int n) const { return component(n, boost::type()); } - - // Deprecated. - template - T* component() const { return component(N); } -#endif - -#if !BOOST_WORKAROUND(BOOST_MSVC, < 1310) - private: -#endif - template - T* component(int n, boost::type) const - { - if (static_cast(n) >= size()) - throw std::out_of_range("bad chain offset"); - streambuf_type* link = *boost::next(list().begin(), n); - if (BOOST_IOSTREAMS_COMPARE_TYPE_ID(link->component_type(), typeid(T))) - return static_cast(link->component_impl()); - else - return 0; - } -public: - - //----------Container-like interface--------------------------------------// - - typedef typename list_type::size_type size_type; - streambuf_type& front() { return *list().front(); } - BOOST_IOSTREAMS_DEFINE_PUSH(push, mode, char_type, push_impl) - void pop(); - bool empty() const { return list().empty(); } - size_type size() const { return list().size(); } - void reset(); - - //----------Additional i/o functions--------------------------------------// - - // Returns true if this chain is non-empty and its final link - // is a source or sink, i.e., if it is ready to perform i/o. - bool is_complete() const; - bool auto_close() const; - void set_auto_close(bool close); - bool sync() { return front().BOOST_IOSTREAMS_PUBSYNC() != -1; } - bool strict_sync(); -private: - template - void push_impl(const T& t, int buffer_size = -1, int pback_size = -1) - { - typedef typename iostreams::category_of::type category; - typedef typename unwrap_ios::type policy_type; - typedef stream_buffer< - policy_type, - BOOST_IOSTREAMS_CHAR_TRAITS(char_type), - Alloc, Mode - > facade_type; - BOOST_STATIC_ASSERT((is_convertible::value)); - if (is_complete()) - throw std::logic_error("chain complete"); - streambuf_type* prev = !empty() ? list().back() : 0; - buffer_size = - buffer_size != -1 ? - buffer_size : - iostreams::optimal_buffer_size(t); - pback_size = - pback_size != -1 ? - pback_size : - pimpl_->pback_size_; - std::auto_ptr - buf(new facade_type(t, buffer_size, pback_size)); - list().push_back(buf.get()); - buf.release(); - if (is_device::value) - pimpl_->flags_ |= f_complete | f_open; - if (prev) prev->set_next(list().back()); - notify(); - } - - list_type& list() { return pimpl_->links_; } - const list_type& list() const { return pimpl_->links_; } - void register_client(client_type* client) { pimpl_->client_ = client; } - void notify() { if (pimpl_->client_) pimpl_->client_->notify(); } - - //----------Nested classes------------------------------------------------// - - static void close(streambuf_type* b, BOOST_IOS::openmode m) - { - if (m & BOOST_IOS::out) - b->BOOST_IOSTREAMS_PUBSYNC(); - b->close(m); - } - - static void set_next(streambuf_type* b, streambuf_type* next) - { b->set_next(next); } - - static void set_auto_close(streambuf_type* b, bool close) - { b->set_auto_close(close); } - - struct closer : public std::unary_function { - closer(BOOST_IOS::openmode m) : mode_(m) { } - void operator() (streambuf_type* b) - { - close(b, mode_); - } - BOOST_IOS::openmode mode_; - }; - friend struct closer; - - enum flags { - f_complete = 1, - f_open = 2, - f_auto_close = 4 - }; - - struct chain_impl { - chain_impl() - : client_(0), device_buffer_size_(default_device_buffer_size), - filter_buffer_size_(default_filter_buffer_size), - pback_size_(default_pback_buffer_size), - flags_(f_auto_close) - { } - ~chain_impl() { try { close(); reset(); } catch (std::exception&) { } } - void close() - { - if ((flags_ & f_open) != 0) { - stream_buffer< basic_null_device > null; - if ((flags_ & f_complete) == 0) { - null.open(basic_null_device()); - set_next(links_.back(), &null); - } - links_.front()->BOOST_IOSTREAMS_PUBSYNC(); - if (is_convertible::value) - std::for_each( links_.rbegin(), links_.rend(), - closer(BOOST_IOS::in) ); - if (is_convertible::value) - std::for_each( links_.begin(), links_.end(), - closer(BOOST_IOS::out) ); - flags_ &= ~f_open; - } - } - void reset() - { - typedef typename list_type::iterator iterator; - for ( iterator first = links_.begin(), - last = links_.end(); - first != last; - ++first ) - { - if ( (flags_ & f_complete) == 0 || - (flags_ & f_auto_close) == 0 ) - { - set_auto_close(*first, false); - } - streambuf_type* buf = 0; - std::swap(buf, *first); - delete buf; - } - links_.clear(); - flags_ &= ~f_complete; - flags_ &= ~f_open; - } - list_type links_; - client_type* client_; - int device_buffer_size_, - filter_buffer_size_, - pback_size_; - int flags_; - }; - friend struct chain_impl; - - //----------Member data---------------------------------------------------// - -private: - shared_ptr pimpl_; -}; - -} // End namespace detail. - -// -// Macro: BOOST_IOSTREAMS_DECL_CHAIN(name, category) -// Description: Defines a template derived from chain_base appropriate for a -// particular i/o category. The template has the following parameters: -// Ch - The character type. -// Tr - The character traits type. -// Alloc - The allocator type. -// Macro parameters: -// name_ - The name of the template to be defined. -// category_ - The i/o category of the template to be defined. -// -#define BOOST_IOSTREAMS_DECL_CHAIN(name_, default_char_) \ - template< typename Mode, typename Ch = default_char_, \ - typename Tr = BOOST_IOSTREAMS_CHAR_TRAITS(Ch), \ - typename Alloc = std::allocator > \ - class name_ : public boost::iostreams::detail::chain_base< \ - name_, \ - Ch, Tr, Alloc, Mode \ - > \ - { \ - public: \ - struct category : device_tag, Mode { }; \ - typedef Mode mode; \ - private: \ - typedef boost::iostreams::detail::chain_base< \ - name_, \ - Ch, Tr, Alloc, Mode \ - > base_type; \ - public: \ - typedef Ch char_type; \ - typedef Tr traits_type; \ - typedef typename traits_type::int_type int_type; \ - typedef typename traits_type::off_type off_type; \ - name_() { } \ - name_(const name_& rhs) { *this = rhs; } \ - name_& operator=(const name_& rhs) \ - { base_type::operator=(rhs); return *this; } \ - }; \ - /**/ -BOOST_IOSTREAMS_DECL_CHAIN(chain, char) -BOOST_IOSTREAMS_DECL_CHAIN(wchain, wchar_t) -#undef BOOST_IOSTREAMS_DECL_CHAIN - -//--------------Definition of chain_client------------------------------------// - -namespace detail { - -// -// Template name: chain_client -// Description: Class whose instances provide access to an underlying chain -// using an interface similar to the chains. -// Subclasses: the various stream and stream buffer templates. -// -template -class chain_client { -public: - typedef Chain chain_type; - typedef typename chain_type::char_type char_type; - typedef typename chain_type::traits_type traits_type; - typedef typename chain_type::size_type size_type; - typedef typename chain_type::mode mode; - - chain_client(chain_type* chn = 0) : chain_(chn ) { } - chain_client(chain_client* client) : chain_(client->chain_) { } - virtual ~chain_client() { } - - const std::type_info& component_type(int n) const - { return chain_->component_type(n); } - -#if !BOOST_WORKAROUND(BOOST_MSVC, < 1310) - // Deprecated. - template - const std::type_info& component_type() const - { return chain_->BOOST_NESTED_TEMPLATE component_type(); } - - template - T* component(int n) const - { return chain_->BOOST_NESTED_TEMPLATE component(n); } - - // Deprecated. - template - T* component() const - { return chain_->BOOST_NESTED_TEMPLATE component(); } -#else - template - T* component(int n, boost::type t) const - { return chain_->component(n, t); } -#endif - - bool is_complete() const { return chain_->is_complete(); } - bool auto_close() const { return chain_->auto_close(); } - void set_auto_close(bool close) { chain_->set_auto_close(close); } - bool strict_sync() { return chain_->strict_sync(); } - void set_device_buffer_size(std::streamsize n) - { chain_->set_device_buffer_size(n); } - void set_filter_buffer_size(std::streamsize n) - { chain_->set_filter_buffer_size(n); } - void set_pback_size(std::streamsize n) { chain_->set_pback_size(n); } - BOOST_IOSTREAMS_DEFINE_PUSH(push, mode, char_type, push_impl) - void pop() { chain_->pop(); } - bool empty() const { return chain_->empty(); } - size_type size() { return chain_->size(); } - void reset() { chain_->reset(); } - - // Returns a copy of the underlying chain. - chain_type filters() { return *chain_; } - chain_type filters() const { return *chain_; } -protected: - template - void push_impl(const T& t BOOST_IOSTREAMS_PUSH_PARAMS()) - { chain_->push(t BOOST_IOSTREAMS_PUSH_ARGS()); } - chain_type& ref() { return *chain_; } - void set_chain(chain_type* c) - { chain_ = c; chain_->register_client(this); } -#if !defined(BOOST_NO_MEMBER_TEMPLATE_FRIENDS) && \ - (!BOOST_WORKAROUND(__BORLANDC__, < 0x600)) - template - friend class chain_base; -#else - public: -#endif - virtual void notify() { } -private: - chain_type* chain_; -}; - -//--------------Implementation of chain_base----------------------------------// - -template -inline std::streamsize chain_base::read - (char_type* s, std::streamsize n) -{ return iostreams::read(*list().front(), s, n); } - -template -inline std::streamsize chain_base::write - (const char_type* s, std::streamsize n) -{ return iostreams::write(*list().front(), s, n); } - -template -inline std::streampos chain_base::seek - (stream_offset off, BOOST_IOS::seekdir way) -{ return iostreams::seek(*list().front(), off, way); } - -template -void chain_base::reset() -{ - using namespace std; - pimpl_->close(); - pimpl_->reset(); -} - -template -bool chain_base::is_complete() const -{ - return (pimpl_->flags_ & f_complete) != 0; -} - -template -bool chain_base::auto_close() const -{ - return (pimpl_->flags_ & f_auto_close) != 0; -} - -template -void chain_base::set_auto_close(bool close) -{ - pimpl_->flags_ = - (pimpl_->flags_ & ~f_auto_close) | - (close ? f_auto_close : 0); -} - -template -bool chain_base::strict_sync() -{ - typedef typename list_type::iterator iterator; - bool result = true; - for ( iterator first = list().begin(), - last = list().end(); - first != last; - ++first ) - { - bool s = (*first)->strict_sync(); - result = result && s; - } - return result; -} - -template -void chain_base::pop() -{ - assert(!empty()); - if (auto_close()) - pimpl_->close(); - streambuf_type* buf = 0; - std::swap(buf, list().back()); - buf->set_auto_close(false); - buf->set_next(0); - delete buf; - list().pop_back(); - pimpl_->flags_ &= ~f_complete; - if (auto_close() || list().empty()) - pimpl_->flags_ &= ~f_open; -} - -} // End namespace detail. - -} } // End namespaces iostreams, boost. - -#endif // #ifndef BOOST_IOSTREAMS_DETAIL_CHAIN_HPP_INCLUDED diff --git a/boost/boost/iostreams/char_traits.hpp b/boost/boost/iostreams/char_traits.hpp deleted file mode 100644 index 93e33c3f10..0000000000 --- a/boost/boost/iostreams/char_traits.hpp +++ /dev/null @@ -1,72 +0,0 @@ -// (C) Copyright Jonathan Turkanis 2003. -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt.) - -// See http://www.boost.org/libs/iostreams for documentation. - -#ifndef BOOST_IOSTREAMS_CHAR_TRAITS_HPP_INCLUDED -#define BOOST_IOSTREAMS_CHAR_TRAITS_HPP_INCLUDED - -#if defined(_MSC_VER) && (_MSC_VER >= 1020) -# pragma once -#endif - -#include -#include -#include // EOF. -#include // std::char_traits. -#include -#include -#ifndef BOOST_IOSTREAMS_NO_WIDE_STREAMS -# include -#endif - -#ifdef BOOST_NO_STDC_NAMESPACE -namespace std { using ::wint_t; } -#endif - -namespace boost { namespace iostreams { - -// Dinkumware that comes with QNX Momentics 6.3.0, 4.0.2, incorrectly defines -// the EOF and WEOF macros to not std:: qualify the wint_t type (and so does -// Sun C++ 5.8 + STLport 4). Fix by placing the def in this scope. -// NOTE: Use BOOST_WORKAROUND? -#if (defined(__QNX__) && defined(BOOST_DINKUMWARE_STDLIB)) \ - || defined(__SUNPRO_CC) -using ::std::wint_t; -#endif - -const int WOULD_BLOCK = (int) (EOF - 1); - -#ifndef BOOST_IOSTREAMS_NO_WIDE_STREAMS -const std::wint_t WWOULD_BLOCK = (std::wint_t) (WEOF - 1); -#endif - -template -struct char_traits; - -template<> -struct char_traits : BOOST_IOSTREAMS_CHAR_TRAITS(char) { - static char newline() { return '\n'; } - static int good() { return '\n'; } - static int would_block() { return WOULD_BLOCK; } - static bool is_good(int c) { return c != EOF && c != WOULD_BLOCK; } - static bool is_eof(int c) { return c == EOF; } - static bool would_block(int c) { return c == WOULD_BLOCK; } -}; - -#ifndef BOOST_IOSTREAMS_NO_WIDE_STREAMS -template<> -struct char_traits : std::char_traits { - static wchar_t newline() { return L'\n'; } - static std::wint_t good() { return L'\n'; } - static std::wint_t would_block() { return WWOULD_BLOCK; } - static bool is_good(std::wint_t c) { return c != WEOF && c != WWOULD_BLOCK; } - static bool is_eof(std::wint_t c) { return c == WEOF; } - static bool would_block(std::wint_t c) { return c == WWOULD_BLOCK; } -}; -#endif - -} } // End namespaces iostreams, boost. - -#endif // #ifndef BOOST_IOSTREAMS_CHAR_TRAITS_HPP_INCLUDED diff --git a/boost/boost/iostreams/checked_operations.hpp b/boost/boost/iostreams/checked_operations.hpp deleted file mode 100644 index f82f70f305..0000000000 --- a/boost/boost/iostreams/checked_operations.hpp +++ /dev/null @@ -1,150 +0,0 @@ -// (C) Copyright Jonathan Turkanis 2005. -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt.) - -// See http://www.boost.org/libs/iostreams for documentation. - -// Contains implementations of get, read, put, write and seek which -// check a device's mode at runtime instead of compile time. - -#ifndef BOOST_IOSTREAMS_DETAIL_CHECKED_OPERATIONS_HPP_INCLUDED -#define BOOST_IOSTREAMS_DETAIL_CHECKED_OPERATIONS_HPP_INCLUDED - -#include -#include -#include -#include -#include -#include -#include -#include -#include - -// Must come last. -#include // MSVC. - -namespace boost { namespace iostreams { - -namespace detail { - -template -struct read_write_if_impl; - -template -struct seek_if_impl; - -} // End namespace detail. - -template -typename int_type_of::type get_if(T& t) -{ - typedef typename detail::dispatch::type tag; - return detail::read_write_if_impl::get(t); -} - -template -inline std::streamsize -read_if(T& t, typename char_type_of::type* s, std::streamsize n) -{ - typedef typename detail::dispatch::type tag; - return detail::read_write_if_impl::read(t, s, n); -} - -template -bool put_if(T& t, typename char_type_of::type c) -{ - typedef typename detail::dispatch::type tag; - return detail::read_write_if_impl::put(t, c); -} - -template -inline std::streamsize write_if - (T& t, const typename char_type_of::type* s, std::streamsize n) -{ - typedef typename detail::dispatch::type tag; - return detail::read_write_if_impl::write(t, s, n); -} - -template -inline std::streampos -seek_if( T& t, stream_offset off, BOOST_IOS::seekdir way, - BOOST_IOS::openmode which = BOOST_IOS::in | BOOST_IOS::out ) -{ - using namespace detail; - typedef typename dispatch::type tag; - return seek_if_impl::seek(t, off, way, which); -} - -namespace detail { - -//------------------Specializations of read_write_if_impl---------------------// - -template<> -struct read_write_if_impl { - template - static typename int_type_of::type get(T& t) - { return iostreams::get(t); } - - template - static std::streamsize - read(T& t, typename char_type_of::type* s, std::streamsize n) - { return iostreams::read(t, s, n); } - - template - static bool put(T&, typename char_type_of::type) - { throw cant_write(); } - - template - static std::streamsize - write(T&, const typename char_type_of::type*, std::streamsize) - { throw cant_write(); } -}; - -template<> -struct read_write_if_impl { - template - static typename int_type_of::type get(T&) - { throw cant_read(); } - - template - static std::streamsize - read(T&, typename char_type_of::type*, std::streamsize) - { throw cant_read(); } - - template - static bool put(T& t, typename char_type_of::type c) - { return iostreams::put(t, c); } - - template - static std::streamsize - write( T& t, const typename char_type_of::type* s, - std::streamsize n ) - { return iostreams::write(t, s, n); } -}; - -//------------------Specializations of seek_if_impl---------------------------// - -template<> -struct seek_if_impl { - template - static std::streampos - seek( T& t, stream_offset off, BOOST_IOS::seekdir way, - BOOST_IOS::openmode which ) - { return iostreams::seek(t, off, way, which); } -}; - -template<> -struct seek_if_impl { - template - static std::streampos - seek(T&, stream_offset, BOOST_IOS::seekdir, BOOST_IOS::openmode) - { throw cant_seek(); } -}; - -} // End namespace detail. - -} } // End namespaces iostreams, boost. - -#include // MSVC. - -#endif // #ifndef BOOST_IOSTREAMS_DETAIL_CHECKED_OPERATIONS_HPP_INCLUDED diff --git a/boost/boost/iostreams/close.hpp b/boost/boost/iostreams/close.hpp deleted file mode 100644 index 885e70a976..0000000000 --- a/boost/boost/iostreams/close.hpp +++ /dev/null @@ -1,145 +0,0 @@ -// (C) Copyright Jonathan Turkanis 2003. -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt.) - -// See http://www.boost.org/libs/iostreams for documentation. - -#ifndef BOOST_IOSTREAMS_CLOSE_HPP_INCLUDED -#define BOOST_IOSTREAMS_CLOSE_HPP_INCLUDED - -#if defined(_MSC_VER) && (_MSC_VER >= 1020) -# pragma once -#endif - -#include // DEDUCED_TYPENAME, MSVC. -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -// Must come last. -#include - -#if BOOST_WORKAROUND(BOOST_MSVC, < 1300) //-----------------------------------// -# include -#else // #if BOOST_WORKAROUND(BOOST_MSVC, < 1300) //--------------------------// - -namespace boost { namespace iostreams { - -namespace detail { - -template -struct close_impl; - -} // End namespace detail. - -template -void close(T& t, BOOST_IOS::openmode which) -{ detail::close_impl::close(detail::unwrap(t), which); } - -template -void close(T& t, Sink& snk, BOOST_IOS::openmode which) -{ detail::close_impl::close(detail::unwrap(t), snk, which); } - -namespace detail { - -//------------------Definition of close_impl----------------------------------// - -template -struct close_tag { - typedef typename category_of::type category; - typedef typename - mpl::eval_if< - is_convertible, - mpl::if_< - mpl::or_< - is_convertible, - is_convertible - >, - two_sequence, - closable_tag - >, - mpl::identity - >::type type; -}; - -template -struct close_impl - : mpl::if_< - is_custom, - operations, - close_impl::type> - >::type - { }; - -template<> -struct close_impl { - template - static void close(T& t, BOOST_IOS::openmode which) - { - if ((which & BOOST_IOS::out) != 0) - iostreams::flush(t); - } - - template - static void close(T& t, Sink& snk, BOOST_IOS::openmode which) - { - if ((which & BOOST_IOS::out) != 0) { - non_blocking_adapter nb(snk); - iostreams::flush(t, nb); - } - } -}; - -#include // Borland. -template<> -struct close_impl { - template - static void close(T& t, BOOST_IOS::openmode which) - { - typedef typename category_of::type category; - const bool in = is_convertible::value && - !is_convertible::value; - if (in == ((which & BOOST_IOS::in) != 0)) - t.close(); - } - template - static void close(T& t, Sink& snk, BOOST_IOS::openmode which) - { - typedef typename category_of::type category; - const bool in = is_convertible::value && - !is_convertible::value; - if (in == ((which & BOOST_IOS::in) != 0)) { - non_blocking_adapter nb(snk); - t.close(nb); - } - } -}; - -template<> -struct close_impl { - template - static void close(T& t, BOOST_IOS::openmode which) { t.close(which); } - template - static void close(T& t, Sink& snk, BOOST_IOS::openmode which) - { - non_blocking_adapter nb(snk); - t.close(nb, which); - } -}; - -} // End namespace detail. - -} } // End namespaces iostreams, boost. - -#endif // #if BOOST_WORKAROUND(BOOST_MSVC, < 1300) //-------------------------// - -#include - -#endif // #ifndef BOOST_IOSTREAMS_CLOSE_HPP_INCLUDED diff --git a/boost/boost/iostreams/concepts.hpp b/boost/boost/iostreams/concepts.hpp deleted file mode 100644 index 64344d158b..0000000000 --- a/boost/boost/iostreams/concepts.hpp +++ /dev/null @@ -1,128 +0,0 @@ -// (C) Copyright Jonathan Turkanis 2003. -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt.) - -// See http://www.boost.org/libs/iostreams for documentation. - -#ifndef BOOST_IOSTREAMS_CONCEPTS_HPP_INCLUDED -#define BOOST_IOSTREAMS_CONCEPTS_HPP_INCLUDED - -#if defined(_MSC_VER) && (_MSC_VER >= 1020) -# pragma once -#endif - -#include // BOOST_MSVC -#include -#include -#include -#include // openmode. -#include -#include -#include - -namespace boost { namespace iostreams { - -//--------------Definitions of helper templates for device concepts-----------// - -template -struct device { - typedef Ch char_type; - struct category - : Mode, - device_tag, - closable_tag, - localizable_tag - { }; - - void close() - { - using namespace detail; - BOOST_STATIC_ASSERT((!is_convertible::value)); - } - - void close(BOOST_IOS::openmode) - { - using namespace detail; - BOOST_STATIC_ASSERT((is_convertible::value)); - } - - template - void imbue(const Locale&) { } -}; - -template -struct wdevice : device { }; - -typedef device source; -typedef wdevice wsource; -typedef device sink; -typedef wdevice wsink; - -//--------------Definitions of helper templates for simple filter concepts----// - -template -struct filter { - typedef Ch char_type; - struct category - : Mode, - filter_tag, - closable_tag, - localizable_tag - { }; - - template - void close(Device&) - { - using namespace detail; - BOOST_STATIC_ASSERT((!is_convertible::value)); - BOOST_STATIC_ASSERT((!is_convertible::value)); - } - - template - void close(Device&, BOOST_IOS::openmode) - { - using namespace detail; - BOOST_STATIC_ASSERT( - (is_convertible::value) || - (is_convertible::value) - ); - } - - template - void imbue(const Locale&) { } -}; - -template -struct wfilter : filter { }; - -typedef filter input_filter; -typedef wfilter input_wfilter; -typedef filter output_filter; -typedef wfilter output_wfilter; -typedef filter seekable_filter; -typedef wfilter seekable_wfilter; -typedef filter dual_use_filter; -typedef wfilter dual_use_wfilter; - -//------Definitions of helper templates for multi-character filter cncepts----// - -template -struct multichar_filter : filter { - struct category : filter::category, multichar_tag { }; -}; - -template -struct multichar_wfilter : multichar_filter { }; - -typedef multichar_filter multichar_input_filter; -typedef multichar_filter multichar_input_wfilter; -typedef multichar_filter multichar_output_filter; -typedef multichar_filter multichar_output_wfilter; -typedef multichar_filter multichar_dual_use_filter; -typedef multichar_filter multichar_dual_use_wfilter; - -//----------------------------------------------------------------------------// - -} } // End namespaces iostreams, boost. - -#endif // #ifndef BOOST_IOSTREAMS_CONCEPTS_HPP_INCLUDED diff --git a/boost/boost/iostreams/constants.hpp b/boost/boost/iostreams/constants.hpp deleted file mode 100644 index 0e405d67c3..0000000000 --- a/boost/boost/iostreams/constants.hpp +++ /dev/null @@ -1,41 +0,0 @@ -// (C) Copyright Jonathan Turkanis 2003. -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt.) - -// See http://www.boost.org/libs/iostreams for documentation. - -// Contains constants used by library. - -#ifndef BOOST_IOSTREAMS_CONSTANTS_HPP_INCLUDED -#define BOOST_IOSTREAMS_CONSTANTS_HPP_INCLUDED - -#if defined(_MSC_VER) && (_MSC_VER >= 1020) -# pragma once -#endif - -#ifndef BOOST_IOSTREAMS_DEFAULT_DEVICE_BUFFER_SIZE -# define BOOST_IOSTREAMS_DEFAULT_DEVICE_BUFFER_SIZE 4096 -#endif - -#ifndef BOOST_IOSTREAMS_DEFAULT_FILTER_BUFFER_SIZE -# define BOOST_IOSTREAMS_DEFAULT_FILTER_BUFFER_SIZE 128 -#endif - -#ifndef BOOST_IOSTREAMS_DEFAULT_PBACK_BUFFER_SIZE -# define BOOST_IOSTREAMS_DEFAULT_PBACK_BUFFER_SIZE 4 -#endif - -#include // streamsize. - -namespace boost { namespace iostreams { - -const std::streamsize default_device_buffer_size = - BOOST_IOSTREAMS_DEFAULT_DEVICE_BUFFER_SIZE; -const std::streamsize default_filter_buffer_size = - BOOST_IOSTREAMS_DEFAULT_FILTER_BUFFER_SIZE; -const std::streamsize default_pback_buffer_size = - BOOST_IOSTREAMS_DEFAULT_PBACK_BUFFER_SIZE; - -} } // End namespaces iostreams, boost. - -#endif // #ifndef BOOST_IOSTREAMS_CONSTANTS_HPP_INCLUDED diff --git a/boost/boost/iostreams/detail/access_control.hpp b/boost/boost/iostreams/detail/access_control.hpp deleted file mode 100644 index c886dccd99..0000000000 --- a/boost/boost/iostreams/detail/access_control.hpp +++ /dev/null @@ -1,86 +0,0 @@ -// (C) Copyright Jonathan Turkanis 2003. -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt.) - -// See http://www.boost.org/libs/iostreams for documentation. - -// Contains the definition of the class template access_control, which -// allows the type of inheritance from a provided base class to be specified -// using a template parameter. - - -#ifndef BOOST_IOSTREAMS_ACCESS_CONTROL_HPP_INCLUDED -#define BOOST_IOSTREAMS_ACCESS_CONTROL_HPP_INCLUDED - -#if defined(_MSC_VER) && (_MSC_VER >= 1020) -# pragma once -#endif - -#include -#include -#include - -namespace boost { namespace iostreams { - -struct protected_ { }; // Represents protected inheritance. -struct public_ { }; // Represents public inheritance. - - -namespace detail { - - // Implements protected inheritance. - template - struct prot_ : protected U - { - prot_() { } - template prot_(V v) : U(v) { } - }; - - // Implements public inheritance. - template struct pub_ : public U { - pub_() { } - template pub_(V v) : U(v) { } - }; - -// -// Used to deduce the base type for the template access_control. -// -template -struct access_control_base { - typedef int bad_access_specifier; - typedef typename - iostreams::select< // Disambiguation for Tru64 - ::boost::is_same< - Access, protected_ - >, prot_, - ::boost::is_same< - Access, public_ - >, pub_, - else_, bad_access_specifier - >::type type; -}; - -} // End namespace detail. - -// -// Template name: access_control. -// Description: Allows the type of inheritance from a provided base class -// to be specified using an int template parameter. -// Template parameters: -// Base - The class from which to inherit (indirectly.) -// Access - The type of access desired. Must be one of the -// values access_base::prot or access_base::pub. -// -template< typename T, typename Access, - typename Base = // VC6 workaraound (Compiler Error C2516) - typename detail::access_control_base::type > -struct access_control : public Base { - access_control() { } - template explicit access_control(U u) : Base(u) { } -}; - -//----------------------------------------------------------------------------// - -} } // End namespaces iostreams, boost. - -#endif // #ifndef BOOST_IOSTREAMS_ACCESS_CONTROL_HPP_INCLUDED diff --git a/boost/boost/iostreams/detail/adapter/concept_adapter.hpp b/boost/boost/iostreams/detail/adapter/concept_adapter.hpp deleted file mode 100644 index 929fd85884..0000000000 --- a/boost/boost/iostreams/detail/adapter/concept_adapter.hpp +++ /dev/null @@ -1,276 +0,0 @@ -// (C) Copyright Jonathan Turkanis 2003. -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt.) - -// See http://www.boost.org/libs/iostreams for documentation. - -#ifndef BOOST_IOSTREAMS_DETAIL_CONCEPT_ADAPTER_HPP_INCLUDED -#define BOOST_IOSTREAMS_DETAIL_CONCEPT_ADAPTER_HPP_INCLUDED - -#include // SFINAE. -#include -#include -#include -#include -#include -#include -#include -#include // pubsync. -#include -#include -#include -#include -#include - -// Must come last. -#include // MSVC. - -namespace boost { namespace iostreams { namespace detail { - -template struct device_wrapper_impl; -template struct flt_wrapper_impl; - -template -class concept_adapter { -private: - typedef typename detail::value_type::type value_type; - typedef typename dispatch::type input_tag; - typedef typename dispatch::type output_tag; - typedef typename - mpl::if_< - is_device, - device_wrapper_impl, - flt_wrapper_impl - >::type input_impl; - typedef typename - mpl::if_< - is_device, - device_wrapper_impl, - flt_wrapper_impl - >::type output_impl; - typedef typename - mpl::if_< - is_device, - device_wrapper_impl, - flt_wrapper_impl - >::type any_impl; -public: - typedef typename char_type_of::type char_type; - typedef typename category_of::type category; - - explicit concept_adapter(const reference_wrapper& ref) : t_(ref.get()) - { BOOST_STATIC_ASSERT(is_std_io::value); } - explicit concept_adapter(const T& t) : t_(t) - { BOOST_STATIC_ASSERT(!is_std_io::value); } - - T& operator*() { return t_; } - T* operator->() { return &t_; } - - std::streamsize read(char_type* s, std::streamsize n) - { return this->read(s, n, (basic_null_source*) 0); } - - template - std::streamsize read(char_type* s, std::streamsize n, Source* src) - { return input_impl::read(t_, src, s, n); } - - std::streamsize write(const char_type* s, std::streamsize n) - { return this->write(s, n, (basic_null_sink*) 0); } - - template - std::streamsize write(const char_type* s, std::streamsize n, Sink* snk) - { return output_impl::write(t_, snk, s, n); } - - std::streampos seek( stream_offset off, BOOST_IOS::seekdir way, - BOOST_IOS::openmode which ) - { - return this->seek( off, way, which, - (basic_null_device*) 0); - } - - template - std::streampos seek( stream_offset off, BOOST_IOS::seekdir way, - BOOST_IOS::openmode which, Device* dev ) - { return any_impl::seek(t_, dev, off, way, which); } - - void close(BOOST_IOS::openmode which) - { this->close(which, (basic_null_device*) 0); } - - template - void close(BOOST_IOS::openmode which, Device* dev) - { any_impl::close(t_, dev, which); } - - bool flush( BOOST_IOSTREAMS_BASIC_STREAMBUF(char_type, - BOOST_IOSTREAMS_CHAR_TRAITS(char_type))* sb ) - { - bool result = any_impl::flush(t_, sb); - if (sb && sb->BOOST_IOSTREAMS_PUBSYNC() == -1) - result = false; - return result; - } - - template // Avoid dependency on - void imbue(const Locale& loc) { iostreams::imbue(t_, loc); } - - std::streamsize optimal_buffer_size() const - { return iostreams::optimal_buffer_size(t_); } -public: - value_type t_; -}; - -//------------------Specializations of device_wrapper_impl--------------------// - -template<> -struct device_wrapper_impl { - template - static std::streampos - seek( Device& dev, Dummy*, stream_offset off, - BOOST_IOS::seekdir way, BOOST_IOS::openmode which ) - { - typedef typename category_of::type category; - return seek(dev, off, way, which, category()); - } - - template - static std::streampos - seek( Device&, stream_offset, BOOST_IOS::seekdir, - BOOST_IOS::openmode, any_tag ) - { - throw cant_seek(); - } - - template - static std::streampos - seek( Device& dev, stream_offset off, - BOOST_IOS::seekdir way, BOOST_IOS::openmode which, - random_access ) - { - return iostreams::seek(dev, off, way, which); - } - - template - static void close(Device& dev, Dummy*, BOOST_IOS::openmode which) - { iostreams::close(dev, which); } - - template - static bool flush(Device& dev, Dummy*) - { return iostreams::flush(dev); } -}; - - -template<> -struct device_wrapper_impl : device_wrapper_impl { - template - static std::streamsize - read( Device& dev, Dummy*, typename char_type_of::type* s, - std::streamsize n ) - { return iostreams::read(dev, s, n); } - - template - static std::streamsize - write( Device&, Dummy*, const typename char_type_of::type*, - std::streamsize ) - { throw cant_write(); } -}; - -template<> -struct device_wrapper_impl { - template - static std::streamsize - read(Device&, Dummy*, typename char_type_of::type*, std::streamsize) - { throw cant_read(); } - - template - static std::streamsize - write( Device& dev, Dummy*, const typename char_type_of::type* s, - std::streamsize n ) - { return iostreams::write(dev, s, n); } -}; - -//------------------Specializations of flt_wrapper_impl--------------------// - -template<> -struct flt_wrapper_impl { - template - static std::streampos - seek( Filter& f, Device* dev, stream_offset off, - BOOST_IOS::seekdir way, BOOST_IOS::openmode which ) - { - typedef typename category_of::type category; - return seek(f, dev, off, way, which, category()); - } - - template - static std::streampos - seek( Filter&, Device*, stream_offset, - BOOST_IOS::seekdir, BOOST_IOS::openmode, any_tag ) - { throw cant_seek(); } - - template - static std::streampos - seek( Filter& f, Device* dev, stream_offset off, - BOOST_IOS::seekdir way, BOOST_IOS::openmode which, - random_access tag ) - { - typedef typename category_of::type category; - return seek(f, dev, off, way, which, tag, category()); - } - - template - static std::streampos - seek( Filter& f, Device* dev, stream_offset off, - BOOST_IOS::seekdir way, BOOST_IOS::openmode which, - random_access, any_tag ) - { return f.seek(*dev, off, way); } - - template - static std::streampos - seek( Filter& f, Device* dev, stream_offset off, - BOOST_IOS::seekdir way, BOOST_IOS::openmode which, - random_access, two_sequence ) - { return f.seek(*dev, off, way, which); } - - template - static void close(Filter& f, Device* dev, BOOST_IOS::openmode which) - { iostreams::close(f, *dev, which); } - - template - static bool flush(Filter& f, Device* dev) - { return iostreams::flush(f, *dev); } -}; - -template<> -struct flt_wrapper_impl { - template - static std::streamsize - read( Filter& f, Source* src, typename char_type_of::type* s, - std::streamsize n ) - { return iostreams::read(f, *src, s, n); } - - template - static std::streamsize - write( Filter&, Sink*, const typename char_type_of::type*, - std::streamsize ) - { throw cant_write(); } -}; - -template<> -struct flt_wrapper_impl { - template - static std::streamsize - read(Filter&, Source*, typename char_type_of::type*,std::streamsize) - { throw cant_read(); } - - template - static std::streamsize - write( Filter& f, Sink* snk, const typename char_type_of::type* s, - std::streamsize n ) - { return iostreams::write(f, *snk, s, n); } -}; - -//----------------------------------------------------------------------------// - -} } } // End namespaces detail, iostreams, boost. - -#include // MSVC. - -#endif // #ifndef BOOST_IOSTREAMS_DETAIL_CONCEPT_ADAPTER_HPP_INCLUDED diff --git a/boost/boost/iostreams/detail/adapter/mode_adapter.hpp b/boost/boost/iostreams/detail/adapter/mode_adapter.hpp deleted file mode 100644 index d490985cd6..0000000000 --- a/boost/boost/iostreams/detail/adapter/mode_adapter.hpp +++ /dev/null @@ -1,117 +0,0 @@ -// (C) Copyright Jonathan Turkanis 2003. -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt.) - -// See http://www.boost.org/libs/iostreams for documentation. - -#ifndef BOOST_IOSTREAMS_DETAIL_MODE_ADAPTER_HPP_INCLUDED -#define BOOST_IOSTREAMS_DETAIL_MODE_ADAPTER_HPP_INCLUDED - -#if defined(_MSC_VER) && (_MSC_VER >= 1020) -# pragma once -#endif - -// Contains the definition of the class template mode_adapter, which allows -// a filter or device to function as if it has a different i/o mode than that -// deduced by the metafunction mode_of. - -#include // BOOST_MSVC. -#include -#include -#include // openmode, seekdir, int types. -#include -#include -#include - -namespace boost { namespace iostreams { namespace detail { - -template -class mode_adapter { -private: - struct empty_base { }; -public: - typedef typename wrapped_type::type policy_type; - typedef typename char_type_of::type char_type; - struct category - : Mode, - device_tag, - mpl::if_, filter_tag, device_tag>, - mpl::if_, multichar_tag, empty_base>, - #if !BOOST_WORKAROUND(BOOST_MSVC, < 1300) - closable_tag, // VC6 can't see member close()! - #endif - localizable_tag - { }; - explicit mode_adapter(const policy_type& t) : t_(t) { } - - // Device member functions. - - std::streamsize read(char_type* s, std::streamsize n); - std::streamsize write(const char_type* s, std::streamsize n); - std::streampos seek( stream_offset off, BOOST_IOS::seekdir way, - BOOST_IOS::openmode which = - BOOST_IOS::in | BOOST_IOS::out ); -#if !BOOST_WORKAROUND(BOOST_MSVC, < 1300) - void close(BOOST_IOS::openmode which = BOOST_IOS::in | BOOST_IOS::out); -#endif - - // Filter member functions. - - template - std::streamsize read(Source& src, char_type* s, std::streamsize n) - { return iostreams::read(t_, src, s, n); } - - template - std::streamsize write(Sink& snk, const char_type* s, std::streamsize n) - { return iostreams::write(t_, snk, s, n); } - - template - std::streampos seek(Device& dev, stream_offset off, BOOST_IOS::seekdir way) - { return iostreams::seek(t_, dev, off, way); } - - template - std::streampos seek( Device& dev, stream_offset off, - BOOST_IOS::seekdir way, BOOST_IOS::openmode which ) - { return iostreams::seek(t_, dev, off, way, which); } - - template - void close(Device& dev) - { iostreams::close(t_, dev); } - - template - void close(Device& dev, BOOST_IOS::openmode which) - { iostreams::close(t_, dev, which); } - - template - void imbue(const Locale& loc) - { iostreams::imbue(t_, loc); } -private: - policy_type t_; -}; - -//------------------Implementation of mode_adapter----------------------------// - -template -std::streamsize mode_adapter::read - (char_type* s, std::streamsize n) -{ return boost::iostreams::read(t_, s, n); } - -template -std::streamsize mode_adapter::write - (const char_type* s, std::streamsize n) -{ return boost::iostreams::write(t_, s, n); } - -template -std::streampos mode_adapter::seek - (stream_offset off, BOOST_IOS::seekdir way, BOOST_IOS::openmode which) -{ return boost::iostreams::seek(t_, off, way, which); } - -#if !BOOST_WORKAROUND(BOOST_MSVC, < 1300) - template - void mode_adapter::close(BOOST_IOS::openmode which) - { iostreams::close(t_, which); } -#endif - -} } } // End namespaces detail, iostreams, boost. - -#endif // #ifndef BOOST_IOSTREAMS_DETAIL_MODE_ADAPTER_HPP_INCLUDED //-----// diff --git a/boost/boost/iostreams/detail/adapter/non_blocking_adapter.hpp b/boost/boost/iostreams/detail/adapter/non_blocking_adapter.hpp deleted file mode 100644 index 9768d654dd..0000000000 --- a/boost/boost/iostreams/detail/adapter/non_blocking_adapter.hpp +++ /dev/null @@ -1,57 +0,0 @@ -// (C) Copyright Jonathan Turkanis 2005. -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt.) - -// See http://www.boost.org/libs/iostreams for documentation. - -#ifndef BOOST_IOSTREAMS_DETAIL_NON_BLOCKING_ADAPTER_HPP_INCLUDED -#define BOOST_IOSTREAMS_DETAIL_NON_BLOCKING_ADAPTER_HPP_INCLUDED - -#include // streamsize, seekdir, openmode. -#include -#include -#include -#include - -namespace boost { namespace iostreams { - -template -class non_blocking_adapter { -public: - typedef typename char_type_of::type char_type; - struct category - : mode_of::type, device_tag - { }; - explicit non_blocking_adapter(Device& dev) : device_(dev) { } - std::streamsize read(char_type* s, std::streamsize n) - { - std::streamsize result = 0; - while (result < n) { - std::streamsize amt = iostreams::read(device_, s, n); - if (amt == -1) - break; - result += amt; - } - return result != 0 ? result : -1; - } - std::streamsize write(const char_type* s, std::streamsize n) - { - std::streamsize result = 0; - while (result < n) { - std::streamsize amt = - iostreams::write(device_, s + result, n - result); - result += amt; - } - return result; - } - std::streampos seek( stream_offset off, BOOST_IOS::seekdir way, - BOOST_IOS::openmode which = - BOOST_IOS::in | BOOST_IOS::out ) - { return iostreams::seek(device_, off, way, which); } -public: - Device& device_; -}; - -} } // End namespace iostreams. - -#endif // #ifndef BOOST_IOSTREAMS_DETAIL_NON_BLOCKING_ADAPTER_HPP_INCLUDED diff --git a/boost/boost/iostreams/detail/adapter/output_iterator_adapter.hpp b/boost/boost/iostreams/detail/adapter/output_iterator_adapter.hpp deleted file mode 100644 index 1de984f97a..0000000000 --- a/boost/boost/iostreams/detail/adapter/output_iterator_adapter.hpp +++ /dev/null @@ -1,40 +0,0 @@ -// (C) Copyright Jonathan Turkanis 2003. -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt.) - -// See http://www.boost.org/libs/iostreams for documentation. - -#ifndef BOOST_IOSTREAMS_DETAIL_OUTPUT_ITERATOR_ADAPTER_HPP_INCLUDED -#define BOOST_IOSTREAMS_DETAIL_OUTPUT_ITERATOR_ADAPTER_HPP_INCLUDED - -#if defined(_MSC_VER) && (_MSC_VER >= 1020) -# pragma once -#endif - -#include // copy. -#include // streamsize. -#include // tags. -#include -#include - -namespace boost { namespace iostreams { namespace detail { - -template -class output_iterator_adapter { -public: - BOOST_STATIC_ASSERT((is_convertible::value)); - typedef Ch char_type; - typedef sink_tag category; - explicit output_iterator_adapter(OutIt out) : out_(out) { } - std::streamsize write(const char_type* s, std::streamsize n) - { - std::copy(s, s + n, out_); - return n; - } -private: - OutIt out_; -}; - -} } } // End namespaces detail, iostreams, boost. - -#endif // #ifndef BOOST_IOSTREAMS_DETAIL_OUTPUT_ITERATOR_ADAPTER_HPP_INCLUDED //-----// diff --git a/boost/boost/iostreams/detail/adapter/range_adapter.hpp b/boost/boost/iostreams/detail/adapter/range_adapter.hpp deleted file mode 100644 index 15888af46e..0000000000 --- a/boost/boost/iostreams/detail/adapter/range_adapter.hpp +++ /dev/null @@ -1,182 +0,0 @@ -// (C) Copyright Jonathan Turkanis 2003. -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt.) - -// See http://www.boost.org/libs/iostreams for documentation. - -#ifndef BOOST_IOSTREAMS_DETAIL_RANGE_ADAPTER_HPP_INCLUDED -#define BOOST_IOSTREAMS_DETAIL_RANGE_ADAPTER_HPP_INCLUDED - -#if defined(_MSC_VER) && (_MSC_VER >= 1020) -# pragma once -#endif - -#include // min. -#include -#include // ptrdiff_t. -#include // streamsize, streamoff. -#include // boost::iterator_traits. -#include -#include -#include -#include -#include -#include - -// Must come last. -#include // MSVC. - -namespace boost { namespace iostreams { namespace detail { - -// Used for simulated tag dispatch. -template struct range_adapter_impl; - -// -// Template name: range_adapter -// Description: Device based on an instance of boost::iterator_range. -// Template paramters: -// Mode - A mode tag. -// Range - An instance of iterator_range. -// -template -class range_adapter { -private: - typedef typename Range::iterator iterator; - typedef boost::detail::iterator_traits iter_traits; - typedef typename iter_traits::iterator_category iter_cat; -public: - typedef typename Range::value_type char_type; - struct category : Mode, device_tag { }; - typedef typename - mpl::if_< - is_convertible< - iter_cat, - std::random_access_iterator_tag - >, - std::random_access_iterator_tag, - std::forward_iterator_tag - >::type tag; - typedef range_adapter_impl impl; - - explicit range_adapter(const Range& rng); - range_adapter(iterator first, iterator last); - std::streamsize read(char_type* s, std::streamsize n); - std::streamsize write(const char_type* s, std::streamsize n); - std::streampos seek(stream_offset off, BOOST_IOS::seekdir way); -private: - iterator first_, cur_, last_; -}; - -//------------------Implementation of range_adapter---------------------------// - -template -range_adapter::range_adapter(const Range& rng) - : first_(rng.begin()), cur_(rng.begin()), last_(rng.end()) { } - -template -range_adapter::range_adapter(iterator first, iterator last) - : first_(first), cur_(first), last_(last) { } - -template -inline std::streamsize range_adapter::read - (char_type* s, std::streamsize n) -{ return impl::read(cur_, last_, s, n); } - -template -inline std::streamsize range_adapter::write - (const char_type* s, std::streamsize n) -{ return impl::write(cur_, last_, s, n); } - - -template -std::streampos range_adapter::seek - (stream_offset off, BOOST_IOS::seekdir way) -{ - impl::seek(first_, cur_, last_, off, way); - return offset_to_position(cur_ - first_); -} - -//------------------Implementation of range_adapter_impl----------------------// - -template<> -struct range_adapter_impl { - template - static std::streamsize read - (Iter& cur, Iter& last, Ch* s,std::streamsize n) - { - std::streamsize rem = n; // No. of chars remaining. - while (cur != last && rem-- > 0) *s++ = *cur++; - return n - rem != 0 ? n - rem : -1; - } - - template - static std::streamsize write - (Iter& cur, Iter& last, const Ch* s, std::streamsize n) - { - while (cur != last && n-- > 0) *cur++ = *s++; - if (cur == last && n > 0) - throw write_area_exhausted(); - return n; - } -}; - -template<> -struct range_adapter_impl { - template - static std::streamsize read - (Iter& cur, Iter& last, Ch* s,std::streamsize n) - { - std::streamsize result = - (std::min)(static_cast(last - cur), n); - if (result) - std::copy(cur, cur + result, s); - cur += result; - return result != 0 ? result : -1; - } - - template - static std::streamsize write - (Iter& cur, Iter& last, const Ch* s, std::streamsize n) - { - std::streamsize count = - (std::min)(static_cast(last - cur), n); - std::copy(s, s + count, cur); - cur += count; - if (count < n) - throw write_area_exhausted(); - return n; - } - - template - static void seek - ( Iter& first, Iter& cur, Iter& last, stream_offset off, - BOOST_IOS::seekdir way ) - { - using namespace std; - switch (way) { - case BOOST_IOS::beg: - if (off > last - first || off < 0) bad_seek(); - cur = first + off; - break; - case BOOST_IOS::cur: - { - std::ptrdiff_t newoff = cur - first + off; - if (newoff > last - first || newoff < 0) bad_seek(); - cur += off; - break; - } - case BOOST_IOS::end: - if (last - first + off < 0 || off > 0) bad_seek(); - cur = last + off; - break; - default: - assert(0); - } - } -}; - -} } } // End namespaces detail, iostreams, boost. - -#include // MSVC. - -#endif // #ifndef BOOST_IOSTREAMS_DETAIL_RANGE_ADAPTER_HPP_INCLUDED //---------------// diff --git a/boost/boost/iostreams/detail/bool_trait_def.hpp b/boost/boost/iostreams/detail/bool_trait_def.hpp deleted file mode 100644 index 625233a221..0000000000 --- a/boost/boost/iostreams/detail/bool_trait_def.hpp +++ /dev/null @@ -1,48 +0,0 @@ -// (C) Copyright Jonathan Turkanis 2003. -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt.) - -// See http://www.boost.org/libs/iostreams for documentation. - -#ifndef BOOST_IOSTREAMS_DETAIL_BOOL_TRAIT_DEF_HPP_INCLUDED -#define BOOST_IOSTREAMS_DETAIL_BOOL_TRAIT_DEF_HPP_INCLUDED - -#include // BOOST_STATIC_CONSTANT. -#include -#include -#include -#include -#include -#include - -// -// Macro name: BOOST_IOSTREAMS_BOOL_TRAIT_DEF -// Description: Used to generate the traits classes is_istream, is_ostream, -// etc. -// -#if BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x582)) -# define BOOST_IOSTREAMS_TRAIT_NAMESPACE(trait) -#else -# define BOOST_IOSTREAMS_TRAIT_NAMESPACE(trait) BOOST_PP_CAT(trait, _impl_):: -#endif -#define BOOST_IOSTREAMS_BOOL_TRAIT_DEF(trait, type, arity) \ - namespace BOOST_PP_CAT(trait, _impl_) { \ - BOOST_IOSTREAMS_TEMPLATE_PARAMS(arity, T) \ - type_traits::yes_type helper \ - (const volatile type BOOST_IOSTREAMS_TEMPLATE_ARGS(arity, T)*); \ - type_traits::no_type helper(...); \ - template \ - struct impl { \ - BOOST_STATIC_CONSTANT(bool, value = \ - (sizeof(BOOST_IOSTREAMS_TRAIT_NAMESPACE(trait) \ - helper(static_cast(0))) == \ - sizeof(type_traits::yes_type))); \ - }; \ - } \ - template \ - struct trait \ - : mpl::bool_::value> \ - { BOOST_MPL_AUX_LAMBDA_SUPPORT(1, trait, (T)) }; \ - /**/ - -#endif // #ifndef BOOST_IOSTREAMS_DETAIL_BOOL_TRAIT_DEF_HPP_INCLUDED diff --git a/boost/boost/iostreams/detail/buffer.hpp b/boost/boost/iostreams/detail/buffer.hpp deleted file mode 100644 index 9752eed94c..0000000000 --- a/boost/boost/iostreams/detail/buffer.hpp +++ /dev/null @@ -1,199 +0,0 @@ -// (C) Copyright Jonathan Turkanis 2003-5. -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt.) - -// See http://www.boost.org/libs/iostreams for documentation. - -#ifndef BOOST_IOSTREAMS_DETAIL_BUFFERS_HPP_INCLUDED -#define BOOST_IOSTREAMS_DETAIL_BUFFERS_HPP_INCLUDED - -#if defined(_MSC_VER) && (_MSC_VER >= 1020) -# pragma once -#endif - -#include // swap. -#include // allocator. -#include // member templates. -#include -#include // streamsize. -#include -#include // int_type_of. -#include -#include -#include - -namespace boost { namespace iostreams { namespace detail { - -//----------------Buffers-----------------------------------------------------// - -// -// Template name: buffer -// Description: Character buffer. -// Template paramters: -// Ch - The character type. -// Alloc - The Allocator type. -// -template< typename Ch, - typename Alloc = std::allocator > -class basic_buffer { -private: -#ifndef BOOST_NO_STD_ALLOCATOR - typedef typename Alloc::template rebind::other allocator_type; -#else - typedef std::allocator allocator_type; -#endif -public: - basic_buffer(); - basic_buffer(int buffer_size); - ~basic_buffer(); - void resize(int buffer_size); - Ch* begin() const { return buf_; } - Ch* end() const { return buf_ + size_; } - Ch* data() const { return buf_; } - std::streamsize size() const { return size_; } - void swap(basic_buffer& rhs); -private: - // Disallow copying and assignment. - basic_buffer(const basic_buffer&); - basic_buffer& operator=(const basic_buffer&); - Ch* buf_; - std::streamsize size_; -}; - -template -void swap(basic_buffer& lhs, basic_buffer& rhs) -{ lhs.swap(rhs); } - -// -// Template name: buffer -// Description: Character buffer with two pointers accessible via ptr() and -// eptr(). -// Template paramters: -// Ch - A character type. -// -template< typename Ch, - typename Alloc = std::allocator > -class buffer : public basic_buffer { -private: - typedef basic_buffer base; -public: - typedef iostreams::char_traits traits_type; - using base::resize; - using base::data; - using base::size; - typedef Ch* const const_pointer; - buffer(int buffer_size); - Ch* & ptr() { return ptr_; } - const_pointer& ptr() const { return ptr_; } - Ch* & eptr() { return eptr_; } - const_pointer& eptr() const { return eptr_; } - void set(std::streamsize ptr, std::streamsize end); - void swap(buffer& rhs); - - // Returns an int_type as a status code. - template - typename int_type_of::type fill(Source& src) - { - using namespace std; - streamsize keep; - if ((keep = static_cast(eptr_ - ptr_)) > 0) - traits_type::move(this->data(), ptr_, keep); - set(0, keep); - streamsize result = - iostreams::read(src, this->data() + keep, this->size() - keep); - if (result != -1) - this->set(0, keep + result); - //return result == this->size() - keep ? - // traits_type::good() : - // keep == -1 ? - // traits_type::eof() : - // traits_type::would_block(); - return result == -1 ? - traits_type::eof() : - result == 0 ? - traits_type::would_block() : - traits_type::good(); - - } - - // Returns true if one or more characters were written. - template - bool flush(Sink& dest) - { - using namespace std; - streamsize amt = static_cast(eptr_ - ptr_); - streamsize result = iostreams::write_if(dest, ptr_, amt); - if (result < amt) { - traits_type::move( this->data(), - ptr_ + result, - amt - result ); - } - this->set(0, amt - result); - return result != 0; - } -private: - Ch *ptr_, *eptr_; -}; - -template -void swap(buffer& lhs, buffer& rhs) -{ lhs.swap(rhs); } - -//--------------Implementation of basic_buffer--------------------------------// - -template -basic_buffer::basic_buffer() : buf_(0), size_(0) { } - -template -basic_buffer::basic_buffer(int buffer_size) - : buf_(static_cast(allocator_type().allocate(buffer_size, 0))), - size_(buffer_size) // Cast for SunPro 5.3. - { } - -template -inline basic_buffer::~basic_buffer() -{ if (buf_) allocator_type().deallocate(buf_, size_); } - -template -inline void basic_buffer::resize(int buffer_size) -{ - if (size_ != buffer_size) { - basic_buffer temp(buffer_size); - std::swap(size_, temp.size_); - std::swap(buf_, temp.buf_); - } -} - -template -void basic_buffer::swap(basic_buffer& rhs) -{ - std::swap(buf_, rhs.buf_); - std::swap(size_, rhs.size_); -} - -//--------------Implementation of buffer--------------------------------------// - -template -buffer::buffer(int buffer_size) - : basic_buffer(buffer_size) { } - -template -inline void buffer::set(std::streamsize ptr, std::streamsize end) -{ - ptr_ = data() + ptr; - eptr_ = data() + end; -} - -template -inline void buffer::swap(buffer& rhs) -{ - base::swap(rhs); - std::swap(ptr_, rhs.ptr_); - std::swap(eptr_, rhs.eptr_); -} - -//----------------------------------------------------------------------------// - -} } } // End namespaces detail, iostreams, boost. - -#endif // #ifndef BOOST_IOSTREAMS_DETAIL_BUFFERS_HPP_INCLUDED diff --git a/boost/boost/iostreams/detail/call_traits.hpp b/boost/boost/iostreams/detail/call_traits.hpp deleted file mode 100644 index da019f4dce..0000000000 --- a/boost/boost/iostreams/detail/call_traits.hpp +++ /dev/null @@ -1,31 +0,0 @@ -// (C) Copyright Jonathan Turkanis 2003. -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt.) - -// See http://www.boost.org/libs/iostreams for documentation. - -#ifndef BOOST_IOSTREAMS_DETAIL_VALUE_TYPE_HPP_INCLUDED -#define BOOST_IOSTREAMS_DETAIL_VALUE_TYPE_HPP_INCLUDED - -#if defined(_MSC_VER) && (_MSC_VER >= 1020) -# pragma once -#endif - -#include -#include - -namespace boost { namespace iostreams { namespace detail { - -template -struct param_type { - typedef typename mpl::if_, T&, const T&>::type type; -}; - -template -struct value_type { - typedef typename mpl::if_, T&, T>::type type; -}; - -} } } // End namespaces detail, iostreams, boost. - -#endif // #ifndef BOOST_IOSTREAMS_DETAIL_VALUE_TYPE_HPP_INCLUDED //-----------// diff --git a/boost/boost/iostreams/detail/char_traits.hpp b/boost/boost/iostreams/detail/char_traits.hpp deleted file mode 100644 index e1d3cbe28d..0000000000 --- a/boost/boost/iostreams/detail/char_traits.hpp +++ /dev/null @@ -1,62 +0,0 @@ -// (C) Copyright Jonathan Turkanis 2003. -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt.) - -// Provides std::char_traits for libraries without templated streams. Should not -// be confused with , which defines the -// template boost::iostreams::char_traits. - -// See http://www.boost.org/libs/iostreams for documentation. - -#ifndef BOOST_IOSTREAMS_DETAIL_CHAR_TRAITS_HPP_INCLUDED -#define BOOST_IOSTREAMS_DETAIL_CHAR_TRAITS_HPP_INCLUDED - -#if defined(_MSC_VER) && (_MSC_VER >= 1020) -# pragma once -#endif - -#include -#include -#ifdef BOOST_IOSTREAMS_NO_STREAM_TEMPLATES -# include // Make sure size_t is in std. -# include -# include -# include -#endif - -#ifndef BOOST_IOSTREAMS_NO_STREAM_TEMPLATES //--------------------------------// -# define BOOST_IOSTREAMS_CHAR_TRAITS(ch) std::char_traits< ch > -#else -# define BOOST_IOSTREAMS_CHAR_TRAITS(ch) boost::iostreams::detail::char_traits - -namespace boost { namespace iostreams { namespace detail { - -struct char_traits { - typedef char char_type; - typedef int int_type; - typedef std::streampos pos_type; - typedef std::streamoff off_type; - - // Note: this may not be not conforming, since it treats chars as unsigned, - // but is only used to test for equality. - static int compare(const char* lhs, const char* rhs, std::size_t n) - { return std::strncmp(lhs, rhs, n); } - static char* copy(char *dest, const char *src, std::size_t n) - { return static_cast(std::memcpy(dest, src, n)); } - static char* move(char *dest, const char *src, std::size_t n) - { return static_cast(std::memmove(dest, src, n)); } - static const char* find(const char* s, std::size_t n, const char& c) - { return (const char*) (const void*) std::memchr(s, c, n); } - static char to_char_type(const int& c) { return c; } - static int to_int_type(const char& c) { return c; } - static bool eq_int_type(const int& lhs, const int& rhs) - { return lhs == rhs; } - static int eof() { return EOF; } - static int not_eof(const int& c) { return c != EOF ? c : '\n'; } -}; - -} } } // End namespaces detail, iostreams, boost. - -#endif // #ifdef BOOST_IOSTREAMS_NO_STREAM_TEMPLATES //-----------------------// - -#endif // #ifndef BOOST_IOSTREAMS_DETAIL_CHAR_TRAITS_HPP_INCLUDED diff --git a/boost/boost/iostreams/detail/closer.hpp b/boost/boost/iostreams/detail/closer.hpp deleted file mode 100644 index 2cc4b0c726..0000000000 --- a/boost/boost/iostreams/detail/closer.hpp +++ /dev/null @@ -1,122 +0,0 @@ -// (C) Copyright Jonathan Turkanis 2003. -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt.) - -// See http://www.boost.org/libs/iostreams for documentation. - -#ifndef BOOST_IOSTREAMS_DETAIL_CLOSER_HPP_INCLUDED -#define BOOST_IOSTREAMS_DETAIL_CLOSER_HPP_INCLUDED - -#if defined(_MSC_VER) && (_MSC_VER >= 1020) -# pragma once -#endif - -#include // exception. -#include // openmode. -#include // close -#include // is_device. -#include - -namespace boost { namespace iostreams { namespace detail { - -template -struct closer { - closer(T& t) : t_(&t) { } - ~closer() { try { t_->close(); } catch (std::exception&) { } } - T* t_; -}; - -template -struct external_device_closer { - external_device_closer(Device& dev, BOOST_IOS::openmode which) - : device_(&dev), which_(which), - dummy_(true), nothrow_(dummy_) - { } - external_device_closer(Device& dev, BOOST_IOS::openmode which, bool& nothrow) - : device_(&dev), which_(which), - dummy_(true), nothrow_(nothrow) - { } - ~external_device_closer() - { - try { - boost::iostreams::close(*device_, which_); - } catch (...) { - if (!nothrow_) { - nothrow_ = true; - throw; - } - } - } - Device* device_; - BOOST_IOS::openmode which_; - bool dummy_; - bool& nothrow_; -}; - -template -struct external_filter_closer { - external_filter_closer(Filter& flt, Device& dev, BOOST_IOS::openmode which) - : filter_(flt), device_(dev), which_(which), - dummy_(true), nothrow_(dummy_) - { } - external_filter_closer( Filter& flt, Device& dev, - BOOST_IOS::openmode which, bool& nothrow ) - : filter_(flt), device_(dev), which_(which), - dummy_(true), nothrow_(nothrow) - { } - ~external_filter_closer() - { - try { - boost::iostreams::close(filter_, device_, which_); - } catch (...) { - if (!nothrow_) { - nothrow_ = true; - throw; - } - } - } - Filter& filter_; - Device& device_; - BOOST_IOS::openmode which_; - bool dummy_; - bool& nothrow_; -}; - -template -struct external_closer_traits { - typedef typename - mpl::if_< - is_device, - external_device_closer, - external_filter_closer - >::type type; -}; - -template -struct external_closer - : external_closer_traits::type -{ - typedef typename - external_closer_traits< - FilterOrDevice, DeviceOrDummy - >::type base_type; - external_closer(FilterOrDevice& dev, BOOST_IOS::openmode which) - : base_type(dev, which) - { BOOST_STATIC_ASSERT(is_device::value); }; - external_closer( FilterOrDevice& dev, BOOST_IOS::openmode which, - bool& nothrow ) - : base_type(dev, which, nothrow) - { BOOST_STATIC_ASSERT(is_device::value); }; - external_closer( FilterOrDevice& flt, DeviceOrDummy& dev, - BOOST_IOS::openmode which ) - : base_type(flt, dev, which) - { BOOST_STATIC_ASSERT(is_filter::value); }; - external_closer( FilterOrDevice& flt, DeviceOrDummy& dev, - BOOST_IOS::openmode which, bool& nothrow ) - : base_type(flt, dev, which, nothrow) - { BOOST_STATIC_ASSERT(is_filter::value); }; -}; - -} } } // End namespaces detail, iostreams, boost. - -#endif // #ifndef BOOST_IOSTREAMS_DETAIL_CLOSER_HPP_INCLUDED diff --git a/boost/boost/iostreams/detail/config/auto_link.hpp b/boost/boost/iostreams/detail/config/auto_link.hpp deleted file mode 100644 index 5e9cff6b06..0000000000 --- a/boost/boost/iostreams/detail/config/auto_link.hpp +++ /dev/null @@ -1,48 +0,0 @@ -// (C) Copyright Jonathan Turkanis 2003. -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt.) - -// See http://www.boost.org/libs/iostreams for documentation. - -// Adapted from and from -// http://www.boost.org/more/separate_compilation.html, by John Maddock. - -#ifndef BOOST_IOSTREAMS_DETAIL_AUTO_LINK_HPP_INCLUDED -#define BOOST_IOSTREAMS_DETAIL_AUTO_LINK_HPP_INCLUDED - -#if defined(_MSC_VER) && (_MSC_VER >= 1020) -# pragma once -#endif - -#if defined(BOOST_EXTERNAL_LIB_NAME) -# if defined(BOOST_MSVC) \ - || defined(__BORLANDC__) \ - || (defined(__MWERKS__) && defined(_WIN32) && (__MWERKS__ >= 0x3000)) \ - || (defined(__ICL) && defined(_MSC_EXTENSIONS) && (_MSC_VER >= 1200)) \ - /**/ -# pragma comment(lib, BOOST_EXTERNAL_LIB_NAME) -# endif -# undef BOOST_EXTERNAL_LIB_NAME -#endif - -//------------------Enable automatic library variant selection----------------// - -#if !defined(BOOST_IOSTREAMS_SOURCE) && \ - !defined(BOOST_ALL_NO_LIB) && \ - !defined(BOOST_IOSTREAMS_NO_LIB) \ - /**/ - -// Set the name of our library, this will get undef'ed by auto_link.hpp -// once it's done with it. -# define BOOST_LIB_NAME boost_iostreams - -// If we're importing code from a dll, then tell auto_link.hpp about it. -# if defined(BOOST_ALL_DYN_LINK) || defined(BOOST_IOSTREAMS_DYN_LINK) -# define BOOST_DYN_LINK -# endif - -// And include the header that does the work. -# include -#endif // auto-linking disabled - -#endif // #ifndef BOOST_IOSTREAMS_DETAIL_AUTO_LINK_HPP_INCLUDED diff --git a/boost/boost/iostreams/detail/config/bzip2.hpp b/boost/boost/iostreams/detail/config/bzip2.hpp deleted file mode 100644 index 72c88177f7..0000000000 --- a/boost/boost/iostreams/detail/config/bzip2.hpp +++ /dev/null @@ -1,47 +0,0 @@ -// (C) Copyright Jonathan Turkanis 2003. -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt.) - -// See http://www.boost.org/libs/iostreams for documentation. - -// Adapted from and from -// http://www.boost.org/more/separate_compilation.html, by John Maddock. - -#ifndef BOOST_IOSTREAMS_DETAIL_CONFIG_BZIP2_HPP_INCLUDED -#define BOOST_IOSTREAMS_DETAIL_CONFIG_BZIP2_HPP_INCLUDED - -#if defined(_MSC_VER) && (_MSC_VER >= 1020) -# pragma once -#endif - -#if defined(BOOST_BZIP2_BINARY) -# if defined(BOOST_MSVC) || \ - defined(__BORLANDC__) || \ - (defined(__MWERKS__) && defined(_WIN32) && (__MWERKS__ >= 0x3000)) || \ - (defined(__ICL) && defined(_MSC_EXTENSIONS) && (_MSC_VER >= 1200)) \ - /**/ - -// Specify the name of the .lib file. -# pragma comment(lib, BOOST_STRINGIZE(BOOST_BZIP2_BINARY)) -# endif -#else -# if !defined(BOOST_IOSTREAMS_SOURCE) && \ - !defined(BOOST_ALL_NO_LIB) && \ - !defined(BOOST_IOSTREAMS_NO_LIB) \ - /**/ - -// Set the name of our library, this will get undef'ed by auto_link.hpp -// once it's done with it. -# define BOOST_LIB_NAME boost_bzip2 - -// If we're importing code from a dll, then tell auto_link.hpp about it. -# if defined(BOOST_ALL_DYN_LINK) || defined(BOOST_IOSTREAMS_DYN_LINK) -# define BOOST_DYN_LINK -# endif - -// And include the header that does the work. -# include -# endif -#endif - -#endif // #ifndef BOOST_IOSTREAMS_DETAIL_CONFIG_BZIP2_HPP_INCLUDED diff --git a/boost/boost/iostreams/detail/config/codecvt.hpp b/boost/boost/iostreams/detail/config/codecvt.hpp deleted file mode 100644 index 48ffb9c012..0000000000 --- a/boost/boost/iostreams/detail/config/codecvt.hpp +++ /dev/null @@ -1,76 +0,0 @@ -// (C) Copyright Jonathan Turkanis 2003. -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt.) - -// See http://www.boost.org/libs/iostreams for documentation. - -#ifndef BOOST_IOSTREAMS_DETAIL_CONFIG_CODECVT_HPP_INCLUDED -#define BOOST_IOSTREAMS_DETAIL_CONFIG_CODECVT_HPP_INCLUDED - -#include -#include -#include -#include - -#if defined(_MSC_VER) && (_MSC_VER >= 1020) -# pragma once -#endif - -//------------------Support for codecvt with user-defined state types---------// - -#if defined(__MSL_CPP__) || defined(__LIBCOMO__) || \ - BOOST_WORKAROUND(_STLPORT_VERSION, <= 0x450) \ - /**/ -# define BOOST_IOSTREAMS_NO_PRIMARY_CODECVT_DEFINITION -#endif - -#if defined(__GLIBCPP__) || defined(__GLIBCXX__) || \ - BOOST_WORKAROUND(_STLPORT_VERSION, > 0x450) \ - /**/ -# define BOOST_IOSTREAMS_EMPTY_PRIMARY_CODECVT_DEFINITION -#endif - -//------------------Check for codecvt ctor taking a reference count-----------// - -#if BOOST_WORKAROUND(__MWERKS__, BOOST_TESTED_AT(0x3205)) || \ - BOOST_WORKAROUND(_STLPORT_VERSION, < 0x461) \ - /**/ -# define BOOST_IOSTREAMS_NO_CODECVT_CTOR_FROM_SIZE_T -#endif - -//------------------Normalize codecvt::length---------------------------------// - -#if !defined(__MSL_CPP__) && !defined(__LIBCOMO__) -# define BOOST_IOSTREAMS_CODECVT_CV_QUALIFIER const -#else -# define BOOST_IOSTREAMS_CODECVT_CV_QUALIFIER -#endif - -//------------------Check for codecvt::max_length-----------------------------// - -#if BOOST_WORKAROUND(_STLPORT_VERSION, < 0x461) -# define BOOST_IOSTREAMS_NO_CODECVT_MAX_LENGTH -#endif - -//------------------Put mbstate_t and codecvt in std--------------------------// - -#ifndef BOOST_IOSTREAMS_NO_LOCALE -# include -#endif - -// From Robert Ramey's version of utf8_codecvt_facet. -namespace std { - -#if defined(__LIBCOMO__) - using ::mbstate_t; -#elif defined(BOOST_DINKUMWARE_STDLIB) && !defined(__BORLANDC__) - using ::mbstate_t; -#elif defined(__SGI_STL_PORT) -#elif defined(BOOST_NO_STDC_NAMESPACE) - using ::codecvt; - using ::mbstate_t; -#endif - -} // End namespace std. - -#endif // #ifndef BOOST_IOSTREAMS_DETAIL_CONFIG_CODECVT_HPP_INCLUDED diff --git a/boost/boost/iostreams/detail/config/disable_warnings.hpp b/boost/boost/iostreams/detail/config/disable_warnings.hpp deleted file mode 100644 index a0fa05fc0e..0000000000 --- a/boost/boost/iostreams/detail/config/disable_warnings.hpp +++ /dev/null @@ -1,21 +0,0 @@ -// (C) Copyright Jonathan Turkanis 2003. -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt.) - -// See http://www.boost.org/libs/iostreams for documentation. - -#include // BOOST_MSVC. -#include // BOOST_WORKAROUND. - -#if defined(BOOST_MSVC) -# pragma warning(push) -# pragma warning(disable:4224) // Parameter previously defined as type. -# pragma warning(disable:4244) // Conversion: possible loss of data. -#else -# if BOOST_WORKAROUND(__BORLANDC__, < 0x600) -# pragma warn -8008 // Condition always true/false. -# pragma warn -8071 // Conversion may lose significant digits. -# pragma warn -8080 // identifier declared but never used. -# endif -#endif - diff --git a/boost/boost/iostreams/detail/config/dyn_link.hpp b/boost/boost/iostreams/detail/config/dyn_link.hpp deleted file mode 100644 index 82566dfb92..0000000000 --- a/boost/boost/iostreams/detail/config/dyn_link.hpp +++ /dev/null @@ -1,36 +0,0 @@ -// (C) Copyright Jonathan Turkanis 2003. -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt.) - -// See http://www.boost.org/libs/iostreams for documentation. - -// Adapted from http://www.boost.org/more/separate_compilation.html, by -// John Maddock. - -#ifndef BOOST_IOSTREAMS_DETAIL_CONFIG_DYN_LINK_HPP_INCLUDED -#define BOOST_IOSTREAMS_DETAIL_CONFIG_DYN_LINK_HPP_INCLUDED - -#if defined(_MSC_VER) && (_MSC_VER >= 1020) -# pragma once -#endif - -#include -#include - -//------------------Enable dynamic linking on windows-------------------------// - -#ifdef BOOST_HAS_DECLSPEC -# if defined(BOOST_ALL_DYN_LINK) || defined(BOOST_IOSTREAMS_DYN_LINK) -# ifdef BOOST_IOSTREAMS_SOURCE -# define BOOST_IOSTREAMS_DECL __declspec(dllexport) -# else -# define BOOST_IOSTREAMS_DECL __declspec(dllimport) -# endif -# endif -#endif - -#ifndef BOOST_IOSTREAMS_DECL -# define BOOST_IOSTREAMS_DECL -#endif - -#endif // #ifndef BOOST_IOSTREAMS_DETAIL_CONFIG_DYN_LINK_HPP_INCLUDED diff --git a/boost/boost/iostreams/detail/config/enable_warnings.hpp b/boost/boost/iostreams/detail/config/enable_warnings.hpp deleted file mode 100644 index 3a8d26d5ce..0000000000 --- a/boost/boost/iostreams/detail/config/enable_warnings.hpp +++ /dev/null @@ -1,15 +0,0 @@ -// (C) Copyright Jonathan Turkanis 2003. -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt.) - -// See http://www.boost.org/libs/iostreams for documentation. - -#if defined(BOOST_MSVC) -# pragma warning(pop) -#else -# if BOOST_WORKAROUND(__BORLANDC__, < 0x600) -# pragma warn .8008 // Condition always true/false. -# pragma warn .8071 // Conversion may lose significant digits. -# pragma warn .8080 // identifier declared but never used. -# endif -#endif diff --git a/boost/boost/iostreams/detail/config/gcc.hpp b/boost/boost/iostreams/detail/config/gcc.hpp deleted file mode 100644 index a620b05d68..0000000000 --- a/boost/boost/iostreams/detail/config/gcc.hpp +++ /dev/null @@ -1,23 +0,0 @@ -// (C) Copyright Jonathan Turkanis 2003. -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt.) - -// See http://www.boost.org/libs/iostreams for documentation. - -// Adapted from and from -// http://www.boost.org/more/separate_compilation.html, by John Maddock. - -#ifndef BOOST_IOSTREAMS_DETAIL_CONFIG_GCC_HPP_INCLUDED -#define BOOST_IOSTREAMS_DETAIL_CONFIG_GCC_HPP_INCLUDED - -#if defined(_MSC_VER) && (_MSC_VER >= 1020) -# pragma once -#endif - -#include // BOOST_INTEL. - -#if defined(__GNUC__) && !defined(BOOST_INTEL) -# define BOOST_IOSTREAMS_GCC (__GNUC__ * 100 + __GNUC_MINOR__) -#endif - -#endif // #ifndef BOOST_IOSTREAMS_DETAIL_CONFIG_GCC_HPP_INCLUDED diff --git a/boost/boost/iostreams/detail/config/limits.hpp b/boost/boost/iostreams/detail/config/limits.hpp deleted file mode 100644 index f13edd76d7..0000000000 --- a/boost/boost/iostreams/detail/config/limits.hpp +++ /dev/null @@ -1,14 +0,0 @@ -// (C) Copyright Jonathan Turkanis 2003. -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt.) - -// See http://www.boost.org/libs/iostreams for documentation. - -#ifndef BOOST_IOSTREAMS_DETAIL_CONFIG_LIMITS_HPP_INCLUDED -#define BOOST_IOSTREAMS_DETAIL_CONFIG_LIMITS_HPP_INCLUDED - -#ifndef BOOST_IOSTREAMS_MAX_FORWARDING_ARITY -# define BOOST_IOSTREAMS_MAX_FORWARDING_ARITY 3 -#endif - -#endif // #ifndef BOOST_IOSTREAMS_DETAIL_CONFIG_LIMITS_HPP_INCLUDED diff --git a/boost/boost/iostreams/detail/config/overload_resolution.hpp b/boost/boost/iostreams/detail/config/overload_resolution.hpp deleted file mode 100644 index 79467425e2..0000000000 --- a/boost/boost/iostreams/detail/config/overload_resolution.hpp +++ /dev/null @@ -1,31 +0,0 @@ -// (C) Copyright Jonathan Turkanis 2003. -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt.) - -// See http://www.boost.org/libs/iostreams for documentation. - -// Adapted from and from -// http://www.boost.org/more/separate_compilation.html, by John Maddock. - -#ifndef BOOST_IOSTREAMS_DETAIL_CONFIG_BROKEN_OVERLOAD_RESOLUTION_HPP_INCLUDED -#define BOOST_IOSTREAMS_DETAIL_CONFIG_BROKEN_OVERLOAD_RESOLUTION_HPP_INCLUDED - -#if defined(_MSC_VER) && (_MSC_VER >= 1020) -# pragma once -#endif - -#include // BOOST_MSVC. -#include -#include - -#if !defined(BOOST_IOSTREAMS_BROKEN_OVERLOAD_RESOLUTION) -# if BOOST_WORKAROUND(__MWERKS__, <= 0x3003) || \ - BOOST_WORKAROUND(__BORLANDC__, < 0x600) || \ - BOOST_WORKAROUND(BOOST_MSVC, <= 1300) || \ - BOOST_WORKAROUND(BOOST_IOSTREAMS_GCC, <= 295) \ - /**/ -# define BOOST_IOSTREAMS_BROKEN_OVERLOAD_RESOLUTION -# endif -#endif - -#endif // #ifndef BOOST_IOSTREAMS_DETAIL_CONFIG_BROKEN_OVERLOAD_RESOLUTION_HPP_INCLUDED diff --git a/boost/boost/iostreams/detail/config/wide_streams.hpp b/boost/boost/iostreams/detail/config/wide_streams.hpp deleted file mode 100644 index e30d4918d2..0000000000 --- a/boost/boost/iostreams/detail/config/wide_streams.hpp +++ /dev/null @@ -1,54 +0,0 @@ -// (C) Copyright Jonathan Turkanis 2003. -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt.) - -// See http://www.boost.org/libs/iostreams for documentation. - -// Adapted from http://www.boost.org/more/separate_compilation.html, by -// John Maddock. - -#ifndef BOOST_IOSTREAMS_DETAIL_CONFIG_WIDE_STREAMS_HPP_INCLUDED -#define BOOST_IOSTREAMS_DETAIL_CONFIG_WIDE_STREAMS_HPP_INCLUDED - -#include -#include -#include - -#if defined(_MSC_VER) && (_MSC_VER >= 1020) -# pragma once -#endif - -//------------------Templated stream support----------------------------------// - -// From boost/dynamic_bitset.hpp; thanks to Matthias Troyer for cray patch. -#ifndef BOOST_IOSTREAMS_NO_STREAM_TEMPLATES -# if defined(__STL_CONFIG_H) && \ - !defined (__STL_USE_NEW_IOSTREAMS) && !defined(__crayx1) \ - /**/ -# define BOOST_IOSTREAMS_NO_STREAM_TEMPLATES -# endif -#endif // #ifndef BOOST_IOSTREAMS_NO_STREAM_TEMPLATES - -//------------------Wide stream support---------------------------------------// - -#ifndef BOOST_IOSTREAMS_NO_WIDE_STREAMS -# if defined(BOOST_IOSTREAMS_NO_STREAM_TEMPLATES) || \ - defined (BOOST_NO_STD_WSTREAMBUF) && \ - ( !defined(__MSL_CPP__) || defined(_MSL_NO_WCHART_CPP_SUPPORT) ) \ - /**/ -# define BOOST_IOSTREAMS_NO_WIDE_STREAMS -# endif -#endif // #ifndef BOOST_IOSTREAMS_NO_WIDE_STREAMS - -//------------------Locale support--------------------------------------------// - -#ifndef BOOST_IOSTREAMS_NO_LOCALE -# if defined(BOOST_NO_STD_LOCALE) || \ - defined(__CYGWIN__) && \ - ( !defined(__MSL_CPP__) || defined(_MSL_NO_WCHART_CPP_SUPPORT) ) \ - /**/ -# define BOOST_IOSTREAMS_NO_LOCALE -# endif -#endif // #ifndef BOOST_IOSTREAMS_NO_LOCALE - -#endif // #ifndef BOOST_IOSTREAMS_DETAIL_CONFIG_WIDE_STREAMS_HPP_INCLUDED diff --git a/boost/boost/iostreams/detail/config/windows_posix.hpp b/boost/boost/iostreams/detail/config/windows_posix.hpp deleted file mode 100644 index 0bc094f269..0000000000 --- a/boost/boost/iostreams/detail/config/windows_posix.hpp +++ /dev/null @@ -1,25 +0,0 @@ -// (C) Copyright 2002, 2003 Beman Dawes Boost.Filesystem -// (C) Copyright Jonathan Turkanis 2004. - -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt.) - -// See http://www.boost.org/libs/iostreams for documentation. - -#ifndef BOOST_IOSTREAMS_DETAIL_CONFIG_WINDOWS_POSIX_HPP_INCLUDED -#define BOOST_IOSTREAMS_DETAIL_CONFIG_WINDOWS_POSIX_HPP_INCLUDED - -//------------------From boost/libs/filesystem/src/path_posix_windows.cpp-----// - -// BOOST_IOSTREAMS_POSIX or BOOST_IOSTREAMS_WINDOWS specify which API to use. -#if !defined( BOOST_IOSTREAMS_WINDOWS ) && !defined( BOOST_IOSTREAMS_POSIX ) -# if (defined(_WIN32) || defined(__WIN32__) || defined(WIN32)) && \ - !defined(__CYGWIN__) \ - /**/ -# define BOOST_IOSTREAMS_WINDOWS -# else -# define BOOST_IOSTREAMS_POSIX -# endif -#endif - -#endif // #ifndef BOOST_IOSTREAMS_DETAIL_CONFIG_WINDOWS_POSIX_HPP_INCLUDED diff --git a/boost/boost/iostreams/detail/config/zlib.hpp b/boost/boost/iostreams/detail/config/zlib.hpp deleted file mode 100644 index 9f1ee26bd1..0000000000 --- a/boost/boost/iostreams/detail/config/zlib.hpp +++ /dev/null @@ -1,49 +0,0 @@ -// (C) Copyright Jonathan Turkanis 2003. -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt.) - -// See http://www.boost.org/libs/iostreams for documentation. - -// Adapted from and from -// http://www.boost.org/more/separate_compilation.html, by John Maddock. - -#ifndef BOOST_IOSTREAMS_DETAIL_CONFIG_ZLIB_HPP_INCLUDED -#define BOOST_IOSTREAMS_DETAIL_CONFIG_ZLIB_HPP_INCLUDED - -#if defined(_MSC_VER) && (_MSC_VER >= 1020) -# pragma once -#endif - -#include // BOOST_STRINGIZE. - -#if defined(BOOST_ZLIB_BINARY) -# if defined(BOOST_MSVC) || \ - defined(__BORLANDC__) || \ - (defined(__MWERKS__) && defined(_WIN32) && (__MWERKS__ >= 0x3000)) || \ - (defined(__ICL) && defined(_MSC_EXTENSIONS) && (_MSC_VER >= 1200)) \ - /**/ - -// Specify the name of the .lib file. -# pragma comment(lib, BOOST_STRINGIZE(BOOST_ZLIB_BINARY)) -# endif -#else -# if !defined(BOOST_IOSTREAMS_SOURCE) && \ - !defined(BOOST_ALL_NO_LIB) && \ - !defined(BOOST_IOSTREAMS_NO_LIB) \ - /**/ - -// Set the name of our library, this will get undef'ed by auto_link.hpp -// once it's done with it. -# define BOOST_LIB_NAME boost_zlib - -// If we're importing code from a dll, then tell auto_link.hpp about it. -# if defined(BOOST_ALL_DYN_LINK) || defined(BOOST_IOSTREAMS_DYN_LINK) -# define BOOST_DYN_LINK -# endif - -// And include the header that does the work. -# include -# endif -#endif - -#endif // #ifndef BOOST_IOSTREAMS_DETAIL_CONFIG_ZLIB_HPP_INCLUDED diff --git a/boost/boost/iostreams/detail/default_arg.hpp b/boost/boost/iostreams/detail/default_arg.hpp deleted file mode 100644 index 740943782d..0000000000 --- a/boost/boost/iostreams/detail/default_arg.hpp +++ /dev/null @@ -1,24 +0,0 @@ -// (C) Copyright Jonathan Turkanis 2005. -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt.) - -// See http://www.boost.org/libs/iostreams for documentation. - -#ifndef BOOST_IOSTREAMS_DETAIL_DEFAULT_ARG_HPP_INCLUDED -#define BOOST_IOSTREAMS_DETAIL_DEFAULT_ARG_HPP_INCLUDED - -#if defined(_MSC_VER) && (_MSC_VER >= 1020) -# pragma once -#endif - -#include -#include - -#if BOOST_WORKAROUND(BOOST_MSVC, < 1300) -# include -# define BOOST_IOSTREAMS_DEFAULT_ARG(arg) mpl::identity< arg >::type -#else -# define BOOST_IOSTREAMS_DEFAULT_ARG(arg) arg -#endif - -#endif // #ifndef BOOST_IOSTREAMS_DETAIL_DEFAULT_ARG_HPP_INCLUDED diff --git a/boost/boost/iostreams/detail/dispatch.hpp b/boost/boost/iostreams/detail/dispatch.hpp deleted file mode 100644 index af92092608..0000000000 --- a/boost/boost/iostreams/detail/dispatch.hpp +++ /dev/null @@ -1,40 +0,0 @@ -// (C) Copyright Jonathan Turkanis 2003. -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt.) - -// See http://www.boost.org/libs/iostreams for documentation. - -#ifndef BOOST_IOSTREAMS_DETAIL_DISPATCH_HPP_INCLUDED -#define BOOST_IOSTREAMS_DETAIL_DISPATCH_HPP_INCLUDED - -#if defined(_MSC_VER) && (_MSC_VER >= 1020) -# pragma once -#endif - -#include // BOOST_DEDUCED_TYPENAME. -#include -#include // category_of. -#include -#include - -namespace boost { namespace iostreams {namespace detail { - -template< typename T, typename Tag1, typename Tag2, - typename Tag3 = mpl::void_, typename Tag4 = mpl::void_, - typename Tag5 = mpl::void_, typename Tag6 = mpl::void_, - typename Category = - BOOST_DEDUCED_TYPENAME category_of::type > -struct dispatch - : iostreams::select< // Disambiguation for Tru64. - is_convertible, Tag1, - is_convertible, Tag2, - is_convertible, Tag3, - is_convertible, Tag4, - is_convertible, Tag5, - is_convertible, Tag6 - > - { }; - -} } } // End namespaces detail, iostreams, boost. - -#endif // #ifndef BOOST_IOSTREAMS_DETAIL_DISPATCH_HPP_INCLUDED diff --git a/boost/boost/iostreams/detail/double_object.hpp b/boost/boost/iostreams/detail/double_object.hpp deleted file mode 100644 index 0c22bfea80..0000000000 --- a/boost/boost/iostreams/detail/double_object.hpp +++ /dev/null @@ -1,113 +0,0 @@ -// (C) Copyright Jonathan Turkanis 2004 -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt.) - -// See http://www.boost.org/libs/iostreams for documentation. - -// Contains the definition of the class template -// boost::iostreams::detail::double_object, which is similar to compressed pair -// except that both members of the pair have the same type, and -// compression occurs only if requested using a boolean template -// parameter. - -#ifndef BOOST_IOSTREAMS_DETAIL_DOUBLE_OBJECT_HPP_INCLUDED -#define BOOST_IOSTREAMS_DETAIL_DOUBLE_OBJECT_HPP_INCLUDED - -#if defined(_MSC_VER) && (_MSC_VER >= 1020) -# pragma once -#endif - -#include // swap. -#include -#include -#if BOOST_WORKAROUND(__MWERKS__, > 0x3003) -# include -#else -# include -#endif - -namespace boost { namespace iostreams { namespace detail { - -template -class single_object_holder { -public: -#if BOOST_WORKAROUND(__MWERKS__, > 0x3003) - typedef Metrowerks::call_traits traits_type; -#else - typedef boost::call_traits traits_type; -#endif - typedef typename traits_type::param_type param_type; - typedef typename traits_type::reference reference; - typedef typename traits_type::const_reference const_reference; - single_object_holder() { } - single_object_holder(param_type t) : first_(t) { } - reference first() { return first_; } - const_reference first() const { return first_; } - reference second() { return first_; } - const_reference second() const { return first_; } - void swap(single_object_holder& o) - { std::swap(first_, o.first_); } -private: - T first_; -}; - -template -struct double_object_holder { -public: -#if BOOST_WORKAROUND(__MWERKS__, > 0x3003) - typedef Metrowerks::call_traits traits_type; -#else - typedef boost::call_traits traits_type; -#endif - typedef typename traits_type::param_type param_type; - typedef typename traits_type::reference reference; - typedef typename traits_type::const_reference const_reference; - double_object_holder() { } - double_object_holder(param_type t1, param_type t2) - : first_(t1), second_(t2) { } - reference first() { return first_; } - const_reference first() const { return first_; } - reference second() { return second_; } - const_reference second() const { return second_; } - void swap(double_object_holder& d) - { - std::swap(first_, d.first_); - std::swap(second_, d.second_); - } -private: - T first_, second_; -}; - -template -class double_object - : public mpl::if_< - IsDouble, - double_object_holder, - single_object_holder - >::type -{ -private: - typedef typename - mpl::if_< - IsDouble, - double_object_holder, - single_object_holder - >::type base_type; -public: -#if BOOST_WORKAROUND(__MWERKS__, > 0x3003) - typedef Metrowerks::call_traits traits_type; -#else - typedef boost::call_traits traits_type; -#endif - typedef typename traits_type::param_type param_type; - typedef typename traits_type::reference reference; - typedef typename traits_type::const_reference const_reference; - double_object() : base_type() {} - double_object(param_type t1, param_type t2) - : base_type(t1, t2) { } - bool is_double() const { return IsDouble::value; } -}; - -} } } // End namespaces detail, iostreams, boost. - -#endif // #ifndef BOOST_IOSTREAMS_DETAIL_DOUBLE_OBJECT_HPP_INCLUDED diff --git a/boost/boost/iostreams/detail/enable_if_stream.hpp b/boost/boost/iostreams/detail/enable_if_stream.hpp deleted file mode 100644 index 602c3c86d7..0000000000 --- a/boost/boost/iostreams/detail/enable_if_stream.hpp +++ /dev/null @@ -1,30 +0,0 @@ -// (C) Copyright Jonathan Turkanis 2003. -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt.) - -// See http://www.boost.org/libs/iostreams for documentation. - -#ifndef BOOST_IOSTREAMS_DETAIL_ENABLE_IF_STREAM_HPP_INCLUDED -#define BOOST_IOSTREAMS_DETAIL_ENABLE_IF_STREAM_HPP_INCLUDED - -#if defined(_MSC_VER) && (_MSC_VER >= 1020) -# pragma once -#endif - -#include // BOOST_NO_SFINAE. -#include -#include // is_std_io. - -#ifndef BOOST_NO_SFINAE -# define BOOST_IOSTREAMS_ENABLE_IF_STREAM(T) \ - , typename boost::enable_if< boost::iostreams::is_std_io >::type* = 0 \ - /**/ -# define BOOST_IOSTREAMS_DISABLE_IF_STREAM(T) \ - , typename boost::disable_if< boost::iostreams::is_std_io >::type* = 0 \ - /**/ -#else -# define BOOST_IOSTREAMS_ENABLE_IF_STREAM(T) -# define BOOST_IOSTREAMS_DISABLE_IF_STREAM(T) -#endif - -#endif // #ifndef BOOST_IOSTREAMS_DETAIL_ENABLE_IF_STREAM_HPP_INCLUDED diff --git a/boost/boost/iostreams/detail/error.hpp b/boost/boost/iostreams/detail/error.hpp deleted file mode 100644 index 427eb26d56..0000000000 --- a/boost/boost/iostreams/detail/error.hpp +++ /dev/null @@ -1,44 +0,0 @@ -// (C) Copyright Jonathan Turkanis 2003. -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt.) - -// See http://www.boost.org/libs/iostreams for documentation. - -#ifndef BOOST_IOSTREAMS_DETAIL_ERROR_HPP_INCLUDED -#define BOOST_IOSTREAMS_DETAIL_ERROR_HPP_INCLUDED - -#if defined(_MSC_VER) && (_MSC_VER >= 1020) -# pragma once -#endif - -#include // failure. - -namespace boost { namespace iostreams { namespace detail { - -inline BOOST_IOSTREAMS_FAILURE cant_read() -{ return BOOST_IOSTREAMS_FAILURE("no read access"); } - -inline BOOST_IOSTREAMS_FAILURE cant_write() -{ return BOOST_IOSTREAMS_FAILURE("no write access"); } - -inline BOOST_IOSTREAMS_FAILURE cant_seek() -{ return BOOST_IOSTREAMS_FAILURE("no random access"); } - -inline BOOST_IOSTREAMS_FAILURE bad_read() -{ return BOOST_IOSTREAMS_FAILURE("bad read"); } - -inline BOOST_IOSTREAMS_FAILURE bad_putback() -{ return BOOST_IOSTREAMS_FAILURE("putback buffer full"); } - -inline BOOST_IOSTREAMS_FAILURE bad_write() -{ return BOOST_IOSTREAMS_FAILURE("bad write"); } - -inline BOOST_IOSTREAMS_FAILURE write_area_exhausted() -{ return BOOST_IOSTREAMS_FAILURE("write area exhausted"); } - -inline BOOST_IOSTREAMS_FAILURE bad_seek() -{ return BOOST_IOSTREAMS_FAILURE("bad seek"); } - -} } } // End namespaces detail, iostreams, boost. - -#endif // #ifndef BOOST_IOSTREAMS_DETAIL_ERROR_HPP_INCLUDED diff --git a/boost/boost/iostreams/detail/forward.hpp b/boost/boost/iostreams/detail/forward.hpp deleted file mode 100644 index de62f43406..0000000000 --- a/boost/boost/iostreams/detail/forward.hpp +++ /dev/null @@ -1,101 +0,0 @@ -// (C) Copyright Jonathan Turkanis 2003. -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt.) - -// See http://www.boost.org/libs/iostreams for documentation. - -#ifndef BOOST_IOSTREAMS_DETAIL_FORWARD_HPP_INCLUDED -#define BOOST_IOSTREAMS_DETAIL_FORWARD_HPP_INCLUDED - -#if defined(_MSC_VER) && (_MSC_VER >= 1020) -# pragma once -#endif - -#include // BOOST_MSVC -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -//------Macros for defining forwarding constructors and open overloads--------// - -// -// Macro: BOOST_IOSTREAMS_DEFINE_FORWARDING_FUNCTIONS(mode, name, helper). -// Description: Defines constructors and overloads of 'open' which construct -// a device using the given argument list and pass it to 'open_impl'. -// Assumes that 'policy_type' is an alias for the device type. -// Not supported on Intel 7.1 and VC6.5. -// -#define BOOST_IOSTREAMS_FORWARD(class, impl, policy, params, args) \ - class(const policy& t params()) \ - { this->impl(::boost::iostreams::detail::wrap(t) args()); } \ - class(policy& t params()) \ - { this->impl(::boost::iostreams::detail::wrap(t) args()); } \ - class(const ::boost::reference_wrapper& ref params()) \ - { this->impl(ref args()); } \ - void open(const policy& t params()) \ - { this->impl(::boost::iostreams::detail::wrap(t) args()); } \ - void open(policy& t params()) \ - { this->impl(::boost::iostreams::detail::wrap(t) args()); } \ - void open(const ::boost::reference_wrapper& ref params()) \ - { this->impl(ref args()); } \ - BOOST_PP_REPEAT_FROM_TO( \ - 1, BOOST_PP_INC(BOOST_IOSTREAMS_MAX_FORWARDING_ARITY), \ - BOOST_IOSTREAMS_FORWARDING_CTOR, (class, impl, policy) \ - ) \ - BOOST_PP_REPEAT_FROM_TO( \ - 1, BOOST_PP_INC(BOOST_IOSTREAMS_MAX_FORWARDING_ARITY), \ - BOOST_IOSTREAMS_FORWARDING_FN, (class, impl, policy) \ - ) \ - /**/ -#if !BOOST_WORKAROUND(BOOST_MSVC, < 1300) -# define BOOST_IOSTREAMS_FORWARDING_CTOR_I(z, n, tuple) \ - template< typename U100 BOOST_PP_COMMA_IF(BOOST_PP_DEC(n)) \ - BOOST_PP_ENUM_PARAMS_Z(z, BOOST_PP_DEC(n), typename U) > \ - BOOST_PP_TUPLE_ELEM(3, 0, tuple) \ - ( U100& u100 BOOST_PP_COMMA_IF(BOOST_PP_DEC(n)) \ - BOOST_PP_ENUM_BINARY_PARAMS_Z(z, BOOST_PP_DEC(n), const U, &u)) \ - { this->BOOST_PP_TUPLE_ELEM(3, 1, tuple) \ - ( BOOST_PP_TUPLE_ELEM(3, 2, tuple) \ - ( u100 BOOST_PP_COMMA_IF(BOOST_PP_DEC(n)) \ - BOOST_PP_ENUM_PARAMS_Z(z, BOOST_PP_DEC(n), u)) ); } \ - /**/ -# define BOOST_IOSTREAMS_FORWARDING_FN_I(z, n, tuple) \ - template< typename U100 BOOST_PP_COMMA_IF(BOOST_PP_DEC(n)) \ - BOOST_PP_ENUM_PARAMS_Z(z, BOOST_PP_DEC(n), typename U) > \ - void open \ - ( U100& u100 BOOST_PP_COMMA_IF(BOOST_PP_DEC(n)) \ - BOOST_PP_ENUM_BINARY_PARAMS_Z(z, BOOST_PP_DEC(n), const U, &u)) \ - { this->BOOST_PP_TUPLE_ELEM(3, 1, tuple) \ - ( u100 BOOST_PP_COMMA_IF(BOOST_PP_DEC(n)) \ - BOOST_PP_ENUM_PARAMS_Z(z, BOOST_PP_DEC(n), u) ); } \ - /**/ -#else -# define BOOST_IOSTREAMS_FORWARDING_CTOR_I(z, n, tuple) -# define BOOST_IOSTREAMS_FORWARDING_FN_I(z, n, tuple) -#endif -#define BOOST_IOSTREAMS_FORWARDING_CTOR(z, n, tuple) \ - template \ - BOOST_PP_TUPLE_ELEM(3, 0, tuple) \ - (BOOST_PP_ENUM_BINARY_PARAMS_Z(z, n, const U, &u)) \ - { this->BOOST_PP_TUPLE_ELEM(3, 1, tuple) \ - ( BOOST_PP_TUPLE_ELEM(3, 2, tuple) \ - (BOOST_PP_ENUM_PARAMS_Z(z, n, u)) ); } \ - BOOST_IOSTREAMS_FORWARDING_CTOR_I(z, n, tuple) \ - /**/ -#define BOOST_IOSTREAMS_FORWARDING_FN(z, n, tuple) \ - template \ - void open(BOOST_PP_ENUM_BINARY_PARAMS_Z(z, n, const U, &u)) \ - { this->BOOST_PP_TUPLE_ELEM(3, 1, tuple) \ - ( BOOST_PP_TUPLE_ELEM(3, 2, tuple) \ - (BOOST_PP_ENUM_PARAMS_Z(z, n, u)) ); } \ - BOOST_IOSTREAMS_FORWARDING_FN_I(z, n, tuple) \ - /**/ - -#endif // #ifndef BOOST_IOSTREAMS_DETAIL_FORWARD_HPP_INCLUDED diff --git a/boost/boost/iostreams/detail/fstream.hpp b/boost/boost/iostreams/detail/fstream.hpp deleted file mode 100644 index 4476143d39..0000000000 --- a/boost/boost/iostreams/detail/fstream.hpp +++ /dev/null @@ -1,32 +0,0 @@ -// (C) Copyright Jonathan Turkanis 2003. -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt.) - -// See http://www.boost.org/libs/iostreams for documentation. - -#ifndef BOOST_IOSTREAMS_DETAIL_FSTREAM_HPP_INCLUDED -#define BOOST_IOSTREAMS_DETAIL_FSTREAM_HPP_INCLUDED - -#if defined(_MSC_VER) && (_MSC_VER >= 1020) -# pragma once -#endif - -#include -#ifndef BOOST_IOSTREAMS_NO_STREAM_TEMPLATES -# include -#else -# include -#endif - -#ifndef BOOST_IOSTREAMS_NO_STREAM_TEMPLATES -# define BOOST_IOSTREAMS_BASIC_IFSTREAM(Ch, Tr) std::basic_ifstream -# define BOOST_IOSTREAMS_BASIC_OFSTREAM(Ch, Tr) std::basic_ofstream -# define BOOST_IOSTREAMS_BASIC_FSTREAM(Ch, Tr) std::basic_fstream -# define BOOST_IOSTREAMS_BASIC_FILEBUF(Ch) std::basic_filebuf -#else -# define BOOST_IOSTREAMS_BASIC_IFSTREAM(Ch, Tr) std::ifstream -# define BOOST_IOSTREAMS_BASIC_OFSTREAM(Ch, Tr) std::ofstream -# define BOOST_IOSTREAMS_BASIC_FILEBUF(Ch) std::filebuf -#endif - -#endif // #ifndef BOOST_IOSTREAMS_DETAIL_FSTREAM_HPP_INCLUDED diff --git a/boost/boost/iostreams/detail/ios.hpp b/boost/boost/iostreams/detail/ios.hpp deleted file mode 100644 index 34667b2f7d..0000000000 --- a/boost/boost/iostreams/detail/ios.hpp +++ /dev/null @@ -1,65 +0,0 @@ -// (C) Copyright Jonathan Turkanis 2003. -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt.) - -// See http://www.boost.org/libs/iostreams for documentation. - -#ifndef BOOST_IOSTREAMS_DETAIL_IOS_HPP_INCLUDED -#define BOOST_IOSTREAMS_DETAIL_IOS_HPP_INCLUDED - -#if defined(_MSC_VER) && (_MSC_VER >= 1020) -# pragma once -#endif - -#include // BOOST_MSVC. -#include -#include -#ifndef BOOST_IOSTREAMS_NO_STREAM_TEMPLATES -# if !BOOST_WORKAROUND(__MWERKS__, <= 0x3003) -# include -# else -# include -# include -# endif -#else -# include -# include -#endif - -namespace boost { namespace iostreams { namespace detail { - -#ifndef BOOST_IOSTREAMS_NO_STREAM_TEMPLATES //--------------------------------// -# define BOOST_IOSTREAMS_BASIC_IOS(ch, tr) std::basic_ios< ch, tr > -# if !BOOST_WORKAROUND(__MWERKS__, <= 0x3003) && \ - !BOOST_WORKAROUND(__BORLANDC__, < 0x600) && \ - !BOOST_WORKAROUND(BOOST_MSVC, < 1300) \ - /**/ - -#define BOOST_IOS std::ios -#define BOOST_IOSTREAMS_FAILURE std::ios::failure - -# else - -#define BOOST_IOS std::ios_base -#define BOOST_IOSTREAMS_FAILURE std::ios_base::failure - -# endif -#else // #ifndef BOOST_IOSTREAMS_NO_STREAM_TEMPLATES //-----------------------// - -#define BOOST_IOS std::ios -#define BOOST_IOSTREAMS_BASIC_IOS(ch, tr) std::ios -#define BOOST_IOSTREAMS_FAILURE boost::iostreams::detail::failure - -class failure : std::exception { -public: - explicit failure(const std::string& what_arg) : what_(what_arg) { } - const char* what() const { return what_.c_str(); } -private: - std::string what_; -}; - -#endif // #ifndef BOOST_IOSTREAMS_NO_STREAM_TEMPLATES //----------------------// - -} } } // End namespace failure, iostreams, boost. - -#endif // #ifndef BOOST_IOSTREAMS_DETAIL_IOS_HPP_INCLUDED diff --git a/boost/boost/iostreams/detail/iostream.hpp b/boost/boost/iostreams/detail/iostream.hpp deleted file mode 100644 index 6482839f1f..0000000000 --- a/boost/boost/iostreams/detail/iostream.hpp +++ /dev/null @@ -1,33 +0,0 @@ -// (C) Copyright Jonathan Turkanis 2003. -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt.) - -// See http://www.boost.org/libs/iostreams for documentation. - -#ifndef BOOST_IOSTREAMS_DETAIL_IOSTREAM_HPP_INCLUDED -#define BOOST_IOSTREAMS_DETAIL_IOSTREAM_HPP_INCLUDED - -#if defined(_MSC_VER) && (_MSC_VER >= 1020) -# pragma once -#endif - -#include -#ifndef BOOST_IOSTREAMS_NO_STREAM_TEMPLATES -# include -# include -#else -# include -#endif - -#ifndef BOOST_IOSTREAMS_NO_STREAM_TEMPLATES -# define BOOST_IOSTREAMS_BASIC_ISTREAM(ch, tr) std::basic_istream< ch, tr > -# define BOOST_IOSTREAMS_BASIC_OSTREAM(ch, tr) std::basic_ostream< ch, tr > -# define BOOST_IOSTREAMS_BASIC_IOSTREAM(ch, tr) std::basic_iostream< ch, tr > -#else -# define BOOST_IOSTREAMS_BASIC_STREAMBUF(ch, tr) std::streambuf -# define BOOST_IOSTREAMS_BASIC_ISTREAM(ch, tr) std::istream -# define BOOST_IOSTREAMS_BASIC_OSTREAM(ch, tr) std::ostream -# define BOOST_IOSTREAMS_BASIC_IOSTREAM(ch, tr) std::iostream -#endif - -#endif // #ifndef BOOST_IOSTREAMS_DETAIL_IOSTREAM_HPP_INCLUDED diff --git a/boost/boost/iostreams/detail/is_dereferenceable.hpp b/boost/boost/iostreams/detail/is_dereferenceable.hpp deleted file mode 100644 index ff61e09a78..0000000000 --- a/boost/boost/iostreams/detail/is_dereferenceable.hpp +++ /dev/null @@ -1,84 +0,0 @@ -// (C) Copyright David Abrahams 2004. -// (C) Copyright Jonathan Turkanis 2005. -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt.) - -// See http://www.boost.org/libs/iostreams for documentation. - -#ifndef BOOST_IOSTREAMS_DETAIL_IS_DEREFERENCEABLE_HPP_INCLUDED -#define BOOST_IOSTREAMS_DETAIL_IS_DEREFERENCEABLE_HPP_INCLUDED - -# include -# include -# include -# include -# include -# include - -namespace boost { namespace iostreams { namespace detail { - -// is_dereferenceable metafunction -// -// Requires: Given x of type T&, if the expression *x is well-formed -// it must have complete type; otherwise, it must neither be ambiguous -// nor violate access. - -// This namespace ensures that ADL doesn't mess things up. -namespace is_dereferenceable_ -{ - // a type returned from operator* when no increment is found in the - // type's own namespace - struct tag {}; - - // any soaks up implicit conversions and makes the following - // operator* less-preferred than any other such operator that - // might be found via ADL. - struct any { template any(T const&); }; - - // This is a last-resort operator* for when none other is found - tag operator*(any const&); - -# if BOOST_WORKAROUND(__MWERKS__, BOOST_TESTED_AT(0x3202)) \ - || BOOST_WORKAROUND(BOOST_MSVC, <= 1300) -# define BOOST_comma(a,b) (a) -# else - // In case an operator++ is found that returns void, we'll use ++x,0 - tag operator,(tag,int); -# define BOOST_comma(a,b) (a,b) -# endif - - // two check overloads help us identify which operator++ was picked - char (& check(tag) )[2]; - - template - char check(T const&); - - template - struct impl - { - static typename boost::remove_cv::type& x; - - BOOST_STATIC_CONSTANT( - bool - , value = sizeof(is_dereferenceable_::check(BOOST_comma(*x,0))) == 1 - ); - }; -} - -# undef BOOST_comma - -template -struct is_dereferenceable - BOOST_TT_AUX_BOOL_C_BASE(is_dereferenceable_::impl::value) -{ - BOOST_TT_AUX_BOOL_TRAIT_VALUE_DECL(is_dereferenceable_::impl::value) - BOOST_MPL_AUX_LAMBDA_SUPPORT(1,is_dereferenceable,(T)) -}; - -} } - -BOOST_TT_AUX_TEMPLATE_ARITY_SPEC(1, ::boost::iostreams::detail::is_dereferenceable) - -} // End namespaces detail, iostreams, boost. - -#endif // BOOST_IOSTREAMS_DETAIL_IS_DEREFERENCEABLE_HPP_INCLUDED diff --git a/boost/boost/iostreams/detail/is_iterator_range.hpp b/boost/boost/iostreams/detail/is_iterator_range.hpp deleted file mode 100644 index 7da0822308..0000000000 --- a/boost/boost/iostreams/detail/is_iterator_range.hpp +++ /dev/null @@ -1,26 +0,0 @@ -// (C) Copyright Jonathan Turkanis 2003. -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt.) - -// See http://www.boost.org/libs/iostreams for documentation. - -#ifndef BOOST_IOSTREAMS_DETAIL_IS_ITERATOR_RANGE_HPP_INCLUDED -#define BOOST_IOSTREAMS_DETAIL_IS_ITERATOR_RANGE_HPP_INCLUDED - -#include - -namespace boost { - -// We avoid dependence on Boost.Range by using a forward declaration. -template -class iterator_range; - -namespace iostreams { - -BOOST_IOSTREAMS_BOOL_TRAIT_DEF(is_iterator_range, boost::iterator_range, 1) - -} // End namespace iostreams. - -} // End namespace boost. - -#endif // #ifndef BOOST_IOSTREAMS_DETAIL_IS_ITERATOR_RANGE_HPP_INCLUDED diff --git a/boost/boost/iostreams/detail/optional.hpp b/boost/boost/iostreams/detail/optional.hpp deleted file mode 100644 index 901c080d75..0000000000 --- a/boost/boost/iostreams/detail/optional.hpp +++ /dev/null @@ -1,113 +0,0 @@ -// (C) Copyright Jonathan Turkanis 2005. -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt.) - -// See http://www.boost.org/libs/iostreams for documentation. - -// Recent changes to Boost.Optional involving assigment broke Boost.Iostreams, -// in a way which could be remedied only by relying on the deprecated reset -// functions; with VC6, even reset didn't work. Until this problem is -// understood, Iostreams will use a private version of optional with a smart -// pointer interface. - -#ifndef BOOST_IOSTREAMS_DETAIL_OPTIONAL_HPP_INCLUDED -#define BOOST_IOSTREAMS_DETAIL_OPTIONAL_HPP_INCLUDED - -#if defined(_MSC_VER) && (_MSC_VER >= 1020) -# pragma once -#endif - -#include -#include -#include -#include - -namespace boost { namespace iostreams { namespace detail { - -// Taken from . -template -class aligned_storage -{ - // Borland ICEs if unnamed unions are used for this! - union dummy_u - { - char data[ sizeof(T) ]; - BOOST_DEDUCED_TYPENAME type_with_alignment< - ::boost::alignment_of::value >::type aligner_; - } dummy_ ; - - public: - - void const* address() const { return &dummy_.data[0]; } - void * address() { return &dummy_.data[0]; } -}; - -template -class optional { -public: - typedef T element_type; - optional() : initialized_(false) { } - optional(const T& t) : initialized_(false) { reset(t); } - ~optional() { reset(); } - T& operator*() - { - assert(initialized_); - return *static_cast(address()); - } - const T& operator*() const - { - assert(initialized_); - return *static_cast(address()); - } - T* operator->() - { - assert(initialized_); - return static_cast(address()); - } - const T* operator->() const - { - assert(initialized_); - return static_cast(address()); - } - T* get() - { - assert(initialized_); - return static_cast(address()); - } - const T* get() const - { - assert(initialized_); - return static_cast(address()); - } - void reset() - { - if (initialized_) { - #if BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x564)) || \ - BOOST_WORKAROUND(__IBMCPP__, BOOST_TESTED_AT(600)) \ - /**/ - T* t = static_cast(address()); - t->~T(); - #else - static_cast(address())->T::~T(); - #endif - initialized_ = false; - } - } - void reset(const T& t) - { - reset(); - new (address()) T(t); - initialized_ = true; - } -private: - optional(const optional&); - optional& operator=(const optional&); - void* address() { return &storage_; } - const void* address() const { return &storage_; } - aligned_storage storage_; - bool initialized_; -}; - -} } } // End namespaces detail, iostreams, boost. - -#endif // #ifndef BOOST_IOSTREAMS_DETAIL_OPTIONAL_HPP_INCLUDED diff --git a/boost/boost/iostreams/detail/push.hpp b/boost/boost/iostreams/detail/push.hpp deleted file mode 100644 index b23f4ff64d..0000000000 --- a/boost/boost/iostreams/detail/push.hpp +++ /dev/null @@ -1,153 +0,0 @@ -// (C) Copyright Jonathan Turkanis 2003. -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt.) - -// See http://www.boost.org/libs/iostreams for documentation. - -#ifndef BOOST_IOSTREAMS_DETAIL_PUSH_HPP_INCLUDED -#define BOOST_IOSTREAMS_DETAIL_PUSH_HPP_INCLUDED - -#if defined(_MSC_VER) && (_MSC_VER >= 1020) -# pragma once -#endif - -#include // BOOST_MSVC. -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -// -// Macro: BOOST_IOSTREAMS_DEFINE_PUSH_CONSTRUCTOR(mode, name, helper). -// Description: Defines overloads with name 'name' which forward to a function -// 'helper' which takes a filter or devide by const reference. -// -#define BOOST_IOSTREAMS_DEFINE_PUSH_CONSTRUCTOR(name, mode, ch, helper) \ - BOOST_IOSTREAMS_DEFINE_PUSH_IMPL(name, mode, ch, helper, 0, ?) \ - /**/ - -// -// Macro: BOOST_IOSTREAMS_DEFINE_PUSH_CONSTRUCTOR(mode, name, helper). -// Description: Defines constructors which forward to a function -// 'helper' which takes a filter or device by const reference. -// -#define BOOST_IOSTREAMS_DEFINE_PUSH(name, mode, ch, helper) \ - BOOST_IOSTREAMS_DEFINE_PUSH_IMPL(name, mode, ch, helper, 1, void) \ - /**/ - -//--------------------Definition of BOOST_IOSTREAMS_DEFINE_PUSH_IMPL----------// - -#define BOOST_IOSTREAMS_ADAPT_STREAM(mode, ch, arg, helper, has_return) \ - this->helper( ::boost::iostreams::detail::resolve(arg) \ - BOOST_IOSTREAMS_PUSH_ARGS() ); \ - /**/ - -#if !BOOST_WORKAROUND(BOOST_MSVC, <= 1300) && \ - !BOOST_WORKAROUND(__BORLANDC__, < 0x600) \ - /**/ -# ifndef BOOST_IOSTREAMS_NO_STREAM_TEMPLATES -# define BOOST_IOSTREAMS_DEFINE_PUSH_IMPL(name, mode, ch, helper, has_return, result) \ - template \ - BOOST_PP_IIF(has_return, result, explicit) \ - name(::std::basic_streambuf& sb BOOST_IOSTREAMS_PUSH_PARAMS()) \ - { BOOST_IOSTREAMS_ADAPT_STREAM(mode, ch, sb, helper, has_return); } \ - template \ - BOOST_PP_IIF(has_return, result, explicit) \ - name(::std::basic_istream& is BOOST_IOSTREAMS_PUSH_PARAMS()) \ - { BOOST_STATIC_ASSERT((!is_convertible::value)); \ - BOOST_IOSTREAMS_ADAPT_STREAM(mode, ch, is, helper, has_return); } \ - template \ - BOOST_PP_IIF(has_return, result, explicit) \ - name(::std::basic_ostream& os BOOST_IOSTREAMS_PUSH_PARAMS()) \ - { BOOST_STATIC_ASSERT((!is_convertible::value)); \ - BOOST_IOSTREAMS_ADAPT_STREAM(mode, ch, os, helper, has_return); } \ - template \ - BOOST_PP_IIF(has_return, result, explicit) \ - name(::std::basic_iostream& io BOOST_IOSTREAMS_PUSH_PARAMS()) \ - { BOOST_IOSTREAMS_ADAPT_STREAM(mode, ch, io, helper, has_return); } \ - template \ - BOOST_PP_IIF(has_return, result, explicit) \ - name(const iterator_range& rng BOOST_IOSTREAMS_PUSH_PARAMS()) \ - { BOOST_PP_EXPR_IF(has_return, return) \ - this->helper( ::boost::iostreams::detail::range_adapter< \ - mode, iterator_range \ - >(rng) \ - BOOST_IOSTREAMS_PUSH_ARGS() ); } \ - template \ - BOOST_PP_IIF(has_return, result, explicit) \ - name(const ::boost::iostreams::pipeline& p) \ - { p.push(*this); } \ - template \ - BOOST_PP_IIF(has_return, result, explicit) \ - name(const T& t BOOST_IOSTREAMS_PUSH_PARAMS() BOOST_IOSTREAMS_DISABLE_IF_STREAM(T)) \ - { this->helper( ::boost::iostreams::detail::resolve(t) \ - BOOST_IOSTREAMS_PUSH_ARGS() ); } \ - /**/ -# else // # ifndef BOOST_IOSTREAMS_NO_STREAM_TEMPLATES -# define BOOST_IOSTREAMS_DEFINE_PUSH_IMPL(name, mode, ch, helper, has_return, result) \ - BOOST_PP_IF(has_return, result, explicit) \ - name(::std::streambuf& sb BOOST_IOSTREAMS_PUSH_PARAMS()) \ - { BOOST_IOSTREAMS_ADAPT_STREAM(mode, ch, sb, helper, has_return); } \ - BOOST_PP_IF(has_return, result, explicit) \ - name(::std::istream& is BOOST_IOSTREAMS_PUSH_PARAMS()) \ - { BOOST_STATIC_ASSERT((!is_convertible::value)); \ - BOOST_IOSTREAMS_ADAPT_STREAM(mode, ch, is, helper, has_return); } \ - BOOST_PP_IF(has_return, result, explicit) \ - name(::std::ostream& os BOOST_IOSTREAMS_PUSH_PARAMS()) \ - { BOOST_STATIC_ASSERT((!is_convertible::value)); \ - BOOST_IOSTREAMS_ADAPT_STREAM(mode, ch, os, helper, has_return); } \ - BOOST_PP_IF(has_return, result, explicit) \ - name(::std::iostream& io BOOST_IOSTREAMS_PUSH_PARAMS()) \ - { BOOST_IOSTREAMS_ADAPT_STREAM(mode, ch, io, helper, has_return); } \ - template \ - BOOST_PP_IF(has_return, result, explicit) \ - name(const iterator_range& rng BOOST_IOSTREAMS_PUSH_PARAMS()) \ - { BOOST_PP_EXPR_IF(has_return, return) \ - this->helper( ::boost::iostreams::detail::range_adapter< \ - mode, iterator_range \ - >(rng) \ - BOOST_IOSTREAMS_PUSH_ARGS() ); } \ - template \ - BOOST_PP_IF(has_return, result, explicit) \ - name(const ::boost::iostreams::pipeline& p) \ - { p.push(*this); } \ - template \ - BOOST_PP_EXPR_IF(has_return, result) \ - name(const T& t BOOST_IOSTREAMS_PUSH_PARAMS() BOOST_IOSTREAMS_DISABLE_IF_STREAM(T)) \ - { this->helper( ::boost::iostreams::detail::resolve(t) \ - BOOST_IOSTREAMS_PUSH_ARGS() ); } \ - /**/ -# endif // # ifndef BOOST_IOSTREAMS_NO_STREAM_TEMPLATES -#else // #if VC6, VC7.0, Borland 5.x -# define BOOST_IOSTREAMS_DEFINE_PUSH_IMPL(name, mode, ch, helper, has_return, result) \ - template \ - void BOOST_PP_CAT(name, _msvc_impl) \ - ( ::boost::mpl::true_, const T& t BOOST_IOSTREAMS_PUSH_PARAMS() ) \ - { t.push(*this); } \ - template \ - void BOOST_PP_CAT(name, _msvc_impl) \ - ( ::boost::mpl::false_, const T& t BOOST_IOSTREAMS_PUSH_PARAMS() ) \ - { this->helper( ::boost::iostreams::detail::resolve(t) \ - BOOST_IOSTREAMS_PUSH_ARGS() ); } \ - template \ - BOOST_PP_IF(has_return, result, explicit) \ - name(const T& t BOOST_IOSTREAMS_PUSH_PARAMS()) \ - { \ - this->BOOST_PP_CAT(name, _msvc_impl) \ - ( ::boost::iostreams::detail::is_pipeline(), \ - t BOOST_IOSTREAMS_PUSH_ARGS() ); \ - } \ - /**/ -#endif // #if VC6, VC7.0, Borland 5.x - -#endif // #ifndef BOOST_IOSTREAMS_DETAIL_PUSH_HPP_INCLUDED diff --git a/boost/boost/iostreams/detail/push_params.hpp b/boost/boost/iostreams/detail/push_params.hpp deleted file mode 100644 index 4d179480bd..0000000000 --- a/boost/boost/iostreams/detail/push_params.hpp +++ /dev/null @@ -1,20 +0,0 @@ -// (C) Copyright Jonathan Turkanis 2003. -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt.) - -// See http://www.boost.org/libs/iostreams for documentation. - -#ifndef BOOST_IOSTREAMS_DETAIL_PUSH_PARAMS_HPP_INCLUDED -#define BOOST_IOSTREAMS_DETAIL_PUSH_PARAMS_HPP_INCLUDED - -#if defined(_MSC_VER) && (_MSC_VER >= 1020) -# pragma once -#endif - -#define BOOST_IOSTREAMS_PUSH_PARAMS() \ - , int buffer_size = -1 , int pback_size = -1 \ - /**/ - -#define BOOST_IOSTREAMS_PUSH_ARGS() , buffer_size, pback_size - -#endif // #ifndef BOOST_IOSTREAMS_DETAIL_PUSH_PARAMS_HPP_INCLUDED diff --git a/boost/boost/iostreams/detail/resolve.hpp b/boost/boost/iostreams/detail/resolve.hpp deleted file mode 100644 index 997403cd3c..0000000000 --- a/boost/boost/iostreams/detail/resolve.hpp +++ /dev/null @@ -1,229 +0,0 @@ -// (C) Copyright Jonathan Turkanis 2003. -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt.) - -// See http://www.boost.org/libs/iostreams for documentation. - -#ifndef BOOST_IOSTREAMS_DETAIL_RESOLVE_HPP_INCLUDED -#define BOOST_IOSTREAMS_DETAIL_RESOLVE_HPP_INCLUDED - -#if defined(_MSC_VER) && (_MSC_VER >= 1020) -# pragma once -#endif - -#include // partial spec, put size_t in std. -#include // std::size_t. -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include // true_. -#include -#include -#include - -// Must come last. -#include // VC7.1 C4224. - -namespace boost { namespace iostreams { namespace detail { - -//------------------Definition of resolve-------------------------------------// - -#ifndef BOOST_IOSTREAMS_BROKEN_OVERLOAD_RESOLUTION //-------------------------// - -template -struct resolve_traits { - typedef typename - mpl::if_< - boost::detail::is_incrementable, - output_iterator_adapter, - const T& - >::type type; -}; - -# ifndef BOOST_IOSTREAMS_NO_STREAM_TEMPLATES //-------------------------------// - -template -typename resolve_traits::type -resolve( const T& t - BOOST_IOSTREAMS_DISABLE_IF_STREAM(T) - - // I suspect that the compilers which require this workaround may - // be correct, but I'm not sure why :( - #if BOOST_WORKAROUND(BOOST_INTEL_CXX_VERSION, BOOST_TESTED_AT(810)) ||\ - BOOST_WORKAROUND(__MWERKS__, BOOST_TESTED_AT(0x3205)) || \ - BOOST_WORKAROUND(BOOST_IOSTREAMS_GCC, BOOST_TESTED_AT(400)) \ - /**/ - , typename disable_if< is_iterator_range >::type* = 0 - #endif - ) -{ - typedef typename resolve_traits::type return_type; - return return_type(t); -} - -template -mode_adapter< Mode, std::basic_streambuf > -resolve(std::basic_streambuf& sb) -{ return mode_adapter< Mode, std::basic_streambuf >(wrap(sb)); } - -template -mode_adapter< Mode, std::basic_istream > -resolve(std::basic_istream& is) -{ return mode_adapter< Mode, std::basic_istream >(wrap(is)); } - -template -mode_adapter< Mode, std::basic_ostream > -resolve(std::basic_ostream& os) -{ return mode_adapter< Mode, std::basic_ostream >(wrap(os)); } - -template -mode_adapter< Mode, std::basic_iostream > -resolve(std::basic_iostream& io) -{ return mode_adapter< Mode, std::basic_iostream >(wrap(io)); } - -template -array_adapter resolve(Ch (&array)[N]) -{ return array_adapter(array); } - -template -range_adapter< Mode, boost::iterator_range > -resolve(const boost::iterator_range& rng) -{ return range_adapter< Mode, boost::iterator_range >(rng); } - -# else // # ifndef BOOST_IOSTREAMS_NO_STREAM_TEMPLATES //---------------------// - -template -typename resolve_traits::type -resolve( const T& t - BOOST_IOSTREAMS_DISABLE_IF_STREAM(T) - #if defined(__GNUC__) - , typename disable_if< is_iterator_range >::type* = 0 - #endif - ) -{ - typedef typename resolve_traits::type return_type; - return return_type(t); -} - -template -mode_adapter -resolve(std::streambuf& sb) -{ return mode_adapter(wrap(sb)); } - -template -mode_adapter -resolve(std::istream& is) -{ return mode_adapter(wrap(is)); } - -template -mode_adapter -resolve(std::ostream& os) -{ return mode_adapter(wrap(os)); } - -template -mode_adapter -resolve(std::iostream& io) -{ return mode_adapter(wrap(io)); } - -template -array_adapter resolve(Ch (&array)[N]) -{ return array_adapter(array); } - -template -range_adapter< Mode, boost::iterator_range > -resolve(const boost::iterator_range& rng) -{ return range_adapter< Mode, boost::iterator_range >(rng); } - -# endif // # ifndef BOOST_IOSTREAMS_NO_STREAM_TEMPLATES //--------------------// -#else // #ifndef BOOST_IOSTREAMS_BROKEN_OVERLOAD_RESOLUTION //----------------// - -template -struct resolve_traits { - // Note: test for is_iterator_range must come before test for output - // iterator. - typedef typename - iostreams::select< // Disambiguation for Tru64. - is_std_io, - mode_adapter, - is_iterator_range, - range_adapter, - is_dereferenceable, - output_iterator_adapter, - is_array, - array_adapter, - else_, - #if !BOOST_WORKAROUND(__BORLANDC__, < 0x600) - const T& - #else - T - #endif - >::type type; -}; - -template -typename resolve_traits::type -resolve(const T& t, mpl::true_) -{ // Bad overload resolution. - typedef typename resolve_traits::type return_type; - return return_type(wrap(const_cast(t))); -} - -template -typename resolve_traits::type -resolve(const T& t, mpl::false_) -{ - typedef typename resolve_traits::type return_type; - return return_type(t); -} - -template -typename resolve_traits::type -resolve(const T& t BOOST_IOSTREAMS_DISABLE_IF_STREAM(T)) -{ return resolve(t, is_std_io()); } - -# if !BOOST_WORKAROUND(__BORLANDC__, < 0x600) && \ - !BOOST_WORKAROUND(BOOST_MSVC, <= 1300) && \ - !defined(__GNUC__) // ---------------------------------------------------// - -template -typename resolve_traits::type -resolve(T& t, mpl::true_) -{ - typedef typename resolve_traits::type return_type; - return return_type(wrap(t)); -} - -template -typename resolve_traits::type -resolve(T& t, mpl::false_) -{ - typedef typename resolve_traits::type return_type; - return return_type(t); -} - -template -typename resolve_traits::type -resolve(T& t BOOST_IOSTREAMS_ENABLE_IF_STREAM(T)) -{ return resolve(t, is_std_io()); } - -# endif // Borland 5.x, VC6-7.0 or GCC 2.9x //--------------------------------// -#endif // #ifndef BOOST_IOSTREAMS_BROKEN_OVERLOAD_RESOLUTION //---------------// - -} } } // End namespaces detail, iostreams, boost. - -#include // VC7.1 4224. - -#endif // BOOST_IOSTREAMS_DETAIL_RESOLVE_HPP_INCLUDED diff --git a/boost/boost/iostreams/detail/select.hpp b/boost/boost/iostreams/detail/select.hpp deleted file mode 100644 index 14eed1ada4..0000000000 --- a/boost/boost/iostreams/detail/select.hpp +++ /dev/null @@ -1,79 +0,0 @@ -// (C) Copyright Jonathan Turkanis 2003. -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt.) - -// See http://www.boost.org/libs/iostreams for documentation. - -// Contains the metafunction select, which mimics the effect of a chain of -// nested mpl if_'s. -// -// ----------------------------------------------------------------------------- -// -// Usage: -// -// typedef typename select< -// case1, type1, -// case2, type2, -// ... -// true_, typen -// >::type selection; -// -// Here case1, case2, ... are models of MPL::IntegralConstant with value type -// bool, and n <= 10. - -#ifndef BOOST_IOSTREAMS_SELECT_HPP_INCLUDED -#define BOOST_IOSTREAMS_SELECT_HPP_INCLUDED - -#if defined(_MSC_VER) && (_MSC_VER >= 1020) -# pragma once -#endif - -#include -#include -#include -#include -#include - -namespace boost { namespace iostreams { - -typedef mpl::true_ else_; - -template< typename Case1 = mpl::true_, - typename Type1 = mpl::void_, - typename Case2 = mpl::true_, - typename Type2 = mpl::void_, - typename Case3 = mpl::true_, - typename Type3 = mpl::void_, - typename Case4 = mpl::true_, - typename Type4 = mpl::void_, - typename Case5 = mpl::true_, - typename Type5 = mpl::void_, - typename Case6 = mpl::true_, - typename Type6 = mpl::void_, - typename Case7 = mpl::true_, - typename Type7 = mpl::void_, - typename Case8 = mpl::true_, - typename Type8 = mpl::void_, - typename Case9 = mpl::true_, - typename Type9 = mpl::void_, - typename Case10 = mpl::true_, - typename Type10 = mpl::void_ > -struct select { - typedef typename - mpl::eval_if< - Case1, mpl::identity, mpl::eval_if< - Case2, mpl::identity, mpl::eval_if< - Case3, mpl::identity, mpl::eval_if< - Case4, mpl::identity, mpl::eval_if< - Case5, mpl::identity, mpl::eval_if< - Case6, mpl::identity, mpl::eval_if< - Case7, mpl::identity, mpl::eval_if< - Case8, mpl::identity, mpl::eval_if< - Case9, mpl::identity, mpl::if_< - Case10, Type10, mpl::void_ > > > > > > > > > - >::type type; -}; - -} } // End namespaces iostreams, boost. - -#endif // #ifndef BOOST_IOSTREAMS_SELECT_HPP_INCLUDED diff --git a/boost/boost/iostreams/detail/select_by_size.hpp b/boost/boost/iostreams/detail/select_by_size.hpp deleted file mode 100644 index 9d9955f7b5..0000000000 --- a/boost/boost/iostreams/detail/select_by_size.hpp +++ /dev/null @@ -1,159 +0,0 @@ -// (C) Copyright Jonathan Turkanis 2004. -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt.) - -// See http://www.boost.org/libs/iostreams for documentation. - -// -// Intended as an alternative to type_traits::yes_type and type_traits::no_type. -// Provides an arbitrary number of types (case_<0>, case_<1>, ...) for -// determining the results of overload resultion using 'sizeof', plus a uniform -// means of using the result. yes_type and no_type are typedefs for case_<1> -// and case_<0>. A single case with negative argument, case_<-1>, is also -// provided, for convenience. -// -// This header may be included any number of times, with -// BOOST_SELECT_BY_SIZE_MAX_CASE defined to be the largest N such that case_ -// is needed for a particular application. It defaults to 20. -// -// This header depends only on Boost.Config and Boost.Preprocessor. Dependence -// on Type Traits or MPL was intentionally avoided, to leave open the -// possibility that select_by_size could be used by these libraries. -// -// Example usage: -// -// #define BOOST_SELECT_BY_SIZE_MAX_CASE 7 // (Needed when default was 2) -// #include -// -// using namespace boost::utility; -// -// case_<0> helper(bool); -// case_<1> helper(int); -// case_<2> helper(unsigned); -// case_<3> helper(long); -// case_<4> helper(unsigned long); -// case_<5> helper(float); -// case_<6> helper(double); -// case_<7> helper(const char*); -// -// struct test { -// static const int value = -// select_by_size< sizeof(helper(9876UL)) >::value; -// BOOST_STATIC_ASSERT(value == 4); -// }; -// -// For compilers with integral constant expression problems, e.g. Borland 5.x, -// one can also write -// -// struct test { -// BOOST_SELECT_BY_SIZE(int, value, helper(9876UL)); -// }; -// -// to define a static integral constant 'value' equal to -// -// select_by_size< sizeof(helper(9876UL)) >::value. -// - -// Include guards surround all contents of this header except for explicit -// specializations of select_by_size for case_ with N > 2. - -#ifndef BOOST_IOSTREAMS_DETAIL_SELECT_BY_SIZE_HPP_INCLUDED -#define BOOST_IOSTREAMS_DETAIL_SELECT_BY_SIZE_HPP_INCLUDED - -// The lowest N for which select_by_size< sizeof(case_) > has not been -// specialized. -#define SELECT_BY_SIZE_MAX_SPECIALIZED 20 - -#include // BOOST_STATIC_CONSTANT. -#include -#include - -/* Alternative implementation using max_align. - -#include -#include - -namespace boost { namespace utility { - -template -struct case_ { char c[(N + 1) * alignment_of::value]; }; - -template -struct select_by_size { - BOOST_STATIC_CONSTANT(int, value = - (Size / alignment_of::value - 1)); -}; - -} } // End namespaces utility, boost. - -*/ // End alternate implementation. - -namespace boost { namespace iostreams { namespace detail { - -//--------------Definition of case_-------------------------------------------// - -template struct case_ { char c1; case_ c2; }; -template<> struct case_<-1> { char c; }; -typedef case_ yes_type; -typedef case_ no_type; - -//--------------Declaration of select_by_size---------------------------------// - -template struct select_by_size; - -} } } // End namespaces detail, iostreams, boost. - -//--------------Definition of SELECT_BY_SIZE_SPEC-----------------------------// - -// Sepecializes select_by_size for sizeof(case). The decrement is used -// here because the preprocessor library doesn't handle negative integers. -#define SELECT_BY_SIZE_SPEC(n) \ - namespace boost { namespace iostreams { namespace detail { \ - static const int BOOST_PP_CAT(sizeof_case_, n) = sizeof(case_); \ - template<> \ - struct select_by_size< BOOST_PP_CAT(sizeof_case_, n) > { \ - struct type { BOOST_STATIC_CONSTANT(int, value = n - 1); }; \ - BOOST_STATIC_CONSTANT(int, value = type::value); \ - }; \ - } } } \ - /**/ - -//--------------Default specializations of select_by_size---------------------// - -#define BOOST_PP_LOCAL_MACRO(n) SELECT_BY_SIZE_SPEC(n) -#define BOOST_PP_LOCAL_LIMITS (0, 20) -#include BOOST_PP_LOCAL_ITERATE() -#undef BOOST_PP_LOCAL_MACRO - -//--------------Definition of SELECT_BY_SIZE----------------------------------// - -#define BOOST_SELECT_BY_SIZE(type_, name, expr) \ - BOOST_STATIC_CONSTANT( \ - unsigned, \ - BOOST_PP_CAT(boost_select_by_size_temp_, name) = sizeof(expr) \ - ); \ - BOOST_STATIC_CONSTANT( \ - type_, \ - name = \ - ( ::boost::iostreams::detail::select_by_size< \ - BOOST_PP_CAT(boost_select_by_size_temp_, name) \ - >::value ) \ - ) \ - /**/ - -#endif // #ifndef BOOST_IOSTREAMS_DETAIL_SELECT_BY_SIZE_HPP_INCLUDED - -//----------Specializations of SELECT_BY_SIZE (outside main inclued guards)---// - -#if BOOST_SELECT_BY_SIZE_MAX_CASE > SELECT_BY_SIZE_MAX_SPECIALIZED - -#define BOOST_PP_LOCAL_MACRO(n) SELECT_BY_SIZE_SPEC(n) -#define BOOST_PP_LOCAL_LIMITS \ - (SELECT_BY_SIZE_MAX_SPECIALIZED, BOOST_SELECT_BY_SIZE_MAX_CASE) \ - /**/ -#include BOOST_PP_LOCAL_ITERATE() -#undef BOOST_PP_LOCAL_MACRO -#undef SELECT_BY_SIZE_MAX_SPECIALIZED -#define SELECT_BY_SIZE_MAX_SPECIALIZED BOOST_SELECT_BY_SIZE_MAX_CASE - -#endif diff --git a/boost/boost/iostreams/detail/streambuf.hpp b/boost/boost/iostreams/detail/streambuf.hpp deleted file mode 100644 index f743f767e0..0000000000 --- a/boost/boost/iostreams/detail/streambuf.hpp +++ /dev/null @@ -1,33 +0,0 @@ -// (C) Copyright Jonathan Turkanis 2003. -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt.) - -// See http://www.boost.org/libs/iostreams for documentation. - -#ifndef BOOST_IOSTREAMS_DETAIL_STREAMBUF_HPP_INCLUDED -#define BOOST_IOSTREAMS_DETAIL_STREAMBUF_HPP_INCLUDED - -#if defined(_MSC_VER) && (_MSC_VER >= 1020) -# pragma once -#endif - -#include -#ifndef BOOST_IOSTREAMS_NO_STREAM_TEMPLATES -# include -#else -# include -#endif - -#ifndef BOOST_IOSTREAMS_NO_STREAM_TEMPLATES -# define BOOST_IOSTREAMS_BASIC_STREAMBUF(ch, tr) std::basic_streambuf< ch, tr > -# define BOOST_IOSTREAMS_PUBSYNC pubsync -# define BOOST_IOSTREAMS_PUBSEEKOFF pubseekoff -# define BOOST_IOSTREAMS_PUBSEEKPOS pubseekpos -#else -# define BOOST_IOSTREAMS_BASIC_STREAMBUF(ch, tr) std::streambuf -# define BOOST_IOSTREAMS_PUBSYNC sync -# define BOOST_IOSTREAMS_PUBSEEKOFF seekoff -# define BOOST_IOSTREAMS_PUBSEEKPOS seekpos -#endif - -#endif // #ifndef BOOST_IOSTREAMS_DETAIL_STREAMBUF_HPP_INCLUDED diff --git a/boost/boost/iostreams/detail/streambuf/chainbuf.hpp b/boost/boost/iostreams/detail/streambuf/chainbuf.hpp deleted file mode 100644 index 6b1168cde6..0000000000 --- a/boost/boost/iostreams/detail/streambuf/chainbuf.hpp +++ /dev/null @@ -1,115 +0,0 @@ -// (C) Copyright Jonathan Turkanis 2003. -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt.) - -// See http://www.boost.org/libs/iostreams for documentation. - -#ifndef BOOST_IOSTREAMS_DETAIL_CHAINBUF_HPP_INCLUDED -#define BOOST_IOSTREAMS_DETAIL_CHAINBUF_HPP_INCLUDED - -#if defined(_MSC_VER) && (_MSC_VER >= 1020) -# pragma once -#endif - -#include // BOOST_MSVC, template friends. -#include -#include -#include -#include -#include -#include -#include -#include -#include - -namespace boost { namespace iostreams { namespace detail { - -//--------------Definition of chainbuf----------------------------------------// - -// -// Template name: chainbuf. -// Description: Stream buffer which operates by delegating to the first -// linked_streambuf in a chain. -// Template paramters: -// Chain - The chain type. -// -template -class chainbuf - : public BOOST_IOSTREAMS_BASIC_STREAMBUF( - typename Chain::char_type, - typename Chain::traits_type - ), - public access_control, - private noncopyable -{ -private: - typedef access_control, Access> client_type; -public: - typedef typename Chain::char_type char_type; - BOOST_IOSTREAMS_STREAMBUF_TYPEDEFS(typename Chain::traits_type) -protected: - typedef linked_streambuf delegate_type; - chainbuf() { client_type::set_chain(&chain_); } - int_type underflow() - { sentry t(this); return translate(delegate().underflow()); } - int_type pbackfail(int_type c) - { sentry t(this); return translate(delegate().pbackfail(c)); } - std::streamsize xsgetn(char_type* s, std::streamsize n) - { sentry t(this); return delegate().xsgetn(s, n); } - int_type overflow(int_type c) - { sentry t(this); return translate(delegate().overflow(c)); } - std::streamsize xsputn(const char_type* s, std::streamsize n) - { sentry t(this); return delegate().xsputn(s, n); } - int sync() { sentry t(this); return delegate().sync(); } - pos_type seekoff( off_type off, BOOST_IOS::seekdir way, - BOOST_IOS::openmode which = - BOOST_IOS::in | BOOST_IOS::out ) - { sentry t(this); return delegate().seekoff(off, way, which); } - pos_type seekpos( pos_type sp, - BOOST_IOS::openmode which = - BOOST_IOS::in | BOOST_IOS::out ) - { sentry t(this); return delegate().seekpos(sp, which); } -protected: - typedef BOOST_IOSTREAMS_BASIC_STREAMBUF( - typename Chain::char_type, - typename Chain::traits_type - ) base_type; -//#if !BOOST_WORKAROUND(__GNUC__, == 2) -// BOOST_IOSTREAMS_USING_PROTECTED_STREAMBUF_MEMBERS(base_type) -//#endif -private: - - // Translate from std int_type to chain's int_type. - typedef BOOST_IOSTREAMS_CHAR_TRAITS(char_type) std_traits; - typedef typename Chain::traits_type chain_traits; - static typename chain_traits::int_type - translate(typename std_traits::int_type c) - { return translate_int_type(c); } - - delegate_type& delegate() - { return static_cast(chain_.front()); } - void get_pointers() - { - this->setg(delegate().eback(), delegate().gptr(), delegate().egptr()); - this->setp(delegate().pbase(), delegate().epptr()); - this->pbump((int) (delegate().pptr() - delegate().pbase())); - } - void set_pointers() - { - delegate().setg(this->eback(), this->gptr(), this->egptr()); - delegate().setp(this->pbase(), this->epptr()); - delegate().pbump((int) (this->pptr() - this->pbase())); - } - struct sentry { - sentry(chainbuf* buf) : buf_(buf) - { buf_->set_pointers(); } - ~sentry() { buf_->get_pointers(); } - chainbuf* buf_; - }; - friend struct sentry; - Chain chain_; -}; - -} } } // End namespaces detail, iostreams, boost. - -#endif // #ifndef BOOST_IOSTREAMS_DETAIL_CHAINBUF_HPP_INCLUDED diff --git a/boost/boost/iostreams/detail/streambuf/direct_streambuf.hpp b/boost/boost/iostreams/detail/streambuf/direct_streambuf.hpp deleted file mode 100644 index 5f7a69562b..0000000000 --- a/boost/boost/iostreams/detail/streambuf/direct_streambuf.hpp +++ /dev/null @@ -1,305 +0,0 @@ -// (C) Copyright Jonathan Turkanis 2003. -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt.) - -// See http://www.boost.org/libs/iostreams for documentation. - -#ifndef BOOST_IOSTREAMS_DETAIL_DIRECT_STREAMBUF_HPP_INCLUDED -#define BOOST_IOSTREAMS_DETAIL_DIRECT_STREAMBUF_HPP_INCLUDED - -#if defined(_MSC_VER) && (_MSC_VER >= 1020) -# pragma once -#endif - -#include -#include -#include -#include // pair. -#include // BOOST_DEDUCED_TYPENAME. -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -// Must come last. -#include // MSVC. - -namespace boost { namespace iostreams { - -namespace detail { - -template< typename T, - typename Tr = - BOOST_IOSTREAMS_CHAR_TRAITS( - BOOST_DEDUCED_TYPENAME char_type_of::type - ) > -class direct_streambuf - : public linked_streambuf::type, Tr> -{ -public: - typedef typename char_type_of::type char_type; - BOOST_IOSTREAMS_STREAMBUF_TYPEDEFS(Tr) -private: - typedef linked_streambuf base_type; - typedef typename category_of::type category; - typedef BOOST_IOSTREAMS_BASIC_STREAMBUF( - char_type, traits_type - ) streambuf_type; -public: // stream needs access. - void open(const T& t, int buffer_size, int pback_size); - bool is_open() const; - void close(); - bool auto_close() const { return auto_close_; } - void set_auto_close(bool close) { auto_close_ = close; } - bool strict_sync() { return true; } - - // Declared in linked_streambuf. - T* component() { return storage_.get(); } -protected: -#if !BOOST_WORKAROUND(__GNUC__, == 2) - BOOST_IOSTREAMS_USING_PROTECTED_STREAMBUF_MEMBERS(base_type) -#endif - direct_streambuf(); - - //--------------Virtual functions-----------------------------------------// - - // Declared in linked_streambuf. - void close(BOOST_IOS::openmode m); - const std::type_info& component_type() const { return typeid(T); } - void* component_impl() { return component(); } - -#ifdef BOOST_IOSTREAMS_NO_STREAM_TEMPLATES - public: -#endif - - // Declared in basic_streambuf. - int_type underflow(); - int_type pbackfail(int_type c); - int_type overflow(int_type c); - pos_type seekoff( off_type off, BOOST_IOS::seekdir way, - BOOST_IOS::openmode which ); - pos_type seekpos(pos_type sp, BOOST_IOS::openmode which); -private: - pos_type seek_impl( stream_offset off, BOOST_IOS::seekdir way, - BOOST_IOS::openmode which ); - void init_input(any_tag) { } - void init_input(input); - void init_output(any_tag) { } - void init_output(output); - void init_get_area(); - void init_put_area(); - bool one_head() const; - bool two_head() const; - optional storage_; - char_type *ibeg_, *iend_, *obeg_, *oend_; - bool auto_close_; -}; - -//------------------Implementation of direct_streambuf------------------------// - -template -direct_streambuf::direct_streambuf() - : ibeg_(0), iend_(0), obeg_(0), oend_(0), auto_close_(true) -{ this->set_true_eof(true); } - -template -void direct_streambuf::open(const T& t, int, int) -{ - storage_.reset(t); - init_input(category()); - init_output(category()); - setg(0, 0, 0); - setp(0, 0); -} - -template -bool direct_streambuf::is_open() const -{ return ibeg_ != 0 && !obeg_ != 0; } - -template -void direct_streambuf::close() -{ - using namespace std; - try { close(BOOST_IOS::in); } catch (std::exception&) { } - try { close(BOOST_IOS::out); } catch (std::exception&) { } - storage_.reset(); -} - -template -typename direct_streambuf::int_type -direct_streambuf::underflow() -{ - if (!ibeg_) - throw cant_read(); - if (!gptr()) - init_get_area(); - return gptr() != iend_ ? - traits_type::to_int_type(*gptr()) : - traits_type::eof(); -} - -template -typename direct_streambuf::int_type -direct_streambuf::pbackfail(int_type c) -{ - using namespace std; - if (!ibeg_) - throw cant_read(); - if (gptr() != 0 && gptr() != ibeg_) { - gbump(-1); - if (!traits_type::eq_int_type(c, traits_type::eof())) - *gptr() = traits_type::to_char_type(c); - return traits_type::not_eof(c); - } - throw bad_putback(); -} - -template -typename direct_streambuf::int_type -direct_streambuf::overflow(int_type c) -{ - using namespace std; - if (!obeg_) throw BOOST_IOSTREAMS_FAILURE("no write access"); - if (!pptr()) init_put_area(); - if (!traits_type::eq_int_type(c, traits_type::eof())) { - if (pptr() == oend_) - throw BOOST_IOSTREAMS_FAILURE("write area exhausted"); - *pptr() = traits_type::to_char_type(c); - pbump(1); - return c; - } - return traits_type::not_eof(c); -} - -template -inline typename direct_streambuf::pos_type -direct_streambuf::seekoff - (off_type off, BOOST_IOS::seekdir way, BOOST_IOS::openmode which) -{ return seek_impl(off, way, which); } - -template -inline typename direct_streambuf::pos_type -direct_streambuf::seekpos - (pos_type sp, BOOST_IOS::openmode) -{ - return seek_impl( position_to_offset(sp), BOOST_IOS::beg, - BOOST_IOS::in | BOOST_IOS::out ); -} - -template -void direct_streambuf::close(BOOST_IOS::openmode which) -{ - if (which == BOOST_IOS::in && ibeg_ != 0) { - setg(0, 0, 0); - ibeg_ = iend_ = 0; - } - if (which == BOOST_IOS::out && obeg_ != 0) { - sync(); - setp(0, 0); - obeg_ = oend_ = 0; - } - boost::iostreams::close(*storage_, which); -} - -template -typename direct_streambuf::pos_type direct_streambuf::seek_impl - (stream_offset off, BOOST_IOS::seekdir way, BOOST_IOS::openmode which) -{ - using namespace std; - BOOST_IOS::openmode both = BOOST_IOS::in | BOOST_IOS::out; - if (two_head() && (which & both) == both) - throw bad_seek(); - stream_offset result = -1; - bool one = one_head(); - if (one && (pptr() != 0 || gptr()== 0)) - init_get_area(); // Switch to input mode, for code reuse. - if (one || (which & BOOST_IOS::in) != 0 && ibeg_ != 0) { - if (!gptr()) setg(ibeg_, ibeg_, iend_); - ptrdiff_t next = 0; - switch (way) { - case BOOST_IOS::beg: next = off; break; - case BOOST_IOS::cur: next = (gptr() - ibeg_) + off; break; - case BOOST_IOS::end: next = (iend_ - ibeg_) + off; break; - default: assert(0); - } - if (next < 0 || next > (iend_ - ibeg_)) - throw bad_seek(); - setg(ibeg_, ibeg_ + next, iend_); - result = next; - } - if (!one && (which & BOOST_IOS::out) != 0 && obeg_ != 0) { - if (!pptr()) setp(obeg_, oend_); - ptrdiff_t next = 0; - switch (way) { - case BOOST_IOS::beg: next = off; break; - case BOOST_IOS::cur: next = (pptr() - obeg_) + off; break; - case BOOST_IOS::end: next = (oend_ - obeg_) + off; break; - default: assert(0); - } - if (next < 0 || next > (oend_ - obeg_)) - throw bad_seek(); - pbump(static_cast(next - (pptr() - obeg_))); - result = next; - } - return offset_to_position(result); -} - -template -void direct_streambuf::init_input(input) -{ - std::pair p = input_sequence(*storage_); - ibeg_ = p.first; - iend_ = p.second; -} - -template -void direct_streambuf::init_output(output) -{ - std::pair p = output_sequence(*storage_); - obeg_ = p.first; - oend_ = p.second; -} - -template -void direct_streambuf::init_get_area() -{ - setg(ibeg_, ibeg_, iend_); - if (one_head() && pptr()) { - gbump(static_cast(pptr() - obeg_)); - setp(0, 0); - } -} - -template -void direct_streambuf::init_put_area() -{ - setp(obeg_, oend_); - if (one_head() && gptr()) { - pbump(static_cast(gptr() - ibeg_)); - setg(0, 0, 0); - } -} - -template -inline bool direct_streambuf::one_head() const -{ return ibeg_ && obeg_ && ibeg_ == obeg_; } - -template -inline bool direct_streambuf::two_head() const -{ return ibeg_ && obeg_ && ibeg_ != obeg_; } - -//----------------------------------------------------------------------------// - -} // End namespace detail. - -} } // End namespaces iostreams, boost. - -#include // MSVC - -#endif // #ifndef BOOST_IOSTREAMS_DETAIL_DIRECT_STREAMBUF_HPP_INCLUDED diff --git a/boost/boost/iostreams/detail/streambuf/indirect_streambuf.hpp b/boost/boost/iostreams/detail/streambuf/indirect_streambuf.hpp deleted file mode 100644 index 4f65a33f6b..0000000000 --- a/boost/boost/iostreams/detail/streambuf/indirect_streambuf.hpp +++ /dev/null @@ -1,423 +0,0 @@ -// (C) Copyright Jonathan Turkanis 2003. -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt.) -// See http://www.boost.org/libs/iostreams for documentation. - -// This material is heavily indebted to the discussion and code samples in -// A. Langer and K. Kreft, "Standard C++ IOStreams and Locales", -// Addison-Wesley, 2000, pp. 228-43. - -#ifndef BOOST_IOSTREAMS_DETAIL_INDIRECT_STREAMBUF_HPP_INCLUDED -#define BOOST_IOSTREAMS_DETAIL_INDIRECT_STREAMBUF_HPP_INCLUDED - -#include // min, max. -#include -#include -#include -#include // Member template friends. -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -// Must come last. -#include // MSVC, BCC 5.x - -namespace boost { namespace iostreams { namespace detail { - -// -// Description: The implementation of basic_streambuf used by chains. -// -template -class indirect_streambuf - : public linked_streambuf::type, Tr> -{ -public: - typedef typename char_type_of::type char_type; - BOOST_IOSTREAMS_STREAMBUF_TYPEDEFS(Tr) -private: - typedef typename category_of::type category; - typedef concept_adapter wrapper; - typedef detail::basic_buffer buffer_type; - typedef indirect_streambuf my_type; - typedef detail::linked_streambuf base_type; - typedef linked_streambuf streambuf_type; -public: - indirect_streambuf(); - - void open(const T& t BOOST_IOSTREAMS_PUSH_PARAMS()); - bool is_open() const; - void close(); - bool auto_close() const; - void set_auto_close(bool close); - bool strict_sync(); - - // Declared in linked_streambuf. - T* component() { return &*obj(); } -protected: -#if !BOOST_WORKAROUND(__GNUC__, == 2) - BOOST_IOSTREAMS_USING_PROTECTED_STREAMBUF_MEMBERS(base_type) -#endif - - //----------virtual functions---------------------------------------------// - -#ifndef BOOST_IOSTREAMS_NO_LOCALE - void imbue(const std::locale& loc); -#endif -#ifdef BOOST_IOSTREAMS_NO_STREAM_TEMPLATES - public: -#endif - int_type underflow(); - int_type pbackfail(int_type c); - int_type overflow(int_type c); - int sync(); - pos_type seekoff( off_type off, BOOST_IOS::seekdir way, - BOOST_IOS::openmode which ); - pos_type seekpos(pos_type sp, BOOST_IOS::openmode which); - - // Declared in linked_streambuf. - void set_next(streambuf_type* next); - void close(BOOST_IOS::openmode m); - const std::type_info& component_type() const { return typeid(T); } - void* component_impl() { return component(); } -private: - - //----------Accessor functions--------------------------------------------// - - wrapper& obj() { return *storage_; } - streambuf_type* next() const { return next_; } - buffer_type& in() { return buffer_.first(); } - buffer_type& out() { return buffer_.second(); } - bool can_read() const { return is_convertible::value; } - bool can_write() const { return is_convertible::value; } - bool output_buffered() const { return (flags_ & f_output_buffered) != 0; } - bool shared_buffer() const { return is_convertible::value; } - void set_flags(int f) { flags_ = f; } - - //----------State changing functions--------------------------------------// - - virtual void init_get_area(); - virtual void init_put_area(); - - //----------Utility function----------------------------------------------// - - pos_type seek_impl( stream_offset off, BOOST_IOS::seekdir way, - BOOST_IOS::openmode which ); - void sync_impl(); - void close_impl(BOOST_IOS::openmode); - - enum flag_type { - f_open = 1, - f_input_closed = f_open << 1, - f_output_closed = f_input_closed << 1, - f_output_buffered = f_output_closed << 1, - f_auto_close = f_output_buffered << 1 - }; - - optional storage_; - streambuf_type* next_; - double_object< - buffer_type, - is_convertible< - Mode, - two_sequence - > - > buffer_; - std::streamsize pback_size_; - int flags_; -}; - -//--------------Implementation of indirect_streambuf--------------------------// - -template -indirect_streambuf::indirect_streambuf() - : next_(0), pback_size_(0), flags_(f_auto_close) { } - -//--------------Implementation of open, is_open and close---------------------// - -template -void indirect_streambuf::open - (const T& t, int buffer_size, int pback_size) -{ - using namespace std; - - // Normalize buffer sizes. - buffer_size = - (buffer_size != -1) ? - buffer_size : - iostreams::optimal_buffer_size(t); - pback_size = - (pback_size != -1) ? - pback_size : - default_pback_buffer_size; - - // Construct input buffer. - if (can_read()) { - pback_size_ = (std::max)(2, pback_size); // STLPort needs 2. - streamsize size = - pback_size_ + - ( buffer_size ? buffer_size: 1 ); - in().resize(size); - if (!shared_buffer()) - init_get_area(); - } - - // Construct output buffer. - if (can_write() && !shared_buffer()) { - if (buffer_size != 0) - out().resize(buffer_size); - init_put_area(); - } - - storage_.reset(wrapper(t)); - flags_ |= f_open; - if (can_write() && buffer_size > 1) - flags_ |= f_output_buffered; - this->set_true_eof(false); -} - -template -inline bool indirect_streambuf::is_open() const -{ return (flags_ & f_open) != 0; } - -template -void indirect_streambuf::close() -{ - using namespace std; - try { close(BOOST_IOS::in); } catch (std::exception&) { } - try { close(BOOST_IOS::out); } catch (std::exception&) { } - storage_.reset(); - flags_ = 0; -} - -template -bool indirect_streambuf::auto_close() const -{ return (flags_ & f_auto_close) != 0; } - -template -void indirect_streambuf::set_auto_close(bool close) -{ flags_ = (flags_ & ~f_auto_close) | (close ? f_auto_close : 0); } - -//--------------Implementation virtual functions------------------------------// - -#ifndef BOOST_IOSTREAMS_NO_LOCALE -template -void indirect_streambuf::imbue(const std::locale& loc) -{ - if (is_open()) { - obj().imbue(loc); - if (next_) - next_->pubimbue(loc); - } -} -#endif - -template -typename indirect_streambuf::int_type -indirect_streambuf::underflow() -{ - using namespace std; - if (!gptr()) init_get_area(); - buffer_type& buf = in(); - if (gptr() < egptr()) return traits_type::to_int_type(*gptr()); - - // Fill putback buffer. - streamsize keep = (std::min)( static_cast(gptr() - eback()), - pback_size_ ); - if (keep) - traits_type::move( buf.data() + (pback_size_ - keep), - gptr() - keep, keep ); - - // Set pointers to reasonable values in case read throws. - setg( buf.data() + pback_size_ - keep, - buf.data() + pback_size_, - buf.data() + pback_size_ ); - - // Read from source. - streamsize chars = - obj().read(buf.data() + pback_size_, buf.size() - pback_size_, next_); - if (chars == -1) { - this->set_true_eof(true); - chars = 0; - } - setg(eback(), gptr(), buf.data() + pback_size_ + chars); - return chars != 0 ? - traits_type::to_int_type(*gptr()) : - traits_type::eof(); -} - -template -typename indirect_streambuf::int_type -indirect_streambuf::pbackfail(int_type c) -{ - if (gptr() != eback()) { - gbump(-1); - if (!traits_type::eq_int_type(c, traits_type::eof())) - *gptr() = traits_type::to_char_type(c); - return traits_type::not_eof(c); - } else { - throw bad_putback(); - } -} - -template -typename indirect_streambuf::int_type -indirect_streambuf::overflow(int_type c) -{ - if ( output_buffered() && pptr() == 0 || - shared_buffer() && gptr() != 0 ) - { - init_put_area(); - } - if (!traits_type::eq_int_type(c, traits_type::eof())) { - if (output_buffered()) { - if (pptr() == epptr()) { - sync_impl(); - if (pptr() == epptr()) - return traits_type::eof(); - } - *pptr() = traits_type::to_char_type(c); - pbump(1); - } else { - char_type d = traits_type::to_char_type(c); - if (obj().write(&d, 1, next_) != 1) - return traits_type::eof(); - } - } - return traits_type::not_eof(c); -} - -template -int indirect_streambuf::sync() -{ - try { // sync() is no-throw. - sync_impl(); - obj().flush(next_); - return 0; - } catch (std::exception&) { return -1; } -} - -template -bool indirect_streambuf::strict_sync() -{ - try { // sync() is no-throw. - sync_impl(); - return obj().flush(next_); - } catch (std::exception&) { return false; } -} - -template -inline typename indirect_streambuf::pos_type -indirect_streambuf::seekoff - (off_type off, BOOST_IOS::seekdir way, BOOST_IOS::openmode which) -{ return seek_impl(off, way, which); } - -template -inline typename indirect_streambuf::pos_type -indirect_streambuf::seekpos - (pos_type sp, BOOST_IOS::openmode) -{ - return seek_impl( position_to_offset(sp), BOOST_IOS::beg, - BOOST_IOS::in | BOOST_IOS::out ); -} - -template -typename indirect_streambuf::pos_type -indirect_streambuf::seek_impl - (stream_offset off, BOOST_IOS::seekdir way, BOOST_IOS::openmode which) -{ - if (pptr() != 0) - this->BOOST_IOSTREAMS_PUBSYNC(); // sync() confuses VisualAge 6. - if (way == BOOST_IOS::cur && gptr()) - off -= static_cast(egptr() - gptr()); - setg(0, 0, 0); - setp(0, 0); - return obj().seek(off, way, which, next_); -} - -template -inline void indirect_streambuf::set_next - (streambuf_type* next) -{ next_ = next; } - -template -inline void indirect_streambuf::close - (BOOST_IOS::openmode which) -{ - close_impl(which); - try { obj().close(which, next_); } catch (std::exception&) { } -} - -//----------State changing functions------------------------------------------// - -template -inline void indirect_streambuf::close_impl - (BOOST_IOS::openmode which) -{ - if (which == BOOST_IOS::in && (flags_ & f_input_closed) == 0) { - setg(0, 0, 0); - flags_ |= f_input_closed; - } - if (which == BOOST_IOS::out && (flags_ & f_output_closed) == 0) { - sync(); - setp(0, 0); - flags_ |= f_output_closed; - } -} - -template -void indirect_streambuf::sync_impl() -{ - std::streamsize avail, amt; - if ((avail = static_cast(pptr() - pbase())) > 0) { - if ((amt = obj().write(pbase(), avail, next())) == avail) - setp(out().begin(), out().end()); - else { - const char_type* ptr = pptr(); - setp(out().begin() + amt, out().end()); - pbump(ptr - pptr()); - } - } -} - -template -void indirect_streambuf::init_get_area() -{ - if (shared_buffer() && pptr() != 0) { - sync_impl(); - setp(0, 0); - } - setg(in().begin(), in().begin(), in().begin()); -} - -template -void indirect_streambuf::init_put_area() -{ - using namespace std; - if (shared_buffer() && gptr() != 0) - setg(0, 0, 0); - if (output_buffered()) - setp(out().begin(), out().end()); - else - setp(0, 0); -} - -//----------------------------------------------------------------------------// - -} } } // End namespaces detail, iostreams, boost. - -#include // MSVC, BCC 5.x - -#endif // #ifndef BOOST_IOSTREAMS_DETAIL_INDIRECT_STREAMBUF_HPP_INCLUDED diff --git a/boost/boost/iostreams/detail/streambuf/linked_streambuf.hpp b/boost/boost/iostreams/detail/streambuf/linked_streambuf.hpp deleted file mode 100644 index a221aaf64b..0000000000 --- a/boost/boost/iostreams/detail/streambuf/linked_streambuf.hpp +++ /dev/null @@ -1,80 +0,0 @@ -// (C) Copyright Jonathan Turkanis 2003. -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt.) - -// See http://www.boost.org/libs/iostreams for documentation. - -#ifndef BOOST_IOSTREAMS_DETAIL_LINKED_STREAMBUF_HPP_INCLUDED -#define BOOST_IOSTREAMS_DETAIL_LINKED_STREAMBUF_HPP_INCLUDED - -#if defined(_MSC_VER) && (_MSC_VER >= 1020) -# pragma once -#endif - -#include -#include // member template friends. -#include -#include // openmode. -#include - -// Must come last. -#include // MSVC. - -namespace boost { namespace iostreams { namespace detail { - -template -class chain_base; - -template class chainbuf; - -#define BOOST_IOSTREAMS_USING_PROTECTED_STREAMBUF_MEMBERS(base) \ - using base::eback; using base::gptr; using base::egptr; \ - using base::setg; using base::gbump; using base::pbase; \ - using base::pptr; using base::epptr; using base::setp; \ - using base::pbump; using base::underflow; using base::pbackfail; \ - using base::xsgetn; using base::overflow; using base::sputc; \ - using base::xsputn; using base::sync; using base::seekoff; \ - using base::seekpos; \ - /**/ - -template -class linked_streambuf : public BOOST_IOSTREAMS_BASIC_STREAMBUF(Ch, Tr) { -protected: - linked_streambuf() : true_eof_(false) { } - void set_true_eof(bool eof) { true_eof_ = eof; } -public: - - // Should be called only after receiving an ordinary EOF indication, - // to confirm that it represents EOF rather than WOULD_BLOCK. - bool true_eof() const { return true_eof_; } -protected: - - //----------grant friendship to chain_base and chainbuf-------------------// - -#ifndef BOOST_NO_MEMBER_TEMPLATE_FRIENDS - template< typename Self, typename ChT, typename TrT, - typename Alloc, typename Mode > - friend class chain_base; - template - friend class chainbuf; -#else -public: - typedef BOOST_IOSTREAMS_BASIC_STREAMBUF(Ch, Tr) base; - BOOST_IOSTREAMS_USING_PROTECTED_STREAMBUF_MEMBERS(base) -#endif - virtual void set_next(linked_streambuf* /* next */) { } - virtual void close(BOOST_IOS::openmode) = 0; - virtual bool auto_close() const = 0; - virtual void set_auto_close(bool) = 0; - virtual bool strict_sync() = 0; - virtual const std::type_info& component_type() const = 0; - virtual void* component_impl() = 0; -private: - bool true_eof_; -}; - -} } } // End namespaces detail, iostreams, boost. - -#include // MSVC. - -#endif // #ifndef BOOST_IOSTREAMS_DETAIL_LINKED_STREAMBUF_HPP_INCLUDED diff --git a/boost/boost/iostreams/detail/system_failure.hpp b/boost/boost/iostreams/detail/system_failure.hpp deleted file mode 100644 index a4cf427a03..0000000000 --- a/boost/boost/iostreams/detail/system_failure.hpp +++ /dev/null @@ -1,76 +0,0 @@ -// (C) Copyright Jonathan Graehl 2004. -// (C) Copyright Jonathan Turkanis 2005. -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt.) - -// See http://www.boost.org/libs/iostreams for documentation. - -// Used by mapped_file.cpp. - -#ifndef BOOST_IOSTREAMS_DETAIL_SYSTEM_FAILURE_HPP_INCLUDED -#define BOOST_IOSTREAMS_DETAIL_SYSTEM_FAILURE_HPP_INCLUDED - -#if defined(_MSC_VER) && (_MSC_VER >= 1020) -# pragma once -#endif - -#include -#include -#include -#include -#include // failure. - -#if defined(BOOST_NO_STDC_NAMESPACE) && !defined(__LIBCOMO__) -namespace std { using ::strlen; } -#endif - -#ifdef BOOST_IOSTREAMS_WINDOWS -# define WIN32_LEAN_AND_MEAN // Exclude rarely-used stuff from Windows headers -# include -#else -# include -# include -#endif - -namespace boost { namespace iostreams { namespace detail { - -inline BOOST_IOSTREAMS_FAILURE system_failure(const char* msg) -{ - std::string result; -#ifdef BOOST_IOSTREAMS_WINDOWS - DWORD err; - LPVOID lpMsgBuf; - if ( (err = ::GetLastError()) != NO_ERROR && - ::FormatMessageA( FORMAT_MESSAGE_ALLOCATE_BUFFER | - FORMAT_MESSAGE_FROM_SYSTEM, - NULL, - err, - MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), - (LPSTR) &lpMsgBuf, - 0, - NULL ) != 0 ) - { - result.reserve(std::strlen(msg) + 2 + std::strlen((LPSTR)lpMsgBuf)); - result.append(msg); - result.append(": "); - result.append((LPSTR) lpMsgBuf); - ::LocalFree(lpMsgBuf); - } else { - result += msg; - } -#else - const char* system_msg = errno ? strerror(errno) : ""; - result.reserve(std::strlen(msg) + 2 + std::strlen(system_msg)); - result.append(msg); - result.append(": "); - result.append(system_msg); -#endif - return BOOST_IOSTREAMS_FAILURE(result); -} - -inline void throw_system_failure(const char* msg) -{ throw system_failure(msg); } - -} } } // End namespaces detail, iostreams, boost. - -#endif // #ifndef BOOST_IOSTREAMS_DETAIL_SYSTEM_FAILURE_HPP_INCLUDED diff --git a/boost/boost/iostreams/detail/template_params.hpp b/boost/boost/iostreams/detail/template_params.hpp deleted file mode 100644 index cbd565fbc0..0000000000 --- a/boost/boost/iostreams/detail/template_params.hpp +++ /dev/null @@ -1,25 +0,0 @@ -// (C) Copyright Jonathan Turkanis 2003. -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt.) - -// See http://www.boost.org/libs/iostreams for documentation. - -#ifndef BOOST_IOSTREAMS_DETAIL_TEMPLATE_PARAMS_HPP_INCLUDED - -#include -#include -#include - -#define BOOST_IOSTREAMS_TEMPLATE_PARAMS(arity, param) \ - BOOST_PP_EXPR_IF(arity, template<) \ - BOOST_PP_ENUM_PARAMS(arity, typename param) \ - BOOST_PP_EXPR_IF(arity, >) \ - /**/ - -#define BOOST_IOSTREAMS_TEMPLATE_ARGS(arity, param) \ - BOOST_PP_EXPR_IF(arity, <) \ - BOOST_PP_ENUM_PARAMS(arity, param) \ - BOOST_PP_EXPR_IF(arity, >) \ - /**/ - -#endif // #ifndef BOOST_IOSTREAMS_DETAIL_BUFFERS_HPP_INCLUDED diff --git a/boost/boost/iostreams/detail/translate_int_type.hpp b/boost/boost/iostreams/detail/translate_int_type.hpp deleted file mode 100644 index a5062d38ad..0000000000 --- a/boost/boost/iostreams/detail/translate_int_type.hpp +++ /dev/null @@ -1,61 +0,0 @@ -// (C) Copyright Jonathan Turkanis 2003. -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt.) - -// See http://www.boost.org/libs/iostreams for documentation. - -#ifndef BOOST_IOSTREAMS_DETAIL_TRANSLATE_INT_TYPE_HPP_INCLUDED -#define BOOST_IOSTREAMS_DETAIL_TRANSLATE_INT_TYPE_HPP_INCLUDED - -#if defined(_MSC_VER) && (_MSC_VER >= 1020) -# pragma once -#endif - -#include - -namespace boost { namespace iostreams { namespace detail { - -template -struct translate_int_type_impl; - -// -// Template name: translate_char. -// Description: Translates a character or an end-of-file indicator from the -// int_type of one character traits type to the int_type of another. -// -template -typename TargetTr::int_type -translate_int_type(typename SourceTr::int_type c) -{ - typedef translate_int_type_impl::value> impl; - return impl::template inner::translate(c); -} - -//----------------------------------------------------------------------------// - -template<> -struct translate_int_type_impl { - template - struct inner { - static typename TargetTr::int_type - translate(typename SourceTr::int_type c) { return c; } - }; -}; - -template<> -struct translate_int_type_impl { - template - struct inner { - static typename TargetTr::int_type - translate(typename SourceTr::int_type c) - { - return SourceTr::eq_int_type(SourceTr::eof()) ? - TargetTr::eof() : - TargetTr::to_int_type(SourceTr::to_char_type(c)); - } - }; -}; - -} } } // End namespaces detail, iostreams, boost. - -#endif // #ifndef BOOST_IOSTREAMS_DETAIL_TRANSLATE_INT_TYPE_HPP_INCLUDED diff --git a/boost/boost/iostreams/detail/wrap_unwrap.hpp b/boost/boost/iostreams/detail/wrap_unwrap.hpp deleted file mode 100644 index 3567344a16..0000000000 --- a/boost/boost/iostreams/detail/wrap_unwrap.hpp +++ /dev/null @@ -1,126 +0,0 @@ -// (C) Copyright Jonathan Turkanis 2003. -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt.) - -// See http://www.boost.org/libs/iostreams for documentation. - -#ifndef BOOST_IOSTREAMS_DETAIL_WRAP_UNWRAP_HPP_INCLUDED -#define BOOST_IOSTREAMS_DETAIL_WRAP_UNWRAP_HPP_INCLUDED - -#if defined(_MSC_VER) && (_MSC_VER >= 1020) -# pragma once -#endif - -#include // SFINAE, MSVC. -#include -#include -#include // is_std_io. -#include -#include -#include -#include -#include - -namespace boost { namespace iostreams { namespace detail { - -//------------------Definition of wrap/unwrap traits--------------------------// - -template -struct wrapped_type - : mpl::if_, reference_wrapper, T> - { }; - -template -struct unwrapped_type - : unwrap_reference - { }; - -template -struct unwrap_ios - : mpl::eval_if< - is_std_io, - unwrap_reference, - mpl::identity - > - { }; - -//------------------Definition of wrap----------------------------------------// - -#ifndef BOOST_NO_SFINAE //----------------------------------------------------// - template - inline T wrap(const T& t BOOST_IOSTREAMS_DISABLE_IF_STREAM(T)) - { return t; } - - template - inline typename wrapped_type::type - wrap(T& t BOOST_IOSTREAMS_ENABLE_IF_STREAM(T)) { return boost::ref(t); } -#else // #ifndef BOOST_NO_SFINAE //-------------------------------------------// - template - inline typename wrapped_type::type // BCC 5.x needs namespace qualification. - wrap_impl(const T& t, mpl::true_) { return boost::ref(const_cast(t)); } - - template - inline typename wrapped_type::type // BCC 5.x needs namespace qualification. - wrap_impl(T& t, mpl::true_) { return boost::ref(t); } - - template - inline typename wrapped_type::type - wrap_impl(const T& t, mpl::false_) { return t; } - - template - inline typename wrapped_type::type - wrap_impl(T& t, mpl::false_) { return t; } - - template - inline typename wrapped_type::type - wrap(const T& t) { return wrap_impl(t, is_std_io()); } - - template - inline typename wrapped_type::type - wrap(T& t) { return wrap_impl(t, is_std_io()); } -#endif // #ifndef BOOST_NO_SFINAE //------------------------------------------// - -//------------------Definition of unwrap--------------------------------------// - -#if !BOOST_WORKAROUND(BOOST_MSVC, < 1310) //----------------------------------// - -template -typename unwrapped_type::type& -unwrap(const reference_wrapper& ref) { return ref.get(); } - -template -typename unwrapped_type::type& unwrap(T& t) { return t; } - -template -const typename unwrapped_type::type& unwrap(const T& t) { return t; } - -#else // #if !BOOST_WORKAROUND(BOOST_MSVC, < 1310) //-------------------------// - -// Since unwrap is a potential bottleneck, we avoid runtime tag dispatch. -template -struct unwrap_impl; - -template<> -struct unwrap_impl { - template - static typename unwrapped_type::type& unwrap(const T& t) - { return t.get(); } -}; - -template<> -struct unwrap_impl { - template - static typename unwrapped_type::type& unwrap(const T& t) - { return const_cast(t); } -}; - -template -typename unwrapped_type::type& -unwrap(const T& t) -{ return unwrap_impl::value>::unwrap(t); } - -#endif // #if !BOOST_WORKAROUND(BOOST_MSVC, < 1310) //------------------------// - -} } } // End namespaces detail, iostreams, boost. - -#endif // #ifndef BOOST_IOSTREAMS_DETAIL_WRAP_UNWRAP_HPP_INCLUDED diff --git a/boost/boost/iostreams/device/array.hpp b/boost/boost/iostreams/device/array.hpp deleted file mode 100644 index 7d23026fb4..0000000000 --- a/boost/boost/iostreams/device/array.hpp +++ /dev/null @@ -1,143 +0,0 @@ -// (C) Copyright Jonathan Turkanis 2004. -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt.) - -// See http://www.boost.org/libs/iostreams for documentation. - -#ifndef BOOST_IOSTREAMS_ARRAY_HPP_INCLUDED -#define BOOST_IOSTREAMS_ARRAY_HPP_INCLUDED - -#if defined(_MSC_VER) && (_MSC_VER >= 1020) -# pragma once -#endif - -#include // BOOST_MSVC, make sure size_t is in std. -#include -#include // std::size_t. -#include // pair. -#include -#include -#include -#include -#include - -namespace boost { namespace iostreams { - -namespace detail { - -template -class array_adapter { -public: - typedef Ch char_type; - typedef std::pair pair_type; - struct category - : public Mode, - public device_tag, - public direct_tag - { }; - array_adapter(char_type* begin, char_type* end); - array_adapter(char_type* begin, std::size_t length); - array_adapter(const char_type* begin, const char_type* end); - array_adapter(const char_type* begin, std::size_t length); -#if !BOOST_WORKAROUND(BOOST_MSVC, < 1300) - template - array_adapter(char_type (&ar)[N]) - : begin_(ar), end_(ar + N) - { } -#endif - pair_type input_sequence(); - pair_type output_sequence(); -private: - char_type* begin_; - char_type* end_; -}; - -} // End namespace detail. - -// Local macros, #undef'd below. -#if !BOOST_WORKAROUND(BOOST_MSVC, <= 1300) -# define BOOST_IOSTREAMS_ARRAY_CTOR(name, ch) \ - template \ - BOOST_PP_CAT(basic_, name)(ch (&ar)[N]) \ - : base_type(ar) { } \ - /**/ -#else -# define BOOST_IOSTREAMS_ARRAY_CTOR(name, ch) -#endif -#define BOOST_IOSTREAMS_ARRAY(name, mode) \ - template \ - struct BOOST_PP_CAT(basic_, name) : detail::array_adapter { \ - private: \ - typedef detail::array_adapter base_type; \ - public: \ - typedef typename base_type::char_type char_type; \ - typedef typename base_type::category category; \ - BOOST_PP_CAT(basic_, name)(char_type* begin, char_type* end) \ - : base_type(begin, end) { } \ - BOOST_PP_CAT(basic_, name)(char_type* begin, std::size_t length) \ - : base_type(begin, length) { } \ - BOOST_PP_CAT(basic_, name)(const char_type* begin, const char_type* end) \ - : base_type(begin, end) { } \ - BOOST_PP_CAT(basic_, name)(const char_type* begin, std::size_t length) \ - : base_type(begin, length) { } \ - BOOST_IOSTREAMS_ARRAY_CTOR(name, Ch) \ - }; \ - typedef BOOST_PP_CAT(basic_, name) name; \ - typedef BOOST_PP_CAT(basic_, name) BOOST_PP_CAT(w, name); \ - /**/ -BOOST_IOSTREAMS_ARRAY(array_source, input_seekable) -BOOST_IOSTREAMS_ARRAY(array_sink, output_seekable) -BOOST_IOSTREAMS_ARRAY(array, seekable) -#undef BOOST_IOSTREAMS_ARRAY_CTOR -#undef BOOST_IOSTREAMS_ARRAY - - -//------------------Implementation of array_adapter---------------------------// - -namespace detail { - -template -array_adapter::array_adapter - (char_type* begin, char_type* end) - : begin_(begin), end_(end) - { } - -template -array_adapter::array_adapter - (char_type* begin, std::size_t length) - : begin_(begin), end_(begin + length) - { } - -template -array_adapter::array_adapter - (const char_type* begin, const char_type* end) - : begin_(const_cast(begin)), // Treated as read-only. - end_(const_cast(end)) // Treated as read-only. -{ BOOST_STATIC_ASSERT((!is_convertible::value)); } - -template -array_adapter::array_adapter - (const char_type* begin, std::size_t length) - : begin_(const_cast(begin)), // Treated as read-only. - end_(const_cast(begin) + length) // Treated as read-only. -{ BOOST_STATIC_ASSERT((!is_convertible::value)); } - -template -typename array_adapter::pair_type -array_adapter::input_sequence() -{ BOOST_STATIC_ASSERT((is_convertible::value)); - return pair_type(begin_, end_); } - -template -typename array_adapter::pair_type -array_adapter::output_sequence() -{ BOOST_STATIC_ASSERT((is_convertible::value)); - return pair_type(begin_, end_); } - -} // End namespace detail. - -//----------------------------------------------------------------------------// - -} } // End namespaces iostreams, boost. - -#endif // #ifndef BOOST_IOSTREAMS_ARRAY_HPP_INCLUDED diff --git a/boost/boost/iostreams/device/back_inserter.hpp b/boost/boost/iostreams/device/back_inserter.hpp deleted file mode 100644 index 0a605ead09..0000000000 --- a/boost/boost/iostreams/device/back_inserter.hpp +++ /dev/null @@ -1,40 +0,0 @@ -// (C) Copyright Jonathan Turkanis 2003. -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt.) - -// See http://www.boost.org/libs/iostreams for documentation. - -#ifndef BOOST_IOSTREAMS_BACK_INSERTER_HPP_INCLUDED -#define BOOST_IOSTREAMS_BACK_INSERTER_HPP_INCLUDED - -#if defined(_MSC_VER) && (_MSC_VER >= 1020) -# pragma once -#endif - -#include // streamsize. -#include - -namespace boost { namespace iostreams { - -template -class back_insert_device { -public: - typedef typename Container::value_type char_type; - typedef sink_tag category; - back_insert_device(Container& cnt) : container(&cnt) { } - std::streamsize write(const char_type* s, std::streamsize n) - { - container->insert(container->end(), s, s + n); - return n; - } -protected: - Container* container; -}; - -template -back_insert_device back_inserter(Container& cnt) -{ return back_insert_device(cnt); } - -} } // End namespaces iostreams, boost. - -#endif // #ifndef BOOST_IOSTREAMS_BACK_INSERTER_HPP_INCLUDED diff --git a/boost/boost/iostreams/device/file.hpp b/boost/boost/iostreams/device/file.hpp deleted file mode 100644 index 479858271a..0000000000 --- a/boost/boost/iostreams/device/file.hpp +++ /dev/null @@ -1,182 +0,0 @@ -// (C) Copyright Jonathan Turkanis 2003. -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt.) - -// See http://www.boost.org/libs/iostreams for documentation. - -// -// Contains wrappers for standard file buffers, together -// with convenience typedefs: -// - basic_file_source -// - basic_file_sink -// - basic_file -// - -#ifndef BOOST_IOSTREAMS_FILE_HPP_INCLUDED -#define BOOST_IOSTREAMS_FILE_HPP_INCLUDED - -#if defined(_MSC_VER) && (_MSC_VER >= 1020) -# pragma once -#endif - -#include -#ifndef BOOST_IOSTREAMS_NO_LOCALE -# include -#endif -#include // pathnames, char_traits. -#include -#include // openmode, seekdir, int types. -#include -#include // seek. -#include - -// Must come last. -#include // MSVC. - -namespace boost { namespace iostreams { - -template -class basic_file { -public: - typedef Ch char_type; - struct category - : public seekable_device_tag, - public closable_tag, - public localizable_tag - { }; - basic_file( const std::string& path, - BOOST_IOS::openmode mode = - BOOST_IOS::in | BOOST_IOS::out, - BOOST_IOS::openmode base_mode = - BOOST_IOS::in | BOOST_IOS::out ); - std::streamsize read(char_type* s, std::streamsize n); - std::streamsize write(const char_type* s, std::streamsize n); - std::streampos seek( stream_offset off, BOOST_IOS::seekdir way, - BOOST_IOS::openmode which = - BOOST_IOS::in | BOOST_IOS::out ); - void open( const std::string& path, - BOOST_IOS::openmode mode = - BOOST_IOS::in | BOOST_IOS::out, - BOOST_IOS::openmode base_mode = - BOOST_IOS::in | BOOST_IOS::out ); - bool is_open() const; - void close(); -#ifndef BOOST_IOSTREAMS_NO_LOCALE - void imbue(const std::locale& loc) { pimpl_->file_.pubimbue(loc); } -#endif -private: - struct impl { - impl(const std::string& path, BOOST_IOS::openmode mode) - { file_.open(path.c_str(), mode); } - ~impl() { if (file_.is_open()) file_.close(); } - BOOST_IOSTREAMS_BASIC_FILEBUF(Ch) file_; - }; - shared_ptr pimpl_; -}; - -typedef basic_file file; -typedef basic_file wfile; - -template -struct basic_file_source : private basic_file { - typedef Ch char_type; - struct category - : input_seekable, - device_tag, - closable_tag - { }; - using basic_file::read; - using basic_file::seek; - using basic_file::is_open; - using basic_file::close; - basic_file_source( const std::string& path, - BOOST_IOS::openmode mode = - BOOST_IOS::in ) - : basic_file(path, mode & ~BOOST_IOS::out, BOOST_IOS::in) - { } - void open( const std::string& path, - BOOST_IOS::openmode mode = BOOST_IOS::in ) - { - basic_file::open(path, mode & ~BOOST_IOS::out, BOOST_IOS::in); - } -}; - -typedef basic_file_source file_source; -typedef basic_file_source wfile_source; - -template -struct basic_file_sink : private basic_file { - typedef Ch char_type; - struct category - : output_seekable, - device_tag, - closable_tag - { }; - using basic_file::write; - using basic_file::seek; - using basic_file::is_open; - using basic_file::close; - basic_file_sink( const std::string& path, - BOOST_IOS::openmode mode = BOOST_IOS::out ) - : basic_file(path, mode & ~BOOST_IOS::in, BOOST_IOS::out) - { } - void open( const std::string& path, - BOOST_IOS::openmode mode = BOOST_IOS::out ) - { - basic_file::open(path, mode & ~BOOST_IOS::in, BOOST_IOS::out); - } -}; - -typedef basic_file_sink file_sink; -typedef basic_file_sink wfile_sink; - -//------------------Implementation of basic_file------------------------------// - -template -basic_file::basic_file - ( const std::string& path, BOOST_IOS::openmode mode, - BOOST_IOS::openmode base_mode ) -{ - open(path, mode, base_mode); -} - -template -inline std::streamsize basic_file::read - (char_type* s, std::streamsize n) -{ - std::streamsize result = pimpl_->file_.sgetn(s, n); - return result != 0 ? result : -1; -} - -template -inline std::streamsize basic_file::write - (const char_type* s, std::streamsize n) -{ return pimpl_->file_.sputn(s, n); } - -template -std::streampos basic_file::seek - ( stream_offset off, BOOST_IOS::seekdir way, - BOOST_IOS::openmode ) -{ return iostreams::seek(pimpl_->file_, off, way); } - -template -void basic_file::open - ( const std::string& path, BOOST_IOS::openmode mode, - BOOST_IOS::openmode base_mode ) -{ - pimpl_.reset(new impl(path, mode | base_mode)); -} - -template -bool basic_file::is_open() const { return pimpl_->file_.is_open(); } - -template -void basic_file::close() { pimpl_->file_.close(); } - -//----------------------------------------------------------------------------// - -} } // End namespaces iostreams, boost. - -#include // MSVC - -#endif // #ifndef BOOST_IOSTREAMS_FILE_HPP_INCLUDED diff --git a/boost/boost/iostreams/device/file_descriptor.hpp b/boost/boost/iostreams/device/file_descriptor.hpp deleted file mode 100644 index 13e1c68411..0000000000 --- a/boost/boost/iostreams/device/file_descriptor.hpp +++ /dev/null @@ -1,156 +0,0 @@ -// (C) Copyright Jonathan Turkanis 2003. -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt.) - -// See http://www.boost.org/libs/iostreams for documentation. - -// Inspired by fdstream.hpp, (C) Copyright Nicolai M. Josuttis 2001, -// available at http://www.josuttis.com/cppcode/fdstream.html. - -#ifndef BOOST_IOSTREAMS_FILE_DESCRIPTOR_HPP_INCLUDED -#define BOOST_IOSTREAMS_FILE_DESCRIPTOR_HPP_INCLUDED - -#if defined(_MSC_VER) && (_MSC_VER >= 1020) -# pragma once -#endif - -#include // file pathnames. -#include // intmax_t. -#include // tags. -#include -#include -#include -#include // openmode, seekdir, int types. -#include -#include - -// Must come last. -#include - -namespace boost { namespace iostreams { - -class BOOST_IOSTREAMS_DECL file_descriptor { -public: -#ifdef BOOST_IOSTREAMS_WINDOWS - typedef void* handle_type; -#endif - typedef char char_type; - struct category - : seekable_device_tag, - closable_tag - { }; - file_descriptor() : pimpl_(new impl) { } - explicit file_descriptor(int fd, bool close_on_exit = false) - : pimpl_(new impl(fd, close_on_exit)) - { } -#ifdef BOOST_IOSTREAMS_WINDOWS - explicit file_descriptor(handle_type handle, bool close_on_exit = false) - : pimpl_(new impl(handle, close_on_exit)) - { } -#endif - explicit file_descriptor( const std::string& path, - BOOST_IOS::openmode mode = - BOOST_IOS::in | BOOST_IOS::out, - BOOST_IOS::openmode base_mode = - BOOST_IOS::in | BOOST_IOS::out ) - : pimpl_(new impl) - { open(path, mode, base_mode); } - void open( const std::string& path, - BOOST_IOS::openmode = - BOOST_IOS::in | BOOST_IOS::out, - BOOST_IOS::openmode base_mode = - BOOST_IOS::in | BOOST_IOS::out ); - bool is_open() const { return pimpl_->flags_ != 0; } - std::streamsize read(char_type* s, std::streamsize n); - std::streamsize write(const char_type* s, std::streamsize n); - std::streampos seek(stream_offset off, BOOST_IOS::seekdir way); - void close(); -private: - struct impl { - impl() : fd_(-1), flags_(0) { } - impl(int fd, bool close_on_exit) - : fd_(fd), flags_(0) - { if (close_on_exit) flags_ |= impl::close_on_exit; } - #ifdef BOOST_IOSTREAMS_WINDOWS - impl(handle_type handle, bool close_on_exit) - : handle_(handle), flags_(has_handle) - { if (close_on_exit) flags_ |= impl::close_on_exit; } - #endif - ~impl() { - if (flags_ & close_on_exit) close_impl(*this); - } - enum flags { - close_on_exit = 1, - has_handle = 2, - append = 4 - }; - int fd_; - #ifdef BOOST_IOSTREAMS_WINDOWS - handle_type handle_; - #endif - int flags_; - }; - friend struct impl; - - static void close_impl(impl&); - - shared_ptr pimpl_; -}; - -struct file_descriptor_source : private file_descriptor { -#ifdef BOOST_IOSTREAMS_WINDOWS - typedef void* handle_type; -#endif - typedef char char_type; - struct category : public source_tag, closable_tag { }; - using file_descriptor::read; - using file_descriptor::open; - using file_descriptor::is_open; - using file_descriptor::close; - file_descriptor_source() { } - explicit file_descriptor_source(int fd, bool close_on_exit = false) - : file_descriptor(fd, close_on_exit) - { } -#ifdef BOOST_IOSTREAMS_WINDOWS - explicit file_descriptor_source( handle_type handle, - bool close_on_exit = false ) - : file_descriptor(handle, close_on_exit) - { } -#endif - explicit file_descriptor_source( const std::string& path, - BOOST_IOS::openmode m = BOOST_IOS::in ) - : file_descriptor(path, m & ~BOOST_IOS::out, BOOST_IOS::in) - { } -}; - -struct file_descriptor_sink : private file_descriptor { -#ifdef BOOST_IOSTREAMS_WINDOWS - typedef void* handle_type; -#endif - typedef char char_type; - struct category : public sink_tag, closable_tag { }; - using file_descriptor::write; - using file_descriptor::open; - using file_descriptor::is_open; - using file_descriptor::close; - file_descriptor_sink() { } - explicit file_descriptor_sink(int fd, bool close_on_exit = false) - : file_descriptor(fd, close_on_exit) - { } -#ifdef BOOST_IOSTREAMS_WINDOWS - explicit file_descriptor_sink( handle_type handle, - bool close_on_exit = false ) - : file_descriptor(handle, close_on_exit) - { } -#endif - explicit file_descriptor_sink( const std::string& path, - BOOST_IOS::openmode m = BOOST_IOS::out ) - : file_descriptor(path, m & ~BOOST_IOS::in, BOOST_IOS::out) - { } -}; - -} } // End namespaces iostreams, boost. - -#include // pops abi_suffix.hpp pragmas - -#endif // #ifndef BOOST_IOSTREAMS_FILE_DESCRIPTOR_HPP_INCLUDED diff --git a/boost/boost/iostreams/device/mapped_file.hpp b/boost/boost/iostreams/device/mapped_file.hpp deleted file mode 100644 index 38046f9a85..0000000000 --- a/boost/boost/iostreams/device/mapped_file.hpp +++ /dev/null @@ -1,270 +0,0 @@ -// (C) Copyright Jonathan Turkanis 2003. -// (C) Copyright Craig Henderson 2002. 'boost/memmap.hpp' from sandbox -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt.) - -// See http://www.boost.org/libs/iostreams for documentation. - -// -// This header and its accompanying source file libs/iostreams/memmap.cpp are -// an adaptation of Craig Henderson's memmory mapped file library. The -// interface has been revised significantly, but the underlying OS-specific -// code is essentially the same, with some code from Boost.Filesystem -// mixed in. (See notations in source.) -// -// The following changes have been made: -// -// 1. OS-specific code put in a .cpp file. -// 2. Name of main class changed to mapped_file. -// 3. mapped_file given an interface similar to std::fstream (open(), -// is_open(), close()) and std::string (data(), size(), begin(), end()). -// 4. An additional class readonly_mapped_file has been provided as a -// convenience. -// 5. [Obsolete: Error states are reported using filesystem::error_code.] -// 6. Read-only or read-write states are specified using ios_base::openmode. -// 7. Access to the underlying file handles and to security parameters -// has been removed. -// - -#ifndef BOOST_IOSTREAMS_MAPPED_FILE_HPP_INCLUDED -#define BOOST_IOSTREAMS_MAPPED_FILE_HPP_INCLUDED - -#if defined(_MSC_VER) && (_MSC_VER >= 1020) -# pragma once -#endif - -#include // make sure size_t is in std. -#include // size_t. -#include // pathnames. -#include // pair. -#include // BOOST_MSVC. -#include -#include -#include -#include -#include -#include // openmode. -#include -#include -#include - -// Must come last. -#include -#include - -namespace boost { namespace iostreams { - -namespace detail { - -struct mapped_file_impl; - -} // End namespace detail. - -struct mapped_file_params { - explicit mapped_file_params() - : mode(), offset(0), length(static_cast(-1)), - new_file_size(0), hint(0) - { } - explicit mapped_file_params(const std::string& path) - : path(path), mode(), offset(0), - length(static_cast(-1)), - new_file_size(0), hint(0) - { } - std::string path; - BOOST_IOS::openmode mode; - stream_offset offset; - std::size_t length; - stream_offset new_file_size; - const char* hint; -}; - -//------------------Definition of mapped_file_source--------------------------// - -class BOOST_IOSTREAMS_DECL mapped_file_source { -private: - struct safe_bool_helper { int x; }; // From Bronek Kozicki. - typedef int safe_bool_helper::* safe_bool; - friend struct operations; -public: - typedef char char_type; - struct category - : public source_tag, - public direct_tag, - public closable_tag - { }; - typedef std::size_t size_type; - typedef const char* iterator; - BOOST_STATIC_CONSTANT(size_type, max_length = static_cast(-1)); - - mapped_file_source() { } - explicit mapped_file_source(mapped_file_params); - explicit mapped_file_source( const std::string& path, - size_type length = max_length, - boost::intmax_t offset = 0 ); - - //--------------Stream interface------------------------------------------// - - void open(mapped_file_params params); - void open( const std::string& path, - size_type length = max_length, - boost::intmax_t offset = 0 ); - bool is_open() const; - void close(); - - operator safe_bool() const; - bool operator!() const; - BOOST_IOS::openmode mode() const; - - //--------------Container interface---------------------------------------// - - size_type size() const; - const char* data() const; - iterator begin() const; - iterator end() const; - - //--------------Query admissible offsets----------------------------------// - - // Returns the allocation granularity for virtual memory. Values passed - // as offsets must be multiples of this value. - static int alignment(); -private: - friend class mapped_file; - typedef detail::mapped_file_impl impl_type; - void open_impl(mapped_file_params); - - boost::shared_ptr pimpl_; -}; - -//------------------Definition of mapped_file---------------------------------// - -class BOOST_IOSTREAMS_DECL mapped_file { -private: - typedef mapped_file_source delegate_type; - delegate_type delegate_; - friend struct operations; -public: - typedef char char_type; - struct category - : public seekable_device_tag, - public direct_tag, - public closable_tag - { }; - typedef mapped_file_source::size_type size_type; - typedef char* iterator; - typedef const char* const_iterator; - BOOST_STATIC_CONSTANT(size_type, max_length = delegate_type::max_length); - mapped_file() { } - explicit mapped_file(mapped_file_params p); - explicit mapped_file( const std::string& path, - BOOST_IOS::openmode mode = - BOOST_IOS::in | BOOST_IOS::out, - size_type length = max_length, - stream_offset offset = 0 ); - - //--------------Conversion to readonly_mapped_file------------------------// - - operator mapped_file_source&() { return delegate_; } - operator const mapped_file_source&() const { return delegate_; } - - //--------------Stream interface------------------------------------------// - - void open(mapped_file_params p); - void open( const std::string& path, - BOOST_IOS::openmode mode = - BOOST_IOS::in | BOOST_IOS::out, - size_type length = max_length, - stream_offset offset = 0 ); - bool is_open() const { return delegate_.is_open(); } - void close() { delegate_.close(); } - operator delegate_type::safe_bool() const { return delegate_; } - bool operator!() const { return !is_open(); } - BOOST_IOS::openmode mode() const { return delegate_.mode(); } - - //--------------Container interface---------------------------------------// - - size_type size() const { return delegate_.size(); } - char* data() const - { - return (mode() & BOOST_IOS::out) ? - const_cast(delegate_.data()) : - 0; - } - const char* const_data() const { return delegate_.data(); } - iterator begin() const { return data(); } - const_iterator const_begin() const { return data(); } - iterator end() const { return data() + size(); } - const_iterator const_end() const { return data() + size(); } - - //--------------Query admissible offsets----------------------------------// - - // Returns the allocation granularity for virtual memory. Values passed - // as offsets must be multiples of this value. - static int alignment() { return mapped_file_source::alignment(); } -}; - -struct BOOST_IOSTREAMS_DECL mapped_file_sink : private mapped_file { - friend struct operations; - typedef char char_type; - struct category - : public sink_tag, - public direct_tag, - public closable_tag - { }; - using mapped_file::close; - explicit mapped_file_sink(mapped_file_params p); - explicit mapped_file_sink( const std::string& path, - size_type length = max_length, - boost::intmax_t offset = 0 ); - void open(mapped_file_params p); - void open( const std::string& path, - size_type length = max_length, - boost::intmax_t offset = 0 ); -}; - -//------------------Specialization of direct_impl-----------------------------// - -template<> -struct operations - : detail::close_impl -{ - static std::pair - input_sequence(boost::iostreams::mapped_file_source& src) - { - return std::make_pair( const_cast(src.begin()), - const_cast(src.end()) ); - } -}; - -template<> -struct operations - : detail::close_impl -{ - static std::pair - output_sequence(boost::iostreams::mapped_file_sink& sink) - { - return std::make_pair(sink.begin(), sink.end()); - } -}; - -template<> -struct operations - : detail::close_impl -{ - static std::pair - input_sequence(boost::iostreams::mapped_file& file) - { - return std::make_pair(file.begin(), file.end()); - } - static std::pair - output_sequence(boost::iostreams::mapped_file& file) - { - return std::make_pair(file.begin(), file.end()); - } -}; - -} } // End namespaces iostreams, boost. - -#include // pops abi_suffix.hpp pragmas -#include // MSVC. - -#endif // #ifndef BOOST_IOSTREAMS_MAPPED_FILE_HPP_INCLUDED diff --git a/boost/boost/iostreams/device/null.hpp b/boost/boost/iostreams/device/null.hpp deleted file mode 100644 index c17704bd6c..0000000000 --- a/boost/boost/iostreams/device/null.hpp +++ /dev/null @@ -1,64 +0,0 @@ -// (C) Copyright Jonathan Turkanis 2004. -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt.) - -// See http://www.boost.org/libs/iostreams for documentation. - -// Inspired by Daryle Walker's nullbuf from his More I/O submission. - -#ifndef BOOST_IOSTREAMS_NULL_HPP_INCLUDED -#define BOOST_IOSTREAMS_NULL_HPP_INCLUDED - -#if defined(_MSC_VER) && (_MSC_VER >= 1020) -# pragma once -#endif - -#include -#include // openmode, streamsize. -#include - -namespace boost { namespace iostreams { - -template -class basic_null_device { -public: - typedef Ch char_type; - struct category - : public Mode, - public device_tag, - public closable_tag - { }; - std::streamsize read(Ch*, std::streamsize) { return 0; } - std::streamsize write(const Ch*, std::streamsize n) { return n; } - std::streampos seek( stream_offset, BOOST_IOS::seekdir, - BOOST_IOS::openmode = - BOOST_IOS::in | BOOST_IOS::out ) - { return -1; } - void close(BOOST_IOS::openmode = BOOST_IOS::in | BOOST_IOS::out) { } -}; - -template -struct basic_null_source : private basic_null_device { - typedef Ch char_type; - typedef source_tag category; - using basic_null_device::read; - using basic_null_device::close; -}; - -typedef basic_null_source null_source; -typedef basic_null_source wnull_source; - -template -struct basic_null_sink : private basic_null_device { - typedef Ch char_type; - typedef sink_tag category; - using basic_null_device::write; - using basic_null_device::close; -}; - -typedef basic_null_sink null_sink; -typedef basic_null_sink wnull_sink; - -} } // End namespaces iostreams, boost. - -#endif // #ifndef BOOST_IOSTREAMS_NULL_HPP_INCLUDED diff --git a/boost/boost/iostreams/filter/bzip2.hpp b/boost/boost/iostreams/filter/bzip2.hpp deleted file mode 100644 index 8d43fa6b24..0000000000 --- a/boost/boost/iostreams/filter/bzip2.hpp +++ /dev/null @@ -1,387 +0,0 @@ -// (C) Copyright Jonathan Turkanis 2003. -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt.) - -// See http://www.boost.org/libs/iostreams for documentation. - -// Note: custom allocators are not supported on VC6, since that compiler -// had trouble finding the function zlib_base::do_init. - -#ifndef BOOST_IOSTREAMS_BZIP2_HPP_INCLUDED -#define BOOST_IOSTREAMS_BZIP2_HPP_INCLUDED - -#if defined(_MSC_VER) && (_MSC_VER >= 1020) -# pragma once -#endif - -#include -#include // allocator. -#include // bad_alloc. -#include // MSVC, STATIC_CONSTANT, DEDUCED_TYPENAME, DINKUM. -#include -#include // buffer size. -#include -#include -#include -#include -#include // failure, streamsize. -#include -#include -#include - -// Must come last. -#ifdef BOOST_MSVC -# pragma warning(push) -# pragma warning(disable:4251 4231 4660) -#endif -#include - -// Temporary fix. -#undef small - -namespace boost { namespace iostreams { - -namespace bzip2 { - - // Typedefs. - -typedef void* (*alloc_func)(void*, int, int); -typedef void (*free_func)(void*, void*); - - // Status codes - -BOOST_IOSTREAMS_DECL extern const int ok; -BOOST_IOSTREAMS_DECL extern const int run_ok; -BOOST_IOSTREAMS_DECL extern const int flush_ok; -BOOST_IOSTREAMS_DECL extern const int finish_ok; -BOOST_IOSTREAMS_DECL extern const int stream_end; -BOOST_IOSTREAMS_DECL extern const int sequence_error; -BOOST_IOSTREAMS_DECL extern const int param_error; -BOOST_IOSTREAMS_DECL extern const int mem_error; -BOOST_IOSTREAMS_DECL extern const int data_error; -BOOST_IOSTREAMS_DECL extern const int data_error_magic; -BOOST_IOSTREAMS_DECL extern const int io_error; -BOOST_IOSTREAMS_DECL extern const int unexpected_eof; -BOOST_IOSTREAMS_DECL extern const int outbuff_full; -BOOST_IOSTREAMS_DECL extern const int config_error; - - // Action codes - -BOOST_IOSTREAMS_DECL extern const int finish; -BOOST_IOSTREAMS_DECL extern const int run; - - // Default values - -const int default_block_size = 9; -const int default_work_factor = 30; -const bool default_small = false; - -} // End namespace bzip2. - -// -// Class name: bzip2_params. -// Description: Encapsulates the parameters passed to deflateInit2 -// to customize compression. -// -struct bzip2_params { - - // Non-explicit constructor for compression. - bzip2_params( int block_size = bzip2::default_block_size, - int work_factor = bzip2::default_work_factor ) - : block_size(block_size), work_factor(work_factor) - { } - - // Constructor for decompression. - bzip2_params(bool small) - : small(small), work_factor(0) - { } - - union { - int block_size; // For compression. - bool small; // For decompression. - }; - int work_factor; -}; - -// -// Class name: bzip2_error. -// Description: Subclass of std::ios_base::failure thrown to indicate -// bzip2 errors other than out-of-memory conditions. -// -class BOOST_IOSTREAMS_DECL bzip2_error : public BOOST_IOSTREAMS_FAILURE { -public: - explicit bzip2_error(int error); - int error() const { return error_; } - static void check(int error); -private: - int error_; -}; - -namespace detail { - -template -struct bzip2_allocator_traits { -#ifndef BOOST_NO_STD_ALLOCATOR - typedef typename Alloc::template rebind::other type; -#else - typedef std::allocator type; -#endif -}; - -template< typename Alloc, - typename Base = // VC6 workaround (C2516) - BOOST_DEDUCED_TYPENAME bzip2_allocator_traits::type > -struct bzip2_allocator : private Base { -private: - typedef typename Base::size_type size_type; -public: - BOOST_STATIC_CONSTANT(bool, custom = - (!is_same, Base>::value)); - typedef typename bzip2_allocator_traits::type allocator_type; - static void* allocate(void* self, int items, int size); - static void deallocate(void* self, void* address); -}; - -class BOOST_IOSTREAMS_DECL bzip2_base { -public: - typedef char char_type; -protected: - bzip2_base(const bzip2_params& params); - ~bzip2_base(); - bzip2_params& params() { return params_; } - bool& ready() { return ready_; } - template - void init( bool compress, - bzip2_allocator& alloc ) - { - bool custom = bzip2_allocator::custom; - do_init( compress, - #if !BOOST_WORKAROUND(BOOST_MSVC, < 1300) - custom ? bzip2_allocator::allocate : 0, - custom ? bzip2_allocator::deallocate : 0, - #endif - custom ? &alloc : 0 ); - } - void before( const char*& src_begin, const char* src_end, - char*& dest_begin, char* dest_end ); - void after(const char*& src_begin, char*& dest_begin); - int compress(int action); - int decompress(); - void end(bool compress); -private: - void do_init( bool compress, - #if !BOOST_WORKAROUND(BOOST_MSVC, < 1300) - bzip2::alloc_func, - bzip2::free_func, - #endif - void* derived ); - bzip2_params params_; - void* stream_; // Actual type: bz_stream*. - bool ready_; -}; - -// -// Template name: bzip2_compressor_impl -// Description: Model of SymmetricFilter implementing compression by -// delegating to the libbzip2 function BZ_bzCompress. -// -template > -class bzip2_compressor_impl - : public bzip2_base, - #if BOOST_WORKAROUND(__BORLANDC__, < 0x600) - public - #endif - bzip2_allocator -{ -public: - bzip2_compressor_impl(const bzip2_params&); - bool filter( const char*& src_begin, const char* src_end, - char*& dest_begin, char* dest_end, bool flush ); - void close(); -private: - void init(); -}; - -// -// Template name: bzip2_compressor -// Description: Model of SymmetricFilter implementing decompression by -// delegating to the libbzip2 function BZ_bzDecompress. -// -template > -class bzip2_decompressor_impl - : public bzip2_base, - #if BOOST_WORKAROUND(__BORLANDC__, < 0x600) - public - #endif - bzip2_allocator -{ -public: - bzip2_decompressor_impl(bool small = bzip2::default_small); - bool filter( const char*& begin_in, const char* end_in, - char*& begin_out, char* end_out, bool flush ); - void close(); -private: - void init(); - bool eof_; // Guard to make sure filter() isn't called after it returns false. -}; - -} // End namespace detail. - -// -// Template name: bzip2_compressor -// Description: Model of InputFilter and OutputFilter implementing -// compression using libbzip2. -// -template > -struct basic_bzip2_compressor - : symmetric_filter, Alloc> -{ -private: - typedef detail::bzip2_compressor_impl impl_type; - typedef symmetric_filter base_type; -public: - typedef typename base_type::char_type char_type; - typedef typename base_type::category category; - basic_bzip2_compressor( const bzip2_params& = bzip2::default_block_size, - int buffer_size = default_device_buffer_size ); -}; -BOOST_IOSTREAMS_PIPABLE(basic_bzip2_compressor, 1) - -typedef basic_bzip2_compressor<> bzip2_compressor; - -// -// Template name: bzip2_decompressor -// Description: Model of InputFilter and OutputFilter implementing -// decompression using libbzip2. -// -template > -struct basic_bzip2_decompressor - : symmetric_filter, Alloc> -{ -private: - typedef detail::bzip2_decompressor_impl impl_type; - typedef symmetric_filter base_type; -public: - typedef typename base_type::char_type char_type; - typedef typename base_type::category category; - basic_bzip2_decompressor( bool small = bzip2::default_small, - int buffer_size = default_device_buffer_size ); -}; -BOOST_IOSTREAMS_PIPABLE(basic_bzip2_decompressor, 1) - -typedef basic_bzip2_decompressor<> bzip2_decompressor; - -//----------------------------------------------------------------------------// - -//------------------Implementation of bzip2_allocator-------------------------// - -namespace detail { - -template -void* bzip2_allocator::allocate(void* self, int items, int size) -{ - size_type len = items * size; - char* ptr = - static_cast(self)->allocate - (len + sizeof(size_type) - #if BOOST_WORKAROUND(BOOST_DINKUMWARE_STDLIB, == 1) - , (char*)0 - #endif - ); - *reinterpret_cast(ptr) = len; - return ptr + sizeof(size_type); -} - -template -void bzip2_allocator::deallocate(void* self, void* address) -{ - char* ptr = reinterpret_cast(address) - sizeof(size_type); - size_type len = *reinterpret_cast(ptr) + sizeof(size_type); - static_cast(self)->deallocate(ptr, len); -} - -//------------------Implementation of bzip2_compressor_impl-------------------// - -template -bzip2_compressor_impl::bzip2_compressor_impl(const bzip2_params& p) - : bzip2_base(p) { } - -template -bool bzip2_compressor_impl::filter - ( const char*& src_begin, const char* src_end, - char*& dest_begin, char* dest_end, bool flush ) -{ - if (!ready()) init(); - before(src_begin, src_end, dest_begin, dest_end); - int result = compress(flush ? bzip2::finish : bzip2::run); - after(src_begin, dest_begin); - bzip2_error::check(result); - return result != bzip2::stream_end; -} - -template -void bzip2_compressor_impl::close() -{ - end(true); -} - -template -inline void bzip2_compressor_impl::init() -{ bzip2_base::init(true, static_cast&>(*this)); } - -//------------------Implementation of bzip2_decompressor_impl-----------------// - -template -bzip2_decompressor_impl::bzip2_decompressor_impl(bool small) - : bzip2_base(bzip2_params(small)), eof_(false) { } - -template -bool bzip2_decompressor_impl::filter - ( const char*& src_begin, const char* src_end, - char*& dest_begin, char* dest_end, bool /* flush */ ) -{ - if (!ready()) - init(); - if (eof_) - return false; - before(src_begin, src_end, dest_begin, dest_end); - int result = decompress(); - after(src_begin, dest_begin); - bzip2_error::check(result); - return !(eof_ = result == bzip2::stream_end); -} - -template -void bzip2_decompressor_impl::close() { end(false); eof_ = false; } - -template -inline void bzip2_decompressor_impl::init() -{ bzip2_base::init(false, static_cast&>(*this)); } -} // End namespace detail. - -//------------------Implementation of bzip2_decompressor----------------------// - -template -basic_bzip2_compressor::basic_bzip2_compressor - (const bzip2_params& p, int buffer_size) - : base_type(buffer_size, p) - { } - -//------------------Implementation of bzip2_decompressor----------------------// - -template -basic_bzip2_decompressor::basic_bzip2_decompressor - (bool small, int buffer_size) - : base_type(buffer_size, small) - { } - -//----------------------------------------------------------------------------// - -} } // End namespaces iostreams, boost. - -#include // Pops abi_suffix.hpp pragmas. -#ifdef BOOST_MSVC -# pragma warning(pop) -#endif - -#endif // #ifndef BOOST_IOSTREAMS_BZIP2_HPP_INCLUDED diff --git a/boost/boost/iostreams/filter/gzip.hpp b/boost/boost/iostreams/filter/gzip.hpp deleted file mode 100644 index 8eee546db5..0000000000 --- a/boost/boost/iostreams/filter/gzip.hpp +++ /dev/null @@ -1,594 +0,0 @@ -// (C) Copyright Jonathan Turkanis 2003. -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt.) - -// See http://www.boost.org/libs/iostreams for documentation. - -// Contains the definitions of the class templates gzip_compressor and -// gzip_decompressor for reading and writing files in the gzip file format -// (RFC 1952). Based in part on work of Jonathan de Halleux; see [...] - -#ifndef BOOST_IOSTREAMS_GZIP_HPP_INCLUDED -#define BOOST_IOSTREAMS_GZIP_HPP_INCLUDED - -#if defined(_MSC_VER) && (_MSC_VER >= 1020) -# pragma once -#endif - -#include // STATIC_CONSTANT, STDC_NAMESPACE, - // DINKUMWARE_STDLIB, __STL_CONFIG_H. -#include // min. -#include // EOF. -#include // size_t. -#include // std::time_t. -#include // allocator. -#include // Put size_t in std. -#include -#include // uint8_t, uint32_t. -#include // buffer size. -#include -#include -#include -#include // failure. -#include -#include -#include -#include - -// Must come last. -#if defined(BOOST_MSVC) -# pragma warning(push) -# pragma warning(disable: 4309) // Truncation of constant value. -#endif - -#ifdef BOOST_NO_STDC_NAMESPACE -namespace std { using ::time_t; } -#endif - -namespace boost { namespace iostreams { - -namespace gzip { - -using namespace boost::iostreams::zlib; - - // Error codes used by gzip_error. - -const int zlib_error = 1; -const int bad_crc = 2; // Recorded crc doesn't match data. -const int bad_length = 3; // Recorded length doesn't match data. -const int bad_header = 4; // Malformed header. -const int bad_footer = 5; // Malformed footer. - -namespace magic { - - // Magic numbers used by gzip header. - -const int id1 = 0x1f; -const int id2 = 0x8b; - -} // End namespace magic. - -namespace method { - - // Codes used for the 'CM' byte of the gzip header. - -const int deflate = 8; - -} // End namespace method. - -namespace flags { - - // Codes used for the 'FLG' byte of the gzip header. - -const int text = 1; -const int header_crc = 2; -const int extra = 4; -const int name = 8; -const int comment = 16; - -} // End namespace flags. - -namespace extra_flags { - - // Codes used for the 'XFL' byte of the gzip header. - -const int best_compression = 2; -const int best_speed = 4; - -} // End namespace extra_flags. - - // Codes used for the 'OS' byte of the gzip header. - -const int os_fat = 0; -const int os_amiga = 1; -const int os_vms = 2; -const int os_unix = 3; -const int os_vm_cms = 4; -const int os_atari = 5; -const int os_hpfs = 6; -const int os_macintosh = 7; -const int os_z_system = 8; -const int os_cp_m = 9; -const int os_tops_20 = 10; -const int os_ntfs = 11; -const int os_qdos = 12; -const int os_acorn = 13; -const int os_unknown = 255; - -} // End namespace gzip. - -// -// Class name: gzip_params. -// Description: Subclass of zlib_params with an additional field -// representing a file name. -// -struct gzip_params : zlib_params { - - // Non-explicit constructor. - gzip_params( int level = gzip::default_compression, - int method = gzip::deflated, - int window_bits = gzip::default_window_bits, - int mem_level = gzip::default_mem_level, - int strategy = gzip::default_strategy, - std::string file_name = "", - std::string comment = "", - std::time_t mtime = 0 ) - : zlib_params(level, method, window_bits, mem_level, strategy), - file_name(file_name), mtime(mtime) - { } - std::string file_name; - std::string comment; - std::time_t mtime; -}; - -// -// Class name: gzip_error. -// Description: Subclass of std::ios_base::failure thrown to indicate -// zlib errors other than out-of-memory conditions. -// -class gzip_error : public BOOST_IOSTREAMS_FAILURE { -public: - explicit gzip_error(int error) - : BOOST_IOSTREAMS_FAILURE("gzip error"), - error_(error), zlib_error_code_(zlib::okay) { } - explicit gzip_error(const zlib_error& e) - : BOOST_IOSTREAMS_FAILURE("gzip error"), - error_(gzip::zlib_error), zlib_error_code_(e.error()) - { } - int error() const { return error_; } - int zlib_error_code() const { return zlib_error_code_; } -private: - int error_; - int zlib_error_code_; -}; - -// -// Template name: gzip_compressor -// Description: Model of OutputFilter implementing compression in the -// gzip format. -// -template > -class basic_gzip_compressor : basic_zlib_compressor { -private: - typedef basic_zlib_compressor base_type; -public: - typedef char char_type; - struct category - : dual_use, - filter_tag, - multichar_tag, - closable_tag - { }; - basic_gzip_compressor( const gzip_params& = gzip::default_compression, - int buffer_size = default_device_buffer_size ); - - template - std::streamsize read(Source& src, char_type* s, std::streamsize n) - { - using namespace std; - streamsize result = 0; - - // Read header. - if (!(flags_ & f_header_done)) - result += read_string(s, n, header_); - - // Read body. - if (!(flags_ & f_body_done)) { - - // Read from basic_zlib_filter. - streamsize amt = base_type::read(src, s + result, n - result); - if (amt != -1) { - result += amt; - if (amt < n - result) { // Double-check for EOF. - amt = base_type::read(src, s + result, n - result); - if (amt != -1) - result += amt; - } - } - if (amt == -1) - prepare_footer(); - } - - // Read footer. - if ((flags_ & f_body_done) != 0 && result < n) - result += read_string(s + result, n - result, footer_); - - return result != 0 ? result : -1; - } - - template - std::streamsize write(Sink& snk, const char_type* s, std::streamsize n) - { - if (!(flags_ & f_header_done)) { - std::streamsize amt = - static_cast(header_.size() - offset_); - offset_ += boost::iostreams::write(snk, header_.data() + offset_, amt); - if (offset_ == header_.size()) - flags_ |= f_header_done; - else - return 0; - } - return base_type::write(snk, s, n); - } - - template - void close(Sink& snk, BOOST_IOS::openmode m) - { - namespace io = boost::iostreams; - - if (m & BOOST_IOS::out) { - - // Close zlib compressor. - base_type::close(snk, BOOST_IOS::out); - - if (flags_ & f_header_done) { - - // Write final fields of gzip file format. - write_long(this->crc(), snk); - write_long(this->total_in(), snk); - } - - } - #if BOOST_WORKAROUND(__GNUC__, == 2) && defined(__STL_CONFIG_H) || \ - BOOST_WORKAROUND(BOOST_DINKUMWARE_STDLIB, == 1) \ - /**/ - footer_.erase(0, std::string::npos); - #else - footer_.clear(); - #endif - offset_ = 0; - flags_ = 0; - } -private: - static gzip_params normalize_params(gzip_params p); - void prepare_footer(); - std::streamsize read_string(char* s, std::streamsize n, std::string& str); - - template - static void write_long(long n, Sink& next) - { - boost::iostreams::put(next, static_cast(0xFF & n)); - boost::iostreams::put(next, static_cast(0xFF & (n >> 8))); - boost::iostreams::put(next, static_cast(0xFF & (n >> 16))); - boost::iostreams::put(next, static_cast(0xFF & (n >> 24))); - } - - enum flag_type { - f_header_done = 1, - f_body_done = f_header_done << 1, - f_footer_done = f_body_done << 1 - }; - std::string header_; - std::string footer_; - std::size_t offset_; - int flags_; -}; -BOOST_IOSTREAMS_PIPABLE(basic_gzip_compressor, 1) - -typedef basic_gzip_compressor<> gzip_compressor; - -// -// Template name: basic_gzip_decompressor -// Description: Model of InputFilter implementing compression in the -// gzip format. -// -template > -class basic_gzip_decompressor : basic_zlib_decompressor { -public: - typedef char char_type; - struct category - : multichar_input_filter_tag, - closable_tag - { }; - basic_gzip_decompressor( int window_bits = gzip::default_window_bits, - int buffer_size = default_device_buffer_size ); - - template - std::streamsize read(Source& src, char_type* s, std::streamsize n) - { - if ((flags_ & f_header_read) == 0) { - non_blocking_adapter nb(src); - read_header(nb); - flags_ |= f_header_read; - } - - if ((flags_ & f_footer_read) != 0) - return -1; - - try { - std::streamsize result = 0; - std::streamsize amt; - if ((amt = base_type::read(src, s, n)) != -1) { - result += amt; - if (amt < n) { // Double check for EOF. - amt = base_type::read(src, s + result, n - result); - if (amt != -1) - result += amt; - } - } - if (amt == -1) { - non_blocking_adapter nb(src); - read_footer(nb); - flags_ |= f_footer_read; - } - return result; - } catch (const zlib_error& e) { - throw gzip_error(e); - } - } - - template - void close(Source& src) - { - try { - base_type::close(src, BOOST_IOS::in); - flags_ = 0; - } catch (const zlib_error& e) { - throw gzip_error(e); - } - } - - std::string file_name() const { return file_name_; } - std::string comment() const { return comment_; } - bool text() const { return (flags_ & gzip::flags::text) != 0; } - int os() const { return os_; } - std::time_t mtime() const { return mtime_; } -private: - typedef basic_zlib_decompressor base_type; - typedef BOOST_IOSTREAMS_CHAR_TRAITS(char) traits_type; - static bool is_eof(int c) { return traits_type::eq_int_type(c, EOF); } - static gzip_params make_params(int window_bits); - - template - static uint8_t read_uint8(Source& src, int error) - { - int c; - if ((c = boost::iostreams::get(src)) == EOF || c == WOULD_BLOCK) - throw gzip_error(error); - return static_cast(traits_type::to_char_type(c)); - } - - template - static uint32_t read_uint32(Source& src, int error) - { - uint8_t b1 = read_uint8(src, error); - uint8_t b2 = read_uint8(src, error); - uint8_t b3 = read_uint8(src, error); - uint8_t b4 = read_uint8(src, error); - return b1 + (b2 << 8) + (b3 << 16) + (b4 << 24); - } - - template - std::string read_string(Source& src) - { - std::string result; - while (true) { - int c; - if (is_eof(c = boost::iostreams::get(src))) - throw gzip_error(gzip::bad_header); - else if (c == 0) - return result; - else - result += static_cast(c); - } - } - - template - void read_header(Source& src) // Source is non-blocking. - { - // Reset saved values. - #if BOOST_WORKAROUND(__GNUC__, == 2) && defined(__STL_CONFIG_H) || \ - BOOST_WORKAROUND(BOOST_DINKUMWARE_STDLIB, == 1) \ - /**/ - file_name_.erase(0, std::string::npos); - comment_.erase(0, std::string::npos); - #else - file_name_.clear(); - comment_.clear(); - #endif - os_ = gzip::os_unknown; - mtime_ = 0; - - int flags; - - // Read header, without checking header crc. - if ( boost::iostreams::get(src) != gzip::magic::id1 || // ID1. - boost::iostreams::get(src) != gzip::magic::id2 || // ID2. - is_eof(boost::iostreams::get(src)) || // CM. - is_eof(flags = boost::iostreams::get(src)) ) // FLG. - { - throw gzip_error(gzip::bad_header); - } - mtime_ = read_uint32(src, gzip::bad_header); // MTIME. - read_uint8(src, gzip::bad_header); // XFL. - os_ = read_uint8(src, gzip::bad_header); // OS. - if (flags & boost::iostreams::gzip::flags::text) - flags_ |= f_text; - - // Skip extra field. (From J. Halleaux; see note at top.) - if (flags & gzip::flags::extra) { - int length = - static_cast( - read_uint8(src, gzip::bad_header) + - (read_uint8(src, gzip::bad_header) << 8) - ); - // length is garbage if EOF but the loop below will quit anyway. - do { } - while (length-- != 0 && !is_eof(boost::iostreams::get(src))); - } - - if (flags & gzip::flags::name) // Read file name. - file_name_ = read_string(src); - if (flags & gzip::flags::comment) // Read comment. - comment_ = read_string(src); - if (flags & gzip::flags::header_crc) { // Skip header crc. - read_uint8(src, gzip::bad_header); - read_uint8(src, gzip::bad_header); - } - } - - template - void read_footer(Source& src) - { - typename base_type::string_type footer = - this->unconsumed_input(); - int c; - while (!is_eof(c = boost::iostreams::get(src))) - footer += c; - detail::range_adapter - rng(footer.begin(), footer.end()); - if (read_uint32(rng, gzip::bad_footer) != this->crc()) - throw gzip_error(gzip::bad_crc); - if (static_cast(read_uint32(rng, gzip::bad_footer)) != this->total_out()) - throw gzip_error(gzip::bad_length); - } - enum flag_type { - f_header_read = 1, - f_footer_read = f_header_read << 1, - f_text = f_footer_read << 1 - }; - std::string file_name_; - std::string comment_; - int os_; - std::time_t mtime_; - int flags_; -}; -BOOST_IOSTREAMS_PIPABLE(basic_gzip_decompressor, 1) - -typedef basic_gzip_decompressor<> gzip_decompressor; - -//------------------Implementation of gzip_compressor-------------------------// - -template -basic_gzip_compressor::basic_gzip_compressor - (const gzip_params& p, int buffer_size) - : base_type(normalize_params(p), buffer_size), - offset_(0), flags_(0) -{ - // Calculate gzip header. - bool has_name = !p.file_name.empty(); - bool has_comment = !p.comment.empty(); - - std::string::size_type length = - 10 + - (has_name ? p.file_name.size() + 1 : 0) + - (has_comment ? p.comment.size() + 1 : 0); - // + 2; // Header crc confuses gunzip. - int flags = - //gzip::flags::header_crc + - (has_name ? gzip::flags::name : 0) + - (has_comment ? gzip::flags::comment : 0); - int extra_flags = - ( p.level == zlib::best_compression ? - gzip::extra_flags::best_compression : - 0 ) + - ( p.level == zlib::best_speed ? - gzip::extra_flags::best_speed : - 0 ); - header_.reserve(length); - header_ += gzip::magic::id1; // ID1. - header_ += gzip::magic::id2; // ID2. - header_ += gzip::method::deflate; // CM. - header_ += static_cast(flags); // FLG. - header_ += static_cast(0xFF & p.mtime); // MTIME. - header_ += static_cast(0xFF & (p.mtime >> 8)); - header_ += static_cast(0xFF & (p.mtime >> 16)); - header_ += static_cast(0xFF & (p.mtime >> 24)); - header_ += static_cast(extra_flags); // XFL. - header_ += static_cast(gzip::os_unknown); // OS. - if (has_name) { - header_ += p.file_name; - header_ += '\0'; - } - if (has_comment) { - header_ += p.comment; - header_ += '\0'; - } -} - -template -gzip_params basic_gzip_compressor::normalize_params(gzip_params p) -{ - p.noheader = true; - p.calculate_crc = true; - return p; -} - -template -void basic_gzip_compressor::prepare_footer() -{ - boost::iostreams::back_insert_device out(footer_); - write_long(this->crc(), out); - write_long(this->total_in(), out); - flags_ |= f_body_done; - offset_ = 0; -} - -template -std::streamsize basic_gzip_compressor::read_string - (char* s, std::streamsize n, std::string& str) -{ - using namespace std; - streamsize avail = - static_cast(str.size() - offset_); - streamsize amt = (std::min)(avail, n); - std::copy( str.data() + offset_, - str.data() + offset_ + amt, - s ); - offset_ += amt; - if ( !(flags_ & f_header_done) && - offset_ == static_cast(str.size()) ) - { - flags_ |= f_header_done; - } - return amt; -} - -//------------------Implementation of gzip_decompressor-----------------------// - -template -basic_gzip_decompressor::basic_gzip_decompressor - (int window_bits, int buffer_size) - : base_type(make_params(window_bits), buffer_size), - os_(gzip::os_unknown), mtime_(0), flags_(0) - { } - -template -gzip_params basic_gzip_decompressor::make_params(int window_bits) -{ - gzip_params p; - p.window_bits = window_bits; - p.noheader = true; - p.calculate_crc = true; - return p; -} - -//----------------------------------------------------------------------------// - -} } // End namespaces iostreams, boost. - -#if defined(BOOST_MSVC) -# pragma warning(pop) -#endif - -#endif // #ifndef BOOST_IOSTREAMS_GZIP_HPP_INCLUDED diff --git a/boost/boost/iostreams/filter/symmetric.hpp b/boost/boost/iostreams/filter/symmetric.hpp deleted file mode 100644 index 8aa987c0ea..0000000000 --- a/boost/boost/iostreams/filter/symmetric.hpp +++ /dev/null @@ -1,302 +0,0 @@ -// (C) Copyright Jonathan Turkanis 2003. -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt.) - -// See http://www.boost.org/libs/iostreams for documentation. - -// Contains the definitions of the class templates symmetric_filter, -// which models DualUseFilter based on a model of the Symmetric Filter. - -// -// Roughly, a Symmetric Filter is a class type with the following interface: -// -// struct symmetric_filter { -// typedef xxx char_type; -// -// bool filter( const char*& begin_in, const char* end_in, -// char*& begin_out, char* end_out, bool flush ) -// { -// // Consume as many characters as possible from the interval -// // [begin_in, end_in), without exhausting the output range -// // [begin_out, end_out). If flush is true, write as mush output -// // as possible. -// // A return value of true indicates that filter should be called -// // again. More precisely, if flush is false, a return value of -// // false indicates that the natural end of stream has been reached -// // and that all filtered data has been forwarded; if flush is -// // true, a return value of false indicates that all filtered data -// // has been forwarded. -// } -// void close() { /* Reset filter's state. */ } -// }; -// -// Symmetric Filter filters need not be CopyConstructable. -// - -#ifndef BOOST_IOSTREAMS_SYMMETRIC_FILTER_HPP_INCLUDED -#define BOOST_IOSTREAMS_SYMMETRIC_FILTER_HPP_INCLUDED - -#if defined(_MSC_VER) && (_MSC_VER >= 1020) -# pragma once -#endif - -#include -#include // allocator, auto_ptr. -#include // BOOST_DEDUCED_TYPENAME. -#include -#include // buffer size. -#include -#include -#include -#include -#include -#include -#include // read, write. -#include -#include -#include -#include -#include -#include - -// Must come last. -#include // MSVC. - -namespace boost { namespace iostreams { - -template< typename SymmetricFilter, - typename Alloc = - std::allocator< - BOOST_DEDUCED_TYPENAME char_type_of::type - > > -class symmetric_filter { -public: - typedef typename char_type_of::type char_type; - typedef std::basic_string string_type; - struct category - : dual_use, - filter_tag, - multichar_tag, - closable_tag - { }; - - // Expands to a sequence of ctors which forward to impl. - #define BOOST_PP_LOCAL_MACRO(n) \ - BOOST_IOSTREAMS_TEMPLATE_PARAMS(n, T) \ - explicit symmetric_filter( \ - int buffer_size BOOST_PP_COMMA_IF(n) \ - BOOST_PP_ENUM_BINARY_PARAMS(n, const T, &t) ) \ - : pimpl_(new impl(buffer_size BOOST_PP_COMMA_IF(n) \ - BOOST_PP_ENUM_PARAMS(n, t))) \ - { } \ - /**/ - #define BOOST_PP_LOCAL_LIMITS (0, BOOST_IOSTREAMS_MAX_FORWARDING_ARITY) - #include BOOST_PP_LOCAL_ITERATE() - #undef BOOST_PP_LOCAL_MACRO - - template - std::streamsize read(Source& src, char_type* s, std::streamsize n) - { - using namespace std; - if (!(state() & f_read)) - begin_read(); - - buffer_type& buf = pimpl_->buf_; - int status = (state() & f_eof) != 0 ? f_eof : f_good; - char_type *next_s = s, - *end_s = s + n; - while (true) - { - // Invoke filter if there are unconsumed characters in buffer or if - // filter must be flushed. - bool flush = status == f_eof; - if (buf.ptr() != buf.eptr() || flush) { - const char_type* next = buf.ptr(); - bool done = - !filter().filter(next, buf.eptr(), next_s, end_s, flush); - buf.ptr() = buf.data() + (next - buf.data()); - if (done) - return detail::check_eof(static_cast(next_s - s)); - } - - // If no more characters are available without blocking, or - // if read request has been satisfied, return. - if ( status == f_would_block && buf.ptr() == buf.eptr() || - next_s == end_s ) - { - return static_cast(next_s - s); - } - - // Fill buffer. - if (status == f_good) - status = fill(src); - } - } - - template - std::streamsize write(Sink& snk, const char_type* s, std::streamsize n) - { - if (!(state() & f_write)) - begin_write(); - - buffer_type& buf = pimpl_->buf_; - const char_type *next_s, *end_s; - for (next_s = s, end_s = s + n; next_s != end_s; ) { - if (buf.ptr() == buf.eptr() && !flush(snk)) - break; - filter().filter(next_s, end_s, buf.ptr(), buf.eptr(), false); - } - return static_cast(next_s - s); - } - - // Give detail::closer<> permission to call close(). - typedef symmetric_filter self; - friend struct detail::closer; - - template - void close(Sink& snk, BOOST_IOS::openmode which) - { - using namespace std; - if ((state() & f_read) && (which & BOOST_IOS::in)) - close(); - if ((state() & f_write) && (which & BOOST_IOS::out)) { - - // Repeatedly invoke filter() with no input. - detail::closer closer(*this); - buffer_type& buf = pimpl_->buf_; - char dummy; - const char* end = &dummy; - bool again = true; - while (again) { - if (buf.ptr() != buf.eptr()) - again = filter().filter(end, end, buf.ptr(), buf.eptr(), true); - flush(snk); - } - } - } - SymmetricFilter& filter() { return *pimpl_; } - string_type unconsumed_input() const; - -// Give impl access to buffer_type on Tru64 -#if !BOOST_WORKAROUND(__DECCXX_VER, BOOST_TESTED_AT(60590042)) - private: -#endif - typedef detail::buffer buffer_type; -private: - buffer_type& buf() { return pimpl_->buf_; } - const buffer_type& buf() const { return pimpl_->buf_; } - int& state() { return pimpl_->state_; } - void begin_read(); - void begin_write(); - - template - int fill(Source& src) - { - std::streamsize amt = iostreams::read(src, buf().data(), buf().size()); - if (amt == -1) { - state() |= f_eof; - return f_eof; - } - buf().set(0, amt); - return amt == buf().size() ? f_good : f_would_block; - } - - // Attempts to write the contents of the buffer the given Sink. - // Returns true if at least on character was written. - template - bool flush(Sink& snk) - { - typedef typename iostreams::category_of::type category; - typedef is_convertible can_write; - return flush(snk, can_write()); - } - - template - bool flush(Sink& snk, mpl::true_) - { - using std::streamsize; - typedef char_traits traits_type; - streamsize amt = - static_cast(buf().ptr() - buf().data()); - streamsize result = - boost::iostreams::write(snk, buf().data(), amt); - if (result < amt && result > 0) - traits_type::move(buf().data(), buf().data() + result, amt - result); - buf().set(amt - result, buf().size()); - return result != 0; - } - - template - bool flush(Sink& snk, mpl::false_) { return true;} - - void close(); - - enum flag_type { - f_read = 1, - f_write = f_read << 1, - f_eof = f_write << 1, - f_good, - f_would_block - }; - - struct impl : SymmetricFilter { - - // Expands to a sequence of ctors which forward to SymmetricFilter. - #define BOOST_PP_LOCAL_MACRO(n) \ - BOOST_IOSTREAMS_TEMPLATE_PARAMS(n, T) \ - impl( int buffer_size BOOST_PP_COMMA_IF(n) \ - BOOST_PP_ENUM_BINARY_PARAMS(n, const T, &t) ) \ - : SymmetricFilter(BOOST_PP_ENUM_PARAMS(n, t)), \ - buf_(buffer_size), state_(0) \ - { } \ - /**/ - #define BOOST_PP_LOCAL_LIMITS (0, BOOST_IOSTREAMS_MAX_FORWARDING_ARITY) - #include BOOST_PP_LOCAL_ITERATE() - #undef BOOST_PP_LOCAL_MACRO - - buffer_type buf_; - int state_; - }; - - shared_ptr pimpl_; -}; -BOOST_IOSTREAMS_PIPABLE(symmetric_filter, 2) - -//------------------Implementation of symmetric_filter----------------// - -template -void symmetric_filter::begin_read() -{ - assert(!(state() & f_write)); - state() |= f_read; - buf().set(0, 0); -} - -template -void symmetric_filter::begin_write() -{ - assert(!(state() & f_read)); - state() |= f_write; - buf().set(0, buf().size()); -} - -template -void symmetric_filter::close() -{ - state() = 0; - buf().set(0, 0); - filter().close(); -} - -template -typename symmetric_filter::string_type -symmetric_filter::unconsumed_input() const -{ return string_type(buf().ptr(), buf().eptr()); } - -//----------------------------------------------------------------------------// - -} } // End namespaces iostreams, boost. - -#include // MSVC. - -#endif // #ifndef BOOST_IOSTREAMS_SYMMETRIC_FILTER_HPP_INCLUDED diff --git a/boost/boost/iostreams/filter/zlib.hpp b/boost/boost/iostreams/filter/zlib.hpp deleted file mode 100644 index cc6ccea397..0000000000 --- a/boost/boost/iostreams/filter/zlib.hpp +++ /dev/null @@ -1,415 +0,0 @@ -// (C) Copyright Jonathan Turkanis 2003. -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt.) - -// See http://www.boost.org/libs/iostreams for documentation. - -// Note: custom allocators are not supported on VC6, since that compiler -// had trouble finding the function zlib_base::do_init. - -#ifndef BOOST_IOSTREAMS_ZLIB_HPP_INCLUDED -#define BOOST_IOSTREAMS_ZLIB_HPP_INCLUDED - -#if defined(_MSC_VER) && (_MSC_VER >= 1020) -# pragma once -#endif - -#include -#include // streamsize. -#include // allocator, bad_alloc. -#include -#include // MSVC, STATIC_CONSTANT, DEDUCED_TYPENAME, DINKUM. -#include -#include // buffer size. -#include -#include -#include -#include -#include // failure, streamsize. -#include -#include -#include - -// Must come last. -#ifdef BOOST_MSVC -# pragma warning(push) -# pragma warning(disable:4251 4231 4660) // Dependencies not exported. -#endif -#include - -namespace boost { namespace iostreams { - -namespace zlib { - // Typedefs - -typedef unsigned int uint; -typedef unsigned char byte; -typedef unsigned long ulong; - -typedef void* (*alloc_func)(void*, zlib::uint, zlib::uint); -typedef void (*free_func)(void*, void*); - - // Compression levels - -BOOST_IOSTREAMS_DECL extern const int no_compression; -BOOST_IOSTREAMS_DECL extern const int best_speed; -BOOST_IOSTREAMS_DECL extern const int best_compression; -BOOST_IOSTREAMS_DECL extern const int default_compression; - - // Compression methods - -BOOST_IOSTREAMS_DECL extern const int deflated; - - // Compression strategies - -BOOST_IOSTREAMS_DECL extern const int default_strategy; -BOOST_IOSTREAMS_DECL extern const int filtered; -BOOST_IOSTREAMS_DECL extern const int huffman_only; - - // Status codes - -BOOST_IOSTREAMS_DECL extern const int okay; -BOOST_IOSTREAMS_DECL extern const int stream_end; -BOOST_IOSTREAMS_DECL extern const int stream_error; -BOOST_IOSTREAMS_DECL extern const int version_error; -BOOST_IOSTREAMS_DECL extern const int data_error; -BOOST_IOSTREAMS_DECL extern const int mem_error; -BOOST_IOSTREAMS_DECL extern const int buf_error; - - // Flush codes - -BOOST_IOSTREAMS_DECL extern const int finish; -BOOST_IOSTREAMS_DECL extern const int no_flush; -BOOST_IOSTREAMS_DECL extern const int sync_flush; - - // Code for current OS - -//BOOST_IOSTREAMS_DECL extern const int os_code; - - // Null pointer constant. - -const int null = 0; - - // Default values - -const int default_window_bits = 15; -const int default_mem_level = 8; -const bool default_crc = false; -const bool default_noheader = false; - -} // End namespace zlib. - -// -// Class name: zlib_params. -// Description: Encapsulates the parameters passed to deflateInit2 -// and inflateInit2 to customize compression and decompression. -// -struct zlib_params { - - // Non-explicit constructor. - zlib_params( int level = zlib::default_compression, - int method = zlib::deflated, - int window_bits = zlib::default_window_bits, - int mem_level = zlib::default_mem_level, - int strategy = zlib::default_strategy, - bool noheader = zlib::default_noheader, - bool calculate_crc = zlib::default_crc ) - : level(level), method(method), window_bits(window_bits), - mem_level(mem_level), strategy(strategy), - noheader(noheader), calculate_crc(calculate_crc) - { } - int level; - int method; - int window_bits; - int mem_level; - int strategy; - bool noheader; - bool calculate_crc; -}; - -// -// Class name: zlib_error. -// Description: Subclass of std::ios::failure thrown to indicate -// zlib errors other than out-of-memory conditions. -// -class BOOST_IOSTREAMS_DECL zlib_error : public BOOST_IOSTREAMS_FAILURE { -public: - explicit zlib_error(int error); - int error() const { return error_; } - static void check(int error); -private: - int error_; -}; - -namespace detail { - -template -struct zlib_allocator_traits { -#ifndef BOOST_NO_STD_ALLOCATOR - typedef typename Alloc::template rebind::other type; -#else - typedef std::allocator type; -#endif -}; - -template< typename Alloc, - typename Base = // VC6 workaround (C2516) - BOOST_DEDUCED_TYPENAME zlib_allocator_traits::type > -struct zlib_allocator : private Base { -private: - typedef typename Base::size_type size_type; -public: - BOOST_STATIC_CONSTANT(bool, custom = - (!is_same, Base>::value)); - typedef typename zlib_allocator_traits::type allocator_type; - static void* allocate(void* self, zlib::uint items, zlib::uint size); - static void deallocate(void* self, void* address); -}; - -class BOOST_IOSTREAMS_DECL zlib_base { -public: - typedef char char_type; -protected: - zlib_base(); - ~zlib_base(); - void* stream() { return stream_; } - template - void init( const zlib_params& p, - bool compress, - zlib_allocator& zalloc ) - { - bool custom = zlib_allocator::custom; - do_init( p, compress, - #if !BOOST_WORKAROUND(BOOST_MSVC, < 1300) - custom ? zlib_allocator::allocate : 0, - custom ? zlib_allocator::deallocate : 0, - #endif - &zalloc ); - } - void before( const char*& src_begin, const char* src_end, - char*& dest_begin, char* dest_end ); - void after( const char*& src_begin, char*& dest_begin, - bool compress ); - int deflate(int flush); - int inflate(int flush); - void reset(bool compress, bool realloc); -public: - zlib::ulong crc() const { return crc_; } - int total_in() const { return total_in_; } - int total_out() const { return total_out_; } -private: - void do_init( const zlib_params& p, bool compress, - #if !BOOST_WORKAROUND(BOOST_MSVC, < 1300) - zlib::alloc_func, - zlib::free_func, - #endif - void* derived ); - void* stream_; // Actual type: z_stream*. - bool calculate_crc_; - zlib::ulong crc_; - int total_in_; - int total_out_; -}; - -// -// Template name: zlib_compressor_impl -// Description: Model of C-Style Filte implementing compression by -// delegating to the zlib function deflate. -// -template > -class zlib_compressor_impl : public zlib_base, public zlib_allocator { -public: - zlib_compressor_impl(const zlib_params& = zlib::default_compression); - ~zlib_compressor_impl(); - bool filter( const char*& src_begin, const char* src_end, - char*& dest_begin, char* dest_end, bool flush ); - void close(); -}; - -// -// Template name: zlib_compressor -// Description: Model of C-Style Filte implementing decompression by -// delegating to the zlib function inflate. -// -template > -class zlib_decompressor_impl : public zlib_base, public zlib_allocator { -public: - zlib_decompressor_impl(const zlib_params&); - zlib_decompressor_impl(int window_bits = zlib::default_window_bits); - ~zlib_decompressor_impl(); - bool filter( const char*& begin_in, const char* end_in, - char*& begin_out, char* end_out, bool flush ); - void close(); -}; - -} // End namespace detail. - -// -// Template name: zlib_compressor -// Description: Model of InputFilter and OutputFilter implementing -// compression using zlib. -// -template > -struct basic_zlib_compressor - : symmetric_filter, Alloc> -{ -private: - typedef detail::zlib_compressor_impl impl_type; - typedef symmetric_filter base_type; -public: - typedef typename base_type::char_type char_type; - typedef typename base_type::category category; - basic_zlib_compressor( const zlib_params& = zlib::default_compression, - int buffer_size = default_device_buffer_size ); - zlib::ulong crc() { return this->filter().crc(); } - int total_in() { return this->filter().total_in(); } -}; -BOOST_IOSTREAMS_PIPABLE(basic_zlib_compressor, 1) - -typedef basic_zlib_compressor<> zlib_compressor; - -// -// Template name: zlib_decompressor -// Description: Model of InputFilter and OutputFilter implementing -// decompression using zlib. -// -template > -struct basic_zlib_decompressor - : symmetric_filter, Alloc> -{ -private: - typedef detail::zlib_decompressor_impl impl_type; - typedef symmetric_filter base_type; -public: - typedef typename base_type::char_type char_type; - typedef typename base_type::category category; - basic_zlib_decompressor( int window_bits = zlib::default_window_bits, - int buffer_size = default_device_buffer_size ); - basic_zlib_decompressor( const zlib_params& p, - int buffer_size = default_device_buffer_size ); - zlib::ulong crc() { return this->filter().crc(); } - int total_out() { return this->filter().total_out(); } -}; -BOOST_IOSTREAMS_PIPABLE(basic_zlib_decompressor, 1) - -typedef basic_zlib_decompressor<> zlib_decompressor; - -//----------------------------------------------------------------------------// - -//------------------Implementation of zlib_allocator--------------------------// - -namespace detail { - -template -void* zlib_allocator::allocate - (void* self, zlib::uint items, zlib::uint size) -{ - size_type len = items * size; - char* ptr = - static_cast(self)->allocate - (len + sizeof(size_type) - #if BOOST_WORKAROUND(BOOST_DINKUMWARE_STDLIB, == 1) - , (char*)0 - #endif - ); - *reinterpret_cast(ptr) = len; - return ptr + sizeof(size_type); -} - -template -void zlib_allocator::deallocate(void* self, void* address) -{ - char* ptr = reinterpret_cast(address) - sizeof(size_type); - size_type len = *reinterpret_cast(ptr) + sizeof(size_type); - static_cast(self)->deallocate(ptr, len); -} - -//------------------Implementation of zlib_compressor_impl--------------------// - -template -zlib_compressor_impl::zlib_compressor_impl(const zlib_params& p) -{ init(p, true, static_cast&>(*this)); } - -template -zlib_compressor_impl::~zlib_compressor_impl() -{ reset(true, false); } - -template -bool zlib_compressor_impl::filter - ( const char*& src_begin, const char* src_end, - char*& dest_begin, char* dest_end, bool flush ) -{ - before(src_begin, src_end, dest_begin, dest_end); - int result = deflate(flush ? zlib::finish : zlib::no_flush); - after(src_begin, dest_begin, true); - zlib_error::check(result); - return result != zlib::stream_end; -} - -template -void zlib_compressor_impl::close() { reset(true, true); } - -//------------------Implementation of zlib_decompressor_impl------------------// - -template -zlib_decompressor_impl::zlib_decompressor_impl(const zlib_params& p) -{ init(p, false, static_cast&>(*this)); } - -template -zlib_decompressor_impl::~zlib_decompressor_impl() -{ reset(false, false); } - -template -zlib_decompressor_impl::zlib_decompressor_impl(int window_bits) -{ - zlib_params p; - p.window_bits = window_bits; - init(p, false, static_cast&>(*this)); -} - -template -bool zlib_decompressor_impl::filter - ( const char*& src_begin, const char* src_end, - char*& dest_begin, char* dest_end, bool /* flush */ ) -{ - before(src_begin, src_end, dest_begin, dest_end); - int result = inflate(zlib::sync_flush); - after(src_begin, dest_begin, false); - zlib_error::check(result); - return result != zlib::stream_end; -} - -template -void zlib_decompressor_impl::close() { reset(false, true); } - -} // End namespace detail. - -//------------------Implementation of zlib_decompressor-----------------------// - -template -basic_zlib_compressor::basic_zlib_compressor - (const zlib_params& p, int buffer_size) - : base_type(buffer_size, p) { } - -//------------------Implementation of zlib_decompressor-----------------------// - -template -basic_zlib_decompressor::basic_zlib_decompressor - (int window_bits, int buffer_size) - : base_type(buffer_size, window_bits) { } - -template -basic_zlib_decompressor::basic_zlib_decompressor - (const zlib_params& p, int buffer_size) - : base_type(buffer_size, p) { } - -//----------------------------------------------------------------------------// - -} } // End namespaces iostreams, boost. - -#include // Pops abi_suffix.hpp pragmas. -#ifdef BOOST_MSVC -# pragma warning(pop) -#endif - -#endif // #ifndef BOOST_IOSTREAMS_ZLIB_HPP_INCLUDED diff --git a/boost/boost/iostreams/filtering_stream.hpp b/boost/boost/iostreams/filtering_stream.hpp deleted file mode 100644 index b43a34f3c4..0000000000 --- a/boost/boost/iostreams/filtering_stream.hpp +++ /dev/null @@ -1,148 +0,0 @@ -// (C) Copyright Jonathan Turkanis 2004 -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt.) - -// See http://www.boost.org/libs/iostreams for documentation. - -#ifndef BOOST_IOSTREAMS_FILTER_STREAM_HPP_INCLUDED -#define BOOST_IOSTREAMS_FILTER_STREAM_HPP_INCLUDED - -#if defined(_MSC_VER) && (_MSC_VER >= 1020) -# pragma once -#endif - -#include // allocator. -#include -#include -#include // standard streams. -#include -#include -#include // pubsync. -#include -#include -#include -#include -#include - -// Must come last. -#include // MSVC. - -namespace boost { namespace iostreams { - -//--------------Definition of filtered_istream--------------------------------// - -namespace detail { - -template -struct filtering_stream_traits { - typedef typename - iostreams::select< // Disambiguation for Tru64 - mpl::and_< - is_convertible, - is_convertible - >, - BOOST_IOSTREAMS_BASIC_IOSTREAM(Ch, Tr), - is_convertible, - BOOST_IOSTREAMS_BASIC_ISTREAM(Ch, Tr), - else_, - BOOST_IOSTREAMS_BASIC_OSTREAM(Ch, Tr) - >::type type; -}; - -template -class filtering_stream_base - : public access_control< - boost::iostreams::detail::chain_client, - Access - >, - public filtering_stream_traits< - typename Chain::mode, - typename Chain::char_type, - typename Chain::traits_type - >::type -{ -public: - typedef Chain chain_type; - typedef access_control< - boost::iostreams::detail::chain_client, - Access - > client_type; -protected: - typedef typename - filtering_stream_traits< - typename Chain::mode, - typename Chain::char_type, - typename Chain::traits_type - >::type stream_type; - filtering_stream_base() : stream_type(0) { this->set_chain(&chain_); } -private: - void notify() { this->rdbuf(chain_.empty() ? 0 : &chain_.front()); } - Chain chain_; -}; - -} // End namespace detail. - -// -// Macro: BOOST_IOSTREAMS_DEFINE_FILTER_STREAM(name_, chain_type_, default_char_) -// Description: Defines a template derived from std::basic_streambuf which uses -// a chain to perform i/o. The template has the following parameters: -// Mode - the i/o mode. -// Ch - The character type. -// Tr - The character traits type. -// Alloc - The allocator type. -// Access - Indicates accessibility of the chain interface; must be either -// public_ or protected_; defaults to public_. -// Macro parameters: -// name_ - The name of the template to be defined. -// chain_type_ - The name of the chain template. -// default_char_ - The default value for the char template parameter. -// -#define BOOST_IOSTREAMS_DEFINE_FILTER_STREAM(name_, chain_type_, default_char_) \ - template< typename Mode, \ - typename Ch = default_char_, \ - typename Tr = BOOST_IOSTREAMS_CHAR_TRAITS(Ch), \ - typename Alloc = std::allocator, \ - typename Access = public_ > \ - class name_ \ - : public boost::iostreams::detail::filtering_stream_base< \ - chain_type_, Access \ - > \ - { \ - public: \ - typedef Ch char_type; \ - BOOST_IOSTREAMS_STREAMBUF_TYPEDEFS(Tr) \ - typedef Mode mode; \ - typedef chain_type_ chain_type; \ - name_() { } \ - BOOST_IOSTREAMS_DEFINE_PUSH_CONSTRUCTOR(name_, mode, Ch, push_impl) \ - ~name_() { \ - if (this->is_complete()) \ - this->rdbuf()->BOOST_IOSTREAMS_PUBSYNC(); \ - } \ - private: \ - typedef access_control< \ - boost::iostreams::detail::chain_client< \ - chain_type_ \ - >, \ - Access \ - > client_type; \ - template \ - void push_impl(const T& t BOOST_IOSTREAMS_PUSH_PARAMS()) \ - { client_type::push(t BOOST_IOSTREAMS_PUSH_ARGS()); } \ - }; \ - /**/ -BOOST_IOSTREAMS_DEFINE_FILTER_STREAM(filtering_stream, boost::iostreams::chain, char) -BOOST_IOSTREAMS_DEFINE_FILTER_STREAM(wfiltering_stream, boost::iostreams::chain, wchar_t) - -typedef filtering_stream filtering_istream; -typedef filtering_stream filtering_ostream; -typedef wfiltering_stream filtering_wistream; -typedef wfiltering_stream filtering_wostream; - -//----------------------------------------------------------------------------// - -} } // End namespace iostreams, boost - -#include // MSVC - -#endif // #ifndef BOOST_IOSTREAMS_FILTER_STREAM_HPP_INCLUDED diff --git a/boost/boost/iostreams/filtering_streambuf.hpp b/boost/boost/iostreams/filtering_streambuf.hpp deleted file mode 100644 index 84338df1e0..0000000000 --- a/boost/boost/iostreams/filtering_streambuf.hpp +++ /dev/null @@ -1,64 +0,0 @@ -// (C) Copyright Jonathan Turkanis 2003. -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt.) - -// See http://www.boost.org/libs/iostreams for documentation. - -#ifndef BOOST_IOSTREAMS_FILTERING_STREAMBUF_HPP_INCLUDED -#define BOOST_IOSTREAMS_FILTERING_STREAMBUF_HPP_INCLUDED - -#if defined(_MSC_VER) && (_MSC_VER >= 1020) -# pragma once -#endif - -#include -#include // allocator. -#include -#include -#include -#include -#include // pubsync. -#include -#include - -namespace boost { namespace iostreams { - -// -// Macro: BOOST_IOSTREAMS_DEFINE_FILTERBUF(name_, chain_type_, default_char_) -// Description: Defines a template derived from std::basic_streambuf which uses -// a chain to perform i/o. The template has the following parameters: -// Ch - The character type. -// Tr - The character traits type. -// Alloc - The allocator type. -// Access - Indicates accessibility of the chain interface; must be either -// public_ or protected_; defaults to public_. -// -#define BOOST_IOSTREAMS_DEFINE_FILTER_STREAMBUF(name_, chain_type_, default_char_) \ - template< typename Mode, typename Ch = default_char_, \ - typename Tr = BOOST_IOSTREAMS_CHAR_TRAITS(Ch), \ - typename Alloc = std::allocator, typename Access = public_ > \ - class name_ : public boost::iostreams::detail::chainbuf< \ - chain_type_, Mode, Access \ - > \ - { \ - public: \ - typedef Ch char_type; \ - BOOST_IOSTREAMS_STREAMBUF_TYPEDEFS(Tr) \ - typedef Mode mode; \ - typedef chain_type_ chain_type; \ - name_() { } \ - BOOST_IOSTREAMS_DEFINE_PUSH_CONSTRUCTOR(name_, mode, Ch, push_impl) \ - ~name_() { if (this->is_complete()) this->BOOST_IOSTREAMS_PUBSYNC(); } \ - }; \ - /**/ -BOOST_IOSTREAMS_DEFINE_FILTER_STREAMBUF(filtering_streambuf, boost::iostreams::chain, char) -BOOST_IOSTREAMS_DEFINE_FILTER_STREAMBUF(filtering_wstreambuf, boost::iostreams::chain, wchar_t) - -typedef filtering_streambuf filtering_istreambuf; -typedef filtering_streambuf filtering_ostreambuf; -typedef filtering_wstreambuf filtering_wistreambuf; -typedef filtering_wstreambuf filtering_wostreambuf; - -} } // End namespaces iostreams, boost. - -#endif // #ifndef BOOST_IOSTREAMS_FILTERING_STREAMBUF_HPP_INCLUDED diff --git a/boost/boost/iostreams/flush.hpp b/boost/boost/iostreams/flush.hpp deleted file mode 100644 index 17eb794524..0000000000 --- a/boost/boost/iostreams/flush.hpp +++ /dev/null @@ -1,124 +0,0 @@ -// (C) Copyright Jonathan Turkanis 2003. -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt.) - -// See http://www.boost.org/libs/iostreams for documentation. - -#ifndef BOOST_IOSTREAMS_FLUSH_HPP_INCLUDED -#define BOOST_IOSTREAMS_FLUSH_HPP_INCLUDED - -#if defined(_MSC_VER) && (_MSC_VER >= 1020) -# pragma once -#endif - -#include // DEDUCED_TYPENAME, MSVC. -#include -#include -#include -#include -#include -#include -#include - -// Must come last. -#include - -namespace boost { namespace iostreams { - -namespace detail { - -template -struct flush_device_impl; - -template -struct flush_filter_impl; - -} // End namespace detail. - -template -bool flush(T& t) -{ return detail::flush_device_impl::flush(detail::unwrap(t)); } - -template -bool flush(T& t, Sink& snk) -{ return detail::flush_filter_impl::flush(detail::unwrap(t), snk); } - -namespace detail { - -//------------------Definition of flush_device_impl---------------------------// - -template -struct flush_device_impl - : mpl::if_< - is_custom, - operations, - flush_device_impl< - BOOST_DEDUCED_TYPENAME - dispatch< - T, ostream_tag, streambuf_tag, flushable_tag, any_tag - >::type - > - >::type - { }; - -template<> -struct flush_device_impl { - template - static bool flush(T& t) - { return t.rdbuf()->BOOST_IOSTREAMS_PUBSYNC() == 0; } -}; - -template<> -struct flush_device_impl { - template - static bool flush(T& t) - { return t.BOOST_IOSTREAMS_PUBSYNC() == 0; } -}; - -template<> -struct flush_device_impl { - template - static bool flush(T& t) { return t.flush(); } -}; - -template<> -struct flush_device_impl { - template - static bool flush(T&) { return true; } -}; - -//------------------Definition of flush_filter_impl---------------------------// - -template -struct flush_filter_impl - : mpl::if_< - is_custom, - operations, - flush_filter_impl< - BOOST_DEDUCED_TYPENAME - dispatch< - T, flushable_tag, any_tag - >::type - > - >::type - { }; - -template<> -struct flush_filter_impl { - template - static bool flush(T& t, Sink& snk) { return t.flush(snk); } -}; - -template<> -struct flush_filter_impl { - template - static bool flush(T&, Sink&) { return false; } -}; - -} // End namespace detail. - -} } // End namespaces iostreams, boost. - -#include - -#endif // #ifndef BOOST_IOSTREAMS_FLUSH_HPP_INCLUDED diff --git a/boost/boost/iostreams/get.hpp b/boost/boost/iostreams/get.hpp deleted file mode 100644 index 79086cfb71..0000000000 --- a/boost/boost/iostreams/get.hpp +++ /dev/null @@ -1,16 +0,0 @@ -// (C) Copyright Jonathan Turkanis 2005. -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt.) - -// See http://www.boost.org/libs/iostreams for documentation. - -#ifndef BOOST_IOSTREAMS_GET_HPP_INCLUDED -#define BOOST_IOSTREAMS_GET_HPP_INCLUDED - -#if defined(_MSC_VER) && (_MSC_VER >= 1020) -# pragma once -#endif - -#include - -#endif // #ifndef BOOST_IOSTREAMS_GET_HPP_INCLUDED diff --git a/boost/boost/iostreams/imbue.hpp b/boost/boost/iostreams/imbue.hpp deleted file mode 100644 index b9d06be17a..0000000000 --- a/boost/boost/iostreams/imbue.hpp +++ /dev/null @@ -1,81 +0,0 @@ -// (C) Copyright Jonathan Turkanis 2003. -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt.) - -// See http://www.boost.org/libs/iostreams for documentation. - -#ifndef BOOST_IOSTREAMS_IMBUE_HPP_INCLUDED -#define BOOST_IOSTREAMS_IMBUE_HPP_INCLUDED - -#if defined(_MSC_VER) && (_MSC_VER >= 1020) -# pragma once -#endif - -#include // DEDUCED_TYPENAME, MSVC. -#include -#include -#include -#include -#include -#include - -// Must come last. -#include - -namespace boost { namespace iostreams { - -namespace detail { - -// Implementation templates for simulated tag dispatch. -template -struct imbue_impl; - -} // End namespace detail. - -template -void imbue(T& t, const Locale& loc) -{ detail::imbue_impl::imbue(detail::unwrap(t), loc); } - -namespace detail { - -//------------------Definition of imbue_impl----------------------------------// - -template -struct imbue_impl - : mpl::if_< - is_custom, - operations, - imbue_impl< - BOOST_DEDUCED_TYPENAME - dispatch< - T, streambuf_tag, localizable_tag, any_tag - >::type - > - >::type - { }; - -template<> -struct imbue_impl { - template - static void imbue(T&, const Locale&) { } -}; - -template<> -struct imbue_impl { - template - static void imbue(T& t, const Locale& loc) { t.pubimbue(loc); } -}; - -template<> -struct imbue_impl { - template - static void imbue(T& t, const Locale& loc) { t.imbue(loc); } -}; - -} // End namespace detail. - -} } // End namespaces iostreams, boost. - -#include - -#endif // #ifndef BOOST_IOSTREAMS_IMBUE_HPP_INCLUDED diff --git a/boost/boost/iostreams/input_sequence.hpp b/boost/boost/iostreams/input_sequence.hpp deleted file mode 100644 index aa05899060..0000000000 --- a/boost/boost/iostreams/input_sequence.hpp +++ /dev/null @@ -1,70 +0,0 @@ -// (C) Copyright Jonathan Turkanis 2003. -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt.) - -// See http://www.boost.org/libs/iostreams for documentation. - -#ifndef BOOST_IOSTREAMS_INPUT_SEQUENCE_HPP_INCLUDED -#define BOOST_IOSTREAMS_INPUT_SEQUENCE_HPP_INCLUDED - -#if defined(_MSC_VER) && (_MSC_VER >= 1020) -# pragma once -#endif - -#include // pair. -#include // DEDUCED_TYPENAME, MSVC. -#include -#include -#include -#include - -// Must come last. -#include - -namespace boost { namespace iostreams { - -namespace detail { - -template -struct input_sequence_impl; - -} // End namespace detail. - -template -inline std::pair< - BOOST_DEDUCED_TYPENAME char_type_of::type*, - BOOST_DEDUCED_TYPENAME char_type_of::type* -> -input_sequence(T& t) -{ return detail::input_sequence_impl::input_sequence(t); } - -namespace detail { - -//------------------Definition of direct_impl-------------------------------// - -template -struct input_sequence_impl - : mpl::if_< - detail::is_custom, - operations, - input_sequence_impl - >::type - { }; - -template<> -struct input_sequence_impl { - template - static std::pair< - BOOST_DEDUCED_TYPENAME char_type_of::type*, - BOOST_DEDUCED_TYPENAME char_type_of::type* - > - input_sequence(U& u) { return u.input_sequence(); } -}; - -} // End namespace detail. - -} } // End namespaces iostreams, boost. - -#include - -#endif // #ifndef BOOST_IOSTREAMS_INPUT_SEQUENCE_HPP_INCLUDED diff --git a/boost/boost/iostreams/operations.hpp b/boost/boost/iostreams/operations.hpp deleted file mode 100644 index 0c96bc8c33..0000000000 --- a/boost/boost/iostreams/operations.hpp +++ /dev/null @@ -1,25 +0,0 @@ -// (C) Copyright Jonathan Turkanis 2005. -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt.) - -// See http://www.boost.org/libs/iostreams for documentation. - -#ifndef BOOST_IOSTREAMS_OPERATIONS_HPP_INCLUDED -#define BOOST_IOSTREAMS_OPERATIONS_HPP_INCLUDED - -#if defined(_MSC_VER) && (_MSC_VER >= 1020) -# pragma once -#endif - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#endif // #ifndef BOOST_IOSTREAMS_OPERATIONS_HPP_INCLUDED diff --git a/boost/boost/iostreams/operations_fwd.hpp b/boost/boost/iostreams/operations_fwd.hpp deleted file mode 100644 index 4e9d305fda..0000000000 --- a/boost/boost/iostreams/operations_fwd.hpp +++ /dev/null @@ -1,40 +0,0 @@ -// (C) Copyright Jonathan Turkanis 2003. -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt.) - -// See http://www.boost.org/libs/iostreams for documentation. - -#ifndef BOOST_IOSTREAMS_OPERATIONS_FWD_HPP_INCLUDED -#define BOOST_IOSTREAMS_OPERATIONS_FWD_HPP_INCLUDED - -#if defined(_MSC_VER) && (_MSC_VER >= 1020) -# pragma once -#endif - -#include -#include - -namespace boost { namespace iostreams { - -template -struct operations; - -namespace detail { - -struct custom_tag { }; - -template -struct is_custom - : mpl::not_< - is_base_and_derived< custom_tag, operations > - > - { }; - -} // End namespace detail. - -template -struct operations : detail::custom_tag { }; - -} } // End namespaces iostreams, boost. - -#endif // #ifndef BOOST_IOSTREAMS_OPERATIONS_FWD_HPP_INCLUDED //--------------// diff --git a/boost/boost/iostreams/optimal_buffer_size.hpp b/boost/boost/iostreams/optimal_buffer_size.hpp deleted file mode 100644 index 11a25aebac..0000000000 --- a/boost/boost/iostreams/optimal_buffer_size.hpp +++ /dev/null @@ -1,86 +0,0 @@ -// (C) Copyright Jonathan Turkanis 2003. -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt.) - -// See http://www.boost.org/libs/iostreams for documentation. - -#ifndef BOOST_IOSTREAMS_OPTIMAL_BUFFER_SIZE_HPP_INCLUDED -#define BOOST_IOSTREAMS_OPTIMAL_BUFFER_SIZE_HPP_INCLUDED - -#if defined(_MSC_VER) && (_MSC_VER >= 1020) -# pragma once -#endif - -#include // DEDUCED_TYPENAME, MSVC. -#include -#include // constants. -#include -#include -#include -#include - -// Must come last. -#include - -namespace boost { namespace iostreams { - -namespace detail { - -template -struct optimal_buffer_size_impl; - -} // End namespace detail. - -template -std::streamsize optimal_buffer_size(const T& t) -{ - typedef detail::optimal_buffer_size_impl impl; - return impl::optimal_buffer_size(detail::unwrap(t)); -} - -namespace detail { - -//------------------Definition of optimal_buffer_size_impl--------------------// - -template -struct optimal_buffer_size_impl - : mpl::if_< - is_custom, - operations, - optimal_buffer_size_impl< - BOOST_DEDUCED_TYPENAME - dispatch< - T, optimally_buffered_tag, device_tag, filter_tag - >::type - > - >::type - { }; - -template<> -struct optimal_buffer_size_impl { - template - static std::streamsize optimal_buffer_size(const T& t) - { return t.optimal_buffer_size(); } -}; - -template<> -struct optimal_buffer_size_impl { - template - static std::streamsize optimal_buffer_size(const T&) - { return default_device_buffer_size; } -}; - -template<> -struct optimal_buffer_size_impl { - template - static std::streamsize optimal_buffer_size(const T&) - { return default_filter_buffer_size; } -}; - -} // End namespace detail. - -} } // End namespaces iostreams, boost. - -#include - -#endif // #ifndef BOOST_IOSTREAMS_OPTIMAL_BUFFER_SIZE_HPP_INCLUDED diff --git a/boost/boost/iostreams/output_sequence.hpp b/boost/boost/iostreams/output_sequence.hpp deleted file mode 100644 index f89b866dce..0000000000 --- a/boost/boost/iostreams/output_sequence.hpp +++ /dev/null @@ -1,70 +0,0 @@ -// (C) Copyright Jonathan Turkanis 2003. -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt.) - -// See http://www.boost.org/libs/iostreams for documentation. - -#ifndef BOOST_IOSTREAMS_OUTPUT_SEQUENCE_HPP_INCLUDED -#define BOOST_IOSTREAMS_OUTPUT_SEQUENCE_HPP_INCLUDED - -#if defined(_MSC_VER) && (_MSC_VER >= 1020) -# pragma once -#endif - -#include // pair. -#include // DEDUCED_TYPENAME, MSVC. -#include -#include -#include -#include - -// Must come last. -#include - -namespace boost { namespace iostreams { - -namespace detail { - -template -struct output_sequence_impl; - -} // End namespace detail. - -template -inline std::pair< - BOOST_DEDUCED_TYPENAME char_type_of::type*, - BOOST_DEDUCED_TYPENAME char_type_of::type* -> -output_sequence(T& t) -{ return detail::output_sequence_impl::output_sequence(t); } - -namespace detail { - -//------------------Definition of output_sequence_impl------------------------// - -template -struct output_sequence_impl - : mpl::if_< - detail::is_custom, - operations, - output_sequence_impl - >::type - { }; - -template<> -struct output_sequence_impl { - template - static std::pair< - BOOST_DEDUCED_TYPENAME char_type_of::type*, - BOOST_DEDUCED_TYPENAME char_type_of::type* - > - output_sequence(U& u) { return u.output_sequence(); } -}; - -} // End namespace detail. - -} } // End namespaces iostreams, boost. - -#include - -#endif // #ifndef BOOST_IOSTREAMS_OUTPUT_SEQUENCE_HPP_INCLUDED diff --git a/boost/boost/iostreams/pipeline.hpp b/boost/boost/iostreams/pipeline.hpp deleted file mode 100644 index c6c1bdba45..0000000000 --- a/boost/boost/iostreams/pipeline.hpp +++ /dev/null @@ -1,125 +0,0 @@ -// (C) Copyright Jonathan Turkanis 2003. -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt.) - -// See http://www.boost.org/libs/iostreams for documentation. - -#ifndef BOOST_IOSTREAMS_PIPABLE_HPP_INCLUDED -#define BOOST_IOSTREAMS_PIPABLE_HPP_INCLUDED - -#if defined(_MSC_VER) && (_MSC_VER >= 1020) -# pragma once -#endif - -#include // BOOST_MSVC. -#include -#include -#include -#include -#include -#include -#include -#if BOOST_WORKAROUND(BOOST_MSVC, < 1300) -# include -#endif - -#define BOOST_IOSTREAMS_PIPABLE(filter, arity) \ - template< BOOST_PP_ENUM_PARAMS(arity, typename T) \ - BOOST_PP_COMMA_IF(arity) typename Component> \ - ::boost::iostreams::pipeline< \ - ::boost::iostreams::detail::pipeline_segment< \ - filter BOOST_IOSTREAMS_TEMPLATE_ARGS(arity, T) \ - >, \ - Component \ - > operator|( const filter BOOST_IOSTREAMS_TEMPLATE_ARGS(arity, T)& f, \ - const Component& c ) \ - { \ - typedef ::boost::iostreams::detail::pipeline_segment< \ - filter BOOST_IOSTREAMS_TEMPLATE_ARGS(arity, T) \ - > segment; \ - return ::boost::iostreams::pipeline \ - (segment(f), c); \ - } \ - /**/ - -namespace boost { namespace iostreams { - -template -struct pipeline; - -namespace detail { - -#if BOOST_WORKAROUND(BOOST_MSVC, <= 1300) - struct pipeline_base { }; - - template - struct is_pipeline - : is_base_and_derived - { }; -#endif -#if BOOST_WORKAROUND(__BORLANDC__, < 0x600) - template - struct is_pipeline : mpl::false_ { }; - - template - struct is_pipeline< pipeline > : mpl::true_ { }; -#endif - -template -class pipeline_segment -#if BOOST_WORKAROUND(BOOST_MSVC, <= 1300) - : pipeline_base -#endif -{ -public: - pipeline_segment(const Component& component) - : component_(component) - { } - template - void for_each(Fn fn) const { fn(component_); } - template - void push(Chain& chn) const { chn.push(component_); } -private: - const Component& component_; -}; - -} // End namespace detail. - -//------------------Definition of Pipeline------------------------------------// - -template -struct pipeline : Pipeline { - typedef Pipeline pipeline_type; - typedef Component component_type; - pipeline(const Pipeline& p, const Component& component) - : Pipeline(p), component_(component) - { } - template - void for_each(Fn fn) const - { - Pipeline::for_each(fn); - fn(component_); - } - template - void push(Chain& chn) const - { - Pipeline::push(chn); - chn.push(component_); - } - const Pipeline& tail() const { return *this; } - const Component& head() const { return component_; } -private: - const Component& component_; -}; - -template -pipeline, Component> -operator|(const pipeline& p, const Component& cmp) -{ - BOOST_STATIC_ASSERT(is_filter::value); - return pipeline, Component>(p, cmp); -} - -} } // End namespaces iostreams, boost. - -#endif // #ifndef BOOST_IOSTREAMS_PIPABLE_HPP_INCLUDED diff --git a/boost/boost/iostreams/positioning.hpp b/boost/boost/iostreams/positioning.hpp deleted file mode 100644 index 7a01baf515..0000000000 --- a/boost/boost/iostreams/positioning.hpp +++ /dev/null @@ -1,102 +0,0 @@ -// (C) Copyright Jonathan Turkanis 2003. -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt.) - -// See http://www.boost.org/libs/iostreams for documentation. - -// Thanks to Gareth Sylvester-Bradley for the Dinkumware versions of the -// positioning functions. - -#ifndef BOOST_IOSTREAMS_POSITIONING_HPP_INCLUDED -#define BOOST_IOSTREAMS_POSITIONING_HPP_INCLUDED - -#if defined(_MSC_VER) && (_MSC_VER >= 1020) -# pragma once -#endif - -#include -#include -#include -#include // mbstate_t. -#include // streamoff, streampos. - -// Must come last. -#include - -#ifdef BOOST_NO_STDC_NAMESPACE -namespace std { using ::fpos_t; } -#endif - -namespace boost { namespace iostreams { - -typedef boost::intmax_t stream_offset; - -inline std::streamoff stream_offset_to_streamoff(stream_offset off) -{ return static_cast(off); } - -template // Hande custom pos_type's. -inline stream_offset position_to_offset(PosType pos) -{ return std::streamoff(pos); } - -#if ((defined(_YVALS) && !defined(__IBMCPP__)) || defined(_CPPLIB_VER)) && \ - !defined(__SGI_STL_PORT) && !defined(_STLPORT_VERSION) \ - && !defined(__QNX__) \ - /**/ - - /* Dinkumware */ - -inline std::streampos offset_to_position(stream_offset off) -{ - // Use implementation-specific constructor. - return std::streampos(std::mbstate_t(), off); -} - -inline stream_offset fpos_t_to_offset(std::fpos_t pos) -{ // Helper function. -#if defined(_POSIX_) || (_INTEGRAL_MAX_BITS >= 64) - return pos; -#else - return _FPOSOFF(pos); -#endif -} - -# if defined(_CPPLIB_VER) //--------------------------------------------------// - - /* Recent Dinkumware */ - -inline stream_offset position_to_offset(std::streampos pos) -{ - // Use implementation-specific member function seekpos(). - return fpos_t_to_offset(pos.seekpos()) + - stream_offset(std::streamoff(pos)) - - stream_offset(std::streamoff(pos.seekpos())); -} - -# else // # if defined(_CPPLIB_VER) //----------------------------------------// - - /* Old Dinkumware */ - -inline stream_offset position_to_offset(std::streampos pos) -{ - // use implementation-specific member function get_fpos_t(). - return fpos_t_to_offset(pos.get_fpos_t()) + - stream_offset(std::streamoff(pos)) - - stream_offset(std::streamoff(pos.get_fpos_t())); -} - -# endif // # if defined(_CPPLIB_VER) //---------------------------------------// -#else // Dinkumware //--------------------------------------------------------// - - /* Non-Dinkumware */ - -inline std::streampos offset_to_position(stream_offset off) { return off; } - -inline stream_offset position_to_offset(std::streampos pos) { return pos; } - -#endif // Dinkumware //-------------------------------------------------------// - -} } // End namespaces iostreams, boost. - -#include - -#endif // #ifndef BOOST_IOSTREAMS_POSITIONING_HPP_INCLUDED diff --git a/boost/boost/iostreams/put.hpp b/boost/boost/iostreams/put.hpp deleted file mode 100644 index 7ea3df2ec1..0000000000 --- a/boost/boost/iostreams/put.hpp +++ /dev/null @@ -1,16 +0,0 @@ -// (C) Copyright Jonathan Turkanis 2005. -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt.) - -// See http://www.boost.org/libs/iostreams for documentation. - -#ifndef BOOST_IOSTREAMS_PUT_HPP_INCLUDED -#define BOOST_IOSTREAMS_PUT_HPP_INCLUDED - -#if defined(_MSC_VER) && (_MSC_VER >= 1020) -# pragma once -#endif - -#include - -#endif // #ifndef BOOST_IOSTREAMS_PUT_HPP_INCLUDED diff --git a/boost/boost/iostreams/read.hpp b/boost/boost/iostreams/read.hpp deleted file mode 100644 index f0c0e0a861..0000000000 --- a/boost/boost/iostreams/read.hpp +++ /dev/null @@ -1,246 +0,0 @@ -// (C) Copyright Jonathan Turkanis 2005. -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt.) - -// See http://www.boost.org/libs/iostreams for documentation. - -#ifndef BOOST_IOSTREAMS_READ_HPP_INCLUDED -#define BOOST_IOSTREAMS_READ_HPP_INCLUDED - -#if defined(_MSC_VER) && (_MSC_VER >= 1020) -# pragma once -#endif - -#include // DEDUCED_TYPENAME, MSVC. -#include -#include -#include -#include -#include // streamsize. -#include -#include -#include -#include - -// Must come last. -#include - -#if BOOST_WORKAROUND(BOOST_MSVC, < 1300) //-----------------------------------// -# include -#else // #if BOOST_WORKAROUND(BOOST_MSVC, < 1300) //--------------------------// - -namespace boost { namespace iostreams { - -namespace detail { - -template -struct read_device_impl; - -template -struct read_filter_impl; - -} // End namespace detail. - -template -typename int_type_of::type get(T& t) -{ return detail::read_device_impl::get(detail::unwrap(t)); } - -template -inline std::streamsize -read(T& t, typename char_type_of::type* s, std::streamsize n) -{ return detail::read_device_impl::read(detail::unwrap(t), s, n); } - -template -std::streamsize -read(T& t, Source& src, typename char_type_of::type* s, std::streamsize n) -{ return detail::read_filter_impl::read(detail::unwrap(t), src, s, n); } - -template -bool putback(T& t, typename char_type_of::type c) -{ return detail::read_device_impl::putback(detail::unwrap(t), c); } - -//----------------------------------------------------------------------------// - -namespace detail { - -// Helper function for adding -1 as EOF indicator. -inline std::streamsize check_eof(std::streamsize n) { return n != 0 ? n : -1; } - -// Helper templates for reading from streambufs. -template -struct true_eof_impl; - -template<> -struct true_eof_impl { - template - static bool true_eof(T& t) { return t.true_eof(); } -}; - -template<> -struct true_eof_impl { - template - static bool true_eof(T& t) { return true; } -}; - -template -inline bool true_eof(T& t) -{ - const bool linked = is_linked::value; - return true_eof_impl::true_eof(t); -} - -//------------------Definition of read_device_impl----------------------------// - -template -struct read_device_impl - : mpl::if_< - detail::is_custom, - operations, - read_device_impl< - BOOST_DEDUCED_TYPENAME - detail::dispatch< - T, istream_tag, streambuf_tag, input - >::type - > - >::type - { }; - -template<> -struct read_device_impl { - template - static typename int_type_of::type get(T& t) - { return t.get(); } - - template - static std::streamsize - read(T& t, typename char_type_of::type* s, std::streamsize n) - { return check_eof(t.rdbuf()->sgetn(s, n)); } - - template - static bool putback(T& t, typename char_type_of::type c) - { - typedef typename char_type_of::type char_type; - typedef BOOST_IOSTREAMS_CHAR_TRAITS(char_type) traits_type; - return !traits_type::eq_int_type( t.rdbuf()->sputbackc(c), - traits_type::eof() ); - } -}; - -template<> -struct read_device_impl { - template - static typename int_type_of::type - get(T& t) - { // gcc 2.95 needs namespace qualification for char_traits. - typedef typename char_type_of::type char_type; - typedef iostreams::char_traits traits_type; - typename int_type_of::type c; - return !traits_type::is_eof(c = t.sbumpc()) || - detail::true_eof(t) - ? - c : traits_type::would_block(); - } - - template - static std::streamsize - read(T& t, typename char_type_of::type* s, std::streamsize n) - { - std::streamsize amt; - return (amt = t.sgetn(s, n)) != 0 ? - amt : - detail::true_eof(t) ? - -1 : - 0; - } - - template - static bool putback(T& t, typename char_type_of::type c) - { // gcc 2.95 needs namespace qualification for char_traits. - typedef typename char_type_of::type char_type; - typedef iostreams::char_traits traits_type; - return !traits_type::is_eof(t.sputbackc(c)); - } -}; - -template<> -struct read_device_impl { - template - static typename int_type_of::type - get(T& t) - { // gcc 2.95 needs namespace qualification for char_traits. - typedef typename char_type_of::type char_type; - typedef iostreams::char_traits traits_type; - char_type c; - std::streamsize amt; - return (amt = t.read(&c, 1)) == 1 ? - traits_type::to_int_type(c) : - amt == -1 ? - traits_type::eof() : - traits_type::would_block(); - } - - template - static std::streamsize - read(T& t, typename char_type_of::type* s, std::streamsize n) - { return t.read(s, n); } - - template - static bool putback(T& t, typename char_type_of::type c) - { // T must be Peekable. - return t.putback(c); - } -}; - -//------------------Definition of read_filter_impl----------------------------// - -template -struct read_filter_impl - : mpl::if_< - detail::is_custom, - operations, - read_filter_impl< - BOOST_DEDUCED_TYPENAME - detail::dispatch< - T, multichar_tag, any_tag - >::type - > - >::type - { }; - -template<> -struct read_filter_impl { - template - static std::streamsize read - (T& t, Source& src, typename char_type_of::type* s, std::streamsize n) - { return t.read(src, s, n); } -}; - -template<> -struct read_filter_impl { - template - static std::streamsize read - (T& t, Source& src, typename char_type_of::type* s, std::streamsize n) - { // gcc 2.95 needs namespace qualification for char_traits. - typedef typename char_type_of::type char_type; - typedef iostreams::char_traits traits_type; - for (std::streamsize off = 0; off < n; ++off) { - typename traits_type::int_type c = t.get(src); - if (traits_type::is_eof(c)) - return check_eof(off); - if (traits_type::would_block(c)) - return off; - s[off] = traits_type::to_char_type(c); - } - return n; - } -}; - -} // End namespace detail. - -} } // End namespaces iostreams, boost. - -#endif // #if BOOST_WORKAROUND(BOOST_MSVC, < 1300) //-------------------------// - -#include - -#endif // #ifndef BOOST_IOSTREAMS_READ_HPP_INCLUDED diff --git a/boost/boost/iostreams/seek.hpp b/boost/boost/iostreams/seek.hpp deleted file mode 100644 index b09f1e28bc..0000000000 --- a/boost/boost/iostreams/seek.hpp +++ /dev/null @@ -1,179 +0,0 @@ -// (C) Copyright Jonathan Turkanis 2003. -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt.) - -// See http://www.boost.org/libs/iostreams for documentation. - -#ifndef BOOST_IOSTREAMS_SEEK_HPP_INCLUDED -#define BOOST_IOSTREAMS_SEEK_HPP_INCLUDED - -#if defined(_MSC_VER) && (_MSC_VER >= 1020) -# pragma once -#endif - -#include // DEDUCED_TYPENAME, MSVC. -#include -#include -#include -#include // streamsize, seekdir, openmode. -#include -#include -#include -#include -#include - -// Must come last. -#include - -namespace boost { namespace iostreams { - -namespace detail { - -template -struct seek_device_impl; - -template -struct seek_filter_impl; - -} // End namespace detail. - -template -inline std::streampos -seek( T& t, stream_offset off, BOOST_IOS::seekdir way, - BOOST_IOS::openmode which = BOOST_IOS::in | BOOST_IOS::out ) -{ - using namespace detail; - return seek_device_impl::seek(detail::unwrap(t), off, way, which); -} - -template -inline std::streampos -seek( T& t, Device& dev, stream_offset off, BOOST_IOS::seekdir way, - BOOST_IOS::openmode which = BOOST_IOS::in | BOOST_IOS::out ) -{ - using namespace detail; - return seek_filter_impl::seek(detail::unwrap(t), dev, off, way, which); -} - -namespace detail { - -//------------------Definition of seek_device_impl----------------------------// - -template -struct seek_device_impl - : mpl::if_< - is_custom, - operations, - seek_device_impl< - BOOST_DEDUCED_TYPENAME - dispatch< - T, iostream_tag, istream_tag, ostream_tag, - streambuf_tag, two_head, any_tag - >::type - > - >::type - { }; - -struct seek_impl_basic_ios { - template - static std::streampos seek( T& t, stream_offset off, - BOOST_IOS::seekdir way, - BOOST_IOS::openmode which ) - { - if ( way == BOOST_IOS::beg && - ( off < integer_traits::const_min || - off > integer_traits::const_max ) ) - { - return t.rdbuf()->pubseekpos(offset_to_position(off)); - } else { - return t.rdbuf()->pubseekoff(off, way, which); - } - } -}; - -template<> -struct seek_device_impl : seek_impl_basic_ios { }; - -template<> -struct seek_device_impl : seek_impl_basic_ios { }; - -template<> -struct seek_device_impl : seek_impl_basic_ios { }; - -template<> -struct seek_device_impl { - template - static std::streampos seek( T& t, stream_offset off, - BOOST_IOS::seekdir way, - BOOST_IOS::openmode which ) - { - if ( way == BOOST_IOS::beg && - ( off < integer_traits::const_min || - off > integer_traits::const_max ) ) - { - return t.BOOST_IOSTREAMS_PUBSEEKPOS(offset_to_position(off)); - } else { - return t.BOOST_IOSTREAMS_PUBSEEKOFF(off, way, which); - } - } -}; - -template<> -struct seek_device_impl { - template - static std::streampos seek( T& t, stream_offset off, - BOOST_IOS::seekdir way, - BOOST_IOS::openmode which ) - { return t.seek(off, way, which); } -}; - -template<> -struct seek_device_impl { - template - static std::streampos seek( T& t, stream_offset off, - BOOST_IOS::seekdir way, - BOOST_IOS::openmode ) - { return t.seek(off, way); } -}; - -//------------------Definition of seek_filter_impl----------------------------// - -template -struct seek_filter_impl - : mpl::if_< - is_custom, - operations, - seek_filter_impl< - BOOST_DEDUCED_TYPENAME - dispatch::type - > - >::type - { }; - -template<> -struct seek_filter_impl { - template - static std::streampos seek( T& t, Device& d, - stream_offset off, - BOOST_IOS::seekdir way, - BOOST_IOS::openmode which ) - { return t.seek(d, off, way, which); } -}; - -template<> -struct seek_filter_impl { - template - static std::streampos seek( T& t, Device& d, - stream_offset off, - BOOST_IOS::seekdir way, - BOOST_IOS::openmode ) - { return t.seek(d, off, way); } -}; - -} // End namespace detail. - -} } // End namespaces iostreams, boost. - -#include - -#endif // #ifndef BOOST_IOSTREAMS_SEEK_HPP_INCLUDED diff --git a/boost/boost/iostreams/stream_buffer.hpp b/boost/boost/iostreams/stream_buffer.hpp deleted file mode 100644 index 2018ed670d..0000000000 --- a/boost/boost/iostreams/stream_buffer.hpp +++ /dev/null @@ -1,108 +0,0 @@ -// (C) Copyright Jonathan Turkanis 2003. -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt.) - -// See http://www.boost.org/libs/iostreams for documentation. - -#ifndef BOOST_IOSTREAMS_STREAM_BUFFER_HPP_INCLUDED -#define BOOST_IOSTREAMS_STREAM_BUFFER_HPP_INCLUDED - -#if defined(_MSC_VER) && (_MSC_VER >= 1020) -# pragma once -#endif - -#include // allocator. -#include // BOOST_DEDUCED_TYPENAME. -#include -#include -#include -#include // failure, streamsize. -#include -#include -#include -#include -#include - -// Must come last. -#include // MSVC. - -namespace boost { namespace iostreams { namespace detail { - -template -struct stream_buffer_traits { - typedef typename - mpl::if_< - is_convertible< - BOOST_DEDUCED_TYPENAME category_of::type, - direct_tag - >, - direct_streambuf, - indirect_streambuf - >::type type; -}; - -} } } // End namespaces detail, iostreams, boost - -#ifdef BOOST_IOSTREAMS_BROKEN_OVERLOAD_RESOLUTION -# include -#else - -namespace boost { namespace iostreams { - -template< typename T, - typename Tr = - BOOST_IOSTREAMS_CHAR_TRAITS( - BOOST_DEDUCED_TYPENAME char_type_of::type - ), - typename Alloc = - std::allocator< - BOOST_DEDUCED_TYPENAME char_type_of::type - >, - typename Mode = BOOST_DEDUCED_TYPENAME mode_of::type > -class stream_buffer - : public detail::stream_buffer_traits::type -{ -private: - BOOST_STATIC_ASSERT(( - is_convertible< - BOOST_DEDUCED_TYPENAME iostreams::category_of::type, Mode - >::value - )); - typedef typename - detail::stream_buffer_traits< - T, Tr, Alloc, Mode - >::type base_type; - typedef T policy_type; -public: - typedef typename char_type_of::type char_type; - BOOST_IOSTREAMS_STREAMBUF_TYPEDEFS(Tr) -public: - stream_buffer() { } - ~stream_buffer() - { - try { - if (this->is_open() && this->auto_close()) - this->close(); - } catch (std::exception&) { } - } - BOOST_IOSTREAMS_FORWARD( stream_buffer, open_impl, T, - BOOST_IOSTREAMS_PUSH_PARAMS, - BOOST_IOSTREAMS_PUSH_ARGS ) - T& operator*() { return *this->component(); } - T* operator->() { return this->component(); } -private: - void open_impl(const T& t BOOST_IOSTREAMS_PUSH_PARAMS()) - { // Used for forwarding. - if (this->is_open()) - BOOST_IOSTREAMS_FAILURE("already open"); - base_type::open(t BOOST_IOSTREAMS_PUSH_ARGS()); - } -}; - -} } // End namespaces iostreams, boost. - -#endif // #ifdef BOOST_IOSTREAMS_BROKEN_OVERLOAD_RESOLUTION - -#include // MSVC. - -#endif // #ifndef BOOST_IOSTREAMS_STREAM_BUFFER_HPP_INCLUDED diff --git a/boost/boost/iostreams/traits.hpp b/boost/boost/iostreams/traits.hpp deleted file mode 100644 index 40f2175902..0000000000 --- a/boost/boost/iostreams/traits.hpp +++ /dev/null @@ -1,256 +0,0 @@ -// (C) Copyright Jonathan Turkanis 2003. -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt.) - -// See http://www.boost.org/libs/iostreams for documentation. - -// -// Contains metafunctions char_type_of, category_of and mode_of used for -// deducing the i/o category and i/o mode of a model of Filter or Device. -// -// Also contains several utility metafunctions, functions and macros. -// - -#ifndef BOOST_IOSTREAMS_IO_TRAITS_HPP_INCLUDED -#define BOOST_IOSTREAMS_IO_TRAITS_HPP_INCLUDED - -#if defined(_MSC_VER) && (_MSC_VER >= 1020) -# pragma once -#endif - -#include // stream types, char_traits. -#include // partial spec, deduced typename. -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -namespace boost { namespace iostreams { - -//------------------Definitions of predicates for streams and stream buffers--// - -#ifndef BOOST_IOSTREAMS_NO_STREAM_TEMPLATES //--------------------------------// - -BOOST_IOSTREAMS_BOOL_TRAIT_DEF(is_istream, std::basic_istream, 2) -BOOST_IOSTREAMS_BOOL_TRAIT_DEF(is_ostream, std::basic_ostream, 2) -BOOST_IOSTREAMS_BOOL_TRAIT_DEF(is_iostream, std::basic_iostream, 2) -BOOST_IOSTREAMS_BOOL_TRAIT_DEF(is_streambuf, std::basic_streambuf, 2) -BOOST_IOSTREAMS_BOOL_TRAIT_DEF(is_stringstream, std::basic_stringstream, 3) -BOOST_IOSTREAMS_BOOL_TRAIT_DEF(is_stringbuf, std::basic_stringbuf, 3) - -#else // #ifndef BOOST_IOSTREAMS_NO_STREAM_TEMPLATES //-----------------------// - -BOOST_IOSTREAMS_BOOL_TRAIT_DEF(is_istream, std::istream, 0) -BOOST_IOSTREAMS_BOOL_TRAIT_DEF(is_ostream, std::ostream, 0) -BOOST_IOSTREAMS_BOOL_TRAIT_DEF(is_iostream, std::iostream, 0) -BOOST_IOSTREAMS_BOOL_TRAIT_DEF(is_streambuf, std::streambuf, 0) - -#endif // #ifndef BOOST_IOSTREAMS_NO_STREAM_TEMPLATES //----------------------// - -template -struct is_std_io - : mpl::or_< is_istream, is_ostream, is_streambuf > - { }; - -namespace detail { - -template -class linked_streambuf; - -BOOST_IOSTREAMS_BOOL_TRAIT_DEF(is_linked, linked_streambuf, 2) - -} // End namespace detail. - -//------------------Definitions of char_type_of-------------------------------// - -namespace detail { - -template -struct member_char_type { typedef typename T::char_type type; }; - -} // End namespace detail. - -#ifndef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION //---------------------------// -# ifndef BOOST_IOSTREAMS_NO_STREAM_TEMPLATES //-------------------------------// - -template -struct char_type_of - : detail::member_char_type< - typename detail::unwrapped_type::type - > - { }; - -# else // # ifndef BOOST_IOSTREAMS_NO_STREAM_TEMPLATES //---------------------// - -template -struct char_type_of { - typedef typename detail::unwrapped_type::type U; - typedef typename - mpl::eval_if< - is_std_io, - mpl::identity, - detail::member_char_type - >::type type; -}; - -# endif // # ifndef BOOST_IOSTREAMS_NO_STREAM_TEMPLATES //--------------------// - -template -struct char_type_of< iterator_range > { - typedef typename iterator_value::type type; -}; - -#else // #ifndef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION //------------------// - -template -struct char_type_of { - template - struct get_value_type { - typedef typename range_value::type type; - }; - typedef typename - mpl::eval_if< - is_iterator_range, - get_value_type, - detail::member_char_type< - BOOST_DEDUCED_TYPENAME detail::unwrapped_type::type - > - >::type type; -}; - -#endif // #ifndef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION //-----------------// - -//------------------Definitions of category_of--------------------------------// - -namespace detail { - -template -struct member_category { typedef typename T::category type; }; - -} // End namespace detail. - -template -struct category_of { - template - struct member_category { - typedef typename U::category type; - }; - typedef typename detail::unwrapped_type::type U; - typedef typename - mpl::eval_if< - is_std_io, - iostreams::select< // Disambiguation for Tru64 - is_iostream, iostream_tag, - is_istream, istream_tag, - is_ostream, ostream_tag, - is_streambuf, streambuf_tag - >, - detail::member_category - >::type type; -}; - -//------------------Definition of get_category--------------------------------// - -// -// Returns an object of type category_of::type. -// -template -inline typename category_of::type get_category(const T&) -{ typedef typename category_of::type category; return category(); } - -//------------------Definition of int_type_of---------------------------------// - -template -struct int_type_of { -#ifndef BOOST_IOSTREAMS_NO_STREAM_TEMPLATES - typedef std::char_traits< - BOOST_DEDUCED_TYPENAME char_type_of::type - > traits_type; - typedef typename traits_type::int_type type; -#else - typedef int type; -#endif -}; - -//------------------Definition of mode----------------------------------------// - -namespace detail { - -template struct io_mode_impl; - -#define BOOST_IOSTREAMS_MODE_HELPER(tag_, id_) \ - case_ io_mode_impl_helper(tag_); \ - template<> struct io_mode_impl { typedef tag_ type; }; \ - /**/ -BOOST_IOSTREAMS_MODE_HELPER(input, 1) -BOOST_IOSTREAMS_MODE_HELPER(output, 2) -BOOST_IOSTREAMS_MODE_HELPER(bidirectional, 3) -BOOST_IOSTREAMS_MODE_HELPER(input_seekable, 4) -BOOST_IOSTREAMS_MODE_HELPER(output_seekable, 5) -BOOST_IOSTREAMS_MODE_HELPER(seekable, 6) -BOOST_IOSTREAMS_MODE_HELPER(dual_seekable, 7) -BOOST_IOSTREAMS_MODE_HELPER(bidirectional_seekable, 8) -BOOST_IOSTREAMS_MODE_HELPER(dual_use, 9) -#undef BOOST_IOSTREAMS_MODE_HELPER - -template -struct io_mode_id { - typedef typename category_of::type category; - BOOST_SELECT_BY_SIZE(int, value, detail::io_mode_impl_helper(category())); -}; - -} // End namespace detail. - -template // Borland 5.6.4 requires this circumlocution. -struct mode_of : detail::io_mode_impl< detail::io_mode_id::value > { }; - -//------------------Definition of is_device, is_filter and is_direct----------// - -namespace detail { - -template -struct has_trait_impl { - typedef typename category_of::type category; - BOOST_STATIC_CONSTANT(bool, value = (is_convertible::value)); -}; - -template -struct has_trait - : mpl::bool_::value> - { }; - -} // End namespace detail. - -template -struct is_device : detail::has_trait { }; - -template -struct is_filter : detail::has_trait { }; - -template -struct is_direct : detail::has_trait { }; - -//------------------Definition of BOOST_IOSTREAMS_STREAMBUF_TYPEDEFS----------// - -#define BOOST_IOSTREAMS_STREAMBUF_TYPEDEFS(Tr) \ - typedef Tr traits_type; \ - typedef typename traits_type::int_type int_type; \ - typedef typename traits_type::off_type off_type; \ - typedef typename traits_type::pos_type pos_type; \ - /**/ - -} } // End namespaces iostreams, boost. - -#endif // #ifndef BOOST_IOSTREAMS_IO_TRAITS_HPP_INCLUDED diff --git a/boost/boost/iostreams/traits_fwd.hpp b/boost/boost/iostreams/traits_fwd.hpp deleted file mode 100644 index 9defc5cf13..0000000000 --- a/boost/boost/iostreams/traits_fwd.hpp +++ /dev/null @@ -1,71 +0,0 @@ -// (C) Copyright Jonathan Turkanis 2003. -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt.) - -// See http://www.boost.org/libs/iostreams for documentation. - -// Forward declarations of templates defined in traits.hpp. - -#ifndef BOOST_IOSTREAMS_IO_TRAITS_FWD_HPP_INCLUDED -#define BOOST_IOSTREAMS_IO_TRAITS_FWD_HPP_INCLUDED - -#if defined(_MSC_VER) && (_MSC_VER >= 1020) -# pragma once -#endif - -#include // stream types, char_traits. - -namespace boost { namespace iostreams { - -template -struct is_istream; - -template -struct is_ostream; - -template -struct is_iostream; - -template -struct is_streambuf; - -template -struct is_stringstream; - -template -struct is_stringbuf; - -template -struct is_std_io; - -template -struct char_type_of; - -template -struct category_of; - -template -struct int_type_of; - -template -struct mode_of; - -template -struct is_device; - -template -struct is_filter; - -template -struct is_direct; - -namespace detail { - -template -struct is_linked; - -} // End namespace detail. - -} } // End namespaces iostreams, boost. - -#endif // #ifndef BOOST_IOSTREAMS_IO_TRAITS_FWD_HPP_INCLUDED diff --git a/boost/boost/iostreams/write.hpp b/boost/boost/iostreams/write.hpp deleted file mode 100644 index 1d77131579..0000000000 --- a/boost/boost/iostreams/write.hpp +++ /dev/null @@ -1,170 +0,0 @@ -// (C) Copyright Jonathan Turkanis 2003. -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt.) - -// See http://www.boost.org/libs/iostreams for documentation. - -#ifndef BOOST_IOSTREAMS_WRITE_HPP_INCLUDED -#define BOOST_IOSTREAMS_WRITE_HPP_INCLUDED - -#if defined(_MSC_VER) && (_MSC_VER >= 1020) -# pragma once -#endif - -#include // DEDUCED_TYPENAME, MSVC. -#include -#include -#include -#include -#include // streamsize. -#include -#include -#include -#include -#include - -// Must come last. -#include - -#if BOOST_WORKAROUND(BOOST_MSVC, < 1300) //-----------------------------------// -# include -#else // #if BOOST_WORKAROUND(BOOST_MSVC, < 1300) //--------------------------// - -namespace boost { namespace iostreams { - -namespace detail { - -template -struct write_device_impl; - -template -struct write_filter_impl; - -} // End namespace detail. - -template -bool put(T& t, typename char_type_of::type c) -{ return detail::write_device_impl::put(detail::unwrap(t), c); } - -template -inline std::streamsize write - (T& t, const typename char_type_of::type* s, std::streamsize n) -{ return detail::write_device_impl::write(detail::unwrap(t), s, n); } - -template -inline std::streamsize -write( T& t, Sink& snk, const typename char_type_of::type* s, - std::streamsize n ) -{ return detail::write_filter_impl::write(detail::unwrap(t), snk, s, n); } - -namespace detail { - -//------------------Definition of write_device_impl---------------------------// - -template -struct write_device_impl - : mpl::if_< - is_custom, - operations, - write_device_impl< - BOOST_DEDUCED_TYPENAME - dispatch< - T, ostream_tag, streambuf_tag, output - >::type - > - >::type - { }; - -template<> -struct write_device_impl { - template - static bool put(T& t, typename char_type_of::type c) - { - typedef typename char_type_of::type char_type; - typedef BOOST_IOSTREAMS_CHAR_TRAITS(char_type) traits_type; - return !traits_type::eq_int_type( t.rdbuf()->s.sputc(), - traits_type::eof() ); - } - - template - static std::streamsize write - (T& t, const typename char_type_of::type* s, std::streamsize n) - { return t.rdbuf()->sputn(s, n); } -}; - -template<> -struct write_device_impl { - template - static bool put(T& t, typename char_type_of::type c) - { - typedef typename char_type_of::type char_type; - typedef BOOST_IOSTREAMS_CHAR_TRAITS(char_type) traits_type; - return !traits_type::eq_int_type(t.sputc(c), traits_type::eof()); - } - - template - static std::streamsize write - (T& t, const typename char_type_of::type* s, std::streamsize n) - { return t.sputn(s, n); } -}; - -template<> -struct write_device_impl { - template - static bool put(T& t, typename char_type_of::type c) - { return t.write(&c, 1) == 1; } - - template - static std::streamsize - write(T& t, const typename char_type_of::type* s, std::streamsize n) - { return t.write(s, n); } -}; - -//------------------Definition of write_filter_impl---------------------------// - -template -struct write_filter_impl - : mpl::if_< - is_custom, - operations, - write_filter_impl< - BOOST_DEDUCED_TYPENAME - dispatch< - T, multichar_tag, any_tag - >::type - > - >::type - { }; - -template<> -struct write_filter_impl { - template - static std::streamsize - write( T& t, Sink& snk, const typename char_type_of::type* s, - std::streamsize n ) - { return t.write(snk, s, n); } -}; - -template<> -struct write_filter_impl { - template - static std::streamsize - write( T& t, Sink& snk, const typename char_type_of::type* s, - std::streamsize n ) - { - for (std::streamsize off = 0; off < n; ++off) - if (!t.put(snk, s[off])) - return off; - return n; - } -}; - -} // End namespace detail. - -} } // End namespaces iostreams, boost. - -#endif // #if BOOST_WORKAROUND(BOOST_MSVC, < 1300) //-------------------------// - -#include - -#endif // #ifndef BOOST_IOSTREAMS_WRITE_HPP_INCLUDED diff --git a/boost/libs/iostreams/src/file_descriptor.cpp b/boost/libs/iostreams/src/file_descriptor.cpp deleted file mode 100644 index 04b76bc6f9..0000000000 --- a/boost/libs/iostreams/src/file_descriptor.cpp +++ /dev/null @@ -1,254 +0,0 @@ -// (C) Copyright Jonathan Turkanis 2003. -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt.) - -// See http://www.boost.org/libs/iostreams for documentation. - -// Inspired by fdstream.hpp, (C) Copyright Nicolai M. Josuttis 2001, -// available at http://www.josuttis.com/cppcode/fdstream.html. - -// Define BOOST_IOSTREAMS_SOURCE so that -// knows that we are building the library (possibly exporting code), rather -// than using it (possibly importing code). -#define BOOST_IOSTREAMS_SOURCE - -#include // BOOST_JOIN -#include -#include -#include -#include // openmodes, failure. -#include -#include - - // OS-specific headers for low-level i/o. - -#include -#include // SEEK_SET, etc. -#include -#include // file opening flags. -#include // file access permissions. -#ifdef BOOST_IOSTREAMS_WINDOWS -# include // low-level file i/o. -# define WINDOWS_LEAN_AND_MEAN -# include -#else -# include // mode_t. -# include // low-level file i/o. -#endif - -// Names of runtime library routines vary. -#if defined(__BORLANDC__) -# define BOOST_RTL(x) BOOST_JOIN(_rtl_, x) -#else -# if defined(BOOST_IOSTREAMS_WINDOWS) && !defined(__CYGWIN__) -# define BOOST_RTL(x) BOOST_JOIN(_, x) -# else -# define BOOST_RTL(x) ::x -# endif -#endif - -namespace boost { namespace iostreams { - -//------------------Implementation of file_descriptor-------------------------// - -void file_descriptor::open - ( const std::string& path, BOOST_IOS::openmode m, - BOOST_IOS::openmode base ) -{ - using namespace std; - m |= base; -#ifdef BOOST_IOSTREAMS_WINDOWS //---------------------------------------------// - DWORD dwDesiredAccess; - DWORD dwCreationDisposition; - if ( (m & (BOOST_IOS::in | BOOST_IOS::out)) - == - (BOOST_IOS::in | BOOST_IOS::out) ) - { - assert(!(m & BOOST_IOS::app)); - dwDesiredAccess = GENERIC_READ | GENERIC_WRITE; - dwCreationDisposition = - (m & BOOST_IOS::trunc) ? - OPEN_ALWAYS : - OPEN_EXISTING; - } else if (m & BOOST_IOS::in) { - assert(!(m & (BOOST_IOS::app |BOOST_IOS::trunc))); - dwDesiredAccess = GENERIC_READ; - dwCreationDisposition = OPEN_EXISTING; - } else if (m & BOOST_IOS::out) { - dwDesiredAccess = GENERIC_WRITE; - dwCreationDisposition = OPEN_ALWAYS; - if (m & BOOST_IOS::app) - pimpl_->flags_ |= impl::append; - } - - HANDLE handle = - ::CreateFileA( path.c_str(), - dwDesiredAccess, - 0, // dwShareMode - NULL, // lpSecurityAttributes - dwCreationDisposition, - FILE_ATTRIBUTE_NORMAL, - NULL ); // hTemplateFile - if (handle != INVALID_HANDLE_VALUE) { - pimpl_->handle_ = handle; - pimpl_->flags_ |= impl::close_on_exit | impl::has_handle; - } else { - pimpl_->flags_ = 0; - throw BOOST_IOSTREAMS_FAILURE("bad open"); - } -#else // #ifdef BOOST_IOSTREAMS_WINDOWS //------------------------------------// - - // Calculate oflag argument to open. - - int oflag = 0; - if ( (m & (BOOST_IOS::in | BOOST_IOS::out)) - == - (BOOST_IOS::in | BOOST_IOS::out) ) - { - assert(!(m & BOOST_IOS::app)); - oflag |= O_RDWR; - } else if (m & BOOST_IOS::in) { - assert(!(m & (BOOST_IOS::app |BOOST_IOS::trunc))); - oflag |= O_RDONLY; - } else if (m & BOOST_IOS::out) { - oflag |= O_WRONLY; - m |= BOOST_IOS::trunc; - if (m & BOOST_IOS::app) - oflag |= O_APPEND; - } - if (m & BOOST_IOS::trunc) - oflag |= O_CREAT; - - // Calculate pmode argument to open. - - mode_t pmode = S_IRUSR | S_IWUSR | - S_IRGRP | S_IWGRP | - S_IROTH | S_IWOTH; - - // Open file. - - int fd = BOOST_RTL(open)(path.c_str(), oflag, pmode); - if (fd == -1) { - throw BOOST_IOSTREAMS_FAILURE("bad open"); - } else { - pimpl_->fd_ = fd; - pimpl_->flags_ = impl::close_on_exit; - } -#endif // #ifndef BOOST_IOSTREAMS_WINDOWS //----------------------------------// -} - -std::streamsize file_descriptor::read(char_type* s, std::streamsize n) -{ -#ifdef BOOST_IOSTREAMS_WINDOWS - if (pimpl_->flags_ & impl::has_handle) { - DWORD result; - if (!::ReadFile(pimpl_->handle_, s, n, &result, NULL)) - throw detail::bad_read(); - return static_cast(result); - } -#endif - errno = 0; - std::streamsize result = BOOST_RTL(read)(pimpl_->fd_, s, n); - if (errno != 0) - throw detail::bad_read(); - return result == 0 ? -1 : result; -} - -std::streamsize file_descriptor::write(const char_type* s, std::streamsize n) -{ -#ifdef BOOST_IOSTREAMS_WINDOWS - if (pimpl_->flags_ & impl::has_handle) { - if (pimpl_->flags_ & impl::append) { - ::SetFilePointer(pimpl_->handle_, 0, NULL, FILE_END); - if (::GetLastError() != NO_ERROR) - throw detail::bad_seek(); - } - DWORD ignore; - if (!::WriteFile(pimpl_->handle_, s, n, &ignore, NULL)) - throw detail::bad_write(); - return n; - } -#endif - int amt = BOOST_RTL(write)(pimpl_->fd_, s, n); - if (amt < n) - throw detail::bad_write(); // Handles blocking fd's only. - return n; -} - -std::streampos file_descriptor::seek - (stream_offset off, BOOST_IOS::seekdir way) -{ - using namespace std; -#ifdef BOOST_IOSTREAMS_WINDOWS - if (pimpl_->flags_ & impl::has_handle) { - LONG lDistanceToMove = static_cast(off & 0xffffffff); - LONG lDistanceToMoveHigh = static_cast(off >> 32); - DWORD dwResultLow = - ::SetFilePointer( pimpl_->handle_, - lDistanceToMove, - &lDistanceToMoveHigh, - way == BOOST_IOS::beg ? - FILE_BEGIN : - way == BOOST_IOS::cur ? - FILE_CURRENT : - FILE_END ); - if (::GetLastError() != NO_ERROR) { - throw detail::bad_seek(); - } else { - return offset_to_position((lDistanceToMoveHigh << 32) + dwResultLow); - } - } -#endif // #ifdef BOOST_IOSTREAMS_WINDOWS - -#ifndef BOOST_IOSTREAMS_HAS_LSEEK64 - if ( off > integer_traits::const_max || - off < integer_traits::const_min ) - { - throw BOOST_IOSTREAMS_FAILURE("bad offset"); - } -#endif - - stream_offset result = - #ifdef BOOST_IOSTREAMS_HAS_LSEEK64 - lseek64 - #else - lseek - #endif - ( pimpl_->fd_, - #ifdef BOOST_IOSTREAMS_HAS_LSEEK64 - off, - #else - static_cast(off), - #endif - way == BOOST_IOS::beg ? - SEEK_SET : - way == BOOST_IOS::cur ? - SEEK_CUR : - SEEK_END ); - if (result == -1) - throw detail::bad_seek(); - return offset_to_position(result); -} - -void file_descriptor::close() { close_impl(*pimpl_); } - -void file_descriptor::close_impl(impl& i) -{ -#ifdef BOOST_IOSTREAMS_WINDOWS - if (i.flags_ & impl::has_handle) { - if (!::CloseHandle(i.handle_)) - throw BOOST_IOSTREAMS_FAILURE("bad close"); - i.fd_ = -1; - i.flags_ = 0; - return; - } -#endif - if (i.fd_ != -1) { - if (BOOST_RTL(close)(i.fd_) == -1) - throw BOOST_IOSTREAMS_FAILURE("bad close"); - i.fd_ = -1; - i.flags_ = 0; - } -} - -} } // End namespaces iostreams, boost. diff --git a/boost/libs/iostreams/src/mapped_file.cpp b/boost/libs/iostreams/src/mapped_file.cpp deleted file mode 100644 index 323a4d5dd6..0000000000 --- a/boost/libs/iostreams/src/mapped_file.cpp +++ /dev/null @@ -1,418 +0,0 @@ -// (C) Copyright Craig Henderson 2002 'boost/memmap.hpp' from sandbox -// (C) Copyright Jonathan Turkanis 2004. -// (C) Copyright Jonathan Graehl 2004. - -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt.) - -// See http://www.boost.org/libs/iostreams for documentation. - -// Define BOOST_IOSTREAMS_SOURCE so that -// knows that we are building the library (possibly exporting code), rather -// than using it (possibly importing code). -#define BOOST_IOSTREAMS_SOURCE - -#include -#include -#include -#include // failure. -#include -#include - -#ifdef BOOST_IOSTREAMS_WINDOWS -# define WIN32_LEAN_AND_MEAN // Exclude rarely-used stuff from Windows headers -# include -#else -# include -# include -# include // mmap, munmap. -# include -# include // struct stat. -# include // sysconf. -#endif - -#include - -namespace boost { namespace iostreams { - -namespace detail { - -struct mapped_file_impl { - mapped_file_impl() { clear(false); } - ~mapped_file_impl() { try { close(); } catch (std::exception&) { } } - void clear(bool error) - { - data_ = 0; - size_ = 0; - mode_ = BOOST_IOS::openmode(); - error_ = error; - #ifdef BOOST_IOSTREAMS_WINDOWS - handle_ = INVALID_HANDLE_VALUE; - mapped_handle_ = NULL; - #else - handle_ = 0; - #endif - } - void close() - { - bool error = false; - #ifdef BOOST_IOSTREAMS_WINDOWS - if (handle_ == INVALID_HANDLE_VALUE) - return; - error = !::UnmapViewOfFile(data_) || error; - error = !::CloseHandle(mapped_handle_) || error; - error = !::CloseHandle(handle_) || error; - handle_ = INVALID_HANDLE_VALUE; - mapped_handle_ = NULL; - #else - if (!handle_) - return; - error = ::munmap(reinterpret_cast(data_), size_) != 0 || error; - error = ::close(handle_) != 0 || error; - handle_ = 0; - #endif - data_ = 0; - size_ = 0; - mode_ = BOOST_IOS::openmode(); - if (error) - throw_system_failure("error closing mapped file"); - } - char* data_; - std::size_t size_; - BOOST_IOS::openmode mode_; - bool error_; -#ifdef BOOST_IOSTREAMS_WINDOWS - HANDLE handle_; - HANDLE mapped_handle_; -#else - int handle_; -#endif -}; - -} // End namespace detail. - -//------------------Definition of mapped_file_source--------------------------// - -mapped_file_source::mapped_file_source(mapped_file_params p) { open(p); } - -mapped_file_source::mapped_file_source( const std::string& path, - mapped_file_source::size_type length, - boost::intmax_t offset ) -{ open(path, length, offset); } - -void mapped_file_source::open(mapped_file_params p) -{ - p.mode &= ~BOOST_IOS::out; - open_impl(p); -} - -void mapped_file_source::open( const std::string& path, - mapped_file_source::size_type length, - boost::intmax_t offset ) -{ - mapped_file_params p(path); - p.mode = BOOST_IOS::in; - p.length = length; - p.offset = offset; - open_impl(p); -} - -mapped_file_source::size_type mapped_file_source::size() const -{ return pimpl_->size_; } - -bool mapped_file_source::is_open() const -{ return !!pimpl_ && pimpl_->handle_ != 0; } - -void mapped_file_source::close() { pimpl_->close(); } - -mapped_file_source::operator mapped_file_source::safe_bool() const -{ - return !!pimpl_ && pimpl_->error_ == false ? - &safe_bool_helper::x : 0; -} - -bool mapped_file_source::operator!() const -{ return !!pimpl_ || pimpl_->error_; } - -BOOST_IOS::openmode mapped_file_source::mode() const { return pimpl_->mode_; } - -const char* mapped_file_source::data() const { return pimpl_->data_; } - -const char* mapped_file_source::begin() const { return data(); } - -const char* mapped_file_source::end() const { return data() + size(); } - -#ifdef BOOST_IOSTREAMS_WINDOWS //---------------------------------------------// - -namespace detail { - -void cleanup_and_throw(detail::mapped_file_impl& impl, const char* msg) -{ - if (impl.mapped_handle_ != INVALID_HANDLE_VALUE) - ::CloseHandle(impl.mapped_handle_); - if (impl.handle_ != NULL) - ::CloseHandle(impl.handle_); - impl.clear(true); - throw_system_failure(msg); -} - -} // End namespace detail. - -void mapped_file_source::open_impl(mapped_file_params p) -{ - using namespace std; - - if (is_open()) - throw BOOST_IOSTREAMS_FAILURE("file already open"); - if (!pimpl_) - pimpl_.reset(new impl_type); - else - pimpl_->clear(false); - bool readonly = (p.mode & BOOST_IOS::out) == 0; - pimpl_->mode_ = readonly ? BOOST_IOS::in : (BOOST_IOS::in | BOOST_IOS::out); - - //--------------Open underlying file--------------------------------------// - - pimpl_->handle_ = - ::CreateFileA( p.path.c_str(), - readonly ? GENERIC_READ : GENERIC_ALL, - FILE_SHARE_READ, - NULL, - (p.new_file_size != 0 && !readonly) ? - CREATE_ALWAYS : - OPEN_EXISTING, - readonly ? - FILE_ATTRIBUTE_READONLY : - FILE_ATTRIBUTE_TEMPORARY, - NULL ); - - if (pimpl_->handle_ == INVALID_HANDLE_VALUE) - detail::cleanup_and_throw(*pimpl_, "failed opening file"); - - //--------------Set file size---------------------------------------------// - - if (p.new_file_size != 0 && !readonly) { - LONG sizehigh = (p.new_file_size >> (sizeof(LONG) * 8)); - LONG sizelow = (p.new_file_size & 0xffffffff); - ::SetFilePointer(pimpl_->handle_, sizelow, &sizehigh, FILE_BEGIN); - if (::GetLastError() != NO_ERROR || !::SetEndOfFile(pimpl_->handle_)) - detail::cleanup_and_throw(*pimpl_, "failed setting file size"); - } - - //--------------Create mapping--------------------------------------------// - - try_again: // Target of goto in following section. - - pimpl_->mapped_handle_ = - ::CreateFileMappingA( pimpl_->handle_, NULL, - readonly ? PAGE_READONLY : PAGE_READWRITE, - 0, 0, NULL ); - if (pimpl_->mapped_handle_ == NULL) { - detail::cleanup_and_throw(*pimpl_, "couldn't create mapping"); - } - - //--------------Access data-----------------------------------------------// - - void* data = - ::MapViewOfFileEx( pimpl_->mapped_handle_, - readonly ? FILE_MAP_READ : FILE_MAP_WRITE, - (DWORD) (p.offset >> 32), - (DWORD) (p.offset & 0xffffffff), - p.length != max_length ? p.length : 0, (LPVOID) p.hint ); - if (!data) { - if (p.hint != 0) { - p.hint = 0; - goto try_again; - } - detail::cleanup_and_throw(*pimpl_, "failed mapping view"); - } - - //--------------Determing file size---------------------------------------// - - // Dynamically locate GetFileSizeEx (thanks to Pavel Vozenilik). - typedef BOOL (WINAPI *func)(HANDLE, PLARGE_INTEGER); - HMODULE hmod = ::GetModuleHandleA("kernel32.dll"); - func get_size = - reinterpret_cast(::GetProcAddress(hmod, "GetFileSizeEx")); - - if (get_size) { - LARGE_INTEGER info; - if (get_size(pimpl_->handle_, &info)) { - boost::intmax_t size = - ( (static_cast(info.HighPart) << 32) | - info.LowPart ); - pimpl_->size_ = - static_cast( - p.length != max_length ? - std::min(p.length, size) : - size - ); - } else { - detail::cleanup_and_throw(*pimpl_, "failed getting file size"); - return; - } - } else { - DWORD hi; - DWORD low; - if ( (low = ::GetFileSize(pimpl_->handle_, &hi)) - != - INVALID_FILE_SIZE ) - { - boost::intmax_t size = - (static_cast(hi) << 32) | low; - pimpl_->size_ = - static_cast( - p.length != max_length ? - std::min(p.length, size) : - size - ); - } else { - detail::cleanup_and_throw(*pimpl_, "failed getting file size"); - return; - } - } - - pimpl_->data_ = reinterpret_cast(data); -} - -int mapped_file_source::alignment() -{ - SYSTEM_INFO info; - ::GetSystemInfo(&info); - return static_cast(info.dwAllocationGranularity); -} - -#else // #ifdef BOOST_IOSTREAMS_WINDOWS //------------------------------------// - -namespace detail { - -void cleanup_and_throw(detail::mapped_file_impl& impl, const char* msg) -{ - if (impl.handle_ != 0) - ::close(impl.handle_); - impl.clear(true); - throw_system_failure(msg); -} - -} // End namespace detail. - - -void mapped_file_source::open_impl(mapped_file_params p) -{ - using namespace std; - - if (is_open()) - throw BOOST_IOSTREAMS_FAILURE("file already open"); - if (!pimpl_) - pimpl_.reset(new impl_type); - else - pimpl_->clear(false); - bool readonly = (p.mode & BOOST_IOS::out) == 0; - pimpl_->mode_ = readonly ? BOOST_IOS::in : (BOOST_IOS::in | BOOST_IOS::out); - - //--------------Open underlying file--------------------------------------// - - int flags = (readonly ? O_RDONLY : O_RDWR); - if (p.new_file_size != 0 && !readonly) - flags |= (O_CREAT | O_TRUNC); - errno = 0; - pimpl_->handle_ = ::open(p.path.c_str(), flags, S_IRWXU); - if (errno != 0) - detail::cleanup_and_throw(*pimpl_, "failed opening file"); - - //--------------Set file size---------------------------------------------// - - if (p.new_file_size != 0 && !readonly) - if (ftruncate(pimpl_->handle_, p.new_file_size) == -1) - detail::cleanup_and_throw(*pimpl_, "failed setting file size"); - - //--------------Determine file size---------------------------------------// - - bool success = true; - struct stat info; - if (p.length != max_length) - pimpl_->size_ = p.length; - else { - success = ::fstat(pimpl_->handle_, &info) != -1; - pimpl_->size_ = info.st_size; - } - if (!success) - detail::cleanup_and_throw(*pimpl_, "failed getting file size"); - - //--------------Create mapping--------------------------------------------// - - try_again: // Target of goto in following section. - - char* hint = const_cast(p.hint); - void* data = ::mmap( hint, pimpl_->size_, - readonly ? PROT_READ : (PROT_READ | PROT_WRITE), - readonly ? MAP_PRIVATE : MAP_SHARED, - pimpl_->handle_, p.offset ); - if (data == MAP_FAILED) { - if (hint != 0) { - hint = 0; - goto try_again; - } - detail::cleanup_and_throw(*pimpl_, "failed mapping file"); - } - pimpl_->data_ = reinterpret_cast(data); - - return; -} - -int mapped_file_source::alignment() -{ return static_cast(sysconf(_SC_PAGESIZE)); } - -#endif // #ifdef BOOST_IOSTREAMS_WINDOWS //-----------------------------------// - -//------------------Implementation of mapped_file-----------------------------// - -mapped_file::mapped_file(mapped_file_params p) { delegate_.open_impl(p); } - -mapped_file::mapped_file( const std::string& path, BOOST_IOS::openmode mode, - size_type length, stream_offset offset ) -{ open(path, mode, length, offset); } - -void mapped_file::open(mapped_file_params p) -{ delegate_.open_impl(p); } - -void mapped_file::open( const std::string& path, BOOST_IOS::openmode mode, - size_type length, stream_offset offset ) -{ - mapped_file_params p(path); - p.mode = mode; - p.length = length; - p.offset = offset; - open(p); -} - -//------------------Implementation of mapped_file_sink------------------------// - -mapped_file_sink::mapped_file_sink(mapped_file_params p) { open(p); } - -mapped_file_sink::mapped_file_sink( const std::string& path, - size_type length, stream_offset offset ) -{ open(path, length, offset); } - -void mapped_file_sink::open(mapped_file_params p) -{ - p.mode |= BOOST_IOS::out; - p.mode &= ~BOOST_IOS::in; - mapped_file::open(p); -} - -void mapped_file_sink::open( const std::string& path, size_type length, - stream_offset offset ) -{ - mapped_file_params p(path); - p.mode = BOOST_IOS::out; - p.length = length; - p.offset = offset; - open(p); -} - -//----------------------------------------------------------------------------// - -} } // End namespaces iostreams, boost. - -#include diff --git a/boost/libs/iostreams/src/zlib.cpp b/boost/libs/iostreams/src/zlib.cpp deleted file mode 100644 index 65e7aefa84..0000000000 --- a/boost/libs/iostreams/src/zlib.cpp +++ /dev/null @@ -1,190 +0,0 @@ -// (C) Copyright Jonathan Turkanis 2003. -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt.) - -// See http://www.boost.org/libs/iostreams for documentation. - -// To configure Boost to work with zlib, see the -// installation instructions here: -// http://boost.org/libs/iostreams/doc/index.html?path=7 - -// Define BOOST_IOSTREAMS_SOURCE so that -// knows that we are building the library (possibly exporting code), rather -// than using it (possibly importing code). -#define BOOST_IOSTREAMS_SOURCE - -#include -#include -#include "zlib.h" // Jean-loup Gailly's and Mark Adler's "zlib.h" header. - // To configure Boost to work with zlib, see the - // installation instructions here: - // http://boost.org/libs/iostreams/doc/index.html?path=7 - -namespace boost { namespace iostreams { - -namespace zlib { - - // Compression levels - -const int no_compression = Z_NO_COMPRESSION; -const int best_speed = Z_BEST_SPEED; -const int best_compression = Z_BEST_COMPRESSION; -const int default_compression = Z_DEFAULT_COMPRESSION; - - // Compression methods - -const int deflated = Z_DEFLATED; - - // Compression strategies - -const int default_strategy = Z_DEFAULT_STRATEGY; -const int filtered = Z_FILTERED; -const int huffman_only = Z_HUFFMAN_ONLY; - - // Status codes - -const int okay = Z_OK; -const int stream_end = Z_STREAM_END; -const int stream_error = Z_STREAM_ERROR; -const int version_error = Z_VERSION_ERROR; -const int data_error = Z_DATA_ERROR; -const int mem_error = Z_MEM_ERROR; -const int buf_error = Z_BUF_ERROR; - - // Flush codes - -const int finish = Z_FINISH; -const int no_flush = Z_NO_FLUSH; -const int sync_flush = Z_SYNC_FLUSH; - - // Code for current OS - -//const int os_code = OS_CODE; - -} // End namespace zlib. - -//------------------Implementation of zlib_error------------------------------// - -zlib_error::zlib_error(int error) - : BOOST_IOSTREAMS_FAILURE("zlib error"), error_(error) - { } - -void zlib_error::check(int error) -{ - switch (error) { - case Z_OK: - case Z_STREAM_END: - //case Z_BUF_ERROR: - return; - case Z_MEM_ERROR: - throw std::bad_alloc(); - default: - throw zlib_error(error); - ; - } -} - -//------------------Implementation of zlib_base-------------------------------// - -namespace detail { - -zlib_base::zlib_base() - : stream_(new z_stream), calculate_crc_(false), crc_(0) - { } - -zlib_base::~zlib_base() { delete static_cast(stream_); } - -void zlib_base::before( const char*& src_begin, const char* src_end, - char*& dest_begin, char* dest_end ) -{ - z_stream* s = static_cast(stream_); - s->next_in = reinterpret_cast(const_cast(src_begin)); - s->avail_in = static_cast(src_end - src_begin); - s->next_out = reinterpret_cast(dest_begin); - s->avail_out= static_cast(dest_end - dest_begin); -} - -void zlib_base::after(const char*& src_begin, char*& dest_begin, bool compress) -{ - z_stream* s = static_cast(stream_); - char* next_in = reinterpret_cast(s->next_in); - char* next_out = reinterpret_cast(s->next_out); - if (calculate_crc_) { - const zlib::byte* buf = compress ? - reinterpret_cast(src_begin) : - reinterpret_cast( - const_cast(dest_begin) - ); - zlib::uint length = compress ? - static_cast(next_in - src_begin) : - static_cast(next_out - dest_begin); - if (length > 0) - crc_ = crc32(crc_, buf, length); - } - total_in_ = s->total_in; - total_out_ = s->total_out; - src_begin = const_cast(next_in); - dest_begin = next_out; -} - -int zlib_base::deflate(int flush) -{ - return ::deflate(static_cast(stream_), flush); -} - -int zlib_base::inflate(int flush) -{ - return ::inflate(static_cast(stream_), flush); -} - -void zlib_base::reset(bool compress, bool realloc) -{ - z_stream* s = static_cast(stream_); - // Undiagnosed bug: - // deflateReset(), etc., return Z_DATA_ERROR - //zlib_error::check( - realloc ? - (compress ? deflateReset(s) : inflateReset(s)) : - (compress ? deflateEnd(s) : inflateEnd(s)) - ; - //); -} - -void zlib_base::do_init - ( const zlib_params& p, bool compress, - #if !BOOST_WORKAROUND(BOOST_MSVC, < 1300) - zlib::alloc_func /*alloc*/, zlib::free_func /*free*/, - #endif - void* derived ) -{ - calculate_crc_ = p.calculate_crc; - z_stream* s = static_cast(stream_); - - // Current interface for customizing memory management - // is non-conforming and has been disabled: - //#if !BOOST_WORKAROUND(BOOST_MSVC, < 1300) - // s->zalloc = alloc; - // s->zfree = free; - //#else - s->zalloc = 0; - s->zfree = 0; - //#endif - s->opaque = derived; - int window_bits = p.noheader? -p.window_bits : p.window_bits; - zlib_error::check( - compress ? - deflateInit2( s, - p.level, - p.method, - window_bits, - p.mem_level, - p.strategy ) : - inflateInit2(s, window_bits) - ); -} - -} // End namespace detail. - -//----------------------------------------------------------------------------// - -} } // End namespaces iostreams, boost.