diff --git a/doc/headers/arithmetic/add.hpp.html b/doc/headers/arithmetic/add.hpp.html
new file mode 100644
index 0000000..c9fb843
--- /dev/null
+++ b/doc/headers/arithmetic/add.hpp.html
@@ -0,0 +1,20 @@
+
+
+ arithmetic/add.hpp
+
+
+
+
+ The arithmetic/add.hpp header defines macros for addition.
+
+ Usage
+
+ #include <boost/preprocessor/arithmetic/add.hpp>
+
+ Contents
+
+
+
diff --git a/doc/headers/arithmetic/dec.hpp.html b/doc/headers/arithmetic/dec.hpp.html
new file mode 100644
index 0000000..2e06a7f
--- /dev/null
+++ b/doc/headers/arithmetic/dec.hpp.html
@@ -0,0 +1,19 @@
+
+
+ arithmetic/dec.hpp
+
+
+
+
+ The arithmetic/dec.hpp header defines a decrementation macro.
+
+ Usage
+
+ #include <boost/preprocessor/arithmetic/dec.hpp>
+
+ Contents
+
+
+
diff --git a/doc/headers/arithmetic/div.hpp.html b/doc/headers/arithmetic/div.hpp.html
new file mode 100644
index 0000000..63fa1b3
--- /dev/null
+++ b/doc/headers/arithmetic/div.hpp.html
@@ -0,0 +1,20 @@
+
+
+ arithmetic/div.hpp
+
+
+
+
+ The arithmetic/div.hpp header defines macros for division.
+
+ Usage
+
+ #include <boost/preprocessor/arithmetic/div.hpp>
+
+ Contents
+
+
+
diff --git a/doc/headers/arithmetic/inc.hpp.html b/doc/headers/arithmetic/inc.hpp.html
new file mode 100644
index 0000000..e0208ca
--- /dev/null
+++ b/doc/headers/arithmetic/inc.hpp.html
@@ -0,0 +1,19 @@
+
+
+ arithmetic/inc.hpp
+
+
+
+
+ The arithmetic/inc.hpp header defines an incrementation macro.
+
+ Usage
+
+ #include <boost/preprocessor/arithmetic/inc.hpp>
+
+ Contents
+
+
+
diff --git a/doc/headers/arithmetic/mod.hpp.html b/doc/headers/arithmetic/mod.hpp.html
new file mode 100644
index 0000000..4d7fec4
--- /dev/null
+++ b/doc/headers/arithmetic/mod.hpp.html
@@ -0,0 +1,20 @@
+
+
+ arithmetic/mod.hpp
+
+
+
+
+ The arithmetic/mod.hpp header defines macros for modulus.
+
+ Usage
+
+ #include <boost/preprocessor/arithmetic/mod.hpp>
+
+ Contents
+
+
+
diff --git a/doc/headers/arithmetic/mul.hpp.html b/doc/headers/arithmetic/mul.hpp.html
new file mode 100644
index 0000000..04adf09
--- /dev/null
+++ b/doc/headers/arithmetic/mul.hpp.html
@@ -0,0 +1,20 @@
+
+
+ arithmetic/mul.hpp
+
+
+
+
+ The arithmetic/mul.hpp header defines macros for multiplication.
+
+ Usage
+
+ #include <boost/preprocessor/arithmetic/mul.hpp>
+
+ Contents
+
+
+
diff --git a/doc/headers/arithmetic/sub.hpp.html b/doc/headers/arithmetic/sub.hpp.html
new file mode 100644
index 0000000..3633bde
--- /dev/null
+++ b/doc/headers/arithmetic/sub.hpp.html
@@ -0,0 +1,20 @@
+
+
+ arithmetic/sub.hpp
+
+
+
+
+ The arithmetic/sub.hpp header defines macros for subtraction.
+
+ Usage
+
+ #include <boost/preprocessor/arithmetic/sub.hpp>
+
+ Contents
+
+
+
diff --git a/doc/headers/array/data.hpp.html b/doc/headers/array/data.hpp.html
new file mode 100644
index 0000000..9729172
--- /dev/null
+++ b/doc/headers/array/data.hpp.html
@@ -0,0 +1,19 @@
+
+
+ array/data.hpp
+
+
+
+
+ The array/data.hpp header defines a macro to extract the tuple data from an array .
+
+ Usage
+
+ #include <boost/preprocessor/array/data.hpp>
+
+ Contents
+
+
+
diff --git a/doc/headers/array/elem.hpp.html b/doc/headers/array/elem.hpp.html
new file mode 100644
index 0000000..606219c
--- /dev/null
+++ b/doc/headers/array/elem.hpp.html
@@ -0,0 +1,19 @@
+
+
+ array/elem.hpp
+
+
+
+
+ The array/elem.hpp header defines a macro to extract elements from an array .
+
+ Usage
+
+ #include <boost/preprocessor/array/elem.hpp>
+
+ Contents
+
+
+
diff --git a/doc/headers/array/size.hpp.html b/doc/headers/array/size.hpp.html
new file mode 100644
index 0000000..f1a7895
--- /dev/null
+++ b/doc/headers/array/size.hpp.html
@@ -0,0 +1,19 @@
+
+
+ array/size.hpp
+
+
+
+
+ The array/size.hpp header defines a macro that extracts the size of an array .
+
+ Usage
+
+ #include <boost/preprocessor/array/size.hpp>
+
+ Contents
+
+
+
diff --git a/doc/headers/comparison/equal.hpp.html b/doc/headers/comparison/equal.hpp.html
new file mode 100644
index 0000000..15123ca
--- /dev/null
+++ b/doc/headers/comparison/equal.hpp.html
@@ -0,0 +1,20 @@
+
+
+ comparison/equal.hpp
+
+
+
+
+ The comparison/equal.hpp header defines macros that compare for equality.
+
+ Usage
+
+ #include <boost/preprocessor/comparison/equal.hpp>
+
+ Contents
+
+
+
diff --git a/doc/headers/comparison/greater.hpp.html b/doc/headers/comparison/greater.hpp.html
new file mode 100644
index 0000000..f242edd
--- /dev/null
+++ b/doc/headers/comparison/greater.hpp.html
@@ -0,0 +1,20 @@
+
+
+ comparison/greater.hpp
+
+
+
+
+ The comparison/greater.hpp header defines macros that compare for greater magnitude.
+
+ Usage
+
+ #include <boost/preprocessor/comparison/greater.hpp>
+
+ Contents
+
+
+
diff --git a/doc/headers/comparison/greater_equal.hpp.html b/doc/headers/comparison/greater_equal.hpp.html
new file mode 100644
index 0000000..e4e76d5
--- /dev/null
+++ b/doc/headers/comparison/greater_equal.hpp.html
@@ -0,0 +1,20 @@
+
+
+ comparison/greater_equal.hpp
+
+
+
+
+ The comparison/greater_equal.hpp header defines macros that compare for equality or greater magnitude.
+
+ Usage
+
+ #include <boost/preprocessor/comparison/greater_equal.hpp>
+
+ Contents
+
+
+
diff --git a/doc/headers/comparison/less.hpp.html b/doc/headers/comparison/less.hpp.html
new file mode 100644
index 0000000..20288c8
--- /dev/null
+++ b/doc/headers/comparison/less.hpp.html
@@ -0,0 +1,20 @@
+
+
+ comparison/less.hpp
+
+
+
+
+ The comparison/less.hpp header defines macros that compare for lesser magnitude.
+
+ Usage
+
+ #include <boost/preprocessor/comparison/less.hpp>
+
+ Contents
+
+
+
diff --git a/doc/headers/comparison/less_equal.hpp.html b/doc/headers/comparison/less_equal.hpp.html
new file mode 100644
index 0000000..7809706
--- /dev/null
+++ b/doc/headers/comparison/less_equal.hpp.html
@@ -0,0 +1,20 @@
+
+
+ comparison/less_equal.hpp
+
+
+
+
+ The comparison/less_equal.hpp header defines macros that compare for equality or lesser magnitude.
+
+ Usage
+
+ #include <boost/preprocessor/comparison/less_equal.hpp>
+
+ Contents
+
+
+
diff --git a/doc/headers/comparison/not_equal.hpp.html b/doc/headers/comparison/not_equal.hpp.html
new file mode 100644
index 0000000..2ddf2a6
--- /dev/null
+++ b/doc/headers/comparison/not_equal.hpp.html
@@ -0,0 +1,20 @@
+
+
+ comparison/not_equal.hpp
+
+
+
+
+ The comparison/not_equal.hpp header defines macros that compare for equality.
+
+ Usage
+
+ #include <boost/preprocessor/comparison/not_equal.hpp>
+
+ Contents
+
+
+
diff --git a/doc/headers/config/limits.hpp.html b/doc/headers/config/limits.hpp.html
new file mode 100644
index 0000000..794eae8
--- /dev/null
+++ b/doc/headers/config/limits.hpp.html
@@ -0,0 +1,28 @@
+
+
+ config/limits.hpp
+
+
+
+
+ The config/limits.hpp header defines various library limits.
+
+ Usage
+
+ #include <boost/preprocessor/config/limits.hpp>
+
+ Contents
+
+
+
diff --git a/doc/headers/control/deduce_d.hpp.html b/doc/headers/control/deduce_d.hpp.html
new file mode 100644
index 0000000..95d283d
--- /dev/null
+++ b/doc/headers/control/deduce_d.hpp.html
@@ -0,0 +1,19 @@
+
+
+ control/deduce_d.hpp
+
+
+
+
+ The control/deduce_d.hpp header defines a macro to manually deduce the current state of the BOOST_PP_WHILE construct.
+
+ Usage
+
+ #include <boost/preprocessor/control/deduce_d.hpp>
+
+ Contents
+
+
+
diff --git a/doc/headers/control/expr_if.hpp.html b/doc/headers/control/expr_if.hpp.html
new file mode 100644
index 0000000..bbbc2d9
--- /dev/null
+++ b/doc/headers/control/expr_if.hpp.html
@@ -0,0 +1,19 @@
+
+
+ control/expr_if.hpp
+
+
+
+
+ The control/expr_if.hpp header defines a macro that expands to an expression selectively.
+
+ Usage
+
+ #include <boost/preprocessor/control/expr_if.hpp>
+
+ Contents
+
+
+
diff --git a/doc/headers/control/expr_iif.hpp.html b/doc/headers/control/expr_iif.hpp.html
new file mode 100644
index 0000000..7e47ec1
--- /dev/null
+++ b/doc/headers/control/expr_iif.hpp.html
@@ -0,0 +1,19 @@
+
+
+ control/expr_iif.hpp
+
+
+
+
+ The control/expr_iif.hpp header defines a macro that expands to an expression selectively.
+
+ Usage
+
+ #include <boost/preprocessor/control/expr_iif.hpp>
+
+ Contents
+
+
+
diff --git a/doc/headers/control/if.hpp.html b/doc/headers/control/if.hpp.html
new file mode 100644
index 0000000..9cb01da
--- /dev/null
+++ b/doc/headers/control/if.hpp.html
@@ -0,0 +1,19 @@
+
+
+ control/if.hpp
+
+
+
+
+ The control/if.hpp header defines a macro that chooses between two alternatives.
+
+ Usage
+
+ #include <boost/preprocessor/control/if.hpp>
+
+ Contents
+
+
+
diff --git a/doc/headers/control/iif.hpp.html b/doc/headers/control/iif.hpp.html
new file mode 100644
index 0000000..4bc26bb
--- /dev/null
+++ b/doc/headers/control/iif.hpp.html
@@ -0,0 +1,19 @@
+
+
+ control/iif.hpp
+
+
+
+
+ The control/iif.hpp header defines a macro that chooses between two alternatives.
+
+ Usage
+
+ #include <boost/preprocessor/control/iif.hpp>
+
+ Contents
+
+
+
diff --git a/doc/headers/control/while.hpp.html b/doc/headers/control/while.hpp.html
new file mode 100644
index 0000000..d759749
--- /dev/null
+++ b/doc/headers/control/while.hpp.html
@@ -0,0 +1,20 @@
+
+
+ control/while.hpp
+
+
+
+
+ The control/while.hpp header defines a looping contruct.
+
+ Usage
+
+ #include <boost/preprocessor/control/while.hpp>
+
+ Contents
+
+
+
diff --git a/doc/headers/debug/assert.hpp.html b/doc/headers/debug/assert.hpp.html
new file mode 100644
index 0000000..b7d237b
--- /dev/null
+++ b/doc/headers/debug/assert.hpp.html
@@ -0,0 +1,20 @@
+
+
+ debug/assert.hpp
+
+
+
+
+ The debug/assert.hpp header defines macros for preprocessing-time assertions.
+
+ Usage
+
+ #include <boost/preprocessor/debug/assert.hpp>
+
+ Contents
+
+
+
diff --git a/doc/headers/debug/line.hpp.html b/doc/headers/debug/line.hpp.html
new file mode 100644
index 0000000..eed9348
--- /dev/null
+++ b/doc/headers/debug/line.hpp.html
@@ -0,0 +1,19 @@
+
+
+ debug/line.hpp
+
+
+
+
+ The debug/line.hpp header defines macros for preprocessing-time assertions.
+
+ Usage
+
+ #include <boost/preprocessor/debug/line.hpp>
+
+ Contents
+
+
+
diff --git a/doc/headers/facilities/apply.hpp.html b/doc/headers/facilities/apply.hpp.html
new file mode 100644
index 0000000..f5bce67
--- /dev/null
+++ b/doc/headers/facilities/apply.hpp.html
@@ -0,0 +1,19 @@
+
+
+ facilities/apply.hpp
+
+
+
+
+ The facilities/apply.hpp header defines facilities that abstract the difference between an argument and nothing.
+
+ Usage
+
+ #include <boost/preprocessor/facilities/apply.hpp>
+
+ Contents
+
+
+
diff --git a/doc/headers/facilities/empty.hpp.html b/doc/headers/facilities/empty.hpp.html
new file mode 100644
index 0000000..047a855
--- /dev/null
+++ b/doc/headers/facilities/empty.hpp.html
@@ -0,0 +1,19 @@
+
+
+ facilities/empty.hpp
+
+
+
+
+ The facilities/empty.hpp header defines a nullary macro that expands to nothing.
+
+ Usage
+
+ #include <boost/preprocessor/facilities/empty.hpp>
+
+ Contents
+
+
+
diff --git a/doc/headers/facilities/expand.hpp.html b/doc/headers/facilities/expand.hpp.html
new file mode 100644
index 0000000..06c4ead
--- /dev/null
+++ b/doc/headers/facilities/expand.hpp.html
@@ -0,0 +1,19 @@
+
+
+ facilities/expand.hpp
+
+
+
+
+ The facilities/expand.hpp header defines a macro that causes double expansion.
+
+ Usage
+
+ #include <boost/preprocessor/facilities/expand.hpp>
+
+ Contents
+
+
+
diff --git a/doc/headers/facilities/identity.hpp.html b/doc/headers/facilities/identity.hpp.html
new file mode 100644
index 0000000..b9b9002
--- /dev/null
+++ b/doc/headers/facilities/identity.hpp.html
@@ -0,0 +1,19 @@
+
+
+ facilities/identity.hpp
+
+
+
+
+ The facilities/identity.hpp header defines a utility macro to use with BOOST_PP_IF and BOOST_PP_IIF .
+
+ Usage
+
+ #include <boost/preprocessor/facilities/identity.hpp>
+
+ Contents
+
+
+
diff --git a/doc/headers/facilities/intercept.hpp.html b/doc/headers/facilities/intercept.hpp.html
new file mode 100644
index 0000000..97b66ab
--- /dev/null
+++ b/doc/headers/facilities/intercept.hpp.html
@@ -0,0 +1,19 @@
+
+
+ facilities/intercept.hpp
+
+
+
+
+ The facilities/intercept.hpp header defines a utility macro to intercept a numeric concatenation.
+
+ Usage
+
+ #include <boost/preprocessor/facilities/intercept.hpp>
+
+ Contents
+
+
+
diff --git a/doc/headers/iteration/iterate.hpp.html b/doc/headers/iteration/iterate.hpp.html
new file mode 100644
index 0000000..0ad0695
--- /dev/null
+++ b/doc/headers/iteration/iterate.hpp.html
@@ -0,0 +1,32 @@
+
+
+ iteration/iterate.hpp
+
+
+
+
+ The iteration/iterate.hpp header defines a macros to interface with the file-iteration mechanism.
+
+ Usage
+
+ #include <boost/preprocessor/iteration/iterate.hpp>
+
+ Contents
+
+
+
diff --git a/doc/headers/iteration/local.hpp.html b/doc/headers/iteration/local.hpp.html
new file mode 100644
index 0000000..c514048
--- /dev/null
+++ b/doc/headers/iteration/local.hpp.html
@@ -0,0 +1,19 @@
+
+
+ iteration/local.hpp
+
+
+
+
+ The iteration/local.hpp header defines a macro to interface with the local-iteration mechanism.
+
+ Usage
+
+ #include <boost/preprocessor/iteration/local.hpp>
+
+ Contents
+
+
+
diff --git a/doc/headers/iteration/self.hpp.html b/doc/headers/iteration/self.hpp.html
new file mode 100644
index 0000000..a999a83
--- /dev/null
+++ b/doc/headers/iteration/self.hpp.html
@@ -0,0 +1,19 @@
+
+
+ iteration/self.hpp
+
+
+
+
+ The iteration/self.hpp header defines a macro to facilitate self-inclusion.
+
+ Usage
+
+ #include <boost/preprocessor/iteration/self.hpp>
+
+ Contents
+
+
+
diff --git a/doc/headers/list/adt.hpp.html b/doc/headers/list/adt.hpp.html
new file mode 100644
index 0000000..a753534
--- /dev/null
+++ b/doc/headers/list/adt.hpp.html
@@ -0,0 +1,24 @@
+
+
+ list/adt.hpp
+
+
+
+
+ The list/adt.hpp header defines basic operations for manipulating lists .
+
+ Usage
+
+ #include <boost/preprocessor/list/adt.hpp>
+
+ Contents
+
+
+
diff --git a/doc/headers/list/append.hpp.html b/doc/headers/list/append.hpp.html
new file mode 100644
index 0000000..a269fe7
--- /dev/null
+++ b/doc/headers/list/append.hpp.html
@@ -0,0 +1,20 @@
+
+
+ list/append.hpp
+
+
+
+
+ The list/append.hpp header defines macros for appending one list to another.
+
+ Usage
+
+ #include <boost/preprocessor/list/append.hpp>
+
+ Contents
+
+
+
diff --git a/doc/headers/list/at.hpp.html b/doc/headers/list/at.hpp.html
new file mode 100644
index 0000000..79f4d80
--- /dev/null
+++ b/doc/headers/list/at.hpp.html
@@ -0,0 +1,20 @@
+
+
+ list/at.hpp
+
+
+
+
+ The list/at.hpp header defines macros for extracting an element from a list .
+
+ Usage
+
+ #include <boost/preprocessor/list/at.hpp>
+
+ Contents
+
+
+
diff --git a/doc/headers/list/cat.hpp.html b/doc/headers/list/cat.hpp.html
new file mode 100644
index 0000000..e0303e9
--- /dev/null
+++ b/doc/headers/list/cat.hpp.html
@@ -0,0 +1,20 @@
+
+
+ list/cat.hpp
+
+
+
+
+ The list/cat.hpp header defines macros for concatenating all elements in a list .
+
+ Usage
+
+ #include <boost/preprocessor/list/cat.hpp>
+
+ Contents
+
+
+
diff --git a/doc/headers/list/enum.hpp.html b/doc/headers/list/enum.hpp.html
new file mode 100644
index 0000000..4b856f1
--- /dev/null
+++ b/doc/headers/list/enum.hpp.html
@@ -0,0 +1,20 @@
+
+
+ list/enum.hpp
+
+
+
+
+ The list/enum.hpp header defines macros to convert a list to a comma-separated list.
+
+ Usage
+
+ #include <boost/preprocessor/list/enum.hpp>
+
+ Contents
+
+
+
diff --git a/doc/headers/list/filter.hpp.html b/doc/headers/list/filter.hpp.html
new file mode 100644
index 0000000..4a412e0
--- /dev/null
+++ b/doc/headers/list/filter.hpp.html
@@ -0,0 +1,20 @@
+
+
+ list/filter.hpp
+
+
+
+
+ The list/filter.hpp header defines macros to filter a list .
+
+ Usage
+
+ #include <boost/preprocessor/list/filter.hpp>
+
+ Contents
+
+
+
diff --git a/doc/headers/list/first_n.hpp.html b/doc/headers/list/first_n.hpp.html
new file mode 100644
index 0000000..ffd53d8
--- /dev/null
+++ b/doc/headers/list/first_n.hpp.html
@@ -0,0 +1,20 @@
+
+
+ list/first_n.hpp
+
+
+
+
+ The list/first_n.hpp header defines macros for extracting a group of elements from the beginning of a list .
+
+ Usage
+
+ #include <boost/preprocessor/list/first_n.hpp>
+
+ Contents
+
+
+
diff --git a/doc/headers/list/fold_left.hpp.html b/doc/headers/list/fold_left.hpp.html
new file mode 100644
index 0000000..68ba314
--- /dev/null
+++ b/doc/headers/list/fold_left.hpp.html
@@ -0,0 +1,23 @@
+
+
+ list/fold_left.hpp
+
+
+
+
+ The list/fold_left.hpp header defines folding (or accumulating) a list left-to-right.
+
+ Usage
+
+ #include <boost/preprocessor/list/fold_left.hpp>
+
+ Contents
+
+
+
diff --git a/doc/headers/list/fold_right.hpp.html b/doc/headers/list/fold_right.hpp.html
new file mode 100644
index 0000000..bf5334e
--- /dev/null
+++ b/doc/headers/list/fold_right.hpp.html
@@ -0,0 +1,23 @@
+
+
+ list/fold_right.hpp
+
+
+
+
+ The list/fold_right.hpp header defines folding (or accumulating) a list right-to-left.
+
+ Usage
+
+ #include <boost/preprocessor/list/fold_right.hpp>
+
+ Contents
+
+
+
diff --git a/doc/headers/list/for_each.hpp.html b/doc/headers/list/for_each.hpp.html
new file mode 100644
index 0000000..b469ef1
--- /dev/null
+++ b/doc/headers/list/for_each.hpp.html
@@ -0,0 +1,20 @@
+
+
+ list/for_each.hpp
+
+
+
+
+ The list/for_each.hpp header defines macros to repeat a macro for each element in a list .
+
+ Usage
+
+ #include <boost/preprocessor/list/for_each.hpp>
+
+ Contents
+
+
+
diff --git a/doc/headers/list/for_each_i.hpp.html b/doc/headers/list/for_each_i.hpp.html
new file mode 100644
index 0000000..936c6e5
--- /dev/null
+++ b/doc/headers/list/for_each_i.hpp.html
@@ -0,0 +1,20 @@
+
+
+ list/for_each_i.hpp
+
+
+
+
+ The list/for_each_i.hpp header defines macros to repeat a macro for each element in a list .
+
+ Usage
+
+ #include <boost/preprocessor/list/for_each_i.hpp>
+
+ Contents
+
+
+
diff --git a/doc/headers/list/for_each_product.hpp.html b/doc/headers/list/for_each_product.hpp.html
new file mode 100644
index 0000000..a6c5ee6
--- /dev/null
+++ b/doc/headers/list/for_each_product.hpp.html
@@ -0,0 +1,20 @@
+
+
+ list/for_each_product.hpp
+
+
+
+
+ The list/for_each_product.hpp header defines macros to repeat a macro for each cartesian product of several lists .
+
+ Usage
+
+ #include <boost/preprocessor/list/for_each_product.hpp>
+
+ Contents
+
+
+
diff --git a/doc/headers/list/rest_n.hpp.html b/doc/headers/list/rest_n.hpp.html
new file mode 100644
index 0000000..6580123
--- /dev/null
+++ b/doc/headers/list/rest_n.hpp.html
@@ -0,0 +1,20 @@
+
+
+ list/rest_n.hpp
+
+
+
+
+ The list/rest_n.hpp header defines macros for extracting a group of elements from the end of a list .
+
+ Usage
+
+ #include <boost/preprocessor/list/rest_n.hpp>
+
+ Contents
+
+
+
diff --git a/doc/headers/list/reverse.hpp.html b/doc/headers/list/reverse.hpp.html
new file mode 100644
index 0000000..f66ea64
--- /dev/null
+++ b/doc/headers/list/reverse.hpp.html
@@ -0,0 +1,20 @@
+
+
+ list/reverse.hpp
+
+
+
+
+ The list/reverse.hpp header defines macros to reverse a list .
+
+ Usage
+
+ #include <boost/preprocessor/list/reverse.hpp>
+
+ Contents
+
+
+
diff --git a/doc/headers/list/size.hpp.html b/doc/headers/list/size.hpp.html
new file mode 100644
index 0000000..5b6a3cd
--- /dev/null
+++ b/doc/headers/list/size.hpp.html
@@ -0,0 +1,20 @@
+
+
+ list/size.hpp
+
+
+
+
+ The list/size.hpp header defines macros to calculate the size of a list .
+
+ Usage
+
+ #include <boost/preprocessor/list/size.hpp>
+
+ Contents
+
+
+
diff --git a/doc/headers/list/to_tuple.hpp.html b/doc/headers/list/to_tuple.hpp.html
new file mode 100644
index 0000000..3a3ba9a
--- /dev/null
+++ b/doc/headers/list/to_tuple.hpp.html
@@ -0,0 +1,20 @@
+
+
+ list/to_tuple.hpp
+
+
+
+
+ The list/to_tuple.hpp header defines macros to convert a list to a tuple .
+
+ Usage
+
+ #include <boost/preprocessor/list/to_tuple.hpp>
+
+ Contents
+
+
+
diff --git a/doc/headers/list/transform.hpp.html b/doc/headers/list/transform.hpp.html
new file mode 100644
index 0000000..17867f3
--- /dev/null
+++ b/doc/headers/list/transform.hpp.html
@@ -0,0 +1,20 @@
+
+
+ list/transform.hpp
+
+
+
+
+ The list/transform.hpp header defines macros to transform a list .
+
+ Usage
+
+ #include <boost/preprocessor/list/transform.hpp>
+
+ Contents
+
+
+
diff --git a/doc/headers/logical/and.hpp.html b/doc/headers/logical/and.hpp.html
new file mode 100644
index 0000000..29a86c1
--- /dev/null
+++ b/doc/headers/logical/and.hpp.html
@@ -0,0 +1,19 @@
+
+
+ logical/and.hpp
+
+
+
+
+ The logical/and.hpp header defines a macro that expands to the logical AND of its operands.
+
+ Usage
+
+ #include <boost/preprocessor/logical/and.hpp>
+
+ Contents
+
+
+
diff --git a/doc/headers/logical/bitand.hpp.html b/doc/headers/logical/bitand.hpp.html
new file mode 100644
index 0000000..691533b
--- /dev/null
+++ b/doc/headers/logical/bitand.hpp.html
@@ -0,0 +1,19 @@
+
+
+ logical/bitand.hpp
+
+
+
+
+ The logical/bitand.hpp header defines a macro that expands to the bitwise AND of its operands.
+
+ Usage
+
+ #include <boost/preprocessor/logical/bitand.hpp>
+
+ Contents
+
+
+
diff --git a/doc/headers/logical/bitnor.hpp.html b/doc/headers/logical/bitnor.hpp.html
new file mode 100644
index 0000000..c3312c4
--- /dev/null
+++ b/doc/headers/logical/bitnor.hpp.html
@@ -0,0 +1,19 @@
+
+
+ logical/bitnor.hpp
+
+
+
+
+ The logical/bitnor.hpp header defines a macro that expands to the bitwise NOR of its operands.
+
+ Usage
+
+ #include <boost/preprocessor/logical/bitnor.hpp>
+
+ Contents
+
+
+
diff --git a/doc/headers/logical/bitor.hpp.html b/doc/headers/logical/bitor.hpp.html
new file mode 100644
index 0000000..299f01a
--- /dev/null
+++ b/doc/headers/logical/bitor.hpp.html
@@ -0,0 +1,19 @@
+
+
+ logical/bitor.hpp
+
+
+
+
+ The logical/bitor.hpp header defines a macro that expands to the bitwise OR of its operands.
+
+ Usage
+
+ #include <boost/preprocessor/logical/bitor.hpp>
+
+ Contents
+
+
+
diff --git a/doc/headers/logical/bitxor.hpp.html b/doc/headers/logical/bitxor.hpp.html
new file mode 100644
index 0000000..862c0f3
--- /dev/null
+++ b/doc/headers/logical/bitxor.hpp.html
@@ -0,0 +1,19 @@
+
+
+ logical/bitxor.hpp
+
+
+
+
+ The logical/bitxor.hpp header defines a macro that expands to the bitwise XOR of its operands.
+
+ Usage
+
+ #include <boost/preprocessor/logical/bitxor.hpp>
+
+ Contents
+
+
+
diff --git a/doc/headers/logical/bool.hpp.html b/doc/headers/logical/bool.hpp.html
new file mode 100644
index 0000000..724d0c4
--- /dev/null
+++ b/doc/headers/logical/bool.hpp.html
@@ -0,0 +1,19 @@
+
+
+ logical/bool.hpp
+
+
+
+
+ The logical/bool.hpp header defines a macro that performs a boolean conversion on its operand.
+
+ Usage
+
+ #include <boost/preprocessor/logical/bool.hpp>
+
+ Contents
+
+
+
diff --git a/doc/headers/logical/compl.hpp.html b/doc/headers/logical/compl.hpp.html
new file mode 100644
index 0000000..519ada3
--- /dev/null
+++ b/doc/headers/logical/compl.hpp.html
@@ -0,0 +1,19 @@
+
+
+ logical/compl.hpp
+
+
+
+
+ The logical/compl.hpp header defines a macro that performs a bitwise inversion on its operand.
+
+ Usage
+
+ #include <boost/preprocessor/logical/compl.hpp>
+
+ Contents
+
+
+
diff --git a/doc/headers/logical/nor.hpp.html b/doc/headers/logical/nor.hpp.html
new file mode 100644
index 0000000..25dc873
--- /dev/null
+++ b/doc/headers/logical/nor.hpp.html
@@ -0,0 +1,19 @@
+
+
+ logical/nor.hpp
+
+
+
+
+ The logical/nor.hpp header defines a macro that expands to the logical NOR of its operands.
+
+ Usage
+
+ #include <boost/preprocessor/logical/nor.hpp>
+
+ Contents
+
+
+
diff --git a/doc/headers/logical/not.hpp.html b/doc/headers/logical/not.hpp.html
new file mode 100644
index 0000000..44c2f34
--- /dev/null
+++ b/doc/headers/logical/not.hpp.html
@@ -0,0 +1,19 @@
+
+
+ logical/not.hpp
+
+
+
+
+ The logical/not.hpp header defines a macro that performs a logical NOT on its operand.
+
+ Usage
+
+ #include <boost/preprocessor/logical/not.hpp>
+
+ Contents
+
+
+
diff --git a/doc/headers/logical/or.hpp.html b/doc/headers/logical/or.hpp.html
new file mode 100644
index 0000000..57e8787
--- /dev/null
+++ b/doc/headers/logical/or.hpp.html
@@ -0,0 +1,19 @@
+
+
+ logical/or.hpp
+
+
+
+
+ The logical/or.hpp header defines a macro that expands to the logical OR of its operands.
+
+ Usage
+
+ #include <boost/preprocessor/logical/or.hpp>
+
+ Contents
+
+
+
diff --git a/doc/headers/logical/xor.hpp.html b/doc/headers/logical/xor.hpp.html
new file mode 100644
index 0000000..e4dec9d
--- /dev/null
+++ b/doc/headers/logical/xor.hpp.html
@@ -0,0 +1,19 @@
+
+
+ logical/xor.hpp
+
+
+
+
+ The logical/xor.hpp header defines a macro that expands to the logical XOR of its operands.
+
+ Usage
+
+ #include <boost/preprocessor/logical/xor.hpp>
+
+ Contents
+
+
+
diff --git a/doc/headers/punctuation/comma.hpp.html b/doc/headers/punctuation/comma.hpp.html
new file mode 100644
index 0000000..dbb9621
--- /dev/null
+++ b/doc/headers/punctuation/comma.hpp.html
@@ -0,0 +1,19 @@
+
+
+ punctuation/comma.hpp
+
+
+
+
+ The punctuation/comma.hpp header defines a macro that expands to a comma.
+
+ Usage
+
+ #include <boost/preprocessor/punctuation/comma.hpp>
+
+ Contents
+
+
+
diff --git a/doc/headers/punctuation/comma_if.hpp.html b/doc/headers/punctuation/comma_if.hpp.html
new file mode 100644
index 0000000..2a48a8c
--- /dev/null
+++ b/doc/headers/punctuation/comma_if.hpp.html
@@ -0,0 +1,19 @@
+
+
+ punctuation/comma_if.hpp
+
+
+
+
+ The punctuation/comma_if.hpp header defines a macro that conditionally expands to a comma.
+
+ Usage
+
+ #include <boost/preprocessor/punctuation/comma_if.hpp>
+
+ Contents
+
+
+
diff --git a/doc/headers/punctuation/paren.hpp.html b/doc/headers/punctuation/paren.hpp.html
new file mode 100644
index 0000000..afdc43e
--- /dev/null
+++ b/doc/headers/punctuation/paren.hpp.html
@@ -0,0 +1,20 @@
+
+
+ punctuation/paren.hpp
+
+
+
+
+ The punctuation/paren.hpp header defines macros that expand to left and right parentheses.
+
+ Usage
+
+ #include <boost/preprocessor/punctuation/paren.hpp>
+
+ Contents
+
+
+
diff --git a/doc/headers/punctuation/paren_if.hpp.html b/doc/headers/punctuation/paren_if.hpp.html
new file mode 100644
index 0000000..a6d3f8b
--- /dev/null
+++ b/doc/headers/punctuation/paren_if.hpp.html
@@ -0,0 +1,20 @@
+
+
+ punctuation/paren_if.hpp
+
+
+
+
+ The punctuation/paren_if.hpp header defines macros that conditionally expand to left and right parentheses.
+
+ Usage
+
+ #include <boost/preprocessor/punctuation/paren_if.hpp>
+
+ Contents
+
+
+
diff --git a/doc/headers/repetition/deduce_r.hpp.html b/doc/headers/repetition/deduce_r.hpp.html
new file mode 100644
index 0000000..6ac7de8
--- /dev/null
+++ b/doc/headers/repetition/deduce_r.hpp.html
@@ -0,0 +1,19 @@
+
+
+ control/deduce_r.hpp
+
+
+
+
+ The repetition/deduce_r.hpp header defines a macro to manually deduce the current state of the BOOST_PP_FOR construct.
+
+ Usage
+
+ #include <boost/preprocessor/repetition/deduce_r.hpp>
+
+ Contents
+
+
+
diff --git a/doc/headers/repetition/deduce_z.hpp.html b/doc/headers/repetition/deduce_z.hpp.html
new file mode 100644
index 0000000..0bc9ffd
--- /dev/null
+++ b/doc/headers/repetition/deduce_z.hpp.html
@@ -0,0 +1,19 @@
+
+
+ control/deduce_z.hpp
+
+
+
+
+ The repetition/deduce_z.hpp header defines a macro to manually deduce the current state of the BOOST_PP_REPEAT construct.
+
+ Usage
+
+ #include <boost/preprocessor/repetition/deduce_z.hpp>
+
+ Contents
+
+
+
diff --git a/doc/headers/repetition/enum.hpp.html b/doc/headers/repetition/enum.hpp.html
new file mode 100644
index 0000000..c2ea4e7
--- /dev/null
+++ b/doc/headers/repetition/enum.hpp.html
@@ -0,0 +1,20 @@
+
+
+ repetition/enum.hpp
+
+
+
+
+ The repetition/enum.hpp header defines a construct that produces a comma-separated list.
+
+ Usage
+
+ #include <boost/preprocessor/repetition/enum.hpp>
+
+ Contents
+
+
+
diff --git a/doc/headers/repetition/enum_binary_params.hpp.html b/doc/headers/repetition/enum_binary_params.hpp.html
new file mode 100644
index 0000000..9fe4677
--- /dev/null
+++ b/doc/headers/repetition/enum_binary_params.hpp.html
@@ -0,0 +1,20 @@
+
+
+ repetition/enum_binary_params.hpp
+
+
+
+
+ The repetition/enum_binary_params.hpp header defines a construct that produces a comma-separated list of binary parameters.
+
+ Usage
+
+ #include <boost/preprocessor/repetition/enum_binary_params.hpp>
+
+ Contents
+
+
+
diff --git a/doc/headers/repetition/enum_params.hpp.html b/doc/headers/repetition/enum_params.hpp.html
new file mode 100644
index 0000000..f62c4e2
--- /dev/null
+++ b/doc/headers/repetition/enum_params.hpp.html
@@ -0,0 +1,20 @@
+
+
+ repetition/enum_params.hpp
+
+
+
+
+ The repetition/enum_params.hpp header defines a construct that produces a comma-separated list of parameters.
+
+ Usage
+
+ #include <boost/preprocessor/repetition/enum_params.hpp>
+
+ Contents
+
+
+
diff --git a/doc/headers/repetition/enum_params_with_a_default.hpp.html b/doc/headers/repetition/enum_params_with_a_default.hpp.html
new file mode 100644
index 0000000..ebf8410
--- /dev/null
+++ b/doc/headers/repetition/enum_params_with_a_default.hpp.html
@@ -0,0 +1,19 @@
+
+
+ repetition/enum_params_with_a_default.hpp
+
+
+
+
+ The repetition/enum_params_with_a_default.hpp header defines a construct that produces a comma-separated list of parameters with a default argument.
+
+ Usage
+
+ #include <boost/preprocessor/repetition/enum_params_with_a_default.hpp>
+
+ Contents
+
+
+
diff --git a/doc/headers/repetition/enum_params_with_defaults.hpp.html b/doc/headers/repetition/enum_params_with_defaults.hpp.html
new file mode 100644
index 0000000..07c741b
--- /dev/null
+++ b/doc/headers/repetition/enum_params_with_defaults.hpp.html
@@ -0,0 +1,19 @@
+
+
+ repetition/enum_params_with_defaults.hpp
+
+
+
+
+ The repetition/enum_params_with_defaults.hpp header defines a construct that produces a comma-separated list of parameters with default arguments.
+
+ Usage
+
+ #include <boost/preprocessor/repetition/enum_params_with_defaults.hpp>
+
+ Contents
+
+
+
diff --git a/doc/headers/repetition/enum_shifted.hpp.html b/doc/headers/repetition/enum_shifted.hpp.html
new file mode 100644
index 0000000..29de802
--- /dev/null
+++ b/doc/headers/repetition/enum_shifted.hpp.html
@@ -0,0 +1,20 @@
+
+
+ repetition/enum_shifted.hpp
+
+
+
+
+ The repetition/enum_shifted.hpp header defines a construct that produces a comma-separated, shifted list.
+
+ Usage
+
+ #include <boost/preprocessor/repetition/enum_shifted.hpp>
+
+ Contents
+
+
+
diff --git a/doc/headers/repetition/enum_shifted_params.hpp.html b/doc/headers/repetition/enum_shifted_params.hpp.html
new file mode 100644
index 0000000..25abbf6
--- /dev/null
+++ b/doc/headers/repetition/enum_shifted_params.hpp.html
@@ -0,0 +1,20 @@
+
+
+ repetition/enum_shifted_params.hpp
+
+
+
+
+ The repetition/enum_shifted_params.hpp header defines a construct that produces a comma-separated list of parameters.
+
+ Usage
+
+ #include <boost/preprocessor/repetition/enum_shifted_params.hpp>
+
+ Contents
+
+
+
diff --git a/doc/headers/repetition/enum_trailing.hpp.html b/doc/headers/repetition/enum_trailing.hpp.html
new file mode 100644
index 0000000..616e4ad
--- /dev/null
+++ b/doc/headers/repetition/enum_trailing.hpp.html
@@ -0,0 +1,20 @@
+
+
+ repetition/enum_trailing.hpp
+
+
+
+
+ The repetition/enum_trailing.hpp header defines a construct that produces a comma-separated list with a leading comma.
+
+ Usage
+
+ #include <boost/preprocessor/repetition/enum_trailing.hpp>
+
+ Contents
+
+
+
diff --git a/doc/headers/repetition/enum_trailing_binary_params.hpp.html b/doc/headers/repetition/enum_trailing_binary_params.hpp.html
new file mode 100644
index 0000000..a640f91
--- /dev/null
+++ b/doc/headers/repetition/enum_trailing_binary_params.hpp.html
@@ -0,0 +1,20 @@
+
+
+ repetition/enum_trailing_binary_params.hpp
+
+
+
+
+ The repetition/enum_trailing_binary_params.hpp header defines a construct that produces a comma-separated list of binary parameters with a leading comma.
+
+ Usage
+
+ #include <boost/preprocessor/repetition/enum_trailing_binary_params.hpp>
+
+ Contents
+
+
+
diff --git a/doc/headers/repetition/enum_trailing_params.hpp.html b/doc/headers/repetition/enum_trailing_params.hpp.html
new file mode 100644
index 0000000..73b75b0
--- /dev/null
+++ b/doc/headers/repetition/enum_trailing_params.hpp.html
@@ -0,0 +1,20 @@
+
+
+ repetition/enum_trailing_params.hpp
+
+
+
+
+ The repetition/enum_trailing_params.hpp header defines a construct that produces a comma-separated list of parameters with a leading comma.
+
+ Usage
+
+ #include <boost/preprocessor/repetition/enum_trailing_params.hpp>
+
+ Contents
+
+
+
diff --git a/doc/headers/repetition/for.hpp.html b/doc/headers/repetition/for.hpp.html
new file mode 100644
index 0000000..69e56fe
--- /dev/null
+++ b/doc/headers/repetition/for.hpp.html
@@ -0,0 +1,20 @@
+
+
+ repetition/for.hpp
+
+
+
+
+ The repetition/for.hpp header defines a generalized horizontal repetition construct.
+
+ Usage
+
+ #include <boost/preprocessor/repetition/for.hpp>
+
+ Contents
+
+
+
diff --git a/doc/headers/repetition/repeat.hpp.html b/doc/headers/repetition/repeat.hpp.html
new file mode 100644
index 0000000..7eb16ac
--- /dev/null
+++ b/doc/headers/repetition/repeat.hpp.html
@@ -0,0 +1,23 @@
+
+
+ repetition/repeat.hpp
+
+
+
+
+ The repetition/repeat.hpp header defines a fast horizontal repetition construct.
+
+ Usage
+
+ #include <boost/preprocessor/repetition/repeat.hpp>
+
+ Contents
+
+
+
diff --git a/doc/headers/repetition/repeat_from_to.hpp.html b/doc/headers/repetition/repeat_from_to.hpp.html
new file mode 100644
index 0000000..51c6c50
--- /dev/null
+++ b/doc/headers/repetition/repeat_from_to.hpp.html
@@ -0,0 +1,25 @@
+
+
+ repetition/repeat_from_to.hpp
+
+
+
+
+ The repetition/repeat_from_to.hpp header defines a horizontal repetition construct.
+
+ Usage
+
+ #include <boost/preprocessor/repetition/repeat_from_to.hpp>
+
+ Contents
+
+
+
diff --git a/doc/headers/selection/max.hpp.html b/doc/headers/selection/max.hpp.html
new file mode 100644
index 0000000..e73fa7c
--- /dev/null
+++ b/doc/headers/selection/max.hpp.html
@@ -0,0 +1,20 @@
+
+
+ selection/max.hpp
+
+
+
+
+ The selection/max.hpp header defines a macro that returns the greater of two elements.
+
+ Usage
+
+ #include <boost/preprocessor/selection/max.hpp>
+
+ Contents
+
+
+
diff --git a/doc/headers/selection/min.hpp.html b/doc/headers/selection/min.hpp.html
new file mode 100644
index 0000000..e4dcf53
--- /dev/null
+++ b/doc/headers/selection/min.hpp.html
@@ -0,0 +1,20 @@
+
+
+ selection/min.hpp
+
+
+
+
+ The selection/min.hpp header defines a macro that returns the lesser of two elements.
+
+ Usage
+
+ #include <boost/preprocessor/selection/min.hpp>
+
+ Contents
+
+
+
diff --git a/doc/headers/slot/slot.hpp.html b/doc/headers/slot/slot.hpp.html
new file mode 100644
index 0000000..724732d
--- /dev/null
+++ b/doc/headers/slot/slot.hpp.html
@@ -0,0 +1,20 @@
+
+
+ slot/slot.hpp
+
+
+
+
+ The slot/slot.hpp header defines macros to manipulate slots .
+
+ Usage
+
+ #include <boost/preprocessor/slot/slot.hpp>
+
+ Contents
+
+
+
diff --git a/doc/headers/tuple/eat.hpp.html b/doc/headers/tuple/eat.hpp.html
new file mode 100644
index 0000000..e94cef7
--- /dev/null
+++ b/doc/headers/tuple/eat.hpp.html
@@ -0,0 +1,19 @@
+
+
+ tuple/eat.hpp
+
+
+
+
+ The tuple/eat.hpp header defines a macro eats a tuple .
+
+ Usage
+
+ #include <boost/preprocessor/tuple/eat.hpp>
+
+ Contents
+
+
+
diff --git a/doc/headers/tuple/elem.hpp.html b/doc/headers/tuple/elem.hpp.html
new file mode 100644
index 0000000..b28f174
--- /dev/null
+++ b/doc/headers/tuple/elem.hpp.html
@@ -0,0 +1,19 @@
+
+
+ tuple/elem.hpp
+
+
+
+
+ The tuple/elem.hpp header defines a macro to extract elements from a tuple .
+
+ Usage
+
+ #include <boost/preprocessor/tuple/elem.hpp>
+
+ Contents
+
+
+
diff --git a/doc/headers/tuple/rem.hpp.html b/doc/headers/tuple/rem.hpp.html
new file mode 100644
index 0000000..996dd0f
--- /dev/null
+++ b/doc/headers/tuple/rem.hpp.html
@@ -0,0 +1,19 @@
+
+
+ tuple/rem.hpp
+
+
+
+
+ The tuple/rem.hpp header defines a macro that removes the parentheses from a tuple .
+
+ Usage
+
+ #include <boost/preprocessor/tuple/rem.hpp>
+
+ Contents
+
+
+
diff --git a/doc/headers/tuple/reverse.hpp.html b/doc/headers/tuple/reverse.hpp.html
new file mode 100644
index 0000000..6a533b0
--- /dev/null
+++ b/doc/headers/tuple/reverse.hpp.html
@@ -0,0 +1,19 @@
+
+
+ tuple/reverse.hpp
+
+
+
+
+ The tuple/reverse.hpp header defines a macro that reverses a tuple .
+
+ Usage
+
+ #include <boost/preprocessor/tuple/reverse.hpp>
+
+ Contents
+
+
+
diff --git a/doc/headers/tuple/to_list.hpp.html b/doc/headers/tuple/to_list.hpp.html
new file mode 100644
index 0000000..c5507c6
--- /dev/null
+++ b/doc/headers/tuple/to_list.hpp.html
@@ -0,0 +1,19 @@
+
+
+ tuple/to_list.hpp
+
+
+
+
+ The tuple/to_list.hpp header defines a macro that converts a tuple to a list .
+
+ Usage
+
+ #include <boost/preprocessor/tuple/to_list.hpp>
+
+ Contents
+
+
+
diff --git a/doc/top.html b/doc/top.html
index e061a5b..408da5b 100644
--- a/doc/top.html
+++ b/doc/top.html
@@ -18,7 +18,7 @@
- The Boost Library
+ The Boost Library
Preprocessor Subset for C/C++
diff --git a/test/iteration.h b/test/iteration.h
new file mode 100644
index 0000000..072ab7e
--- /dev/null
+++ b/test/iteration.h
@@ -0,0 +1,61 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002. Permission to copy, use, *
+# * modify, sell, and distribute this software is granted provided *
+# * this copyright notice appears in all copies. This software is *
+# * provided "as is" without express or implied warranty, and with *
+# * no claim at to its suitability for any purpose. *
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# if !BOOST_PP_IS_ITERATING
+#
+# include
+# include
+# include
+#
+# define NO_FLAGS
+#
+# define BOOST_PP_ITERATION_PARAMS_1 (3, (1, 10, ))
+# include BOOST_PP_ITERATE()
+#
+# undef NO_FLAGS
+#
+# define BOOST_PP_ITERATION_PARAMS_1 (4, (1, 5, , 0x0001))
+# include BOOST_PP_ITERATE()
+#
+# define BOOST_PP_ITERATION_PARAMS_1 (4, (1, 5, , 0x0002))
+# include BOOST_PP_ITERATE()
+#
+# elif defined NO_FLAGS
+
+struct BOOST_PP_CAT(X, BOOST_PP_ITERATION()) {
+ BEGIN
+ BOOST_PP_ITERATION() >= BOOST_PP_ITERATION_START() &&
+ BOOST_PP_ITERATION() <= BOOST_PP_ITERATION_FINISH()
+ END
+};
+
+# elif BOOST_PP_ITERATION_DEPTH() == 1 \
+ && BOOST_PP_ITERATION_FLAGS() == 0x0001
+
+struct BOOST_PP_CAT(Y, BOOST_PP_ITERATION()) { };
+
+# elif BOOST_PP_ITERATION_DEPTH() == 1 \
+ && BOOST_PP_ITERATION_FLAGS() == 0x0002
+
+# define BOOST_PP_ITERATION_PARAMS_2 (3, (1, BOOST_PP_ITERATION(), ))
+# include BOOST_PP_ITERATE()
+
+# elif BOOST_PP_ITERATION_DEPTH() == 2 \
+ && BOOST_PP_FRAME_FLAGS(1) == 0x0002
+
+struct BOOST_PP_CAT(Z, BOOST_PP_CAT(BOOST_PP_ITERATION(), BOOST_PP_RELATIVE_ITERATION(1))) { };
+
+# else
+#
+# error should not get here!
+#
+# endif
diff --git a/test/test.h b/test/test.h
new file mode 100644
index 0000000..71bb657
--- /dev/null
+++ b/test/test.h
@@ -0,0 +1,33 @@
+# /* Copyright (C) 2001
+# * Housemarque Oy
+# * http://www.housemarque.com
+# *
+# * Permission to copy, use, modify, sell and distribute this software is
+# * granted provided this copyright notice appears in all copies. This
+# * software is provided "as is" without express or implied warranty, and
+# * with no claim as to its suitability for any purpose.
+# */
+#
+# /* Revised by Paul Mensonides (2002) */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_LIBS_PREPROCESSOR_REGRESSION_TEST_H
+# define BOOST_LIBS_PREPROCESSOR_REGRESSION_TEST_H
+#
+# include
+#
+# define BEGIN typedef int BOOST_PP_CAT(test_, __LINE__)[((
+# define END )==1) ? 1 : -1];
+
+#include
+
+namespace std { }
+using namespace std;
+
+int main(void) {
+ printf("pass " __TIME__);
+ return 0;
+}
+
+# endif