Boost logo

Boost Users :

From: Jeff Flinn (midnight2silverlake_at_[hidden])
Date: 2002-12-09 08:12:52


----- Original Message -----
From: "Paul Mensonides" <yg-boost-users_at_[hidden]>

> "midnight2silverlake" <midnight2silverlake_at_[hidden]> wrote in message
> news:asq7h1+r192_at_eGroups.com...
> > I have what looks like a perfect application for Boost/Preprocessor.
> > I have 192 entries in a Factory Map a portion of which are show
> > below. I'd like to generate the permutations of the three macro
> > inputs, but can't figure out where to start. Any help would be
> > appreciated.
> >
> > #define MAP_ENTRY_MCR( aLang, aType, aAcc ) \
> > \
> > mMap[ CKey( aLang, aType, aAcc ) ] \
> > = CVarX< aLang, aType, aAcc >::Make;
> >
> > MAP_ENTRY_MCR( DCTlanguageC, DCT_DOUBLE , DCT_NONE );
> > MAP_ENTRY_MCR( DCTlanguageC, DCT_DOUBLE , DCT_INIT );
> > MAP_ENTRY_MCR( DCTlanguageC, DCT_DOUBLE , DCT_ANYTIME );
> >
> > MAP_ENTRY_MCR( DCTlanguageC, DCT_FLOAT , DCT_NONE );
> > ...
> >
> > Thanks, Jeff Flinn
>
> Hi Jeff,
>
> I want to make certain that I'm clear about what you're trying to do. You
> have 192 consecutive "MAP_ENTRY_MCR( ... )" with different permutions each
> time, right? How many different elements for each "field" do you have?
> (i.e. how many DCT_DOUBLE, DCT_FLOAT, etc. and how many DCT_NONE,
DCT_INIT,
> etc.)

aLang(4) => DCTlanguageAda, DCTlanguageAdsim, DCTlanguageC
                  , DCTlanguageFortran
aType(8)=> DCT_DOUBLE, DCT_FLOAT
                  , DCT_INT_16, DCT_INT_32, DCT_INT_8
                  , DCT_UINT_16, DCT_UINT_32, DCT_UINT_8
aAcc(3)=> DCT_INIT, DCT_ANYTIME, DCT_NONE

This accounts for 96 MAP_ENTRY_MCR's. There will actually be a 4th macro
argument:

aDim(2)=> DCT_Vector, DCT_Scalar

Which accounts for the 192 entries.

The DCT_ constants are a combination of enums and integer defines. aLang and
aDim are enum entries, with sequential values starting with 1. aType and
aAcc are integer defines. aType is non-sequential, aAcc is sequential
starting with 1. It is possible for any of these to become non-sequential in

the future.

>
> There are several ways to do this, so let me know if I'm clear on what
> you're doing, and I'll help you.
>
> Paul Mensonides

Thanks for the help Paul

Jeff Flinn
Applied Dynamics, International


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