~twpol/dcplusplus/trunk

« back to all changes in this revision

Viewing changes to boost/boost/mpl/aux_/arity_spec.hpp

  • Committer: James Ross
  • Date: 2010-07-05 00:03:18 UTC
  • mfrom: (1524.1.650 dcplusplus)
  • Revision ID: silver@warwickcompsoc.co.uk-20100705000318-awwqm8ocpp5m47yz
Merged to trunk.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
 
2
 
#ifndef BOOST_MPL_AUX_ARITY_SPEC_HPP_INCLUDED
3
 
#define BOOST_MPL_AUX_ARITY_SPEC_HPP_INCLUDED
4
 
 
5
 
// Copyright Aleksey Gurtovoy 2001-2004
6
 
//
7
 
// Distributed under the Boost Software License, Version 1.0. 
8
 
// (See accompanying file LICENSE_1_0.txt or copy at 
9
 
// http://www.boost.org/LICENSE_1_0.txt)
10
 
//
11
 
// See http://www.boost.org/libs/mpl for documentation.
12
 
 
13
 
// $Id: arity_spec.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
14
 
// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $
15
 
// $Revision: 49267 $
16
 
 
17
 
#include <boost/mpl/int.hpp>
18
 
#include <boost/mpl/limits/arity.hpp>
19
 
#include <boost/mpl/aux_/config/dtp.hpp>
20
 
#include <boost/mpl/aux_/preprocessor/params.hpp>
21
 
#include <boost/mpl/aux_/arity.hpp>
22
 
#include <boost/mpl/aux_/template_arity_fwd.hpp>
23
 
#include <boost/mpl/aux_/config/ttp.hpp>
24
 
#include <boost/mpl/aux_/config/lambda.hpp>
25
 
#include <boost/mpl/aux_/config/static_constant.hpp>
26
 
 
27
 
#if defined(BOOST_MPL_CFG_BROKEN_DEFAULT_PARAMETERS_IN_NESTED_TEMPLATES)
28
 
#   define BOOST_MPL_AUX_NONTYPE_ARITY_SPEC(i,type,name) \
29
 
namespace aux { \
30
 
template< BOOST_MPL_AUX_NTTP_DECL(int, N), BOOST_MPL_PP_PARAMS(i,type T) > \
31
 
struct arity< \
32
 
      name< BOOST_MPL_PP_PARAMS(i,T) > \
33
 
    , N \
34
 
    > \
35
 
{ \
36
 
    BOOST_STATIC_CONSTANT(int \
37
 
        , value = BOOST_MPL_LIMIT_METAFUNCTION_ARITY \
38
 
        ); \
39
 
}; \
40
 
} \
41
 
/**/
42
 
#else
43
 
#   define BOOST_MPL_AUX_NONTYPE_ARITY_SPEC(i,type,name) /**/
44
 
#endif
45
 
 
46
 
#   define BOOST_MPL_AUX_ARITY_SPEC(i,name) \
47
 
    BOOST_MPL_AUX_NONTYPE_ARITY_SPEC(i,typename,name) \
48
 
/**/
49
 
 
50
 
 
51
 
#if defined(BOOST_MPL_CFG_EXTENDED_TEMPLATE_PARAMETERS_MATCHING) \
52
 
    && !defined(BOOST_MPL_CFG_NO_FULL_LAMBDA_SUPPORT)
53
 
#   define BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(i, name) \
54
 
namespace aux { \
55
 
template< BOOST_MPL_PP_PARAMS(i,typename T) > \
56
 
struct template_arity< name<BOOST_MPL_PP_PARAMS(i,T)> > \
57
 
    : int_<i> \
58
 
{ \
59
 
}; \
60
 
} \
61
 
/**/
62
 
#else
63
 
#   define BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(i, name) /**/
64
 
#endif
65
 
 
66
 
 
67
 
#endif // BOOST_MPL_AUX_ARITY_SPEC_HPP_INCLUDED
 
1
 
 
2
#ifndef BOOST_MPL_AUX_ARITY_SPEC_HPP_INCLUDED
 
3
#define BOOST_MPL_AUX_ARITY_SPEC_HPP_INCLUDED
 
4
 
 
5
// Copyright Aleksey Gurtovoy 2001-2004
 
6
//
 
7
// Distributed under the Boost Software License, Version 1.0. 
 
8
// (See accompanying file LICENSE_1_0.txt or copy at 
 
9
// http://www.boost.org/LICENSE_1_0.txt)
 
10
//
 
11
// See http://www.boost.org/libs/mpl for documentation.
 
12
 
 
13
// $Id: arity_spec.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
 
14
// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $
 
15
// $Revision: 49267 $
 
16
 
 
17
#include <boost/mpl/int.hpp>
 
18
#include <boost/mpl/limits/arity.hpp>
 
19
#include <boost/mpl/aux_/config/dtp.hpp>
 
20
#include <boost/mpl/aux_/preprocessor/params.hpp>
 
21
#include <boost/mpl/aux_/arity.hpp>
 
22
#include <boost/mpl/aux_/template_arity_fwd.hpp>
 
23
#include <boost/mpl/aux_/config/ttp.hpp>
 
24
#include <boost/mpl/aux_/config/lambda.hpp>
 
25
#include <boost/mpl/aux_/config/static_constant.hpp>
 
26
 
 
27
#if defined(BOOST_MPL_CFG_BROKEN_DEFAULT_PARAMETERS_IN_NESTED_TEMPLATES)
 
28
#   define BOOST_MPL_AUX_NONTYPE_ARITY_SPEC(i,type,name) \
 
29
namespace aux { \
 
30
template< BOOST_MPL_AUX_NTTP_DECL(int, N), BOOST_MPL_PP_PARAMS(i,type T) > \
 
31
struct arity< \
 
32
      name< BOOST_MPL_PP_PARAMS(i,T) > \
 
33
    , N \
 
34
    > \
 
35
{ \
 
36
    BOOST_STATIC_CONSTANT(int \
 
37
        , value = BOOST_MPL_LIMIT_METAFUNCTION_ARITY \
 
38
        ); \
 
39
}; \
 
40
} \
 
41
/**/
 
42
#else
 
43
#   define BOOST_MPL_AUX_NONTYPE_ARITY_SPEC(i,type,name) /**/
 
44
#endif
 
45
 
 
46
#   define BOOST_MPL_AUX_ARITY_SPEC(i,name) \
 
47
    BOOST_MPL_AUX_NONTYPE_ARITY_SPEC(i,typename,name) \
 
48
/**/
 
49
 
 
50
 
 
51
#if defined(BOOST_MPL_CFG_EXTENDED_TEMPLATE_PARAMETERS_MATCHING) \
 
52
    && !defined(BOOST_MPL_CFG_NO_FULL_LAMBDA_SUPPORT)
 
53
#   define BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(i, name) \
 
54
namespace aux { \
 
55
template< BOOST_MPL_PP_PARAMS(i,typename T) > \
 
56
struct template_arity< name<BOOST_MPL_PP_PARAMS(i,T)> > \
 
57
    : int_<i> \
 
58
{ \
 
59
}; \
 
60
} \
 
61
/**/
 
62
#else
 
63
#   define BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(i, name) /**/
 
64
#endif
 
65
 
 
66
 
 
67
#endif // BOOST_MPL_AUX_ARITY_SPEC_HPP_INCLUDED