$include_dir="/home/hyper-archives/boost/include"; include("$include_dir/msg-header.inc") ?>
From: John Harris (TT) (john.harris_at_[hidden])
Date: 2002-04-19 07:47:32
Sorry, I haven't figured out how to reply if I'm not receiving e-mail from
the list, to keep the thread intact.
Vesa wrote:
From: "John Harris (TT)" <john.harris_at_[hidden]>
> I found that it compiles fine on MSVC with 100, but invocation of
my
macros
> breaks (compiler runs forever) somewhere between 60 and 75.
>
> I need it to generate enum type declarations and char array
initializer
> lists, and 16 is kind of low for a few of our enums.
How do you iterate the tuple elements? Do you use BOOST_PP_REPEAT()
or do
you convert the tuple to a list and use BOOST_PP_LIST_FOR_EACH()?
Is the syntax very important?
It is possible to build lists that are much longer than the tuple
limit 16
by using the following technique:
BOOST_PP_LIST_FOLD_RIGHT_2ND
( BOOST_PP_LIST_APPEND_D
, BOOST_PP_TUPLE_TO_LIST
( N
, BOOST_PP_TUPLE_TO_LIST(M, (E11, E12, ..., E1M) )
, BOOST_PP_TUPLE_TO_LIST(M, (E21, E22, ..., E2M) )
, ...
, BOOST_PP_TUPLE_TO_LIST(M, (EN1, EN2, ..., ENM) )
)
)
BOOST_PP_LIST_FOLD_RIGHT_2ND() macro is not available in the current
release, but it is available in the CVS.
This may do what I want, although I must admit I can't grok your expression
(what is APPEND_D?). Upon further examination of my macros (which I can't
publish), I recalled that the only reason I need big tuples is because I
didn't want my end-users to have to construct lists using the nested syntax,
where they have to remember to put a LIST_NIL and the right number of
closing parens. So if I can deliver macros that allow a tuple of lists,
like what you've shown, that would probably do. Ideally, I would want a
syntax that was not nested and allowed an arbitrary number of elements, the
number of which I didn't have to specify, but I suspect that's asking for
the moon.
My initial tests using APPEND with two lists showed that I could go over 64
(which turned out to be the limit beyond which MSVC freaked out) by
appending two lists.
jh