]> AND Private Git Repository - canny.git/blob - stc/exp/ml_stc_linux_make_v1.0/include/boost/preprocessor/repetition/enum.hpp
Logo AND Algorithmique Numérique Distribuée

Private GIT Repository
8b4ab9a51c9d12a649873b23781ea750afb53262
[canny.git] / stc / exp / ml_stc_linux_make_v1.0 / include / boost / preprocessor / repetition / enum.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_HPP\r
15 # define BOOST_PREPROCESSOR_REPETITION_ENUM_HPP\r
16 #\r
17 # include <boost/preprocessor/cat.hpp>\r
18 # include <boost/preprocessor/config/config.hpp>\r
19 # include <boost/preprocessor/debug/error.hpp>\r
20 # include <boost/preprocessor/detail/auto_rec.hpp>\r
21 # include <boost/preprocessor/punctuation/comma_if.hpp>\r
22 # include <boost/preprocessor/repetition/repeat.hpp>\r
23 # include <boost/preprocessor/tuple/elem.hpp>\r
24 # include <boost/preprocessor/tuple/rem.hpp>\r
25 #\r
26 # /* BOOST_PP_ENUM */\r
27 #\r
28 # if 0\r
29 #    define BOOST_PP_ENUM(count, macro, data)\r
30 # endif\r
31 #\r
32 # define BOOST_PP_ENUM BOOST_PP_CAT(BOOST_PP_ENUM_, BOOST_PP_AUTO_REC(BOOST_PP_REPEAT_P, 4))\r
33 #\r
34 # if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()\r
35 #    define BOOST_PP_ENUM_1(c, m, d) BOOST_PP_REPEAT_1(c, BOOST_PP_ENUM_M_1, (m, d))\r
36 #    define BOOST_PP_ENUM_2(c, m, d) BOOST_PP_REPEAT_2(c, BOOST_PP_ENUM_M_2, (m, d))\r
37 #    define BOOST_PP_ENUM_3(c, m, d) BOOST_PP_REPEAT_3(c, BOOST_PP_ENUM_M_3, (m, d))\r
38 # else\r
39 #    define BOOST_PP_ENUM_1(c, m, d) BOOST_PP_ENUM_1_I(c, m, d)\r
40 #    define BOOST_PP_ENUM_2(c, m, d) BOOST_PP_ENUM_2_I(c, m, d)\r
41 #    define BOOST_PP_ENUM_3(c, m, d) BOOST_PP_ENUM_3_I(c, m, d)\r
42 #    define BOOST_PP_ENUM_1_I(c, m, d) BOOST_PP_REPEAT_1(c, BOOST_PP_ENUM_M_1, (m, d))\r
43 #    define BOOST_PP_ENUM_2_I(c, m, d) BOOST_PP_REPEAT_2(c, BOOST_PP_ENUM_M_2, (m, d))\r
44 #    define BOOST_PP_ENUM_3_I(c, m, d) BOOST_PP_REPEAT_3(c, BOOST_PP_ENUM_M_3, (m, d))\r
45 # endif\r
46 #\r
47 # define BOOST_PP_ENUM_4(c, m, d) BOOST_PP_ERROR(0x0003)\r
48 #\r
49 # if BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_STRICT()\r
50 #    define BOOST_PP_ENUM_M_1(z, n, md) BOOST_PP_ENUM_M_1_IM(z, n, BOOST_PP_TUPLE_REM_2 md)\r
51 #    define BOOST_PP_ENUM_M_2(z, n, md) BOOST_PP_ENUM_M_2_IM(z, n, BOOST_PP_TUPLE_REM_2 md)\r
52 #    define BOOST_PP_ENUM_M_3(z, n, md) BOOST_PP_ENUM_M_3_IM(z, n, BOOST_PP_TUPLE_REM_2 md)\r
53 #    define BOOST_PP_ENUM_M_1_IM(z, n, im) BOOST_PP_ENUM_M_1_I(z, n, im)\r
54 #    define BOOST_PP_ENUM_M_2_IM(z, n, im) BOOST_PP_ENUM_M_2_I(z, n, im)\r
55 #    define BOOST_PP_ENUM_M_3_IM(z, n, im) BOOST_PP_ENUM_M_3_I(z, n, im)\r
56 # else\r
57 #    define BOOST_PP_ENUM_M_1(z, n, md) BOOST_PP_ENUM_M_1_I(z, n, BOOST_PP_TUPLE_ELEM(2, 0, md), BOOST_PP_TUPLE_ELEM(2, 1, md))\r
58 #    define BOOST_PP_ENUM_M_2(z, n, md) BOOST_PP_ENUM_M_2_I(z, n, BOOST_PP_TUPLE_ELEM(2, 0, md), BOOST_PP_TUPLE_ELEM(2, 1, md))\r
59 #    define BOOST_PP_ENUM_M_3(z, n, md) BOOST_PP_ENUM_M_3_I(z, n, BOOST_PP_TUPLE_ELEM(2, 0, md), BOOST_PP_TUPLE_ELEM(2, 1, md))\r
60 # endif\r
61 #\r
62 # define BOOST_PP_ENUM_M_1_I(z, n, m, d) BOOST_PP_COMMA_IF(n) m(z, n, d)\r
63 # define BOOST_PP_ENUM_M_2_I(z, n, m, d) BOOST_PP_COMMA_IF(n) m(z, n, d)\r
64 # define BOOST_PP_ENUM_M_3_I(z, n, m, d) BOOST_PP_COMMA_IF(n) m(z, n, d)\r
65 #\r
66 # endif\r