ossrv_pub/boost_apis/boost/mpl/joint_view.hpp
changeset 0 e4d67989cc36
equal deleted inserted replaced
-1:000000000000 0:e4d67989cc36
       
     1 
       
     2 #ifndef BOOST_MPL_JOINT_VIEW_HPP_INCLUDED
       
     3 #define BOOST_MPL_JOINT_VIEW_HPP_INCLUDED
       
     4 
       
     5 // Copyright Aleksey Gurtovoy 2000-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 // $Source: /cvsroot/boost/boost/boost/mpl/joint_view.hpp,v $
       
    14 // $Date: 2004/10/02 19:08:57 $
       
    15 // $Revision: 1.8 $
       
    16 
       
    17 #include <boost/mpl/aux_/joint_iter.hpp>
       
    18 #include <boost/mpl/plus.hpp>
       
    19 #include <boost/mpl/size_fwd.hpp>
       
    20 #include <boost/mpl/begin_end.hpp>
       
    21 #include <boost/mpl/aux_/na_spec.hpp>
       
    22 
       
    23 namespace boost { namespace mpl {
       
    24 
       
    25 namespace aux {
       
    26 struct joint_view_tag;
       
    27 }
       
    28 
       
    29 template<>
       
    30 struct size_impl< aux::joint_view_tag >
       
    31 {
       
    32     template < typename JointView > struct apply
       
    33       : plus<
       
    34             size<typename JointView::sequence1_>
       
    35           , size<typename JointView::sequence2_>
       
    36           >
       
    37     {};
       
    38 };
       
    39 
       
    40 template<
       
    41       typename BOOST_MPL_AUX_NA_PARAM(Sequence1_)
       
    42     , typename BOOST_MPL_AUX_NA_PARAM(Sequence2_)
       
    43     >
       
    44 struct joint_view
       
    45 {
       
    46     typedef typename mpl::begin<Sequence1_>::type   first1_;
       
    47     typedef typename mpl::end<Sequence1_>::type     last1_;
       
    48     typedef typename mpl::begin<Sequence2_>::type   first2_;
       
    49     typedef typename mpl::end<Sequence2_>::type     last2_;
       
    50 
       
    51     // agurt, 25/may/03: for the 'size_traits' implementation above
       
    52     typedef Sequence1_ sequence1_;
       
    53     typedef Sequence2_ sequence2_;
       
    54 
       
    55     typedef joint_view type;
       
    56     typedef aux::joint_view_tag tag;
       
    57     typedef joint_iter<first1_,last1_,first2_>  begin;
       
    58     typedef joint_iter<last1_,last1_,last2_>    end;
       
    59 };
       
    60 
       
    61 BOOST_MPL_AUX_NA_SPEC(2, joint_view)
       
    62 
       
    63 }}
       
    64 
       
    65 #endif // BOOST_MPL_JOINT_VIEW_HPP_INCLUDED