Workaround for ObjC (mis)use of nil (from Mathias Gaunard)

[SVN r81628]
This commit is contained in:
Joel de Guzman
2012-11-30 02:31:23 +00:00
parent 8d6200ef58
commit 6d265316ed
29 changed files with 64 additions and 61 deletions

View File

@ -11,11 +11,11 @@
namespace boost { namespace fusion namespace boost { namespace fusion
{ {
struct nil; struct nil_;
namespace result_of namespace result_of
{ {
template <typename Car, typename Cdr = nil> template <typename Car, typename Cdr = nil_>
struct cons_tie struct cons_tie
{ {
typedef cons<Car&, Cdr> type; typedef cons<Car&, Cdr> type;

View File

@ -13,11 +13,11 @@
namespace boost { namespace fusion namespace boost { namespace fusion
{ {
struct nil; struct nil_;
namespace result_of namespace result_of
{ {
template <typename Car, typename Cdr = nil> template <typename Car, typename Cdr = nil_>
struct make_cons struct make_cons
{ {
typedef cons<typename detail::as_fusion_element<Car>::type, Cdr> type; typedef cons<typename detail::as_fusion_element<Car>::type, Cdr> type;

View File

@ -34,7 +34,7 @@ namespace boost { namespace fusion
struct forward_traversal_tag; struct forward_traversal_tag;
struct fusion_sequence_tag; struct fusion_sequence_tag;
struct nil : sequence_base<nil> struct nil_ : sequence_base<nil_>
{ {
typedef mpl::int_<0> size; typedef mpl::int_<0> size;
typedef cons_tag fusion_tag; typedef cons_tag fusion_tag;
@ -44,10 +44,10 @@ namespace boost { namespace fusion
typedef void_ car_type; typedef void_ car_type;
typedef void_ cdr_type; typedef void_ cdr_type;
nil() {} nil_() {}
template <typename Iterator> 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> 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> > struct cons : sequence_base<cons<Car, Cdr> >
{ {
typedef mpl::int_<Cdr::size::value+1> size; typedef mpl::int_<Cdr::size::value+1> size;

View File

@ -10,9 +10,12 @@
namespace boost { namespace fusion 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; struct cons;
}} }}

View File

@ -18,14 +18,14 @@
namespace boost { namespace fusion namespace boost { namespace fusion
{ {
struct nil; struct nil_;
struct cons_iterator_tag; struct cons_iterator_tag;
struct forward_traversal_tag; struct forward_traversal_tag;
template <typename Cons> template <typename Cons>
struct cons_iterator_identity; struct cons_iterator_identity;
template <typename Cons = nil> template <typename Cons = nil_>
struct cons_iterator : iterator_base<cons_iterator<Cons> > struct cons_iterator : iterator_base<cons_iterator<Cons> >
{ {
typedef cons_iterator_tag fusion_tag; typedef cons_iterator_tag fusion_tag;
@ -49,40 +49,40 @@ namespace boost { namespace fusion
{ {
typedef forward_traversal_tag category; typedef forward_traversal_tag category;
typedef cons_iterator_tag fusion_tag; typedef cons_iterator_tag fusion_tag;
typedef nil cons_type; typedef nil_ cons_type;
typedef cons_iterator_identity< typedef cons_iterator_identity<
add_const<nil>::type> add_const<nil_>::type>
identity; identity;
nil_iterator() {} nil_iterator() {}
explicit nil_iterator(nil const&) {} explicit nil_iterator(nil_ const&) {}
}; };
template <> template <>
struct cons_iterator<nil> : nil_iterator struct cons_iterator<nil_> : nil_iterator
{ {
cons_iterator() {} cons_iterator() {}
explicit cons_iterator(nil const&) {} explicit cons_iterator(nil_ const&) {}
}; };
template <> template <>
struct cons_iterator<nil const> : nil_iterator struct cons_iterator<nil_ const> : nil_iterator
{ {
cons_iterator() {} cons_iterator() {}
explicit cons_iterator(nil const&) {} explicit cons_iterator(nil_ const&) {}
}; };
template <> template <>
struct cons_iterator<list<> > : nil_iterator struct cons_iterator<list<> > : nil_iterator
{ {
cons_iterator() {} cons_iterator() {}
explicit cons_iterator(nil const&) {} explicit cons_iterator(nil_ const&) {}
}; };
template <> template <>
struct cons_iterator<list<> const> : nil_iterator struct cons_iterator<list<> const> : nil_iterator
{ {
cons_iterator() {} cons_iterator() {}
explicit cons_iterator(nil const&) {} explicit cons_iterator(nil_ const&) {}
}; };
}} }}

View File

@ -13,7 +13,7 @@
namespace boost { namespace fusion namespace boost { namespace fusion
{ {
struct nil; struct nil_;
struct cons_tag; struct cons_tag;

View File

@ -24,12 +24,12 @@ namespace boost { namespace fusion { namespace detail
template <typename First, typename Last> template <typename First, typename Last>
struct build_cons<First, Last, true> struct build_cons<First, Last, true>
{ {
typedef nil type; typedef nil_ type;
static nil static nil_
call(First const&, Last const&) call(First const&, Last const&)
{ {
return nil(); return nil_();
} }
}; };

View File

@ -13,7 +13,7 @@ namespace boost { namespace fusion
{ {
struct cons_tag; struct cons_tag;
struct nil; struct nil_;
template <typename Car, typename Cdr> template <typename Car, typename Cdr>
struct cons; struct cons;
@ -28,7 +28,7 @@ namespace boost { namespace fusion
{ {
template <typename Sequence> template <typename Sequence>
struct apply struct apply
: boost::is_convertible<Sequence, nil> : boost::is_convertible<Sequence, nil_>
{}; {};
}; };
} }

View File

@ -13,7 +13,7 @@
namespace boost { namespace fusion namespace boost { namespace fusion
{ {
struct nil; struct nil_;
struct cons_tag; struct cons_tag;
@ -35,7 +35,7 @@ namespace boost { namespace fusion
struct apply struct apply
{ {
typedef cons_iterator< typedef cons_iterator<
typename mpl::if_<is_const<Sequence>, nil const, nil>::type> typename mpl::if_<is_const<Sequence>, nil_ const, nil_>::type>
type; type;
static type static type

View File

@ -18,7 +18,7 @@
namespace boost { namespace fusion namespace boost { namespace fusion
{ {
struct nil; struct nil_;
struct void_; struct void_;
}} }}
@ -61,7 +61,7 @@ namespace boost { namespace fusion { namespace detail
template <> template <>
struct list_to_cons<BOOST_PP_ENUM(FUSION_MAX_LIST_SIZE, FUSION_VOID, _)> struct list_to_cons<BOOST_PP_ENUM(FUSION_MAX_LIST_SIZE, FUSION_VOID, _)>
{ {
typedef nil type; typedef nil_ type;
}; };
}}} }}}

View File

@ -8,7 +8,7 @@
==============================================================================*/ ==============================================================================*/
namespace boost { namespace fusion namespace boost { namespace fusion
{ {
struct nil; struct nil_;
struct void_; struct void_;
template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9> template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9>
struct list struct list

View File

@ -8,7 +8,7 @@
==============================================================================*/ ==============================================================================*/
namespace boost { namespace fusion namespace boost { namespace fusion
{ {
struct nil; struct nil_;
struct void_; 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> 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 struct list

View File

@ -8,7 +8,7 @@
==============================================================================*/ ==============================================================================*/
namespace boost { namespace fusion namespace boost { namespace fusion
{ {
struct nil; struct nil_;
struct void_; 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> 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 struct list

View File

@ -8,7 +8,7 @@
==============================================================================*/ ==============================================================================*/
namespace boost { namespace fusion namespace boost { namespace fusion
{ {
struct nil; struct nil_;
struct void_; 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> 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 struct list

View File

@ -8,7 +8,7 @@
==============================================================================*/ ==============================================================================*/
namespace boost { namespace fusion namespace boost { namespace fusion
{ {
struct nil; struct nil_;
struct void_; 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> 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 struct list

View File

@ -81,6 +81,6 @@ namespace boost { namespace fusion { namespace detail
template <> template <>
struct list_to_cons<void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_> struct list_to_cons<void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_>
{ {
typedef nil type; typedef nil_ type;
}; };
}}} }}}

View File

@ -141,6 +141,6 @@ namespace boost { namespace fusion { namespace detail
template <> 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_> 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;
}; };
}}} }}}

View File

@ -201,6 +201,6 @@ namespace boost { namespace fusion { namespace detail
template <> 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_> 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;
}; };
}}} }}}

View File

@ -261,6 +261,6 @@ namespace boost { namespace fusion { namespace detail
template <> 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_> 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;
}; };
}}} }}}

View File

@ -321,6 +321,6 @@ namespace boost { namespace fusion { namespace detail
template <> 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_> 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;
}; };
}}} }}}

View File

@ -12,7 +12,7 @@
namespace boost { namespace fusion { namespace detail namespace boost { namespace fusion { namespace detail
{ {
//////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////
template<typename Cons, typename State = nil> template<typename Cons, typename State = nil_>
struct reverse_cons; struct reverse_cons;
template<typename Car, typename Cdr, typename State> template<typename Car, typename Cdr, typename State>
@ -29,11 +29,11 @@ namespace boost { namespace fusion { namespace detail
}; };
template<typename State> template<typename State>
struct reverse_cons<nil, State> struct reverse_cons<nil_, State>
{ {
typedef State type; 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; return state;
} }

View File

@ -32,7 +32,7 @@
namespace boost { namespace fusion namespace boost { namespace fusion
{ {
struct nil; struct nil_;
struct void_; struct void_;
template <BOOST_PP_ENUM_PARAMS(FUSION_MAX_LIST_SIZE, typename T)> template <BOOST_PP_ENUM_PARAMS(FUSION_MAX_LIST_SIZE, typename T)>

View File

@ -13,7 +13,7 @@
namespace boost { namespace fusion namespace boost { namespace fusion
{ {
struct nil; struct nil_;
namespace detail namespace detail
{ {
@ -32,7 +32,7 @@ namespace boost { namespace fusion
{}; {};
template <> template <>
struct segmented_equal_to<fusion::nil, fusion::nil> struct segmented_equal_to<fusion::nil_, fusion::nil_>
: mpl::true_ : mpl::true_
{}; {};
} }

View File

@ -19,7 +19,7 @@
namespace boost { namespace fusion namespace boost { namespace fusion
{ {
struct nil; struct nil_;
namespace detail namespace detail
{ {

View File

@ -83,7 +83,7 @@ namespace boost { namespace fusion
//auto segmented_next_impl_recurse3(stack) //auto segmented_next_impl_recurse3(stack)
//{ //{
// if (size(stack) == 1) // 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 // else
// return segmented_next_impl_recurse(stack.cdr); // return segmented_next_impl_recurse(stack.cdr);
//} //}

View File

@ -19,10 +19,10 @@ namespace boost { namespace fusion { namespace detail
{ {
//auto segmented_begin( seq ) //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 struct segmented_begin
{ {
typedef typedef

View File

@ -18,7 +18,7 @@ namespace boost { namespace fusion { namespace detail
// return make_segmented_iterator( segmented_end_impl( seq ) ); // 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 struct segmented_end
{ {
typedef typedef

View File

@ -20,7 +20,7 @@ namespace boost { namespace fusion
{ {
//auto segmented_fold_until(seq, state, fun) //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 namespace result_of
@ -32,7 +32,7 @@ namespace boost { namespace fusion
detail::segmented_fold_until_impl< detail::segmented_fold_until_impl<
Sequence Sequence
, State , State
, fusion::nil , fusion::nil_
, Fun , Fun
> >
filter; filter;
@ -55,7 +55,7 @@ namespace boost { namespace fusion
typename result_of::segmented_fold_until<Sequence, State, Fun>::filter typename result_of::segmented_fold_until<Sequence, State, Fun>::filter
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> 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 typename result_of::segmented_fold_until<Sequence const, State, Fun>::filter
filter; filter;
return filter::call(seq, state, fusion::nil(), fun); return filter::call(seq, state, fusion::nil_(), fun);
} }
}} }}

View File

@ -70,7 +70,7 @@ namespace boost { namespace fusion { namespace detail
// switch (size(stack_begin)) // switch (size(stack_begin))
// { // {
// case 1: // case 1:
// return nil; // return nil_;
// case 2: // case 2:
// // car(cdr(stack_begin)) is a range over values. // // car(cdr(stack_begin)) is a range over values.
// assert(end(front(car(stack_begin))) == end(car(cdr(stack_begin)))); // assert(end(front(car(stack_begin))) == end(car(cdr(stack_begin))));
@ -205,7 +205,7 @@ namespace boost { namespace fusion { namespace detail
template <typename Stack> template <typename Stack>
struct make_segment_sequence_front<Stack, 1> 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) static type call(Stack const &stack)
{ {
@ -218,7 +218,7 @@ namespace boost { namespace fusion { namespace detail
// switch (size(stack_end)) // switch (size(stack_end))
// { // {
// case 1: // case 1:
// return nil; // return nil_;
// case 2: // case 2:
// // car(cdr(stack_back)) is a range over values. // // car(cdr(stack_back)) is a range over values.
// assert(end(front(car(stack_end))) == end(car(cdr(stack_end)))); // assert(end(front(car(stack_end))) == end(car(cdr(stack_end))));
@ -348,7 +348,7 @@ namespace boost { namespace fusion { namespace detail
template <typename Stack> template <typename Stack>
struct make_segment_sequence_back<Stack, 1> 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) static type call(Stack const& stack)
{ {