Boost logo

Boost :

From: vesa_karvonen (vesa.karvonen_at_[hidden])
Date: 2002-01-16 08:37:48


I'd like to hear suggestions for naming a new repetition primitive to
be added to the preprocessor library. Currently I've named the
primitive as BOOST_PP_REPEAT_WHILE(), but I'd like to hear other
suggestions. The primitive is basically a generalization of
BOOST_PP_REPEAT().

#define BOOST_PP_REPEAT_WHILE(C,F,I,X) /* ... */

  X = State
  C(D,X) = condition to check if repetition should be continued
  F(D,X) = transform from state(n) to state(n+1)
  I(D,X) = instantiate state
  D = repetition depth (for invoking BOOST_PP_REPEAT_WHILE)

Consider the following trivial example:

  #define C(D,X) BOOST_PP_LESS(X,4)
  #define F(D,X) BOOST_PP_INC(X)
  #define I(D,X) X

  BOOST_PP_REPEAT_WHILE(C,F,I,0)

The above expands to:

  0 1 2 3

The above can easily be done using BOOST_PP_REPEAT(), but the ability
to arbitrarily transform the state makes it possible to enumerate a
list (data structure) in O(N) time instead of O(N*N) time.


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