The BOOST_PP_RELATIVE_ITERATION macro expands to the iteration value of a file-iteration depth relative to the current depth.
Usage
BOOST_PP_RELATIVE_ITERATION(i)
Arguments
- i
-
The relative depth of the frame whose iteration value is to be retreived.
Valid values range from 0 to BOOST_PP_ITERATION_DEPTH() - 1.
Remarks
This macro is only valid when a file-iteration is in progress.
The argument i is interpreted as the number of frames outward from the current frame.
Therefore, BOOST_PP_RELATIVE_ITERATION(0) is equivalent to BOOST_PP_ITERATION().
Requirements
Sample Code
// file.h
#if !BOOST_PP_IS_ITERATING
#ifndef FILE_H_
#define FILE_H_
#include <boost/preprocessor/iteration/iterate.hpp>
1st iteration:
#define BOOST_PP_ITERATION_PARAMS_1 (4, (0, 3, "file.h", 0x0001))
#include BOOST_PP_ITERATE()
2nd iteration:
#define BOOST_PP_ITERATION_PARAMS_1 (4, (1, 10, "file.h", 0x0002))
#include BOOST_PP_ITERATE()
#endif
#elif BOOST_PP_ITERATION_DEPTH() == 1 \
&& BOOST_PP_ITERATION_FLAGS() == 0x0001 \
/**/
--
#define BOOST_PP_ITERATION_PARAMS_2 (3, (1, 10, "file.h"))
#include BOOST_PP_ITERATE()
#elif BOOST_PP_ITERATION_DEPTH() == 1 \
&& BOOST_PP_ITERATION_FLAGS() == 0x0002 \
/**/
--
#define BOOST_PP_ITERATION_PARAMS_2 \
(3, (1, BOOST_PP_ITERATION(), "file.h")) \
/**/
#include BOOST_PP_ITERATE()
#elif BOOST_PP_ITERATION_DEPTH() == 2 \
&& BOOST_PP_FRAME_FLAGS(1) == 0x0001 \
/**/
--
#define BOOST_PP_ITERATION_PARAMS_3 \
(3, (1, BOOST_PP_ITERATION(), "file.h")) \
/**/
#include BOOST_PP_ITERATE()
#else // used by both
previous: BOOST_PP_RELATIVE_ITERATION(1)
current: BOOST_PP_ITERATION()
#endif