]> AND Private Git Repository - canny.git/blob - stc/exp/ml_stc_linux_make_v1.0/include/boost/mpl/set/aux_/set0.hpp
Logo AND Algorithmique Numérique Distribuée

Private GIT Repository
6473da996bf3f947e64245e076d56e7fb94b9f8c
[canny.git] / stc / exp / ml_stc_linux_make_v1.0 / include / boost / mpl / set / aux_ / set0.hpp
1 \r
2 #ifndef BOOST_MPL_SET_AUX_SET0_HPP_INCLUDED\r
3 #define BOOST_MPL_SET_AUX_SET0_HPP_INCLUDED\r
4 \r
5 // Copyright Aleksey Gurtovoy 2003-2004\r
6 // Copyright David Abrahams 2003-2004\r
7 //\r
8 // Distributed under the Boost Software License, Version 1.0. \r
9 // (See accompanying file LICENSE_1_0.txt or copy at \r
10 // http://www.boost.org/LICENSE_1_0.txt)\r
11 //\r
12 // See http://www.boost.org/libs/mpl for documentation.\r
13 \r
14 // $Id: set0.hpp 49267 2008-10-11 06:19:02Z agurtovoy $\r
15 // $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $\r
16 // $Revision: 49267 $\r
17 \r
18 #include <boost/mpl/long.hpp>\r
19 #include <boost/mpl/void.hpp>\r
20 #include <boost/mpl/aux_/na.hpp>\r
21 #include <boost/mpl/set/aux_/tag.hpp>\r
22 #include <boost/mpl/aux_/yes_no.hpp>\r
23 #include <boost/mpl/aux_/overload_names.hpp>\r
24 #include <boost/mpl/aux_/config/operators.hpp>\r
25 \r
26 #include <boost/preprocessor/cat.hpp>\r
27 \r
28 namespace boost { namespace mpl {\r
29 \r
30 #if defined(BOOST_MPL_CFG_USE_OPERATORS_OVERLOADING)\r
31 \r
32 #   define BOOST_MPL_AUX_SET0_OVERLOAD(R, f, X, T) \\r
33     friend R BOOST_PP_CAT(BOOST_MPL_AUX_OVERLOAD_,f)(X const&, T) \\r
34 /**/\r
35 \r
36 #   define BOOST_MPL_AUX_SET_OVERLOAD(R, f, X, T) \\r
37     BOOST_MPL_AUX_SET0_OVERLOAD(R, f, X, T) \\r
38 /**/\r
39 \r
40 #else\r
41 \r
42 #   define BOOST_MPL_AUX_SET0_OVERLOAD(R, f, X, T) \\r
43     static R BOOST_PP_CAT(BOOST_MPL_AUX_OVERLOAD_,f)(X const&, T) \\r
44 /**/\r
45 \r
46 #   define BOOST_MPL_AUX_SET_OVERLOAD(R, f, X, T) \\r
47     BOOST_MPL_AUX_SET0_OVERLOAD(R, f, X, T); \\r
48     using Base::BOOST_PP_CAT(BOOST_MPL_AUX_OVERLOAD_,f) \\r
49 /**/\r
50 \r
51 #endif\r
52 \r
53 template< typename Dummy = na > struct set0\r
54 {\r
55     typedef set0<>          item_;\r
56     typedef item_           type;\r
57     typedef aux::set_tag    tag;\r
58     typedef void_           last_masked_;\r
59     typedef void_           item_type_;\r
60     typedef long_<0>        size;\r
61     typedef long_<1>        order;\r
62 \r
63     BOOST_MPL_AUX_SET0_OVERLOAD( aux::no_tag, ORDER_BY_KEY, set0<>, void const volatile* );\r
64     BOOST_MPL_AUX_SET0_OVERLOAD( aux::yes_tag, IS_MASKED, set0<>, void const volatile* );\r
65 };\r
66 \r
67 }}\r
68 \r
69 #endif // BOOST_MPL_SET_AUX_SET0_HPP_INCLUDED\r