more serialization polishing, crash & bugfixes
[dyninst.git] / dynutil / h / dyn_detail / boost / preprocessor / arithmetic / add.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 DYN_DETAIL_BOOST_PREPROCESSOR_ARITHMETIC_ADD_HPP\r
15 # define DYN_DETAIL_BOOST_PREPROCESSOR_ARITHMETIC_ADD_HPP\r
16 #\r
17 # include <dyn_detail/boost/preprocessor/arithmetic/dec.hpp>\r
18 # include <dyn_detail/boost/preprocessor/arithmetic/inc.hpp>\r
19 # include <dyn_detail/boost/preprocessor/config/config.hpp>\r
20 # include <dyn_detail/boost/preprocessor/control/while.hpp>\r
21 # include <dyn_detail/boost/preprocessor/tuple/elem.hpp>\r
22 #\r
23 # /* DYN_DETAIL_BOOST_PP_ADD */\r
24 #\r
25 # if ~DYN_DETAIL_BOOST_PP_CONFIG_FLAGS() & DYN_DETAIL_BOOST_PP_CONFIG_EDG()\r
26 #    define DYN_DETAIL_BOOST_PP_ADD(x, y) DYN_DETAIL_BOOST_PP_TUPLE_ELEM(2, 0, DYN_DETAIL_BOOST_PP_WHILE(DYN_DETAIL_BOOST_PP_ADD_P, DYN_DETAIL_BOOST_PP_ADD_O, (x, y)))\r
27 # else\r
28 #    define DYN_DETAIL_BOOST_PP_ADD(x, y) DYN_DETAIL_BOOST_PP_ADD_I(x, y)\r
29 #    define DYN_DETAIL_BOOST_PP_ADD_I(x, y) DYN_DETAIL_BOOST_PP_TUPLE_ELEM(2, 0, DYN_DETAIL_BOOST_PP_WHILE(DYN_DETAIL_BOOST_PP_ADD_P, DYN_DETAIL_BOOST_PP_ADD_O, (x, y)))\r
30 # endif\r
31 #\r
32 # define DYN_DETAIL_BOOST_PP_ADD_P(d, xy) DYN_DETAIL_BOOST_PP_TUPLE_ELEM(2, 1, xy)\r
33 #\r
34 # if ~DYN_DETAIL_BOOST_PP_CONFIG_FLAGS() & DYN_DETAIL_BOOST_PP_CONFIG_MWCC()\r
35 #    define DYN_DETAIL_BOOST_PP_ADD_O(d, xy) DYN_DETAIL_BOOST_PP_ADD_O_I xy\r
36 # else\r
37 #    define DYN_DETAIL_BOOST_PP_ADD_O(d, xy) DYN_DETAIL_BOOST_PP_ADD_O_I(DYN_DETAIL_BOOST_PP_TUPLE_ELEM(2, 0, xy), DYN_DETAIL_BOOST_PP_TUPLE_ELEM(2, 1, xy))\r
38 # endif\r
39 #\r
40 # define DYN_DETAIL_BOOST_PP_ADD_O_I(x, y) (DYN_DETAIL_BOOST_PP_INC(x), DYN_DETAIL_BOOST_PP_DEC(y))\r
41 #\r
42 # /* DYN_DETAIL_BOOST_PP_ADD_D */\r
43 #\r
44 # if ~DYN_DETAIL_BOOST_PP_CONFIG_FLAGS() & DYN_DETAIL_BOOST_PP_CONFIG_EDG()\r
45 #    define DYN_DETAIL_BOOST_PP_ADD_D(d, x, y) DYN_DETAIL_BOOST_PP_TUPLE_ELEM(2, 0, DYN_DETAIL_BOOST_PP_WHILE_ ## d(DYN_DETAIL_BOOST_PP_ADD_P, DYN_DETAIL_BOOST_PP_ADD_O, (x, y)))\r
46 # else\r
47 #    define DYN_DETAIL_BOOST_PP_ADD_D(d, x, y) DYN_DETAIL_BOOST_PP_ADD_D_I(d, x, y)\r
48 #    define DYN_DETAIL_BOOST_PP_ADD_D_I(d, x, y) DYN_DETAIL_BOOST_PP_TUPLE_ELEM(2, 0, DYN_DETAIL_BOOST_PP_WHILE_ ## d(DYN_DETAIL_BOOST_PP_ADD_P, DYN_DETAIL_BOOST_PP_ADD_O, (x, y)))\r
49 # endif\r
50 #\r
51 # endif\r