Subject: Re: [Boost-users] [preprocessor] How to transform sequence into sequence of tuples.
From: Mostafa (mostafa_working_away_at_[hidden])
Date: 2013-04-12 07:21:59


On Thu, 11 Apr 2013 23:31:07 -0700, Nathan Ridge <zeratul976_at_[hidden]>
wrote:

>> Ah, thanks. I was going down the BOOST_PP_SEQ_FOR_EACH path. My
>> algorithm
>> was going to be
>>
>> #define SEQ (a)(b)(c)(d)
>> #define WRAP(r, data, elem) \
>> LPAREN_IF(MOD(elem-index,2)) elem COMMA_IF(MOD(elem-index,2))
>> RPAREN_IF(NOT(MOD(elem-index,2)))
>> SEQ_FOR_EACH(WRAP, ~, SEQ)
>>
>> But I couldn't figure out how to get the element index.
>
> If you use SEQ_FOR_EACH_I, the element index will be passed in as an
> extra argument to WRAP.

Ah, thanks.

(It would be very helpful if the distinction between SEQ_FOR_EACH_I and
SEQ_FOR_EACH was emphasized in the former, preferably in the short
description at the top of the reference page for SEQ_FOR_EACH_I.)

>> BTW, what is the
>> "next available BOOST_PP_FOR repetition" in the ternary macro for
>> SEQ_FOR_EACH?
>
> This is explained in Topics -> Reentrancy in the Boost.PP docs.
                                    
Thanks again.

(This again demonstrates the need for internal references/links in the
documentation. One shouldn't have to read the *whole* documentation to
effectively use parts of the library. This is very doable when parts of
the library properly link to other relevant and dependent parts.)

Thanks for the pointers.

Mostafa