mirror of
https://github.com/boostorg/fusion.git
synced 2025-07-29 12:07:36 +02:00
Workaround for ObjC (mis)use of nil (from Mathias Gaunard)
[SVN r81628]
This commit is contained in:
@ -11,11 +11,11 @@
|
||||
|
||||
namespace boost { namespace fusion
|
||||
{
|
||||
struct nil;
|
||||
struct nil_;
|
||||
|
||||
namespace result_of
|
||||
{
|
||||
template <typename Car, typename Cdr = nil>
|
||||
template <typename Car, typename Cdr = nil_>
|
||||
struct cons_tie
|
||||
{
|
||||
typedef cons<Car&, Cdr> type;
|
||||
|
@ -13,11 +13,11 @@
|
||||
|
||||
namespace boost { namespace fusion
|
||||
{
|
||||
struct nil;
|
||||
struct nil_;
|
||||
|
||||
namespace result_of
|
||||
{
|
||||
template <typename Car, typename Cdr = nil>
|
||||
template <typename Car, typename Cdr = nil_>
|
||||
struct make_cons
|
||||
{
|
||||
typedef cons<typename detail::as_fusion_element<Car>::type, Cdr> type;
|
||||
|
@ -34,7 +34,7 @@ namespace boost { namespace fusion
|
||||
struct forward_traversal_tag;
|
||||
struct fusion_sequence_tag;
|
||||
|
||||
struct nil : sequence_base<nil>
|
||||
struct nil_ : sequence_base<nil_>
|
||||
{
|
||||
typedef mpl::int_<0> size;
|
||||
typedef cons_tag fusion_tag;
|
||||
@ -44,10 +44,10 @@ namespace boost { namespace fusion
|
||||
typedef void_ car_type;
|
||||
typedef void_ cdr_type;
|
||||
|
||||
nil() {}
|
||||
nil_() {}
|
||||
|
||||
template <typename Iterator>
|
||||
nil(Iterator const& /*iter*/, mpl::true_ /*this_is_an_iterator*/)
|
||||
nil_(Iterator const& /*iter*/, mpl::true_ /*this_is_an_iterator*/)
|
||||
{}
|
||||
|
||||
template <typename Iterator>
|
||||
@ -56,7 +56,7 @@ namespace boost { namespace fusion
|
||||
}
|
||||
};
|
||||
|
||||
template <typename Car, typename Cdr /*= nil*/>
|
||||
template <typename Car, typename Cdr /*= nil_*/>
|
||||
struct cons : sequence_base<cons<Car, Cdr> >
|
||||
{
|
||||
typedef mpl::int_<Cdr::size::value+1> size;
|
||||
|
@ -2,7 +2,7 @@
|
||||
Copyright (c) 2001-2011 Joel de Guzman
|
||||
Copyright (c) 2005 Eric Niebler
|
||||
|
||||
Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||
Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||
file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
||||
==============================================================================*/
|
||||
#if !defined(BOOST_FUSION_CONS_FWD_HPP_INCLUDED)
|
||||
@ -10,9 +10,12 @@
|
||||
|
||||
namespace boost { namespace fusion
|
||||
{
|
||||
struct nil;
|
||||
struct nil_;
|
||||
#ifndef nil
|
||||
typedef nil_ nil;
|
||||
#endif
|
||||
|
||||
template <typename Car, typename Cdr = nil>
|
||||
template <typename Car, typename Cdr = nil_>
|
||||
struct cons;
|
||||
}}
|
||||
|
||||
|
@ -18,14 +18,14 @@
|
||||
|
||||
namespace boost { namespace fusion
|
||||
{
|
||||
struct nil;
|
||||
struct nil_;
|
||||
struct cons_iterator_tag;
|
||||
struct forward_traversal_tag;
|
||||
|
||||
template <typename Cons>
|
||||
struct cons_iterator_identity;
|
||||
|
||||
template <typename Cons = nil>
|
||||
template <typename Cons = nil_>
|
||||
struct cons_iterator : iterator_base<cons_iterator<Cons> >
|
||||
{
|
||||
typedef cons_iterator_tag fusion_tag;
|
||||
@ -49,40 +49,40 @@ namespace boost { namespace fusion
|
||||
{
|
||||
typedef forward_traversal_tag category;
|
||||
typedef cons_iterator_tag fusion_tag;
|
||||
typedef nil cons_type;
|
||||
typedef nil_ cons_type;
|
||||
typedef cons_iterator_identity<
|
||||
add_const<nil>::type>
|
||||
add_const<nil_>::type>
|
||||
identity;
|
||||
nil_iterator() {}
|
||||
explicit nil_iterator(nil const&) {}
|
||||
explicit nil_iterator(nil_ const&) {}
|
||||
};
|
||||
|
||||
template <>
|
||||
struct cons_iterator<nil> : nil_iterator
|
||||
struct cons_iterator<nil_> : nil_iterator
|
||||
{
|
||||
cons_iterator() {}
|
||||
explicit cons_iterator(nil const&) {}
|
||||
explicit cons_iterator(nil_ const&) {}
|
||||
};
|
||||
|
||||
template <>
|
||||
struct cons_iterator<nil const> : nil_iterator
|
||||
struct cons_iterator<nil_ const> : nil_iterator
|
||||
{
|
||||
cons_iterator() {}
|
||||
explicit cons_iterator(nil const&) {}
|
||||
explicit cons_iterator(nil_ const&) {}
|
||||
};
|
||||
|
||||
template <>
|
||||
struct cons_iterator<list<> > : nil_iterator
|
||||
{
|
||||
cons_iterator() {}
|
||||
explicit cons_iterator(nil const&) {}
|
||||
explicit cons_iterator(nil_ const&) {}
|
||||
};
|
||||
|
||||
template <>
|
||||
struct cons_iterator<list<> const> : nil_iterator
|
||||
{
|
||||
cons_iterator() {}
|
||||
explicit cons_iterator(nil const&) {}
|
||||
explicit cons_iterator(nil_ const&) {}
|
||||
};
|
||||
}}
|
||||
|
||||
|
@ -13,7 +13,7 @@
|
||||
|
||||
namespace boost { namespace fusion
|
||||
{
|
||||
struct nil;
|
||||
struct nil_;
|
||||
|
||||
struct cons_tag;
|
||||
|
||||
|
@ -24,12 +24,12 @@ namespace boost { namespace fusion { namespace detail
|
||||
template <typename First, typename Last>
|
||||
struct build_cons<First, Last, true>
|
||||
{
|
||||
typedef nil type;
|
||||
typedef nil_ type;
|
||||
|
||||
static nil
|
||||
static nil_
|
||||
call(First const&, Last const&)
|
||||
{
|
||||
return nil();
|
||||
return nil_();
|
||||
}
|
||||
};
|
||||
|
||||
|
@ -13,7 +13,7 @@ namespace boost { namespace fusion
|
||||
{
|
||||
struct cons_tag;
|
||||
|
||||
struct nil;
|
||||
struct nil_;
|
||||
|
||||
template <typename Car, typename Cdr>
|
||||
struct cons;
|
||||
@ -28,7 +28,7 @@ namespace boost { namespace fusion
|
||||
{
|
||||
template <typename Sequence>
|
||||
struct apply
|
||||
: boost::is_convertible<Sequence, nil>
|
||||
: boost::is_convertible<Sequence, nil_>
|
||||
{};
|
||||
};
|
||||
}
|
||||
|
@ -13,7 +13,7 @@
|
||||
|
||||
namespace boost { namespace fusion
|
||||
{
|
||||
struct nil;
|
||||
struct nil_;
|
||||
|
||||
struct cons_tag;
|
||||
|
||||
@ -35,7 +35,7 @@ namespace boost { namespace fusion
|
||||
struct apply
|
||||
{
|
||||
typedef cons_iterator<
|
||||
typename mpl::if_<is_const<Sequence>, nil const, nil>::type>
|
||||
typename mpl::if_<is_const<Sequence>, nil_ const, nil_>::type>
|
||||
type;
|
||||
|
||||
static type
|
||||
|
@ -18,7 +18,7 @@
|
||||
|
||||
namespace boost { namespace fusion
|
||||
{
|
||||
struct nil;
|
||||
struct nil_;
|
||||
struct void_;
|
||||
}}
|
||||
|
||||
@ -61,7 +61,7 @@ namespace boost { namespace fusion { namespace detail
|
||||
template <>
|
||||
struct list_to_cons<BOOST_PP_ENUM(FUSION_MAX_LIST_SIZE, FUSION_VOID, _)>
|
||||
{
|
||||
typedef nil type;
|
||||
typedef nil_ type;
|
||||
};
|
||||
}}}
|
||||
|
||||
|
@ -8,7 +8,7 @@
|
||||
==============================================================================*/
|
||||
namespace boost { namespace fusion
|
||||
{
|
||||
struct nil;
|
||||
struct nil_;
|
||||
struct void_;
|
||||
template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9>
|
||||
struct list
|
||||
|
@ -8,7 +8,7 @@
|
||||
==============================================================================*/
|
||||
namespace boost { namespace fusion
|
||||
{
|
||||
struct nil;
|
||||
struct nil_;
|
||||
struct void_;
|
||||
template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19>
|
||||
struct list
|
||||
|
@ -8,7 +8,7 @@
|
||||
==============================================================================*/
|
||||
namespace boost { namespace fusion
|
||||
{
|
||||
struct nil;
|
||||
struct nil_;
|
||||
struct void_;
|
||||
template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27 , typename T28 , typename T29>
|
||||
struct list
|
||||
|
@ -8,7 +8,7 @@
|
||||
==============================================================================*/
|
||||
namespace boost { namespace fusion
|
||||
{
|
||||
struct nil;
|
||||
struct nil_;
|
||||
struct void_;
|
||||
template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27 , typename T28 , typename T29 , typename T30 , typename T31 , typename T32 , typename T33 , typename T34 , typename T35 , typename T36 , typename T37 , typename T38 , typename T39>
|
||||
struct list
|
||||
|
@ -8,7 +8,7 @@
|
||||
==============================================================================*/
|
||||
namespace boost { namespace fusion
|
||||
{
|
||||
struct nil;
|
||||
struct nil_;
|
||||
struct void_;
|
||||
template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27 , typename T28 , typename T29 , typename T30 , typename T31 , typename T32 , typename T33 , typename T34 , typename T35 , typename T36 , typename T37 , typename T38 , typename T39 , typename T40 , typename T41 , typename T42 , typename T43 , typename T44 , typename T45 , typename T46 , typename T47 , typename T48 , typename T49>
|
||||
struct list
|
||||
|
@ -81,6 +81,6 @@ namespace boost { namespace fusion { namespace detail
|
||||
template <>
|
||||
struct list_to_cons<void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_>
|
||||
{
|
||||
typedef nil type;
|
||||
typedef nil_ type;
|
||||
};
|
||||
}}}
|
||||
|
@ -141,6 +141,6 @@ namespace boost { namespace fusion { namespace detail
|
||||
template <>
|
||||
struct list_to_cons<void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_>
|
||||
{
|
||||
typedef nil type;
|
||||
typedef nil_ type;
|
||||
};
|
||||
}}}
|
||||
|
@ -201,6 +201,6 @@ namespace boost { namespace fusion { namespace detail
|
||||
template <>
|
||||
struct list_to_cons<void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_>
|
||||
{
|
||||
typedef nil type;
|
||||
typedef nil_ type;
|
||||
};
|
||||
}}}
|
||||
|
@ -261,6 +261,6 @@ namespace boost { namespace fusion { namespace detail
|
||||
template <>
|
||||
struct list_to_cons<void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_>
|
||||
{
|
||||
typedef nil type;
|
||||
typedef nil_ type;
|
||||
};
|
||||
}}}
|
||||
|
@ -321,6 +321,6 @@ namespace boost { namespace fusion { namespace detail
|
||||
template <>
|
||||
struct list_to_cons<void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_>
|
||||
{
|
||||
typedef nil type;
|
||||
typedef nil_ type;
|
||||
};
|
||||
}}}
|
||||
|
@ -12,7 +12,7 @@
|
||||
namespace boost { namespace fusion { namespace detail
|
||||
{
|
||||
////////////////////////////////////////////////////////////////////////////
|
||||
template<typename Cons, typename State = nil>
|
||||
template<typename Cons, typename State = nil_>
|
||||
struct reverse_cons;
|
||||
|
||||
template<typename Car, typename Cdr, typename State>
|
||||
@ -29,11 +29,11 @@ namespace boost { namespace fusion { namespace detail
|
||||
};
|
||||
|
||||
template<typename State>
|
||||
struct reverse_cons<nil, State>
|
||||
struct reverse_cons<nil_, State>
|
||||
{
|
||||
typedef State type;
|
||||
|
||||
static State const &call(nil const &, State const &state = State())
|
||||
static State const &call(nil_ const &, State const &state = State())
|
||||
{
|
||||
return state;
|
||||
}
|
||||
|
@ -32,7 +32,7 @@
|
||||
|
||||
namespace boost { namespace fusion
|
||||
{
|
||||
struct nil;
|
||||
struct nil_;
|
||||
struct void_;
|
||||
|
||||
template <BOOST_PP_ENUM_PARAMS(FUSION_MAX_LIST_SIZE, typename T)>
|
||||
|
@ -13,7 +13,7 @@
|
||||
|
||||
namespace boost { namespace fusion
|
||||
{
|
||||
struct nil;
|
||||
struct nil_;
|
||||
|
||||
namespace detail
|
||||
{
|
||||
@ -32,7 +32,7 @@ namespace boost { namespace fusion
|
||||
{};
|
||||
|
||||
template <>
|
||||
struct segmented_equal_to<fusion::nil, fusion::nil>
|
||||
struct segmented_equal_to<fusion::nil_, fusion::nil_>
|
||||
: mpl::true_
|
||||
{};
|
||||
}
|
||||
|
@ -19,7 +19,7 @@
|
||||
|
||||
namespace boost { namespace fusion
|
||||
{
|
||||
struct nil;
|
||||
struct nil_;
|
||||
|
||||
namespace detail
|
||||
{
|
||||
|
@ -83,7 +83,7 @@ namespace boost { namespace fusion
|
||||
//auto segmented_next_impl_recurse3(stack)
|
||||
//{
|
||||
// if (size(stack) == 1)
|
||||
// return cons(iterator_range(end(car(stack)), end(car(stack))), nil);
|
||||
// return cons(iterator_range(end(car(stack)), end(car(stack))), nil_);
|
||||
// else
|
||||
// return segmented_next_impl_recurse(stack.cdr);
|
||||
//}
|
||||
|
@ -19,10 +19,10 @@ namespace boost { namespace fusion { namespace detail
|
||||
{
|
||||
//auto segmented_begin( seq )
|
||||
//{
|
||||
// return make_segmented_iterator( segmented_begin_impl( seq, nil ) );
|
||||
// return make_segmented_iterator( segmented_begin_impl( seq, nil_ ) );
|
||||
//}
|
||||
|
||||
template <typename Sequence, typename Nil = fusion::nil>
|
||||
template <typename Sequence, typename Nil = fusion::nil_>
|
||||
struct segmented_begin
|
||||
{
|
||||
typedef
|
||||
|
@ -18,7 +18,7 @@ namespace boost { namespace fusion { namespace detail
|
||||
// return make_segmented_iterator( segmented_end_impl( seq ) );
|
||||
//}
|
||||
|
||||
template <typename Sequence, typename Nil = fusion::nil>
|
||||
template <typename Sequence, typename Nil = fusion::nil_>
|
||||
struct segmented_end
|
||||
{
|
||||
typedef
|
||||
|
@ -20,7 +20,7 @@ namespace boost { namespace fusion
|
||||
{
|
||||
//auto segmented_fold_until(seq, state, fun)
|
||||
//{
|
||||
// return first(segmented_fold_until_impl(seq, state, nil, fun));
|
||||
// return first(segmented_fold_until_impl(seq, state, nil_, fun));
|
||||
//}
|
||||
|
||||
namespace result_of
|
||||
@ -32,7 +32,7 @@ namespace boost { namespace fusion
|
||||
detail::segmented_fold_until_impl<
|
||||
Sequence
|
||||
, State
|
||||
, fusion::nil
|
||||
, fusion::nil_
|
||||
, Fun
|
||||
>
|
||||
filter;
|
||||
@ -55,7 +55,7 @@ namespace boost { namespace fusion
|
||||
typename result_of::segmented_fold_until<Sequence, State, Fun>::filter
|
||||
filter;
|
||||
|
||||
return filter::call(seq, state, fusion::nil(), fun);
|
||||
return filter::call(seq, state, fusion::nil_(), fun);
|
||||
}
|
||||
|
||||
template <typename Sequence, typename State, typename Fun>
|
||||
@ -66,7 +66,7 @@ namespace boost { namespace fusion
|
||||
typename result_of::segmented_fold_until<Sequence const, State, Fun>::filter
|
||||
filter;
|
||||
|
||||
return filter::call(seq, state, fusion::nil(), fun);
|
||||
return filter::call(seq, state, fusion::nil_(), fun);
|
||||
}
|
||||
}}
|
||||
|
||||
|
@ -70,7 +70,7 @@ namespace boost { namespace fusion { namespace detail
|
||||
// switch (size(stack_begin))
|
||||
// {
|
||||
// case 1:
|
||||
// return nil;
|
||||
// return nil_;
|
||||
// case 2:
|
||||
// // car(cdr(stack_begin)) is a range over values.
|
||||
// assert(end(front(car(stack_begin))) == end(car(cdr(stack_begin))));
|
||||
@ -205,7 +205,7 @@ namespace boost { namespace fusion { namespace detail
|
||||
template <typename Stack>
|
||||
struct make_segment_sequence_front<Stack, 1>
|
||||
{
|
||||
typedef typename Stack::cdr_type type; // nil
|
||||
typedef typename Stack::cdr_type type; // nil_
|
||||
|
||||
static type call(Stack const &stack)
|
||||
{
|
||||
@ -218,7 +218,7 @@ namespace boost { namespace fusion { namespace detail
|
||||
// switch (size(stack_end))
|
||||
// {
|
||||
// case 1:
|
||||
// return nil;
|
||||
// return nil_;
|
||||
// case 2:
|
||||
// // car(cdr(stack_back)) is a range over values.
|
||||
// assert(end(front(car(stack_end))) == end(car(cdr(stack_end))));
|
||||
@ -348,7 +348,7 @@ namespace boost { namespace fusion { namespace detail
|
||||
template <typename Stack>
|
||||
struct make_segment_sequence_back<Stack, 1>
|
||||
{
|
||||
typedef typename Stack::cdr_type type; // nil
|
||||
typedef typename Stack::cdr_type type; // nil_
|
||||
|
||||
static type call(Stack const& stack)
|
||||
{
|
||||
|
Reference in New Issue
Block a user