Line data Source code
1 : //
2 : // Copyright (c) 2023 Vinnie Falco (vinnie.falco@gmail.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 : // Official repository: https://github.com/cppalliance/buffers
8 : //
9 :
10 : #ifndef BOOST_BUFFERS_MAKE_BUFFER_HPP
11 : #define BOOST_BUFFERS_MAKE_BUFFER_HPP
12 :
13 : #include <boost/buffers/detail/config.hpp>
14 : #include <boost/buffers/buffer.hpp>
15 : #include <cstdlib>
16 : #include <type_traits>
17 :
18 : #ifdef _MSC_VER
19 : #pragma warning(push)
20 : #pragma warning(disable: 4459)
21 : #endif
22 :
23 : namespace boost {
24 : namespace buffers {
25 :
26 : /** Return a buffer.
27 : */
28 : inline
29 : mutable_buffer
30 1 : make_buffer(
31 : mutable_buffer const& b) noexcept
32 : {
33 1 : return b;
34 : }
35 :
36 : /** Return a buffer.
37 : */
38 : inline
39 : mutable_buffer
40 1 : make_buffer(
41 : void* data,
42 : std::size_t size) noexcept
43 : {
44 1 : return mutable_buffer(data, size);
45 : }
46 :
47 : /** Return a buffer.
48 : */
49 : inline
50 : const_buffer
51 1 : make_buffer(
52 : const_buffer const& b) noexcept
53 : {
54 1 : return b;
55 : }
56 :
57 : /** Return a buffer.
58 : */
59 : inline
60 : const_buffer
61 16419 : make_buffer(
62 : void const* data,
63 : std::size_t size) noexcept
64 : {
65 16419 : return const_buffer(data, size);
66 : }
67 :
68 : /** Return a buffer.
69 : */
70 : template<
71 : class T, std::size_t N
72 : , class = typename std::enable_if<
73 : std::is_trivially_copyable<T>::value>::type
74 : >
75 : mutable_buffer
76 1 : make_buffer(
77 : T (&data)[N]) noexcept
78 : {
79 1 : return mutable_buffer(
80 1 : data, N * sizeof(T));
81 : }
82 :
83 : /** Return a buffer.
84 : */
85 : template<
86 : class T, std::size_t N
87 : , class = typename std::enable_if<
88 : std::is_trivially_copyable<T>::value>::type
89 : >
90 : const_buffer
91 1 : make_buffer(
92 : T const (&data)[N]) noexcept
93 : {
94 1 : return const_buffer(
95 1 : data, N * sizeof(T));
96 : }
97 :
98 : } // buffers
99 : } // boost
100 :
101 : #ifdef _MSC_VER
102 : #pragma warning(pop)
103 : #endif
104 :
105 : #endif
|