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 13:29:08


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.


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