Boost logo

Boost Users :

Subject: Re: [Boost-users] [Preprocessor] Is it possible to expand recursively?
From: Edward Diener (eldiener_at_[hidden])
Date: 2011-07-17 18:34:41


On 7/17/2011 1:29 PM, Edward Diener wrote:
> On 7/17/2011 9:21 AM, TONGARI wrote:
>> Hello,
>>
>> I'd like to have a macro like:
>>
>> BUILD_HIERARCHY
>> (a,
>> (b,)
>> (c,
>> (d,)
>> (e,)
>> )
>> )
>>
>> which should expand to:
>>
>> struct a {};
>> struct b: a {};
>> struct c: a {};
>> struct d: c {};
>> struct e: c {};
>>
>> Is this possible at all?
>> I have tried but with no luck, if this is impossible, please tell me so.
>>
>
> I think you want above:
>
> (a,
> (b)
> (c,
> (d)
> (e)
> )
> )
>
> This is a tuple with a possible second element as a seq. Each element of
> your seq is a tuple with the same rule as the top tuple.
>
> Following internal logic, perhaps with nested BOOST_PP_WHILEs, you
> should be able to cycle through each tuple and nested tuple forming the
> relationships you have created for your structs above. I can not
> guarantee this will be doable but at least you should have some idea of
> what to do from the description of what you have.

I have to correct the above. The syntax for what I described must be:

(a,
    ((b))
    ((c,
       (d)
       (e))
    )
)


Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net