forked from boostorg/fusion
renamed ftag to fusion_tag
[SVN r35247]
This commit is contained in:
@ -154,7 +154,7 @@ To understand how `value_of_impl` is used by the library we will look at the imp
|
||||
struct __value_of__
|
||||
{
|
||||
typedef typename
|
||||
extension::value_of_impl<typename Iterator::ftag>::
|
||||
extension::value_of_impl<typename Iterator::fusion_tag>::
|
||||
template apply<Iterator>::type
|
||||
type;
|
||||
};
|
||||
@ -209,7 +209,7 @@ To see how `deref_impl` is used, lets have a look at the implementation of __der
|
||||
struct __deref__
|
||||
{
|
||||
typedef typename
|
||||
deref_impl<typename Iterator::ftag>::
|
||||
deref_impl<typename Iterator::fusion_tag>::
|
||||
template apply<Iterator>::type
|
||||
type;
|
||||
};
|
||||
@ -220,7 +220,7 @@ To see how `deref_impl` is used, lets have a look at the implementation of __der
|
||||
__deref__(Iterator const& i)
|
||||
{
|
||||
typename __result_of_deref__<Iterator>::type result =
|
||||
extension::deref_impl<typename Iterator::ftag>::
|
||||
extension::deref_impl<typename Iterator::fusion_tag>::
|
||||
template apply<Iterator>::call(i);
|
||||
return result;
|
||||
}
|
||||
|
@ -242,7 +242,7 @@
|
||||
<span class="keyword">struct</span> <a href="iterators/metafunctions/value_of.html" title="value_of"><tt class="computeroutput"><span class="identifier">value_of</span></tt></a>
|
||||
<span class="special">{</span>
|
||||
<span class="keyword">typedef</span> <span class="keyword">typename</span>
|
||||
<span class="identifier">extension</span><span class="special">::</span><span class="identifier">value_of_impl</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">Iterator</span><span class="special">::</span><span class="identifier">ftag</span><span class="special">>::</span>
|
||||
<span class="identifier">extension</span><span class="special">::</span><span class="identifier">value_of_impl</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">Iterator</span><span class="special">::</span><span class="identifier">fusion_tag</span><span class="special">>::</span>
|
||||
<span class="keyword">template</span> <span class="identifier">apply</span><span class="special"><</span><span class="identifier">Iterator</span><span class="special">>::</span><span class="identifier">type</span>
|
||||
<span class="identifier">type</span><span class="special">;</span>
|
||||
<span class="special">};</span>
|
||||
@ -305,7 +305,7 @@
|
||||
<span class="keyword">struct</span> <a href="iterators/functions/deref.html" title="deref"><tt class="computeroutput"><span class="identifier">deref</span></tt></a>
|
||||
<span class="special">{</span>
|
||||
<span class="keyword">typedef</span> <span class="keyword">typename</span>
|
||||
<span class="identifier">deref_impl</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">Iterator</span><span class="special">::</span><span class="identifier">ftag</span><span class="special">>::</span>
|
||||
<span class="identifier">deref_impl</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">Iterator</span><span class="special">::</span><span class="identifier">fusion_tag</span><span class="special">>::</span>
|
||||
<span class="keyword">template</span> <span class="identifier">apply</span><span class="special"><</span><span class="identifier">Iterator</span><span class="special">>::</span><span class="identifier">type</span>
|
||||
<span class="identifier">type</span><span class="special">;</span>
|
||||
<span class="special">};</span>
|
||||
@ -316,7 +316,7 @@
|
||||
<a href="iterators/functions/deref.html" title="deref"><tt class="computeroutput"><span class="identifier">deref</span></tt></a><span class="special">(</span><span class="identifier">Iterator</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">i</span><span class="special">)</span>
|
||||
<span class="special">{</span>
|
||||
<span class="keyword">typename</span> <a href="iterators/metafunctions/deref.html" title="deref"><tt class="computeroutput"><span class="identifier">result_of</span><span class="special">::</span><span class="identifier">deref</span></tt></a><span class="special"><</span><span class="identifier">Iterator</span><span class="special">>::</span><span class="identifier">type</span> <span class="identifier">result</span> <span class="special">=</span>
|
||||
<span class="identifier">extension</span><span class="special">::</span><span class="identifier">deref_impl</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">Iterator</span><span class="special">::</span><span class="identifier">ftag</span><span class="special">>::</span>
|
||||
<span class="identifier">extension</span><span class="special">::</span><span class="identifier">deref_impl</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">Iterator</span><span class="special">::</span><span class="identifier">fusion_tag</span><span class="special">>::</span>
|
||||
<span class="keyword">template</span> <span class="identifier">apply</span><span class="special"><</span><span class="identifier">Iterator</span><span class="special">>::</span><span class="identifier">call</span><span class="special">(</span><span class="identifier">i</span><span class="special">);</span>
|
||||
<span class="keyword">return</span> <span class="identifier">result</span><span class="special">;</span>
|
||||
<span class="special">}</span>
|
||||
|
@ -34,7 +34,7 @@
|
||||
The purpose of the tag is to enable <a href="../notes.html#fusion.notes.tag_dispatching"><span class="emphasis"><em>tag
|
||||
dispatching</em></span></a> from <a href="../sequences/intrinsics.html" title="Intrinsics">Intrinsic</a>
|
||||
functions to implementations appropriate for the type. The default implementation
|
||||
of <tt class="computeroutput"><span class="identifier">tag_of</span></tt> returns <tt class="computeroutput"><span class="identifier">T</span><span class="special">::</span><span class="identifier">ftag</span></tt>
|
||||
of <tt class="computeroutput"><span class="identifier">tag_of</span></tt> returns <tt class="computeroutput"><span class="identifier">T</span><span class="special">::</span><span class="identifier">fusion_tag</span></tt>
|
||||
for a given type <tt class="computeroutput"><span class="identifier">T</span></tt>, if such
|
||||
a member typedef exists.
|
||||
</p>
|
||||
|
@ -114,7 +114,7 @@ may be specialized to accomodate clients providing Fusion conforming views.
|
||||
All conforming Fusion sequences and iterators have an associated tag type.
|
||||
The purpose of the tag is to enable __tag_dispatching__ from __intrinsic__
|
||||
functions to implementations appropriate for the type. The default implementation
|
||||
of `tag_of` returns `T::ftag` for a given type `T`, if such a member typedef exists.
|
||||
of `tag_of` returns `T::fusion_tag` for a given type `T`, if such a member typedef exists.
|
||||
|
||||
This metafunction may be specialized to accomodate clients providing Fusion conforming sequences.
|
||||
|
||||
|
@ -34,7 +34,7 @@ namespace boost { namespace fusion {
|
||||
BOOST_STATIC_ASSERT(Pos >=0 && Pos < 3);
|
||||
typedef Struct struct_type;
|
||||
typedef mpl::int_<Pos> index;
|
||||
typedef example_struct_iterator_tag ftag;
|
||||
typedef example_struct_iterator_tag fusion_tag;
|
||||
typedef random_access_traversal_tag category;
|
||||
|
||||
example_struct_iterator(Struct& str)
|
||||
|
@ -38,7 +38,7 @@ namespace boost { namespace fusion {
|
||||
BOOST_MPL_ASSERT_RELATION(Pos,<=,std::size_t(Array::static_size));
|
||||
|
||||
typedef mpl::size_t<Pos> index;
|
||||
typedef array_iterator_tag ftag;
|
||||
typedef array_iterator_tag fusion_tag;
|
||||
typedef random_access_traversal_tag category;
|
||||
typedef Array array_type;
|
||||
typedef array_iterator<
|
||||
|
@ -27,7 +27,7 @@ namespace boost { namespace fusion
|
||||
struct mpl_iterator
|
||||
: iterator_base<mpl_iterator<Iterator> >
|
||||
{
|
||||
typedef mpl_iterator_tag ftag;
|
||||
typedef mpl_iterator_tag fusion_tag;
|
||||
typedef typename detail::mpl_iterator_category<
|
||||
typename Iterator::category>::type
|
||||
category;
|
||||
|
@ -32,7 +32,7 @@ namespace boost { namespace fusion
|
||||
: iterator_base<std_pair_iterator<Pair, N> >
|
||||
{
|
||||
typedef mpl::int_<N> index;
|
||||
typedef std_pair_iterator_tag ftag;
|
||||
typedef std_pair_iterator_tag fusion_tag;
|
||||
typedef random_access_traversal_tag category;
|
||||
typedef std_pair_iterator_identity<
|
||||
typename add_const<Pair>::type, N> identity;
|
||||
|
@ -32,7 +32,7 @@ namespace boost { namespace fusion
|
||||
: iterator_base<std_pair_iterator<Pair, N> >
|
||||
{
|
||||
typedef mpl::int_<N> index;
|
||||
typedef std_pair_iterator_tag ftag;
|
||||
typedef std_pair_iterator_tag fusion_tag;
|
||||
typedef random_access_traversal_tag category;
|
||||
typedef std_pair_iterator_identity<
|
||||
typename add_const<Pair>::type, N> identity;
|
||||
|
@ -36,7 +36,7 @@ namespace boost { namespace fusion
|
||||
struct nil : sequence_base<nil>
|
||||
{
|
||||
typedef mpl::int_<0> size;
|
||||
typedef cons_tag ftag;
|
||||
typedef cons_tag fusion_tag;
|
||||
typedef fusion_sequence_tag tag; // this gets picked up by MPL
|
||||
typedef mpl::false_ is_view;
|
||||
typedef forward_sequence_tag category;
|
||||
@ -59,7 +59,7 @@ namespace boost { namespace fusion
|
||||
struct cons : sequence_base<cons<Car, Cdr> >
|
||||
{
|
||||
typedef mpl::int_<Cdr::size::value+1> size;
|
||||
typedef cons_tag ftag;
|
||||
typedef cons_tag fusion_tag;
|
||||
typedef fusion_sequence_tag tag; // this gets picked up by MPL
|
||||
typedef mpl::false_ is_view;
|
||||
typedef forward_sequence_tag category;
|
||||
|
@ -29,7 +29,7 @@ namespace boost { namespace fusion
|
||||
template <typename Cons = nil>
|
||||
struct cons_iterator : iterator_base<cons_iterator<Cons> >
|
||||
{
|
||||
typedef cons_iterator_tag ftag;
|
||||
typedef cons_iterator_tag fusion_tag;
|
||||
typedef forward_traversal_tag category;
|
||||
typedef Cons cons_type;
|
||||
typedef cons_iterator_identity<
|
||||
@ -45,7 +45,7 @@ namespace boost { namespace fusion
|
||||
struct nil_iterator : iterator_base<nil_iterator>
|
||||
{
|
||||
typedef forward_traversal_tag category;
|
||||
typedef cons_iterator_tag ftag;
|
||||
typedef cons_iterator_tag fusion_tag;
|
||||
typedef nil cons_type;
|
||||
typedef cons_iterator_identity<
|
||||
add_const<nil>::type>
|
||||
|
@ -32,7 +32,7 @@ namespace boost { namespace fusion
|
||||
template <BOOST_PP_ENUM_PARAMS(FUSION_MAX_MAP_SIZE, typename T)>
|
||||
struct map : sequence_base<map<BOOST_PP_ENUM_PARAMS(FUSION_MAX_MAP_SIZE, T)> >
|
||||
{
|
||||
typedef map_tag ftag;
|
||||
typedef map_tag fusion_tag;
|
||||
typedef fusion_sequence_tag tag; // this gets picked up by MPL
|
||||
typedef forward_sequence_tag category;
|
||||
typedef mpl::false_ is_view;
|
||||
|
@ -31,7 +31,7 @@ namespace boost { namespace fusion
|
||||
template <BOOST_PP_ENUM_PARAMS(FUSION_MAX_SET_SIZE, typename T)>
|
||||
struct set : sequence_base<set<BOOST_PP_ENUM_PARAMS(FUSION_MAX_SET_SIZE, T)> >
|
||||
{
|
||||
typedef set_tag ftag;
|
||||
typedef set_tag fusion_tag;
|
||||
typedef fusion_sequence_tag tag; // this gets picked up by MPL
|
||||
typedef forward_sequence_tag category;
|
||||
typedef mpl::false_ is_view;
|
||||
|
@ -81,7 +81,7 @@
|
||||
typedef BOOST_PP_CAT(vector, N)<BOOST_PP_ENUM_PARAMS(N, T)> this_type;
|
||||
typedef BOOST_PP_CAT(vector_data, N)<this_type, BOOST_PP_ENUM_PARAMS(N, T)> base_type;
|
||||
typedef mpl::BOOST_PP_CAT(vector, N)<BOOST_PP_ENUM_PARAMS(N, T)> types;
|
||||
typedef vector_tag ftag;
|
||||
typedef vector_tag fusion_tag;
|
||||
typedef fusion_sequence_tag tag; // this gets picked up by MPL
|
||||
typedef mpl::false_ is_view;
|
||||
typedef random_access_sequence_tag category;
|
||||
|
@ -40,7 +40,7 @@ namespace boost { namespace fusion
|
||||
public:
|
||||
|
||||
typedef typename vector_n::types types;
|
||||
typedef typename vector_n::ftag ftag;
|
||||
typedef typename vector_n::fusion_tag fusion_tag;
|
||||
typedef typename vector_n::tag tag;
|
||||
typedef typename vector_n::size size;
|
||||
typedef typename vector_n::category category;
|
||||
|
@ -43,7 +43,7 @@ namespace boost { namespace fusion
|
||||
struct vector0 : sequence_base<vector0>
|
||||
{
|
||||
typedef mpl::vector0<> types;
|
||||
typedef vector_tag ftag;
|
||||
typedef vector_tag fusion_tag;
|
||||
typedef fusion_sequence_tag tag; // this gets picked up by MPL
|
||||
typedef mpl::false_ is_view;
|
||||
typedef random_access_sequence_tag category;
|
||||
|
@ -32,7 +32,7 @@ namespace boost { namespace fusion
|
||||
{
|
||||
typedef mpl::int_<N> index;
|
||||
typedef Vector vector;
|
||||
typedef vector_iterator_tag ftag;
|
||||
typedef vector_iterator_tag fusion_tag;
|
||||
typedef random_access_traversal_tag category;
|
||||
typedef vector_iterator_identity<
|
||||
typename add_const<Vector>::type, N> identity;
|
||||
|
@ -28,7 +28,7 @@ namespace boost { namespace fusion
|
||||
template <typename Sequence, typename Pred>
|
||||
struct filter_view : sequence_base<filter_view<Sequence, Pred> >
|
||||
{
|
||||
typedef filter_view_tag ftag;
|
||||
typedef filter_view_tag fusion_tag;
|
||||
typedef fusion_sequence_tag tag; // this gets picked up by MPL
|
||||
typedef forward_sequence_tag category;
|
||||
typedef mpl::true_ is_view;
|
||||
|
@ -29,7 +29,7 @@ namespace boost { namespace fusion
|
||||
typedef convert_iterator<Last> last_converter;
|
||||
typedef typename last_converter::type last_iter;
|
||||
|
||||
typedef filter_view_iterator_tag ftag;
|
||||
typedef filter_view_iterator_tag fusion_tag;
|
||||
typedef forward_traversal_tag category;
|
||||
typedef detail::static_find_if<first_iter, last_iter, Pred> filter;
|
||||
typedef typename filter::type first_type;
|
||||
|
@ -28,7 +28,7 @@ namespace boost { namespace fusion
|
||||
{
|
||||
typedef typename convert_iterator<First>::type begin_type;
|
||||
typedef typename convert_iterator<Last>::type end_type;
|
||||
typedef iterator_range_tag ftag;
|
||||
typedef iterator_range_tag fusion_tag;
|
||||
typedef fusion_sequence_tag tag; // this gets picked up by MPL
|
||||
typedef typename result_of::distance<begin_type, end_type>::type size;
|
||||
typedef mpl::true_ is_view;
|
||||
|
@ -30,7 +30,7 @@ namespace boost { namespace fusion
|
||||
template <typename Sequence1, typename Sequence2>
|
||||
struct joint_view : sequence_base<joint_view<Sequence1, Sequence2> >
|
||||
{
|
||||
typedef joint_view_tag ftag;
|
||||
typedef joint_view_tag fusion_tag;
|
||||
typedef fusion_sequence_tag tag; // this gets picked up by MPL
|
||||
typedef forward_sequence_tag category;
|
||||
typedef mpl::true_ is_view;
|
||||
|
@ -33,7 +33,7 @@ namespace boost { namespace fusion
|
||||
typedef typename last_converter::type last_type;
|
||||
typedef typename concat_converter::type concat_type;
|
||||
|
||||
typedef joint_view_iterator_tag ftag;
|
||||
typedef joint_view_iterator_tag fusion_tag;
|
||||
typedef forward_traversal_tag category;
|
||||
BOOST_STATIC_ASSERT((!result_of::equal_to<first_type, last_type>::value));
|
||||
|
||||
|
@ -27,7 +27,7 @@ namespace boost { namespace fusion
|
||||
struct apply
|
||||
{
|
||||
typedef typename Iterator::first_type first_type;
|
||||
typedef typename prior_impl<typename first_type::ftag>::
|
||||
typedef typename prior_impl<typename first_type::fusion_tag>::
|
||||
template apply<first_type>
|
||||
wrapped;
|
||||
|
||||
|
@ -27,7 +27,7 @@ namespace boost { namespace fusion
|
||||
struct apply
|
||||
{
|
||||
typedef typename Iterator::first_type first_type;
|
||||
typedef typename next_impl<typename first_type::ftag>::
|
||||
typedef typename next_impl<typename first_type::fusion_tag>::
|
||||
template apply<first_type>
|
||||
wrapped;
|
||||
|
||||
|
@ -30,7 +30,7 @@ namespace boost { namespace fusion
|
||||
template <typename Sequence>
|
||||
struct reverse_view : sequence_base<reverse_view<Sequence> >
|
||||
{
|
||||
typedef reverse_view_tag ftag;
|
||||
typedef reverse_view_tag fusion_tag;
|
||||
typedef fusion_sequence_tag tag; // this gets picked up by MPL
|
||||
typedef mpl::true_ is_view;
|
||||
|
||||
|
@ -30,7 +30,7 @@ namespace boost { namespace fusion
|
||||
{
|
||||
typedef convert_iterator<First> converter;
|
||||
typedef typename converter::type first_type;
|
||||
typedef reverse_view_iterator_tag ftag;
|
||||
typedef reverse_view_iterator_tag fusion_tag;
|
||||
typedef typename traits::category_of<first_type>::type category;
|
||||
|
||||
BOOST_STATIC_ASSERT((
|
||||
|
@ -26,7 +26,7 @@ namespace boost { namespace fusion
|
||||
template <typename T>
|
||||
struct single_view : sequence_base<single_view<T> >
|
||||
{
|
||||
typedef single_view_tag ftag;
|
||||
typedef single_view_tag fusion_tag;
|
||||
typedef fusion_sequence_tag tag; // this gets picked up by MPL
|
||||
typedef forward_sequence_tag category;
|
||||
typedef mpl::true_ is_view;
|
||||
|
@ -23,7 +23,7 @@ namespace boost { namespace fusion
|
||||
struct single_view_iterator_end
|
||||
: iterator_base<single_view_iterator_end<SingleView> >
|
||||
{
|
||||
typedef single_view_iterator_tag ftag;
|
||||
typedef single_view_iterator_tag fusion_tag;
|
||||
typedef forward_traversal_tag category;
|
||||
};
|
||||
|
||||
@ -31,7 +31,7 @@ namespace boost { namespace fusion
|
||||
struct single_view_iterator
|
||||
: iterator_base<single_view_iterator<SingleView> >
|
||||
{
|
||||
typedef single_view_iterator_tag ftag;
|
||||
typedef single_view_iterator_tag fusion_tag;
|
||||
typedef forward_traversal_tag category;
|
||||
typedef typename SingleView::value_type value_type;
|
||||
typedef SingleView single_view_type;
|
||||
|
@ -35,7 +35,7 @@ namespace boost { namespace fusion
|
||||
struct transform_view : sequence_base<transform_view<Sequence1, Sequence2, F> >
|
||||
{
|
||||
BOOST_STATIC_ASSERT(result_of::size<Sequence1>::value == result_of::size<Sequence2>::value);
|
||||
typedef transform_view2_tag ftag;
|
||||
typedef transform_view2_tag fusion_tag;
|
||||
typedef fusion_sequence_tag tag; // this gets picked up by MPL
|
||||
typedef mpl::true_ is_view;
|
||||
|
||||
@ -68,7 +68,7 @@ namespace boost { namespace fusion
|
||||
template <typename Sequence, typename F>
|
||||
struct transform_view<Sequence, F> : sequence_base<transform_view<Sequence, F> >
|
||||
{
|
||||
typedef transform_view_tag ftag;
|
||||
typedef transform_view_tag fusion_tag;
|
||||
typedef fusion_sequence_tag tag; // this gets picked up by MPL
|
||||
typedef mpl::true_ is_view;
|
||||
|
||||
|
@ -27,7 +27,7 @@ namespace boost { namespace fusion
|
||||
struct transform_view_iterator
|
||||
: iterator_base<transform_view_iterator<First, F> >
|
||||
{
|
||||
typedef transform_view_iterator_tag ftag;
|
||||
typedef transform_view_iterator_tag fusion_tag;
|
||||
typedef convert_iterator<First> converter;
|
||||
typedef typename converter::type first_type;
|
||||
typedef typename traits::category_of<first_type>::type category;
|
||||
@ -47,7 +47,7 @@ namespace boost { namespace fusion
|
||||
struct transform_view_iterator2
|
||||
: iterator_base<transform_view_iterator2<First1, First2, F> >
|
||||
{
|
||||
typedef transform_view_iterator2_tag ftag;
|
||||
typedef transform_view_iterator2_tag fusion_tag;
|
||||
typedef convert_iterator<First1> converter1;
|
||||
typedef convert_iterator<First2> converter2;
|
||||
typedef typename converter1::type first1_type;
|
||||
|
@ -71,7 +71,7 @@ namespace boost { namespace fusion {
|
||||
BOOST_MPL_ASSERT((detail::all_references<Sequences>));
|
||||
BOOST_MPL_ASSERT((detail::all_same_size<Sequences>));
|
||||
typedef typename detail::strictest_traversal<Sequences>::type category;
|
||||
typedef zip_view_tag ftag;
|
||||
typedef zip_view_tag fusion_tag;
|
||||
typedef fusion_sequence_tag tag; // this gets picked up by MPL
|
||||
typedef mpl::true_ is_view;
|
||||
typedef typename fusion::result_of::as_vector<Sequences>::type sequences;
|
||||
|
@ -31,7 +31,7 @@ namespace boost { namespace fusion {
|
||||
struct zip_view_iterator
|
||||
: iterator_base<zip_view_iterator<IteratorSequence, Traversal> >
|
||||
{
|
||||
typedef zip_view_iterator_tag ftag;
|
||||
typedef zip_view_iterator_tag fusion_tag;
|
||||
typedef Traversal category;
|
||||
|
||||
template<typename InitSeq>
|
||||
|
@ -19,7 +19,7 @@ namespace boost { namespace fusion
|
||||
|
||||
namespace detail
|
||||
{
|
||||
BOOST_MPL_HAS_XXX_TRAIT_DEF(ftag)
|
||||
BOOST_MPL_HAS_XXX_TRAIT_DEF(fusion_tag)
|
||||
}
|
||||
|
||||
namespace traits
|
||||
@ -31,9 +31,9 @@ namespace boost { namespace fusion
|
||||
};
|
||||
|
||||
template<typename Sequence>
|
||||
struct tag_of<Sequence, typename boost::enable_if<detail::has_ftag<Sequence> >::type>
|
||||
struct tag_of<Sequence, typename boost::enable_if<detail::has_fusion_tag<Sequence> >::type>
|
||||
{
|
||||
typedef typename Sequence::ftag type;
|
||||
typedef typename Sequence::fusion_tag type;
|
||||
};
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user