1 | # /* ************************************************************************** |
2 | # * * |
3 | # * (C) Copyright Paul Mensonides 2002. |
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/cat.hpp> |
13 | # include <boost/preprocessor/facilities.hpp> |
14 | # include <boost/preprocessor/arithmetic/add.hpp> |
15 | # include <boost/preprocessor/arithmetic/mul.hpp> |
16 | # include "test.h" |
17 | |
18 | BEGIN BOOST_PP_APPLY(BOOST_PP_NIL) 0 == 0 END |
19 | BEGIN BOOST_PP_APPLY((0)) == 0 END |
20 | |
21 | BEGIN BOOST_PP_APPLY((BOOST_PP_EMPTY))() 0 == 0 END |
22 | |
23 | # define MACRO(x, y, z) 1 |
24 | # define ARGS (1, 2, 3) |
25 | |
26 | BEGIN BOOST_PP_EXPAND(MACRO ARGS) == 1 END |
27 | |
28 | BEGIN BOOST_PP_IDENTITY(1)() == 1 END |
29 | BEGIN BOOST_PP_IDENTITY_N(36,10)(0,1,2,3,4,5,6,7,8,9) == 36 END |
30 | |
31 | BEGIN BOOST_PP_CAT(BOOST_PP_INTERCEPT, 2) 1 == 1 END |
32 | |
33 | #define OVMAC_1(x) BOOST_PP_ADD(x,5) |
34 | #define OVMAC_2(x,y) BOOST_PP_ADD(x,y) |
35 | #define OVMAC_3(x,y,z) BOOST_PP_ADD(BOOST_PP_MUL(x,y),z) |
36 | #define OVMAC_4(x,y,z,a) BOOST_PP_ADD(BOOST_PP_MUL(x,y),BOOST_PP_MUL(a,z)) |
37 | |
38 | #if BOOST_PP_VARIADICS_MSVC |
39 | |
40 | #define OVTEST(...) BOOST_PP_CAT(BOOST_PP_OVERLOAD(OVMAC_,__VA_ARGS__)(__VA_ARGS__),BOOST_PP_EMPTY()) |
41 | |
42 | #else |
43 | |
44 | #define OVTEST(...) BOOST_PP_OVERLOAD(OVMAC_,__VA_ARGS__)(__VA_ARGS__) |
45 | |
46 | #endif |
47 | |
48 | BEGIN OVTEST(3,4,5) == 17 END |
49 | BEGIN OVTEST(9,3,2,7) == 41 END |
50 | BEGIN OVTEST(8) == 13 END |
51 | BEGIN OVTEST(24,61) == 85 END |
52 | |