PageRenderTime 44ms CodeModel.GetById 17ms app.highlight 22ms RepoModel.GetById 2ms app.codeStats 0ms

/src/contrib/boost/mpl/aux_/preprocessed/msvc70/inherit.hpp

http://pythonocc.googlecode.com/
C++ Header | 166 lines | 133 code | 24 blank | 9 comment | 0 complexity | 7f7698ef98d5bfc99c0494f32347a53a MD5 | raw file
  1
  2// Copyright Aleksey Gurtovoy 2001-2004
  3//
  4// Distributed under the Boost Software License, Version 1.0. 
  5// (See accompanying file LICENSE_1_0.txt or copy at 
  6// http://www.boost.org/LICENSE_1_0.txt)
  7//
  8
  9// Preprocessed version of "boost/mpl/inherit.hpp" header
 10// -- DO NOT modify by hand!
 11
 12namespace boost { namespace mpl {
 13
 14namespace aux {
 15
 16template< bool C1, bool C2 >
 17struct inherit2_impl
 18{
 19    template< typename Derived, typename T1, typename T2 > struct result_
 20        : T1, T2
 21    {
 22        typedef Derived type_;
 23    };
 24};
 25
 26template<>
 27struct inherit2_impl< false,true >
 28{
 29    template< typename Derived, typename T1, typename T2 > struct result_
 30        : T1
 31    {
 32        typedef T1 type_;
 33    };
 34};
 35
 36template<>
 37struct inherit2_impl< true,false >
 38{
 39    template< typename Derived, typename T1, typename T2 > struct result_
 40        : T2
 41    {
 42        typedef T2 type_;
 43    };
 44};
 45
 46template<>
 47struct inherit2_impl< true,true >
 48{
 49    template< typename Derived, typename T1, typename T2 > struct result_
 50    {
 51        typedef T1 type_;
 52    };
 53};
 54
 55} // namespace aux
 56
 57template<
 58      typename BOOST_MPL_AUX_NA_PARAM(T1)
 59    , typename BOOST_MPL_AUX_NA_PARAM(T2)
 60    >
 61struct inherit2
 62    : aux::inherit2_impl<
 63          is_empty_base<T1>::value
 64        , is_empty_base<T2>::value
 65        >::template result_< inherit2< T1,T2 >,T1, T2 >
 66{
 67    typedef typename inherit2::type_ type;
 68    BOOST_MPL_AUX_LAMBDA_SUPPORT(2, inherit2, (T1, T2))
 69};
 70
 71BOOST_MPL_AUX_NA_SPEC(2, inherit2)
 72
 73template<
 74      typename T1 = na, typename T2 = na, typename T3 = na
 75    >
 76struct inherit3
 77    : inherit2<
 78          typename inherit2<
 79              T1, T2
 80            >::type
 81        , T3
 82        >
 83{
 84    BOOST_MPL_AUX_LAMBDA_SUPPORT(
 85          3
 86        , inherit3
 87        , ( T1, T2, T3)
 88        )
 89};
 90
 91BOOST_MPL_AUX_NA_SPEC(3, inherit3)
 92
 93template<
 94      typename T1 = na, typename T2 = na, typename T3 = na, typename T4 = na
 95    >
 96struct inherit4
 97    : inherit2<
 98          typename inherit3<
 99              T1, T2, T3
100            >::type
101        , T4
102        >
103{
104    BOOST_MPL_AUX_LAMBDA_SUPPORT(
105          4
106        , inherit4
107        , ( T1, T2, T3, T4)
108        )
109};
110
111BOOST_MPL_AUX_NA_SPEC(4, inherit4)
112
113template<
114      typename T1 = na, typename T2 = na, typename T3 = na, typename T4 = na
115    , typename T5 = na
116    >
117struct inherit5
118    : inherit2<
119          typename inherit4<
120              T1, T2, T3, T4
121            >::type
122        , T5
123        >
124{
125    BOOST_MPL_AUX_LAMBDA_SUPPORT(
126          5
127        , inherit5
128        , ( T1, T2, T3, T4, T5)
129        )
130};
131
132BOOST_MPL_AUX_NA_SPEC(5, inherit5)
133
134/// primary template
135
136template<
137      typename T1 = empty_base, typename T2 = empty_base
138    , typename T3 = empty_base, typename T4 = empty_base
139    , typename T5 = empty_base
140    >
141struct inherit
142    : inherit5< T1,T2,T3,T4,T5 >
143{
144};
145
146template<>
147struct inherit< na,na,na,na,na >
148{
149    template<
150
151          typename T1 = empty_base, typename T2 = empty_base
152        , typename T3 = empty_base, typename T4 = empty_base
153        , typename T5 = empty_base
154
155        >
156    struct apply
157        : inherit< T1,T2,T3,T4,T5 >
158    {
159    };
160};
161
162BOOST_MPL_AUX_NA_SPEC_LAMBDA(5, inherit)
163BOOST_MPL_AUX_NA_SPEC_ARITY(5, inherit)
164BOOST_MPL_AUX_NA_SPEC_TEMPLATE_ARITY(5, 5, inherit)
165}}
166