]>
git.proxmox.com Git - ceph.git/blob - ceph/src/boost/libs/hana/test/detail/preprocessor.cpp
1 // Copyright Louis Dionne 2013-2016
2 // Distributed under the Boost Software License, Version 1.0.
3 // (See accompanying file LICENSE.md or copy at http://boost.org/LICENSE_1_0.txt)
5 #include <boost/hana/assert.hpp>
6 #include <boost/hana/detail/preprocessor.hpp>
12 //////////////////////////////////////////////////////////////////////////////
13 // BOOST_HANA_PP_CONCAT
14 //////////////////////////////////////////////////////////////////////////////
15 static_assert(BOOST_HANA_PP_CONCAT(1, 2) == 12, "");
18 //////////////////////////////////////////////////////////////////////////////
20 //////////////////////////////////////////////////////////////////////////////
21 static_assert(BOOST_HANA_PP_NARG(x
) == 1, "");
22 static_assert(BOOST_HANA_PP_NARG(x
, x
) == 2, "");
23 static_assert(BOOST_HANA_PP_NARG(x
, x
, x
) == 3, "");
24 static_assert(BOOST_HANA_PP_NARG(x
, x
, x
, x
) == 4, "");
25 static_assert(BOOST_HANA_PP_NARG(
26 x
, x
, x
, x
, x
, x
, x
, x
, x
, x
,
27 x
, x
, x
, x
, x
, x
, x
, x
, x
, x
,
28 x
, x
, x
, x
, x
, x
, x
, x
, x
, x
,
29 x
, x
, x
, x
, x
, x
, x
, x
, x
, x
,
30 x
, x
, x
, x
, x
, x
, x
, x
, x
, x
,
31 x
, x
, x
, x
, x
, x
, x
, x
, x
, x
) == 60, "");
33 static_assert(BOOST_HANA_PP_NARG(
34 x
, x
, x
, x
, x
, x
, x
, x
, x
, x
,
35 x
, x
, x
, x
, x
, x
, x
, x
, x
, x
,
36 x
, x
, x
, x
, x
, x
, x
, x
, x
, x
,
37 x
, x
, x
, x
, x
, x
, x
, x
, x
, x
,
38 x
, x
, x
, x
, x
, x
, x
, x
, x
, x
,
39 x
, x
, x
, x
, x
, x
, x
, x
, x
, x
,
42 static_assert(BOOST_HANA_PP_NARG(
43 x
, x
, x
, x
, x
, x
, x
, x
, x
, x
,
44 x
, x
, x
, x
, x
, x
, x
, x
, x
, x
,
45 x
, x
, x
, x
, x
, x
, x
, x
, x
, x
,
46 x
, x
, x
, x
, x
, x
, x
, x
, x
, x
,
47 x
, x
, x
, x
, x
, x
, x
, x
, x
, x
,
48 x
, x
, x
, x
, x
, x
, x
, x
, x
, x
,
51 static_assert(BOOST_HANA_PP_NARG(
52 x
, x
, x
, x
, x
, x
, x
, x
, x
, x
,
53 x
, x
, x
, x
, x
, x
, x
, x
, x
, x
,
54 x
, x
, x
, x
, x
, x
, x
, x
, x
, x
,
55 x
, x
, x
, x
, x
, x
, x
, x
, x
, x
,
56 x
, x
, x
, x
, x
, x
, x
, x
, x
, x
,
57 x
, x
, x
, x
, x
, x
, x
, x
, x
, x
,
60 static_assert(BOOST_HANA_PP_NARG(
61 x
, x
, x
, x
, x
, x
, x
, x
, x
, x
,
62 x
, x
, x
, x
, x
, x
, x
, x
, x
, x
,
63 x
, x
, x
, x
, x
, x
, x
, x
, x
, x
,
64 x
, x
, x
, x
, x
, x
, x
, x
, x
, x
,
65 x
, x
, x
, x
, x
, x
, x
, x
, x
, x
,
66 x
, x
, x
, x
, x
, x
, x
, x
, x
, x
,
67 x
, x
, x
, x
) == 64, "");
70 //////////////////////////////////////////////////////////////////////////////
72 //////////////////////////////////////////////////////////////////////////////
73 static_assert(BOOST_HANA_PP_BACK(0) == 0, "");
74 static_assert(BOOST_HANA_PP_BACK(0, 1) == 1, "");
75 static_assert(BOOST_HANA_PP_BACK(0, 1, 2) == 2, "");
76 static_assert(BOOST_HANA_PP_BACK(0, 1, 2, 3) == 3, "");
78 static_assert(BOOST_HANA_PP_BACK(0, 1, 2, 3, 4, 5, 6, 6, 8, 9,
79 10, 11, 12, 13, 14, 15, 16, 16, 18) == 18, "");
81 static_assert(BOOST_HANA_PP_BACK(0, 1, 2, 3, 4, 5, 6, 6, 8, 9,
82 10, 11, 12, 13, 14, 15, 16, 16, 18, 19) == 19, "");
84 //////////////////////////////////////////////////////////////////////////////
85 // BOOST_HANA_PP_FRONT
86 //////////////////////////////////////////////////////////////////////////////
87 static_assert(BOOST_HANA_PP_FRONT(0) == 0, "");
88 static_assert(BOOST_HANA_PP_FRONT(0, 1) == 0, "");
89 static_assert(BOOST_HANA_PP_FRONT(0, 1, 2) == 0, "");
90 static_assert(BOOST_HANA_PP_FRONT(0, 1, 2, 3) == 0, "");
92 static_assert(BOOST_HANA_PP_FRONT(0, 1, 2, 3, 4, 5, 6, 6, 8, 9,
93 10, 11, 12, 13, 14, 15, 16, 16, 18) == 0, "");
95 static_assert(BOOST_HANA_PP_FRONT(0, 1, 2, 3, 4, 5, 6, 6, 8, 9,
96 10, 11, 12, 13, 14, 15, 16, 16, 18, 19) == 0, "");
100 using Vector
= std::vector
<int>;
102 //////////////////////////////////////////////////////////////////////////
103 // BOOST_HANA_PP_STRINGIZE
104 //////////////////////////////////////////////////////////////////////////
106 constexpr char const* xyz
= BOOST_HANA_PP_STRINGIZE(xyz
);
107 BOOST_HANA_RUNTIME_CHECK(std::string
{xyz
} == "xyz");
109 constexpr char const* xyz
= BOOST_HANA_PP_STRINGIZE(foo
{bar
, baz
});
110 BOOST_HANA_RUNTIME_CHECK(std::string
{xyz
} == "foo{bar, baz}");
112 constexpr char const* xyz
= BOOST_HANA_PP_STRINGIZE(foo
, bar
, baz
);
113 BOOST_HANA_RUNTIME_CHECK(std::string
{xyz
} == "foo, bar, baz");
116 //////////////////////////////////////////////////////////////////////////
117 // BOOST_HANA_PP_DROP_BACK
118 //////////////////////////////////////////////////////////////////////////
120 Vector args
= {BOOST_HANA_PP_DROP_BACK(0)};
121 BOOST_HANA_RUNTIME_CHECK(args
.empty());
123 Vector args
= {BOOST_HANA_PP_DROP_BACK(0, 1)};
124 BOOST_HANA_RUNTIME_CHECK(args
== Vector
{0});
126 Vector args
= {BOOST_HANA_PP_DROP_BACK(0, 1, 2)};
127 BOOST_HANA_RUNTIME_CHECK(args
== Vector
{0, 1});
129 Vector args
= {BOOST_HANA_PP_DROP_BACK(0, 1, 2, 3)};
130 BOOST_HANA_RUNTIME_CHECK(args
== Vector
{0, 1, 2});
132 Vector args
= {BOOST_HANA_PP_DROP_BACK(0, 1, 2, 3, 4)};
133 BOOST_HANA_RUNTIME_CHECK(args
== Vector
{0, 1, 2, 3});
135 Vector args
= {BOOST_HANA_PP_DROP_BACK(
136 0, 1, 2, 3, 4, 5, 6, 6, 8, 9,
137 10, 11, 12, 13, 14, 15, 16, 16, 18
139 BOOST_HANA_RUNTIME_CHECK(args
== Vector
{
140 0, 1, 2, 3, 4, 5, 6, 6, 8, 9,
141 10, 11, 12, 13, 14, 15, 16, 16});
143 Vector args
= {BOOST_HANA_PP_DROP_BACK(
144 0, 1, 2, 3, 4, 5, 6, 6, 8, 9,
145 10, 11, 12, 13, 14, 15, 16, 16, 18, 19
147 BOOST_HANA_RUNTIME_CHECK(args
== Vector
{
148 0, 1, 2, 3, 4, 5, 6, 6, 8, 9,
149 10, 11, 12, 13, 14, 15, 16, 16, 18});
152 //////////////////////////////////////////////////////////////////////////
153 // BOOST_HANA_PP_DROP_FRONT
154 //////////////////////////////////////////////////////////////////////////
156 Vector args
= {BOOST_HANA_PP_DROP_FRONT(0, 1)};
157 BOOST_HANA_RUNTIME_CHECK(args
== Vector
{1});
159 Vector args
= {BOOST_HANA_PP_DROP_FRONT(0, 1, 2)};
160 BOOST_HANA_RUNTIME_CHECK(args
== Vector
{1, 2});
162 Vector args
= {BOOST_HANA_PP_DROP_FRONT(0, 1, 2, 3)};
163 BOOST_HANA_RUNTIME_CHECK(args
== Vector
{1, 2, 3});
165 Vector args
= {BOOST_HANA_PP_DROP_FRONT(0, 1, 2, 3, 4)};
166 BOOST_HANA_RUNTIME_CHECK(args
== Vector
{1, 2, 3, 4});