mirror of
https://github.com/boostorg/asio.git
synced 2026-01-31 07:42:10 +00:00
........ r54373 | chris_kohlhoff | 2009-06-26 21:03:14 +1000 (Fri, 26 Jun 2009) | 2 lines Fix doc generation for array reference parameters. ........ r54376 | chris_kohlhoff | 2009-06-26 23:35:04 +1000 (Fri, 26 Jun 2009) | 2 lines Fix bug in hash resize. Ref #3095. ........ r54377 | chris_kohlhoff | 2009-06-26 23:55:24 +1000 (Fri, 26 Jun 2009) | 3 lines Remove a local variable that was hiding the ec parameter and preventing error codes from being correctly propagated. Ref #3216. ........ r54390 | chris_kohlhoff | 2009-06-27 12:17:49 +1000 (Sat, 27 Jun 2009) | 2 lines Fix failures reported when the tests are built with _GLIBCXX_DEBUG. Ref #3098. ........ r54392 | chris_kohlhoff | 2009-06-27 15:24:16 +1000 (Sat, 27 Jun 2009) | 2 lines Fix custom memory allocation for timers. Ref #3107. ........ r54393 | chris_kohlhoff | 2009-06-27 17:07:40 +1000 (Sat, 27 Jun 2009) | 2 lines Fix various g++ warnings. Ref #1341. ........ r54400 | chris_kohlhoff | 2009-06-27 17:52:11 +1000 (Sat, 27 Jun 2009) | 4 lines Use boost::throw_exception() rather than throw keyword to allow asio to be used when exception support is disabled. Note that the SSL wrappers still require exception support. Refs #2754. ........ r54407 | chris_kohlhoff | 2009-06-27 19:13:24 +1000 (Sat, 27 Jun 2009) | 2 lines Make links to function overloads more obvious. ........ r54466 | chris_kohlhoff | 2009-06-28 23:07:43 +1000 (Sun, 28 Jun 2009) | 2 lines Add header file information to reference docs. Refs #3157. ........ r54467 | chris_kohlhoff | 2009-06-28 23:20:17 +1000 (Sun, 28 Jun 2009) | 4 lines Treat 0-byte reads and writes as no-ops to comply with the documented type requirements for SyncReadStream, AsyncReadStream, SyncWriteStream and AsyncWriteStream. ........ r54498 | chris_kohlhoff | 2009-06-29 19:32:41 +1000 (Mon, 29 Jun 2009) | 2 lines Add enum values to doc index. Refs #2620. ........ [SVN r54499]
243 lines
7.5 KiB
C++
243 lines
7.5 KiB
C++
//
|
|
// buffers_iterator.cpp
|
|
// ~~~~~~~~~~~~~~~~~~~~
|
|
//
|
|
// Copyright (c) 2003-2008 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)
|
|
//
|
|
|
|
// Disable autolinking for unit tests.
|
|
#if !defined(BOOST_ALL_NO_LIB)
|
|
#define BOOST_ALL_NO_LIB 1
|
|
#endif // !defined(BOOST_ALL_NO_LIB)
|
|
|
|
// Test that header file is self-contained.
|
|
#include <boost/asio/buffers_iterator.hpp>
|
|
|
|
#include <boost/asio.hpp>
|
|
#include "unit_test.hpp"
|
|
|
|
//------------------------------------------------------------------------------
|
|
|
|
// buffers_iterator_compile test
|
|
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
// The following test checks that all operations on the buffers_iterator compile
|
|
// and link correctly. Runtime failures are ignored.
|
|
|
|
namespace buffers_iterator_compile {
|
|
|
|
using boost::array;
|
|
using std::vector;
|
|
using namespace boost::asio;
|
|
|
|
void test()
|
|
{
|
|
try
|
|
{
|
|
char data1[16], data2[16];
|
|
const char cdata1[16] = "", cdata2[16] = "";
|
|
mutable_buffers_1 mb1 = buffer(data1);
|
|
array<mutable_buffer, 2> mb2 = {{ buffer(data1), buffer(data2) }};
|
|
std::vector<mutable_buffer> mb3;
|
|
mb3.push_back(buffer(data1));
|
|
const_buffers_1 cb1 = buffer(cdata1);
|
|
array<const_buffer, 2> cb2 = {{ buffer(cdata1), buffer(cdata2) }};
|
|
vector<const_buffer> cb3;
|
|
cb3.push_back(buffer(cdata1));
|
|
|
|
|
|
// buffers_iterator constructors.
|
|
|
|
buffers_iterator<mutable_buffers_1, char> bi1;
|
|
buffers_iterator<mutable_buffers_1, const char> bi2;
|
|
buffers_iterator<array<mutable_buffer, 2>, char> bi3;
|
|
buffers_iterator<array<mutable_buffer, 2>, const char> bi4;
|
|
buffers_iterator<vector<mutable_buffer>, char> bi5;
|
|
buffers_iterator<vector<mutable_buffer>, const char> bi6;
|
|
buffers_iterator<const_buffers_1, char> bi7;
|
|
buffers_iterator<const_buffers_1, const char> bi8;
|
|
buffers_iterator<array<const_buffer, 2>, char> bi9;
|
|
buffers_iterator<array<const_buffer, 2>, const char> bi10;
|
|
buffers_iterator<vector<const_buffer>, char> bi11;
|
|
buffers_iterator<vector<const_buffer>, const char> bi12;
|
|
|
|
buffers_iterator<mutable_buffers_1, char> bi13(
|
|
buffers_iterator<mutable_buffers_1, char>::begin(mb1));
|
|
buffers_iterator<mutable_buffers_1, const char> bi14(
|
|
buffers_iterator<mutable_buffers_1, const char>::begin(mb1));
|
|
buffers_iterator<array<mutable_buffer, 2>, char> bi15(
|
|
buffers_iterator<array<mutable_buffer, 2>, char>::begin(mb2));
|
|
buffers_iterator<array<mutable_buffer, 2>, const char> bi16(
|
|
buffers_iterator<array<mutable_buffer, 2>, const char>::begin(mb2));
|
|
buffers_iterator<vector<mutable_buffer>, char> bi17(
|
|
buffers_iterator<vector<mutable_buffer>, char>::begin(mb3));
|
|
buffers_iterator<vector<mutable_buffer>, const char> bi18(
|
|
buffers_iterator<vector<mutable_buffer>, const char>::begin(mb3));
|
|
buffers_iterator<const_buffers_1, char> bi19(
|
|
buffers_iterator<const_buffers_1, char>::begin(cb1));
|
|
buffers_iterator<const_buffers_1, const char> bi20(
|
|
buffers_iterator<const_buffers_1, const char>::begin(cb1));
|
|
buffers_iterator<array<const_buffer, 2>, char> bi21(
|
|
buffers_iterator<array<const_buffer, 2>, char>::begin(cb2));
|
|
buffers_iterator<array<const_buffer, 2>, const char> bi22(
|
|
buffers_iterator<array<const_buffer, 2>, const char>::begin(cb2));
|
|
buffers_iterator<vector<const_buffer>, char> bi23(
|
|
buffers_iterator<vector<const_buffer>, char>::begin(cb3));
|
|
buffers_iterator<vector<const_buffer>, const char> bi24(
|
|
buffers_iterator<vector<const_buffer>, const char>::begin(cb3));
|
|
|
|
// buffers_iterator member functions.
|
|
|
|
bi1 = buffers_iterator<mutable_buffers_1, char>::begin(mb1);
|
|
bi2 = buffers_iterator<mutable_buffers_1, const char>::begin(mb1);
|
|
bi3 = buffers_iterator<array<mutable_buffer, 2>, char>::begin(mb2);
|
|
bi4 = buffers_iterator<array<mutable_buffer, 2>, const char>::begin(mb2);
|
|
bi5 = buffers_iterator<vector<mutable_buffer>, char>::begin(mb3);
|
|
bi6 = buffers_iterator<vector<mutable_buffer>, const char>::begin(mb3);
|
|
bi7 = buffers_iterator<const_buffers_1, char>::begin(cb1);
|
|
bi8 = buffers_iterator<const_buffers_1, const char>::begin(cb1);
|
|
bi9 = buffers_iterator<array<const_buffer, 2>, char>::begin(cb2);
|
|
bi10 = buffers_iterator<array<const_buffer, 2>, const char>::begin(cb2);
|
|
bi11 = buffers_iterator<vector<const_buffer>, char>::begin(cb3);
|
|
bi12 = buffers_iterator<vector<const_buffer>, const char>::begin(cb3);
|
|
|
|
bi1 = buffers_iterator<mutable_buffers_1, char>::end(mb1);
|
|
bi2 = buffers_iterator<mutable_buffers_1, const char>::end(mb1);
|
|
bi3 = buffers_iterator<array<mutable_buffer, 2>, char>::end(mb2);
|
|
bi4 = buffers_iterator<array<mutable_buffer, 2>, const char>::end(mb2);
|
|
bi5 = buffers_iterator<vector<mutable_buffer>, char>::end(mb3);
|
|
bi6 = buffers_iterator<vector<mutable_buffer>, const char>::end(mb3);
|
|
bi7 = buffers_iterator<const_buffers_1, char>::end(cb1);
|
|
bi8 = buffers_iterator<const_buffers_1, const char>::end(cb1);
|
|
bi9 = buffers_iterator<array<const_buffer, 2>, char>::end(cb2);
|
|
bi10 = buffers_iterator<array<const_buffer, 2>, const char>::end(cb2);
|
|
bi11 = buffers_iterator<vector<const_buffer>, char>::end(cb3);
|
|
bi12 = buffers_iterator<vector<const_buffer>, const char>::end(cb3);
|
|
|
|
// buffers_iterator related functions.
|
|
|
|
bi1 = buffers_begin(mb1);
|
|
bi3 = buffers_begin(mb2);
|
|
bi5 = buffers_begin(mb3);
|
|
bi7 = buffers_begin(cb1);
|
|
bi9 = buffers_begin(cb2);
|
|
bi11 = buffers_begin(cb3);
|
|
|
|
bi1 = buffers_end(mb1);
|
|
bi3 = buffers_end(mb2);
|
|
bi5 = buffers_end(mb3);
|
|
bi7 = buffers_end(cb1);
|
|
bi9 = buffers_end(cb2);
|
|
bi11 = buffers_end(cb3);
|
|
|
|
// RandomAccessIterator operations.
|
|
|
|
--bi1;
|
|
--bi2;
|
|
--bi3;
|
|
--bi4;
|
|
--bi5;
|
|
--bi6;
|
|
--bi7;
|
|
--bi8;
|
|
--bi9;
|
|
--bi10;
|
|
--bi11;
|
|
--bi12;
|
|
|
|
++bi1;
|
|
++bi2;
|
|
++bi3;
|
|
++bi4;
|
|
++bi5;
|
|
++bi6;
|
|
++bi7;
|
|
++bi8;
|
|
++bi9;
|
|
++bi10;
|
|
++bi11;
|
|
++bi12;
|
|
|
|
bi1--;
|
|
bi2--;
|
|
bi3--;
|
|
bi4--;
|
|
bi5--;
|
|
bi6--;
|
|
bi7--;
|
|
bi8--;
|
|
bi9--;
|
|
bi10--;
|
|
bi11--;
|
|
bi12--;
|
|
|
|
bi1++;
|
|
bi2++;
|
|
bi3++;
|
|
bi4++;
|
|
bi5++;
|
|
bi6++;
|
|
bi7++;
|
|
bi8++;
|
|
bi9++;
|
|
bi10++;
|
|
bi11++;
|
|
bi12++;
|
|
|
|
bi1 -= 1;
|
|
bi2 -= 1;
|
|
bi3 -= 1;
|
|
bi4 -= 1;
|
|
bi5 -= 1;
|
|
bi6 -= 1;
|
|
bi7 -= 1;
|
|
bi8 -= 1;
|
|
bi9 -= 1;
|
|
bi10 -= 1;
|
|
bi11 -= 1;
|
|
bi12 -= 1;
|
|
|
|
bi1 += 1;
|
|
bi2 += 1;
|
|
bi3 += 1;
|
|
bi4 += 1;
|
|
bi5 += 1;
|
|
bi6 += 1;
|
|
bi7 += 1;
|
|
bi8 += 1;
|
|
bi9 += 1;
|
|
bi10 += 1;
|
|
bi11 += 1;
|
|
bi12 += 1;
|
|
|
|
static_cast<std::ptrdiff_t>(bi13 - bi1);
|
|
static_cast<std::ptrdiff_t>(bi14 - bi2);
|
|
static_cast<std::ptrdiff_t>(bi15 - bi3);
|
|
static_cast<std::ptrdiff_t>(bi16 - bi4);
|
|
static_cast<std::ptrdiff_t>(bi17 - bi5);
|
|
static_cast<std::ptrdiff_t>(bi18 - bi6);
|
|
static_cast<std::ptrdiff_t>(bi19 - bi7);
|
|
static_cast<std::ptrdiff_t>(bi20 - bi8);
|
|
static_cast<std::ptrdiff_t>(bi21 - bi9);
|
|
static_cast<std::ptrdiff_t>(bi22 - bi10);
|
|
static_cast<std::ptrdiff_t>(bi23 - bi11);
|
|
static_cast<std::ptrdiff_t>(bi24 - bi12);
|
|
}
|
|
catch (std::exception&)
|
|
{
|
|
}
|
|
}
|
|
|
|
} // namespace buffers_iterator_compile
|
|
|
|
//------------------------------------------------------------------------------
|
|
|
|
test_suite* init_unit_test_suite(int, char*[])
|
|
{
|
|
test_suite* test = BOOST_TEST_SUITE("buffers_iterator");
|
|
test->add(BOOST_TEST_CASE(&buffers_iterator_compile::test));
|
|
return test;
|
|
}
|