1# /* **************************************************************************
2# * *
3# * (C) Copyright Paul Mensonides 2005. *
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# define BOOST_PP_VALUE BOOST_PP_COUNTER + 1
13#
14# include <boost/preprocessor/slot/detail/shared.hpp>
15#
16# undef BOOST_PP_COUNTER
17#
18# undef BOOST_PP_COUNTER_DIGIT_1
19# undef BOOST_PP_COUNTER_DIGIT_2
20# undef BOOST_PP_COUNTER_DIGIT_3
21# undef BOOST_PP_COUNTER_DIGIT_4
22# undef BOOST_PP_COUNTER_DIGIT_5
23# undef BOOST_PP_COUNTER_DIGIT_6
24# undef BOOST_PP_COUNTER_DIGIT_7
25# undef BOOST_PP_COUNTER_DIGIT_8
26# undef BOOST_PP_COUNTER_DIGIT_9
27# undef BOOST_PP_COUNTER_DIGIT_10
28#
29# if BOOST_PP_SLOT_TEMP_10 == 0
30# define BOOST_PP_COUNTER_DIGIT_10 0
31# elif BOOST_PP_SLOT_TEMP_10 == 1
32# define BOOST_PP_COUNTER_DIGIT_10 1
33# elif BOOST_PP_SLOT_TEMP_10 == 2
34# define BOOST_PP_COUNTER_DIGIT_10 2
35# elif BOOST_PP_SLOT_TEMP_10 == 3
36# define BOOST_PP_COUNTER_DIGIT_10 3
37# elif BOOST_PP_SLOT_TEMP_10 == 4
38# define BOOST_PP_COUNTER_DIGIT_10 4
39# elif BOOST_PP_SLOT_TEMP_10 == 5
40# define BOOST_PP_COUNTER_DIGIT_10 5
41# elif BOOST_PP_SLOT_TEMP_10 == 6
42# define BOOST_PP_COUNTER_DIGIT_10 6
43# elif BOOST_PP_SLOT_TEMP_10 == 7
44# define BOOST_PP_COUNTER_DIGIT_10 7
45# elif BOOST_PP_SLOT_TEMP_10 == 8
46# define BOOST_PP_COUNTER_DIGIT_10 8
47# elif BOOST_PP_SLOT_TEMP_10 == 9
48# define BOOST_PP_COUNTER_DIGIT_10 9
49# endif
50#
51# if BOOST_PP_SLOT_TEMP_9 == 0
52# define BOOST_PP_COUNTER_DIGIT_9 0
53# elif BOOST_PP_SLOT_TEMP_9 == 1
54# define BOOST_PP_COUNTER_DIGIT_9 1
55# elif BOOST_PP_SLOT_TEMP_9 == 2
56# define BOOST_PP_COUNTER_DIGIT_9 2
57# elif BOOST_PP_SLOT_TEMP_9 == 3
58# define BOOST_PP_COUNTER_DIGIT_9 3
59# elif BOOST_PP_SLOT_TEMP_9 == 4
60# define BOOST_PP_COUNTER_DIGIT_9 4
61# elif BOOST_PP_SLOT_TEMP_9 == 5
62# define BOOST_PP_COUNTER_DIGIT_9 5
63# elif BOOST_PP_SLOT_TEMP_9 == 6
64# define BOOST_PP_COUNTER_DIGIT_9 6
65# elif BOOST_PP_SLOT_TEMP_9 == 7
66# define BOOST_PP_COUNTER_DIGIT_9 7
67# elif BOOST_PP_SLOT_TEMP_9 == 8
68# define BOOST_PP_COUNTER_DIGIT_9 8
69# elif BOOST_PP_SLOT_TEMP_9 == 9
70# define BOOST_PP_COUNTER_DIGIT_9 9
71# endif
72#
73# if BOOST_PP_SLOT_TEMP_8 == 0
74# define BOOST_PP_COUNTER_DIGIT_8 0
75# elif BOOST_PP_SLOT_TEMP_8 == 1
76# define BOOST_PP_COUNTER_DIGIT_8 1
77# elif BOOST_PP_SLOT_TEMP_8 == 2
78# define BOOST_PP_COUNTER_DIGIT_8 2
79# elif BOOST_PP_SLOT_TEMP_8 == 3
80# define BOOST_PP_COUNTER_DIGIT_8 3
81# elif BOOST_PP_SLOT_TEMP_8 == 4
82# define BOOST_PP_COUNTER_DIGIT_8 4
83# elif BOOST_PP_SLOT_TEMP_8 == 5
84# define BOOST_PP_COUNTER_DIGIT_8 5
85# elif BOOST_PP_SLOT_TEMP_8 == 6
86# define BOOST_PP_COUNTER_DIGIT_8 6
87# elif BOOST_PP_SLOT_TEMP_8 == 7
88# define BOOST_PP_COUNTER_DIGIT_8 7
89# elif BOOST_PP_SLOT_TEMP_8 == 8
90# define BOOST_PP_COUNTER_DIGIT_8 8
91# elif BOOST_PP_SLOT_TEMP_8 == 9
92# define BOOST_PP_COUNTER_DIGIT_8 9
93# endif
94#
95# if BOOST_PP_SLOT_TEMP_7 == 0
96# define BOOST_PP_COUNTER_DIGIT_7 0
97# elif BOOST_PP_SLOT_TEMP_7 == 1
98# define BOOST_PP_COUNTER_DIGIT_7 1
99# elif BOOST_PP_SLOT_TEMP_7 == 2
100# define BOOST_PP_COUNTER_DIGIT_7 2
101# elif BOOST_PP_SLOT_TEMP_7 == 3
102# define BOOST_PP_COUNTER_DIGIT_7 3
103# elif BOOST_PP_SLOT_TEMP_7 == 4
104# define BOOST_PP_COUNTER_DIGIT_7 4
105# elif BOOST_PP_SLOT_TEMP_7 == 5
106# define BOOST_PP_COUNTER_DIGIT_7 5
107# elif BOOST_PP_SLOT_TEMP_7 == 6
108# define BOOST_PP_COUNTER_DIGIT_7 6
109# elif BOOST_PP_SLOT_TEMP_7 == 7
110# define BOOST_PP_COUNTER_DIGIT_7 7
111# elif BOOST_PP_SLOT_TEMP_7 == 8
112# define BOOST_PP_COUNTER_DIGIT_7 8
113# elif BOOST_PP_SLOT_TEMP_7 == 9
114# define BOOST_PP_COUNTER_DIGIT_7 9
115# endif
116#
117# if BOOST_PP_SLOT_TEMP_6 == 0
118# define BOOST_PP_COUNTER_DIGIT_6 0
119# elif BOOST_PP_SLOT_TEMP_6 == 1
120# define BOOST_PP_COUNTER_DIGIT_6 1
121# elif BOOST_PP_SLOT_TEMP_6 == 2
122# define BOOST_PP_COUNTER_DIGIT_6 2
123# elif BOOST_PP_SLOT_TEMP_6 == 3
124# define BOOST_PP_COUNTER_DIGIT_6 3
125# elif BOOST_PP_SLOT_TEMP_6 == 4
126# define BOOST_PP_COUNTER_DIGIT_6 4
127# elif BOOST_PP_SLOT_TEMP_6 == 5
128# define BOOST_PP_COUNTER_DIGIT_6 5
129# elif BOOST_PP_SLOT_TEMP_6 == 6
130# define BOOST_PP_COUNTER_DIGIT_6 6
131# elif BOOST_PP_SLOT_TEMP_6 == 7
132# define BOOST_PP_COUNTER_DIGIT_6 7
133# elif BOOST_PP_SLOT_TEMP_6 == 8
134# define BOOST_PP_COUNTER_DIGIT_6 8
135# elif BOOST_PP_SLOT_TEMP_6 == 9
136# define BOOST_PP_COUNTER_DIGIT_6 9
137# endif
138#
139# if BOOST_PP_SLOT_TEMP_5 == 0
140# define BOOST_PP_COUNTER_DIGIT_5 0
141# elif BOOST_PP_SLOT_TEMP_5 == 1
142# define BOOST_PP_COUNTER_DIGIT_5 1
143# elif BOOST_PP_SLOT_TEMP_5 == 2
144# define BOOST_PP_COUNTER_DIGIT_5 2
145# elif BOOST_PP_SLOT_TEMP_5 == 3
146# define BOOST_PP_COUNTER_DIGIT_5 3
147# elif BOOST_PP_SLOT_TEMP_5 == 4
148# define BOOST_PP_COUNTER_DIGIT_5 4
149# elif BOOST_PP_SLOT_TEMP_5 == 5
150# define BOOST_PP_COUNTER_DIGIT_5 5
151# elif BOOST_PP_SLOT_TEMP_5 == 6
152# define BOOST_PP_COUNTER_DIGIT_5 6
153# elif BOOST_PP_SLOT_TEMP_5 == 7
154# define BOOST_PP_COUNTER_DIGIT_5 7
155# elif BOOST_PP_SLOT_TEMP_5 == 8
156# define BOOST_PP_COUNTER_DIGIT_5 8
157# elif BOOST_PP_SLOT_TEMP_5 == 9
158# define BOOST_PP_COUNTER_DIGIT_5 9
159# endif
160#
161# if BOOST_PP_SLOT_TEMP_4 == 0
162# define BOOST_PP_COUNTER_DIGIT_4 0
163# elif BOOST_PP_SLOT_TEMP_4 == 1
164# define BOOST_PP_COUNTER_DIGIT_4 1
165# elif BOOST_PP_SLOT_TEMP_4 == 2
166# define BOOST_PP_COUNTER_DIGIT_4 2
167# elif BOOST_PP_SLOT_TEMP_4 == 3
168# define BOOST_PP_COUNTER_DIGIT_4 3
169# elif BOOST_PP_SLOT_TEMP_4 == 4
170# define BOOST_PP_COUNTER_DIGIT_4 4
171# elif BOOST_PP_SLOT_TEMP_4 == 5
172# define BOOST_PP_COUNTER_DIGIT_4 5
173# elif BOOST_PP_SLOT_TEMP_4 == 6
174# define BOOST_PP_COUNTER_DIGIT_4 6
175# elif BOOST_PP_SLOT_TEMP_4 == 7
176# define BOOST_PP_COUNTER_DIGIT_4 7
177# elif BOOST_PP_SLOT_TEMP_4 == 8
178# define BOOST_PP_COUNTER_DIGIT_4 8
179# elif BOOST_PP_SLOT_TEMP_4 == 9
180# define BOOST_PP_COUNTER_DIGIT_4 9
181# endif
182#
183# if BOOST_PP_SLOT_TEMP_3 == 0
184# define BOOST_PP_COUNTER_DIGIT_3 0
185# elif BOOST_PP_SLOT_TEMP_3 == 1
186# define BOOST_PP_COUNTER_DIGIT_3 1
187# elif BOOST_PP_SLOT_TEMP_3 == 2
188# define BOOST_PP_COUNTER_DIGIT_3 2
189# elif BOOST_PP_SLOT_TEMP_3 == 3
190# define BOOST_PP_COUNTER_DIGIT_3 3
191# elif BOOST_PP_SLOT_TEMP_3 == 4
192# define BOOST_PP_COUNTER_DIGIT_3 4
193# elif BOOST_PP_SLOT_TEMP_3 == 5
194# define BOOST_PP_COUNTER_DIGIT_3 5
195# elif BOOST_PP_SLOT_TEMP_3 == 6
196# define BOOST_PP_COUNTER_DIGIT_3 6
197# elif BOOST_PP_SLOT_TEMP_3 == 7
198# define BOOST_PP_COUNTER_DIGIT_3 7
199# elif BOOST_PP_SLOT_TEMP_3 == 8
200# define BOOST_PP_COUNTER_DIGIT_3 8
201# elif BOOST_PP_SLOT_TEMP_3 == 9
202# define BOOST_PP_COUNTER_DIGIT_3 9
203# endif
204#
205# if BOOST_PP_SLOT_TEMP_2 == 0
206# define BOOST_PP_COUNTER_DIGIT_2 0
207# elif BOOST_PP_SLOT_TEMP_2 == 1
208# define BOOST_PP_COUNTER_DIGIT_2 1
209# elif BOOST_PP_SLOT_TEMP_2 == 2
210# define BOOST_PP_COUNTER_DIGIT_2 2
211# elif BOOST_PP_SLOT_TEMP_2 == 3
212# define BOOST_PP_COUNTER_DIGIT_2 3
213# elif BOOST_PP_SLOT_TEMP_2 == 4
214# define BOOST_PP_COUNTER_DIGIT_2 4
215# elif BOOST_PP_SLOT_TEMP_2 == 5
216# define BOOST_PP_COUNTER_DIGIT_2 5
217# elif BOOST_PP_SLOT_TEMP_2 == 6
218# define BOOST_PP_COUNTER_DIGIT_2 6
219# elif BOOST_PP_SLOT_TEMP_2 == 7
220# define BOOST_PP_COUNTER_DIGIT_2 7
221# elif BOOST_PP_SLOT_TEMP_2 == 8
222# define BOOST_PP_COUNTER_DIGIT_2 8
223# elif BOOST_PP_SLOT_TEMP_2 == 9
224# define BOOST_PP_COUNTER_DIGIT_2 9
225# endif
226#
227# if BOOST_PP_SLOT_TEMP_1 == 0
228# define BOOST_PP_COUNTER_DIGIT_1 0
229# elif BOOST_PP_SLOT_TEMP_1 == 1
230# define BOOST_PP_COUNTER_DIGIT_1 1
231# elif BOOST_PP_SLOT_TEMP_1 == 2
232# define BOOST_PP_COUNTER_DIGIT_1 2
233# elif BOOST_PP_SLOT_TEMP_1 == 3
234# define BOOST_PP_COUNTER_DIGIT_1 3
235# elif BOOST_PP_SLOT_TEMP_1 == 4
236# define BOOST_PP_COUNTER_DIGIT_1 4
237# elif BOOST_PP_SLOT_TEMP_1 == 5
238# define BOOST_PP_COUNTER_DIGIT_1 5
239# elif BOOST_PP_SLOT_TEMP_1 == 6
240# define BOOST_PP_COUNTER_DIGIT_1 6
241# elif BOOST_PP_SLOT_TEMP_1 == 7
242# define BOOST_PP_COUNTER_DIGIT_1 7
243# elif BOOST_PP_SLOT_TEMP_1 == 8
244# define BOOST_PP_COUNTER_DIGIT_1 8
245# elif BOOST_PP_SLOT_TEMP_1 == 9
246# define BOOST_PP_COUNTER_DIGIT_1 9
247# endif
248#
249# if BOOST_PP_COUNTER_DIGIT_10
250# define BOOST_PP_COUNTER BOOST_PP_SLOT_CC_10(BOOST_PP_COUNTER_DIGIT_10, BOOST_PP_COUNTER_DIGIT_9, BOOST_PP_COUNTER_DIGIT_8, BOOST_PP_COUNTER_DIGIT_7, BOOST_PP_COUNTER_DIGIT_6, BOOST_PP_COUNTER_DIGIT_5, BOOST_PP_COUNTER_DIGIT_4, BOOST_PP_COUNTER_DIGIT_3, BOOST_PP_COUNTER_DIGIT_2, BOOST_PP_COUNTER_DIGIT_1)
251# elif BOOST_PP_COUNTER_DIGIT_9
252# define BOOST_PP_COUNTER BOOST_PP_SLOT_CC_9(BOOST_PP_COUNTER_DIGIT_9, BOOST_PP_COUNTER_DIGIT_8, BOOST_PP_COUNTER_DIGIT_7, BOOST_PP_COUNTER_DIGIT_6, BOOST_PP_COUNTER_DIGIT_5, BOOST_PP_COUNTER_DIGIT_4, BOOST_PP_COUNTER_DIGIT_3, BOOST_PP_COUNTER_DIGIT_2, BOOST_PP_COUNTER_DIGIT_1)
253# elif BOOST_PP_COUNTER_DIGIT_8
254# define BOOST_PP_COUNTER BOOST_PP_SLOT_CC_8(BOOST_PP_COUNTER_DIGIT_8, BOOST_PP_COUNTER_DIGIT_7, BOOST_PP_COUNTER_DIGIT_6, BOOST_PP_COUNTER_DIGIT_5, BOOST_PP_COUNTER_DIGIT_4, BOOST_PP_COUNTER_DIGIT_3, BOOST_PP_COUNTER_DIGIT_2, BOOST_PP_COUNTER_DIGIT_1)
255# elif BOOST_PP_COUNTER_DIGIT_7
256# define BOOST_PP_COUNTER BOOST_PP_SLOT_CC_7(BOOST_PP_COUNTER_DIGIT_7, BOOST_PP_COUNTER_DIGIT_6, BOOST_PP_COUNTER_DIGIT_5, BOOST_PP_COUNTER_DIGIT_4, BOOST_PP_COUNTER_DIGIT_3, BOOST_PP_COUNTER_DIGIT_2, BOOST_PP_COUNTER_DIGIT_1)
257# elif BOOST_PP_COUNTER_DIGIT_6
258# define BOOST_PP_COUNTER BOOST_PP_SLOT_CC_6(BOOST_PP_COUNTER_DIGIT_6, BOOST_PP_COUNTER_DIGIT_5, BOOST_PP_COUNTER_DIGIT_4, BOOST_PP_COUNTER_DIGIT_3, BOOST_PP_COUNTER_DIGIT_2, BOOST_PP_COUNTER_DIGIT_1)
259# elif BOOST_PP_COUNTER_DIGIT_5
260# define BOOST_PP_COUNTER BOOST_PP_SLOT_CC_5(BOOST_PP_COUNTER_DIGIT_5, BOOST_PP_COUNTER_DIGIT_4, BOOST_PP_COUNTER_DIGIT_3, BOOST_PP_COUNTER_DIGIT_2, BOOST_PP_COUNTER_DIGIT_1)
261# elif BOOST_PP_COUNTER_DIGIT_4
262# define BOOST_PP_COUNTER BOOST_PP_SLOT_CC_4(BOOST_PP_COUNTER_DIGIT_4, BOOST_PP_COUNTER_DIGIT_3, BOOST_PP_COUNTER_DIGIT_2, BOOST_PP_COUNTER_DIGIT_1)
263# elif BOOST_PP_COUNTER_DIGIT_3
264# define BOOST_PP_COUNTER BOOST_PP_SLOT_CC_3(BOOST_PP_COUNTER_DIGIT_3, BOOST_PP_COUNTER_DIGIT_2, BOOST_PP_COUNTER_DIGIT_1)
265# elif BOOST_PP_COUNTER_DIGIT_2
266# define BOOST_PP_COUNTER BOOST_PP_SLOT_CC_2(BOOST_PP_COUNTER_DIGIT_2, BOOST_PP_COUNTER_DIGIT_1)
267# else
268# define BOOST_PP_COUNTER BOOST_PP_COUNTER_DIGIT_1
269# endif
270

source code of boost/libs/preprocessor/include/boost/preprocessor/slot/detail/counter.hpp