Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2025-01-18 09:34:43

0001 /*=============================================================================
0002     Copyright (c) 2001-2011 Joel de Guzman
0003 
0004     Distributed under the Boost Software License, Version 1.0. (See accompanying
0005     file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
0006 ==============================================================================*/
0007 #if !defined(BOOST_FUSION_SEQUENCE_INTRINSIC_FWD_HPP_INCLUDED)
0008 #define BOOST_FUSION_SEQUENCE_INTRINSIC_FWD_HPP_INCLUDED
0009 
0010 #include <boost/fusion/support/config.hpp>
0011 #include <boost/type_traits/is_const.hpp>
0012 #include <boost/utility/enable_if.hpp>
0013 #include <boost/fusion/support/is_sequence.hpp>
0014 
0015 namespace boost { namespace fusion
0016 {
0017     namespace extension
0018     {
0019         template <typename Tag>
0020         struct at_impl;
0021 
0022         template <typename Tag>
0023         struct begin_impl;
0024 
0025         template <typename Tag>
0026         struct empty_impl;
0027 
0028         template <typename Tag>
0029         struct end_impl;
0030 
0031         template <typename Tag>
0032         struct has_key_impl;
0033 
0034         template <typename Tag>
0035         struct segments_impl;
0036 
0037         template <typename Tag>
0038         struct size_impl;
0039 
0040         template <typename Tag>
0041         struct value_at_impl;
0042 
0043         template <typename Tag>
0044         struct at_key_impl;
0045 
0046         template <typename Tag>
0047         struct value_at_key_impl;
0048     }
0049 
0050     namespace result_of
0051     {
0052         template <typename Sequence, typename N>
0053         struct at;
0054 
0055         template <typename Sequence, int N>
0056         struct at_c;
0057 
0058         template <typename Sequence>
0059         struct back;
0060 
0061         template <typename Sequence>
0062         struct begin;
0063 
0064         template <typename Sequence>
0065         struct empty;
0066 
0067         template <typename Sequence>
0068         struct end;
0069 
0070         template <typename Sequence>
0071         struct front;
0072 
0073         template <typename Sequence, typename Key>
0074         struct has_key;
0075 
0076         template <typename Sequence>
0077         struct segments;
0078 
0079         template <typename Sequence>
0080         struct size;
0081 
0082         template <typename Sequence, typename N>
0083         struct value_at;
0084 
0085         template <typename Sequence, int N>
0086         struct value_at_c;
0087 
0088         template <typename Sequence, typename Key>
0089         struct at_key;
0090 
0091         template <typename Sequence, typename N>
0092         struct value_at_key;
0093     }
0094 
0095     template <typename N, typename Sequence>
0096     BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
0097     typename 
0098         lazy_disable_if<
0099             is_const<Sequence>
0100           , result_of::at<Sequence, N>
0101         >::type
0102     at(Sequence& seq);
0103 
0104     template <typename N, typename Sequence>
0105     BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
0106     typename result_of::at<Sequence const, N>::type
0107     at(Sequence const& seq);
0108 
0109     template <int N, typename Sequence>
0110     BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
0111     typename 
0112         lazy_disable_if<
0113             is_const<Sequence>
0114           , result_of::at_c<Sequence, N>
0115         >::type
0116     at_c(Sequence& seq);
0117 
0118     template <int N, typename Sequence>
0119     BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
0120     typename result_of::at_c<Sequence const, N>::type
0121     at_c(Sequence const& seq);
0122 
0123     template <typename Sequence>
0124     BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
0125     typename result_of::back<Sequence>::type
0126     back(Sequence& seq);
0127 
0128     template <typename Sequence>
0129     BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
0130     typename result_of::back<Sequence const>::type
0131     back(Sequence const& seq);
0132 
0133     template <typename Sequence>
0134     BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
0135     typename
0136         lazy_enable_if<
0137             traits::is_sequence<Sequence>
0138           , result_of::begin<Sequence>
0139         >::type const
0140     begin(Sequence& seq);
0141 
0142     template <typename Sequence>
0143     BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
0144     typename
0145         lazy_enable_if<
0146             traits::is_sequence<Sequence>
0147           , result_of::begin<Sequence const>
0148         >::type const
0149     begin(Sequence const& seq);
0150 
0151     template <typename Sequence>
0152     BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
0153     typename result_of::empty<Sequence>::type
0154     empty(Sequence const&);
0155 
0156     template <typename Sequence>
0157     BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
0158     typename
0159         lazy_enable_if<
0160             traits::is_sequence<Sequence>
0161           , result_of::end<Sequence>
0162         >::type const
0163     end(Sequence& seq);
0164 
0165     template <typename Sequence>
0166     BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
0167     typename
0168         lazy_enable_if<
0169             traits::is_sequence<Sequence>
0170           , result_of::end<Sequence const>
0171         >::type const
0172     end(Sequence const& seq);
0173 
0174     template <typename Sequence>
0175     BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
0176     typename result_of::front<Sequence>::type
0177     front(Sequence& seq);
0178 
0179     template <typename Sequence>
0180     BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
0181     typename result_of::front<Sequence const>::type
0182     front(Sequence const& seq);
0183 
0184     template <typename Key, typename Sequence>
0185     BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
0186     typename result_of::has_key<Sequence, Key>::type
0187     has_key(Sequence const& seq);
0188 
0189     template <typename Sequence>
0190     BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
0191     typename
0192         lazy_disable_if<
0193             is_const<Sequence>
0194           , result_of::segments<Sequence>
0195         >::type
0196     segments(Sequence& seq);
0197 
0198     template <typename Sequence>
0199     BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
0200     typename result_of::segments<Sequence const>::type
0201     segments(Sequence const& seq);
0202 
0203     template <typename Sequence>
0204     BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
0205     typename result_of::size<Sequence>::type
0206     size(Sequence const&);
0207 
0208     template <typename Key, typename Sequence>
0209     BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
0210     typename 
0211         lazy_disable_if<
0212             is_const<Sequence>
0213           , result_of::at_key<Sequence, Key>
0214         >::type
0215     at_key(Sequence& seq);
0216 
0217     template <typename Key, typename Sequence>
0218     BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
0219     typename result_of::at_key<Sequence const, Key>::type
0220     at_key(Sequence const& seq);
0221 }}
0222 
0223 #endif