]> git.lyx.org Git - lyx.git/blob - boost/boost/preprocessor/repetition/enum_shifted.hpp
MathML for InsetMathBoldSymbol.
[lyx.git] / boost / boost / preprocessor / repetition / enum_shifted.hpp
1 # /* Copyright (C) 2001\r
2 #  * Housemarque Oy\r
3 #  * http://www.housemarque.com\r
4 #  *\r
5 #  * Distributed under the Boost Software License, Version 1.0. (See\r
6 #  * accompanying file LICENSE_1_0.txt or copy at\r
7 #  * http://www.boost.org/LICENSE_1_0.txt)\r
8 #  */\r
9 #\r
10 # /* Revised by Paul Mensonides (2002) */\r
11 #\r
12 # /* See http://www.boost.org for most recent version. */\r
13 #\r
14 # ifndef BOOST_PREPROCESSOR_REPETITION_ENUM_SHIFTED_HPP\r
15 # define BOOST_PREPROCESSOR_REPETITION_ENUM_SHIFTED_HPP\r
16 #\r
17 # include <boost/preprocessor/cat.hpp>\r
18 # include <boost/preprocessor/arithmetic/dec.hpp>\r
19 # include <boost/preprocessor/arithmetic/inc.hpp>\r
20 # include <boost/preprocessor/config/config.hpp>\r
21 # include <boost/preprocessor/debug/error.hpp>\r
22 # include <boost/preprocessor/detail/auto_rec.hpp>\r
23 # include <boost/preprocessor/punctuation/comma_if.hpp>\r
24 # include <boost/preprocessor/repetition/repeat.hpp>\r
25 # include <boost/preprocessor/tuple/elem.hpp>\r
26 # include <boost/preprocessor/tuple/rem.hpp>\r
27 #\r
28 # /* BOOST_PP_ENUM_SHIFTED */\r
29 #\r
30 # if 0\r
31 #    define BOOST_PP_ENUM_SHIFTED(count, macro, data)\r
32 # endif\r
33 #\r
34 # define BOOST_PP_ENUM_SHIFTED BOOST_PP_CAT(BOOST_PP_ENUM_SHIFTED_, BOOST_PP_AUTO_REC(BOOST_PP_REPEAT_P, 4))\r
35 #\r
36 # if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()\r
37 #    define BOOST_PP_ENUM_SHIFTED_1(c, m, d) BOOST_PP_REPEAT_1(BOOST_PP_DEC(c), BOOST_PP_ENUM_SHIFTED_M_1, (m, d))\r
38 #    define BOOST_PP_ENUM_SHIFTED_2(c, m, d) BOOST_PP_REPEAT_2(BOOST_PP_DEC(c), BOOST_PP_ENUM_SHIFTED_M_2, (m, d))\r
39 #    define BOOST_PP_ENUM_SHIFTED_3(c, m, d) BOOST_PP_REPEAT_3(BOOST_PP_DEC(c), BOOST_PP_ENUM_SHIFTED_M_3, (m, d))\r
40 # else\r
41 #    define BOOST_PP_ENUM_SHIFTED_1(c, m, d) BOOST_PP_ENUM_SHIFTED_1_I(c, m, d)\r
42 #    define BOOST_PP_ENUM_SHIFTED_2(c, m, d) BOOST_PP_ENUM_SHIFTED_1_2(c, m, d)\r
43 #    define BOOST_PP_ENUM_SHIFTED_3(c, m, d) BOOST_PP_ENUM_SHIFTED_1_3(c, m, d)\r
44 #    define BOOST_PP_ENUM_SHIFTED_1_I(c, m, d) BOOST_PP_REPEAT_1(BOOST_PP_DEC(c), BOOST_PP_ENUM_SHIFTED_M_1, (m, d))\r
45 #    define BOOST_PP_ENUM_SHIFTED_2_I(c, m, d) BOOST_PP_REPEAT_2(BOOST_PP_DEC(c), BOOST_PP_ENUM_SHIFTED_M_2, (m, d))\r
46 #    define BOOST_PP_ENUM_SHIFTED_3_I(c, m, d) BOOST_PP_REPEAT_3(BOOST_PP_DEC(c), BOOST_PP_ENUM_SHIFTED_M_3, (m, d))\r
47 # endif\r
48 #\r
49 # define BOOST_PP_ENUM_SHIFTED_4(c, m, d) BOOST_PP_ERROR(0x0003)\r
50 #\r
51 # if BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_STRICT()\r
52 #    define BOOST_PP_ENUM_SHIFTED_M_1(z, n, md) BOOST_PP_ENUM_SHIFTED_M_1_IM(z, n, BOOST_PP_TUPLE_REM_2 md)\r
53 #    define BOOST_PP_ENUM_SHIFTED_M_2(z, n, md) BOOST_PP_ENUM_SHIFTED_M_2_IM(z, n, BOOST_PP_TUPLE_REM_2 md)\r
54 #    define BOOST_PP_ENUM_SHIFTED_M_3(z, n, md) BOOST_PP_ENUM_SHIFTED_M_3_IM(z, n, BOOST_PP_TUPLE_REM_2 md)\r
55 #    define BOOST_PP_ENUM_SHIFTED_M_1_IM(z, n, im) BOOST_PP_ENUM_SHIFTED_M_1_I(z, n, im)\r
56 #    define BOOST_PP_ENUM_SHIFTED_M_2_IM(z, n, im) BOOST_PP_ENUM_SHIFTED_M_2_I(z, n, im)\r
57 #    define BOOST_PP_ENUM_SHIFTED_M_3_IM(z, n, im) BOOST_PP_ENUM_SHIFTED_M_3_I(z, n, im)\r
58 # else\r
59 #    define BOOST_PP_ENUM_SHIFTED_M_1(z, n, md) BOOST_PP_ENUM_SHIFTED_M_1_I(z, n, BOOST_PP_TUPLE_ELEM(2, 0, md), BOOST_PP_TUPLE_ELEM(2, 1, md))\r
60 #    define BOOST_PP_ENUM_SHIFTED_M_2(z, n, md) BOOST_PP_ENUM_SHIFTED_M_2_I(z, n, BOOST_PP_TUPLE_ELEM(2, 0, md), BOOST_PP_TUPLE_ELEM(2, 1, md))\r
61 #    define BOOST_PP_ENUM_SHIFTED_M_3(z, n, md) BOOST_PP_ENUM_SHIFTED_M_3_I(z, n, BOOST_PP_TUPLE_ELEM(2, 0, md), BOOST_PP_TUPLE_ELEM(2, 1, md))\r
62 # endif\r
63 #\r
64 # define BOOST_PP_ENUM_SHIFTED_M_1_I(z, n, m, d) BOOST_PP_COMMA_IF(n) m(z, BOOST_PP_INC(n), d)\r
65 # define BOOST_PP_ENUM_SHIFTED_M_2_I(z, n, m, d) BOOST_PP_COMMA_IF(n) m(z, BOOST_PP_INC(n), d)\r
66 # define BOOST_PP_ENUM_SHIFTED_M_3_I(z, n, m, d) BOOST_PP_COMMA_IF(n) m(z, BOOST_PP_INC(n), d)\r
67 #\r
68 # endif\r