• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 # /* **************************************************************************
2 #  *                                                                          *
3 #  *     (C) Copyright Edward Diener 2011.
4 #  *     Distributed under the Boost Software License, Version 1.0. (See
5 #  *     accompanying file LICENSE_1_0.txt or copy at
6 #  *     http://www.boost.org/LICENSE_1_0.txt)
7 #  *                                                                          *
8 #  ************************************************************************** */
9 #
10 # /* See http://www.boost.org for most recent version. */
11 #
12 # include <boost/preprocessor/config/limits.hpp>
13 # include <boost/preprocessor/variadic.hpp>
14 # include <boost/preprocessor/array/size.hpp>
15 # include <boost/preprocessor/array/elem.hpp>
16 # include <boost/preprocessor/list/at.hpp>
17 # include <boost/preprocessor/list/size.hpp>
18 # include <boost/preprocessor/seq/elem.hpp>
19 # include <boost/preprocessor/seq/size.hpp>
20 # include <boost/preprocessor/tuple/size.hpp>
21 # include <boost/preprocessor/tuple/elem.hpp>
22 # include <libs/preprocessor/test/test.h>
23 
24 #define VDATA 0,1,2,3,4,5,6
25 #define VDATA_LARGE 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32
26 #define VDATA_VERY_LARGE 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63
27 
28 #if BOOST_PP_VARIADIC_HAS_OPT()
29 
30 #define VDATA_EMPTY
31 
32 #endif
33 
34 #if BOOST_PP_LIMIT_VARIADIC > 64
35 
36 #define VDATA_LARGE_128 \
37     0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, \
38     64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95
39 
40 #define VDATA_VERY_LARGE_128 \
41     0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, \
42     64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127
43 
44 #endif
45 
46 #if BOOST_PP_LIMIT_VARIADIC > 128
47 
48 #define VDATA_LARGE_256 \
49     0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, \
50     64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, \
51     128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138
52 
53 #define VDATA_VERY_LARGE_256 \
54     0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, \
55     64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, \
56     128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, \
57     192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255
58 
59 #endif
60 
61 BEGIN BOOST_PP_VARIADIC_ELEM(4,VDATA) == 4 END
62 BEGIN BOOST_PP_VARIADIC_ELEM(6,7,11,3,8,14,85,56,92,165) == 56 END
63 BEGIN BOOST_PP_VARIADIC_ELEM(29,VDATA_LARGE) == 29 END
64 BEGIN BOOST_PP_VARIADIC_ELEM(57,VDATA_VERY_LARGE) == 57 END
65 BEGIN BOOST_PP_VARIADIC_ELEM(35, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63) == 35 END
66 BEGIN BOOST_PP_VARIADIC_SIZE(VDATA) == 7 END
67 BEGIN BOOST_PP_VARIADIC_SIZE(7,11,3,8,14,85,56,92,165) == 9 END
68 BEGIN BOOST_PP_VARIADIC_SIZE(VDATA_LARGE) == 33 END
69 BEGIN BOOST_PP_VARIADIC_SIZE(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32) == 33 END
70 BEGIN BOOST_PP_VARIADIC_SIZE(VDATA_VERY_LARGE) == 64 END
71 
72 #if BOOST_PP_VARIADIC_HAS_OPT()
73 
74 BEGIN BOOST_PP_VARIADIC_SIZE(VDATA_EMPTY) == 0 END
75 BEGIN BOOST_PP_VARIADIC_SIZE() == 0 END
76 
77 #endif
78 
79 BEGIN BOOST_PP_ARRAY_SIZE(BOOST_PP_VARIADIC_TO_ARRAY(VDATA)) == 7 END
80 BEGIN BOOST_PP_ARRAY_SIZE(BOOST_PP_VARIADIC_TO_ARRAY(VDATA_VERY_LARGE)) == 64 END
81 BEGIN BOOST_PP_ARRAY_ELEM(4,BOOST_PP_VARIADIC_TO_ARRAY(7,11,3,8,14,85,56,92,165)) == 14 END
82 BEGIN BOOST_PP_ARRAY_ELEM(30,BOOST_PP_VARIADIC_TO_ARRAY(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32)) == 30 END
83 BEGIN BOOST_PP_LIST_AT(BOOST_PP_VARIADIC_TO_LIST(VDATA),3) == 3 END
84 BEGIN BOOST_PP_LIST_AT(BOOST_PP_VARIADIC_TO_LIST(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63),49) == 49 END
85 BEGIN BOOST_PP_LIST_SIZE(BOOST_PP_VARIADIC_TO_LIST(7,11,3,8,14,85,56,92,165)) == 9 END
86 BEGIN BOOST_PP_LIST_SIZE(BOOST_PP_VARIADIC_TO_LIST(VDATA_LARGE)) == 33 END
87 BEGIN BOOST_PP_SEQ_ELEM(5,BOOST_PP_VARIADIC_TO_SEQ(VDATA)) == 5 END
88 BEGIN BOOST_PP_SEQ_ELEM(16,BOOST_PP_VARIADIC_TO_SEQ(VDATA_LARGE)) == 16 END
89 BEGIN BOOST_PP_SEQ_SIZE(BOOST_PP_VARIADIC_TO_SEQ(3,78,22,11,3)) == 5 END
90 BEGIN BOOST_PP_SEQ_SIZE(BOOST_PP_VARIADIC_TO_SEQ(VDATA_VERY_LARGE)) == 64 END
91 BEGIN BOOST_PP_TUPLE_SIZE(BOOST_PP_VARIADIC_TO_TUPLE(VDATA)) == 7 END
92 BEGIN BOOST_PP_TUPLE_SIZE(BOOST_PP_VARIADIC_TO_TUPLE(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63)) == 64 END
93 BEGIN BOOST_PP_TUPLE_ELEM(8,BOOST_PP_VARIADIC_TO_TUPLE(7,11,3,8,14,85,56,92,165)) == 165 END
94 BEGIN BOOST_PP_TUPLE_ELEM(27,BOOST_PP_VARIADIC_TO_TUPLE(VDATA_LARGE)) == 27 END
95 
96 #if BOOST_PP_LIMIT_VARIADIC > 64
97 
98 BEGIN BOOST_PP_VARIADIC_ELEM(47,VDATA_LARGE_128) == 47 END
99 BEGIN BOOST_PP_VARIADIC_ELEM(81,VDATA_LARGE_128) == 81 END
100 BEGIN BOOST_PP_VARIADIC_ELEM(29,VDATA_VERY_LARGE_128) == 29 END
101 BEGIN BOOST_PP_VARIADIC_ELEM(112,VDATA_VERY_LARGE_128) == 112 END
102 BEGIN BOOST_PP_VARIADIC_SIZE(VDATA_LARGE_128) == 96 END
103 BEGIN BOOST_PP_VARIADIC_SIZE(VDATA_VERY_LARGE_128) == 128 END
104 
105 #if BOOST_PP_LIMIT_TUPLE > 64
106 
107 BEGIN BOOST_PP_ARRAY_SIZE(BOOST_PP_VARIADIC_TO_ARRAY(VDATA_LARGE_128)) == 96 END
108 BEGIN BOOST_PP_ARRAY_SIZE(BOOST_PP_VARIADIC_TO_ARRAY(VDATA_VERY_LARGE_128)) == 128 END
109 BEGIN BOOST_PP_ARRAY_ELEM(83,BOOST_PP_VARIADIC_TO_ARRAY(VDATA_LARGE_128)) == 83 END
110 BEGIN BOOST_PP_ARRAY_ELEM(117,BOOST_PP_VARIADIC_TO_ARRAY(VDATA_VERY_LARGE_128)) == 117 END
111 
112 #endif
113 
114 BEGIN BOOST_PP_LIST_AT(BOOST_PP_VARIADIC_TO_LIST(VDATA_LARGE_128),79) == 79 END
115 BEGIN BOOST_PP_LIST_SIZE(BOOST_PP_VARIADIC_TO_LIST(VDATA_VERY_LARGE_128)) == 128 END
116 BEGIN BOOST_PP_SEQ_ELEM(113,BOOST_PP_VARIADIC_TO_SEQ(VDATA_VERY_LARGE_128)) == 113 END
117 BEGIN BOOST_PP_SEQ_ELEM(82,BOOST_PP_VARIADIC_TO_SEQ(VDATA_LARGE_128)) == 82 END
118 BEGIN BOOST_PP_SEQ_SIZE(BOOST_PP_VARIADIC_TO_SEQ(VDATA_LARGE_128)) == 96 END
119 
120 #if BOOST_PP_LIMIT_TUPLE > 64
121 
122 BEGIN BOOST_PP_TUPLE_SIZE(BOOST_PP_VARIADIC_TO_TUPLE(VDATA_VERY_LARGE_128)) == 128 END
123 BEGIN BOOST_PP_TUPLE_ELEM(77,BOOST_PP_VARIADIC_TO_TUPLE(VDATA_LARGE_128)) == 77 END
124 
125 #endif
126 
127 #endif
128 
129 #if BOOST_PP_LIMIT_VARIADIC > 128
130 
131 BEGIN BOOST_PP_VARIADIC_ELEM(47,VDATA_LARGE_256) == 47 END
132 BEGIN BOOST_PP_VARIADIC_ELEM(110,VDATA_LARGE_256) == 110 END
133 BEGIN BOOST_PP_VARIADIC_ELEM(135,VDATA_LARGE_256) == 135 END
134 BEGIN BOOST_PP_VARIADIC_ELEM(36,VDATA_VERY_LARGE_256) == 36 END
135 BEGIN BOOST_PP_VARIADIC_ELEM(95,VDATA_VERY_LARGE_256) == 95 END
136 BEGIN BOOST_PP_VARIADIC_ELEM(161,VDATA_VERY_LARGE_256) == 161 END
137 BEGIN BOOST_PP_VARIADIC_ELEM(217,VDATA_VERY_LARGE_256) == 217 END
138 BEGIN BOOST_PP_VARIADIC_SIZE(VDATA_LARGE_256) == 139 END
139 BEGIN BOOST_PP_VARIADIC_SIZE(VDATA_VERY_LARGE_256) == 256 END
140 
141 #if BOOST_PP_LIMIT_TUPLE > 128
142 
143 BEGIN BOOST_PP_ARRAY_SIZE(BOOST_PP_VARIADIC_TO_ARRAY(VDATA_LARGE_256)) == 139 END
144 BEGIN BOOST_PP_ARRAY_SIZE(BOOST_PP_VARIADIC_TO_ARRAY(VDATA_VERY_LARGE_256)) == 256 END
145 BEGIN BOOST_PP_ARRAY_ELEM(133,BOOST_PP_VARIADIC_TO_ARRAY(VDATA_LARGE_256)) == 133 END
146 BEGIN BOOST_PP_ARRAY_ELEM(203,BOOST_PP_VARIADIC_TO_ARRAY(VDATA_VERY_LARGE_256)) == 203 END
147 
148 #endif
149 
150 BEGIN BOOST_PP_LIST_AT(BOOST_PP_VARIADIC_TO_LIST(VDATA_LARGE_256),137) == 137 END
151 BEGIN BOOST_PP_LIST_SIZE(BOOST_PP_VARIADIC_TO_LIST(VDATA_VERY_LARGE_256)) == 256 END
152 BEGIN BOOST_PP_SEQ_ELEM(212,BOOST_PP_VARIADIC_TO_SEQ(VDATA_VERY_LARGE_256)) == 212 END
153 BEGIN BOOST_PP_SEQ_ELEM(129,BOOST_PP_VARIADIC_TO_SEQ(VDATA_LARGE_256)) == 129 END
154 BEGIN BOOST_PP_SEQ_SIZE(BOOST_PP_VARIADIC_TO_SEQ(VDATA_LARGE_256)) == 139 END
155 
156 #if BOOST_PP_LIMIT_TUPLE > 128
157 
158 BEGIN BOOST_PP_TUPLE_SIZE(BOOST_PP_VARIADIC_TO_TUPLE(VDATA_VERY_LARGE_256)) == 256 END
159 BEGIN BOOST_PP_TUPLE_ELEM(133,BOOST_PP_VARIADIC_TO_TUPLE(VDATA_LARGE_256)) == 133 END
160 
161 #endif
162 
163 #endif
164