Boost logo

Boost :

From: Edward Bishop (dicatna2003_at_[hidden])
Date: 2005-03-02 02:21:40


Hi All,

When I run the following code through the preprocessor, it emits the
correct output:

     alpha is simple;
     beta is simple;
     gamma is complex and color is red;
     delta is simple;
     epsilon is complex ;

but it also emits the folowing warning (several times):

     macro "BOOST_PP_SEQ_ELEM_III" requires 2 arguments, but only 1 given

My question is, how can I eliminate the warning. Thanks in advance
for any comments/advice.

# include <boost/preprocessor/library.hpp>

#define IS_SIMPLE(t) BOOST_PP_NOT_EQUAL(3, BOOST_PP_SEQ_SIZE(t))
#define PROPERTIES(t) BOOST_PP_SEQ_ELEM(2,t)
#define HAS_COLOR(t) BOOST_PP_EQUAL(2, BOOST_PP_SEQ_ELEM(0, \
                                                PROPERTIES(t)))
#define COLOR(t) BOOST_PP_SEQ_ELEM(1, PROPERTIES(t))

#define FSIMPLE(a, s, i, t) \
     BOOST_PP_SEQ_ELEM(0,t) is simple;

#define FCOMPLEX(a, s, i, t) \
     BOOST_PP_SEQ_ELEM(0,t) is complex \
     BOOST_PP_IF(HAS_COLOR(t), and color is COLOR(t) , );

#define FCHOICE(a, s, i, t) \
     BOOST_PP_IF(IS_SIMPLE(t), \
         FSIMPLE(a, s, i, t), \
         FCOMPLEX(a, s, i, t))

#define T(s)\
     BOOST_PP_SEQ_FOR_EACH_I(FCHOICE, s, s) \

T (
    // ID Frequency Properties
    ( (alpha) (16) )
    ( (beta) (3) )
    ( (gamma) (13) ((2) (red)) )
    ( (delta) (5) )
    ( (epsilon) (13) ((4) (heavy)) )
)


Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk