]> git.proxmox.com Git - ceph.git/blame - ceph/src/Beast/test/core/buffer_test.hpp
bump version to 12.2.2-pve1
[ceph.git] / ceph / src / Beast / test / core / buffer_test.hpp
CommitLineData
7c673cae
FG
1//
2// Copyright (c) 2013-2017 Vinnie Falco (vinnie dot falco at gmail dot com)
3//
4// Distributed under the Boost Software License, Version 1.0. (See accompanying
5// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
6//
7
8#ifndef BEAST_TEST_BUFFER_TEST_HPP
9#define BEAST_TEST_BUFFER_TEST_HPP
10
11#include <beast/core/buffer_concepts.hpp>
12#include <boost/asio/buffer.hpp>
13#include <algorithm>
14#include <type_traits>
15
16namespace beast {
17namespace test {
18
19template<class ConstBufferSequence>
20typename std::enable_if<
21 is_ConstBufferSequence<ConstBufferSequence>::value,
22 std::size_t>::type
23buffer_count(ConstBufferSequence const& buffers)
24{
25 return std::distance(buffers.begin(), buffers.end());
26}
27
28template<class ConstBufferSequence>
29typename std::enable_if<
30 is_ConstBufferSequence<ConstBufferSequence>::value,
31 std::size_t>::type
32size_pre(ConstBufferSequence const& buffers)
33{
34 std::size_t n = 0;
35 for(auto it = buffers.begin(); it != buffers.end(); ++it)
36 {
37 typename ConstBufferSequence::const_iterator it0(std::move(it));
38 typename ConstBufferSequence::const_iterator it1(it0);
39 typename ConstBufferSequence::const_iterator it2;
40 it2 = it1;
41 n += boost::asio::buffer_size(*it2);
42 it = std::move(it2);
43 }
44 return n;
45}
46
47template<class ConstBufferSequence>
48typename std::enable_if<
49 is_ConstBufferSequence<ConstBufferSequence>::value,
50 std::size_t>::type
51size_post(ConstBufferSequence const& buffers)
52{
53 std::size_t n = 0;
54 for(auto it = buffers.begin(); it != buffers.end(); it++)
55 n += boost::asio::buffer_size(*it);
56 return n;
57}
58
59template<class ConstBufferSequence>
60typename std::enable_if<
61 is_ConstBufferSequence<ConstBufferSequence>::value,
62 std::size_t>::type
63size_rev_pre(ConstBufferSequence const& buffers)
64{
65 std::size_t n = 0;
66 for(auto it = buffers.end(); it != buffers.begin();)
67 n += boost::asio::buffer_size(*--it);
68 return n;
69}
70
71template<class ConstBufferSequence>
72typename std::enable_if<
73 is_ConstBufferSequence<ConstBufferSequence>::value,
74 std::size_t>::type
75size_rev_post(ConstBufferSequence const& buffers)
76{
77 std::size_t n = 0;
78 for(auto it = buffers.end(); it != buffers.begin();)
79 {
80 it--;
81 n += boost::asio::buffer_size(*it);
82 }
83 return n;
84}
85
86} // test
87} // beast
88
89#endif