summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to '3rdParty/Boost/src/boost/asio/detail/buffer_sequence_adapter.hpp')
-rw-r--r--3rdParty/Boost/src/boost/asio/detail/buffer_sequence_adapter.hpp171
1 files changed, 140 insertions, 31 deletions
diff --git a/3rdParty/Boost/src/boost/asio/detail/buffer_sequence_adapter.hpp b/3rdParty/Boost/src/boost/asio/detail/buffer_sequence_adapter.hpp
index fdda23f..562aa55 100644
--- a/3rdParty/Boost/src/boost/asio/detail/buffer_sequence_adapter.hpp
+++ b/3rdParty/Boost/src/boost/asio/detail/buffer_sequence_adapter.hpp
@@ -2,7 +2,7 @@
// detail/buffer_sequence_adapter.hpp
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// Copyright (c) 2003-2012 Christopher M. Kohlhoff (chris at kohlhoff dot com)
//
// 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)
@@ -17,6 +17,7 @@
#include <boost/asio/detail/config.hpp>
#include <boost/asio/buffer.hpp>
+#include <boost/asio/detail/array_fwd.hpp>
#include <boost/asio/detail/socket_types.hpp>
#include <boost/asio/detail/push_options.hpp>
@@ -81,11 +82,11 @@ class buffer_sequence_adapter
: buffer_sequence_adapter_base
{
public:
- explicit buffer_sequence_adapter(const Buffers& buffers)
+ explicit buffer_sequence_adapter(const Buffers& buffer_sequence)
: count_(0), total_buffer_size_(0)
{
- typename Buffers::const_iterator iter = buffers.begin();
- typename Buffers::const_iterator end = buffers.end();
+ typename Buffers::const_iterator iter = buffer_sequence.begin();
+ typename Buffers::const_iterator end = buffer_sequence.end();
for (; iter != end && count_ < max_buffers; ++iter, ++count_)
{
Buffer buffer(*iter);
@@ -109,10 +110,10 @@ public:
return total_buffer_size_ == 0;
}
- static bool all_empty(const Buffers& buffers)
+ static bool all_empty(const Buffers& buffer_sequence)
{
- typename Buffers::const_iterator iter = buffers.begin();
- typename Buffers::const_iterator end = buffers.end();
+ typename Buffers::const_iterator iter = buffer_sequence.begin();
+ typename Buffers::const_iterator end = buffer_sequence.end();
std::size_t i = 0;
for (; iter != end && i < max_buffers; ++iter, ++i)
if (boost::asio::buffer_size(Buffer(*iter)) > 0)
@@ -120,10 +121,10 @@ public:
return true;
}
- static void validate(const Buffers& buffers)
+ static void validate(const Buffers& buffer_sequence)
{
- typename Buffers::const_iterator iter = buffers.begin();
- typename Buffers::const_iterator end = buffers.end();
+ typename Buffers::const_iterator iter = buffer_sequence.begin();
+ typename Buffers::const_iterator end = buffer_sequence.end();
for (; iter != end; ++iter)
{
Buffer buffer(*iter);
@@ -131,10 +132,10 @@ public:
}
}
- static Buffer first(const Buffers& buffers)
+ static Buffer first(const Buffers& buffer_sequence)
{
- typename Buffers::const_iterator iter = buffers.begin();
- typename Buffers::const_iterator end = buffers.end();
+ typename Buffers::const_iterator iter = buffer_sequence.begin();
+ typename Buffers::const_iterator end = buffer_sequence.end();
for (; iter != end; ++iter)
{
Buffer buffer(*iter);
@@ -159,10 +160,10 @@ class buffer_sequence_adapter<Buffer, boost::asio::mutable_buffers_1>
{
public:
explicit buffer_sequence_adapter(
- const boost::asio::mutable_buffers_1& buffers)
+ const boost::asio::mutable_buffers_1& buffer_sequence)
{
- init_native_buffer(buffer_, Buffer(buffers));
- total_buffer_size_ = boost::asio::buffer_size(buffers);
+ init_native_buffer(buffer_, Buffer(buffer_sequence));
+ total_buffer_size_ = boost::asio::buffer_size(buffer_sequence);
}
native_buffer_type* buffers()
@@ -180,19 +181,19 @@ public:
return total_buffer_size_ == 0;
}
- static bool all_empty(const boost::asio::mutable_buffers_1& buffers)
+ static bool all_empty(const boost::asio::mutable_buffers_1& buffer_sequence)
{
- return boost::asio::buffer_size(buffers) == 0;
+ return boost::asio::buffer_size(buffer_sequence) == 0;
}
- static void validate(const boost::asio::mutable_buffers_1& buffers)
+ static void validate(const boost::asio::mutable_buffers_1& buffer_sequence)
{
- boost::asio::buffer_cast<const void*>(buffers);
+ boost::asio::buffer_cast<const void*>(buffer_sequence);
}
- static Buffer first(const boost::asio::mutable_buffers_1& buffers)
+ static Buffer first(const boost::asio::mutable_buffers_1& buffer_sequence)
{
- return Buffer(buffers);
+ return Buffer(buffer_sequence);
}
private:
@@ -206,10 +207,10 @@ class buffer_sequence_adapter<Buffer, boost::asio::const_buffers_1>
{
public:
explicit buffer_sequence_adapter(
- const boost::asio::const_buffers_1& buffers)
+ const boost::asio::const_buffers_1& buffer_sequence)
{
- init_native_buffer(buffer_, Buffer(buffers));
- total_buffer_size_ = boost::asio::buffer_size(buffers);
+ init_native_buffer(buffer_, Buffer(buffer_sequence));
+ total_buffer_size_ = boost::asio::buffer_size(buffer_sequence);
}
native_buffer_type* buffers()
@@ -227,19 +228,19 @@ public:
return total_buffer_size_ == 0;
}
- static bool all_empty(const boost::asio::const_buffers_1& buffers)
+ static bool all_empty(const boost::asio::const_buffers_1& buffer_sequence)
{
- return boost::asio::buffer_size(buffers) == 0;
+ return boost::asio::buffer_size(buffer_sequence) == 0;
}
- static void validate(const boost::asio::const_buffers_1& buffers)
+ static void validate(const boost::asio::const_buffers_1& buffer_sequence)
{
- boost::asio::buffer_cast<const void*>(buffers);
+ boost::asio::buffer_cast<const void*>(buffer_sequence);
}
- static Buffer first(const boost::asio::const_buffers_1& buffers)
+ static Buffer first(const boost::asio::const_buffers_1& buffer_sequence)
{
- return Buffer(buffers);
+ return Buffer(buffer_sequence);
}
private:
@@ -247,6 +248,114 @@ private:
std::size_t total_buffer_size_;
};
+template <typename Buffer, typename Elem>
+class buffer_sequence_adapter<Buffer, boost::array<Elem, 2> >
+ : buffer_sequence_adapter_base
+{
+public:
+ explicit buffer_sequence_adapter(
+ const boost::array<Elem, 2>& buffer_sequence)
+ {
+ init_native_buffer(buffers_[0], Buffer(buffer_sequence[0]));
+ init_native_buffer(buffers_[1], Buffer(buffer_sequence[1]));
+ total_buffer_size_ = boost::asio::buffer_size(buffer_sequence[0])
+ + boost::asio::buffer_size(buffer_sequence[1]);
+ }
+
+ native_buffer_type* buffers()
+ {
+ return buffers_;
+ }
+
+ std::size_t count() const
+ {
+ return 2;
+ }
+
+ bool all_empty() const
+ {
+ return total_buffer_size_ == 0;
+ }
+
+ static bool all_empty(const boost::array<Elem, 2>& buffer_sequence)
+ {
+ return boost::asio::buffer_size(buffer_sequence[0]) == 0
+ && boost::asio::buffer_size(buffer_sequence[1]) == 0;
+ }
+
+ static void validate(const boost::array<Elem, 2>& buffer_sequence)
+ {
+ boost::asio::buffer_cast<const void*>(buffer_sequence[0]);
+ boost::asio::buffer_cast<const void*>(buffer_sequence[1]);
+ }
+
+ static Buffer first(const boost::array<Elem, 2>& buffer_sequence)
+ {
+ return Buffer(boost::asio::buffer_size(buffer_sequence[0]) != 0
+ ? buffer_sequence[0] : buffer_sequence[1]);
+ }
+
+private:
+ native_buffer_type buffers_[2];
+ std::size_t total_buffer_size_;
+};
+
+#if defined(BOOST_ASIO_HAS_STD_ARRAY)
+
+template <typename Buffer, typename Elem>
+class buffer_sequence_adapter<Buffer, std::array<Elem, 2> >
+ : buffer_sequence_adapter_base
+{
+public:
+ explicit buffer_sequence_adapter(
+ const std::array<Elem, 2>& buffer_sequence)
+ {
+ init_native_buffer(buffers_[0], Buffer(buffer_sequence[0]));
+ init_native_buffer(buffers_[1], Buffer(buffer_sequence[1]));
+ total_buffer_size_ = boost::asio::buffer_size(buffer_sequence[0])
+ + boost::asio::buffer_size(buffer_sequence[1]);
+ }
+
+ native_buffer_type* buffers()
+ {
+ return buffers_;
+ }
+
+ std::size_t count() const
+ {
+ return 2;
+ }
+
+ bool all_empty() const
+ {
+ return total_buffer_size_ == 0;
+ }
+
+ static bool all_empty(const std::array<Elem, 2>& buffer_sequence)
+ {
+ return boost::asio::buffer_size(buffer_sequence[0]) == 0
+ && boost::asio::buffer_size(buffer_sequence[1]) == 0;
+ }
+
+ static void validate(const std::array<Elem, 2>& buffer_sequence)
+ {
+ boost::asio::buffer_cast<const void*>(buffer_sequence[0]);
+ boost::asio::buffer_cast<const void*>(buffer_sequence[1]);
+ }
+
+ static Buffer first(const std::array<Elem, 2>& buffer_sequence)
+ {
+ return Buffer(boost::asio::buffer_size(buffer_sequence[0]) != 0
+ ? buffer_sequence[0] : buffer_sequence[1]);
+ }
+
+private:
+ native_buffer_type buffers_[2];
+ std::size_t total_buffer_size_;
+};
+
+#endif // defined(BOOST_ASIO_HAS_STD_ARRAY)
+
} // namespace detail
} // namespace asio
} // namespace boost