|
Boost-Commit : |
Subject: [Boost-commit] svn:boost r72161 - in branches/pplib/v2/libs: . preprocessor preprocessor/doc preprocessor/doc/data preprocessor/doc/examples preprocessor/doc/headers preprocessor/doc/headers/arithmetic preprocessor/doc/headers/array preprocessor/doc/headers/comparison preprocessor/doc/headers/config preprocessor/doc/headers/control preprocessor/doc/headers/debug preprocessor/doc/headers/facilities preprocessor/doc/headers/iteration preprocessor/doc/headers/list preprocessor/doc/headers/logical preprocessor/doc/headers/punctuation preprocessor/doc/headers/repetition preprocessor/doc/headers/selection preprocessor/doc/headers/seq preprocessor/doc/headers/slot preprocessor/doc/headers/tuple preprocessor/doc/headers/variadic preprocessor/doc/ref preprocessor/doc/terms preprocessor/doc/topics preprocessor/test
From: eldiener_at_[hidden]
Date: 2011-05-25 12:31:12
Author: eldiener
Date: 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
New Revision: 72161
URL: http://svn.boost.org/trac/boost/changeset/72161
Log:
Added new documentation and tests.
Added:
branches/pplib/v2/libs/
branches/pplib/v2/libs/preprocessor/
branches/pplib/v2/libs/preprocessor/doc/
branches/pplib/v2/libs/preprocessor/doc/acknowledgements.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/bibliography.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/contents.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/data/
branches/pplib/v2/libs/preprocessor/doc/data.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/data/arrays.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/data/lists.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/data/sequences.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/data/tuples.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/examples/
branches/pplib/v2/libs/preprocessor/doc/examples.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/examples/array_arithmetic.c (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/examples/catch_builtin.cpp (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/examples/delay.c (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/examples/duffs_device.c (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/examples/is_integral.cpp (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/examples/linear_fib.c (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/headers/
branches/pplib/v2/libs/preprocessor/doc/headers.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/headers/arithmetic/
branches/pplib/v2/libs/preprocessor/doc/headers/arithmetic.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/headers/arithmetic/add.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/headers/arithmetic/dec.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/headers/arithmetic/div.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/headers/arithmetic/inc.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/headers/arithmetic/mod.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/headers/arithmetic/mul.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/headers/arithmetic/sub.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/headers/array/
branches/pplib/v2/libs/preprocessor/doc/headers/array.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/headers/array/data.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/headers/array/elem.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/headers/array/enum.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/headers/array/insert.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/headers/array/pop_back.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/headers/array/pop_front.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/headers/array/push_back.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/headers/array/push_front.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/headers/array/remove.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/headers/array/replace.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/headers/array/reverse.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/headers/array/size.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/headers/array/to_list.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/headers/array/to_seq.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/headers/array/to_tuple.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/headers/assert_msg.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/headers/cat.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/headers/comma.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/headers/comma_if.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/headers/comparison/
branches/pplib/v2/libs/preprocessor/doc/headers/comparison.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/headers/comparison/equal.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/headers/comparison/greater.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/headers/comparison/greater_equal.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/headers/comparison/less.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/headers/comparison/less_equal.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/headers/comparison/not_equal.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/headers/config/
branches/pplib/v2/libs/preprocessor/doc/headers/config/limits.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/headers/config/variadics.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/headers/control/
branches/pplib/v2/libs/preprocessor/doc/headers/control.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/headers/control/deduce_d.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/headers/control/expr_if.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/headers/control/expr_iif.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/headers/control/if.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/headers/control/iif.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/headers/control/while.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/headers/debug/
branches/pplib/v2/libs/preprocessor/doc/headers/debug.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/headers/debug/assert.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/headers/debug/line.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/headers/dec.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/headers/empty.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/headers/enum.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/headers/enum_params.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/headers/enum_shifted.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/headers/enum_shifted_params.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/headers/epwad.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/headers/epwd.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/headers/expand.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/headers/expr_if.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/headers/facilities/
branches/pplib/v2/libs/preprocessor/doc/headers/facilities.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/headers/facilities/apply.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/headers/facilities/empty.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/headers/facilities/expand.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/headers/facilities/identity.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/headers/facilities/intercept.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/headers/facilities/overload.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/headers/for.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/headers/identity.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/headers/if.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/headers/inc.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/headers/iterate.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/headers/iteration/
branches/pplib/v2/libs/preprocessor/doc/headers/iteration.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/headers/iteration/iterate.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/headers/iteration/local.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/headers/iteration/self.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/headers/library.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/headers/limits.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/headers/list/
branches/pplib/v2/libs/preprocessor/doc/headers/list.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/headers/list/adt.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/headers/list/append.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/headers/list/at.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/headers/list/cat.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/headers/list/enum.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/headers/list/filter.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/headers/list/first_n.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/headers/list/fold_left.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/headers/list/fold_right.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/headers/list/for_each.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/headers/list/for_each_i.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/headers/list/for_each_product.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/headers/list/rest_n.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/headers/list/reverse.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/headers/list/size.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/headers/list/to_array.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/headers/list/to_seq.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/headers/list/to_tuple.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/headers/list/transform.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/headers/logical/
branches/pplib/v2/libs/preprocessor/doc/headers/logical.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/headers/logical/and.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/headers/logical/bitand.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/headers/logical/bitnor.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/headers/logical/bitor.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/headers/logical/bitxor.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/headers/logical/bool.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/headers/logical/compl.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/headers/logical/nor.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/headers/logical/not.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/headers/logical/or.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/headers/logical/xor.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/headers/max.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/headers/min.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/headers/preprocessor.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/headers/punctuation/
branches/pplib/v2/libs/preprocessor/doc/headers/punctuation.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/headers/punctuation/comma.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/headers/punctuation/comma_if.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/headers/punctuation/paren.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/headers/punctuation/paren_if.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/headers/repeat.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/headers/repeat_2nd.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/headers/repeat_3rd.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/headers/repeat_from_to.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/headers/repeat_from_to_2nd.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/headers/repeat_from_to_3rd.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/headers/repetition/
branches/pplib/v2/libs/preprocessor/doc/headers/repetition.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/headers/repetition/deduce_r.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/headers/repetition/deduce_z.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/headers/repetition/enum.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/headers/repetition/enum_binary_params.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/headers/repetition/enum_params.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/headers/repetition/enum_shifted.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/headers/repetition/enum_shifted_params.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/headers/repetition/enum_trailing.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/headers/repetition/enum_trailing_params.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/headers/repetition/epwad.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/headers/repetition/epwd.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/headers/repetition/esbp.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/headers/repetition/etbp.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/headers/repetition/for.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/headers/repetition/repeat.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/headers/repetition/repeat_from_to.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/headers/selection/
branches/pplib/v2/libs/preprocessor/doc/headers/selection.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/headers/selection/max.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/headers/selection/min.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/headers/seq/
branches/pplib/v2/libs/preprocessor/doc/headers/seq.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/headers/seq/cat.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/headers/seq/elem.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/headers/seq/enum.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/headers/seq/filter.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/headers/seq/first_n.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/headers/seq/fold_left.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/headers/seq/fold_right.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/headers/seq/for_each.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/headers/seq/for_each_i.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/headers/seq/for_each_product.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/headers/seq/insert.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/headers/seq/pop_back.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/headers/seq/pop_front.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/headers/seq/push_back.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/headers/seq/push_front.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/headers/seq/remove.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/headers/seq/replace.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/headers/seq/rest_n.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/headers/seq/reverse.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/headers/seq/seq.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/headers/seq/size.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/headers/seq/subseq.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/headers/seq/to_array.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/headers/seq/to_list.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/headers/seq/to_tuple.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/headers/seq/transform.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/headers/slot/
branches/pplib/v2/libs/preprocessor/doc/headers/slot.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/headers/slot/counter.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/headers/slot/slot.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/headers/stringize.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/headers/tuple/
branches/pplib/v2/libs/preprocessor/doc/headers/tuple.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/headers/tuple/eat.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/headers/tuple/elem.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/headers/tuple/enum.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/headers/tuple/rem.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/headers/tuple/reverse.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/headers/tuple/size.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/headers/tuple/to_array.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/headers/tuple/to_list.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/headers/tuple/to_seq.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/headers/variadic/
branches/pplib/v2/libs/preprocessor/doc/headers/variadic.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/headers/variadic/elem.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/headers/variadic/size.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/headers/variadic/to_array.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/headers/variadic/to_list.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/headers/variadic/to_seq.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/headers/variadic/to_tuple.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/headers/while.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/headers/wstringize.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/index.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/miscellanea.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/ref/
branches/pplib/v2/libs/preprocessor/doc/ref.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/ref/add.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/ref/add_d.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/ref/and.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/ref/apply.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/ref/array_data.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/ref/array_elem.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/ref/array_enum.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/ref/array_insert.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/ref/array_insert_d.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/ref/array_pop_back.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/ref/array_pop_back_z.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/ref/array_pop_front.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/ref/array_pop_front_z.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/ref/array_push_back.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/ref/array_push_front.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/ref/array_remove.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/ref/array_remove_d.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/ref/array_replace.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/ref/array_replace_d.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/ref/array_reverse.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/ref/array_size.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/ref/array_to_list.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/ref/array_to_seq.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/ref/array_to_tuple.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/ref/assert.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/ref/assert_msg.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/ref/assign_slot.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/ref/bitand.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/ref/bitnor.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/ref/bitor.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/ref/bitxor.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/ref/bool.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/ref/cat.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/ref/comma.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/ref/comma_if.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/ref/compl.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/ref/config_extended_line_info.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/ref/counter.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/ref/dec.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/ref/deduce_d.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/ref/deduce_r.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/ref/deduce_z.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/ref/div.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/ref/div_d.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/ref/empty.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/ref/enum.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/ref/enum_binary_params.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/ref/enum_binary_params_z.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/ref/enum_params.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/ref/enum_params_with_a_default.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/ref/enum_params_with_defaults.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/ref/enum_params_z.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/ref/enum_shifted.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/ref/enum_shifted_params.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/ref/enum_shifted_params_z.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/ref/enum_shifted_z.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/ref/enum_trailing.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/ref/enum_trailing_params.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/ref/enum_trailing_params_z.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/ref/enum_trailing_z.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/ref/enum_z.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/ref/equal.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/ref/equal_d.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/ref/esbp.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/ref/esbpz.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/ref/etbp.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/ref/etbpz.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/ref/expand.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/ref/expr_if.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/ref/expr_iif.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/ref/filename_x.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/ref/for.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/ref/for_r.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/ref/frame_finish.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/ref/frame_flags.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/ref/frame_iteration.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/ref/frame_start.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/ref/greater.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/ref/greater_d.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/ref/greater_equal.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/ref/greater_equal_d.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/ref/identity.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/ref/if.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/ref/iif.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/ref/inc.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/ref/include_self.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/ref/indirect_self.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/ref/intercept.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/ref/is_iterating.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/ref/is_selfish.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/ref/iterate.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/ref/iteration.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/ref/iteration_depth.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/ref/iteration_finish.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/ref/iteration_flags.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/ref/iteration_limits.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/ref/iteration_params_x.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/ref/iteration_start.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/ref/less.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/ref/less_d.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/ref/less_equal.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/ref/less_equal_d.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/ref/limit_dim.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/ref/limit_for.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/ref/limit_iteration.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/ref/limit_iteration_dim.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/ref/limit_mag.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/ref/limit_repeat.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/ref/limit_seq.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/ref/limit_slot_count.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/ref/limit_slot_sig.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/ref/limit_tuple.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/ref/limit_variadic.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/ref/limit_while.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/ref/line.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/ref/list_append.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/ref/list_append_d.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/ref/list_at.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/ref/list_at_d.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/ref/list_cat.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/ref/list_cat_d.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/ref/list_cons.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/ref/list_enum.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/ref/list_enum_r.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/ref/list_filter.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/ref/list_filter_d.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/ref/list_first.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/ref/list_first_n.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/ref/list_first_n_d.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/ref/list_fold_left.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/ref/list_fold_left_2nd.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/ref/list_fold_left_2nd_d.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/ref/list_fold_left_d.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/ref/list_fold_left_d_old.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/ref/list_fold_right.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/ref/list_fold_right_2nd.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/ref/list_fold_right_2nd_d.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/ref/list_fold_right_d.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/ref/list_fold_right_d_old.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/ref/list_for_each.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/ref/list_for_each_i.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/ref/list_for_each_i_r.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/ref/list_for_each_product.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/ref/list_for_each_product_r.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/ref/list_for_each_r.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/ref/list_is_cons.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/ref/list_is_nil.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/ref/list_nil.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/ref/list_rest.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/ref/list_rest_n.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/ref/list_rest_n_d.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/ref/list_reverse.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/ref/list_reverse_d.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/ref/list_size.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/ref/list_size_d.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/ref/list_to_array.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/ref/list_to_seq.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/ref/list_to_tuple.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/ref/list_to_tuple_r.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/ref/list_transform.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/ref/list_transform_d.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/ref/local_iterate.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/ref/local_limits.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/ref/local_macro.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/ref/lparen.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/ref/lparen_if.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/ref/max.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/ref/max_d.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/ref/min.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/ref/min_d.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/ref/mod.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/ref/mod_d.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/ref/mul.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/ref/mul_d.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/ref/nil.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/ref/nor.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/ref/not.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/ref/not_equal.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/ref/not_equal_d.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/ref/or.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/ref/overload.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/ref/relative_finish.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/ref/relative_flags.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/ref/relative_iteration.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/ref/relative_start.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/ref/repeat.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/ref/repeat_1st.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/ref/repeat_2nd.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/ref/repeat_3rd.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/ref/repeat_from_to.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/ref/repeat_from_to_1st.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/ref/repeat_from_to_2nd.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/ref/repeat_from_to_3rd.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/ref/repeat_from_to_d.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/ref/repeat_from_to_d_z.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/ref/repeat_from_to_z.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/ref/repeat_z.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/ref/rparen.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/ref/rparen_if.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/ref/seq_cat.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/ref/seq_cat_s.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/ref/seq_elem.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/ref/seq_enum.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/ref/seq_filter.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/ref/seq_filter_s.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/ref/seq_first_n.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/ref/seq_fold_left.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/ref/seq_fold_left_s.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/ref/seq_fold_right.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/ref/seq_fold_right_s.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/ref/seq_for_each.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/ref/seq_for_each_i.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/ref/seq_for_each_i_r.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/ref/seq_for_each_product.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/ref/seq_for_each_product_r.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/ref/seq_for_each_r.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/ref/seq_head.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/ref/seq_insert.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/ref/seq_nil.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/ref/seq_pop_back.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/ref/seq_pop_front.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/ref/seq_push_back.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/ref/seq_push_front.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/ref/seq_remove.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/ref/seq_replace.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/ref/seq_rest_n.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/ref/seq_reverse.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/ref/seq_reverse_s.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/ref/seq_size.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/ref/seq_subseq.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/ref/seq_tail.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/ref/seq_to_array.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/ref/seq_to_list.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/ref/seq_to_tuple.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/ref/seq_transform.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/ref/seq_transform_s.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/ref/slot.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/ref/stringize.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/ref/sub.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/ref/sub_d.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/ref/tuple_eat.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/ref/tuple_elem.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/ref/tuple_enum.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/ref/tuple_rem.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/ref/tuple_rem_ctor.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/ref/tuple_reverse.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/ref/tuple_size.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/ref/tuple_to_array.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/ref/tuple_to_list.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/ref/tuple_to_seq.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/ref/update_counter.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/ref/value.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/ref/variadic_elem.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/ref/variadic_size.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/ref/variadic_to_array.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/ref/variadic_to_list.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/ref/variadic_to_seq.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/ref/variadic_to_tuple.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/ref/variadics.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/ref/while.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/ref/while_d.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/ref/wstringize.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/ref/xor.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/styles.css (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/syntax.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/terms/
branches/pplib/v2/libs/preprocessor/doc/terms.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/terms/evaluated.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/terms/named_external.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/title.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/top.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/topics/
branches/pplib/v2/libs/preprocessor/doc/topics.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/topics/evaluated_slots.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/topics/file_iteration.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/topics/incompatible.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/topics/local_iteration.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/topics/motivation.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/topics/problems.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/topics/reentrancy.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/topics/techniques.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/doc/topics/variadic_macros.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/index.html (contents, props changed)
branches/pplib/v2/libs/preprocessor/test/
branches/pplib/v2/libs/preprocessor/test/Jamfile.v2 (contents, props changed)
branches/pplib/v2/libs/preprocessor/test/arithmetic.c (contents, props changed)
branches/pplib/v2/libs/preprocessor/test/arithmetic.cpp (contents, props changed)
branches/pplib/v2/libs/preprocessor/test/array.c (contents, props changed)
branches/pplib/v2/libs/preprocessor/test/array.cpp (contents, props changed)
branches/pplib/v2/libs/preprocessor/test/comparison.c (contents, props changed)
branches/pplib/v2/libs/preprocessor/test/comparison.cpp (contents, props changed)
branches/pplib/v2/libs/preprocessor/test/control.c (contents, props changed)
branches/pplib/v2/libs/preprocessor/test/control.cpp (contents, props changed)
branches/pplib/v2/libs/preprocessor/test/debug.c (contents, props changed)
branches/pplib/v2/libs/preprocessor/test/debug.cpp (contents, props changed)
branches/pplib/v2/libs/preprocessor/test/facilities.c (contents, props changed)
branches/pplib/v2/libs/preprocessor/test/facilities.cpp (contents, props changed)
branches/pplib/v2/libs/preprocessor/test/iteration.cpp (contents, props changed)
branches/pplib/v2/libs/preprocessor/test/iteration.h (contents, props changed)
branches/pplib/v2/libs/preprocessor/test/list.c (contents, props changed)
branches/pplib/v2/libs/preprocessor/test/list.cpp (contents, props changed)
branches/pplib/v2/libs/preprocessor/test/logical.c (contents, props changed)
branches/pplib/v2/libs/preprocessor/test/logical.cpp (contents, props changed)
branches/pplib/v2/libs/preprocessor/test/repetition.cpp (contents, props changed)
branches/pplib/v2/libs/preprocessor/test/selection.c (contents, props changed)
branches/pplib/v2/libs/preprocessor/test/selection.cpp (contents, props changed)
branches/pplib/v2/libs/preprocessor/test/seq.c (contents, props changed)
branches/pplib/v2/libs/preprocessor/test/seq.cpp (contents, props changed)
branches/pplib/v2/libs/preprocessor/test/slot.c (contents, props changed)
branches/pplib/v2/libs/preprocessor/test/slot.cpp (contents, props changed)
branches/pplib/v2/libs/preprocessor/test/test.h (contents, props changed)
branches/pplib/v2/libs/preprocessor/test/tuple.c (contents, props changed)
branches/pplib/v2/libs/preprocessor/test/tuple.cpp (contents, props changed)
branches/pplib/v2/libs/preprocessor/test/variadic.c (contents, props changed)
branches/pplib/v2/libs/preprocessor/test/variadic.cpp (contents, props changed)
Added: branches/pplib/v2/libs/preprocessor/doc/acknowledgements.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/acknowledgements.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,58 @@
+<html>
+<head>
+ <title>acknowledgements.html</title>
+ <link rel="stylesheet" type="text/css" href="styles.css">
+</head>
+<body>
+ <h4>Acknowledgements</h4>
+ <div>
+ The following are a few acknowledgements of people that contributed to
+ or were instrumental in the development of the library by Vesa Karnoven and myself.
+ </div>
+ <h4>Vesa Karvonen</h4>
+ <div>
+ The original idea of passing two extra parameters to REPEAT, which makes it possible to create preprocessor code on top of it,
+ was due to Aleksey Gurtovoy.
+ The invokeable IDENTITY macro was invented by him.
+ He also suggested the name for the library.
+ Many thanks to Aleksey for his insights!
+ </div>
+ <div>
+ Thanks to everyone who participated in the review: David Abrahams, Beman Dawes, Ronald Garcia, Douglas Gregor, Aleksey Gurtovoy, Jeremy Siek, and Daryle Walker.
+ </div>
+ <div>
+ Thanks to Chris Little and Mat Marcus for providing help with MWCW.
+ </div>
+ <div>
+ The original automatic recursion technique, which makes many of the library
+ primitives easier to use, was invented by Paul Mensonides.
+ </div>
+ <div>
+ The PREPROCESSOR library has been developed by Vesa Karvonen.
+ </div>
+ <h4>Paul Mensonides</h4>
+ <div>
+ Thanks to Vesa Karvonen for the original conception of the library.
+ His work, his help, and his opinions are all much appreciated.
+ </div>
+ <div>
+ Thanks also to David Abrahams for his observations and continued support.
+ </div>
+ <div>
+ The help of several other Boost developers is also greatly appreciated.
+ In particular, thanks to Aleksey Gurtovoy for his suggestions and to Ralf W. Grosse-Kunstleve for providing
+ access to several compilers for testing.
+ </div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/bibliography.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/bibliography.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,58 @@
+<html>
+<head>
+ <title>bibliography.html</title>
+ <link rel="stylesheet" type="text/css" href="styles.css">
+</head>
+<body>
+<h4>Bibliography</h4>
+<table style="margin-left: 20px">
+ <tr>
+ <td><b><a name="stroustrup"></a>[Stroustrup]</b></td>
+ <td>Stroustrup: <i>The Design and Evolution of C++</i>, ISBN 0201543303</td>
+ </tr>
+ <tr>
+ <td><b><a name="czarnecki"></a>[Czarnecki]</b></td>
+ <td>Czarnecki, Eisenecker: <i>Generative Programming</i>, ISBN 0201309777</td>
+ </tr>
+ <tr>
+ <td><b><b><a name="barton"></a>[Barton]</b></td>
+ <td>Barton, Nackman: <i>Scientific and Engineering C++</i>, ISBN 0201533936</td>
+ </tr>
+ <tr>
+ <td><b><a name="mcconnell"></a>[McConnell]</b></td>
+ <td>McConnell: <i>Code Complete</i>, ISBN 1556154844</td>
+ </tr>
+ <tr>
+ <td><b><a name="std"></a>[Std]</b></td>
+ <td>ISO/IEC 14882:1998 <i>Programming Languages - C++</i></td>
+ </tr>
+ <tr>
+ <td><b>[Thompson]</b></td>
+ <td>Thompson: <i>Haskell: The Craft of Functional Programming</i>, ISBN 0201342758</td>
+ </tr>
+ <tr>
+ <td><b>[Okasaki]</b></td>
+ <td>Okasaki: <i>Purely Functional Data Structures</i>, ISBN 0521663504</td>
+ </tr>
+ <tr>
+ <td><b>[Cousineau]</b></td>
+ <td>Cousineau, Mauny: <i>The Functional Approach to Programming</i>, ISBN 0521576814</td>
+ </tr>
+ <tr>
+ <td><b>[Abelson]</b></td>
+ <td>Abelson, Sussman, Sussman: <i>Structure and Interpretation of Computer Programs</i>, ISBN 0521576814</td>
+ </tr>
+</table>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/contents.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/contents.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,29 @@
+<html>
+<head>
+ <title>contents.html</title>
+ <link rel="stylesheet" type="text/css" href="styles.css">
+ <style>
+ a, a:link, a:visited { color: black; font-weight: bold; }
+ </style>
+</head>
+<body>
+
+<h4>Introduction</h4>
+<h4><a href="topics.html">Topics</h4>
+<h4><a href="terms.html">Terminology</h4>
+<h4><a href="data.html">Data Types</h4>
+<h4><a href="ref.html">Reference</h4>
+<h4><a href="headers.html">Headers</h4>
+<h4><a href="examples.html">Examples</h4>
+<h4><a href="miscellanea.html">Miscellanea</h4>
+
+<!--
+© Copyright Housemarque Oy 2002
+© Copyright Paul Mensonides 2002
+Distributed under the Boost Software License, Version 1.0.
+(See accompanying file LICENSE_1_0.txt or copy at
+http://www.boost.org/LICENSE_1_0.txt)
+-->
+
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/data.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/data.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,27 @@
+<html>
+ <head>
+ <title>data.html</title>
+ <link rel="stylesheet" type="text/css" href="styles.css">
+ <base target="desc">
+ </head>
+ <body>
+ <h4>
+ Data Types <small>[back]</small>
+ </h4>
+ <ul>
+ <li>arrays</li>
+ <li>lists</li>
+ <li>sequences</li>
+ <li>tuples</li>
+ </ul>
+
+<!--
+© Copyright Housemarque Oy 2002
+© Copyright Paul Mensonides 2002
+Distributed under the Boost Software License, Version 1.0.
+(See accompanying file LICENSE_1_0.txt or copy at
+http://www.boost.org/LICENSE_1_0.txt)
+-->
+
+ </body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/data/arrays.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/data/arrays.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,53 @@
+<html>
+<head>
+ <title>arrays.html</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <h4>Arrays</h4>
+ <div>
+ An <i>array</i> is a data structure consisting of a two-element <i>tuple</i>.
+ The first element is the number of elements in the <i>array</i>.
+ The second element is another <i>tuple</i> of the elements in the <i>array</i>.
+ For example,
+ </div>
+ <div class="code">
+ (<i>3</i>, (<i>a</i>, <i>b</i>, <i>c</i>))
+ </div>
+ <div>
+ ...is an <i>array</i> of <i>3</i> elements--<i>a</i>, <i>b</i>, and <i>c</i>.
+ </div>
+ <div>
+ The primary strength of <i>arrays</i> is that they store their own size.
+ Because of this, access to elements does not require the size.
+ It only requires that an element exists at a certain index.
+ </div>
+ <div>
+ This allows macro parameters to be variable in size and allows data states to change
+ size without the user explicitly keeping track of the size independently.
+ </div>
+ <div>
+ Elements of an <i>array</i> can be extracted with <b>BOOST_PP_ARRAY_ELEM</b>,
+ an <i>array's</i> size can be extracted with <b>BOOST_PP_ARRAY_SIZE</b>, and
+ an <i>array</i> can be converted to the more primitive <i>tuple</i> data structure
+ with <b>BOOST_PP_ARRAY_DATA</b>.
+ </div>
+ <h4>Primitives</h4>
+ <ul>
+ <li>BOOST_PP_ARRAY_DATA</li>
+ <li>BOOST_PP_ARRAY_ELEM</li>
+ <li>BOOST_PP_ARRAY_SIZE</li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/data/lists.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/data/lists.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,46 @@
+<html>
+<head>
+ <title>lists.html</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <h4>Lists</h4>
+ <div>
+ A <i>list</i> is a simple cons-style list with a head and a tail.
+ The head of a <i>list</i> is an element,
+ and the tail is either another <i>list</i> or <b>BOOST_PP_NIL</b>.
+ For example,
+ </div>
+ <div class="code">
+ (<i>a</i>, (<i>b</i>, (<i>c</i>, <b>BOOST_PP_NIL</b>)))
+ </div>
+ <div>
+ ...is a <i>list</i> of <i>3</i> elements--<i>a</i>, <i>b</i>, and <i>c</i>.
+ </div>
+ <div>
+ This allows macro parameters to be variable in size and allows data states to change
+ size without the user explicitly keeping track of the size independently.
+ </div>
+ <div>
+ Elements of a <i>list</i> can be extracted with
+ <b>BOOST_PP_LIST_FIRST</b> and <b>BOOST_PP_LIST_REST</b>.
+ </div>
+ <h4>Primitives</h4>
+ <ul>
+ <li>BOOST_PP_LIST_FIRST</li>
+ <li>BOOST_PP_LIST_REST</li>
+ <li>BOOST_PP_NIL</li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/data/sequences.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/data/sequences.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,75 @@
+<html>
+ <head>
+ <title>sequences.html</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+ </head>
+ <body>
+ <h4>
+ Sequences
+ </h4>
+ <div>
+ A <i>sequence</i> (abbreviated to <i>seq</i>) is a group of adjacent parenthesized elements. For example,
+ </div>
+ <div class="code">
+ (<i>a</i>)(<i>b</i>)(<i>c</i>)
+ </div>
+ <div>
+ ...is a <i>seq</i> of <i>3</i> elements--<i>a</i>, <i>b</i>, and <i>c</i>.
+ </div>
+ <div>
+ <i>Sequences</i> are data structures that merge the properties of both <i>lists</i> and
+ <i>tuples</i> with the exception that a <i>seq</i> cannot be empty.
+ Therefore, an "empty" <i>seq</i> is considered a special case scenario that
+ must be handled separately in C++.
+ </div>
+ <div class="code">
+ <pre>
+#define SEQ (x)(y)(z)
+#define REVERSE(s, state, elem) (elem) state
+ // append to head ^
+
+BOOST_PP_SEQ_FOLD_LEFT(REVERSE, BOOST_PP_EMPTY, SEQ)()
+ // #1 #2
+ // 1) placeholder for "empty" seq
+ // 2) remove placeholder
+
+#define SEQ_B (1)(2)(3)
+#define INC(s, state, elem) state (BOOST_PP_INC(elem))
+ // append to tail ^
+
+BOOST_PP_SEQ_FOLD_RIGHT(INC, BOOST_PP_SEQ_NIL, SEQ)
+ // ^
+ // special placeholder that will be "eaten"
+ // by appending to the tail
+</pre>
+ </div>
+ <div>
+ <i>Sequences</i> are extremely efficient. Element access speed approaches
+ random access--even with <i>seqs</i> of up to <i>256</i> elements. This
+ is because element access (among other things) is implemented iteratively
+ rather than recursively. Therefore, elements can be accessed at extremely
+ high indices even on preprocessors with low maximum expansion depths.
+ </div>
+ <div>
+ Elements of a <i>seq</i> can be extracted with <b>BOOST_PP_SEQ_ELEM</b>.
+ </div>
+ <h4>
+ Primitives
+ </h4>
+ <ul>
+ <li>
+ BOOST_PP_SEQ_ELEM</li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+ </body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/data/tuples.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/data/tuples.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,42 @@
+<html>
+<head>
+ <title>tuples.html</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <h4>Tuples</h4>
+ <div>
+ A <i>tuple</i> is a simple comma-separated list of elements inside parenthesis.
+ For example,
+ </div>
+ <div class="code">
+ (<i>a</i>, <i>b</i>, <i>c</i>)
+ </div>
+ <div>
+ ...is a <i>tuple</i> of <i>3</i> elements--<i>a</i>, <i>b</i>, and <i>c</i>.
+ </div>
+ <div>
+ <i>Tuples</i> are fast and easy to use.
+ However, all access to <i>tuples</i> requires knowledge of its size.
+ </div>
+ <div>
+ Elements of a <i>tuple</i> can be extracted with
+ <b>BOOST_PP_TUPLE_ELEM</b>.
+ </div>
+ <h4>Primitives</h4>
+ <ul>
+ <li>BOOST_PP_TUPLE_ELEM</li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/examples.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/examples.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,27 @@
+<html>
+<head>
+ <title>topics.html</title>
+ <link rel="stylesheet" type="text/css" href="styles.css">
+ <base target="desc">
+</head>
+<body>
+<h4>Examples <small>[back]</small></h4>
+<ul>
+ <li>array_arithmetic.c</i>
+ <li>catch_builtin.cpp</i>
+ <li>delay.c</i>
+ <li>duffs_device.c</i>
+ <li>is_integral.cpp</li>
+ <li>linear_fib.c</li>
+</ul>
+
+<!--
+© Copyright Housemarque Oy 2002
+© Copyright Paul Mensonides 2002
+Distributed under the Boost Software License, Version 1.0.
+(See accompanying file LICENSE_1_0.txt or copy at
+http://www.boost.org/LICENSE_1_0.txt)
+-->
+
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/examples/array_arithmetic.c
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/examples/array_arithmetic.c 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,196 @@
+# /* Copyright (C) 2002
+# * Housemarque Oy
+# * http://www.housemarque.com
+# *
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# */
+#
+# /* Revised by Paul Mensonides (2002) */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# /* This example implements over 2200 functions for 1-dimensional arithmetic
+# * array manipulation in C. The idea is to use preprocessor data structures,
+# * lists, and tuples for storing metainformation to be used for generating
+# * the actual C code.
+# *
+# * Who needs templates anyway? :)
+# *
+# * Compile with any C compiler with a standards conforming preprocessor.
+# */
+#
+# include <boost/preprocessor/comparison/less.hpp>
+# include <boost/preprocessor/control/if.hpp>
+# include <boost/preprocessor/list/at.hpp>
+# include <boost/preprocessor/list/cat.hpp>
+# include <boost/preprocessor/list/for_each_product.hpp>
+# include <boost/preprocessor/logical/or.hpp>
+# include <boost/preprocessor/tuple/to_list.hpp>
+# include <boost/preprocessor/tuple/eat.hpp>
+#
+# /* Information about C operators */
+#
+# /* Accessors for the operator datatype. */
+# define OP_SYMBOL(O) BOOST_PP_TUPLE_ELEM(5, 0, O)
+# define OP_NAME(O) BOOST_PP_TUPLE_ELEM(5, 1, O)
+# define OP_IS_FLOATING(O) BOOST_PP_TUPLE_ELEM(5, 2, O)
+# define OP_IS_LOGICAL(O) BOOST_PP_TUPLE_ELEM(5, 3, O)
+# define OP_IS_SHIFT(O) BOOST_PP_TUPLE_ELEM(5, 4, O)
+#
+# /* List of applicative unary operators. */
+# define APPLICATIVE_UNARY_OPS \
+ BOOST_PP_TUPLE_TO_LIST( \
+ 3, \
+ ( \
+ ( ! , logical_not, 1, 1, 0), \
+ ( ~ , bitwise_not, 0, 0, 0), \
+ ( - , neg, 1, 0, 0) \
+ ) \
+ ) \
+ /**/
+#
+# /* List of applicative binary operators. */
+# define APPLICATIVE_BINARY_OPS \
+ BOOST_PP_TUPLE_TO_LIST( \
+ 18, \
+ ( \
+ ( * , mul ,1 ,0 ,0), \
+ ( / , div ,1 ,0 ,0), \
+ ( % , mod ,0 ,0 ,0), \
+ ( + , add ,1 ,0 ,0), \
+ ( - , sub ,1 ,0 ,0), \
+ ( << , shift_left ,0 ,0 ,1), \
+ ( >> , shift_right ,0 ,0 ,1), \
+ ( < , less ,1 ,1 ,0), \
+ ( <= , less_equal ,1 ,1 ,0), \
+ ( >= , greater_equal ,1 ,1 ,0), \
+ ( > , greater ,1 ,1 ,0), \
+ ( == , equal ,1 ,1 ,0), \
+ ( != , not_equal ,1 ,1 ,0), \
+ ( & , bitwise_and ,0 ,0 ,0), \
+ ( | , bitwise_or ,0 ,0 ,0), \
+ ( ^ , bitwise_xor ,0 ,0 ,0), \
+ ( && , logical_and ,1 ,1 ,0), \
+ ( || , logical_or ,1 ,1 ,0) \
+ ) \
+ ) \
+ /**/
+#
+# /* Information about C built-in types. */
+#
+# /* Accessors for the type datatype. */
+# define TYPE_NAME(T) BOOST_PP_TUPLE_ELEM(4, 0, T)
+# define TYPE_ABBREVIATION(T) BOOST_PP_TUPLE_ELEM(4, 1, T)
+# define TYPE_IS_FLOATING(T) BOOST_PP_TUPLE_ELEM(4, 2, T)
+# define TYPE_RANK(T) BOOST_PP_TUPLE_ELEM(4, 3, T)
+#
+# /* List of C built-in types. */
+# define BUILTIN_TYPES \
+ BOOST_PP_TUPLE_TO_LIST( \
+ 12, \
+ ( \
+ ( signed char ,sc, 0, 1), \
+ ( char ,ch, 0, 1), \
+ ( unsigned char ,uc, 0, 1), \
+ ( short ,ss, 0, 2), \
+ ( unsigned short ,us, 0, 2), \
+ TYPE_INT, \
+ ( unsigned ,ui, 0, 4), \
+ ( long ,sl, 0, 5), \
+ ( unsigned long ,ul, 0, 6), \
+ ( float ,fl, 1, 7), \
+ ( double ,db, 1, 8), \
+ ( long double ,ld, 1, 9) \
+ ) \
+ ) \
+ /**/
+#
+# /* Type int is needed in some type computations. */
+# define TYPE_INT (int, si, 0, 3)
+#
+# /* Type computation macros. */
+# define TYPE_OF_INTEGER_PROMOTION(T) \
+ BOOST_PP_IF( \
+ BOOST_PP_LESS(TYPE_RANK(T), TYPE_RANK(TYPE_INT)), \
+ TYPE_INT, T \
+ ) \
+ /**/
+# define TYPE_OF_USUAL_ARITHMETIC_CONVERSION(L, R) \
+ TYPE_OF_INTEGER_PROMOTION( \
+ BOOST_PP_IF( \
+ BOOST_PP_LESS(TYPE_RANK(L), TYPE_RANK(R)), \
+ R, L \
+ ) \
+ ) \
+ /**/
+# define TYPE_OF_UNARY_OP(O, T) \
+ BOOST_PP_IF( \
+ OP_IS_LOGICAL(O), \
+ TYPE_INT, TYPE_OF_INTEGER_PROMOTION(T) \
+ ) \
+ /**/
+# define TYPE_OF_BINARY_OP(O, L, R) \
+ BOOST_PP_IF( \
+ OP_IS_LOGICAL(O), TYPE_INT, \
+ BOOST_PP_IF( \
+ OP_IS_SHIFT(O), \
+ TYPE_OF_INTEGER_PROMOTION(L), \
+ TYPE_OF_USUAL_ARITHMETIC_CONVERSION(L,R) \
+ ) \
+ ) \
+ /**/
+# define IS_VALID_UNARY_OP_AND_TYPE_COMBINATION(O, T) \
+ BOOST_PP_IF( \
+ TYPE_IS_FLOATING(T), \
+ OP_IS_FLOATING(O), 1 \
+ ) \
+ /**/
+# define IS_VALID_BINARY_OP_AND_TYPE_COMBINATION(O, L, R) \
+ BOOST_PP_IF( \
+ BOOST_PP_OR(TYPE_IS_FLOATING(L), TYPE_IS_FLOATING(R)), \
+ OP_IS_FLOATING(O), 1 \
+ ) \
+ /**/
+#
+# /* Generates code for all unary operators and integral types. */
+# define UNARY_ARRAY_OP(_, OT) \
+ BOOST_PP_IF( \
+ IS_VALID_UNARY_OP_AND_TYPE_COMBINATION OT, \
+ UNARY_ARRAY_OP_CODE, BOOST_PP_TUPLE_EAT(2) \
+ ) OT \
+ /**/
+# define UNARY_ARRAY_OP_CODE(O, T) \
+ void BOOST_PP_LIST_CAT(BOOST_PP_TUPLE_TO_LIST(4, (array_, OP_NAME(O), _, TYPE_ABBREVIATION(T)))) \
+ (const TYPE_NAME(T)* in, TYPE_NAME(TYPE_OF_UNARY_OP(O, T))* out, unsigned n) { \
+ do { \
+ *out++ = OP_SYMBOL(O) *in++; \
+ } while (--n); \
+ } \
+ /**/
+
+BOOST_PP_LIST_FOR_EACH_PRODUCT(UNARY_ARRAY_OP, 2, (APPLICATIVE_UNARY_OPS, BUILTIN_TYPES))
+
+# /* Generates code for all binary operators and integral type pairs. */
+# define BINARY_ARRAY_OP(_, OLR) \
+ BOOST_PP_IF( \
+ IS_VALID_BINARY_OP_AND_TYPE_COMBINATION OLR, \
+ BINARY_ARRAY_OP_CODE, BOOST_PP_TUPLE_EAT(3) \
+ ) OLR \
+ /**/
+# define BINARY_ARRAY_OP_CODE(O, L, R) \
+ void BOOST_PP_LIST_CAT( \
+ BOOST_PP_TUPLE_TO_LIST( \
+ 6, (array_, OP_NAME(O), _, TYPE_ABBREVIATION(L), _, TYPE_ABBREVIATION(R)) \
+ ) \
+ )(const TYPE_NAME(L)* lhs_in, const TYPE_NAME(R)* rhs_in, TYPE_NAME(TYPE_OF_BINARY_OP(O, L, R))* out, unsigned n) { \
+ do { \
+ *out++ = *lhs_in OP_SYMBOL(O) *rhs_in; \
+ ++lhs_in; \
+ ++rhs_in; \
+ } while (--n); \
+ } \
+ /**/
+
+BOOST_PP_LIST_FOR_EACH_PRODUCT(BINARY_ARRAY_OP, 3, (APPLICATIVE_BINARY_OPS, BUILTIN_TYPES, BUILTIN_TYPES))
Added: branches/pplib/v2/libs/preprocessor/doc/examples/catch_builtin.cpp
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/examples/catch_builtin.cpp 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,51 @@
+# /* Copyright (C) 2002
+# * Housemarque Oy
+# * http://www.housemarque.com
+# *
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# */
+#
+# /* Revised by Paul Mensonides (2002) */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# /* This example demonstrates the usage of lists and BOOST_PP_LIST_FOR_EACH(). */
+#
+# include <iostream>
+# include <typeinfo>
+#
+# include <boost/preprocessor/list/for_each.hpp>
+# include <boost/preprocessor/tuple/to_list.hpp>
+#
+# /* List of built-in types. (Strictly speaking wchar_t should be on the list.) */
+#
+# define BUILTIN_TYPES \
+ BOOST_PP_TUPLE_TO_LIST( \
+ 13, \
+ ( \
+ bool, \
+ char, signed char, unsigned char, \
+ unsigned short, short, \
+ int, unsigned, \
+ long, unsigned long, \
+ float, \
+ double, long double \
+ ) \
+ ) \
+ /**/
+#
+# define CATCH(R, _, T) \
+ catch (T t) { \
+ std::cerr << "Caught an " << typeid(t).name() << " = " << t; \
+ } \
+ /**/
+
+int main() {
+ try {
+ throw 10;
+ }
+ BOOST_PP_LIST_FOR_EACH(CATCH, _, BUILTIN_TYPES)
+ return 0;
+}
Added: branches/pplib/v2/libs/preprocessor/doc/examples/delay.c
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/examples/delay.c 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,95 @@
+# /* Copyright (C) 2002
+# * Housemarque Oy
+# * http://www.housemarque.com
+# *
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# */
+#
+# /* Revised by Paul Mensonides (2002) */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# /* The time complexity of DELAY(N) is O(2^N).
+# *
+# * Handy when recompiles are too fast to take a coffee break. :)
+# *
+# * Template metaprogramming can be used for implementing similar
+# * delays. Unfortunately template instantiation consumes memory,
+# * therefore compilers usually fail to fully compile long template
+# * based delays, because they run out of memory.
+# *
+# * On many compilers (e.g. g++, MSVC++), this macro takes only a
+# * small amount of memory to preprocess. On some compilers (e.g.
+# * MWCW), however, this macro seems to consume huge amounts of
+# * memory.
+# */
+#
+# include <boost/preprocessor/arithmetic/dec.hpp>
+# include <boost/preprocessor/cat.hpp>
+# include <boost/preprocessor/control/while.hpp>
+# include <boost/preprocessor/facilities/empty.hpp>
+# include <boost/preprocessor/tuple/elem.hpp>
+#
+# ifndef DELAY_MAX
+# define DELAY_MAX 14
+# endif
+#
+# define DELAY(N) BOOST_PP_TUPLE_ELEM(2, 0, (BOOST_PP_EMPTY, BOOST_PP_WHILE(DELAY_C, BOOST_PP_CAT(DELAY_F, N), BOOST_PP_DEC(N))))()
+#
+# define DELAY_C(D, N) N
+#
+# define DELAY_F0(D, N) BOOST_PP_IF(1, BOOST_PP_DEC(N), BOOST_PP_WHILE_ ## D(DELAY_C, DELAY_F ## N, BOOST_PP_DEC(N)))
+# define DELAY_F1(D, N) BOOST_PP_IF(1, BOOST_PP_DEC(N), BOOST_PP_WHILE_ ## D(DELAY_C, DELAY_F ## N, BOOST_PP_DEC(N)))
+# define DELAY_F2(D, N) BOOST_PP_IF(1, BOOST_PP_DEC(N), BOOST_PP_WHILE_ ## D(DELAY_C, DELAY_F ## N, BOOST_PP_DEC(N)))
+# define DELAY_F3(D, N) BOOST_PP_IF(1, BOOST_PP_DEC(N), BOOST_PP_WHILE_ ## D(DELAY_C, DELAY_F ## N, BOOST_PP_DEC(N)))
+# define DELAY_F4(D, N) BOOST_PP_IF(1, BOOST_PP_DEC(N), BOOST_PP_WHILE_ ## D(DELAY_C, DELAY_F ## N, BOOST_PP_DEC(N)))
+# define DELAY_F5(D, N) BOOST_PP_IF(1, BOOST_PP_DEC(N), BOOST_PP_WHILE_ ## D(DELAY_C, DELAY_F ## N, BOOST_PP_DEC(N)))
+# define DELAY_F6(D, N) BOOST_PP_IF(1, BOOST_PP_DEC(N), BOOST_PP_WHILE_ ## D(DELAY_C, DELAY_F ## N, BOOST_PP_DEC(N)))
+# define DELAY_F7(D, N) BOOST_PP_IF(1, BOOST_PP_DEC(N), BOOST_PP_WHILE_ ## D(DELAY_C, DELAY_F ## N, BOOST_PP_DEC(N)))
+# define DELAY_F8(D, N) BOOST_PP_IF(1, BOOST_PP_DEC(N), BOOST_PP_WHILE_ ## D(DELAY_C, DELAY_F ## N, BOOST_PP_DEC(N)))
+# define DELAY_F9(D, N) BOOST_PP_IF(1, BOOST_PP_DEC(N), BOOST_PP_WHILE_ ## D(DELAY_C, DELAY_F ## N, BOOST_PP_DEC(N)))
+# define DELAY_F10(D, N) BOOST_PP_IF(1, BOOST_PP_DEC(N), BOOST_PP_WHILE_ ## D(DELAY_C, DELAY_F ## N, BOOST_PP_DEC(N)))
+# define DELAY_F11(D, N) BOOST_PP_IF(1, BOOST_PP_DEC(N), BOOST_PP_WHILE_ ## D(DELAY_C, DELAY_F ## N, BOOST_PP_DEC(N)))
+# define DELAY_F12(D, N) BOOST_PP_IF(1, BOOST_PP_DEC(N), BOOST_PP_WHILE_ ## D(DELAY_C, DELAY_F ## N, BOOST_PP_DEC(N)))
+# define DELAY_F13(D, N) BOOST_PP_IF(1, BOOST_PP_DEC(N), BOOST_PP_WHILE_ ## D(DELAY_C, DELAY_F ## N, BOOST_PP_DEC(N)))
+# define DELAY_F14(D, N) BOOST_PP_IF(1, BOOST_PP_DEC(N), BOOST_PP_WHILE_ ## D(DELAY_C, DELAY_F ## N, BOOST_PP_DEC(N)))
+# define DELAY_F15(D, N) BOOST_PP_IF(1, BOOST_PP_DEC(N), BOOST_PP_WHILE_ ## D(DELAY_C, DELAY_F ## N, BOOST_PP_DEC(N)))
+# define DELAY_F16(D, N) BOOST_PP_IF(1, BOOST_PP_DEC(N), BOOST_PP_WHILE_ ## D(DELAY_C, DELAY_F ## N, BOOST_PP_DEC(N)))
+# define DELAY_F17(D, N) BOOST_PP_IF(1, BOOST_PP_DEC(N), BOOST_PP_WHILE_ ## D(DELAY_C, DELAY_F ## N, BOOST_PP_DEC(N)))
+# define DELAY_F18(D, N) BOOST_PP_IF(1, BOOST_PP_DEC(N), BOOST_PP_WHILE_ ## D(DELAY_C, DELAY_F ## N, BOOST_PP_DEC(N)))
+# define DELAY_F19(D, N) BOOST_PP_IF(1, BOOST_PP_DEC(N), BOOST_PP_WHILE_ ## D(DELAY_C, DELAY_F ## N, BOOST_PP_DEC(N)))
+# define DELAY_F20(D, N) BOOST_PP_IF(1, BOOST_PP_DEC(N), BOOST_PP_WHILE_ ## D(DELAY_C, DELAY_F ## N, BOOST_PP_DEC(N)))
+# define DELAY_F21(D, N) BOOST_PP_IF(1, BOOST_PP_DEC(N), BOOST_PP_WHILE_ ## D(DELAY_C, DELAY_F ## N, BOOST_PP_DEC(N)))
+# define DELAY_F22(D, N) BOOST_PP_IF(1, BOOST_PP_DEC(N), BOOST_PP_WHILE_ ## D(DELAY_C, DELAY_F ## N, BOOST_PP_DEC(N)))
+# define DELAY_F23(D, N) BOOST_PP_IF(1, BOOST_PP_DEC(N), BOOST_PP_WHILE_ ## D(DELAY_C, DELAY_F ## N, BOOST_PP_DEC(N)))
+# define DELAY_F24(D, N) BOOST_PP_IF(1, BOOST_PP_DEC(N), BOOST_PP_WHILE_ ## D(DELAY_C, DELAY_F ## N, BOOST_PP_DEC(N)))
+# define DELAY_F25(D, N) BOOST_PP_IF(1, BOOST_PP_DEC(N), BOOST_PP_WHILE_ ## D(DELAY_C, DELAY_F ## N, BOOST_PP_DEC(N)))
+# define DELAY_F26(D, N) BOOST_PP_IF(1, BOOST_PP_DEC(N), BOOST_PP_WHILE_ ## D(DELAY_C, DELAY_F ## N, BOOST_PP_DEC(N)))
+# define DELAY_F27(D, N) BOOST_PP_IF(1, BOOST_PP_DEC(N), BOOST_PP_WHILE_ ## D(DELAY_C, DELAY_F ## N, BOOST_PP_DEC(N)))
+# define DELAY_F28(D, N) BOOST_PP_IF(1, BOOST_PP_DEC(N), BOOST_PP_WHILE_ ## D(DELAY_C, DELAY_F ## N, BOOST_PP_DEC(N)))
+# define DELAY_F29(D, N) BOOST_PP_IF(1, BOOST_PP_DEC(N), BOOST_PP_WHILE_ ## D(DELAY_C, DELAY_F ## N, BOOST_PP_DEC(N)))
+# define DELAY_F30(D, N) BOOST_PP_IF(1, BOOST_PP_DEC(N), BOOST_PP_WHILE_ ## D(DELAY_C, DELAY_F ## N, BOOST_PP_DEC(N)))
+# define DELAY_F31(D, N) BOOST_PP_IF(1, BOOST_PP_DEC(N), BOOST_PP_WHILE_ ## D(DELAY_C, DELAY_F ## N, BOOST_PP_DEC(N)))
+# define DELAY_F32(D, N) BOOST_PP_IF(1, BOOST_PP_DEC(N), BOOST_PP_WHILE_ ## D(DELAY_C, DELAY_F ## N, BOOST_PP_DEC(N)))
+# define DELAY_F33(D, N) BOOST_PP_IF(1, BOOST_PP_DEC(N), BOOST_PP_WHILE_ ## D(DELAY_C, DELAY_F ## N, BOOST_PP_DEC(N)))
+# define DELAY_F34(D, N) BOOST_PP_IF(1, BOOST_PP_DEC(N), BOOST_PP_WHILE_ ## D(DELAY_C, DELAY_F ## N, BOOST_PP_DEC(N)))
+# define DELAY_F35(D, N) BOOST_PP_IF(1, BOOST_PP_DEC(N), BOOST_PP_WHILE_ ## D(DELAY_C, DELAY_F ## N, BOOST_PP_DEC(N)))
+# define DELAY_F36(D, N) BOOST_PP_IF(1, BOOST_PP_DEC(N), BOOST_PP_WHILE_ ## D(DELAY_C, DELAY_F ## N, BOOST_PP_DEC(N)))
+# define DELAY_F37(D, N) BOOST_PP_IF(1, BOOST_PP_DEC(N), BOOST_PP_WHILE_ ## D(DELAY_C, DELAY_F ## N, BOOST_PP_DEC(N)))
+# define DELAY_F38(D, N) BOOST_PP_IF(1, BOOST_PP_DEC(N), BOOST_PP_WHILE_ ## D(DELAY_C, DELAY_F ## N, BOOST_PP_DEC(N)))
+# define DELAY_F39(D, N) BOOST_PP_IF(1, BOOST_PP_DEC(N), BOOST_PP_WHILE_ ## D(DELAY_C, DELAY_F ## N, BOOST_PP_DEC(N)))
+# define DELAY_F40(D, N) BOOST_PP_IF(1, BOOST_PP_DEC(N), BOOST_PP_WHILE_ ## D(DELAY_C, DELAY_F ## N, BOOST_PP_DEC(N)))
+# define DELAY_F41(D, N) BOOST_PP_IF(1, BOOST_PP_DEC(N), BOOST_PP_WHILE_ ## D(DELAY_C, DELAY_F ## N, BOOST_PP_DEC(N)))
+# define DELAY_F42(D, N) BOOST_PP_IF(1, BOOST_PP_DEC(N), BOOST_PP_WHILE_ ## D(DELAY_C, DELAY_F ## N, BOOST_PP_DEC(N)))
+# define DELAY_F43(D, N) BOOST_PP_IF(1, BOOST_PP_DEC(N), BOOST_PP_WHILE_ ## D(DELAY_C, DELAY_F ## N, BOOST_PP_DEC(N)))
+# define DELAY_F44(D, N) BOOST_PP_IF(1, BOOST_PP_DEC(N), BOOST_PP_WHILE_ ## D(DELAY_C, DELAY_F ## N, BOOST_PP_DEC(N)))
+# define DELAY_F45(D, N) BOOST_PP_IF(1, BOOST_PP_DEC(N), BOOST_PP_WHILE_ ## D(DELAY_C, DELAY_F ## N, BOOST_PP_DEC(N)))
+# define DELAY_F46(D, N) BOOST_PP_IF(1, BOOST_PP_DEC(N), BOOST_PP_WHILE_ ## D(DELAY_C, DELAY_F ## N, BOOST_PP_DEC(N)))
+# define DELAY_F47(D, N) BOOST_PP_IF(1, BOOST_PP_DEC(N), BOOST_PP_WHILE_ ## D(DELAY_C, DELAY_F ## N, BOOST_PP_DEC(N)))
+# define DELAY_F48(D, N) BOOST_PP_IF(1, BOOST_PP_DEC(N), BOOST_PP_WHILE_ ## D(DELAY_C, DELAY_F ## N, BOOST_PP_DEC(N)))
+# define DELAY_F49(D, N) BOOST_PP_IF(1, BOOST_PP_DEC(N), BOOST_PP_WHILE_ ## D(DELAY_C, DELAY_F ## N, BOOST_PP_DEC(N)))
+# define DELAY_F50(D, N) BOOST_PP_IF(1, BOOST_PP_DEC(N), BOOST_PP_WHILE_ ## D(DELAY_C, DELAY_F ## N, BOOST_PP_DEC(N)))
+
+DELAY(DELAY_MAX)
Added: branches/pplib/v2/libs/preprocessor/doc/examples/duffs_device.c
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/examples/duffs_device.c 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,61 @@
+# /* Copyright (C) 2002
+# * Housemarque Oy
+# * http://www.housemarque.com
+# *
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# */
+#
+# /* Revised by Paul Mensonides (2002) */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# /* This example uses the preprocessor library to implement a generalized
+# * macro for implementing Duff's Device.
+# *
+# * This example was inspired by an original generalized macro for
+# * for implementing Duff's Device written by Joerg Walter.
+# */
+#
+# include <assert.h>
+#
+# include <boost/preprocessor/repetition/repeat.hpp>
+# include <boost/preprocessor/tuple/elem.hpp>
+#
+# /* Expands to a Duff's Device. */
+# define DUFFS_DEVICE(UNROLLING_FACTOR, COUNTER_TYPE, N, STATEMENT) \
+ do { \
+ COUNTER_TYPE duffs_device_initial_cnt = (N); \
+ if (duffs_device_initial_cnt > 0) { \
+ COUNTER_TYPE duffs_device_running_cnt = (duffs_device_initial_cnt + (UNROLLING_FACTOR - 1)) / UNROLLING_FACTOR; \
+ switch (duffs_device_initial_cnt % UNROLLING_FACTOR) { \
+ do { \
+ BOOST_PP_REPEAT(UNROLLING_FACTOR, DUFFS_DEVICE_C, (UNROLLING_FACTOR, { STATEMENT })) \
+ } while (--duffs_device_running_cnt); \
+ } \
+ } \
+ } while (0) \
+ /**/
+#
+# define DUFFS_DEVICE_C(Z, I, UNROLLING_FACTOR_STATEMENT) \
+ case (I ? BOOST_PP_TUPLE_ELEM(2, 0, UNROLLING_FACTOR_STATEMENT) - I : 0): \
+ BOOST_PP_TUPLE_ELEM(2, 1, UNROLLING_FACTOR_STATEMENT); \
+ /**/
+#
+# ifndef UNROLLING_FACTOR
+# define UNROLLING_FACTOR 16
+# endif
+#
+# ifndef N
+# define N 1000
+# endif
+
+int main(void) {
+ int i = 0;
+ DUFFS_DEVICE(UNROLLING_FACTOR, int, 0, ++i;);
+ assert(i == 0);
+ DUFFS_DEVICE(UNROLLING_FACTOR, int, N, ++i;);
+ assert(i == N);
+ return 0;
+}
Added: branches/pplib/v2/libs/preprocessor/doc/examples/is_integral.cpp
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/examples/is_integral.cpp 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,49 @@
+# /* Copyright (C) 2002
+# * Housemarque Oy
+# * http://www.housemarque.com
+# *
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# */
+#
+# /* Revised by Paul Mensonides (2002) */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# /* This example demonstrates the usage of preprocessor lists for generating C++ code. */
+#
+# include <boost/preprocessor/facilities/empty.hpp>
+# include <boost/preprocessor/list/at.hpp>
+# include <boost/preprocessor/list/for_each_product.hpp>
+# include <boost/preprocessor/tuple/elem.hpp>
+# include <boost/preprocessor/tuple/to_list.hpp>
+#
+# /* List of integral types. (Strictly speaking, wchar_t should be on the list.) */
+# define INTEGRAL_TYPES \
+ BOOST_PP_TUPLE_TO_LIST( \
+ 9, (char, signed char, unsigned char, short, unsigned short, int, unsigned, long, unsigned long) \
+ ) \
+ /**/
+#
+# /* List of invokeable cv-qualifiers */
+# define CV_QUALIFIERS \
+ BOOST_PP_TUPLE_TO_LIST( \
+ 4, (BOOST_PP_EMPTY, const BOOST_PP_EMPTY, volatile BOOST_PP_EMPTY, const volatile BOOST_PP_EMPTY) \
+ ) \
+ /**/
+#
+# /* Template for testing whether a type is an integral type. */
+
+template<class T> struct is_integral {
+ enum { value = false };
+};
+
+# /* Macro for defining a specialization of is_integral<> template. */
+# define IS_INTEGRAL_SPECIALIZATION(R, L) \
+ template<> struct is_integral<BOOST_PP_TUPLE_ELEM(2, 0, L)() BOOST_PP_TUPLE_ELEM(2, 1, L)> { \
+ enum { value = true }; \
+ }; \
+ /**/
+
+BOOST_PP_LIST_FOR_EACH_PRODUCT(IS_INTEGRAL_SPECIALIZATION, 2, (CV_QUALIFIERS, INTEGRAL_TYPES))
Added: branches/pplib/v2/libs/preprocessor/doc/examples/linear_fib.c
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/examples/linear_fib.c 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,91 @@
+# /* Copyright (C) 2002
+# * Housemarque Oy
+# * http://www.housemarque.com
+# *
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# */
+#
+# /* Revised by Paul Mensonides (2002) */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# /* This example shows how BOOST_PP_WHILE() can be used for implementing macros. */
+#
+# include <stdio.h>
+#
+# include <boost/preprocessor/arithmetic/add.hpp>
+# include <boost/preprocessor/arithmetic/sub.hpp>
+# include <boost/preprocessor/comparison/less_equal.hpp>
+# include <boost/preprocessor/control/while.hpp>
+# include <boost/preprocessor/list/adt.hpp>
+# include <boost/preprocessor/tuple/elem.hpp>
+#
+# /* First consider the following C implementation of Fibonacci. */
+
+typedef struct linear_fib_state {
+ int a0, a1, n;
+} linear_fib_state;
+
+static int linear_fib_c(linear_fib_state p) {
+ return p.n;
+}
+
+static linear_fib_state linear_fib_f(linear_fib_state p) {
+ linear_fib_state r = { p.a1, p.a0 + p.a1, p.n - 1 };
+ return r;
+}
+
+static int linear_fib(int n) {
+ linear_fib_state p = { 0, 1, n };
+ while (linear_fib_c(p)) {
+ p = linear_fib_f(p);
+ }
+ return p.a0;
+}
+
+# /* Then consider the following preprocessor implementation of Fibonacci. */
+#
+# define LINEAR_FIB(n) LINEAR_FIB_D(1, n)
+# /* Since the macro is implemented using BOOST_PP_WHILE, the actual
+# * implementation takes a depth as a parameters so that it can be called
+# * inside a BOOST_PP_WHILE. The above easy-to-use version simply uses 1
+# * as the depth and cannot be called inside a BOOST_PP_WHILE.
+# */
+#
+# define LINEAR_FIB_D(d, n) \
+ BOOST_PP_TUPLE_ELEM(3, 0, BOOST_PP_WHILE_ ## d(LINEAR_FIB_C, LINEAR_FIB_F, (0, 1, n)))
+# /* ^^^^ ^^^^^ ^^ ^^ ^^^^^^^
+# * #1 #2 #3 #3 #4
+# *
+# * 1) The state is a 3-element tuple. After the iteration is finished, the first
+# * element of the tuple is the result.
+# *
+# * 2) The WHILE primitive is "invoked" directly. BOOST_PP_WHILE(D, ...)
+# * can't be used because it would not be expanded by the preprocessor.
+# *
+# * 3) ???_C is the condition and ???_F is the iteration macro.
+# */
+#
+# define LINEAR_FIB_C(d, p) \
+ /* p.n */ BOOST_PP_TUPLE_ELEM(3, 2, p) \
+ /**/
+#
+# define LINEAR_FIB_F(d, p) \
+ ( \
+ /* p.a1 */ BOOST_PP_TUPLE_ELEM(3, 1, p), \
+ /* p.a0 + p.a1 */ BOOST_PP_ADD_D(d, BOOST_PP_TUPLE_ELEM(3, 0, p), BOOST_PP_TUPLE_ELEM(3, 1, p)), \
+ /* ^^ ^ \
+ * BOOST_PP_ADD() uses BOOST_PP_WHILE(). Therefore we \
+ * pass the recursion depth explicitly to BOOST_PP_ADD_D(). \
+ */ \
+ /* p.n - 1 */ BOOST_PP_DEC(BOOST_PP_TUPLE_ELEM(3, 2, p)) \
+ ) \
+ /**/
+
+int main() {
+ printf("linear_fib(10) = %d\n", linear_fib(10));
+ printf("LINEAR_FIB(10) = %d\n", LINEAR_FIB(10));
+ return 0;
+}
Added: branches/pplib/v2/libs/preprocessor/doc/headers.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/headers.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,232 @@
+<html>
+<head>
+ <title>headers.html</title>
+ <link rel="stylesheet" type="text/css" href="styles.css">
+ <base target="desc">
+ <style>
+ .ps { margin-left: 30px; }
+ </style>
+</head>
+<body>
+<h4> Headers <small>[back]</small>
+</h4>
+<ul>
+ <li>../</li>
+ <li class="ps"> preprocessor.hpp</li>
+ <li>arithmetic.hpp</li>
+ <li>arithmetic/</li>
+ <li class="ps">add.hpp</li>
+ <li class="ps">dec.hpp</li>
+ <li class="ps">div.hpp</li>
+ <li class="ps">inc.hpp</li>
+ <li class="ps">mod.hpp</li>
+ <li class="ps">mul.hpp</li>
+ <li class="ps">sub.hpp</li>
+ <li>array.hpp</li>
+ <li>array/</li>
+ <li class="ps">data.hpp</li>
+ <li class="ps">elem.hpp</li>
+ <li class="ps">enum.hpp</li>
+ <li class="ps">insert.hpp</li>
+ <li class="ps">pop_back.hpp</li>
+ <li class="ps">pop_front.hpp</li>
+ <li class="ps">push_back.hpp</li>
+ <li class="ps">push_front.hpp</li>
+ <li class="ps">remove.hpp</li>
+ <li class="ps">replace.hpp</li>
+ <li class="ps">reverse.hpp</li>
+ <li class="ps">size.hpp</li>
+ <li class="ps">to_list.hpp</li>
+ <li class="ps">to_seq.hpp</li>
+ <li class="ps">to_tuple.hpp</li>
+ <li>assert_msg.hpp*</li>
+ <li>cat.hpp</li>
+ <li>comma.hpp*</li>
+ <li>comma_if.hpp*</li>
+ <li>comparison.hpp</li>
+ <li>comparison/</li>
+ <li class="ps">equal.hpp</li>
+ <li class="ps">greater.hpp</li>
+ <li class="ps">greater_equal.hpp</li>
+ <li class="ps">less.hpp</li>
+ <li class="ps">less_equal.hpp</li>
+ <li class="ps">not_equal.hpp</li>
+ <li>config/</li>
+ <li class="ps">limits.hpp</li>
+ <li class="ps">variadics.hpp</li>
+ <li>control.hpp</li>
+ <li>control/</li>
+ <li class="ps">deduce_d.hpp</li>
+ <li class="ps">expr_if.hpp</li>
+ <li class="ps">expr_iif.hpp</li>
+ <li class="ps">if.hpp</li>
+ <li class="ps">iif.hpp</li>
+ <li class="ps">while.hpp</li>
+ <li>debug.hpp</li>
+ <li>debug/</li>
+ <li class="ps">assert.hpp</li>
+ <li class="ps">line.hpp</li>
+ <li>dec.hpp*</li>
+ <li>empty.hpp*</li>
+ <li>enum.hpp*</li>
+ <li>enum_params.hpp*</li>
+ <li>enum_params_with_a_default.hpp*</li>
+ <li>enum_params_with_defaults.hpp*</li>
+ <li>enum_shifted.hpp*</li>
+ <li>enum_shifted_params.hpp*</li>
+ <li>expand.hpp*</li>
+ <li>expr_if.hpp*</li>
+ <li>facilities.hpp</li>
+ <li>facilities/</li>
+ <li class="ps">apply.hpp</li>
+ <li class="ps">empty.hpp</li>
+ <li class="ps">expand.hpp</li>
+ <li class="ps">identity.hpp</li>
+ <li class="ps">intercept.hpp</li>
+ <li class="ps">overload.hpp (v)</li>
+ <li>for.hpp*</li>
+ <li>identity.hpp*</li>
+ <li>if.hpp*</li>
+ <li>inc.hpp*</li>
+ <li>iterate.hpp*</li>
+ <li>iteration.hpp</li>
+ <li>iteration/</li>
+ <li class="ps">iterate.hpp</li>
+ <li class="ps">local.hpp</li>
+ <li class="ps">self.hpp</li>
+ <li>library.hpp</li>
+ <li>limits.hpp*</li>
+ <li>list.hpp</li>
+ <li>list/</li>
+ <li class="ps">adt.hpp</li>
+ <li class="ps">append.hpp</li>
+ <li class="ps">at.hpp</li>
+ <li class="ps">cat.hpp</li>
+ <li class="ps">enum.hpp</li>
+ <li class="ps">filter.hpp</li>
+ <li class="ps">first_n.hpp</li>
+ <li class="ps">fold_left.hpp</li>
+ <li class="ps">fold_right.hpp</li>
+ <li class="ps">for_each.hpp</li>
+ <li class="ps">for_each_i.hpp</li>
+ <li class="ps">for_each_product.hpp</li>
+ <li class="ps">rest_n.hpp</li>
+ <li class="ps">reverse.hpp</li>
+ <li class="ps">size.hpp</li>
+ <li class="ps">to_array.hpp</li>
+ <li class="ps">to_seq.hpp</li>
+ <li class="ps">to_tuple.hpp</li>
+ <li class="ps">transform.hpp</li>
+ <li>logical.hpp</li>
+ <li>logical/</li>
+ <li class="ps">and.hpp</li>
+ <li class="ps">bitand.hpp</li>
+ <li class="ps">bitnor.hpp</li>
+ <li class="ps">bitor.hpp</li>
+ <li class="ps">bitxor.hpp</li>
+ <li class="ps">bool.hpp</li>
+ <li class="ps">compl.hpp</li>
+ <li class="ps">nor.hpp</li>
+ <li class="ps">not.hpp</li>
+ <li class="ps">or.hpp</li>
+ <li class="ps">xor.hpp</li>
+ <li>max.hpp*</li>
+ <li>min.hpp*</li>
+ <li>punctuation.hpp</li>
+ <li>punctuation/</li>
+ <li class="ps">comma.hpp</li>
+ <li class="ps">comma_if.hpp</li>
+ <li class="ps">paren.hpp</li>
+ <li class="ps">paren_if.hpp</li>
+ <li>repeat.hpp*</li>
+ <li>repeat_2nd.hpp*</li>
+ <li>repeat_3rd.hpp*</li>
+ <li>repeat_from_to.hpp*</li>
+ <li>repeat_from_to_2nd.hpp*</li>
+ <li>repeat_from_to_3rd.hpp*</li>
+ <li>repetition.hpp</li>
+ <li>repetition/</li>
+ <li class="ps">deduce_r.hpp</li>
+ <li class="ps">deduce_z.hpp</li>
+ <li class="ps">enum.hpp</li>
+ <li class="ps">enum_binary_params.hpp</li>
+ <li class="ps">enum_params.hpp</li>
+ <li class="ps">enum_params_with_a_default.hpp</li>
+ <li class="ps">enum_params_with_defaults.hpp</li>
+ <li class="ps">enum_shifted_binary_params.hpp</li>
+ <li class="ps">enum_shifted_params.hpp</li>
+ <li class="ps">enum_shifted.hpp</li>
+ <li class="ps">enum_trailing.hpp</li>
+ <li class="ps">enum_trailing_binary_params.hpp</li>
+ <li class="ps">enum_trailing_params.hpp</li>
+ <li class="ps">for.hpp</li>
+ <li class="ps">repeat.hpp</li>
+ <li class="ps">repeat_from_to.hpp</li>
+ <li>selection.hpp</li>
+ <li>selection/</li>
+ <li class="ps">max.hpp</li>
+ <li class="ps">min.hpp</li>
+ <li>seq.hpp</li>
+ <li>seq/</li>
+ <li class="ps">cat.hpp</li>
+ <li class="ps">elem.hpp</li>
+ <li class="ps">enum.hpp</li>
+ <li class="ps">filter.hpp</li>
+ <li class="ps">first_n.hpp</li>
+ <li class="ps">fold_left.hpp</li>
+ <li class="ps">fold_right.hpp</li>
+ <li class="ps">for_each.hpp</li>
+ <li class="ps">for_each_i.hpp</li>
+ <li class="ps">for_each_product.hpp</li>
+ <li class="ps">insert.hpp</li>
+ <li class="ps">pop_back.hpp</li>
+ <li class="ps">pop_front.hpp</li>
+ <li class="ps">push_back.hpp</li>
+ <li class="ps">push_front.hpp</li>
+ <li class="ps">remove.hpp</li>
+ <li class="ps">replace.hpp</li>
+ <li class="ps">rest_n.hpp</li>
+ <li class="ps">reverse.hpp</li>
+ <li class="ps">seq.hpp</li>
+ <li class="ps">size.hpp</li>
+ <li class="ps">subseq.hpp</li>
+ <li class="ps">to_array.hpp</li>
+ <li class="ps">to_list.hpp</li>
+ <li class="ps">to_tuple.hpp</li>
+ <li class="ps">transform.hpp</li>
+ <li>slot.hpp</li>
+ <li>slot/</li>
+ <li class="ps">counter.hpp</li>
+ <li class="ps">slot.hpp</li>
+ <li>tuple.hpp</li>
+ <li>tuple/</li>
+ <li class="ps">eat.hpp (v)</li>
+ <li class="ps">elem.hpp (v)</li>
+ <li class="ps">enum.hpp (v)</li>
+ <li class="ps">rem.hpp (v)</li>
+ <li class="ps">reverse.hpp (v)</li>
+ <li class="ps">size.hpp (v)</li>
+ <li class="ps">to_array.hpp (v)</li>
+ <li class="ps">to_list.hpp (v)</li>
+ <li class="ps">to_seq.hpp (v)</li>
+ <li>stringize.hpp</li>
+ <li>variadic.hpp</li>
+ <li>variadic/</li>
+ <li class="ps">elem.hpp (v)</li>
+ <li class="ps">size.hpp (v)</li>
+ <li class="ps">to_array.hpp (v)</li>
+ <li class="ps">to_list.hpp (v)</li>
+ <li class="ps">to_seq.hpp (v)</li>
+ <li class="ps">to_tuple.hpp (v)</li>
+ <li>while.hpp*</li>
+ <li>wstringize.hpp</li>
+</ul>
+<!--
+© Copyright Housemarque Oy 2002
+© Copyright Paul Mensonides 2002
+Distributed under the Boost Software License, Version 1.0.
+(See accompanying file LICENSE_1_0.txt or copy at
+http://www.boost.org/LICENSE_1_0.txt)
+-->
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/headers/arithmetic.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/headers/arithmetic.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,36 @@
+<html>
+<head>
+ <title>arithmetic.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>arithmetic.hpp</b> includes the headers in the <i>arithmetic</i> folder.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b><boost/preprocessor/arithmetic.hpp></b>
+ </div>
+ <h4>Includes</h4>
+ <ul>
+ <li><boost/preprocessor/arithmetic/add.hpp></li>
+ <li><boost/preprocessor/arithmetic/dec.hpp></li>
+ <li><boost/preprocessor/arithmetic/div.hpp></li>
+ <li><boost/preprocessor/arithmetic/inc.hpp></li>
+ <li><boost/preprocessor/arithmetic/mod.hpp></li>
+ <li><boost/preprocessor/arithmetic/mul.hpp></li>
+ <li><boost/preprocessor/arithmetic/sub.hpp></li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/headers/arithmetic/add.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/headers/arithmetic/add.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,31 @@
+<html>
+<head>
+ <title>arithmetic/add.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>arithmetic/add.hpp</b> header defines macros for addition.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b><boost/preprocessor/arithmetic/add.hpp></b>
+ </div>
+ <h4>Contents</h4>
+ <ul>
+ <li>BOOST_PP_ADD</li>
+ <li>BOOST_PP_ADD_D</li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/headers/arithmetic/dec.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/headers/arithmetic/dec.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,30 @@
+<html>
+<head>
+ <title>arithmetic/dec.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>arithmetic/dec.hpp</b> header defines a decrementation macro.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b><boost/preprocessor/arithmetic/dec.hpp></b>
+ </div>
+ <h4>Contents</h4>
+ <ul>
+ <li>BOOST_PP_DEC</li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/headers/arithmetic/div.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/headers/arithmetic/div.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,31 @@
+<html>
+<head>
+ <title>arithmetic/div.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>arithmetic/div.hpp</b> header defines macros for division.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b><boost/preprocessor/arithmetic/div.hpp></b>
+ </div>
+ <h4>Contents</h4>
+ <ul>
+ <li>BOOST_PP_DIV</li>
+ <li>BOOST_PP_DIV_D</li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/headers/arithmetic/inc.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/headers/arithmetic/inc.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,30 @@
+<html>
+<head>
+ <title>arithmetic/inc.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>arithmetic/inc.hpp</b> header defines an incrementation macro.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b><boost/preprocessor/arithmetic/inc.hpp></b>
+ </div>
+ <h4>Contents</h4>
+ <ul>
+ <li>BOOST_PP_INC</li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/headers/arithmetic/mod.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/headers/arithmetic/mod.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,31 @@
+<html>
+<head>
+ <title>arithmetic/mod.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>arithmetic/mod.hpp</b> header defines macros for modulus.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b><boost/preprocessor/arithmetic/mod.hpp></b>
+ </div>
+ <h4>Contents</h4>
+ <ul>
+ <li>BOOST_PP_MOD</li>
+ <li>BOOST_PP_MOD_D</li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/headers/arithmetic/mul.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/headers/arithmetic/mul.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,31 @@
+<html>
+<head>
+ <title>arithmetic/mul.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>arithmetic/mul.hpp</b> header defines macros for multiplication.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b><boost/preprocessor/arithmetic/mul.hpp></b>
+ </div>
+ <h4>Contents</h4>
+ <ul>
+ <li>BOOST_PP_MUL</li>
+ <li>BOOST_PP_MUL_D</li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/headers/arithmetic/sub.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/headers/arithmetic/sub.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,31 @@
+<html>
+<head>
+ <title>arithmetic/sub.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>arithmetic/sub.hpp</b> header defines macros for subtraction.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b><boost/preprocessor/arithmetic/sub.hpp></b>
+ </div>
+ <h4>Contents</h4>
+ <ul>
+ <li>BOOST_PP_SUB</li>
+ <li>BOOST_PP_SUB_D</li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/headers/array.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/headers/array.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,43 @@
+<html>
+<head>
+ <title>array.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>array.hpp</b> includes the headers in the <i>array</i> folder.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b><boost/preprocessor/array.hpp></b>
+ </div>
+ <h4>Includes</h4>
+ <ul>
+ <li><boost/preprocessor/array/data.hpp></li>
+ <li><boost/preprocessor/array/elem.hpp></li>
+ <li><boost/preprocessor/array/enum.hpp></li>
+ <li><boost/preprocessor/array/insert.hpp></li>
+ <li><boost/preprocessor/array/pop_back.hpp></li>
+ <li><boost/preprocessor/array/pop_front.hpp></li>
+ <li><boost/preprocessor/array/push_back.hpp></li>
+ <li><boost/preprocessor/array/push_front.hpp></li>
+ <li><boost/preprocessor/array/remove.hpp></li>
+ <li><boost/preprocessor/array/replace.hpp></li>
+ <li><boost/preprocessor/array/reverse.hpp></li>
+ <li><boost/preprocessor/array/size.hpp></li>
+ <li><boost/preprocessor/array/to_list.hpp></li>
+ <li><boost/preprocessor/array/to_seq.hpp></li>
+ <li><boost/preprocessor/array/to_tuple.hpp></li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ <br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at www.boost.org/LICENSE_1_0.txt)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/headers/array/data.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/headers/array/data.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,30 @@
+<html>
+<head>
+ <title>array/data.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>array/data.hpp</b> header defines a macro to extract the <i>tuple</i> data from an <i>array</i>.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b><boost/preprocessor/array/data.hpp></b>
+ </div>
+ <h4>Contents</h4>
+ <ul>
+ <li>BOOST_PP_ARRAY_DATA</li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/headers/array/elem.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/headers/array/elem.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,30 @@
+<html>
+<head>
+ <title>array/elem.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>array/elem.hpp</b> header defines a macro to extract elements from an <i>array</i>.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b><boost/preprocessor/array/elem.hpp></b>
+ </div>
+ <h4>Contents</h4>
+ <ul>
+ <li>BOOST_PP_ARRAY_ELEM</li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/headers/array/enum.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/headers/array/enum.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,24 @@
+<html>
+<head>
+ <title>array/enum.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../../styles.css">
+</head>
+<body>
+<div style="margin-left: 0px;"> The <b>array/enum.hpp</b> header
+defines a macro to convert an <i>array</i> to its comma-separated elements. </div>
+<h4>Usage</h4>
+<div class="code"> #include <b><boost/preprocessor/array/enum.hpp></b>
+</div>
+<h4>Contents</h4>
+<ul>
+ <li>BOOST_PP_ARRAY_ENUM</li>
+</ul>
+<hr size="1">
+<div style="margin-left: 0px;"> <i></i><i>© Copyright Edward Diener 2011</i> </div>
+<div style="margin-left: 0px;">
+<p><small>Distributed under the Boost Software License, Version 1.0.
+(See accompanying file LICENSE_1_0.txt
+or copy at www.boost.org/LICENSE_1_0.txt)</small></p>
+</div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/headers/array/insert.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/headers/array/insert.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,31 @@
+<html>
+<head>
+ <title>array/insert.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>array/insert.hpp</b> header defines macros to insert an element into an <i>array</i>.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b><boost/preprocessor/array/insert.hpp></b>
+ </div>
+ <h4>Contents</h4>
+ <ul>
+ <li>BOOST_PP_ARRAY_INSERT</li>
+ <li>BOOST_PP_ARRAY_INSERT_D</li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/headers/array/pop_back.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/headers/array/pop_back.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,31 @@
+<html>
+<head>
+ <title>array/pop_back.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>array/pop_back.hpp</b> header defines macros to pop an element from the end of an <i>array</i>.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b><boost/preprocessor/array/pop_back.hpp></b>
+ </div>
+ <h4>Contents</h4>
+ <ul>
+ <li>BOOST_PP_ARRAY_POP_BACK</li>
+ <li>BOOST_PP_ARRAY_POP_BACK_Z</li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/headers/array/pop_front.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/headers/array/pop_front.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,31 @@
+<html>
+<head>
+ <title>array/pop_front.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>array/pop_front.hpp</b> header defines macros to pop an element from the beginning of an <i>array</i>.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b><boost/preprocessor/array/pop_front.hpp></b>
+ </div>
+ <h4>Contents</h4>
+ <ul>
+ <li>BOOST_PP_ARRAY_POP_FRONT</li>
+ <li>BOOST_PP_ARRAY_POP_FRONT_Z</li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/headers/array/push_back.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/headers/array/push_back.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,30 @@
+<html>
+<head>
+ <title>array/push_back.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>array/push_back.hpp</b> header defines a macro to append an element to the end of an <i>array</i>.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b><boost/preprocessor/array/push_back.hpp></b>
+ </div>
+ <h4>Contents</h4>
+ <ul>
+ <li>BOOST_PP_ARRAY_PUSH_BACK</li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/headers/array/push_front.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/headers/array/push_front.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,30 @@
+<html>
+<head>
+ <title>array/push_front.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>array/push_front.hpp</b> header defines a macro to append an element to the beginning of an <i>array</i>.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b><boost/preprocessor/array/push_front.hpp></b>
+ </div>
+ <h4>Contents</h4>
+ <ul>
+ <li>BOOST_PP_ARRAY_PUSH_FRONT</li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/headers/array/remove.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/headers/array/remove.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,31 @@
+<html>
+<head>
+ <title>array/remove.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>array/remove.hpp</b> header defines macros to remove an element from an <i>array</i>.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b><boost/preprocessor/array/remove.hpp></b>
+ </div>
+ <h4>Contents</h4>
+ <ul>
+ <li>BOOST_PP_ARRAY_REMOVE</li>
+ <li>BOOST_PP_ARRAY_REMOVE_D</li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/headers/array/replace.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/headers/array/replace.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,31 @@
+<html>
+<head>
+ <title>array/replace.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>array/replace.hpp</b> header defines macros to replace an element in an <i>array</i>.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b><boost/preprocessor/array/replace.hpp></b>
+ </div>
+ <h4>Contents</h4>
+ <ul>
+ <li>BOOST_PP_ARRAY_REPLACE</li>
+ <li>BOOST_PP_ARRAY_REPLACE_D</li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/headers/array/reverse.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/headers/array/reverse.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,30 @@
+<html>
+<head>
+ <title>array/reverse.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>array/reverse.hpp</b> header defines macros to reverse the elements in an <i>array</i>.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b><boost/preprocessor/array/reverse.hpp></b>
+ </div>
+ <h4>Contents</h4>
+ <ul>
+ <li>BOOST_PP_ARRAY_REVERSE</li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/headers/array/size.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/headers/array/size.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,30 @@
+<html>
+<head>
+ <title>array/size.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>array/size.hpp</b> header defines a macro that extracts the size of an <i>array</i>.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b><boost/preprocessor/array/size.hpp></b>
+ </div>
+ <h4>Contents</h4>
+ <ul>
+ <li>BOOST_PP_ARRAY_SIZE</li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/headers/array/to_list.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/headers/array/to_list.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,24 @@
+<html>
+<head>
+ <title>array/to_list.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../../styles.css">
+</head>
+<body>
+<div style="margin-left: 0px;"> The <b>array/to_list.hpp</b> header
+defines a macro that converts an <i>array</i> to a <i>list</i>. </div>
+<h4>Usage</h4>
+<div class="code"> #include <b><boost/preprocessor/array/to_list.hpp></b>
+</div>
+<h4>Contents</h4>
+<ul>
+ <li>BOOST_PP_ARRAY_TO_LIST</li>
+</ul>
+<hr size="1">
+<div style="margin-left: 0px;"> <i></i><i>© Copyright Edward Diener 2011</i> </div>
+<div style="margin-left: 0px;">
+<p><small>Distributed under the Boost Software License, Version 1.0.
+(See accompanying file LICENSE_1_0.txt
+or copy at www.boost.org/LICENSE_1_0.txt)</small></p>
+</div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/headers/array/to_seq.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/headers/array/to_seq.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,24 @@
+<html>
+<head>
+ <title>array/to_seq.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../../styles.css">
+</head>
+<body>
+<div style="margin-left: 0px;"> The <b>array/to_seq.hpp</b> header
+defines a macro that converts an <i>array</i> to a <i>seq.</i> </div>
+<h4>Usage</h4>
+<div class="code"> #include <b><boost/preprocessor/array/to_seq.hpp></b>
+</div>
+<h4>Contents</h4>
+<ul>
+ <li>BOOST_PP_ARRAY_TO_SEQ</li>
+</ul>
+<hr size="1">
+<div style="margin-left: 0px;"> <i></i><i>© Copyright Edward Diener 2011</i> </div>
+<div style="margin-left: 0px;">
+<p><small>Distributed under the Boost Software License, Version 1.0.
+(See accompanying file LICENSE_1_0.txt
+or copy at www.boost.org/LICENSE_1_0.txt)</small></p>
+</div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/headers/array/to_tuple.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/headers/array/to_tuple.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,24 @@
+<html>
+ <head>
+ <title>array/to_tuple.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../../styles.css">
+</head>
+<body>
+<div style="margin-left: 0px;"> The <b>array/to_tuple.hpp</b> header
+defines a macro that converts an <i>array </i>to a <i>tuple</i>. </div>
+<h4>Usage</h4>
+<div class="code"> #include <b><boost/preprocessor/array/to_tuple.hpp></b>
+</div>
+<h4>Contents</h4>
+<ul>
+ <li>BOOST_PP_ARRAY_TO_TUPLE</li>
+</ul>
+<hr size="1">
+<div style="margin-left: 0px;"> <i></i><i>© Copyright Edward Diener 2011</i> </div>
+<div style="margin-left: 0px;">
+<p><small>Distributed under the Boost Software License, Version 1.0.
+(See accompanying file LICENSE_1_0.txt
+or copy at www.boost.org/LICENSE_1_0.txt)</small></p>
+</div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/headers/assert_msg.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/headers/assert_msg.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,31 @@
+<html>
+<head>
+ <title>assert_msg.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>assert_msg.hpp</b> is a jumper header for backwards compatibility.
+ This header is deprecated.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b><boost/preprocessor/assert_msg.hpp></b>
+ </div>
+ <h4>Includes</h4>
+ <ul>
+ <li><boost/preprocessor/debug/assert.hpp></li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/headers/cat.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/headers/cat.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,30 @@
+<html>
+<head>
+ <title>cat.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>cat.hpp</b> header defines a concatenation macro.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b><boost/preprocessor/cat.hpp></b>
+ </div>
+ <h4>Contents</h4>
+ <ul>
+ <li>BOOST_PP_CAT</li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/headers/comma.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/headers/comma.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,31 @@
+<html>
+<head>
+ <title>comma.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>comma.hpp</b> is a jumper header for backwards compatibility.
+ This header is deprecated.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b><boost/preprocessor/comma.hpp></b>
+ </div>
+ <h4>Includes</h4>
+ <ul>
+ <li><boost/preprocessor/punctuation/comma.hpp></li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/headers/comma_if.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/headers/comma_if.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,31 @@
+<html>
+<head>
+ <title>comma_if.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>comma_if.hpp</b> is a jumper header for backwards compatibility.
+ This header is deprecated.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b><boost/preprocessor/comma_if.hpp></b>
+ </div>
+ <h4>Includes</h4>
+ <ul>
+ <li><boost/preprocessor/punctuation/comma_if.hpp></li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/headers/comparison.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/headers/comparison.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,35 @@
+<html>
+<head>
+ <title>comparison.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>comparison.hpp</b> includes the headers in the <i>comparison</i> folder.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b><boost/preprocessor/comparison.hpp></b>
+ </div>
+ <h4>Includes</h4>
+ <ul>
+ <li><boost/preprocessor/comparison/equal.hpp></li>
+ <li><boost/preprocessor/comparison/greater.hpp></li>
+ <li><boost/preprocessor/comparison/greater_equal.hpp></li>
+ <li><boost/preprocessor/comparison/less.hpp></li>
+ <li><boost/preprocessor/comparison/less_equal.hpp></li>
+ <li><boost/preprocessor/comparison/not_equal.hpp></li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/headers/comparison/equal.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/headers/comparison/equal.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,31 @@
+<html>
+<head>
+ <title>comparison/equal.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>comparison/equal.hpp</b> header defines macros that compare for equality.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b><boost/preprocessor/comparison/equal.hpp></b>
+ </div>
+ <h4>Contents</h4>
+ <ul>
+ <li>BOOST_PP_EQUAL</li>
+ <li>BOOST_PP_EQUAL_D</li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/headers/comparison/greater.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/headers/comparison/greater.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,31 @@
+<html>
+<head>
+ <title>comparison/greater.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>comparison/greater.hpp</b> header defines macros that compare for greater magnitude.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b><boost/preprocessor/comparison/greater.hpp></b>
+ </div>
+ <h4>Contents</h4>
+ <ul>
+ <li>BOOST_PP_GREATER</li>
+ <li>BOOST_PP_GREATER_D</li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/headers/comparison/greater_equal.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/headers/comparison/greater_equal.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,31 @@
+<html>
+<head>
+ <title>comparison/greater_equal.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>comparison/greater_equal.hpp</b> header defines macros that compare for equality or greater magnitude.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b><boost/preprocessor/comparison/greater_equal.hpp></b>
+ </div>
+ <h4>Contents</h4>
+ <ul>
+ <li>BOOST_PP_GREATER_EQUAL</li>
+ <li>BOOST_PP_GREATER_EQUAL_D</li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/headers/comparison/less.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/headers/comparison/less.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,31 @@
+<html>
+<head>
+ <title>comparison/less.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>comparison/less.hpp</b> header defines macros that compare for lesser magnitude.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b><boost/preprocessor/comparison/less.hpp></b>
+ </div>
+ <h4>Contents</h4>
+ <ul>
+ <li>BOOST_PP_LESS</li>
+ <li>BOOST_PP_LESS_D</li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/headers/comparison/less_equal.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/headers/comparison/less_equal.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,31 @@
+<html>
+<head>
+ <title>comparison/less_equal.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>comparison/less_equal.hpp</b> header defines macros that compare for equality or lesser magnitude.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b><boost/preprocessor/comparison/less_equal.hpp></b>
+ </div>
+ <h4>Contents</h4>
+ <ul>
+ <li>BOOST_PP_LESS_EQUAL</li>
+ <li>BOOST_PP_LESS_EQUAL_D</li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/headers/comparison/not_equal.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/headers/comparison/not_equal.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,31 @@
+<html>
+<head>
+ <title>comparison/not_equal.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>comparison/not_equal.hpp</b> header defines macros that compare for equality.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b><boost/preprocessor/comparison/not_equal.hpp></b>
+ </div>
+ <h4>Contents</h4>
+ <ul>
+ <li>BOOST_PP_NOT_EQUAL</li>
+ <li>BOOST_PP_NOT_EQUAL_D</li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/headers/config/limits.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/headers/config/limits.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,44 @@
+<html>
+<head>
+ <title>config/limits.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>config/limits.hpp</b> header defines various library limits.
+ </div>
+ <h4>
+ Usage
+ </h4>
+ <div class="code">
+ #include <b><boost/preprocessor/config/limits.hpp></b>
+ </div>
+ <h4>
+ Contents
+ </h4>
+ <ul>
+ <li>BOOST_PP_LIMIT_DIM</li>
+ <li>BOOST_PP_LIMIT_FOR</li>
+ <li>BOOST_PP_LIMIT_ITERATION</li>
+ <li>BOOST_PP_LIMIT_ITERATION_DIM</li>
+ <li>BOOST_PP_LIMIT_MAG</li>
+ <li>BOOST_PP_LIMIT_REPEAT</li>
+ <li>BOOST_PP_LIMIT_SEQ</li>
+ <li>BOOST_PP_LIMIT_SLOT_COUNT</li>
+ <li>BOOST_PP_LIMIT_SLOT_SIG</li>
+ <li>BOOST_PP_LIMIT_TUPLE</li>
+ <li>BOOST_PP_LIMIT_WHILE</li>
+ <li>BOOST_PP_LIMIT_VARIADIC</li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ <br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at www.boost.org/LICENSE_1_0.txt)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/headers/config/variadics.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/headers/config/variadics.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,32 @@
+<html>
+<head>
+ <title>config/variadics.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>config/variadics.hpp</b>
+header defines a macro for determining variadic macro support. The file
+is automatically included when needed internally. The end-user can
+include it also in order to use the macro. </div>
+ <h4>
+ Usage
+ </h4>
+ <div class="code">
+ #include <b><boost/preprocessor/config/variadics.hpp></b>
+ </div>
+ <h4>
+ Contents
+ </h4>
+ <ul>
+ <li>BOOST_PP_VARIADICS</li></ul>
+ <hr size="1">
+ <div style="margin-left: 0px;"><i>© Copyright Edward Diener 2011</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at www.boost.org/LICENSE_1_0.txt)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/headers/control.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/headers/control.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,35 @@
+<html>
+<head>
+ <title>control.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>control.hpp</b> includes the headers in the <i>control</i> folder.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b><boost/preprocessor/control.hpp></b>
+ </div>
+ <h4>Includes</h4>
+ <ul>
+ <li><boost/preprocessor/control/deduce_d.hpp></li>
+ <li><boost/preprocessor/control/expr_if.hpp></li>
+ <li><boost/preprocessor/control/expr_iif.hpp></li>
+ <li><boost/preprocessor/control/if.hpp></li>
+ <li><boost/preprocessor/control/iif.hpp></li>
+ <li><boost/preprocessor/control/while.hpp></li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/headers/control/deduce_d.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/headers/control/deduce_d.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,30 @@
+<html>
+<head>
+ <title>control/deduce_d.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>control/deduce_d.hpp</b> header defines a macro to manually deduce the current state of the <b>BOOST_PP_WHILE</b> construct.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b><boost/preprocessor/control/deduce_d.hpp></b>
+ </div>
+ <h4>Contents</h4>
+ <ul>
+ <li>BOOST_PP_DEDUCE_D</li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/headers/control/expr_if.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/headers/control/expr_if.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,30 @@
+<html>
+<head>
+ <title>control/expr_if.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>control/expr_if.hpp</b> header defines a macro that expands to an expression selectively.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b><boost/preprocessor/control/expr_if.hpp></b>
+ </div>
+ <h4>Contents</h4>
+ <ul>
+ <li>BOOST_PP_EXPR_IF</li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/headers/control/expr_iif.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/headers/control/expr_iif.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,30 @@
+<html>
+<head>
+ <title>control/expr_iif.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>control/expr_iif.hpp</b> header defines a macro that expands to an expression selectively.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b><boost/preprocessor/control/expr_iif.hpp></b>
+ </div>
+ <h4>Contents</h4>
+ <ul>
+ <li>BOOST_PP_EXPR_IIF</li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/headers/control/if.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/headers/control/if.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,30 @@
+<html>
+<head>
+ <title>control/if.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>control/if.hpp</b> header defines a macro that chooses between two alternatives.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b><boost/preprocessor/control/if.hpp></b>
+ </div>
+ <h4>Contents</h4>
+ <ul>
+ <li>BOOST_PP_IF</li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/headers/control/iif.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/headers/control/iif.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,30 @@
+<html>
+<head>
+ <title>control/iif.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>control/iif.hpp</b> header defines a macro that chooses between two alternatives.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b><boost/preprocessor/control/iif.hpp></b>
+ </div>
+ <h4>Contents</h4>
+ <ul>
+ <li>BOOST_PP_IIF</li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/headers/control/while.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/headers/control/while.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,31 @@
+<html>
+<head>
+ <title>control/while.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>control/while.hpp</b> header defines a looping contruct.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b><boost/preprocessor/control/while.hpp></b>
+ </div>
+ <h4>Contents</h4>
+ <ul>
+ <li>BOOST_PP_WHILE</li>
+ <li>BOOST_PP_WHILE_d</li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/headers/debug.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/headers/debug.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,31 @@
+<html>
+<head>
+ <title>debug.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>debug.hpp</b> includes the headers in the <i>debug</i> folder.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b><boost/preprocessor/debug.hpp></b>
+ </div>
+ <h4>Includes</h4>
+ <ul>
+ <li><boost/preprocessor/debug/assert.hpp></li>
+ <li><boost/preprocessor/debug/line.hpp></li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/headers/debug/assert.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/headers/debug/assert.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,31 @@
+<html>
+<head>
+ <title>debug/assert.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>debug/assert.hpp</b> header defines macros for preprocessing-time assertions.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b><boost/preprocessor/debug/assert.hpp></b>
+ </div>
+ <h4>Contents</h4>
+ <ul>
+ <li>BOOST_PP_ASSERT</li>
+ <li>BOOST_PP_ASSERT_MSG</li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/headers/debug/line.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/headers/debug/line.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,30 @@
+<html>
+<head>
+ <title>debug/line.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>debug/line.hpp</b> header defines macros for preprocessing-time assertions.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b><boost/preprocessor/debug/line.hpp></b>
+ </div>
+ <h4>Contents</h4>
+ <ul>
+ <li>BOOST_PP_LINE</li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/headers/dec.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/headers/dec.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,31 @@
+<html>
+<head>
+ <title>dec.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>dec.hpp</b> is a jumper header for backwards compatibility.
+ This header is deprecated.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b><boost/preprocessor/dec.hpp></b>
+ </div>
+ <h4>Includes</h4>
+ <ul>
+ <li><boost/preprocessor/arithmetic/dec.hpp></li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/headers/empty.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/headers/empty.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,31 @@
+<html>
+<head>
+ <title>empty.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>empty.hpp</b> is a jumper header for backwards compatibility.
+ This header is deprecated.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b><boost/preprocessor/empty.hpp></b>
+ </div>
+ <h4>Includes</h4>
+ <ul>
+ <li><boost/preprocessor/facilities/empty.hpp></li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/headers/enum.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/headers/enum.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,31 @@
+<html>
+<head>
+ <title>enum.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>enum.hpp</b> is a jumper header for backwards compatibility.
+ This header is deprecated.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b><boost/preprocessor/enum.hpp></b>
+ </div>
+ <h4>Includes</h4>
+ <ul>
+ <li><boost/preprocessor/repetition/enum.hpp></li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/headers/enum_params.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/headers/enum_params.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,31 @@
+<html>
+<head>
+ <title>enum_params.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>enum_params.hpp</b> is a jumper header for backwards compatibility.
+ This header is deprecated.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b><boost/preprocessor/enum_params.hpp></b>
+ </div>
+ <h4>Includes</h4>
+ <ul>
+ <li><boost/preprocessor/repetition/enum_params.hpp></li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/headers/enum_shifted.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/headers/enum_shifted.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,31 @@
+<html>
+<head>
+ <title>enum_shifted.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>enum_shifted.hpp</b> is a jumper header for backwards compatibility.
+ This header is deprecated.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b><boost/preprocessor/enum_shifted.hpp></b>
+ </div>
+ <h4>Includes</h4>
+ <ul>
+ <li><boost/preprocessor/repetition/enum_shifted.hpp></li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/headers/enum_shifted_params.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/headers/enum_shifted_params.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,31 @@
+<html>
+<head>
+ <title>enum_shifted_params.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>enum_shifted_params.hpp</b> is a jumper header for backwards compatibility.
+ This header is deprecated.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b><boost/preprocessor/enum_shifted_params.hpp></b>
+ </div>
+ <h4>Includes</h4>
+ <ul>
+ <li><boost/preprocessor/repetition/enum_shifted_params.hpp></li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/headers/epwad.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/headers/epwad.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,31 @@
+<html>
+<head>
+ <title>enum_params_with_a_default.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>enum_params_with_a_default.hpp</b> is a jumper header for backwards compatibility.
+ This header is deprecated.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b><boost/preprocessor/enum_params_with_a_default.hpp></b>
+ </div>
+ <h4>Includes</h4>
+ <ul>
+ <li><boost/preprocessor/repetition/enum_params_with_a_default.hpp></li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/headers/epwd.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/headers/epwd.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,31 @@
+<html>
+<head>
+ <title>enum_params_with_defaults.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>enum_params_with_defaults.hpp</b> is a jumper header for backwards compatibility.
+ This header is deprecated.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b><boost/preprocessor/enum_params_with_defaults.hpp></b>
+ </div>
+ <h4>Includes</h4>
+ <ul>
+ <li><boost/preprocessor/repetition/enum_params_with_defaults.hpp></li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/headers/expand.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/headers/expand.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,31 @@
+<html>
+<head>
+ <title>expand.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>expand.hpp</b> is a jumper header for backwards compatibility.
+ This header is deprecated.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b><boost/preprocessor/expand.hpp></b>
+ </div>
+ <h4>Includes</h4>
+ <ul>
+ <li><boost/preprocessor/facilities/expand.hpp></li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/headers/expr_if.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/headers/expr_if.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,31 @@
+<html>
+<head>
+ <title>expr_if.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>expr_if.hpp</b> is a jumper header for backwards compatibility.
+ This header is deprecated.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b><boost/preprocessor/expr_if.hpp></b>
+ </div>
+ <h4>Includes</h4>
+ <ul>
+ <li><boost/preprocessor/control/expr_if.hpp></li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/headers/facilities.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/headers/facilities.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,34 @@
+<html>
+<head>
+ <title>facilities.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>facilities.hpp</b> includes the headers in the <i>facilities</i> folder.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b><boost/preprocessor/facilities.hpp></b>
+ </div>
+ <h4>Includes</h4>
+ <ul>
+ <li><boost/preprocessor/facilities/apply.hpp></li>
+ <li><boost/preprocessor/facilities/empty.hpp></li>
+ <li><boost/preprocessor/facilities/expand.hpp></li>
+ <li><boost/preprocessor/facilities/identity.hpp></li>
+ <li><boost/preprocessor/facilities/intercept.hpp></li>
+ <li><boost/preprocessor/facilities/overload.hpp> (v)</li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ <br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at www.boost.org/LICENSE_1_0.txt)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/headers/facilities/apply.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/headers/facilities/apply.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,30 @@
+<html>
+<head>
+ <title>facilities/apply.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>facilities/apply.hpp</b> header defines facilities that abstract the difference between an argument and nothing.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b><boost/preprocessor/facilities/apply.hpp></b>
+ </div>
+ <h4>Contents</h4>
+ <ul>
+ <li>BOOST_PP_APPLY</li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/headers/facilities/empty.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/headers/facilities/empty.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,30 @@
+<html>
+<head>
+ <title>facilities/empty.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>facilities/empty.hpp</b> header defines a nullary macro that expands to nothing.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b><boost/preprocessor/facilities/empty.hpp></b>
+ </div>
+ <h4>Contents</h4>
+ <ul>
+ <li>BOOST_PP_EMPTY</li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/headers/facilities/expand.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/headers/facilities/expand.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,30 @@
+<html>
+<head>
+ <title>facilities/expand.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>facilities/expand.hpp</b> header defines a macro that causes double expansion.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b><boost/preprocessor/facilities/expand.hpp></b>
+ </div>
+ <h4>Contents</h4>
+ <ul>
+ <li>BOOST_PP_EXPAND</li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/headers/facilities/identity.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/headers/facilities/identity.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,30 @@
+<html>
+<head>
+ <title>facilities/identity.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>facilities/identity.hpp</b> header defines a utility macro to use with <b>BOOST_PP_IF</b> and <b>BOOST_PP_IIF</b>.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b><boost/preprocessor/facilities/identity.hpp></b>
+ </div>
+ <h4>Contents</h4>
+ <ul>
+ <li>BOOST_PP_IDENTITY</li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/headers/facilities/intercept.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/headers/facilities/intercept.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,30 @@
+<html>
+<head>
+ <title>facilities/intercept.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>facilities/intercept.hpp</b> header defines a utility macro to intercept a numeric concatenation.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b><boost/preprocessor/facilities/intercept.hpp></b>
+ </div>
+ <h4>Contents</h4>
+ <ul>
+ <li>BOOST_PP_INTERCEPT</li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/headers/facilities/overload.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/headers/facilities/overload.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,28 @@
+<html>
+ <head>
+ <title>facilities/overload.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../../styles.css">
+ </head>
+ <body>
+ <div style="margin-left: 0px;">
+ The <b>facilities/overload.hpp</b> header defines variadic macros that overload non-variadic macros to accept different numbers of parameters.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b><boost/preprocessor/facilities/overload.hpp></b>
+ </div>
+ <h4>Contents</h4>
+ <ul>
+ <li>BOOST_PP_OVERLOAD (v)</li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i></i><i>© Copyright Edward Diener 2011</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at www.boost.org/LICENSE_1_0.txt)</small></p>
+ </div>
+ </body>
+</html>
\ No newline at end of file
Added: branches/pplib/v2/libs/preprocessor/doc/headers/for.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/headers/for.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,31 @@
+<html>
+<head>
+ <title>for.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>for.hpp</b> is a jumper header for backwards compatibility.
+ This header is deprecated.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b><boost/preprocessor/for.hpp></b>
+ </div>
+ <h4>Includes</h4>
+ <ul>
+ <li><boost/preprocessor/repetition/for.hpp></li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/headers/identity.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/headers/identity.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,31 @@
+<html>
+<head>
+ <title>identity.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>identity.hpp</b> is a jumper header for backwards compatibility.
+ This header is deprecated.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b><boost/preprocessor/identity.hpp></b>
+ </div>
+ <h4>Includes</h4>
+ <ul>
+ <li><boost/preprocessor/facilities/identity.hpp></li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/headers/if.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/headers/if.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,31 @@
+<html>
+<head>
+ <title>if.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>if.hpp</b> is a jumper header for backwards compatibility.
+ This header is deprecated.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b><boost/preprocessor/if.hpp></b>
+ </div>
+ <h4>Includes</h4>
+ <ul>
+ <li><boost/preprocessor/control/if.hpp></li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/headers/inc.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/headers/inc.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,31 @@
+<html>
+<head>
+ <title>inc.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>inc.hpp</b> is a jumper header for backwards compatibility.
+ This header is deprecated.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b><boost/preprocessor/inc.hpp></b>
+ </div>
+ <h4>Includes</h4>
+ <ul>
+ <li><boost/preprocessor/arithmetic/inc.hpp></li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/headers/iterate.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/headers/iterate.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,31 @@
+<html>
+<head>
+ <title>iterate.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>iterate.hpp</b> is a jumper header for backwards compatibility.
+ This header is deprecated.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b><boost/preprocessor/iterate.hpp></b>
+ </div>
+ <h4>Includes</h4>
+ <ul>
+ <li><boost/preprocessor/iteration/iterate.hpp></li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/headers/iteration.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/headers/iteration.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,32 @@
+<html>
+<head>
+ <title>iteration.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>iteration.hpp</b> includes the headers in the <i>iteration</i> folder.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b><boost/preprocessor/iteration.hpp></b>
+ </div>
+ <h4>Includes</h4>
+ <ul>
+ <li><boost/preprocessor/iteration/iterate.hpp></li>
+ <li><boost/preprocessor/iteration/local.hpp></li>
+ <li><boost/preprocessor/iteration/self.hpp></li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/headers/iteration/iterate.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/headers/iteration/iterate.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,43 @@
+<html>
+<head>
+ <title>iteration/iterate.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>iteration/iterate.hpp</b> header defines a macros to interface with the <i>file-iteration</i> mechanism.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b><boost/preprocessor/iteration/iterate.hpp></b>
+ </div>
+ <h4>Contents</h4>
+ <ul>
+ <li>BOOST_PP_FRAME_FINISH</li>
+ <li>BOOST_PP_FRAME_FLAGS</li>
+ <li>BOOST_PP_FRAME_ITERATION</li>
+ <li>BOOST_PP_FRAME_START</li>
+ <li>BOOST_PP_ITERATE</li>
+ <li>BOOST_PP_ITERATION</li>
+ <li>BOOST_PP_ITERATION_DEPTH</li>
+ <li>BOOST_PP_ITERATION_FINISH</li>
+ <li>BOOST_PP_ITERATION_FLAGS</li>
+ <li>BOOST_PP_ITERATION_START</li>
+ <li>BOOST_PP_RELATIVE_FINISH</li>
+ <li>BOOST_PP_RELATIVE_FLAGS</li>
+ <li>BOOST_PP_RELATIVE_ITERATION</li>
+ <li>BOOST_PP_RELATIVE_START</li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/headers/iteration/local.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/headers/iteration/local.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,30 @@
+<html>
+<head>
+ <title>iteration/local.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>iteration/local.hpp</b> header defines a macro to interface with the <i>local-iteration</i> mechanism.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b><boost/preprocessor/iteration/local.hpp></b>
+ </div>
+ <h4>Contents</h4>
+ <ul>
+ <li>BOOST_PP_LOCAL_ITERATE</li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/headers/iteration/self.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/headers/iteration/self.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,30 @@
+<html>
+<head>
+ <title>iteration/self.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>iteration/self.hpp</b> header defines a macro to facilitate self-inclusion.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b><boost/preprocessor/iteration/self.hpp></b>
+ </div>
+ <h4>Contents</h4>
+ <ul>
+ <li>BOOST_PP_INCLUDE_SELF</li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/headers/library.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/headers/library.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,26 @@
+<html>
+<head>
+ <title>library.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>library.hpp</b> includes the entire library.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b><boost/preprocessor/library.hpp></b>
+ </div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/headers/limits.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/headers/limits.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,31 @@
+<html>
+<head>
+ <title>limits.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>limits.hpp</b> is a jumper header for backwards compatibility.
+ This header is deprecated.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b><boost/preprocessor/limits.hpp></b>
+ </div>
+ <h4>Includes</h4>
+ <ul>
+ <li><boost/preprocessor/config/limits.hpp></li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/headers/list.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/headers/list.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,47 @@
+<html>
+<head>
+ <title>list.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>list.hpp</b> includes the headers in the <i>list</i> folder.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b><boost/preprocessor/list.hpp></b>
+ </div>
+ <h4>Includes</h4>
+ <ul>
+ <li><boost/preprocessor/list/adt.hpp></li>
+ <li><boost/preprocessor/list/append.hpp></li>
+ <li><boost/preprocessor/list/at.hpp></li>
+ <li><boost/preprocessor/list/cat.hpp></li>
+ <li><boost/preprocessor/list/enum.hpp></li>
+ <li><boost/preprocessor/list/filter.hpp></li>
+ <li><boost/preprocessor/list/first_n.hpp></li>
+ <li><boost/preprocessor/list/fold_left.hpp></li>
+ <li><boost/preprocessor/list/fold_right.hpp></li>
+ <li><boost/preprocessor/list/for_each.hpp></li>
+ <li><boost/preprocessor/list/for_each_i.hpp></li>
+ <li><boost/preprocessor/list/for_each_product.hpp></li>
+ <li><boost/preprocessor/list/rest_n.hpp></li>
+ <li><boost/preprocessor/list/reverse.hpp></li>
+ <li><boost/preprocessor/list/size.hpp></li>
+ <li><boost/preprocessor/list/to_array.hpp></li>
+ <li><boost/preprocessor/list/to_seq.hpp></li>
+ <li><boost/preprocessor/list/to_tuple.hpp></li>
+ <li><boost/preprocessor/list/transform.hpp></li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ <br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at www.boost.org/LICENSE_1_0.txt)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/headers/list/adt.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/headers/list/adt.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,35 @@
+<html>
+<head>
+ <title>list/adt.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>list/adt.hpp</b> header defines basic operations for manipulating <i>lists</i>.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b><boost/preprocessor/list/adt.hpp></b>
+ </div>
+ <h4>Contents</h4>
+ <ul>
+ <li>BOOST_PP_LIST_CONS</li>
+ <li>BOOST_PP_LIST_FIRST</li>
+ <li>BOOST_PP_LIST_IS_CONS</li>
+ <li>BOOST_PP_LIST_IS_NIL</li>
+ <li>BOOST_PP_LIST_NIL</li>
+ <li>BOOST_PP_LIST_REST</li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/headers/list/append.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/headers/list/append.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,31 @@
+<html>
+<head>
+ <title>list/append.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>list/append.hpp</b> header defines macros for appending one <i>list</i> to another.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b><boost/preprocessor/list/append.hpp></b>
+ </div>
+ <h4>Contents</h4>
+ <ul>
+ <li>BOOST_PP_LIST_APPEND</li>
+ <li>BOOST_PP_LIST_APPEND_D</li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/headers/list/at.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/headers/list/at.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,31 @@
+<html>
+<head>
+ <title>list/at.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>list/at.hpp</b> header defines macros for extracting an element from a <i>list</i>.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b><boost/preprocessor/list/at.hpp></b>
+ </div>
+ <h4>Contents</h4>
+ <ul>
+ <li>BOOST_PP_LIST_AT</li>
+ <li>BOOST_PP_LIST_AT_D</li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/headers/list/cat.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/headers/list/cat.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,31 @@
+<html>
+<head>
+ <title>list/cat.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>list/cat.hpp</b> header defines macros for concatenating all elements in a <i>list</i>.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b><boost/preprocessor/list/cat.hpp></b>
+ </div>
+ <h4>Contents</h4>
+ <ul>
+ <li>BOOST_PP_LIST_CAT</li>
+ <li>BOOST_PP_LIST_CAT_D</li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/headers/list/enum.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/headers/list/enum.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,31 @@
+<html>
+<head>
+ <title>list/enum.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>list/enum.hpp</b> header defines macros to convert a <i>list</i> to a comma-separated list.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b><boost/preprocessor/list/enum.hpp></b>
+ </div>
+ <h4>Contents</h4>
+ <ul>
+ <li>BOOST_PP_LIST_ENUM</li>
+ <li>BOOST_PP_LIST_ENUM_R</li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/headers/list/filter.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/headers/list/filter.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,31 @@
+<html>
+<head>
+ <title>list/filter.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>list/filter.hpp</b> header defines macros to filter a <i>list</i>.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b><boost/preprocessor/list/filter.hpp></b>
+ </div>
+ <h4>Contents</h4>
+ <ul>
+ <li>BOOST_PP_LIST_FILTER</li>
+ <li>BOOST_PP_LIST_FILTER_D</li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/headers/list/first_n.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/headers/list/first_n.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,31 @@
+<html>
+<head>
+ <title>list/first_n.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>list/first_n.hpp</b> header defines macros for extracting a group of elements from the beginning of a <i>list</i>.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b><boost/preprocessor/list/first_n.hpp></b>
+ </div>
+ <h4>Contents</h4>
+ <ul>
+ <li>BOOST_PP_LIST_FIRST_N</li>
+ <li>BOOST_PP_LIST_FIRST_N_D</li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/headers/list/fold_left.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/headers/list/fold_left.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,34 @@
+<html>
+<head>
+ <title>list/fold_left.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>list/fold_left.hpp</b> header defines folding (or accumulating) a <i>list</i> left-to-right.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b><boost/preprocessor/list/fold_left.hpp></b>
+ </div>
+ <h4>Contents</h4>
+ <ul>
+ <li>BOOST_PP_LIST_FOLD_LEFT</li>
+ <li>BOOST_PP_LIST_FOLD_LEFT_2ND</li>
+ <li>BOOST_PP_LIST_FOLD_LEFT_2ND_D</li>
+ <li>BOOST_PP_LIST_FOLD_LEFT_d</li>
+ <li>BOOST_PP_LIST_FOLD_LEFT_D</li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/headers/list/fold_right.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/headers/list/fold_right.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,34 @@
+<html>
+<head>
+ <title>list/fold_right.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>list/fold_right.hpp</b> header defines folding (or accumulating) a <i>list</i> right-to-left.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b><boost/preprocessor/list/fold_right.hpp></b>
+ </div>
+ <h4>Contents</h4>
+ <ul>
+ <li>BOOST_PP_LIST_FOLD_RIGHT</li>
+ <li>BOOST_PP_LIST_FOLD_RIGHT_2ND</li>
+ <li>BOOST_PP_LIST_FOLD_RIGHT_2ND_D</li>
+ <li>BOOST_PP_LIST_FOLD_RIGHT_d</li>
+ <li>BOOST_PP_LIST_FOLD_RIGHT_D</li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/headers/list/for_each.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/headers/list/for_each.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,31 @@
+<html>
+<head>
+ <title>list/for_each.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>list/for_each.hpp</b> header defines macros to repeat a macro for each element in a <i>list</i>.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b><boost/preprocessor/list/for_each.hpp></b>
+ </div>
+ <h4>Contents</h4>
+ <ul>
+ <li>BOOST_PP_LIST_FOR_EACH</li>
+ <li>BOOST_PP_LIST_FOR_EACH_R</li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/headers/list/for_each_i.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/headers/list/for_each_i.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,31 @@
+<html>
+<head>
+ <title>list/for_each_i.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>list/for_each_i.hpp</b> header defines macros to repeat a macro for each element in a <i>list</i>.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b><boost/preprocessor/list/for_each_i.hpp></b>
+ </div>
+ <h4>Contents</h4>
+ <ul>
+ <li>BOOST_PP_LIST_FOR_EACH_I</li>
+ <li>BOOST_PP_LIST_FOR_EACH_I_R</li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/headers/list/for_each_product.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/headers/list/for_each_product.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,31 @@
+<html>
+<head>
+ <title>list/for_each_product.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>list/for_each_product.hpp</b> header defines macros to repeat a macro for each cartesian product of several <i>lists</i>.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b><boost/preprocessor/list/for_each_product.hpp></b>
+ </div>
+ <h4>Contents</h4>
+ <ul>
+ <li>BOOST_PP_LIST_FOR_EACH_PRODUCT</li>
+ <li>BOOST_PP_LIST_FOR_EACH_PRODUCT_R</li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/headers/list/rest_n.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/headers/list/rest_n.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,31 @@
+<html>
+<head>
+ <title>list/rest_n.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>list/rest_n.hpp</b> header defines macros for extracting a group of elements from the end of a <i>list</i>.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b><boost/preprocessor/list/rest_n.hpp></b>
+ </div>
+ <h4>Contents</h4>
+ <ul>
+ <li>BOOST_PP_LIST_REST_N</li>
+ <li>BOOST_PP_LIST_REST_N_D</li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/headers/list/reverse.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/headers/list/reverse.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,31 @@
+<html>
+<head>
+ <title>list/reverse.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>list/reverse.hpp</b> header defines macros to reverse a <i>list</i>.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b><boost/preprocessor/list/reverse.hpp></b>
+ </div>
+ <h4>Contents</h4>
+ <ul>
+ <li>BOOST_PP_LIST_REVERSE</li>
+ <li>BOOST_PP_LIST_REVERSE_D</li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/headers/list/size.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/headers/list/size.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,31 @@
+<html>
+<head>
+ <title>list/size.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>list/size.hpp</b> header defines macros to calculate the size of a <i>list</i>.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b><boost/preprocessor/list/size.hpp></b>
+ </div>
+ <h4>Contents</h4>
+ <ul>
+ <li>BOOST_PP_LIST_SIZE</li>
+ <li>BOOST_PP_LIST_SIZE_D</li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/headers/list/to_array.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/headers/list/to_array.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,29 @@
+<html>
+<head>
+ <title>list/to_array.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>list/to_array.hpp</b> header defines a macro to convert a <i>list</i> to an <i>array</i>.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b><boost/preprocessor/list/to_array.hpp></b>
+ </div>
+ <h4>Contents</h4>
+ <ul>
+ <li>BOOST_PP_LIST_TO_ARRAY</li>
+
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i></i><i>© Copyright Edward Diener 2011</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at www.boost.org/LICENSE_1_0.txt)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/headers/list/to_seq.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/headers/list/to_seq.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,25 @@
+<html><head>
+ <title>list/to_seq.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../../styles.css"></head><body>
+ <div style="margin-left: 0px;">
+ The <b>list/to_seq.hpp</b> header defines a macro to convert a <i>list</i> to a <i>seq</i>.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b><boost/preprocessor/list/to_seq.hpp></b>
+ </div>
+ <h4>Contents</h4>
+ <ul>
+ <li>BOOST_PP_LIST_TO_SEQ</li>
+
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i></i><i>© Copyright Edward Diener 2011</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at www.boost.org/LICENSE_1_0.txt)</small></p>
+ </div>
+</body></html>
Added: branches/pplib/v2/libs/preprocessor/doc/headers/list/to_tuple.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/headers/list/to_tuple.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,31 @@
+<html>
+<head>
+ <title>list/to_tuple.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>list/to_tuple.hpp</b> header defines macros to convert a <i>list</i> to a <i>tuple</i>.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b><boost/preprocessor/list/to_tuple.hpp></b>
+ </div>
+ <h4>Contents</h4>
+ <ul>
+ <li>BOOST_PP_LIST_TO_TUPLE</li>
+ <li>BOOST_PP_LIST_TO_TUPLE_R</li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/headers/list/transform.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/headers/list/transform.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,31 @@
+<html>
+<head>
+ <title>list/transform.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>list/transform.hpp</b> header defines macros to transform a <i>list</i>.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b><boost/preprocessor/list/transform.hpp></b>
+ </div>
+ <h4>Contents</h4>
+ <ul>
+ <li>BOOST_PP_LIST_TRANSFORM</li>
+ <li>BOOST_PP_LIST_TRANSFORM_D</li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/headers/logical.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/headers/logical.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,40 @@
+<html>
+<head>
+ <title>logical.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>logical.hpp</b> includes the headers in the <i>logical</i> folder.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b><boost/preprocessor/logical.hpp></b>
+ </div>
+ <h4>Includes</h4>
+ <ul>
+ <li><boost/preprocessor/logical/and.hpp></li>
+ <li><boost/preprocessor/logical/bitand.hpp></li>
+ <li><boost/preprocessor/logical/bitnor.hpp></li>
+ <li><boost/preprocessor/logical/bitor.hpp></li>
+ <li><boost/preprocessor/logical/bitxor.hpp></li>
+ <li><boost/preprocessor/logical/bool.hpp></li>
+ <li><boost/preprocessor/logical/compl.hpp></li>
+ <li><boost/preprocessor/logical/nor.hpp></li>
+ <li><boost/preprocessor/logical/not.hpp></li>
+ <li><boost/preprocessor/logical/or.hpp></li>
+ <li><boost/preprocessor/logical/xor.hpp></li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/headers/logical/and.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/headers/logical/and.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,30 @@
+<html>
+<head>
+ <title>logical/and.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>logical/and.hpp</b> header defines a macro that expands to the logical <i>AND</i> of its operands.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b><boost/preprocessor/logical/and.hpp></b>
+ </div>
+ <h4>Contents</h4>
+ <ul>
+ <li>BOOST_PP_AND</li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/headers/logical/bitand.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/headers/logical/bitand.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,30 @@
+<html>
+<head>
+ <title>logical/bitand.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>logical/bitand.hpp</b> header defines a macro that expands to the bitwise <i>AND</i> of its operands.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b><boost/preprocessor/logical/bitand.hpp></b>
+ </div>
+ <h4>Contents</h4>
+ <ul>
+ <li>BOOST_PP_BITAND</li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/headers/logical/bitnor.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/headers/logical/bitnor.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,30 @@
+<html>
+<head>
+ <title>logical/bitnor.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>logical/bitnor.hpp</b> header defines a macro that expands to the bitwise <i>NOR</i> of its operands.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b><boost/preprocessor/logical/bitnor.hpp></b>
+ </div>
+ <h4>Contents</h4>
+ <ul>
+ <li>BOOST_PP_BITNOR</li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/headers/logical/bitor.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/headers/logical/bitor.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,30 @@
+<html>
+<head>
+ <title>logical/bitor.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>logical/bitor.hpp</b> header defines a macro that expands to the bitwise <i>OR</i> of its operands.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b><boost/preprocessor/logical/bitor.hpp></b>
+ </div>
+ <h4>Contents</h4>
+ <ul>
+ <li>BOOST_PP_BITOR</li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/headers/logical/bitxor.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/headers/logical/bitxor.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,30 @@
+<html>
+<head>
+ <title>logical/bitxor.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>logical/bitxor.hpp</b> header defines a macro that expands to the bitwise <i>XOR</i> of its operands.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b><boost/preprocessor/logical/bitxor.hpp></b>
+ </div>
+ <h4>Contents</h4>
+ <ul>
+ <li>BOOST_PP_BITXOR</li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/headers/logical/bool.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/headers/logical/bool.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,30 @@
+<html>
+<head>
+ <title>logical/bool.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>logical/bool.hpp</b> header defines a macro that performs a boolean conversion on its operand.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b><boost/preprocessor/logical/bool.hpp></b>
+ </div>
+ <h4>Contents</h4>
+ <ul>
+ <li>BOOST_PP_BOOL</li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/headers/logical/compl.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/headers/logical/compl.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,30 @@
+<html>
+<head>
+ <title>logical/compl.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>logical/compl.hpp</b> header defines a macro that performs a bitwise inversion on its operand.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b><boost/preprocessor/logical/compl.hpp></b>
+ </div>
+ <h4>Contents</h4>
+ <ul>
+ <li>BOOST_PP_COMPL</li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/headers/logical/nor.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/headers/logical/nor.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,30 @@
+<html>
+<head>
+ <title>logical/nor.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>logical/nor.hpp</b> header defines a macro that expands to the logical <i>NOR</i> of its operands.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b><boost/preprocessor/logical/nor.hpp></b>
+ </div>
+ <h4>Contents</h4>
+ <ul>
+ <li>BOOST_PP_NOR</li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/headers/logical/not.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/headers/logical/not.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,30 @@
+<html>
+<head>
+ <title>logical/not.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>logical/not.hpp</b> header defines a macro that performs a logical <i>NOT</i> on its operand.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b><boost/preprocessor/logical/not.hpp></b>
+ </div>
+ <h4>Contents</h4>
+ <ul>
+ <li>BOOST_PP_NOT</li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/headers/logical/or.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/headers/logical/or.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,30 @@
+<html>
+<head>
+ <title>logical/or.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>logical/or.hpp</b> header defines a macro that expands to the logical <i>OR</i> of its operands.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b><boost/preprocessor/logical/or.hpp></b>
+ </div>
+ <h4>Contents</h4>
+ <ul>
+ <li>BOOST_PP_OR</li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/headers/logical/xor.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/headers/logical/xor.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,30 @@
+<html>
+<head>
+ <title>logical/xor.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>logical/xor.hpp</b> header defines a macro that expands to the logical <i>XOR</i> of its operands.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b><boost/preprocessor/logical/xor.hpp></b>
+ </div>
+ <h4>Contents</h4>
+ <ul>
+ <li>BOOST_PP_XOR</li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/headers/max.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/headers/max.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,31 @@
+<html>
+<head>
+ <title>max.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>max.hpp</b> is a jumper header for backwards compatibility.
+ This header is deprecated.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b><boost/preprocessor/max.hpp></b>
+ </div>
+ <h4>Includes</h4>
+ <ul>
+ <li><boost/preprocessor/selection/max.hpp></li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/headers/min.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/headers/min.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,31 @@
+<html>
+<head>
+ <title>min.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>min.hpp</b> is a jumper header for backwards compatibility.
+ This header is deprecated.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b><boost/preprocessor/min.hpp></b>
+ </div>
+ <h4>Includes</h4>
+ <ul>
+ <li><boost/preprocessor/selection/min.hpp></li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/headers/preprocessor.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/headers/preprocessor.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,26 @@
+<html>
+<head>
+ <title>preprocessor.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>preprocessor.hpp</b> includes the entire library.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b><boost/preprocessor.hpp></b>
+ </div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/headers/punctuation.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/headers/punctuation.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,33 @@
+<html>
+<head>
+ <title>punctuation.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>punctuation.hpp</b> includes the headers in the <i>punctuation</i> folder.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b><boost/preprocessor/punctuation.hpp></b>
+ </div>
+ <h4>Includes</h4>
+ <ul>
+ <li><boost/preprocessor/punctuation/comma.hpp></li>
+ <li><boost/preprocessor/punctuation/comma_if.hpp></li>
+ <li><boost/preprocessor/punctuation/paren.hpp></li>
+ <li><boost/preprocessor/punctuation/paren_if.hpp></li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/headers/punctuation/comma.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/headers/punctuation/comma.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,30 @@
+<html>
+<head>
+ <title>punctuation/comma.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>punctuation/comma.hpp</b> header defines a macro that expands to a comma.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b><boost/preprocessor/punctuation/comma.hpp></b>
+ </div>
+ <h4>Contents</h4>
+ <ul>
+ <li>BOOST_PP_COMMA</li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/headers/punctuation/comma_if.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/headers/punctuation/comma_if.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,30 @@
+<html>
+<head>
+ <title>punctuation/comma_if.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>punctuation/comma_if.hpp</b> header defines a macro that conditionally expands to a comma.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b><boost/preprocessor/punctuation/comma_if.hpp></b>
+ </div>
+ <h4>Contents</h4>
+ <ul>
+ <li>BOOST_PP_COMMA_IF</li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/headers/punctuation/paren.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/headers/punctuation/paren.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,31 @@
+<html>
+<head>
+ <title>punctuation/paren.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>punctuation/paren.hpp</b> header defines macros that expand to left and right parentheses.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b><boost/preprocessor/punctuation/paren.hpp></b>
+ </div>
+ <h4>Contents</h4>
+ <ul>
+ <li>BOOST_PP_LPAREN</li>
+ <li>BOOST_PP_RPAREN</li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/headers/punctuation/paren_if.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/headers/punctuation/paren_if.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,31 @@
+<html>
+<head>
+ <title>punctuation/paren_if.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>punctuation/paren_if.hpp</b> header defines macros that conditionally expand to left and right parentheses.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b><boost/preprocessor/punctuation/paren_if.hpp></b>
+ </div>
+ <h4>Contents</h4>
+ <ul>
+ <li>BOOST_PP_LPAREN_IF</li>
+ <li>BOOST_PP_RPAREN_IF</li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/headers/repeat.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/headers/repeat.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,31 @@
+<html>
+<head>
+ <title>repeat.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>repeat.hpp</b> is a jumper header for backwards compatibility.
+ This header is deprecated.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b><boost/preprocessor/repeat.hpp></b>
+ </div>
+ <h4>Includes</h4>
+ <ul>
+ <li><boost/preprocessor/repetition/repeat.hpp></li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/headers/repeat_2nd.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/headers/repeat_2nd.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,31 @@
+<html>
+<head>
+ <title>repeat_2nd.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>repeat_2nd.hpp</b> is a jumper header for backwards compatibility.
+ This header is deprecated.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b><boost/preprocessor/repeat_2nd.hpp></b>
+ </div>
+ <h4>Includes</h4>
+ <ul>
+ <li><boost/preprocessor/repetition/repeat.hpp></li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/headers/repeat_3rd.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/headers/repeat_3rd.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,31 @@
+<html>
+<head>
+ <title>repeat_3rd.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>repeat_3rd.hpp</b> is a jumper header for backwards compatibility.
+ This header is deprecated.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b><boost/preprocessor/repeat_3rd.hpp></b>
+ </div>
+ <h4>Includes</h4>
+ <ul>
+ <li><boost/preprocessor/repetition/repeat.hpp></li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/headers/repeat_from_to.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/headers/repeat_from_to.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,31 @@
+<html>
+<head>
+ <title>repeat_from_to.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>repeat_from_to.hpp</b> is a jumper header for backwards compatibility.
+ This header is deprecated.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b><boost/preprocessor/repeat_from_to.hpp></b>
+ </div>
+ <h4>Includes</h4>
+ <ul>
+ <li><boost/preprocessor/repetition/repeat_from_to.hpp></li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/headers/repeat_from_to_2nd.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/headers/repeat_from_to_2nd.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,31 @@
+<html>
+<head>
+ <title>repeat_from_to_2nd.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>repeat_from_to_2nd.hpp</b> is a jumper header for backwards compatibility.
+ This header is deprecated.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b><boost/preprocessor/repeat_from_to_2nd.hpp></b>
+ </div>
+ <h4>Includes</h4>
+ <ul>
+ <li><boost/preprocessor/repetition/repeat_from_to.hpp></li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/headers/repeat_from_to_3rd.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/headers/repeat_from_to_3rd.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,31 @@
+<html>
+<head>
+ <title>repeat_from_to_3rd.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>repeat_from_to_3rd.hpp</b> is a jumper header for backwards compatibility.
+ This header is deprecated.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b><boost/preprocessor/repeat_from_to_3rd.hpp></b>
+ </div>
+ <h4>Includes</h4>
+ <ul>
+ <li><boost/preprocessor/repetition/repeat_from_to.hpp></li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/headers/repetition.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/headers/repetition.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,44 @@
+<html>
+<head>
+ <title>repetition.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>repetition.hpp</b> includes the headers in the <i>repetition</i> folder.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b><boost/preprocessor/repetition.hpp></b>
+ </div>
+ <h4>Includes</h4>
+ <ul>
+ <li><boost/preprocessor/repetition/deduce_r.hpp></li>
+ <li><boost/preprocessor/repetition/deduce_z.hpp></li>
+ <li><boost/preprocessor/repetition/enum.hpp></li>
+ <li><boost/preprocessor/repetition/enum_binary_params.hpp></li>
+ <li><boost/preprocessor/repetition/enum_params.hpp></li>
+ <li><boost/preprocessor/repetition/enum_params_with_a_default.hpp></li>
+ <li><boost/preprocessor/repetition/enum_params_with_defaults.hpp></li>
+ <li><boost/preprocessor/repetition/enum_shifted_params.hpp></li>
+ <li><boost/preprocessor/repetition/enum_shifted.hpp></li>
+ <li><boost/preprocessor/repetition/enum_trailing.hpp></li>
+ <li><boost/preprocessor/repetition/enum_trailing_binary_params.hpp></li>
+ <li><boost/preprocessor/repetition/enum_trailing_params.hpp></li>
+ <li><boost/preprocessor/repetition/for.hpp></li>
+ <li><boost/preprocessor/repetition/repeat.hpp></li>
+ <li><boost/preprocessor/repetition/repeat_from_to.hpp></li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/headers/repetition/deduce_r.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/headers/repetition/deduce_r.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,30 @@
+<html>
+<head>
+ <title>control/deduce_r.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>repetition/deduce_r.hpp</b> header defines a macro to manually deduce the current state of the <b>BOOST_PP_FOR</b> construct.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b><boost/preprocessor/repetition/deduce_r.hpp></b>
+ </div>
+ <h4>Contents</h4>
+ <ul>
+ <li>BOOST_PP_DEDUCE_R</li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/headers/repetition/deduce_z.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/headers/repetition/deduce_z.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,30 @@
+<html>
+<head>
+ <title>control/deduce_z.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>repetition/deduce_z.hpp</b> header defines a macro to manually deduce the current state of the <b>BOOST_PP_REPEAT</b> construct.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b><boost/preprocessor/repetition/deduce_z.hpp></b>
+ </div>
+ <h4>Contents</h4>
+ <ul>
+ <li>BOOST_PP_DEDUCE_Z</li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/headers/repetition/enum.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/headers/repetition/enum.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,31 @@
+<html>
+<head>
+ <title>repetition/enum.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>repetition/enum.hpp</b> header defines a construct that produces a comma-separated list.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b><boost/preprocessor/repetition/enum.hpp></b>
+ </div>
+ <h4>Contents</h4>
+ <ul>
+ <li>BOOST_PP_ENUM</li>
+ <li>BOOST_PP_ENUM_z</li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/headers/repetition/enum_binary_params.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/headers/repetition/enum_binary_params.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,31 @@
+<html>
+<head>
+ <title>repetition/enum_binary_params.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>repetition/enum_binary_params.hpp</b> header defines a construct that produces a comma-separated list of binary parameters.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b><boost/preprocessor/repetition/enum_binary_params.hpp></b>
+ </div>
+ <h4>Contents</h4>
+ <ul>
+ <li>BOOST_PP_ENUM_BINARY_PARAMS</li>
+ <li>BOOST_PP_ENUM_BINARY_PARAMS_Z</li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/headers/repetition/enum_params.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/headers/repetition/enum_params.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,31 @@
+<html>
+<head>
+ <title>repetition/enum_params.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>repetition/enum_params.hpp</b> header defines a construct that produces a comma-separated list of parameters.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b><boost/preprocessor/repetition/enum_params.hpp></b>
+ </div>
+ <h4>Contents</h4>
+ <ul>
+ <li>BOOST_PP_ENUM_PARAMS</li>
+ <li>BOOST_PP_ENUM_PARAMS_Z</li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/headers/repetition/enum_shifted.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/headers/repetition/enum_shifted.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,31 @@
+<html>
+<head>
+ <title>repetition/enum_shifted.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>repetition/enum_shifted.hpp</b> header defines a construct that produces a comma-separated, shifted list.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b><boost/preprocessor/repetition/enum_shifted.hpp></b>
+ </div>
+ <h4>Contents</h4>
+ <ul>
+ <li>BOOST_PP_ENUM_SHIFTED</li>
+ <li>BOOST_PP_ENUM_SHIFTED_z</li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/headers/repetition/enum_shifted_params.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/headers/repetition/enum_shifted_params.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,31 @@
+<html>
+<head>
+ <title>repetition/enum_shifted_params.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>repetition/enum_shifted_params.hpp</b> header defines a construct that produces a comma-separated list of parameters.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b><boost/preprocessor/repetition/enum_shifted_params.hpp></b>
+ </div>
+ <h4>Contents</h4>
+ <ul>
+ <li>BOOST_PP_ENUM_SHIFTED_PARAMS</li>
+ <li>BOOST_PP_ENUM_SHIFTED_PARAMS_z</li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/headers/repetition/enum_trailing.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/headers/repetition/enum_trailing.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,31 @@
+<html>
+<head>
+ <title>repetition/enum_trailing.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>repetition/enum_trailing.hpp</b> header defines a construct that produces a comma-separated list with a leading comma.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b><boost/preprocessor/repetition/enum_trailing.hpp></b>
+ </div>
+ <h4>Contents</h4>
+ <ul>
+ <li>BOOST_PP_ENUM_TRAILING</li>
+ <li>BOOST_PP_ENUM_TRAILING_z</li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/headers/repetition/enum_trailing_params.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/headers/repetition/enum_trailing_params.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,31 @@
+<html>
+<head>
+ <title>repetition/enum_trailing_params.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>repetition/enum_trailing_params.hpp</b> header defines a construct that produces a comma-separated list of parameters with a leading comma.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b><boost/preprocessor/repetition/enum_trailing_params.hpp></b>
+ </div>
+ <h4>Contents</h4>
+ <ul>
+ <li>BOOST_PP_ENUM_TRAILING_PARAMS</li>
+ <li>BOOST_PP_ENUM_TRAILING_PARAMS_Z</li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/headers/repetition/epwad.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/headers/repetition/epwad.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,30 @@
+<html>
+<head>
+ <title>repetition/enum_params_with_a_default.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>repetition/enum_params_with_a_default.hpp</b> header defines a construct that produces a comma-separated list of parameters with a default argument.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b><boost/preprocessor/repetition/enum_params_with_a_default.hpp></b>
+ </div>
+ <h4>Contents</h4>
+ <ul>
+ <li>BOOST_PP_ENUM_PARAMS_WITH_A_DEFAULT</li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/headers/repetition/epwd.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/headers/repetition/epwd.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,30 @@
+<html>
+<head>
+ <title>repetition/enum_params_with_defaults.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>repetition/enum_params_with_defaults.hpp</b> header defines a construct that produces a comma-separated list of parameters with default arguments.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b><boost/preprocessor/repetition/enum_params_with_defaults.hpp></b>
+ </div>
+ <h4>Contents</h4>
+ <ul>
+ <li>BOOST_PP_ENUM_PARAMS_WITH_DEFAULTS</li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/headers/repetition/esbp.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/headers/repetition/esbp.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,31 @@
+<html>
+<head>
+ <title>repetition/enum_shifted_binary_params.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>repetition/enum_shifted_binary_params.hpp</b> header defines a construct that produces a comma-separated list of binary parameters.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b><boost/preprocessor/repetition/enum_shifted_binary_params.hpp></b>
+ </div>
+ <h4>Contents</h4>
+ <ul>
+ <li>BOOST_PP_ENUM_SHIFTED_BINARY_PARAMS</li>
+ <li>BOOST_PP_ENUM_SHIFTED_BINARY_PARAMS_Z</li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/headers/repetition/etbp.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/headers/repetition/etbp.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,31 @@
+<html>
+<head>
+ <title>repetition/enum_trailing_binary_params.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>repetition/enum_trailing_binary_params.hpp</b> header defines a construct that produces a comma-separated list of binary parameters with a leading comma.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b><boost/preprocessor/repetition/enum_trailing_binary_params.hpp></b>
+ </div>
+ <h4>Contents</h4>
+ <ul>
+ <li>BOOST_PP_ENUM_TRAILING_BINARY_PARAMS</li>
+ <li>BOOST_PP_ENUM_TRAILING_BINARY_PARAMS_Z</li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/headers/repetition/for.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/headers/repetition/for.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,31 @@
+<html>
+<head>
+ <title>repetition/for.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>repetition/for.hpp</b> header defines a generalized horizontal repetition construct.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b><boost/preprocessor/repetition/for.hpp></b>
+ </div>
+ <h4>Contents</h4>
+ <ul>
+ <li>BOOST_PP_FOR</li>
+ <li>BOOST_PP_FOR_r</li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/headers/repetition/repeat.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/headers/repetition/repeat.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,34 @@
+<html>
+<head>
+ <title>repetition/repeat.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>repetition/repeat.hpp</b> header defines a fast horizontal repetition construct.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b><boost/preprocessor/repetition/repeat.hpp></b>
+ </div>
+ <h4>Contents</h4>
+ <ul>
+ <li>BOOST_PP_REPEAT</li>
+ <li>BOOST_PP_REPEAT_1ST</li>
+ <li>BOOST_PP_REPEAT_2ND</li>
+ <li>BOOST_PP_REPEAT_3RD</li>
+ <li>BOOST_PP_REPEAT_z</li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/headers/repetition/repeat_from_to.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/headers/repetition/repeat_from_to.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,36 @@
+<html>
+<head>
+ <title>repetition/repeat_from_to.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>repetition/repeat_from_to.hpp</b> header defines a horizontal repetition construct.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b><boost/preprocessor/repetition/repeat_from_to.hpp></b>
+ </div>
+ <h4>Contents</h4>
+ <ul>
+ <li>BOOST_PP_REPEAT_FROM_TO</li>
+ <li>BOOST_PP_REPEAT_FROM_TO_1ST</li>
+ <li>BOOST_PP_REPEAT_FROM_TO_2ND</li>
+ <li>BOOST_PP_REPEAT_FROM_TO_3RD</li>
+ <li>BOOST_PP_REPEAT_FROM_TO_D</li>
+ <li>BOOST_PP_REPEAT_FROM_TO_D_z</li>
+ <li>BOOST_PP_REPEAT_FROM_TO_z</li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/headers/selection.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/headers/selection.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,31 @@
+<html>
+<head>
+ <title>selection.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>selection.hpp</b> includes the headers in the <i>selection</i> folder.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b><boost/preprocessor/selection.hpp></b>
+ </div>
+ <h4>Includes</h4>
+ <ul>
+ <li><boost/preprocessor/selection/max.hpp></li>
+ <li><boost/preprocessor/selection/min.hpp></li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/headers/selection/max.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/headers/selection/max.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,31 @@
+<html>
+<head>
+ <title>selection/max.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>selection/max.hpp</b> header defines a macro that returns the greater of two elements.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b><boost/preprocessor/selection/max.hpp></b>
+ </div>
+ <h4>Contents</h4>
+ <ul>
+ <li>BOOST_PP_MAX</li>
+ <li>BOOST_PP_MAX_D</li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/headers/selection/min.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/headers/selection/min.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,31 @@
+<html>
+<head>
+ <title>selection/min.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>selection/min.hpp</b> header defines a macro that returns the lesser of two elements.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b><boost/preprocessor/selection/min.hpp></b>
+ </div>
+ <h4>Contents</h4>
+ <ul>
+ <li>BOOST_PP_MIN</li>
+ <li>BOOST_PP_MIN_D</li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/headers/seq.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/headers/seq.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,84 @@
+<html>
+<head>
+ <title>seq.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>seq.hpp</b> includes the headers in the <i>seq</i> folder.
+ </div>
+ <h4>
+ Usage
+ </h4>
+ <div class="code">
+ #include <b><boost/preprocessor/seq.hpp></b>
+ </div>
+ <h4>
+ Includes
+ </h4>
+ <ul>
+ <li>
+ <boost/preprocessor/seq/cat.hpp></li>
+ <li>
+ <boost/preprocessor/seq/elem.hpp></li>
+ <li>
+ <boost/preprocessor/seq/enum.hpp></li>
+ <li>
+ <boost/preprocessor/seq/filter.hpp></li>
+ <li>
+ <boost/preprocessor/seq/first_n.hpp></li>
+ <li>
+ <boost/preprocessor/seq/fold_left.hpp></li>
+ <li>
+ <boost/preprocessor/seq/fold_right.hpp></li>
+ <li>
+ <boost/preprocessor/seq/for_each.hpp></li>
+ <li>
+ <boost/preprocessor/seq/for_each_i.hpp></li>
+ <li>
+ <boost/preprocessor/seq/for_each_product.hpp></li>
+ <li>
+ <boost/preprocessor/seq/insert.hpp></li>
+ <li>
+ <boost/preprocessor/seq/pop_back.hpp></li>
+ <li>
+ <boost/preprocessor/seq/pop_front.hpp></li>
+ <li>
+ <boost/preprocessor/seq/push_back.hpp></li>
+ <li>
+ <boost/preprocessor/seq/push_front.hpp></li>
+ <li>
+ <boost/preprocessor/seq/remove.hpp></li>
+ <li>
+ <boost/preprocessor/seq/replace.hpp></li>
+ <li>
+ <boost/preprocessor/seq/rest_n.hpp></li>
+ <li>
+ <boost/preprocessor/seq/reverse.hpp></li>
+ <li>
+ <boost/preprocessor/seq/seq.hpp></li>
+ <li>
+ <boost/preprocessor/seq/size.hpp></li>
+ <li>
+ <boost/preprocessor/seq/subseq.hpp></li>
+ <li>
+ <boost/preprocessor/seq/to_array.hpp></li>
+ <li>
+ <boost/preprocessor/seq/to_list.hpp></li>
+ <li>
+ <boost/preprocessor/seq/to_tuple.hpp></li>
+ <li>
+ <boost/preprocessor/seq/transform.hpp></li>
+ </ul>
+<hr size="1">
+<div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ <br><i>© Copyright Paul Mensonides 2002</i>
+</div>
+<div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at www.boost.org/LICENSE_1_0.txt)</small></p>
+</div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/headers/seq/cat.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/headers/seq/cat.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,38 @@
+<html>
+ <head>
+ <title>seq/cat.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../../styles.css">
+ </head>
+ <body>
+ <div style="margin-left: 0px;">
+ The <b>seq/cat.hpp</b> header defines macros for concatenating all elements in
+ a <i>seq</i>.
+ </div>
+ <h4>
+ Usage
+ </h4>
+ <div class="code">
+ #include <b><boost/preprocessor/seq/cat.hpp></b>
+ </div>
+ <h4>
+ Contents
+ </h4>
+ <ul>
+ <li>
+ BOOST_PP_SEQ_CAT</li>
+ <li>
+ BOOST_PP_SEQ_CAT_S</li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+ </body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/headers/seq/elem.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/headers/seq/elem.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,35 @@
+<html>
+ <head>
+ <title>seq/elem.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../../styles.css">
+ </head>
+ <body>
+ <div style="margin-left: 0px;">
+ The <b>seq/elem.hpp</b> header defines a macro to extract an element from a <i>seq</i>.
+ </div>
+ <h4>
+ Usage
+ </h4>
+ <div class="code">
+ #include <b><boost/preprocessor/seq/elem.hpp></b>
+ </div>
+ <h4>
+ Contents
+ </h4>
+ <ul>
+ <li>
+ BOOST_PP_SEQ_ELEM</li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+ </body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/headers/seq/enum.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/headers/seq/enum.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,35 @@
+<html>
+ <head>
+ <title>seq/enum.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../../styles.css">
+ </head>
+ <body>
+ <div style="margin-left: 0px;">
+ The <b>seq/enum.hpp</b> header defines a macro to enumerate the elements in a <i>seq</i>.
+ </div>
+ <h4>
+ Usage
+ </h4>
+ <div class="code">
+ #include <b><boost/preprocessor/seq/enum.hpp></b>
+ </div>
+ <h4>
+ Contents
+ </h4>
+ <ul>
+ <li>
+ BOOST_PP_SEQ_ENUM</li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+ </body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/headers/seq/filter.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/headers/seq/filter.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,37 @@
+<html>
+ <head>
+ <title>seq/filter.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../../styles.css">
+ </head>
+ <body>
+ <div style="margin-left: 0px;">
+ The <b>seq/filter.hpp</b> header defines macros to filter a <i>seq</i>.
+ </div>
+ <h4>
+ Usage
+ </h4>
+ <div class="code">
+ #include <b><boost/preprocessor/seq/filter.hpp></b>
+ </div>
+ <h4>
+ Contents
+ </h4>
+ <ul>
+ <li>
+ BOOST_PP_SEQ_FILTER</li>
+ <li>
+ BOOST_PP_SEQ_FILTER_S</li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+ </body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/headers/seq/first_n.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/headers/seq/first_n.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,36 @@
+<html>
+ <head>
+ <title>seq/first_n.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../../styles.css">
+ </head>
+ <body>
+ <div style="margin-left: 0px;">
+ The <b>seq/first_n.hpp</b> header defines a macro that returns the first <i>N</i>
+ elements of a <i>seq</i>.
+ </div>
+ <h4>
+ Usage
+ </h4>
+ <div class="code">
+ #include <b><boost/preprocessor/seq/first_n.hpp></b>
+ </div>
+ <h4>
+ Contents
+ </h4>
+ <ul>
+ <li>
+ BOOST_PP_SEQ_FIRST_N</li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+ </body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/headers/seq/fold_left.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/headers/seq/fold_left.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,38 @@
+<html>
+ <head>
+ <title>seq/fold_left.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../../styles.css">
+ </head>
+ <body>
+ <div style="margin-left: 0px;">
+ The <b>seq/fold_left.hpp</b> header defines macros for folding (or
+ accumulating) a <i>seq</i> left-to-right.
+ </div>
+ <h4>
+ Usage
+ </h4>
+ <div class="code">
+ #include <b><boost/preprocessor/seq/fold_left.hpp></b>
+ </div>
+ <h4>
+ Contents
+ </h4>
+ <ul>
+ <li>
+ BOOST_PP_SEQ_FOLD_LEFT</li>
+ <li>
+ BOOST_PP_SEQ_FOLD_LEFT_s</li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+ </body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/headers/seq/fold_right.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/headers/seq/fold_right.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,38 @@
+<html>
+ <head>
+ <title>seq/fold_right.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../../styles.css">
+ </head>
+ <body>
+ <div style="margin-left: 0px;">
+ The <b>seq/fold_right.hpp</b> header defines macros for folding (or
+ accumulating) a <i>seq</i> right-to-left.
+ </div>
+ <h4>
+ Usage
+ </h4>
+ <div class="code">
+ #include <b><boost/preprocessor/seq/fold_right.hpp></b>
+ </div>
+ <h4>
+ Contents
+ </h4>
+ <ul>
+ <li>
+ BOOST_PP_SEQ_FOLD_RIGHT</li>
+ <li>
+ BOOST_PP_SEQ_FOLD_RIGHT_s</li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+ </body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/headers/seq/for_each.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/headers/seq/for_each.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,38 @@
+<html>
+ <head>
+ <title>seq/for_each.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../../styles.css">
+ </head>
+ <body>
+ <div style="margin-left: 0px;">
+ The <b>seq/for_each.hpp</b> header defines macros to repeat a macro for each
+ element in a <i>seq</i>.
+ </div>
+ <h4>
+ Usage
+ </h4>
+ <div class="code">
+ #include <b><boost/preprocessor/seq/for_each.hpp></b>
+ </div>
+ <h4>
+ Contents
+ </h4>
+ <ul>
+ <li>
+ BOOST_PP_SEQ_FOR_EACH</li>
+ <li>
+ BOOST_PP_SEQ_FOR_EACH_R</li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+ </body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/headers/seq/for_each_i.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/headers/seq/for_each_i.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,38 @@
+<html>
+ <head>
+ <title>seq/for_each_i.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../../styles.css">
+ </head>
+ <body>
+ <div style="margin-left: 0px;">
+ The <b>seq/for_each_i.hpp</b> header defines macros to repeat a macro for each
+ element in a <i>seq</i>.
+ </div>
+ <h4>
+ Usage
+ </h4>
+ <div class="code">
+ #include <b><boost/preprocessor/seq/for_each_i.hpp></b>
+ </div>
+ <h4>
+ Contents
+ </h4>
+ <ul>
+ <li>
+ BOOST_PP_SEQ_FOR_EACH_I</li>
+ <li>
+ BOOST_PP_SEQ_FOR_EACH_I_R</li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+ </body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/headers/seq/for_each_product.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/headers/seq/for_each_product.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,38 @@
+<html>
+ <head>
+ <title>seq/for_each_product.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../../styles.css">
+ </head>
+ <body>
+ <div style="margin-left: 0px;">
+ The <b>seq/for_each_product.hpp</b> header defines macros to repeat a macro for
+ each cartesian product of several <i>seqs</i>.
+ </div>
+ <h4>
+ Usage
+ </h4>
+ <div class="code">
+ #include <b><boost/preprocessor/seq/for_each_product.hpp></b>
+ </div>
+ <h4>
+ Contents
+ </h4>
+ <ul>
+ <li>
+ BOOST_PP_SEQ_FOR_EACH_PRODUCT</li>
+ <li>
+ BOOST_PP_SEQ_FOR_EACH_PRODUCT_R</li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+ </body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/headers/seq/insert.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/headers/seq/insert.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,35 @@
+<html>
+ <head>
+ <title>seq/insert.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../../styles.css">
+ </head>
+ <body>
+ <div style="margin-left: 0px;">
+ The <b>seq/insert.hpp</b> header defines a macro to insert an element into a <i>seq</i>.
+ </div>
+ <h4>
+ Usage
+ </h4>
+ <div class="code">
+ #include <b><boost/preprocessor/seq/insert.hpp></b>
+ </div>
+ <h4>
+ Contents
+ </h4>
+ <ul>
+ <li>
+ BOOST_PP_SEQ_INSERT</li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+ </body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/headers/seq/pop_back.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/headers/seq/pop_back.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,36 @@
+<html>
+ <head>
+ <title>seq/pop_back.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../../styles.css">
+ </head>
+ <body>
+ <div style="margin-left: 0px;">
+ The <b>seq/pop_back.hpp</b> header defines a macro to pop the last element off
+ a <i>seq</i>.
+ </div>
+ <h4>
+ Usage
+ </h4>
+ <div class="code">
+ #include <b><boost/preprocessor/seq/pop_back.hpp></b>
+ </div>
+ <h4>
+ Contents
+ </h4>
+ <ul>
+ <li>
+ BOOST_PP_SEQ_POP_BACK</li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+ </body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/headers/seq/pop_front.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/headers/seq/pop_front.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,36 @@
+<html>
+ <head>
+ <title>seq/pop_front.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../../styles.css">
+ </head>
+ <body>
+ <div style="margin-left: 0px;">
+ The <b>seq/pop_front.hpp</b> header defines a macro to pop the first element
+ off a <i>seq</i>.
+ </div>
+ <h4>
+ Usage
+ </h4>
+ <div class="code">
+ #include <b><boost/preprocessor/seq/pop_front.hpp></b>
+ </div>
+ <h4>
+ Contents
+ </h4>
+ <ul>
+ <li>
+ BOOST_PP_SEQ_POP_FRONT</li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+ </body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/headers/seq/push_back.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/headers/seq/push_back.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,35 @@
+<html>
+ <head>
+ <title>seq/push_back.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../../styles.css">
+ </head>
+ <body>
+ <div style="margin-left: 0px;">
+ The <b>seq/push_back.hpp</b> header defines a macro to append an element to a <i>seq</i>.
+ </div>
+ <h4>
+ Usage
+ </h4>
+ <div class="code">
+ #include <b><boost/preprocessor/seq/push_back.hpp></b>
+ </div>
+ <h4>
+ Contents
+ </h4>
+ <ul>
+ <li>
+ BOOST_PP_SEQ_PUSH_BACK</li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+ </body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/headers/seq/push_front.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/headers/seq/push_front.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,35 @@
+<html>
+ <head>
+ <title>seq/push_front.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../../styles.css">
+ </head>
+ <body>
+ <div style="margin-left: 0px;">
+ The <b>seq/push_front.hpp</b> header defines a macro to prepend an element to a <i>seq</i>.
+ </div>
+ <h4>
+ Usage
+ </h4>
+ <div class="code">
+ #include <b><boost/preprocessor/seq/push_front.hpp></b>
+ </div>
+ <h4>
+ Contents
+ </h4>
+ <ul>
+ <li>
+ BOOST_PP_SEQ_PUSH_FRONT</li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+ </body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/headers/seq/remove.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/headers/seq/remove.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,35 @@
+<html>
+ <head>
+ <title>seq/remove.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../../styles.css">
+ </head>
+ <body>
+ <div style="margin-left: 0px;">
+ The <b>seq/remove.hpp</b> header defines a macro to remove an element from a <i>seq</i>.
+ </div>
+ <h4>
+ Usage
+ </h4>
+ <div class="code">
+ #include <b><boost/preprocessor/seq/remove.hpp></b>
+ </div>
+ <h4>
+ Contents
+ </h4>
+ <ul>
+ <li>
+ BOOST_PP_SEQ_REMOVE</li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+ </body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/headers/seq/replace.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/headers/seq/replace.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,35 @@
+<html>
+ <head>
+ <title>seq/replace.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../../styles.css">
+ </head>
+ <body>
+ <div style="margin-left: 0px;">
+ The <b>seq/replace.hpp</b> header defines a macro to replace an element in a <i>seq</i>.
+ </div>
+ <h4>
+ Usage
+ </h4>
+ <div class="code">
+ #include <b><boost/preprocessor/seq/replace.hpp></b>
+ </div>
+ <h4>
+ Contents
+ </h4>
+ <ul>
+ <li>
+ BOOST_PP_SEQ_REPLACE</li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+ </body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/headers/seq/rest_n.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/headers/seq/rest_n.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,36 @@
+<html>
+ <head>
+ <title>seq/rest_n.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../../styles.css">
+ </head>
+ <body>
+ <div style="margin-left: 0px;">
+ The <b>seq/rest_n.hpp</b> header defines a macro for extracting a group of
+ elements from the end of a <i>seq</i>.
+ </div>
+ <h4>
+ Usage
+ </h4>
+ <div class="code">
+ #include <b><boost/preprocessor/seq/rest_n.hpp></b>
+ </div>
+ <h4>
+ Contents
+ </h4>
+ <ul>
+ <li>
+ BOOST_PP_SEQ_REST_N</li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+ </body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/headers/seq/reverse.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/headers/seq/reverse.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,37 @@
+<html>
+ <head>
+ <title>seq/reverse.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../../styles.css">
+ </head>
+ <body>
+ <div style="margin-left: 0px;">
+ The <b>seq/reverse.hpp</b> header defines macros to reverse a <i>seq</i>.
+ </div>
+ <h4>
+ Usage
+ </h4>
+ <div class="code">
+ #include <b><boost/preprocessor/seq/reverse.hpp></b>
+ </div>
+ <h4>
+ Contents
+ </h4>
+ <ul>
+ <li>
+ BOOST_PP_SEQ_REVERSE</li>
+ <li>
+ BOOST_PP_SEQ_REVERSE_S</li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+ </body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/headers/seq/seq.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/headers/seq/seq.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,39 @@
+<html>
+ <head>
+ <title>seq/seq.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../../styles.css">
+ </head>
+ <body>
+ <div style="margin-left: 0px;">
+ The <b>seq/seq.hpp</b> header defines basic primitives for manipulating <i>seqs</i>.
+ </div>
+ <h4>
+ Usage
+ </h4>
+ <div class="code">
+ #include <b><boost/preprocessor/seq/seq.hpp></b>
+ </div>
+ <h4>
+ Contents
+ </h4>
+ <ul>
+ <li>
+ BOOST_PP_SEQ_HEAD</li>
+ <li>
+ BOOST_PP_SEQ_NIL</li>
+ <li>
+ BOOST_PP_SEQ_TAIL</li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+ </body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/headers/seq/size.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/headers/seq/size.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,35 @@
+<html>
+ <head>
+ <title>seq/size.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../../styles.css">
+ </head>
+ <body>
+ <div style="margin-left: 0px;">
+ The <b>seq/size.hpp</b> header defines a macro to calculate the size of a <i>seq</i>.
+ </div>
+ <h4>
+ Usage
+ </h4>
+ <div class="code">
+ #include <b><boost/preprocessor/seq/size.hpp></b>
+ </div>
+ <h4>
+ Contents
+ </h4>
+ <ul>
+ <li>
+ BOOST_PP_SEQ_SIZE</li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+ </body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/headers/seq/subseq.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/headers/seq/subseq.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,35 @@
+<html>
+ <head>
+ <title>seq/subseq.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../../styles.css">
+ </head>
+ <body>
+ <div style="margin-left: 0px;">
+ The <b>seq/subseq.hpp</b> header defines a macro that extracts a subseq from a <i>seq</i>.
+ </div>
+ <h4>
+ Usage
+ </h4>
+ <div class="code">
+ #include <b><boost/preprocessor/seq/subseq.hpp></b>
+ </div>
+ <h4>
+ Contents
+ </h4>
+ <ul>
+ <li>
+ BOOST_PP_SEQ_SUBSEQ</li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+ </body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/headers/seq/to_array.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/headers/seq/to_array.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,36 @@
+<html>
+ <head>
+ <title>seq/to_array.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../../styles.css">
+ </head>
+ <body>
+ <div style="margin-left: 0px;">
+ The <b>seq/to_array.hpp</b> header defines a macro that converts a <i>seq</i> to
+ an <i>array</i>.
+ </div>
+ <h4>
+ Usage
+ </h4>
+ <div class="code">
+ #include <b><boost/preprocessor/seq/to_array.hpp></b>
+ </div>
+ <h4>
+ Contents
+ </h4>
+ <ul>
+ <li>
+ BOOST_PP_SEQ_TO_ARRAY</li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+ </body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/headers/seq/to_list.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/headers/seq/to_list.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,30 @@
+<html><head>
+ <title>seq/to_list.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../../styles.css"></head><body>
+ <div style="margin-left: 0px;">
+ The <b>seq/to_list.hpp</b> header defines a macro that converts a <i>seq</i> to
+ a <i>list</i>.
+ </div>
+ <h4>
+ Usage
+ </h4>
+ <div class="code">
+ #include <b><boost/preprocessor/seq/to_list.hpp></b>
+ </div>
+ <h4>
+ Contents
+ </h4>
+ <ul>
+ <li>
+ BOOST_PP_SEQ_TO_LIST</li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i></i><i>© Copyright Edward Diener 2011</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at www.boost.org/LICENSE_1_0.txt)</small></p>
+ </div>
+ </body></html>
Added: branches/pplib/v2/libs/preprocessor/doc/headers/seq/to_tuple.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/headers/seq/to_tuple.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,36 @@
+<html>
+ <head>
+ <title>seq/to_tuple.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../../styles.css">
+ </head>
+ <body>
+ <div style="margin-left: 0px;">
+ The <b>seq/to_tuple.hpp</b> header defines a macro that converts a <i>seq</i> to
+ an <i>tuple</i>.
+ </div>
+ <h4>
+ Usage
+ </h4>
+ <div class="code">
+ #include <b><boost/preprocessor/seq/to_tuple.hpp></b>
+ </div>
+ <h4>
+ Contents
+ </h4>
+ <ul>
+ <li>
+ BOOST_PP_SEQ_TO_TUPLE</li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+ </body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/headers/seq/transform.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/headers/seq/transform.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,37 @@
+<html>
+ <head>
+ <title>seq/transform.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../../styles.css">
+ </head>
+ <body>
+ <div style="margin-left: 0px;">
+ The <b>seq/transform.hpp</b> header defines macros to transform a <i>seq</i>.
+ </div>
+ <h4>
+ Usage
+ </h4>
+ <div class="code">
+ #include <b><boost/preprocessor/seq/transform.hpp></b>
+ </div>
+ <h4>
+ Contents
+ </h4>
+ <ul>
+ <li>
+ BOOST_PP_SEQ_TRANSFORM</li>
+ <li>
+ BOOST_PP_SEQ_TRANSFORM_S</li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+ </body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/headers/slot.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/headers/slot.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,30 @@
+<html>
+<head>
+ <title>slot.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>slot.hpp</b> includes the headers in the <i>slot</i> folder.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b><boost/preprocessor/slot.hpp></b>
+ </div>
+ <h4>Includes</h4>
+ <ul>
+ <li><boost/preprocessor/slot/slot.hpp></li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/headers/slot/counter.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/headers/slot/counter.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,31 @@
+<html>
+<head>
+ <title>slot/counter.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>slot/counter.hpp</b> header defines macros used to generate numbers that are unique within a translation unit.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b><boost/preprocessor/slot/counter.hpp></b>
+ </div>
+ <h4>Contents</h4>
+ <ul>
+ <li>BOOST_PP_COUNTER</li>
+ <li>BOOST_PP_UPDATE_COUNTER</li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/headers/slot/slot.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/headers/slot/slot.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,31 @@
+<html>
+<head>
+ <title>slot/slot.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>slot/slot.hpp</b> header defines macros to manipulate <i>slots</i>.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b><boost/preprocessor/slot/slot.hpp></b>
+ </div>
+ <h4>Contents</h4>
+ <ul>
+ <li>BOOST_PP_ASSIGN_SLOT</li>
+ <li>BOOST_PP_SLOT</li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/headers/stringize.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/headers/stringize.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,30 @@
+<html>
+<head>
+ <title>stringize.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>stringize.hpp</b> header defines a stringizing macro.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b><boost/preprocessor/stringize.hpp></b>
+ </div>
+ <h4>Contents</h4>
+ <ul>
+ <li>BOOST_PP_STRINGIZE</li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/headers/tuple.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/headers/tuple.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,37 @@
+<html>
+<head>
+ <title>tuple.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>tuple.hpp</b> includes the headers in the <i>tuple</i> folder.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b><boost/preprocessor/tuple.hpp></b>
+ </div>
+ <h4>Includes<br></h4>
+ <ul>
+ <li><boost/preprocessor/tuple/eat.hpp> (v)</li>
+ <li><boost/preprocessor/tuple/elem.hpp> (v)</li>
+ <li><boost/preprocessor/tuple/enum.hpp> (v)</li>
+ <li><boost/preprocessor/tuple/rem.hpp> (v)</li>
+ <li><boost/preprocessor/tuple/reverse.hpp> (v)</li>
+ <li><boost/preprocessor/tuple/size.hpp> (v)</li>
+ <li><boost/preprocessor/tuple/to_array.hpp> (v)</li>
+ <li><boost/preprocessor/tuple/to_list.hpp> (v)</li>
+ <li><boost/preprocessor/tuple/to_seq.hpp> (v)</li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ <br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at www.boost.org/LICENSE_1_0.txt)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/headers/tuple/eat.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/headers/tuple/eat.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,25 @@
+<html><head><title>tuple/eat.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../../styles.css"></head><body>
+ <div style="margin-left: 0px;">
+ The <b>tuple/eat.hpp</b> header defines a macro eats a <i>tuple</i>.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b><boost/preprocessor/tuple/eat.hpp></b>
+ </div>
+ <h4>Contents</h4>
+ <ul>
+ <li>BOOST_PP_TUPLE_EAT (v)<br>
+</li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ <br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at www.boost.org/LICENSE_1_0.txt)</small></p>
+ </div>
+</body></html>
Added: branches/pplib/v2/libs/preprocessor/doc/headers/tuple/elem.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/headers/tuple/elem.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,25 @@
+<html><head><title>tuple/elem.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../../styles.css"></head><body>
+ <div style="margin-left: 0px;">
+ The <b>tuple/elem.hpp</b> header defines a macro to extract elements from a <i>tuple</i>.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b><boost/preprocessor/tuple/elem.hpp></b>
+ </div>
+ <h4>Contents</h4>
+ <ul>
+ <li>BOOST_PP_TUPLE_ELEM (v)<br>
+</li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ <br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at www.boost.org/LICENSE_1_0.txt)</small></p>
+ </div>
+</body></html>
Added: branches/pplib/v2/libs/preprocessor/doc/headers/tuple/enum.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/headers/tuple/enum.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,25 @@
+<html><head>
+ <title>tuple/enum.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../../styles.css"></head><body>
+ <div style="margin-left: 0px;">
+ The <b>tuple/enum.hpp</b> header defines a macro to onvert a <i>tuple</i> to its comma-separated elements.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b><boost/preprocessor/tuple/enum.hpp></b>
+ </div>
+ <h4>Contents</h4>
+ <ul>
+ <li>BOOST_PP_TUPLE_ENUM (v)<br>
+</li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i></i><i>© Copyright Edward Diener 2011</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at www.boost.org/LICENSE_1_0.txt)</small></p>
+ </div>
+</body></html>
Added: branches/pplib/v2/libs/preprocessor/doc/headers/tuple/rem.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/headers/tuple/rem.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,27 @@
+<html><head><title>tuple/rem.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../../styles.css"></head><body>
+ <div style="margin-left: 0px;">
+ The <b>tuple/rem.hpp</b> header defines a macro that removes the parentheses from a <i>tuple</i>.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b><boost/preprocessor/tuple/rem.hpp></b>
+ </div>
+ <h4>Contents</h4>
+ <ul>
+ <li>BOOST_PP_TUPLE_REM (v)<br>
+</li>
+ <li>BOOST_PP_TUPLE_REM_CTOR (v)<br>
+</li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ <br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at www.boost.org/LICENSE_1_0.txt)</small></p>
+ </div>
+</body></html>
Added: branches/pplib/v2/libs/preprocessor/doc/headers/tuple/reverse.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/headers/tuple/reverse.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,25 @@
+<html><head><title>tuple/reverse.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../../styles.css"></head><body>
+ <div style="margin-left: 0px;">
+ The <b>tuple/reverse.hpp</b> header defines a macro that reverses a <i>tuple</i>.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b><boost/preprocessor/tuple/reverse.hpp></b>
+ </div>
+ <h4>Contents</h4>
+ <ul>
+ <li>BOOST_PP_TUPLE_REVERSE (v)<br>
+</li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ <br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at www.boost.org/LICENSE_1_0.txt)</small></p>
+ </div>
+</body></html>
Added: branches/pplib/v2/libs/preprocessor/doc/headers/tuple/size.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/headers/tuple/size.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,25 @@
+<html><head>
+ <title>tuple/size.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../../styles.css"></head><body>
+ <div style="margin-left: 0px;">
+ The <b>tuple/size.hpp</b> header defines a variadic macro that gives the number of elements in the <i>tuple</i>.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b><boost/preprocessor/tuple/size.hpp></b>
+ </div>
+ <h4>Contents</h4>
+ <ul>
+ <li>BOOST_PP_TUPLE_SIZE (v)<br>
+</li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i></i><i>© Copyright Edward Diener 2011</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at www.boost.org/LICENSE_1_0.txt)</small></p>
+ </div>
+</body></html>
Added: branches/pplib/v2/libs/preprocessor/doc/headers/tuple/to_array.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/headers/tuple/to_array.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,25 @@
+<html><head>
+ <title>tuple/to_array.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../../styles.css"></head><body>
+ <div style="margin-left: 0px;">
+ The <b>tuple/to_array.hpp</b> header defines a macro that converts a <i>tuple</i> to an <i>array</i>.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b><boost/preprocessor/tuple/to_array.hpp></b>
+ </div>
+ <h4>Contents</h4>
+ <ul>
+ <li>BOOST_PP_TUPLE_TO_ARRAY (v)<br>
+</li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i></i><i>© Copyright Edward Diener 2011</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at www.boost.org/LICENSE_1_0.txt)</small></p>
+ </div>
+</body></html>
Added: branches/pplib/v2/libs/preprocessor/doc/headers/tuple/to_list.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/headers/tuple/to_list.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,25 @@
+<html><head><title>tuple/to_list.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../../styles.css"></head><body>
+ <div style="margin-left: 0px;">
+ The <b>tuple/to_list.hpp</b> header defines a macro that converts a <i>tuple</i> to a <i>list</i>.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b><boost/preprocessor/tuple/to_list.hpp></b>
+ </div>
+ <h4>Contents</h4>
+ <ul>
+ <li>BOOST_PP_TUPLE_TO_LIST (v)<sup><br>
+ </sup></li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ <br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at www.boost.org/LICENSE_1_0.txt)</small></p>
+ </div>
+</body></html>
Added: branches/pplib/v2/libs/preprocessor/doc/headers/tuple/to_seq.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/headers/tuple/to_seq.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,31 @@
+<html><head><title>tuple/to_seq.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../../styles.css"></head><body>
+ <div style="margin-left: 0px;">
+ The <b>tuple/to_seq.hpp</b> header defines a macro that converts a <i>tuple</i>
+ to a <i>seq</i>.
+ </div>
+ <h4>
+ Usage
+ </h4>
+ <div class="code">
+ #include <b><boost/preprocessor/tuple/to_seq.hpp></b>
+ </div>
+ <h4>
+ Contents
+ </h4>
+ <ul>
+ <li>
+ BOOST_PP_TUPLE_TO_SEQ (v)<br>
+</li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ <br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at www.boost.org/LICENSE_1_0.txt)</small></p>
+ </div>
+ </body></html>
Added: branches/pplib/v2/libs/preprocessor/doc/headers/variadic.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/headers/variadic.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,33 @@
+<html>
+<head>
+ <title>variadic.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>variadic.hpp</b> includes the headers in the <i>variadic</i> folder.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b><boost/preprocessor/variadic.hpp></b>
+ </div>
+ <h4>Includes</h4>
+ <ul>
+ <li><boost/preprocessor/variadic/elem.hpp> (v)</li>
+ <li><boost/preprocessor/variadic/size.hpp> (v)</li>
+ <li><boost/preprocessor/variadic/to_array.hpp> (v)</li>
+ <li><boost/preprocessor/variadic/to_list.hpp> (v)</li>
+ <li><boost/preprocessor/variadic/to_seq.hpp> (v)</li>
+ <li><boost/preprocessor/variadic/to_tuple.hpp> (v)</li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i></i><i>© Copyright Edward Diener 2011</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at www.boost.org/LICENSE_1_0.txt)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/headers/variadic/elem.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/headers/variadic/elem.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,29 @@
+<html>
+ <head>
+ <title>variadic/elem.hpp
+ </title>
+ <link rel="stylesheet" type="text/css" href="../../styles.css">
+ </head>
+ <body>
+ <div style="margin-left: 0px;">
+ The <b>variadic/elem.hpp</b> header defines a variadic macro to extract an element from <i>variadic data</i>.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b><boost/preprocessor/variadic/elem.hpp></b>
+ </div>
+ <h4>Contents</h4>
+ <ul>
+ <li>BOOST_PP_VARIADIC_ELEM (v)<br>
+</li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i></i><i>© Copyright Edward Diener 2011</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at www.boost.org/LICENSE_1_0.txt)</small></p>
+ </div>
+</body></html>
Added: branches/pplib/v2/libs/preprocessor/doc/headers/variadic/size.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/headers/variadic/size.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,25 @@
+<html><head>
+ <title>variadic/size.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../../styles.css"></head><body>
+ <div style="margin-left: 0px;">
+ The <b>variadic/size.hpp</b> header defines a variadic macro that gives the number of comma-separated elements in the <i>variadic data</i>.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b><boost/preprocessor/variadic/size.hpp></b>
+ </div>
+ <h4>Contents</h4>
+ <ul>
+ <li>BOOST_PP_VARIADIC_SIZE (v)<br>
+ </li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i></i><i>© Copyright Edward Diener 2011</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at www.boost.org/LICENSE_1_0.txt)</small></p>
+ </div>
+ </body></html>
\ No newline at end of file
Added: branches/pplib/v2/libs/preprocessor/doc/headers/variadic/to_array.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/headers/variadic/to_array.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,25 @@
+<html><head>
+ <title>variadic/to_array.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../../styles.css"></head><body>
+ <div style="margin-left: 0px;">
+ The <b>variadic/to_array.hpp</b> header defines a variadic macro that converts <i>variadic data</i> to an <i>array</i>.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b><boost/preprocessor/variadic/to_array.hpp></b>
+ </div>
+ <h4>Contents</h4>
+ <ul>
+ <li>BOOST_PP_VARIADIC_TO_ARRAY (v)<br>
+</li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i></i><i>© Copyright Edward Diener 2011</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at www.boost.org/LICENSE_1_0.txt)</small></p>
+ </div>
+</body></html>
\ No newline at end of file
Added: branches/pplib/v2/libs/preprocessor/doc/headers/variadic/to_list.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/headers/variadic/to_list.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,25 @@
+<html><head>
+ <title>variadic/to_list.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../../styles.css"></head><body>
+ <div style="margin-left: 0px;">
+ The <b>variadic/to_list.hpp</b> header defines a variadic macro that converts <i>variadic data </i>to a <i>list</i>.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b><boost/preprocessor/variadic/to_list.hpp></b>
+ </div>
+ <h4>Contents</h4>
+ <ul>
+ <li>BOOST_PP_VARIADIC_TO_LIST (v)<br>
+</li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i></i><i>© Copyright Edward Diener 2011</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at www.boost.org/LICENSE_1_0.txt)</small></p>
+ </div>
+</body></html>
\ No newline at end of file
Added: branches/pplib/v2/libs/preprocessor/doc/headers/variadic/to_seq.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/headers/variadic/to_seq.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,30 @@
+<html><head>
+ <title>variadic/to_seq.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../../styles.css"></head><body>
+ <div style="margin-left: 0px;">
+ The <b>variadic/to_seq.hpp</b> header defines a variadic macro that converts <i>variadic data </i>to a <i>seq</i>.
+ </div>
+ <h4>
+ Usage
+ </h4>
+ <div class="code">
+ #include <b><boost/preprocessor/variadic/to_seq.hpp></b>
+ </div>
+ <h4>
+ Contents
+ </h4>
+ <ul>
+ <li>
+ BOOST_PP_VARIADIC_TO_SEQ (v)<br>
+</li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i></i><i>© Copyright Edward Diener 2011</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at www.boost.org/LICENSE_1_0.txt)</small></p>
+ </div>
+ </body></html>
Added: branches/pplib/v2/libs/preprocessor/doc/headers/variadic/to_tuple.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/headers/variadic/to_tuple.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,31 @@
+<html><head>
+ <title>variadic/to_tuple.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../../styles.css"></head><body>
+ <div style="margin-left: 0px;">
+ The <b>variadic/to_tuple.hpp</b> header defines a variadic macro that converts <i>variadic data</i>
+ to a <i>tuple</i>.
+ </div>
+ <h4>
+ Usage
+ </h4>
+ <div class="code">
+ #include <b><boost/preprocessor/variadic/to_tuple.hpp></b>
+ </div>
+ <h4>
+ Contents
+ </h4>
+ <ul>
+ <li>
+ BOOST_PP_VARIADIC_TO_TUPLE (v)<br>
+</li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i></i><i>© Copyright Edward Diener 2011</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at www.boost.org/LICENSE_1_0.txt)</small></p>
+ </div>
+ </body></html>
Added: branches/pplib/v2/libs/preprocessor/doc/headers/while.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/headers/while.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,31 @@
+<html>
+<head>
+ <title>while.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>while.hpp</b> is a jumper header for backwards compatibility.
+ This header is deprecated.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b><boost/preprocessor/while.hpp></b>
+ </div>
+ <h4>Includes</h4>
+ <ul>
+ <li><boost/preprocessor/control/while.hpp></li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/headers/wstringize.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/headers/wstringize.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,30 @@
+<html>
+<head>
+ <title>wstringize.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>wstringize.hpp</b> header defines a wide stringizing macro.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b><boost/preprocessor/wstringize.hpp></b>
+ </div>
+ <h4>Contents</h4>
+ <ul>
+ <li>BOOST_PP_WSTRINGIZE</li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/index.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/index.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,23 @@
+<html>
+ <head>
+ <title>Boost.Preprocessor</title>
+ </head>
+ <frameset rows="65,*" frameborder="0">
+ <frame name="top" src="top.html" scrolling="no" noresize>
+ <frameset cols="350,*" frameborder="0" border="3">
+ <frame name="index" src="contents.html" scrolling="auto">
+ <frame name="desc" src="title.html" scrolling="auto">
+ </frameset>
+ <noframes>
+ ..</noframes>
+ </frameset>
+
+<!--
+© Copyright Housemarque Oy 2002
+© Copyright Paul Mensonides 2002
+Distributed under the Boost Software License, Version 1.0.
+(See accompanying file LICENSE_1_0.txt or copy at
+http://www.boost.org/LICENSE_1_0.txt)
+-->
+
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/miscellanea.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/miscellanea.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,24 @@
+<html>
+<head>
+ <title>miscellanea.html</title>
+ <link rel="stylesheet" type="text/css" href="styles.css">
+ <base target="desc">
+</head>
+<body>
+<h4>Miscellanea <small>[back]</small></h4>
+<ul>
+ <li>syntax highlighting</li>
+ <li>acknowledgements</li>
+ <li>bibliography</li>
+</ul>
+
+<!--
+© Copyright Housemarque Oy 2002
+© Copyright Paul Mensonides 2002
+Distributed under the Boost Software License, Version 1.0.
+(See accompanying file LICENSE_1_0.txt or copy at
+http://www.boost.org/LICENSE_1_0.txt)
+-->
+
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/ref.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/ref.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,302 @@
+<html>
+ <head>
+ <title>ref.html</title>
+ <link rel="stylesheet" type="text/css" href="styles.css">
+ <base target="desc">
+ </head>
+ <body>
+<h4> Reference <small>[back]</small>
+</h4>
+<ul>
+<!-- A -->
+ <li>ADD</li>
+ <li>ADD_D</li>
+ <li>AND</li>
+ <li>APPLY</li>
+ <li>ARRAY_DATA</li>
+ <li>ARRAY_ELEM</li>
+ <li>ARRAY_ENUM</li>
+ <li>ARRAY_INSERT</li>
+ <li>ARRAY_INSERT_D</li>
+ <li>ARRAY_POP_BACK</li>
+ <li>ARRAY_POP_BACK_Z</li>
+ <li>ARRAY_POP_FRONT</li>
+ <li>ARRAY_POP_FRONT_Z</li>
+ <li>ARRAY_PUSH_BACK</li>
+ <li>ARRAY_PUSH_FRONT</li>
+ <li>ARRAY_REMOVE</li>
+ <li>ARRAY_REMOVE_D</li>
+ <li>ARRAY_REPLACE</li>
+ <li>ARRAY_REPLACE_D</li>
+ <li>ARRAY_REVERSE</li>
+ <li>ARRAY_SIZE</li>
+ <li>ARRAY_TO_LIST</li>
+ <li>ARRAY_TO_SEQ</li>
+ <li>ARRAY_TO_TUPLE</li>
+ <li>ASSERT</li>
+ <li>ASSERT_MSG</li>
+ <li>ASSIGN_SLOT</li>
+<!-- B -->
+ <li>BITAND</li>
+ <li>BITNOR</li>
+ <li>BITOR</li>
+ <li>BITXOR</li>
+ <li>BOOL</li>
+<!-- C -->
+ <li>CAT</li>
+ <li>COMMA</li>
+ <li>COMMA_IF</li>
+ <li>COMPL</li>
+ <li>CONFIG_EXTENDED_LINE_INFO</li>
+ <li>COUNTER</li>
+<!-- D -->
+ <li>DEC</li>
+ <li>DEDUCE_D</li>
+ <li>DEDUCE_R</li>
+ <li>DEDUCE_Z</li>
+ <li>DIV</li>
+ <li>DIV_D</li>
+<!-- E -->
+ <li>EMPTY</li>
+ <li>ENUM</li>
+ <li>ENUM_BINARY_PARAMS</li>
+ <li>ENUM_BINARY_PARAMS_Z</li>
+ <li>ENUM_PARAMS</li>
+ <li>ENUM_PARAMS_WITH_A_DEFAULT*</li>
+ <li>ENUM_PARAMS_WITH_DEFAULTS*</li>
+ <li>ENUM_PARAMS_Z</li>
+ <li>ENUM_SHIFTED</li>
+ <li>ENUM_SHIFTED_BINARY_PARAMS</li>
+ <li>ENUM_SHIFTED_BINARY_PARAMS_Z</li>
+ <li>ENUM_SHIFTED_PARAMS</li>
+ <li>ENUM_SHIFTED_PARAMS_Z</li>
+ <li>ENUM_SHIFTED_z</li>
+ <li>ENUM_TRAILING</li>
+ <li>ENUM_TRAILING_BINARY_PARAMS</li>
+ <li>ENUM_TRAILING_BINARY_PARAMS_Z</li>
+ <li>ENUM_TRAILING_PARAMS</li>
+ <li>ENUM_TRAILING_PARAMS_Z</li>
+ <li>ENUM_TRAILING_z</li>
+ <li>ENUM_z</li>
+ <li>EQUAL</li>
+ <li>EQUAL_D*</li>
+ <li>EXPAND</li>
+ <li>EXPR_IF</li>
+ <li>EXPR_IIF</li>
+<!-- F -->
+ <li>FILENAME_x</li>
+ <li>FOR</li>
+ <li>FOR_r</li>
+ <li>FRAME_FINISH</li>
+ <li>FRAME_FLAGS</li>
+ <li>FRAME_ITERATION</li>
+ <li>FRAME_START</li>
+<!-- G -->
+ <li>GREATER</li>
+ <li>GREATER_D</li>
+ <li>GREATER_EQUAL</li>
+ <li>GREATER_EQUAL_D</li>
+<!-- I -->
+ <li>IDENTITY</li>
+ <li>IF</li>
+ <li>IIF</li>
+ <li>INC</li>
+ <li>INCLUDE_SELF</li>
+ <li>INDIRECT_SELF</li>
+ <li>INTERCEPT</li>
+ <li>IS_ITERATING</li>
+ <li>IS_SELFISH</li>
+ <li>ITERATE</li>
+ <li>ITERATION</li>
+ <li>ITERATION_DEPTH</li>
+ <li>ITERATION_FINISH</li>
+ <li>ITERATION_FLAGS</li>
+ <li>ITERATION_LIMITS</li>
+ <li>ITERATION_PARAMS_x</li>
+ <li>ITERATION_START</li>
+<!-- L -->
+ <li>LESS</li>
+ <li>LESS_D</li>
+ <li>LESS_EQUAL</li>
+ <li>LESS_EQUAL_D</li>
+ <li>LIMIT_DIM</li>
+ <li>LIMIT_FOR</li>
+ <li>LIMIT_ITERATION</li>
+ <li>LIMIT_ITERATION_DIM</li>
+ <li>LIMIT_MAG</li>
+ <li>LIMIT_REPEAT</li>
+ <li>LIMIT_SEQ</li>
+ <li>LIMIT_SLOT_COUNT</li>
+ <li>LIMIT_SLOT_SIG</li>
+ <li>LIMIT_TUPLE</li>
+ <li>LIMIT_VARIADIC</li>
+ <li>LIMIT_WHILE</li>
+ <li>LINE</li>
+ <li>LIST_APPEND</li>
+ <li>LIST_APPEND_D</li>
+ <li>LIST_AT</li>
+ <li>LIST_AT_D</li>
+ <li>LIST_CAT</li>
+ <li>LIST_CAT_D</li>
+ <li>LIST_CONS*</li>
+ <li>LIST_ENUM</li>
+ <li>LIST_ENUM_R</li>
+ <li>LIST_FILTER</li>
+ <li>LIST_FILTER_D</li>
+ <li>LIST_FIRST</li>
+ <li>LIST_FIRST_N</li>
+ <li>LIST_FIRST_N_D</li>
+ <li>LIST_FOLD_LEFT</li>
+ <li>LIST_FOLD_LEFT_2ND*</li>
+ <li>LIST_FOLD_LEFT_2ND_D*</li>
+ <li>LIST_FOLD_LEFT_d</li>
+ <li>LIST_FOLD_LEFT_D*</li>
+ <li>LIST_FOLD_RIGHT</li>
+ <li>LIST_FOLD_RIGHT_2ND*</li>
+ <li>LIST_FOLD_RIGHT_2ND_D*</li>
+ <li>LIST_FOLD_RIGHT_d</li>
+ <li>LIST_FOLD_RIGHT_D*</li>
+ <li>LIST_FOR_EACH</li>
+ <li>LIST_FOR_EACH_I</li>
+ <li>LIST_FOR_EACH_I_R</li>
+ <li>LIST_FOR_EACH_PRODUCT</li>
+ <li>LIST_FOR_EACH_PRODUCT_R</li>
+ <li>LIST_FOR_EACH_R</li>
+ <li>LIST_IS_CONS</li>
+ <li>LIST_IS_NIL</li>
+ <li>LIST_NIL*</li>
+ <li>LIST_REST</li>
+ <li>LIST_REST_N</li>
+ <li>LIST_REST_N_D</li>
+ <li>LIST_REVERSE</li>
+ <li>LIST_REVERSE_D</li>
+ <li>LIST_SIZE</li>
+ <li>LIST_SIZE_D</li>
+ <li>LIST_TO_ARRAY</li>
+ <li>LIST_TO_SEQ</li>
+ <li>LIST_TO_TUPLE</li>
+ <li>LIST_TO_TUPLE_R</li>
+ <li>LIST_TRANSFORM</li>
+ <li>LIST_TRANSFORM_D</li>
+ <li>LOCAL_ITERATE</li>
+ <li>LOCAL_LIMITS</li>
+ <li>LOCAL_MACRO</li>
+ <li>LPAREN</li>
+ <li>LPAREN_IF</li>
+<!-- M -->
+ <li>MAX</li>
+ <li>MAX_D</li>
+ <li>MIN</li>
+ <li>MIN_D</li>
+ <li>MOD</li>
+ <li>MOD_D</li>
+ <li>MUL</li>
+ <li>MUL_D</li>
+<!-- N -->
+ <li>NIL</li>
+ <li>NOR</li>
+ <li>NOT</li>
+ <li>NOT_EQUAL</li>
+ <li>NOT_EQUAL_D*</li>
+<!-- O -->
+ <li>OR</li>
+ <li>OVERLOAD (v)</li>
+<!-- R -->
+ <li>RELATIVE_FINISH</li>
+ <li>RELATIVE_FLAGS</li>
+ <li>RELATIVE_ITERATION</li>
+ <li>RELATIVE_START</li>
+ <li>REPEAT</li>
+ <li>REPEAT_1ST*</li>
+ <li>REPEAT_2ND*</li>
+ <li>REPEAT_3RD*</li>
+ <li>REPEAT_FROM_TO</li>
+ <li>REPEAT_FROM_TO_1ST*</li>
+ <li>REPEAT_FROM_TO_2ND*</li>
+ <li>REPEAT_FROM_TO_3RD*</li>
+ <li>REPEAT_FROM_TO_D</li>
+ <li>REPEAT_FROM_TO_D_z</li>
+ <li>REPEAT_FROM_TO_z</li>
+ <li>REPEAT_z</li>
+ <li>RPAREN</li>
+ <li>RPAREN_IF</li>
+<!-- S -->
+ <li>SEQ_CAT</li>
+ <li>SEQ_CAT_S</li>
+ <li>SEQ_ELEM</li>
+ <li>SEQ_ENUM</li>
+ <li>SEQ_FILTER</li>
+ <li>SEQ_FILTER_S</li>
+ <li>SEQ_FIRST_N</li>
+ <li>SEQ_FOLD_LEFT</li>
+ <li>SEQ_FOLD_LEFT_s</li>
+ <li>SEQ_FOLD_RIGHT</li>
+ <li>SEQ_FOLD_RIGHT_s</li>
+ <li>SEQ_FOR_EACH</li>
+ <li>SEQ_FOR_EACH_I</li>
+ <li>SEQ_FOR_EACH_I_R</li>
+ <li>SEQ_FOR_EACH_PRODUCT</li>
+ <li>SEQ_FOR_EACH_PRODUCT_R</li>
+ <li>SEQ_FOR_EACH_R</li>
+ <li>SEQ_HEAD</li>
+ <li>SEQ_INSERT</li>
+ <li>SEQ_NIL</li>
+ <li>SEQ_POP_BACK</li>
+ <li>SEQ_POP_FRONT</li>
+ <li>SEQ_PUSH_BACK</li>
+ <li>SEQ_PUSH_FRONT</li>
+ <li>SEQ_REMOVE</li>
+ <li>SEQ_REPLACE</li>
+ <li>SEQ_REST_N</li>
+ <li>SEQ_REVERSE</li>
+ <li>SEQ_REVERSE_S</li>
+ <li>SEQ_SIZE</li>
+ <li>SEQ_SUBSEQ</li>
+ <li>SEQ_TAIL</li>
+ <li>SEQ_TO_ARRAY</li>
+ <li>SEQ_TO_LIST</li>
+ <li>SEQ_TO_TUPLE</li>
+ <li>SEQ_TRANSFORM</li>
+ <li>SEQ_TRANSFORM_S</li>
+ <li>SLOT</li>
+ <li>STRINGIZE</li>
+ <li>SUB</li>
+ <li>SUB_D</li>
+<!-- T -->
+ <li>TUPLE_EAT (v)</li>
+ <li>TUPLE_ELEM (v)</li>
+ <li>TUPLE_ENUM (v)</li>
+ <li>TUPLE_REM (v)</li>
+ <li>TUPLE_REM_CTOR (v)</li>
+ <li>TUPLE_REVERSE (v)</li>
+ <li>TUPLE_SIZE (v)</li>
+ <li>TUPLE_TO_ARRAY (v)</li>
+ <li>TUPLE_TO_LIST (v)</li>
+ <li>TUPLE_TO_SEQ (v)</li>
+<!-- U -->
+ <li>UPDATE_COUNTER</li>
+<!-- V -->
+ <li>VALUE</li>
+ <li>VARIADICS</li>
+ <li>VARIADIC_ELEM (v)</li>
+ <li>VARIADIC_SIZE (v)</li>
+ <li>VARIADIC_TO_ARRAY (v)</li>
+ <li>VARIADIC_TO_LIST (v)</li>
+ <li>VARIADIC_TO_SEQ (v)</li>
+ <li>VARIADIC_TO_TUPLE (v)</li>
+<!-- W -->
+ <li>WHILE</li>
+ <li>WHILE_d</li>
+ <li>WSTRINGIZE</li>
+<!-- X -->
+ <li>XOR</li>
+</ul>
+<!--
+© Copyright Housemarque Oy 2002
+© Copyright Paul Mensonides 2002
+Distributed under the Boost Software License, Version 1.0.
+(See accompanying file LICENSE_1_0.txt or copy at
+http://www.boost.org/LICENSE_1_0.txt)
+-->
+ </body>
+</html>
\ No newline at end of file
Added: branches/pplib/v2/libs/preprocessor/doc/ref/add.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/ref/add.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,68 @@
+<html>
+<head>
+ <title>BOOST_PP_ADD</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_ADD</b> macro expands to the sum of its arguments.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_ADD</b>(<i>x</i>, <i>y</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>x</dt>
+ <dd>
+ The first addend of the operation.
+ Valid values range from <i>0</i> to <b>BOOST_PP_LIMIT_MAG</b>.
+ </dd>
+ <dt>y</dt>
+ <dd>
+ The second addend of the operation.
+ Valid values range from <i>0</i> to <b>BOOST_PP_LIMIT_MAG</b>.
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ If the sum of <i>x</i> and <i>y</i> is greater than <b>BOOST_PP_LIMIT_MAG</b>, the result is saturated to <b>BOOST_PP_LIMIT_MAG</b>.
+ </div>
+ <div>
+ Previously, this macro could not be used inside <b>BOOST_PP_WHILE</b>.
+ There is no longer any such restriction.
+ It is more efficient, however, to use <b>BOOST_PP_ADD_D</b> in such a situation.
+ </div>
+ <div>
+ This macro is the most efficient when <i>x</i> is less than or equal to <i>y</i>.
+ However, the efficiency gain is not worth actually comparing the two arguments prior to invocation.
+ In other words, <i>x</i> should be the addend that is <i>most likely</i> to be the largest of the two operands.
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li>BOOST_PP_ADD_D</li>
+ <li>BOOST_PP_LIMIT_MAG</li>
+ </ul>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <boost/preprocessor/arithmetic/add.hpp>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+#include <boost/preprocessor/arithmetic/add.hpp>
+
+BOOST_PP_ADD(4, 3) // expands to 7
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/ref/add_d.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/ref/add_d.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,90 @@
+<html>
+<head>
+ <title>BOOST_PP_ADD_D</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_ADD_D</b> macro expands to the sum of its second and third arguments.
+ It reenters <b>BOOST_PP_WHILE</b> with maximum efficiency.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_ADD_D</b>(<i>d</i>, <i>x</i>, <i>y</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>d</dt>
+ <dd>
+ The next available <b>BOOST_PP_WHILE</b> iteration.
+ </dd>
+ <dt>x</dt>
+ <dd>
+ The first addend of the operation.
+ Valid values range from <i>0</i> to <b>BOOST_PP_LIMIT_MAG</b>.
+ </dd>
+ <dt>y</dt>
+ <dd>
+ The second addend of the operation.
+ Valid values range from <i>0</i> to <b>BOOST_PP_LIMIT_MAG</b>.
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ If the sum of <i>x</i> and <i>y</i> is greater than <b>BOOST_PP_LIMIT_MAG</b>, the result is saturated to <b>BOOST_PP_LIMIT_MAG</b>.
+ </div>
+ <div>
+ This macro is the most efficient when <i>x</i> is less than or equal to <i>y</i>.
+ However, the efficiency gain is not worth actually comparing the two arguments prior to invocation.
+ In other words, <i>x</i> should be the addend that is <i>most likely</i> to be the largest of the two operands.
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li>BOOST_PP_ADD</li>
+ <li>BOOST_PP_LIMIT_MAG</li>
+ </ul>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <boost/preprocessor/arithmetic/add.hpp>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+#include <boost/preprocessor/arithmetic/add.hpp>
+#include <boost/preprocessor/arithmetic/dec.hpp>
+#include <boost/preprocessor/control/while.hpp>
+#include <boost/preprocessor/tuple/elem.hpp>
+
+#define PRED(d, data) BOOST_PP_TUPLE_ELEM(2, 0, data)
+
+#define OP(d, data) \
+ ( \
+ BOOST_PP_DEC( \
+ BOOST_PP_TUPLE_ELEM(2, 0, data) \
+ ), \
+ BOOST_PP_ADD_D( \
+ d, \
+ BOOST_PP_TUPLE_ELEM(2, 1, data), \
+ 2 \
+ ) \
+ ) \
+ /**/
+
+// increment 'x' by 2 'n' times
+#define STRIDE(x, n) BOOST_PP_TUPLE_ELEM(2, 1, BOOST_PP_WHILE(PRED, OP, (n, x)))
+
+STRIDE(10, 2) // expands to 14
+STRIDE(51, 6) // expands to 63
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/ref/and.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/ref/and.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,64 @@
+<html>
+<head>
+ <title>BOOST_PP_AND</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_AND</b> macro expands to the logical <i>AND</i> of its operands.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_AND</b>(<i>p</i>, <i>q</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>p</dt>
+ <dd>
+ The left operand of the operation.
+ Valid values range from <i>0</i> to <b>BOOST_PP_LIMIT_MAG</b>.
+ </dd>
+ <dt>q</dt>
+ <dd>
+ The right operand of the operation.
+ Valid values range from <i>0</i> to <b>BOOST_PP_LIMIT_MAG</b>.
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ If both <i>p</i> and <i>q</i> are non-zero, this macro expands to <i>1</i>.
+ Otherwise, it expands to <i>0</i>.
+ </div>
+ <div>
+ This macro performs a boolean conversion on each operand before performing the logical <i>AND</i> operation.
+ If that conversion is not necessary, use <b>BOOST_PP_BITAND</b> instead.
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li>BOOST_PP_BITAND</li>
+ <li>BOOST_PP_LIMIT_MAG</li>
+ </ul>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <boost/preprocessor/logical/and.hpp>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+#include <boost/preprocessor/logical/and.hpp>
+
+BOOST_PP_AND(4, 3) // expands to 1
+BOOST_PP_AND(5, 0) // expands to 0
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/ref/apply.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/ref/apply.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,64 @@
+<html>
+<head>
+ <title>BOOST_PP_APPLY</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_APPLY</b> macro abstracts the difference between an argument and nothing.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_APPLY</b>(<i>x</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>x</dt>
+ <dd>
+ The abstracted argument.
+ This argument must be either <b>BOOST_PP_NIL</b> or a <i>tuple</i> with one element--such as <i>(arg)</i> or <i>((a, b))</i>.
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ If <i>x</i> is <b>BOOST_PP_NIL</b>, this macro expands to nothing.
+ If <i>x</i> is a one element <i>tuple</i>, it expands to the contents of that <i>tuple</i>.
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li>BOOST_PP_NIL</li>
+ </ul>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <boost/preprocessor/facilities/apply.hpp>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+#include <boost/preprocessor/facilities/apply.hpp>
+#include <boost/preprocessor/tuple/elem.hpp>
+
+#define CV(i) \
+ BOOST_PP_APPLY( \
+ BOOST_PP_TUPLE_ELEM( \
+ 4, i, \
+ (BOOST_PP_NIL, (const), (volatile), (const volatile)) \
+ ) \
+ ) \
+ /**/
+
+CV(0) // expands to nothing
+CV(1) // expands to const
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/ref/array_data.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/ref/array_data.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,49 @@
+<html>
+<head>
+ <title>BOOST_PP_ARRAY_DATA</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_ARRAY_DATA</b> macro extracts the <i>tuple</i> data from an <i>array</i>.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_ARRAY_DATA</b>(<i>array</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>array</dt>
+ <dd>
+ An <i>array</i> to be converted to a <i>tuple</i>.
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ This macro expands to the data portion of an <i>array</i> which is a <i>tuple</i>.
+ </div>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <boost/preprocessor/array/data.hpp>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+#include <boost/preprocessor/array/data.hpp>
+
+#define ARRAY (3, (x, y, z))
+
+BOOST_PP_ARRAY_DATA(ARRAY) // expands to (x, y, z)
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/ref/array_elem.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/ref/array_elem.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,51 @@
+<html>
+<head>
+ <title>BOOST_PP_ARRAY_ELEM</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_ARRAY_ELEM</b> macro extracts an element from a <i>array</i>.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_ARRAY_ELEM</b>(<i>i</i>, <i>array</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>i</dt>
+ <dd>
+ The zero-based index into the <i>array</i> of the element to be extracted.
+ </dd>
+ <dt>array</dt>
+ <dd>
+ The <i>array</i> from which an element is to be extracted.
+ This <i>array</i> must contain at least <i>i</i> + <i>1</i> elements.
+ </dd>
+ </dl>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <boost/preprocessor/array/elem.hpp>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+#include <boost/preprocessor/array/elem.hpp>
+
+#define ARRAY (4, (a, b, c, d))
+
+BOOST_PP_ARRAY_ELEM(0, ARRAY) // expands to a
+BOOST_PP_ARRAY_ELEM(3, ARRAY) // expands to d
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/ref/array_enum.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/ref/array_enum.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,37 @@
+<html>
+<head>
+ <title>BOOST_PP_ARRAY_ENUM</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;"> The <b>BOOST_PP_ARRAY_ENUM</b> macro converts an <i>array</i> to its comma-separated elements. The comma-separated elements are in the form of <i>variadic data</i>.<br>
+ </div>
+<h4> Usage </h4>
+<div class="code"> <b>BOOST_PP_ARRAY_ENUM</b>(<i>array</i>) </div>
+<h4> Arguments </h4>
+<dl>
+ <dt>array</dt>
+ <dd> The <i>array</i> whose elements are to be converted. </dd>
+</dl>
+<h4> Remarks </h4>
+<div> This macro expands to a comma-separated list of the elements in <i>array</i>.
+For example, <b>BOOST_PP_ARRAY_ENUM</b>((3,(<i>x,</i><i>y,</i><i>z</i>)))
+expands to...
+<div> <i>x</i>, <i>y</i>, <i>z</i> </div>
+</div>
+<h4> Requirements </h4>
+<div> <b>Header:</b> <boost/preprocessor/array/enum.hpp>
+</div>
+<h4> Sample Code </h4>
+<div>
+<pre>#include <boost/preprocessor/array/enum.hpp><br><br>#define ARRAY (5,(B,O,O,S,T))<br><br>BOOST_PP_ARRAY_ENUM(ARRAY) // expands to B, O, O, S, T<br></pre>
+</div>
+<hr size="1">
+<div style="margin-left: 0px;"> <i></i><i>© Copyright Edward Diener 2011</i> </div>
+<div style="margin-left: 0px;">
+<p><small>Distributed under the Boost Software License, Version 1.0.
+(See accompanying file LICENSE_1_0.txt
+or copy at www.boost.org/LICENSE_1_0.txt)</small></p>
+</div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/ref/array_insert.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/ref/array_insert.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,71 @@
+<html>
+<head>
+ <title>BOOST_PP_ARRAY_INSERT</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_ARRAY_INSERT</b> macro inserts an element into an <i>array</i>.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_ARRAY_INSERT</b>(<i>array</i>, <i>i</i>, <i>elem</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>array</dt>
+ <dd>
+ The <i>array</i> into which an element is to be inserted.
+ </dd>
+ <dt>i</dt>
+ <dd>
+ The zero-based position in <i>array</i> where an element is to be inserted.
+ Valid values range from <i>0</i> to <b>BOOST_PP_ARRAY_SIZE</b>(<i>array</i>).
+ </dd>
+ <dt>elem</dt>
+ <dd>
+ The element to insert.
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ This macro inserts <i>elem</i> before the element at index <i>i</i>.
+ </div>
+ <div>
+ If the operation attempts to create an <i>array</i> that is larger than <b>BOOST_PP_LIMIT_TUPLE</b>,
+ the result is undefined.
+ </div>
+ <div>
+ This macro uses <b>BOOST_PP_WHILE</b> interally.
+ Therefore, to use the <i>d</i> parameter passed from other macros that use <b>BOOST_PP_WHILE</b>,
+ see <b>BOOST_PP_ARRAY_INSERT_D</b>.
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li>BOOST_PP_ARRAY_INSERT_D</li>
+ </ul>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <boost/preprocessor/array/insert.hpp>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+#include <boost/preprocessor/array/insert.hpp>
+
+#define ARRAY (3, (a, b, d))
+
+BOOST_PP_ARRAY_INSERT(ARRAY, 2, c) // expands to (4, (a, b, c, d))
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/ref/array_insert_d.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/ref/array_insert_d.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,63 @@
+<html>
+<head>
+ <title>BOOST_PP_ARRAY_INSERT_D</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_ARRAY_INSERT_D</b> macro inserts an element into an <i>array</i>.
+ It reenters <b>BOOST_PP_WHILE</b> with maximum efficiency.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_ARRAY_INSERT_D</b>(<i>d</i>, <i>array</i>, <i>i</i>, <i>elem</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>d</dt>
+ <dd>
+ The next available <b>BOOST_PP_WHILE</b> iteration.
+ </dd>
+ <dt>array</dt>
+ <dd>
+ The <i>array</i> into which an element is to be inserted.
+ </dd>
+ <dt>i</dt>
+ <dd>
+ The zero-based position in <i>array</i> where an element is to be inserted.
+ Valid values range from <i>0</i> to <b>BOOST_PP_ARRAY_SIZE</b>(<i>array</i>).
+ </dd>
+ <dt>elem</dt>
+ <dd>
+ The element to insert.
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ This macro inserts <i>elem</i> before the element at index <i>i</i>.
+ </div>
+ <div>
+ If the operation attempts to create an <i>array</i> that is larger than <b>BOOST_PP_LIMIT_TUPLE</b>,
+ the result is undefined.
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li>BOOST_PP_ARRAY_INSERT</li>
+ </ul>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <boost/preprocessor/array/insert.hpp>
+ </div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/ref/array_pop_back.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/ref/array_pop_back.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,59 @@
+<html>
+<head>
+ <title>BOOST_PP_ARRAY_POP_BACK</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_ARRAY_POP_BACK</b> macro pops an element from the end of an <i>array</i>.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_ARRAY_POP_BACK</b>(<i>array</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>array</dt>
+ <dd>
+ The <i>array</i> to pop an element from.
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ This macro returns <i>array</i> after removing the last element.
+ If <i>array</i> has no elements, the result of applying this macro is undefined.
+ </div>
+ <div>
+ This macro uses <b>BOOST_PP_REPEAT</b> internally.
+ Therefore, to use the <i>z</i> parameter passed from other macros that use
+ <b>BOOST_PP_REPEAT</b>, see <b>BOOST_PP_ARRAY_POP_BACK_Z</b>
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li>BOOST_PP_ARRAY_POP_BACK_Z</li>
+ </ul>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <boost/preprocessor/array/pop_back.hpp>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+#include <boost/preprocessor/array/pop_back.hpp>
+
+#define ARRAY (3, (a, b, c))
+
+BOOST_PP_ARRAY_POP_BACK(ARRAY) // expands to (2, (a, b))
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/ref/array_pop_back_z.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/ref/array_pop_back_z.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,51 @@
+<html>
+<head>
+ <title>BOOST_PP_ARRAY_POP_BACK_Z</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_ARRAY_POP_BACK_Z</b> macro pops an element from the end of an <i>array</i>.
+ It reenters <b>BOOST_PP_REPEAT</b> with maximum efficiency.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_ARRAY_POP_BACK_Z</b>(<i>z</i>, <i>array</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>z</dt>
+ <dd>
+ The next available <b>BOOST_PP_REPEAT</b> dimension.
+ </dd>
+ <dt>array</dt>
+ <dd>
+ The <i>array</i> to pop an element from.
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ This macro returns <i>array</i> after removing the last element.
+ If <i>array</i> has no elements, the result of applying this macro is undefined.
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li>BOOST_PP_ARRAY_POP_BACK</li>
+ </ul>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <boost/preprocessor/array/pop_back.hpp>
+ </div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/ref/array_pop_front.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/ref/array_pop_front.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,59 @@
+<html>
+<head>
+ <title>BOOST_PP_ARRAY_POP_FRONT</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_ARRAY_POP_FRONT</b> macro pops an element from the end of an <i>array</i>.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_ARRAY_POP_FRONT</b>(<i>array</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>array</dt>
+ <dd>
+ The <i>array</i> to pop an element from.
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ This macro returns <i>array</i> after removing the first element.
+ If <i>array</i> has no elements, the result of applying this macro is undefined.
+ </div>
+ <div>
+ This macro uses <b>BOOST_PP_REPEAT</b> internally.
+ Therefore, to use the <i>z</i> parameter passed from other macros that use
+ <b>BOOST_PP_REPEAT</b>, see <b>BOOST_PP_ARRAY_POP_FRONT_Z</b>
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li>BOOST_PP_ARRAY_POP_FRONT_Z</li>
+ </ul>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <boost/preprocessor/array/pop_front.hpp>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+#include <boost/preprocessor/array/pop_front.hpp>
+
+#define ARRAY (3, (a, b, c))
+
+BOOST_PP_ARRAY_POP_FRONT(ARRAY) // expands to (2, (b, c))
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/ref/array_pop_front_z.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/ref/array_pop_front_z.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,51 @@
+<html>
+<head>
+ <title>BOOST_PP_ARRAY_POP_FRONT_Z</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_ARRAY_POP_FRONT_Z</b> macro pops an element from the beginning of an <i>array</i>.
+ It reenters <b>BOOST_PP_REPEAT</b> with maximum efficiency.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_ARRAY_POP_FRONT_Z</b>(<i>z</i>, <i>array</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>z</dt>
+ <dd>
+ The next available <b>BOOST_PP_REPEAT</b> dimension.
+ </dd>
+ <dt>array</dt>
+ <dd>
+ The <i>array</i> to pop an element from.
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ This macro returns <i>array</i> after removing the first element.
+ If <i>array</i> has no elements, the result of applying this macro is undefined.
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li>BOOST_PP_ARRAY_POP_FRONT</li>
+ </ul>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <boost/preprocessor/array/pop_front.hpp>
+ </div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/ref/array_push_back.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/ref/array_push_back.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,49 @@
+<html>
+<head>
+ <title>BOOST_PP_ARRAY_PUSH_BACK</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_ARRAY_PUSH_BACK</b> macro appends an element to the end of an <i>array</i>.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_ARRAY_PUSH_BACK</b>(<i>array</i>, <i>elem</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>array</dt>
+ <dd>
+ The <i>array</i> to append an element to.
+ </dd>
+ <dt>elem</dt>
+ <dd>
+ The element to append.
+ </dd>
+ </dl>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <boost/preprocessor/array/push_back.hpp>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+#include <boost/preprocessor/array/push_back.hpp>
+
+#define ARRAY (3, (a, b, c))
+
+BOOST_PP_ARRAY_PUSH_BACK(ARRAY, d) // expands to (4, (a, b, c, d))
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/ref/array_push_front.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/ref/array_push_front.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,49 @@
+<html>
+<head>
+ <title>BOOST_PP_ARRAY_PUSH_FRONT</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_ARRAY_PUSH_FRONT</b> macro appends an element to the beginning of an <i>array</i>.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_ARRAY_PUSH_FRONT</b>(<i>array</i>, <i>elem</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>array</dt>
+ <dd>
+ The <i>array</i> to append an element to.
+ </dd>
+ <dt>elem</dt>
+ <dd>
+ The element to append.
+ </dd>
+ </dl>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <boost/preprocessor/array/push_front.hpp>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+#include <boost/preprocessor/array/push_front.hpp>
+
+#define ARRAY (3, (b, c, d))
+
+BOOST_PP_ARRAY_PUSH_FRONT(ARRAY, a) // expands to (4, (a, b, c, d))
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/ref/array_remove.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/ref/array_remove.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,60 @@
+<html>
+<head>
+ <title>BOOST_PP_ARRAY_REMOVE</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_ARRAY_REMOVE</b> macro removes an element from an <i>array</i>.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_ARRAY_REMOVE</b>(<i>array</i>, <i>i</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>array</dt>
+ <dd>
+ The <i>array</i> from which an element is to be removed.
+ </dd>
+ <dt>i</dt>
+ <dd>
+ The zero-based position in <i>array</i> of the element to be removed.
+ Valid values range from <i>0</i> to <b>BOOST_PP_ARRAY_SIZE</b>(<i>array</i>) - <i>1</i>.
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ This macro uses <b>BOOST_PP_WHILE</b> interally.
+ Therefore, to use the <i>d</i> parameter passed from other macros that use <b>BOOST_PP_WHILE</b>,
+ see <b>BOOST_PP_ARRAY_REMOVE_D</b>.
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li>BOOST_PP_ARRAY_REMOVE_D</li>
+ </ul>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <boost/preprocessor/array/remove.hpp>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+#include <boost/preprocessor/array/remove.hpp>
+
+#define ARRAY (3, (a, b, d))
+
+BOOST_PP_ARRAY_REMOVE(ARRAY, 2) // expands to (2, (a, b))
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/ref/array_remove_d.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/ref/array_remove_d.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,51 @@
+<html>
+<head>
+ <title>BOOST_PP_ARRAY_REMOVE_D</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_ARRAY_REMOVE_D</b> macro removes an element from an <i>array</i>.
+ It reenters <b>BOOST_PP_WHILE</b> with maximum efficiency.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_ARRAY_REMOVE_D</b>(<i>d</i>, <i>array</i>, <i>i</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>d</dt>
+ <dd>
+ The next available <b>BOOST_PP_WHILE</b> iteration.
+ </dd>
+ <dt>array</dt>
+ <dd>
+ The <i>array</i> from which an element is to be removed.
+ </dd>
+ <dt>i</dt>
+ <dd>
+ The zero-based position in <i>array</i> of the element to be removed.
+ Valid values range from <i>0</i> to <b>BOOST_PP_ARRAY_SIZE</b>(<i>array</i>) - <i>1</i>.
+ </dd>
+ </dl>
+ <h4>See Also</h4>
+ <ul>
+ <li>BOOST_PP_ARRAY_REMOVE</li>
+ </ul>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <boost/preprocessor/array/remove.hpp>
+ </div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/ref/array_replace.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/ref/array_replace.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,64 @@
+<html>
+<head>
+ <title>BOOST_PP_ARRAY_REPLACE</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_ARRAY_REPLACE</b> macro replaces an element in an <i>array</i>.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_ARRAY_REPLACE</b>(<i>array</i>, <i>i</i>, <i>elem</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>array</dt>
+ <dd>
+ An <i>array</i> to replace an element in.
+ </dd>
+ <dt>i</dt>
+ <dd>
+ The zero-based position in <i>array</i> of the element to be replaced.
+ Valid values range from <i>0</i> to <b>BOOST_PP_ARRAY_SIZE</b>(<i>array</i>) - <i>1</i>.
+ </dd>
+ <dt>elem</dt>
+ <dd>
+ The replacement element.
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ This macro uses <b>BOOST_PP_WHILE</b> interally.
+ Therefore, to use the <i>d</i> parameter passed from other macros that use <b>BOOST_PP_WHILE</b>,
+ see <b>BOOST_PP_ARRAY_REPLACE_D</b>.
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li>BOOST_PP_ARRAY_REPLACE_D</li>
+ </ul>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <boost/preprocessor/array/replace.hpp>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+#include <boost/preprocessor/array/replace.hpp>
+
+#define ARRAY (3, (a, x, c))
+
+BOOST_PP_ARRAY_REPLACE(ARRAY, 1, b) // expands to (3, (a, b, c))
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/ref/array_replace_d.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/ref/array_replace_d.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,55 @@
+<html>
+<head>
+ <title>BOOST_PP_ARRAY_REPLACE_D</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_ARRAY_REPLACE_D</b> macro replaces an element in an <i>array</i>.
+ It reenters <b>BOOST_PP_WHILE</b> with maximum efficiency.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_ARRAY_REPLACE_D</b>(<i>d</i>, <i>array</i>, <i>i</i>, <i>elem</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>d</dt>
+ <dd>
+ The next available <b>BOOST_PP_WHILE</b> iteration.
+ </dd>
+ <dt>array</dt>
+ <dd>
+ An <i>array</i> to replace an element in.
+ </dd>
+ <dt>i</dt>
+ <dd>
+ The zero-based position in <i>array</i> of the element to be replaced.
+ Valid values range from <i>0</i> to <b>BOOST_PP_ARRAY_SIZE</b>(<i>array</i>) - <i>1</i>.
+ </dd>
+ <dt>elem</dt>
+ <dd>
+ The replacement element.
+ </dd>
+ </dl>
+ <h4>See Also</h4>
+ <ul>
+ <li>BOOST_PP_ARRAY_REPLACE</li>
+ </ul>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <boost/preprocessor/array/replace.hpp>
+ </div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/ref/array_reverse.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/ref/array_reverse.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,45 @@
+<html>
+<head>
+ <title>BOOST_PP_ARRAY_REVERSE</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_ARRAY_REVERSE</b> macro reverses the elements in an <i>array</i>.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_ARRAY_REVERSE</b>(<i>array</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>array</dt>
+ <dd>
+ The <i>array</i> whose elements are to be reversed.
+ </dd>
+ </dl>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <boost/preprocessor/array/reverse.hpp>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+#include <boost/preprocessor/array/reverse.hpp>
+
+#define ARRAY (3, (a, b, c))
+
+BOOST_PP_ARRAY_REVERSE(ARRAY) // expands to (3, (c, b, a))
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/ref/array_size.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/ref/array_size.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,45 @@
+<html>
+<head>
+ <title>BOOST_PP_ARRAY_SIZE</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_ARRAY_SIZE</b> macro expands to the size of the <i>array</i> passed to it.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_ARRAY_SIZE</b>(<i>array</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>array</dt>
+ <dd>
+ An <i>array</i> whose size is to be extracted.
+ </dd>
+ </dl>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <boost/preprocessor/array/size.hpp>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+#include <boost/preprocessor/array/size.hpp>
+
+#define ARRAY (3, (x, y, z))
+
+BOOST_PP_ARRAY_SIZE(ARRAY) // expands to 3
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/ref/array_to_list.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/ref/array_to_list.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,33 @@
+<html>
+<head>
+ <title>BOOST_PP_ARRAY_TO_LIST</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+<div style="margin-left: 0px;"> The <b>BOOST_PP_ARRAY_TO_LIST</b>
+macro converts an <i>array</i> to a <i>list</i>. </div>
+<h4>Usage</h4>
+<div class="code"> <b>BOOST_PP_ARRAY_TO_LIST</b>(<i>array</i>)
+</div>
+<h4>Arguments</h4>
+<dl><dt>array</dt>
+ <dd> The <i>array</i> to be converted. </dd>
+</dl>
+ <ul>
+</ul>
+<h4>Requirements</h4>
+<div> <b>Header:</b> <boost/preprocessor/array/to_list.hpp>
+</div>
+<h4>Sample Code</h4>
+<div>
+<pre>#include <boost/preprocessor/array/to_list.hpp><br><br>BOOST_PP_ARRAY_TO_LIST((3, (x, y, z)))<br> // expands to (x, (y, (z, BOOST_PP_NIL)))<br></pre>
+</div>
+<hr size="1">
+<div style="margin-left: 0px;"> <i></i><i>© Copyright Edward Diener 2011</i> </div>
+<div style="margin-left: 0px;">
+<p><small>Distributed under the Boost Software License, Version 1.0.
+(See accompanying file LICENSE_1_0.txt
+or copy at www.boost.org/LICENSE_1_0.txt)</small></p>
+</div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/ref/array_to_seq.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/ref/array_to_seq.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,31 @@
+<html>
+<head>
+ <title>BOOST_PP_ARRAY_TO_SEQ</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+<div style="margin-left: 0px;"> The <b>BOOST_PP_ARRAY_TO_SEQ</b> macro
+converts an <i>array</i> to a <i>seq</i>. </div>
+<h4> Usage </h4>
+<div class="code"> <b>BOOST_PP_ARRAY_TO_SEQ</b>(<i>array</i>)
+</div>
+<h4> Arguments </h4>
+<dl><dt>array</dt>
+ <dd> The <i>array</i> to be converted. </dd>
+</dl>
+<h4> Requirements </h4>
+<div> <b>Header:</b> <boost/preprocessor/array/to_seq.hpp>
+</div>
+<h4> Sample Code </h4>
+<div>
+<pre>#include <boost/preprocessor/array/to_seq.hpp><br><br>BOOST_PP_ARRAY_TO_SEQ((3, (a, b, c))) // expands to (a)(b)(c)<br></pre>
+</div>
+<hr size="1">
+<div style="margin-left: 0px;"> <i></i><i>© Copyright Edward Diener 2011</i> </div>
+<div style="margin-left: 0px;">
+<p><small>Distributed under the Boost Software License, Version 1.0.
+(See accompanying file LICENSE_1_0.txt
+or copy at www.boost.org/LICENSE_1_0.txt)</small></p>
+</div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/ref/array_to_tuple.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/ref/array_to_tuple.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,31 @@
+<html>
+<head>
+ <title>BOOST_PP_ARRAY_TO_TUPLE</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+<div style="margin-left: 0px;"> The <b>BOOST_PP_ARRAY_TO_TUPLE</b> macro
+converts an <i>array</i> to an <i>tuple</i>. </div>
+<h4> Usage </h4>
+<div class="code"> <b>BOOST_PP_ARRAY_TO_TUPLE</b>(<i>array</i>) </div>
+<h4> Arguments </h4>
+<dl>
+ <dt>array</dt>
+ <dd> The <i>array</i> to be converted. </dd>
+</dl>
+<h4> Requirements </h4>
+<div> <b>Header:</b> <boost/preprocessor/array/to_tuple.hpp>
+</div>
+<h4> Sample Code </h4>
+<div>
+<pre>#include <boost/preprocessor/array/to_tuple.hpp><br><br>#define ARRAY (3,(a, b, c))<br><br>BOOST_PP_ARRAY_TO_TUPLE(ARRAY) // expands to (a, b, c)<br></pre>
+</div>
+<hr size="1">
+<div style="margin-left: 0px;"> <i></i><i>© Copyright Edward Diener 2011</i> </div>
+<div style="margin-left: 0px;">
+<p><small>Distributed under the Boost Software License, Version 1.0.
+(See accompanying file LICENSE_1_0.txt
+or copy at www.boost.org/LICENSE_1_0.txt)</small></p>
+</div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/ref/assert.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/ref/assert.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,114 @@
+<html>
+<head>
+ <title>BOOST_PP_ASSERT</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_ASSERT</b> macro conditionally causes a preprocessing error.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_ASSERT</b>(<i>cond</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>cond</dt>
+ <dd>
+ A condition that determines whether an assertion occurs.
+ Valid values range from <i>0</i> to <b>BOOST_PP_LIMIT_MAG</b>.
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ If <i>cond</i> expands to <i>0</i>, this macro causes a preprocessing error.
+ Otherwise, it expands to nothing.
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li>BOOST_PP_ASSERT_MSG</li>
+ <li>BOOST_PP_LIMIT_MAG</li>
+ </ul>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <boost/preprocessor/debug/assert.hpp>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+#include <boost/preprocessor/cat.hpp>
+#include <boost/preprocessor/debug/assert.hpp>
+#include <boost/preprocessor/logical/bitnor.hpp>
+#include <boost/preprocessor/logical/compl.hpp>
+
+// The is BOOST_PP_IS_NULLARY macro is not part of
+// the public interface of the library because it
+// doesn't work on Borland preprocessors. It is
+// only used here to illustrate assertions. In
+// effect, it detects whether an argument is empty
+// parenthesis or some text.
+
+#include <boost/preprocessor/detail/is_nullary.hpp>
+
+#define IS_EDISON_DESIGN_GROUP() \
+ BOOST_PP_COMPL( \
+ BOOST_PP_IS_NULLARY( \
+ BOOST_PP_CAT(IS_EDG_CHECK, __EDG_VERSION) \
+ ) \
+ ) \
+ /**/
+#define IS_EDG_CHECK__EDG_VERSION ()
+
+#define IS_METROWERKS() \
+ BOOST_PP_COMPL( \
+ BOOST_PP_IS_NULLARY( \
+ BOOST_PP_CAT(IS_MWERKS_CHECK, __MWERKS__) \
+ ) \
+ ) \
+ /**/
+#define IS_MWERKS_CHECK__MWERKS__ ()
+
+#define IS_MICROSOFT() \
+ BOOST_PP_BITNOR( \
+ IS_MICROSOFT_ROOT(), \
+ IS_EDISON_DESIGN_GROUP() \
+ ) \
+ /**/
+#define IS_MICROSOFT_ROOT() \
+ BOOST_PP_IS_NULLARY( \
+ BOOST_PP_CAT(IS_MSVC_CHECK, _MSC_VER) \
+ ) \
+ /**/
+#define IS_MSVC_CHECK_MS_VER ()
+
+// this macro doesn't work on EDG...
+// (this is just an example)
+
+#define MACRO(n) \
+ BOOST_PP_CAT( \
+ MACRO_, \
+ IS_EDISON_DESIGN_GROUP() \
+ )(n) \
+ /**/
+
+#define MACRO_1(n) \
+ BOOST_PP_ASSERT(0) \
+ "Edison Design Group is not supported" \
+ /**/
+
+#define MACRO_0(n) normal mode: n
+
+MACRO(10)
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/ref/assert_msg.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/ref/assert_msg.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,66 @@
+<html>
+<head>
+ <title>BOOST_PP_ASSERT_MSG</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_ASSERT_MSG</b> macro conditionally inserts debugging text.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_ASSERT_MSG</b>(<i>cond</i>, <i>msg</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>cond</dt>
+ <dd>
+ A condition that determines whether an assertion occurs.
+ Valid values range from <i>0</i> to <b>BOOST_PP_LIMIT_MAG</b>.
+ </dd>
+ <dt>msg</dt>
+ <dd>
+ A message to display if <i>cond</i> evaluates to <i>0</i>.
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ If <i>cond</i> expands to <i>0</i>, this macro expands to <i>msg</i>.
+ Otherwise, it expands to nothing.
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li>BOOST_PP_ASSERT_MSG</li>
+ <li>BOOST_PP_LIMIT_MAG</li>
+ </ul>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <boost/preprocessor/debug/assert.hpp>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+#include <boost/preprocessor/comparison/equal.hpp>
+#include <boost/preprocessor/debug/assert.hpp>
+
+// lines are supposed to be counted
+// in translation phase 1
+
+#line 9
+BOOST_PP_ASSERT_MSG( \
+ BOOST_PP_EQUAL(__LINE__, 9), \
+ "incorrect line numbering detected" \
+)
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/ref/assign_slot.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/ref/assign_slot.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,61 @@
+<html>
+<head>
+ <title>BOOST_PP_ASSIGN_SLOT</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_ASSIGN_SLOT</b> macro fully evaluates a numeric macro or expression.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b>BOOST_PP_ASSIGN_SLOT</b>(<i>i</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>i</dt>
+ <dd>
+ The <i>slot</i> index that is to be assigned.
+ This value must be in the range of <i>1</i> to <b>BOOST_PP_LIMIT_SLOT_COUNT</b>.
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ Prior to use, the <i>named external argument</i> <b>BOOST_PP_VALUE</b> must be defined.
+ Also, it must expand to a numeric value that is in the range of <i>0</i> to <i>2</i>^<i>32</i> - <i>1</i>.
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li>BOOST_PP_LIMIT_SLOT_COUNT</li>
+ <li>BOOST_PP_VALUE</li>
+ </ul>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <boost/preprocessor/slot/slot.hpp>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+#include <boost/preprocessor/slot/slot.hpp>
+
+#define X() 4
+
+#define BOOST_PP_VALUE 1 + 2 + 3 + X()
+#include BOOST_PP_ASSIGN_SLOT(1)
+
+#undef X
+
+BOOST_PP_SLOT(1) // expands to 10
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/ref/bitand.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/ref/bitand.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,65 @@
+<html>
+<head>
+ <title>BOOST_PP_BITAND</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_BITAND</b> macro expands to the bitwise <i>AND</i> of its operands.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_BITAND</b>(<i>x</i>, <i>y</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>x</dt>
+ <dd>
+ The left operand of the operation.
+ This value must expand to <i>0</i> or <i>1</i>.
+ </dd>
+ <dt>y</dt>
+ <dd>
+ The right operand of the operation.
+ This value must expand to <i>0</i> or <i>1</i>.
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ If both <i>x</i> and <i>y</i> are <i>1</i>, this macro expands to <i>1</i>.
+ Otherwise, it expands to <i>0</i>.
+ </div>
+ <div>
+ This macro <i>does not</i> perform a boolean conversion on either operand before performing the bitwise <i>AND</i> operation.
+ If that conversion is necessary, use <b>BOOST_PP_AND</b> instead.
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li>BOOST_PP_AND</li>
+ </ul>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <boost/preprocessor/logical/bitand.hpp>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+#include <boost/preprocessor/logical/bitand.hpp>
+
+BOOST_PP_BITAND(0, 0) // expands to 0
+BOOST_PP_BITAND(0, 1) // expands to 0
+BOOST_PP_BITAND(1, 0) // expands to 0
+BOOST_PP_BITAND(1, 1) // expands to 1
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/ref/bitnor.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/ref/bitnor.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,65 @@
+<html>
+<head>
+ <title>BOOST_PP_BITNOR</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_BITNOR</b> macro expands to the bitwise <i>NOR</i> of its operands.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_BITNOR</b>(<i>x</i>, <i>y</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>x</dt>
+ <dd>
+ The left operand of the operation.
+ This value must expand to <i>0</i> or <i>1</i>.
+ </dd>
+ <dt>y</dt>
+ <dd>
+ The right operand of the operation.
+ This value must expand to <i>0</i> or <i>1</i>.
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ If neither <i>x</i> nor <i>y</i> is <i>1</i>, this macro expands to <i>1</i>.
+ Otherwise, it expands to <i>0</i>.
+ </div>
+ <div>
+ This macro <i>does not</i> perform a boolean conversion on either operand before performing the bitwise <i>NOR</i> operation.
+ If that conversion is necessary, use <b>BOOST_PP_NOR</b> instead.
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li>BOOST_PP_NOR</li>
+ </ul>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <boost/preprocessor/logical/bitnor.hpp>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+#include <boost/preprocessor/logical/bitnor.hpp>
+
+BOOST_PP_BITNOR(0, 0) // expands to 1
+BOOST_PP_BITNOR(0, 1) // expands to 0
+BOOST_PP_BITNOR(1, 0) // expands to 0
+BOOST_PP_BITNOR(1, 1) // expands to 0
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/ref/bitor.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/ref/bitor.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,65 @@
+<html>
+<head>
+ <title>BOOST_PP_BITOR</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_BITOR</b> macro expands to the bitwise <i>OR</i> of its operands.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_BITOR</b>(<i>x</i>, <i>y</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>x</dt>
+ <dd>
+ The left operand of the operation.
+ This value must expand to <i>0</i> or <i>1</i>.
+ </dd>
+ <dt>y</dt>
+ <dd>
+ The right operand of the operation.
+ This value must expand to <i>0</i> or <i>1</i>.
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ If either <i>x</i> or <i>y</i> is <i>1</i>, this macro expands to <i>1</i>.
+ Otherwise, it expands to <i>0</i>.
+ </div>
+ <div>
+ This macro <i>does not</i> perform a boolean conversion on either operand before performing the bitwise <i>OR</i> operation.
+ If that conversion is necessary, use <b>BOOST_PP_OR</b> instead.
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li>BOOST_PP_OR</li>
+ </ul>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <boost/preprocessor/logical/bitor.hpp>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+#include <boost/preprocessor/logical/bitor.hpp>
+
+BOOST_PP_BITOR(0, 0) // expands to 0
+BOOST_PP_BITOR(0, 1) // expands to 1
+BOOST_PP_BITOR(1, 0) // expands to 1
+BOOST_PP_BITOR(1, 1) // expands to 1
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/ref/bitxor.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/ref/bitxor.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,66 @@
+<html>
+<head>
+ <title>BOOST_PP_BITXOR</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_BITXOR</b> macro expands to the bitwise <i>XOR</i> of its operands.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_BITXOR</b>(<i>x</i>, <i>y</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>x</dt>
+ <dd>
+ The left operand of the operation.
+ This value must expand to <i>0</i> or <i>1</i>.
+ </dd>
+ <dt>y</dt>
+ <dd>
+ The right operand of the operation.
+ This value must expand to <i>0</i> or <i>1</i>.
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ If either <i>x</i> or <i>y</i> is <i>1</i> exclusively, this macro expands to <i>1</i>.
+ Otherwise, it expands to <i>0</i>.
+ </div>
+ <div>
+ This macro <i>does not</i> perform a boolean conversion on either operand before performing the bitwise <i>OR</i> operation.
+ If that conversion is necessary, use <b>BOOST_PP_XOR</b> instead.
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li>BOOST_PP_XOR</li>
+ </ul>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <boost/preprocessor/logical/bitxor.hpp>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+#include <boost/preprocessor/logical/bitxor.hpp>
+
+BOOST_PP_BITXOR(0, 0) // expands to 0
+BOOST_PP_BITXOR(0, 1) // expands to 1
+BOOST_PP_BITXOR(1, 0) // expands to 1
+BOOST_PP_BITXOR(1, 1) // expands to 0
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/ref/bool.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/ref/bool.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,54 @@
+<html>
+<head>
+ <title>BOOST_PP_BOOL</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_BOOL</b> macro performs a boolean conversion on its operand.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_BOOL</b>(<i>x</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>x</dt>
+ <dd>
+ The value to be converted.
+ Valid values range from <i>0</i> to <b>BOOST_PP_LIMIT_MAG</b>.
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ If <i>x</i> is <i>0</i>, this macro expands to <i>0</i>.
+ Otherwise it expands to <i>1</i>.
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li>BOOST_PP_LIMIT_MAG</li>
+ </ul>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <boost/preprocessor/logical/bool.hpp>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+#include <boost/preprocessor/logical/bool.hpp>
+
+BOOST_PP_BOOL(6) // expands to 1
+BOOST_PP_BOOL(0) // expands to 0
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/ref/cat.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/ref/cat.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,57 @@
+<html>
+<head>
+ <title>BOOST_PP_CAT</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_CAT</b> macro concatenates its arguments after they have been expanded.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_CAT</b>(<i>a</i>, <i>b</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>a</dt>
+ <dd>
+ The left operand of the concatenation.
+ </dd>
+ <dt>b</dt>
+ <dd>
+ The right operand of the concatenation.
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ The preprocessor token-pasting operator (<b>##</b>) prevents arguments from expanding.
+ This macro allows its arguments to expand before concatenation.
+ </div>
+ <div>
+ Concatenation must not result in an invocation of a macro that uses <b>BOOST_PP_CAT</b>.
+ If that happens, <b>BOOST_PP_CAT</b> will not expand the second time.
+ </div>
+<!-- <h4>See Also</h4> -->
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <boost/preprocessor/cat.hpp>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+#include <boost/preprocessor/cat.hpp>
+
+BOOST_PP_CAT(x, BOOST_PP_CAT(y, z)) // expands to xyz
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/ref/comma.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/ref/comma.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,43 @@
+<html>
+<head>
+ <title>BOOST_PP_COMMA</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_COMMA</b> macro expands to a comma.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_COMMA</b>()
+ </div>
+ <h4>Remarks</h4>
+ <div>
+ The preprocessor interprets commas as argument separators in macro invocations.
+ Because of this, commas require special handling.
+ </div>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <boost/preprocessor/punctuation/comma.hpp>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+#include <boost/preprocessor/control/if.hpp>
+#include <boost/preprocessor/facilities/empty.hpp>
+#include <boost/preprocessor/punctuation/comma.hpp>
+
+BOOST_PP_IF(1, BOOST_PP_COMMA, BOOST_PP_EMPTY)() // expands to ,
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/ref/comma_if.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/ref/comma_if.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,60 @@
+<html>
+<head>
+ <title>BOOST_PP_COMMA_IF</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_COMMA_IF</b> macro conditionally expands to a comma.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_COMMA_IF</b>(<i>cond</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>cond</dt>
+ <dd>
+ The condition that determines if a the macro expands to a comma or nothing.
+ Valid values range from <i>0</i> to <b>BOOST_PP_LIMIT_MAG</b>.
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ If <i>cond</i> expands to <i>0</i>, this macro expands to nothing.
+ Otherwise, it expands to a comma.
+ </div>
+ <div>
+ The preprocessor interprets commas as argument separators in macro invocations.
+ Because of this, commas require special handling.
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li>BOOST_PP_LIMIT_MAG</li>
+ </ul>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <boost/preprocessor/punctuation/comma_if.hpp>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+#include <boost/preprocessor/punctuation/comma_if.hpp>
+#include <boost/preprocessor/repetition/repeat.hpp>
+
+#define MACRO(z, n, text) BOOST_PP_COMMA_IF(n) text
+
+BOOST_PP_REPEAT(3, MACRO, class) // expands to class, class, class
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/ref/compl.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/ref/compl.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,58 @@
+<html>
+<head>
+ <title>BOOST_PP_COMPL</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_COMPL</b> macro performs a bitwise inversion (bitwise <i>NOT</i> or one's complement) on its operand.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_COMPL</b>(<i>x</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>x</dt>
+ <dd>
+ The value to be converted.
+ This value must expand to <i>0</i> or <i>1</i>.
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ If <i>x</i> is <i>0</i>, this macro expands to <i>1</i>.
+ If <i>x</i> is <i>1</i>, this it expands to <i>0</i>.
+ </div>
+ <div>
+ This macro <i>does not</i> perform a boolean conversion on its operand before performing the inversion <i>OR</i> operation.
+ If that conversion is necessary, use <b>BOOST_PP_NOT</b> instead.
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li>BOOST_PP_NOT</li>
+ </ul>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <boost/preprocessor/logical/compl.hpp>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+#include <boost/preprocessor/logical/compl.hpp>
+
+BOOST_PP_COMPL(1) // expands to 0
+BOOST_PP_COMPL(0) // expands to 1
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/ref/config_extended_line_info.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/ref/config_extended_line_info.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,54 @@
+<html>
+ <head>
+ <title>BOOST_PP_CONFIG_EXTENDED_LINE_INFO</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+ </head>
+ <body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_CONFIG_EXTENDED_LINE_INFO</b> is a user-defined macro that
+ determines whether <b>BOOST_PP_LINE</b> outputs extended <i>file-iteration</i> state
+ information.
+ </div>
+ <h4>
+ Usage
+ </h4>
+ <div class="code">
+ #define <b>BOOST_PP_CONFIG_EXTENDED_LINE_INFO</b> <i>n</i>
+ </div>
+ <h4>
+ Arguments
+ </h4>
+ <dl>
+ <dt>n</dt>
+ <dd>
+ The value that determines if <b>BOOST_PP_LINE</b> outputs extended <i>file-iteration</i>
+ information. This value must be <i>0</i> or <i>1</i>.
+ </dd>
+ </dl>
+ <h4>
+ Remarks
+ </h4>
+ <div>
+ If <i>n</i> is <i>1</i>, <b>BOOST_PP_LINE</b> will output extended data.
+ By default, this macro is set to <i>0</i>.
+ </div>
+ <h4>
+ See Also
+ </h4>
+ <ul>
+ <li>
+ BOOST_PP_LINE</li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+ </body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/ref/counter.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/ref/counter.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,58 @@
+<html>
+<head>
+ <title>BOOST_PP_COUNTER</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_COUNTER</b> macro expands to the current counter value.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_COUNTER</b>
+ </div>
+ <h4>Remarks</h4>
+ <div>
+ This macro expands to an integer literal.
+ Its initial value is <code>0</code>.
+ Between usages of <b>BOOST_PP_UPDATE_COUNTER</b>, the value of <b>BOOST_PP_COUNTER</b> is constant.
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li>BOOST_PP_UPDATE_COUNTER</li>
+ </ul>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <boost/preprocessor/slot/counter.hpp>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+#include <boost/preprocessor/slot/counter.hpp>
+
+BOOST_PP_COUNTER // 0
+
+#include BOOST_PP_UPDATE_COUNTER()
+
+BOOST_PP_COUNTER // 1
+
+#include BOOST_PP_UPDATE_COUNTER()
+
+BOOST_PP_COUNTER // 2
+
+#include BOOST_PP_UPDATE_COUNTER()
+
+BOOST_PP_COUNTER // 3
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/ref/dec.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/ref/dec.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,54 @@
+<html>
+<head>
+ <title>BOOST_PP_DEC</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_DEC</b> macro expands to one less than its argument.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_DEC</b>(<i>x</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>x</dt>
+ <dd>
+ The value to be decremented.
+ Valid values range from <i>0</i> to <b>BOOST_PP_LIMIT_MAG</b>.
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ If <i>x</i> is <i>0</i>, the result is saturated to <i>0</i>.
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li>BOOST_PP_INC</li>
+ <li>BOOST_PP_LIMIT_MAG</li>
+ </ul>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <boost/preprocessor/arithmetic/dec.hpp>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+#include <boost/preprocessor/arithmetic/dec.hpp>
+
+BOOST_PP_DEC(BOOST_PP_DEC(6)) // expands to 4
+BOOST_PP_DEC(0) // expands to 0
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/ref/deduce_d.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/ref/deduce_d.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,82 @@
+<html>
+<head>
+ <title>BOOST_PP_DEDUCE_D</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_DEDUCE_D</b> macro manually deduces the state of the <b>BOOST_PP_WHILE</b> construct.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_DEDUCE_D</b>()
+ </div>
+ <h4>Remarks</h4>
+ <div>
+ This macro is intended to avoid the use of <i>automatic-recursion</i> at deep expansion depths.
+ <i>Automatic-recursion</i> at such depths can be inefficient on some preprocessors.
+ It is not intended to be used directly with the invocation of macros with a <b>_D</b> suffix such as:
+ <div>
+ <b>BOOST_PP_ADD_D</b>(<b>BOOST_PP_DEDUCE_D</b>(), <i>x</i>, <i>y</i>)
+ </div>
+ If it is used in this context, the <b>_D</b> macro will fail.
+ The <b>_D</b> macros directly concatenate to the <i>d</i> parameter that is passed to them,
+ which would prevent <b>BOOST_PP_DEDUCE_D</b>() from expanding.
+ Furthermore, it is pointless to use this macro in a situation such as this
+ because it would already be too late to gain any efficiency.
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li>BOOST_PP_WHILE</li>
+ </ul>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <boost/preprocessor/control/deduce_d.hpp>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+#include <boost/preprocessor/arithmetic/add.hpp>
+#include <boost/preprocessor/arithmetic/inc.hpp>
+#include <boost/preprocessor/arithmetic/sub.hpp>
+#include <boost/preprocessor/control/deduce_d.hpp>
+#include <boost/preprocessor/punctuation/comma_if.hpp>
+#include <boost/preprocessor/repetition/repeat.hpp>
+#include <boost/preprocessor/tuple/elem.hpp>
+
+#define RANGE(first, last) \
+ BOOST_PP_REPEAT( \
+ BOOST_PP_INC( \
+ BOOST_PP_SUB(last, first) \
+ ), \
+ RANGE_M, \
+ (first, BOOST_PP_DEDUCE_D()) \
+ ) \
+ /**/
+
+#define RANGE_M(z, n, data) \
+ RANGE_M_2( \
+ n, \
+ BOOST_PP_TUPLE_ELEM(2, 0, data), \
+ BOOST_PP_TUPLE_ELEM(2, 1, data) \
+ ) \
+ /**/
+
+#define RANGE_M_2(n, first, d) \
+ BOOST_PP_COMMA_IF(n) BOOST_PP_ADD_D(d, n, first) \
+ /**/
+
+RANGE(5, 10) // expands to 5, 6, 7, 8, 9, 10
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/ref/deduce_r.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/ref/deduce_r.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,48 @@
+<html>
+<head>
+ <title>BOOST_PP_DEDUCE_R</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_DEDUCE_R</b> macro manually deduces the state of the <b>BOOST_PP_FOR</b> construct.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_DEDUCE_R</b>()
+ </div>
+ <h4>Remarks</h4>
+ <div>
+ This macro is intended to avoid the use of <i>automatic-recursion</i> at deep expansion depths.
+ <i>Automatic-recursion</i> at such depths can be inefficient on some preprocessors.
+ It is not intended to be used directly with the invocation of macros with a <b>_R</b> suffix such as:
+ <div>
+ <b>BOOST_PP_LIST_ENUM_R</b>(<b>BOOST_PP_DEDUCE_R</b>(), (a, (b, (c, <b>BOOST_PP_NIL</b>))))
+ </div>
+ If it is used in this context, the <b>_R</b> macro will fail.
+ The <b>_R</b> macros directly concatenate to the <i>r</i> parameter that is passed to them,
+ which would prevent <b>BOOST_PP_DEDUCE_R</b>() from expanding.
+ Furthermore, it is pointless to use this macro in a situation such as this
+ because it would already be too late to gain any efficiency.
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li>BOOST_PP_FOR</li>
+ </ul>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <boost/preprocessor/repetition/deduce_r.hpp>
+ </div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/ref/deduce_z.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/ref/deduce_z.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,48 @@
+<html>
+<head>
+ <title>BOOST_PP_DEDUCE_Z</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_DEDUCE_Z</b> macro manually deduces the state of the <b>BOOST_PP_REPEAT</b> construct.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_DEDUCE_Z</b>()
+ </div>
+ <h4>Remarks</h4>
+ <div>
+ This macro is intended to avoid the use of <i>automatic-recursion</i> at deep expansion depths.
+ <i>Automatic-recursion</i> at such depths can be inefficient on some preprocessors.
+ It is not intended to be used directly with the invocation of macros with a <b>_Z</b> suffix such as:
+ <div>
+ <b>BOOST_PP_ENUM_PARAMS_Z</b>(<b>BOOST_PP_DEDUCE_Z</b>(), (a, (b, (c, <b>BOOST_PP_NIL</b>))))
+ </div>
+ If it is used in this context, the <b>_Z</b> macro will fail.
+ The <b>_Z</b> macros directly concatenate to the <i>r</i> parameter that is passed to them,
+ which would prevent <b>BOOST_PP_DEDUCE_Z</b>() from expanding.
+ Furthermore, it is pointless to use this macro in a situation such as this
+ because it would already be too late to gain any efficiency.
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li>BOOST_PP_REPEAT</li>
+ </ul>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <boost/preprocessor/repetition/deduce_z.hpp>
+ </div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/ref/div.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/ref/div.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,63 @@
+<html>
+<head>
+ <title>BOOST_PP_DIV</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_DIV</b> macro expands to the quotient of its arguments.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_DIV</b>(<i>x</i>, <i>y</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>x</dt>
+ <dd>
+ The dividend (numerator) of the operation.
+ Valid values range from <i>0</i> to <b>BOOST_PP_LIMIT_MAG</b>.
+ </dd>
+ <dt>y</dt>
+ <dd>
+ The divisor (denominator) of the operation.
+ Valid values range from <i>1</i> to <b>BOOST_PP_LIMIT_MAG</b>.
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ Previously, this macro could not be used inside <b>BOOST_PP_WHILE</b>.
+ There is no longer any such restriction.
+ It is more efficient, however, to use <b>BOOST_PP_DIV_D</b> in such a situation.
+ </div>
+ <div>
+ If <i>y</i> is <i>0</i>, the result is undefined.
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li>BOOST_PP_DIV_D</li>
+ <li>BOOST_PP_LIMIT_MAG</li>
+ </ul>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <boost/preprocessor/arithmetic/div.hpp>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+#include <boost/preprocessor/arithmetic/div.hpp>
+
+BOOST_PP_DIV(11, 5) // expands to 2
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/ref/div_d.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/ref/div_d.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,85 @@
+<html>
+<head>
+ <title>BOOST_PP_DIV_D</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_DIV_D</b> macro expands to the quotient of its second and third arguments.
+ It reenters <b>BOOST_PP_WHILE</b> with maximum efficiency.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_DIV_D</b>(<i>d</i>, <i>x</i>, <i>y</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>d</dt>
+ <dd>
+ The next available <b>BOOST_PP_WHILE</b> iteration.
+ </dd>
+ <dt>x</dt>
+ <dd>
+ The dividend (numerator) of the operation.
+ Valid values range from <i>0</i> to <b>BOOST_PP_LIMIT_MAG</b>.
+ </dd>
+ <dt>y</dt>
+ <dd>
+ The divisor (denominator) of the operation.
+ Valid values range from <i>1</i> to <b>BOOST_PP_LIMIT_MAG</b>.
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ If <i>y</i> is <i>0</i>, the result is undefined.
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li>BOOST_PP_DIV</li>
+ <li>BOOST_PP_LIMIT_MAG</li>
+ </ul>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <boost/preprocessor/arithmetic/div.hpp>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+#include <boost/preprocessor/arithmetic/dec.hpp>
+#include <boost/preprocessor/arithmetic/div.hpp>
+#include <boost/preprocessor/control/while.hpp>
+#include <boost/preprocessor/tuple/elem.hpp>
+
+#define PRED(d, data) BOOST_PP_TUPLE_ELEM(2, 0, data)
+
+#define OP(d, data) \
+ ( \
+ BOOST_PP_DEC( \
+ BOOST_PP_TUPLE_ELEM(2, 0, data) \
+ ), \
+ BOOST_PP_DIV_D( \
+ d, \
+ BOOST_PP_TUPLE_ELEM(2, 1, data), \
+ 2 \
+ ) \
+ ) \
+ /**/
+
+// halve 'x' 'n' times
+#define HALVE(x, n) BOOST_PP_TUPLE_ELEM(2, 1, BOOST_PP_WHILE(PRED, OP, (n, x)))
+
+HALVE(8, 2) // expands to 2
+HALVE(16, 1) // expands to 8
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/ref/empty.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/ref/empty.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,47 @@
+<html>
+<head>
+ <title>BOOST_PP_EMPTY</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_EMPTY</b> macro is a nullary utility macro that expands to nothing.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_EMPTY</b>()
+ </div>
+ <h4>Remarks</h4>
+ <div>
+ This macro is helps avoid inefficient macro-expansion.
+ It is primarily useful as arguments to <b>BOOST_PP_IF</b> or <b>BOOST_PP_IIF</b>.
+ </div>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <boost/preprocessor/facilities/empty.hpp>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+#include <boost/preprocessor/control/if.hpp>
+#include <boost/preprocessor/facilities/empty.hpp>
+
+#define X() result
+#define MACRO(c) BOOST_PP_IF(c, X, BOOST_PP_EMPTY)()
+
+MACRO(0) // expands to nothing
+MACRO(1) // expands to result
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/ref/enum.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/ref/enum.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,80 @@
+<html>
+<head>
+ <title>BOOST_PP_ENUM</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_ENUM</b> macro generates a comma-separated list.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_ENUM</b>(<i>count</i>, <i>macro</i>, <i>data</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>count</dt>
+ <dd>
+ The number of repetitious calls to <i>macro</i>.
+ Valid values range from <i>0</i> to <b>BOOST_PP_LIMIT_REPEAT</b>.
+ </dd>
+ <dt>macro</dt>
+ <dd>
+ A ternary operation of the form <i>macro</i>(<i>z</i>, <i>n</i>, <i>data</i>).
+ This macro is expanded by <b>BOOST_PP_ENUM</b> with the next available repetition depth,
+ the current repetition number, and the auxiliary <i>data</i> argument.
+ </dd>
+ <dt>data</dt>
+ <dd>
+ Auxiliary data passed to <i>macro</i>.
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ This macro expands to the comma-separated sequence:
+ <div>
+ <i>macro</i>(<i>z</i>, <i>0</i>, <i>data</i>), <i>macro</i>(<i>z</i>, <i>1</i>, <i>data</i>), ... <i>macro</i>(<i>z</i>, <i>count</i> - <i>1</i>, <i>data</i>)
+ </div>
+ </div>
+ <div>
+ The <i>z</i> value that is passed to <i>macro</i> represents the next available repetition dimension.
+ Other macros that have <b>_Z</b> suffix variants internally use <b>BOOST_PP_REPEAT</b>--for example, <b>BOOST_PP_ENUM_PARAMS</b> and <b>BOOST_PP_ENUM_PARAMS_Z</b>.
+ Using these <b>_Z</b> versions is not strictly necessary, but passing the <i>z</i> value (that is passed to <i>macro</i>) to these macros allows them to reenter <b>BOOST_PP_REPEAT</b> with maximum efficiency.
+ </div>
+ <div>
+ To directly use this <i>z</i> value, rather than simply passing it to another macro, see <b>BOOST_PP_ENUM_<i>z</i></b>.
+ </div>
+ <div>
+ Previously, this macro could not be used recursively inside <b>BOOST_PP_REPEAT</b>.
+ This limitation no longer exists, as the library can automatically detect the next available repetition depth.
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li>BOOST_PP_ENUM_z</li>
+ <li>BOOST_PP_LIMIT_REPEAT</li>
+ </ul>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <boost/preprocessor/repetition/enum.hpp>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+#include <boost/preprocessor/repetition/enum.hpp>
+
+#define TEXT(z, n, text) text
+
+BOOST_PP_ENUM(4, TEXT, class) // expands to class, class, class, class
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/ref/enum_binary_params.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/ref/enum_binary_params.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,76 @@
+<html>
+<head>
+ <title>BOOST_PP_ENUM_BINARY_PARAMS</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_ENUM_BINARY_PARAMS</b> macro generates a comma-separated list of binary parameters.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_ENUM_BINARY_PARAMS</b>(<i>count</i>, <i>p1</i>, <i>p2</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>count</dt>
+ <dd>
+ The number of parameters to generate.
+ Valid values range from <i>0</i> to <b>BOOST_PP_LIMIT_REPEAT</b>.
+ </dd>
+ <dt>p1</dt>
+ <dd>
+ The text of the first part of the parameter.
+ <b>BOOST_PP_ENUM_BINARY_PARAMS</b> concatenates numbers ranging from <i>0</i> to <i>count</i> - <i>1</i>
+ to generate parameters.
+ </dd>
+ <dt>p2</dt>
+ <dd>
+ The text of the first part of the parameter.
+ <b>BOOST_PP_ENUM_BINARY_PARAMS</b> concatenates numbers ranging from <i>0</i> to <i>count</i> - <i>1</i>
+ to generate parameters.
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ This macro expands to the comma-separated sequence:
+ <div>
+ <i>p1</i> ## <i>0</i> <i>p2</i> ## <i>0</i>, <i>p1</i> ## <i>1</i> <i>p2</i> ## <i>1</i>, ... <i>p1</i> ## <i>count</i> - <i>1</i> <i>p2</i> ## <i>count</i> - <i>1</i>
+ </div>
+ </div>
+ <div>
+ To use the <i>z</i> parameter passed from other macros that use <b>BOOST_PP_REPEAT</b>, see <b>BOOST_PP_ENUM_BINARY_PARAMS_Z</b>.
+ </div>
+ <div>
+ This macro is a replacement for both <b>BOOST_PP_ENUM_PARAMS_WITH_A_DEFAULT</b> and <b>BOOST_PP_ENUM_PARAMS_WITH_DEFAULTS</b>.
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li>BOOST_PP_ENUM_BINARY_PARAMS_Z</li>
+ <li>BOOST_PP_ENUM_PARAMS_WITH_A_DEFAULT</li>
+ <li>BOOST_PP_ENUM_PARAMS_WITH_DEFAULTS</li>
+ <li>BOOST_PP_LIMIT_REPEAT</li>
+ </ul>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <boost/preprocessor/repetition/enum_binary_params.hpp>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+#include <boost/preprocessor/repetition/enum_binary_params.hpp>
+
+BOOST_PP_ENUM_BINARY_PARAMS(3, T, p) // expands to T0 p0, T1 p1, T2 p2
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/ref/enum_binary_params_z.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/ref/enum_binary_params_z.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,93 @@
+<html>
+<head>
+ <title>BOOST_PP_ENUM_BINARY_PARAMS_Z</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_ENUM_BINARY_PARAMS_Z</b> macro generates a comma-separated list of binary parameters.
+ It reenters <b>BOOST_PP_REPEAT</b> with maximum efficiency.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_ENUM_BINARY_PARAMS_Z</b>(<i>z</i>, <i>count</i>, <i>p1</i>, <i>p2</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>z</dt>
+ <dd>
+ The next available <b>BOOST_PP_REPEAT</b> dimension.
+ </dd>
+ <dt>count</dt>
+ <dd>
+ The number of parameters to generate.
+ Valid values range from <i>0</i> to <b>BOOST_PP_LIMIT_REPEAT</b>.
+ </dd>
+ <dt>p1</dt>
+ <dd>
+ The text of the first part of the parameter.
+ <b>BOOST_PP_ENUM_BINARY_PARAMS</b> concatenates numbers ranging from <i>0</i> to <i>count</i> - <i>1</i>
+ to generate parameters.
+ </dd>
+ <dt>p2</dt>
+ <dd>
+ The text of the first part of the parameter.
+ <b>BOOST_PP_ENUM_BINARY_PARAMS</b> concatenates numbers ranging from <i>0</i> to <i>count</i> - <i>1</i>
+ to generate parameters.
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ This macro expands to the comma-separated sequence:
+ <div>
+ <i>p1</i> ## <i>0</i> <i>p2</i> ## <i>0</i>, <i>p1</i> ## <i>1</i> <i>p2</i> ## <i>1</i>, ... <i>p1</i> ## <i>count</i> - <i>1</i> <i>p2</i> ## <i>count</i> - <i>1</i>
+ </div>
+ </div>
+ <div>
+ This macro is a replacement for both <b>BOOST_PP_ENUM_PARAMS_WITH_A_DEFAULT</b> and <b>BOOST_PP_ENUM_PARAMS_WITH_DEFAULTS</b>.
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li>BOOST_PP_ENUM_BINARY_PARAMS</li>
+ <li>BOOST_PP_ENUM_PARAMS_WITH_A_DEFAULT</li>
+ <li>BOOST_PP_ENUM_PARAMS_WITH_DEFAULTS</li>
+ <li>BOOST_PP_LIMIT_REPEAT</li>
+ </ul>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <boost/preprocessor/repetition/enum_binary_params.hpp>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+#include <boost/preprocessor/arithmetic/inc.hpp>
+#include <boost/preprocessor/repetition/enum_binary_params.hpp>
+#include <boost/preprocessor/repetition/enum_params.hpp>
+
+#define FUNCTION(z, n, _) \
+ template<BOOST_PP_ENUM_PARAMS_Z(z, BOOST_PP_INC(n), class T)> \
+ void f(BOOST_PP_ENUM_BINARY_PARAMS_Z(z, BOOST_PP_INC(n), T, p)) { \
+ /* ... */ \
+ } \
+ /**/
+
+BOOST_PP_REPEAT(2, FUNCTION, nil)
+/*
+ expands to...
+
+ template<class T0> void f(T0 p0) { }
+ template<class T0, class T1> void f(T0 p0, T1 p1) { }
+*/
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/ref/enum_params.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/ref/enum_params.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,69 @@
+<html>
+<head>
+ <title>BOOST_PP_ENUM_PARAMS</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_ENUM_PARAMS</b> macro generates a comma-separated list of parameters.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_ENUM_PARAMS</b>(<i>count</i>, <i>param</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>count</dt>
+ <dd>
+ The number of parameters to generate.
+ Valid values range from <i>0</i> to <b>BOOST_PP_LIMIT_REPEAT</b>.
+ </dd>
+ <dt>param</dt>
+ <dd>
+ The text of the parameter.
+ <b>BOOST_PP_ENUM_PARAMS</b> concatenates numbers ranging from <i>0</i> to <i>count</i> - <i>1</i>
+ to generate parameters.
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ This macro expands to the comma-separated sequence:
+ <div>
+ <i>param</i> ## <i>0</i>, <i>param</i> ## <i>1</i>, ... <i>param</i> ## <i>count</i> - <i>1</i>
+ </div>
+ </div>
+ <div>
+ To use the <i>z</i> parameter passed from other macros that use <b>BOOST_PP_REPEAT</b>, see <b>BOOST_PP_ENUM_PARAMS_Z</b>.
+ </div>
+ <div>
+ Previously, this macro could not be used recursively inside <b>BOOST_PP_REPEAT</b>.
+ This limitation no longer exists, as the library can automatically detect the next available repetition depth.
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li>BOOST_PP_ENUM_PARAMS_Z</li>
+ <li>BOOST_PP_LIMIT_REPEAT</li>
+ </ul>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <boost/preprocessor/repetition/enum_params.hpp>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+#include <boost/preprocessor/repetition/enum_params.hpp>
+
+BOOST_PP_ENUM_PARAMS(3, class T) // expands to class T0, class T1, class T2
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/ref/enum_params_with_a_default.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/ref/enum_params_with_a_default.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,83 @@
+<html>
+<head>
+ <title>BOOST_PP_ENUM_PARAMS_WITH_A_DEFAULT</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_ENUM_PARAMS_WITH_A_DEFAULT</b> macro generates a comma-separated list of parameters with a default argument.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_ENUM_PARAMS_WITH_A_DEFAULT</b>(<i>count</i>, <i>param</i>, <i>def</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>count</dt>
+ <dd>
+ The number of parameters to generate.
+ Valid values range from <i>0</i> to <b>BOOST_PP_LIMIT_REPEAT</b>.
+ </dd>
+ <dt>param</dt>
+ <dd>
+ The text of the parameter.
+ <b>BOOST_PP_ENUM_PARAMS_WITH_A_DEFAULT</b> concatenates numbers ranging from <i>0</i> to <i>count</i> - <i>1</i>
+ to generate parameters.
+ </dd>
+ <dt>def</dt>
+ <dd>
+ The default value that trails each parameter.
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ This macro expands to the comma-separated sequence:
+ <div>
+ <i>param</i> ## <i>0</i> = <i>def</i>, <i>param</i> ## <i>1</i> = <i>def</i>, ... <i>param</i> ## <i>count</i> - <i>1</i> = <i>def</i>
+ </div>
+ </div>
+ <div>
+ Previously, this macro could not be used recursively inside <b>BOOST_PP_REPEAT</b>.
+ This limitation no longer exists, as the library can automatically detect the next available repetition depth.
+ </div>
+ <div>
+ This macro is deprecated.
+ It only exists for backward compatibility.
+ Use <b>BOOST_PP_ENUM_BINARY_PARAMS</b> with <b>BOOST_PP_INTERCEPT</b> instead:
+ <div>
+ <b>BOOST_PP_ENUM_BINARY_PARAMS</b>(<i>count</i>, <i>param</i>, = <i>def</i> <b>BOOST_PP_INTERCEPT</b>)
+ </div>
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li>BOOST_PP_ENUM_BINARY_PARAMS</li>
+ <li>BOOST_PP_INTERCEPT</li>
+ <li>BOOST_PP_LIMIT_REPEAT</li>
+ </ul>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <boost/preprocessor/repetition/enum_params_with_a_default.hpp>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+#include <boost/preprocessor/repetition/enum_params_with_a_default.hpp>
+
+BOOST_PP_ENUM_PARAMS_WITH_A_DEFAULT(3, class T, int)
+ // expands to T0 = int, T1 = int, T2 = int
+
+BOOST_PP_ENUM_BINARY_PARAMS(3, class T, = int BOOST_PP_INTERCEPT)
+ // expands to T0 = int, T1 = int, T2 = int
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/ref/enum_params_with_defaults.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/ref/enum_params_with_defaults.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,84 @@
+<html>
+<head>
+ <title>BOOST_PP_ENUM_PARAMS_WITH_DEFAULTS</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_ENUM_PARAMS_WITH_DEFAULTS</b> macro generates a comma-separated list of parameters with default arguments.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_ENUM_PARAMS_WITH_DEFAULTS</b>(<i>count</i>, <i>param</i>, <i>def</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>count</dt>
+ <dd>
+ The number of parameters to generate.
+ Valid values range from <i>0</i> to <b>BOOST_PP_LIMIT_REPEAT</b>.
+ </dd>
+ <dt>param</dt>
+ <dd>
+ The text of the parameter.
+ <b>BOOST_PP_ENUM_PARAMS_WITH_DEFAULTS</b> concatenates numbers ranging from <i>0</i> to <i>count</i> - <i>1</i>
+ to generate parameters.
+ </dd>
+ <dt>def</dt>
+ <dd>
+ The default value that trails each parameter.
+ <b>BOOST_PP_ENUM_PARAMS_WITH_DEFAULTS</b> concatenates numbers ranging from <i>0</i> to <i>count</i> - <i>1</i>
+ to generate default arguments.
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ This macro expands to the comma-separated sequence:
+ <div>
+ <i>param</i> ## <i>0</i> = <i>def</i> ## <i>0</i>, <i>param</i> ## <i>1</i> = <i>def</i> ## <i>1</i>, ... <i>param</i> ## <i>count</i> - <i>1</i> = <i>def</i> ## <i>count</i> - <i>1</i>
+ </div>
+ </div>
+ <div>
+ Previously, this macro could not be used recursively inside <b>BOOST_PP_REPEAT</b>.
+ This limitation no longer exists, as the library can automatically detect the next available repetition depth.
+ </div>
+ <div>
+ This macro is deprecated.
+ It only exists for backward compatibility.
+ Use <b>BOOST_PP_ENUM_BINARY_PARAMS</b> instead:
+ <div>
+ <b>BOOST_PP_ENUM_BINARY_PARAMS</b>(<i>count</i>, <i>param</i>, = <i>def</i>)
+ </div>
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li>BOOST_PP_ENUM_BINARY_PARAMS</li>
+ <li>BOOST_PP_LIMIT_REPEAT</li>
+ </ul>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <boost/preprocessor/repetition/enum_params_with_defaults.hpp>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+#include <boost/preprocessor/repetition/enum_params_with_defaults.hpp>
+
+BOOST_PP_ENUM_PARAMS_WITH_DEFAULTS(3, class T, U)
+ // expands to class T0 = U0, class T1 = U1, class T2 = U2
+
+BOOST_PP_ENUM_BINARY_PARAMS(3, class T, = U)
+ // expands to class T0 = U0, class T1 = U1, class T2 = U2
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/ref/enum_params_z.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/ref/enum_params_z.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,82 @@
+<html>
+<head>
+ <title>BOOST_PP_ENUM_PARAMS_Z</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_ENUM_PARAMS_Z</b> macro generates a comma-separated list of parameters.
+ It reenters <b>BOOST_PP_REPEAT</b> with maximum efficiency.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_ENUM_PARAMS_Z</b>(<i>z</i>, <i>count</i>, <i>param</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>z</dt>
+ <dd>
+ The next available <b>BOOST_PP_REPEAT</b> dimension.
+ </dd>
+ <dt>count</dt>
+ <dd>
+ The number of parameters to generate.
+ Valid values range from <i>0</i> to <b>BOOST_PP_LIMIT_REPEAT</b>.
+ </dd>
+ <dt>param</dt>
+ <dd>
+ The text of the parameter.
+ <b>BOOST_PP_ENUM_PARAMS_Z</b> concatenates numbers ranging from <i>0</i> to <i>count</i> - <i>1</i>
+ to generate parameters.
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ This macro expands to the comma-separated sequence:
+ <div>
+ <i>param</i> ## <i>0</i>, <i>param</i> ## <i>1</i>, ... <i>param</i> ## <i>count</i> - <i>1</i>
+ </div>
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li>BOOST_PP_ENUM_PARAMS</li>
+ <li>BOOST_PP_LIMIT_REPEAT</li>
+ </ul>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <boost/preprocessor/repetition/enum_params.hpp>
+ </div>
+ <h4>Sample Code</h4>
+<div id="sample"><pre>
+#include <boost/preprocessor/arithmetic/inc.hpp>
+#include <boost/preprocessor/repetition/enum_params.hpp>
+#include <boost/preprocessor/repetition/repeat.hpp>
+
+#define MACRO(z, n, _) \
+ template< \
+ BOOST_PP_ENUM_PARAMS_Z(z, BOOST_PP_INC(n), class T) \
+ > class X ## n { \
+ /* ... */ \
+ }; \
+ /**/
+
+BOOST_PP_REPEAT(2, MACRO, nil)
+/*
+ expands to...
+ template<class T0> class X0 { };
+ template<class T0, class T1> class X1 { };
+*/
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/ref/enum_shifted.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/ref/enum_shifted.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,82 @@
+<html>
+<head>
+ <title>BOOST_PP_ENUM_SHIFTED</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_ENUM_SHIFTED</b> macro generates a comma-separated, shifted list.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_ENUM_SHIFTED</b>(<i>count</i>, <i>macro</i>, <i>data</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>count</dt>
+ <dd>
+ The number of repetitious calls to <i>macro</i>.
+ Valid values range from <i>0</i> to <b>BOOST_PP_LIMIT_REPEAT</b>.
+ </dd>
+ <dt>macro</dt>
+ <dd>
+ A ternary operation of the form <i>macro</i>(<i>z</i>, <i>n</i>, <i>data</i>).
+ This macro is expanded by <b>BOOST_PP_ENUM_SHIFTED</b> with the next available repetition depth,
+ the current repetition number, and the auxiliary <i>data</i> argument.
+ </dd>
+ <dt>data</dt>
+ <dd>
+ Auxiliary data passed to <i>macro</i>.
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ This macro expands to the comma-separated sequence:
+ <div>
+ <i>macro</i>(<i>z</i>, <i>1</i>, <i>data</i>), ... <i>macro</i>(<i>z</i>, <i>count</i> - <i>1</i>, <i>data</i>)
+ </div>
+ </div>
+ <div>
+ The <i>z</i> value that is passed to <i>macro</i> represents the next available repetition dimension.
+ Other macros that have <b>_Z</b> suffix variants internally use <b>BOOST_PP_REPEAT</b>--for example, <b>BOOST_PP_ENUM_PARAMS</b> and <b>BOOST_PP_ENUM_PARAMS_Z</b>.
+ Using these <b>_Z</b> versions is not strictly necessary, but passing the <i>z</i> value (that is passed to <i>macro</i>) to these macros allows them to reenter <b>BOOST_PP_REPEAT</b> with maximum efficiency.
+ </div>
+ <div>
+ To directly use this <i>z</i> value, rather than simply passing it to another macro, see <b>BOOST_PP_ENUM_SHIFTED_<i>z</i></b>.
+ </div>
+ <div>
+ Previously, this macro could not be used recursively inside <b>BOOST_PP_REPEAT</b>.
+ This limitation no longer exists, as the library can automatically detect the next available repetition depth.
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li>BOOST_PP_ENUM_SHIFTED_z</li>
+ <li>BOOST_PP_LIMIT_REPEAT</li>
+ </ul>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <boost/preprocessor/repetition/enum_shifted.hpp>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+#include <boost/preprocessor/repetition/enum.hpp>
+#include <boost/preprocessor/repetition/enum_shifted.hpp>
+
+#define TYPE(z, n, type) type
+
+BOOST_PP_ENUM(5, TYPE, int) // expands to int, int, int, int, int
+BOOST_PP_ENUM_SHIFTED(5, TYPE, int) // expands to int, int, int, int
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/ref/enum_shifted_params.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/ref/enum_shifted_params.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,73 @@
+<html>
+<head>
+ <title>BOOST_PP_ENUM_SHIFTED_PARAMS</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_ENUM_SHIFTED_PARAMS</b> macro generates a comma-separated, shifted list of parameters.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_ENUM_SHIFTED_PARAMS</b>(<i>count</i>, <i>param</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>count</dt>
+ <dd>
+ The number of parameters to generate.
+ Valid values range from <i>0</i> to <b>BOOST_PP_LIMIT_REPEAT</b>.
+ </dd>
+ <dt>param</dt>
+ <dd>
+ The text of the parameter.
+ <b>BOOST_PP_ENUM_SHIFTED_PARAMS</b> concatenates numbers ranging from <i>1</i> to <i>count</i> - <i>1</i>
+ to generate parameters.
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ This macro expands to the comma-separated sequence:
+ <div>
+ <i>param</i> ## <i>1</i>, ... <i>param</i> ## <i>count</i> - <i>1</i>
+ </div>
+ </div>
+ <div>
+ This macro facilitates a typical usage of the library.
+ Shifted parameter lists are common in template metaprograms.
+ </div>
+ <div>
+ To use the <i>z</i> parameter passed from other macros that use <b>BOOST_PP_REPEAT</b>, see <b>BOOST_PP_ENUM_SHIFTED_PARAMS_Z</b>.
+ </div>
+ <div>
+ Previously, this macro could not be used recursively inside <b>BOOST_PP_REPEAT</b>.
+ This limitation no longer exists, as the library can automatically detect the next available repetition depth.
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li>BOOST_PP_LIMIT_REPEAT</li>
+ <li>BOOST_PP_SHIFTED_ENUM_PARAMS_z</li>
+ </ul>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <boost/preprocessor/repetition/enum_shifted_params.hpp>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+#include <boost/preprocessor/repetition/enum_shifted_params.hpp>
+
+BOOST_PP_ENUM_SHIFTED_PARAMS(3, class T) // expands to class T1, class T2
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/ref/enum_shifted_params_z.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/ref/enum_shifted_params_z.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,79 @@
+<html>
+<head>
+ <title>BOOST_PP_ENUM_SHIFTED_PARAMS_Z</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_ENUM_SHIFTED_PARAMS_Z</b> macro generates a comma-separated, shifted list of parameters.
+ It reenters <b>BOOST_PP_REPEAT</b> with maximum efficiency.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_ENUM_SHIFTED_PARAMS_Z</b>(<i>z</i>, <i>count</i>, <i>param</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>z</dt>
+ <dd>
+ The next available <b>BOOST_PP_REPEAT</b> dimension.
+ </dd>
+ <dt>count</dt>
+ <dd>
+ The number of parameters to generate.
+ Valid values range from <i>0</i> to <b>BOOST_PP_LIMIT_REPEAT</b>.
+ </dd>
+ <dt>param</dt>
+ <dd>
+ The text of the parameter.
+ <b>BOOST_PP_ENUM_SHIFTED_PARAMS_Z</b> concatenates numbers ranging from <i>1</i> to <i>count</i> - <i>1</i>
+ to generate parameters.
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ This macro expands to the comma-separated sequence:
+ <div>
+ <i>param</i> ## <i>1</i>, ... <i>param</i> ## <i>count</i> - <i>1</i>
+ </div>
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li>BOOST_PP_LIMIT_REPEAT</li>
+ <li>BOOST_PP_ENUM_SHIFTED_PARAMS</li>
+ </ul>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <boost/preprocessor/repetition/enum_shifted_params.hpp>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+#include <boost/preprocessor/repetition/enum_params.hpp>
+#include <boost/preprocessor/repetition/enum_shifted_params.hpp>
+#include <boost/preprocessor/repetition/repeat.hpp>
+
+int add(void) {
+ return 0;
+}
+
+#define ADD_F(z, n, _) \
+ int add_f(BOOST_PP_ENUM_PARAMS_Z(z, BOOST_PP_INC(n), int p)) { \
+ return p0 + add_f(BOOST_PP_ENUM_SHIFTED_PARAMS_Z(z, BOOST_PP_INC(n), p)); \
+ } \
+ /**/
+
+BOOST_PP_REPEAT(5, ADD_F, nil)
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/ref/enum_shifted_z.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/ref/enum_shifted_z.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,93 @@
+<html>
+<head>
+ <title>BOOST_PP_ENUM_SHIFTED_z</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_ENUM_SHIFTED_<i>z</i></b> macro represents a reentry into the <b>BOOST_PP_ENUM_SHIFTED</b> repetition construct.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_ENUM_SHIFTED_</b> ## <i>z</i>(<i>count</i>, <i>macro</i>, <i>data</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>z</dt>
+ <dd>
+ The next available <b>BOOST_PP_REPEAT</b> dimension.
+ </dd>
+ <dt>count</dt>
+ <dd>
+ The number of repetitious calls to <i>macro</i>.
+ Valid values range from <i>0</i> to <b>BOOST_PP_LIMIT_REPEAT</b>.
+ </dd>
+ <dt>macro</dt>
+ <dd>
+ A ternary operation of the form <i>macro</i>(<i>z</i>, <i>n</i>, <i>data</i>).
+ This macro is expanded by <b>BOOST_PP_ENUM_SHIFTED</b> with the next available repetition depth,
+ the current repetition number, and the auxiliary <i>data</i> argument.
+ </dd>
+ <dt>data</dt>
+ <dd>
+ Auxiliary data passed to <i>macro</i>.
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ This macro expands to the sequence:
+ <div>
+ <i>macro</i>(<i>z</i>, <i>1</i>, <i>data</i>), ... <i>macro</i>(<i>z</i>, <i>count</i> - <i>1</i>, <i>data</i>)
+ </div>
+ </div>
+ <div>
+ At certain times, it may be necessary to perform the concatenation with <b>BOOST_PP_CAT</b> rather than the preprocessor token-pasting operator.
+ This happens when the <i>z</i> value is a macro invocation itself.
+ It needs a delay to allow it to expand.
+ The syntax in such a scenario becomes:
+ <div>
+ <b>BOOST_PP_CAT</b>(<b>BOOST_PP_ENUM_SHIFTED_</b>, <i>z</i>)(<i>count</i>, <i>macro</i>, <i>data</i>).
+ </div>
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li>BOOST_PP_CAT</li>
+ <li>BOOST_PP_ENUM_SHIFTED</li>
+ <li>BOOST_PP_LIMIT_REPEAT</li>
+ </ul>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <boost/preprocessor/repetition/enum_shifted.hpp>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+#include <boost/preprocessor/arithmetic/inc.hpp>
+#include <boost/preprocessor/repetition/enum_shifted.hpp>
+#include <boost/preprocessor/repetition/repeat.hpp>
+
+#define TEXT(z, n, text) text
+
+#define MACRO(z, n, data) \
+ ( \
+ BOOST_PP_ENUM_SHIFTED_ ## z( \
+ BOOST_PP_INC(n), \
+ TEXT, data \
+ ) \
+ ) \
+ /**/
+
+BOOST_PP_REPEAT(3, MACRO, class) // expands to () (class) (class, class)
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/ref/enum_trailing.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/ref/enum_trailing.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,83 @@
+<html>
+<head>
+ <title>BOOST_PP_ENUM_TRAILING</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_ENUM_TRAILING</b> macro generates a comma-separated list with a leading comma.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_ENUM_TRAILING</b>(<i>count</i>, <i>macro</i>, <i>data</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>count</dt>
+ <dd>
+ The number of repetitious calls to <i>macro</i>.
+ Valid values range from <i>0</i> to <b>BOOST_PP_LIMIT_REPEAT</b>.
+ </dd>
+ <dt>macro</dt>
+ <dd>
+ A ternary operation of the form <i>macro</i>(<i>z</i>, <i>n</i>, <i>data</i>).
+ This macro is expanded by <b>BOOST_PP_ENUM</b> with the next available repetition depth,
+ the current repetition number, and the auxiliary <i>data</i> argument.
+ </dd>
+ <dt>data</dt>
+ <dd>
+ Auxiliary data passed to <i>macro</i>.
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ This macro expands to the comma-separated sequence:
+ <div>
+ , <i>macro</i>(<i>z</i>, <i>0</i>, <i>data</i>), <i>macro</i>(<i>z</i>, <i>1</i>, <i>data</i>), ... <i>macro</i>(<i>z</i>, <i>count</i> - <i>1</i>, <i>data</i>)
+ </div>
+ </div>
+ <div>
+ The <i>z</i> value that is passed to <i>macro</i> represents the next available repetition dimension.
+ Other macros that have <b>_Z</b> suffix variants internally use <b>BOOST_PP_REPEAT</b>--for example, <b>BOOST_PP_ENUM_PARAMS</b> and <b>BOOST_PP_ENUM_PARAMS_Z</b>.
+ Using these <b>_Z</b> versions is not strictly necessary, but passing the <i>z</i> value (that is passed to <i>macro</i>) to these macros allows them to reenter <b>BOOST_PP_REPEAT</b> with maximum efficiency.
+ </div>
+ <div>
+ To directly use this <i>z</i> value, rather than simply passing it to another macro, see <b>BOOST_PP_ENUM_TRAILING_<i>z</i></b>.
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li>BOOST_PP_ENUM_TRAILING_z</li>
+ <li>BOOST_PP_LIMIT_REPEAT</li>
+ </ul>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <boost/preprocessor/repetition/enum_trailing.hpp>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+#include <boost/preprocessor/repetition/enum_trailing.hpp>
+
+#define TEXT(z, n, text) text
+
+template<class BOOST_PP_ENUM_TRAILING(3, TEXT, class)>
+class X { };
+/*
+ expands to...
+
+template<class, class, class, class>
+class X { };
+*/
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/ref/enum_trailing_params.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/ref/enum_trailing_params.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,66 @@
+<html>
+<head>
+ <title>BOOST_PP_ENUM_TRAILING_PARAMS</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_ENUM_TRAILING_PARAMS</b> macro generates a comma-separated list of parameters with a leading comma.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_ENUM_TRAILING_PARAMS</b>(<i>count</i>, <i>param</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>count</dt>
+ <dd>
+ The number of parameters to generate.
+ Valid values range from <i>0</i> to <b>BOOST_PP_LIMIT_REPEAT</b>.
+ </dd>
+ <dt>param</dt>
+ <dd>
+ The text of the parameter.
+ <b>BOOST_PP_ENUM_TRAILING_PARAMS</b> concatenates numbers ranging from <i>0</i> to <i>count</i> - <i>1</i>
+ to generate parameters.
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ This macro expands to the comma-separated sequence:
+ <div>
+ , <i>param</i> ## <i>0</i>, <i>param</i> ## <i>1</i>, ... <i>param</i> ## <i>count</i> - <i>1</i>
+ </div>
+ </div>
+ <div>
+ To use the <i>z</i> parameter passed from other macros that use <b>BOOST_PP_REPEAT</b>, see <b>BOOST_PP_ENUM_TRAILING_PARAMS_Z</b>.
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li>BOOST_PP_ENUM_TRAILING_PARAMS_Z</li>
+ <li>BOOST_PP_LIMIT_REPEAT</li>
+ </ul>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <boost/preprocessor/repetition/enum_trailing_params.hpp>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+#include <boost/preprocessor/repetition/enum_trailing_params.hpp>
+
+class X BOOST_PP_ENUM_TRAILING_PARAMS(2, class T)
+ // expands to class X, class T0, class T1, class T2
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/ref/enum_trailing_params_z.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/ref/enum_trailing_params_z.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,81 @@
+<html>
+<head>
+ <title>BOOST_PP_ENUM_TRAILING_PARAMS_Z</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_ENUM_TRAILING_PARAMS_Z</b> macro generates a comma-separated list of parameters with a leading comma.
+ It reenters <b>BOOST_PP_REPEAT</b> with maximum efficiency.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_ENUM_TRAILING_PARAMS_Z</b>(<i>z</i>, <i>count</i>, <i>param</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>z</dt>
+ <dd>
+ The next available <b>BOOST_PP_REPEAT</b> dimension.
+ </dd>
+ <dt>count</dt>
+ <dd>
+ The number of parameters to generate.
+ Valid values range from <i>0</i> to <b>BOOST_PP_LIMIT_REPEAT</b>.
+ </dd>
+ <dt>param</dt>
+ <dd>
+ The text of the parameter.
+ <b>BOOST_PP_ENUM_TRAILING_PARAMS_Z</b> concatenates numbers ranging from <i>0</i> to <i>count</i> - <i>1</i>
+ to generate parameters.
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ This macro expands to the comma-separated sequence:
+ <div>
+ , <i>param</i> ## <i>0</i>, <i>param</i> ## <i>1</i>, ... <i>param</i> ## <i>count</i> - <i>1</i>
+ </div>
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li>BOOST_PP_ENUM_TRAILING_PARAMS</li>
+ <li>BOOST_PP_LIMIT_REPEAT</li>
+ </ul>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <boost/preprocessor/repetition/enum_trailing_params.hpp>
+ </div>
+ <h4>Sample Code</h4>
+<div id="sample"><pre>
+#include <boost/preprocessor/repetition/enum_trailing_params.hpp>
+#include <boost/preprocessor/repetition/repeat.hpp>
+
+#define MACRO(z, n, _) \
+ template< \
+ class BOOST_PP_ENUM_TRAILING_PARAMS_Z(z, n, class T) \
+ > class X ## n { \
+ /* ... */ \
+ }; \
+ /**/
+
+BOOST_PP_REPEAT(2, MACRO, nil)
+/*
+ expands to...
+ template<class> class X0 { };
+ template<class, class T0> class X1 { };
+*/
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/ref/enum_trailing_z.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/ref/enum_trailing_z.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,96 @@
+<html>
+<head>
+ <title>BOOST_PP_ENUM_TRAILING_z</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_ENUM_TRAILING_<i>z</i></b> macro represents a reentry into the <b>BOOST_PP_ENUM_TRAILING</b> repetition construct.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_ENUM_TRAILING_</b> ## <i>z</i>(<i>count</i>, <i>macro</i>, <i>data</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>z</dt>
+ <dd>
+ The next available <b>BOOST_PP_REPEAT</b> dimension.
+ </dd>
+ <dt>count</dt>
+ <dd>
+ The number of repetitious calls to <i>macro</i>.
+ Valid values range from <i>0</i> to <b>BOOST_PP_LIMIT_REPEAT</b>.
+ </dd>
+ <dt>macro</dt>
+ <dd>
+ A ternary operation of the form <i>macro</i>(<i>z</i>, <i>n</i>, <i>data</i>).
+ This macro is expanded by <b>BOOST_PP_ENUM</b> with the next available repetition depth,
+ the current repetition number, and the auxiliary <i>data</i> argument.
+ </dd>
+ <dt>data</dt>
+ <dd>
+ Auxiliary data passed to <i>macro</i>.
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ This macro expands to the sequence:
+ <div>
+ , <i>macro</i>(<i>z</i>, <i>0</i>, <i>data</i>), <i>macro</i>(<i>z</i>, <i>1</i>, <i>data</i>), ... <i>macro</i>(<i>z</i>, <i>count</i> - <i>1</i>, <i>data</i>)
+ </div>
+ </div>
+ <div>
+ At certain times, it may be necessary to perform the concatenation with <b>BOOST_PP_CAT</b> rather than the preprocessor token-pasting operator.
+ This happens when the <i>z</i> value is a macro invocation itself.
+ It needs a delay to allow it to expand.
+ The syntax in such a scenario becomes:
+ <div>
+ <b>BOOST_PP_CAT</b>(<b>BOOST_PP_ENUM_TRAILING_</b>, <i>z</i>)(<i>count</i>, <i>macro</i>, <i>data</i>)
+ </div>
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li>BOOST_PP_CAT</li>
+ <li>BOOST_PP_ENUM_TRAILING</li>
+ <li>BOOST_PP_LIMIT_REPEAT</li>
+ </ul>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <boost/preprocessor/repetition/enum_trailing.hpp>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+#include <boost/preprocessor/repetition/enum.hpp>
+#include <boost/preprocessor/repetition/enum_trailing.hpp>
+
+#define TEXT(z, n, text) text
+
+#define TTP(z, n, _) \
+ template< \
+ class BOOST_PP_ENUM_TRAILING_ ## z(n, TEXT, class) \
+ > \
+ class T ## n \
+ /**/
+
+BOOST_PP_ENUM(3, TTP, nil)
+ /*
+ expands to...
+ template<class> class T0,
+ template<class, class> class T1,
+ template<class, class, class> class T2
+ */
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/ref/enum_z.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/ref/enum_z.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,96 @@
+<html>
+<head>
+ <title>BOOST_PP_ENUM_z</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_ENUM_<i>z</i></b> macro represents a reentry into the <b>BOOST_PP_ENUM</b> repetition construct.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_ENUM_</b> ## <i>z</i>(<i>count</i>, <i>macro</i>, <i>data</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>z</dt>
+ <dd>
+ The next available <b>BOOST_PP_REPEAT</b> dimension.
+ </dd>
+ <dt>count</dt>
+ <dd>
+ The number of repetitious calls to <i>macro</i>.
+ Valid values range from <i>0</i> to <b>BOOST_PP_LIMIT_REPEAT</b>.
+ </dd>
+ <dt>macro</dt>
+ <dd>
+ A ternary operation of the form <i>macro</i>(<i>z</i>, <i>n</i>, <i>data</i>).
+ This macro is expanded by <b>BOOST_PP_ENUM</b> with the next available repetition depth,
+ the current repetition number, and the auxiliary <i>data</i> argument.
+ </dd>
+ <dt>data</dt>
+ <dd>
+ Auxiliary data passed to <i>macro</i>.
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ This macro expands to the sequence:
+ <div>
+ <i>macro</i>(<i>z</i>, <i>0</i>, <i>data</i>), <i>macro</i>(<i>z</i>, <i>1</i>, <i>data</i>), ... <i>macro</i>(<i>z</i>, <i>count</i> - <i>1</i>, <i>data</i>)
+ </div>
+ </div>
+ <div>
+ At certain times, it may be necessary to perform the concatenation with <b>BOOST_PP_CAT</b> rather than the preprocessor token-pasting operator.
+ This happens when the <i>z</i> value is a macro invocation itself.
+ It needs a delay to allow it to expand.
+ The syntax in such a scenario becomes:
+ <div>
+ <b>BOOST_PP_CAT</b>(<b>BOOST_PP_ENUM_</b>, <i>z</i>)(<i>count</i>, <i>macro</i>, <i>data</i>)
+ </div>
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li>BOOST_PP_CAT</li>
+ <li>BOOST_PP_ENUM</li>
+ <li>BOOST_PP_LIMIT_REPEAT</li>
+ </ul>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <boost/preprocessor/repetition/enum.hpp>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+#include <boost/preprocessor/arithmetic/inc.hpp>
+#include <boost/preprocessor/repetition/enum.hpp>
+
+#define TEXT(z, n, text) text
+
+#define TTP(z, n, _) \
+ template< \
+ BOOST_PP_ENUM_ ## z(BOOST_PP_INC(n), TEXT, class) \
+ > \
+ class T ## n \
+ /**/
+
+BOOST_PP_ENUM(3, TTP, nil)
+ /*
+ expands to...
+ template<class> class T0,
+ template<class, class> class T1,
+ template<class, class, class> class T2
+ */
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/ref/equal.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/ref/equal.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,64 @@
+<html>
+<head>
+ <title>BOOST_PP_EQUAL</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_EQUAL</b> macro compares two values for equality.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_EQUAL</b>(<i>x</i>, <i>y</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>x</dt>
+ <dd>
+ The left operand of the comparison.
+ Valid values range from <i>0</i> to <b>BOOST_PP_LIMIT_MAG</b>.
+ </dd>
+ <dt>y</dt>
+ <dd>
+ The right operand of the comparison.
+ Valid values range from <i>0</i> to <b>BOOST_PP_LIMIT_MAG</b>.
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ If <i>x</i> is equal to <i>y</i>, this macro expands to <i>1</i>.
+ Otherwise, it expands to <i>0</i>.
+ </div>
+ <div>
+ Previously, this macro could not be used inside <b>BOOST_PP_WHILE</b>.
+ There is no longer any such restriction because this macro no longer uses <b>BOOST_PP_WHILE</b>.
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li>BOOST_PP_EQUAL_D</li>
+ <li>BOOST_PP_LIMIT_MAG</li>
+ </ul>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <boost/preprocessor/comparison/equal.hpp>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+#include <boost/preprocessor/comparison/equal.hpp>
+
+BOOST_PP_EQUAL(4, 3) // expands to 0
+BOOST_PP_EQUAL(5, 5) // expands to 1
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/ref/equal_d.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/ref/equal_d.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,69 @@
+<html>
+<head>
+ <title>BOOST_PP_EQUAL_D</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_EQUAL_D</b> macro compares two values for equality.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_EQUAL_D</b>(<i>d</i>, <i>x</i>, <i>y</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>d</dt>
+ <dd>
+ This argument is ignored.
+ </dd>
+ <dt>x</dt>
+ <dd>
+ The left operand of the comparison.
+ Valid values range from <i>0</i> to <b>BOOST_PP_LIMIT_MAG</b>.
+ </dd>
+ <dt>y</dt>
+ <dd>
+ The right operand of the comparison.
+ Valid values range from <i>0</i> to <b>BOOST_PP_LIMIT_MAG</b>.
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ If <i>x</i> is equal to <i>y</i>, this macro expands to <i>1</i>.
+ Otherwise, it expands to <i>0</i>.
+ </div>
+ <div>
+ This macro is deprecated.
+ It only exists for backward compatibility.
+ Use <b>BOOST_PP_EQUAL</b> instead.
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li>BOOST_PP_EQUAL</li>
+ <li>BOOST_PP_LIMIT_MAG</li>
+ </ul>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <boost/preprocessor/comparison/equal.hpp>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+#include <boost/preprocessor/comparison/equal.hpp>
+
+BOOST_PP_EQUAL_D(1, 4, 3) // expands to 0
+BOOST_PP_EQUAL_D(1, 5, 5) // expands to 1
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/ref/esbp.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/ref/esbp.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,65 @@
+<html>
+<head>
+ <title>BOOST_PP_ENUM_BINARY_PARAMS</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_ENUM_SHIFTED_BINARY_PARAMS</b> macro generates a comma-separated, shifted list of binary parameters.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_ENUM_SHIFTED_BINARY_PARAMS</b>(<i>count</i>, <i>p1</i>, <i>p2</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>count</dt>
+ <dd>
+ The number of parameters to generate.
+ Valid values range from <i>0</i> to <b>BOOST_PP_LIMIT_REPEAT</b>.
+ </dd>
+ <dt>p1</dt>
+ <dd>
+ The text of the first part of the parameter.
+ <b>BOOST_PP_ENUM_SHIFTED_BINARY_PARAMS</b> concatenates numbers ranging from <i>0</i> to <i>count</i> - <i>1</i>
+ to generate parameters.
+ </dd>
+ <dt>p2</dt>
+ <dd>
+ The text of the first part of the parameter.
+ <b>BOOST_PP_ENUM_SHIFTED_BINARY_PARAMS</b> concatenates numbers ranging from <i>0</i> to <i>count</i> - <i>1</i>
+ to generate parameters.
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ This macro expands to the comma-separated sequence:
+ <div>
+ <i>p1</i> ## <i>1</i> <i>p2</i> ## <i>1</i>, <i>p1</i> ## <i>2</i> <i>p2</i> ## <i>2</i>, ... <i>p1</i> ## <i>count</i> - <i>1</i> <i>p2</i> ## <i>count</i> - <i>1</i>
+ </div>
+ </div>
+ <div>
+ To use the <i>z</i> parameter passed from other macros that use <b>BOOST_PP_REPEAT</b>, see <b>BOOST_PP_ENUM_SHIFTED_BINARY_PARAMS_Z</b>.
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li>BOOST_PP_ENUM_SHIFTED_BINARY_PARAMS_Z</li>
+ <li>BOOST_PP_LIMIT_REPEAT</li>
+ </ul>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <boost/preprocessor/repetition/enum_shifted_binary_params.hpp>
+ </div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/ref/esbpz.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/ref/esbpz.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,67 @@
+<html>
+<head>
+ <title>BOOST_PP_ENUM_SHIFTED_BINARY_PARAMS_Z</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_ENUM_SHIFTED_BINARY_PARAMS_Z</b> macro generates a comma-separated list, shifted of binary parameters.
+ It reenters <b>BOOST_PP_REPEAT</b> with maximum efficiency.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_ENUM_SHIFTED_BINARY_PARAMS_Z</b>(<i>z</i>, <i>count</i>, <i>p1</i>, <i>p2</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>z</dt>
+ <dd>
+ The next available <b>BOOST_PP_REPEAT</b> dimension.
+ </dd>
+ <dt>count</dt>
+ <dd>
+ The number of parameters to generate.
+ Valid values range from <i>0</i> to <b>BOOST_PP_LIMIT_REPEAT</b>.
+ </dd>
+ <dt>p1</dt>
+ <dd>
+ The text of the first part of the parameter.
+ <b>BOOST_PP_ENUM_SHIFTED_BINARY_PARAMS</b> concatenates numbers ranging from <i>0</i> to <i>count</i> - <i>1</i>
+ to generate parameters.
+ </dd>
+ <dt>p2</dt>
+ <dd>
+ The text of the first part of the parameter.
+ <b>BOOST_PP_ENUM_SHIFTED_BINARY_PARAMS</b> concatenates numbers ranging from <i>0</i> to <i>count</i> - <i>1</i>
+ to generate parameters.
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ This macro expands to the comma-separated sequence:
+ <div>
+ <i>p1</i> ## <i>1</i> <i>p2</i> ## <i>1</i>, <i>p1</i> ## <i>2</i> <i>p2</i> ## <i>2</i>, ... <i>p1</i> ## <i>count</i> - <i>1</i> <i>p2</i> ## <i>count</i> - <i>1</i>
+ </div>
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li>BOOST_PP_ENUM_SHIFTED_BINARY_PARAMS</li>
+ <li>BOOST_PP_LIMIT_REPEAT</li>
+ </ul>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <boost/preprocessor/repetition/enum_shifted_binary_params.hpp>
+ </div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/ref/etbp.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/ref/etbp.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,83 @@
+<html>
+<head>
+ <title>BOOST_PP_ENUM_TRAILING_BINARY_PARAMS</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_ENUM_TRAILING_BINARY_PARAMS</b> macro generates a comma-separated list of binary parameters with a leading comma.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_ENUM_TRAILING_BINARY_PARAMS</b>(<i>count</i>, <i>p1</i>, <i>p2</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>count</dt>
+ <dd>
+ The number of parameters to generate.
+ Valid values range from <i>0</i> to <b>BOOST_PP_LIMIT_REPEAT</b>.
+ </dd>
+ <dt>p1</dt>
+ <dd>
+ The text of the first part of the parameter.
+ <b>BOOST_PP_ENUM_TRAILING_BINARY_PARAMS</b> concatenates numbers ranging from <i>0</i> to <i>count</i> - <i>1</i>
+ to generate parameters.
+ </dd>
+ <dt>p2</dt>
+ <dd>
+ The text of the first part of the parameter.
+ <b>BOOST_PP_ENUM_TRAILING_BINARY_PARAMS</b> concatenates numbers ranging from <i>0</i> to <i>count</i> - <i>1</i>
+ to generate parameters.
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ This macro expands to the comma-separated sequence:
+ <div>
+ , <i>p1</i> ## <i>0</i> <i>p2</i> ## <i>0</i>, <i>p1</i> ## <i>1</i> <i>p2</i> ## <i>1</i>, ... <i>p1</i> ## <i>count</i> - <i>1</i> <i>p2</i> ## <i>count</i> - <i>1</i>
+ </div>
+ </div>
+ <div>
+ To use the <i>z</i> parameter passed from other macros that use <b>BOOST_PP_REPEAT</b>, see <b>BOOST_PP_ENUM_TRAILING_BINARY_PARAMS_Z</b>.
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li>BOOST_PP_ENUM_TRAILING_BINARY_PARAMS_Z</li>
+ <li>BOOST_PP_LIMIT_REPEAT</li>
+ </ul>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <boost/preprocessor/repetition/enum_trailing_binary_params.hpp>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+#include <boost/preprocessor/facilities/intercept.hpp>
+#include <boost/preprocessor/repetition/enum_trailing_binary_params.hpp>
+
+template<class X BOOST_PP_ENUM_TRAILING_BINARY_PARAMS(4, class A, = X BOOST_PP_INTERCEPT)>
+struct sample {
+ // ...
+};
+
+/* expands to...
+
+template<class X, class A0 = X, class A1 = X, class A2 = X, class A3 = X>
+struct sample {
+ // ...
+}
+*/
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/ref/etbpz.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/ref/etbpz.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,67 @@
+<html>
+<head>
+ <title>BOOST_PP_ENUM_TRAILING_BINARY_PARAMS_Z</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_ENUM_TRAILING_BINARY_PARAMS_Z</b> macro generates a comma-separated list of binary parameters with a leading comma.
+ It reenters <b>BOOST_PP_REPEAT</b> with maximum efficiency.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_ENUM_TRAILING_BINARY_PARAMS_Z</b>(<i>z</i>, <i>count</i>, <i>p1</i>, <i>p2</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>z</dt>
+ <dd>
+ The next available <b>BOOST_PP_REPEAT</b> dimension.
+ </dd>
+ <dt>count</dt>
+ <dd>
+ The number of parameters to generate.
+ Valid values range from <i>0</i> to <b>BOOST_PP_LIMIT_REPEAT</b>.
+ </dd>
+ <dt>p1</dt>
+ <dd>
+ The text of the first part of the parameter.
+ <b>BOOST_PP_ENUM_TRAILING_BINARY_PARAMS_Z</b> concatenates numbers ranging from <i>0</i> to <i>count</i> - <i>1</i>
+ to generate parameters.
+ </dd>
+ <dt>p2</dt>
+ <dd>
+ The text of the first part of the parameter.
+ <b>BOOST_PP_ENUM_TRAILING_BINARY_PARAMS_Z</b> concatenates numbers ranging from <i>0</i> to <i>count</i> - <i>1</i>
+ to generate parameters.
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ This macro expands to the comma-separated sequence:
+ <div>
+ , <i>p1</i> ## <i>0</i> <i>p2</i> ## <i>0</i>, <i>p1</i> ## <i>1</i> <i>p2</i> ## <i>1</i>, ... <i>p1</i> ## <i>count</i> - <i>1</i> <i>p2</i> ## <i>count</i> - <i>1</i>
+ </div>
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li>BOOST_PP_ENUM_TRAILING_BINARY_PARAMS</li>
+ <li>BOOST_PP_LIMIT_REPEAT</li>
+ </ul>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <boost/preprocessor/repetition/enum_trailing_binary_params.hpp>
+ </div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/ref/expand.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/ref/expand.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,67 @@
+<html>
+<head>
+ <title>BOOST_PP_EXPAND</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_EXPAND</b> macro performs a double macro-expansion on its argument.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_EXPAND</b>(<i>x</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>x</dt>
+ <dd>
+ The argument to be expanded twice.
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ This macro is useful when a delay is necessary to produce the correct semantics of a macro invocation.
+ For example, when a macro expands to an argument list to another macro.
+ This macro will expand the the argument list on the first pass, and then rescan to expand any more macros.
+ </div>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <boost/preprocessor/facilities/expand.hpp>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+#include <boost/preprocessor/control/if.hpp>
+#include <boost/preprocessor/facilities/expand.hpp>
+
+#define MACRO(a, b, c) (a)(b)(c)
+#define ARGS() (1, 2, 3)
+
+BOOST_PP_EXPAND(MACRO ARGS()) // expands to (1)(2)(3)
+
+#define SAMPLE(n) \
+ BOOST_PP_EXPAND( \
+ MACRO \
+ BOOST_PP_IF( \
+ n, \
+ (x, y, z), \
+ (a, b, c) \
+ ) \
+ ) \
+ /**/
+
+SAMPLE(0) // expands to (a)(b)(c)
+SAMPLE(1) // expands to (x)(y)(z)
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/ref/expr_if.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/ref/expr_if.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,70 @@
+<html>
+<head>
+ <title>BOOST_PP_EXPR_IF</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_EXPR_IF</b> macro expands to its second argument if its first argument is non-zero or expands to nothing otherwise.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_EXPR_IF</b>(<i>cond</i>, <i>expr</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>cond</dt>
+ <dd>
+ The condition that determines if the result is <i>expr</i> or nothing.
+ Valid values range from <i>0</i> to <b>BOOST_PP_LIMIT_MAG</b>.
+ </dd>
+ <dt>expr</dt>
+ <dd>
+ The result of the expansion if <i>cond</i> is non-zero.
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ This macro performs a boolean conversion on its first argument.
+ If that conversion is unnecessary, use <b>BOOST_PP_EXPR_IIF</b> instead.
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li>BOOST_PP_EXPR_IIF</li>
+ <li>BOOST_PP_LIMIT_MAG</li>
+ </ul>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <boost/preprocessor/control/expr_if.hpp>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+#include <boost/preprocessor/control/expr_if.hpp>
+#include <boost/preprocessor/tuple/elem.hpp>
+
+#define CV(n) \
+ BOOST_PP_EXPR_IF( \
+ n, \
+ BOOST_PP_TUPLE_ELEM( \
+ 4, n, \
+ (..., const, volatile, const volatile) \
+ ) \
+ ) \
+ /**/
+
+CV(0) // expands to nothing
+CV(1) // expands to const
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/ref/expr_iif.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/ref/expr_iif.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,67 @@
+<html>
+<head>
+ <title>BOOST_PP_EXPR_IIF</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_EXPR_IIF</b> macro expands to its second argument if its first argument is <i>1</i> and expands to nothing if its first argument is <i>0</i>.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_EXPR_IIF</b>(<i>bit</i>, <i>expr</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>bit</dt>
+ <dd>
+ The condition that determines if the result is <i>expr</i> or nothing.
+ This value must expand to <i>0</i> or </i>1</i>.
+ </dd>
+ <dt>expr</dt>
+ <dd>
+ The result of the expansion if <i>bit</i> is <i>1</i>.
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ This macro <i>does not</i> perform a boolean conversion on its first argument.
+ If that conversion is necessary, use <b>BOOST_PP_EXPR_IF</b> instead.
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li>BOOST_PP_EXPR_IF</li>
+ <li>BOOST_PP_LIMIT_MAG</li>
+ </ul>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <boost/preprocessor/control/expr_iif.hpp>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+#include <boost/preprocessor/logical/and.hpp>
+#include <boost/preprocessor/control/expr_iif.hpp>
+
+#define INSERT_AND(p, q, text) \
+ BOOST_PP_EXPR_IIF( \
+ BOOST_PP_AND(p, q), \
+ text \
+ ) \
+ /**/
+
+INSERT_AND(2, 3, abc) // expands to abc
+INSERT_AND(0, 7, xyz) // expands to nothing
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/ref/filename_x.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/ref/filename_x.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,52 @@
+<html>
+<head>
+ <title>BOOST_PP_FILENAME_x</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_FILENAME_<i>x</i></b> macro is a user-defined <i>named external argument</i> used by <b>BOOST_PP_ITERATE</b>.
+ It denotes the file to be iterated over.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #define <b>BOOST_PP_FILENAME_<i>x</i></b> <i>filename</i>
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>x</dt>
+ <dd>
+ The iteration depth of the next <i>file-iteration</i>.
+ This value <i>must</i> be the current iteration depth + <i>1</i>.
+ </dd>
+ <dt>filename</dt>
+ <dd>
+ A quoted or angle-bracketed filename to used as the target of a <i>file-iteration</i>.
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ This macro is part of the secondary method of passing arguments to <b>BOOST_PP_ITERATE</b>.
+ The other part is <b>BOOST_PP_ITERATION_LIMITS</b>.
+ </div>
+ <div>
+ This macro is automatically undefined for reuse by a call to <b>BOOST_PP_ITERATE</b>.
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li>BOOST_PP_ITERATE</li>
+ <li>BOOST_PP_ITERATION_LIMITS</li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/ref/for.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/ref/for.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,105 @@
+<html>
+<head>
+ <title>BOOST_PP_FOR</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_FOR</b> macro represents a generalized horizontal repetition construct.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_FOR</b>(<i>state</i>, <i>pred</i>, <i>op</i>, <i>macro</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>state</dt>
+ <dd>
+ The initial state.
+ </dd>
+ <dt>pred</dt>
+ <dd>
+ A binary predicate of the form <i>pred</i>(<i>r</i>, <i>state</i>).
+ This macro must expand to an integer in the range of <i>0</i> to <b>BOOST_PP_LIMIT_MAG</b>.
+ <b>BOOST_PP_FOR</b> repeatedly expands <i>macro</i> while this predicate returns non-zero.
+ This macro is called with the next available <b>BOOST_PP_FOR</b> repetition and the current <i>state</i>.
+ </dd>
+ <dt>op</dt>
+ <dd>
+ A binary operation of the form <i>op</i>(<i>r</i>, <i>state</i>).
+ This operation is expanded by <b>BOOST_PP_FOR</b> with the next available <b>BOOST_PP_FOR</b> repetition and the current <i>state</i>.
+ This macro is repeatedly applied to the <i>state</i>, each time producing a new <i>state</i>, until <i>pred</i> returns <i>0</i>.
+ </dd>
+ <dt>macro</dt>
+ <dd>
+ A binary macro of the form <i>macro</i>(<i>r</i>, <i>state</i>).
+ This macro is expanded by <b>BOOST_PP_FOR</b> with the next available <b>BOOST_PP_FOR</b> repetition and the current <i>state</i>.
+ This macro is is repeated by <b>BOOST_PP_FOR</b> until <i>pred</i> returns <i>0</i>.
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ This macro expands to the sequence:
+ <div>
+ <i>macro</i>(<i>r</i>, <i>state</i>) <i>macro</i>(<i>r</i>, <i>op</i>(<i>r</i>, <i>state</i>)) ... <i>macro</i>(<i>r</i>, <i>op</i>(<i>r</i>, ... <i>op</i>(<i>r</i>, <i>state</i>) ... ))
+ </div>
+ </div>
+ <div>
+ The <i>r</i> value that is passed to <i>pred</i>, <i>op</i>, and <i>macro</i> represents the next available <b>BOOST_PP_FOR</b> repetition.
+ Other macros that have <b>_R</b> suffix variants internally use <b>BOOST_PP_FOR</b>--for example, <b>BOOST_PP_LIST_FOR_EACH</b> and <b>BOOST_PP_LIST_FOR_EACH_R</b>.
+ Using these <b>_R</b> versions is not strictly necessary, but passing the <i>r</i> value (that is passed to <i>pred</i>, <i>op</i>, and <i>macro</i>) to these macros allows them to reenter <b>BOOST_PP_FOR</b> with maximum efficiency.
+ </div>
+ <div>
+ To directly use this <i>r</i> value, rather than simply passing it to another macro, see <b>BOOST_PP_FOR_<i>r</i></b>.
+ </div>
+ <div>
+ Previously, this macro could not be used recursively inside <b>BOOST_PP_FOR</b>.
+ This limitation no longer exists, as the library can automatically detect the next available <b>BOOST_PP_FOR</b> repetition.
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li>BOOST_PP_FOR_r</li>
+ <li>BOOST_PP_LIMIT_MAG</li>
+ </ul>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <boost/preprocessor/repetition/for.hpp>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+#include <boost/preprocessor/arithmetic/inc.hpp>
+#include <boost/preprocessor/comparison/not_equal.hpp>
+#include <boost/preprocessor/repetition/for.hpp>
+#include <boost/preprocessor/tuple/elem.hpp>
+
+#define PRED(r, state) \
+ BOOST_PP_NOT_EQUAL( \
+ BOOST_PP_TUPLE_ELEM(2, 0, state), \
+ BOOST_PP_INC(BOOST_PP_TUPLE_ELEM(2, 1, state)) \
+ ) \
+ /**/
+
+#define OP(r, state) \
+ ( \
+ BOOST_PP_INC(BOOST_PP_TUPLE_ELEM(2, 0, state)), \
+ BOOST_PP_TUPLE_ELEM(2, 1, state) \
+ ) \
+ /**/
+
+#define MACRO(r, state) BOOST_PP_TUPLE_ELEM(2, 0, state)
+
+BOOST_PP_FOR((5, 10), PRED, OP, MACRO) // expands to 5 6 7 8 9 10
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/ref/for_r.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/ref/for_r.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,155 @@
+<html>
+<head>
+ <title>BOOST_PP_FOR_r</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_FOR_<i>r</i></b> macro represents a reentry into the <b>BOOST_PP_FOR</b> repetition construct.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_FOR_</b> ## <i>r</i>(<i>state</i>, <i>pred</i>, <i>op</i>, <i>macro</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>r</dt>
+ <dd>
+ The next available <b>BOOST_PP_FOR</b> repetition.
+ </dd>
+ <dt>state</dt>
+ <dd>
+ The initial state.
+ </dd>
+ <dt>pred</dt>
+ <dd>
+ A binary predicate of the form <i>pred</i>(<i>r</i>, <i>state</i>).
+ This macro must expand to an integer in the range of <i>0</i> to <b>BOOST_PP_LIMIT_MAG</b>.
+ <b>BOOST_PP_FOR</b> repeatedly expands <i>macro</i> while this predicate returns non-zero.
+ This macro is called with the next available <b>BOOST_PP_FOR</b> repetition and the current <i>state</i>.
+ </dd>
+ <dt>op</dt>
+ <dd>
+ A binary operation of the form <i>op</i>(<i>r</i>, <i>state</i>).
+ This operation is expanded by <b>BOOST_PP_FOR</b> with the next available <b>BOOST_PP_FOR</b> repetition and the current <i>state</i>.
+ This macro is repeatedly applied to the <i>state</i>, each time producing a new <i>state</i>, until <i>pred</i> returns <i>0</i>.
+ </dd>
+ <dt>macro</dt>
+ <dd>
+ A binary macro of the form <i>macro</i>(<i>r</i>, <i>state</i>).
+ This macro is expanded by <b>BOOST_PP_FOR</b> with the next available <b>BOOST_PP_FOR</b> repetition and the current <i>state</i>.
+ This macro is is repeated by <b>BOOST_PP_FOR</b> until <i>pred</i> returns <i>0</i>.
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ This macro expands to the sequence:
+ <div>
+ <i>macro</i>(<i>r</i>, <i>state</i>) <i>macro</i>(<i>r</i>, <i>op</i>(<i>r</i>, <i>state</i>)) ... <i>macro</i>(<i>r</i>, <i>op</i>(<i>r</i>, ... <i>op</i>(<i>r</i>, <i>state</i>) ... ))
+ </div>
+ </div>
+ <div>
+ At certain times, it may be necessary to perform the concatenation with <b>BOOST_PP_CAT</b> rather than the preprocessor token-pasting operator.
+ This happens when the <i>r</i> value is a macro invocation itself.
+ It needs a delay to allow it to expand.
+ The syntax in such a scenario becomes:
+ <div>
+ <b>BOOST_PP_CAT</b>(<b>BOOST_PP_FOR_</b>, <i>r</i>)(<i>state</i>, <i>pred</i>, <i>op</i>, <i>macro</i>)
+ </div>
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li>BOOST_PP_CAT</li>
+ <li>BOOST_PP_FOR</li>
+ <li>BOOST_PP_LIMIT_MAG</li>
+ </ul>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <boost/preprocessor/repetition/for.hpp>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+#include <boost/preprocessor/arithmetic/dec.hpp>
+#include <boost/preprocessor/arithmetic/inc.hpp>
+#include <boost/preprocessor/comparison/not_equal.hpp>
+#include <boost/preprocessor/punctuation/comma_if.hpp>
+#include <boost/preprocessor/repetition/for.hpp>
+#include <boost/preprocessor/tuple/elem.hpp>
+
+#define PRED(r, state) \
+ BOOST_PP_NOT_EQUAL( \
+ BOOST_PP_TUPLE_ELEM(4, 0, state), \
+ BOOST_PP_INC( \
+ BOOST_PP_TUPLE_ELEM(4, 1, state) \
+ ) \
+ ) \
+ /**/
+
+#define OP(r, state) \
+ ( \
+ BOOST_PP_INC( \
+ BOOST_PP_TUPLE_ELEM(4, 0, state) \
+ ), \
+ BOOST_PP_TUPLE_ELEM(4, 1, state), \
+ BOOST_PP_TUPLE_ELEM(4, 2, state), \
+ BOOST_PP_INC( \
+ BOOST_PP_TUPLE_ELEM(4, 3, state) \
+ ) \
+ ) \
+ /**/
+
+#define MACRO(r, state) \
+ BOOST_PP_COMMA_IF( \
+ BOOST_PP_TUPLE_ELEM(4, 3, state) \
+ ) template< \
+ BOOST_PP_FOR_ ## r( \
+ (0, BOOST_PP_TUPLE_ELEM(4, 0, state), _, 0), \
+ PRED_2, OP, MACRO_2 \
+ ) \
+ > class BOOST_PP_CAT( \
+ BOOST_PP_TUPLE_ELEM(4, 2, state), \
+ BOOST_PP_TUPLE_ELEM(4, 0, state) \
+ ) \
+ /**/
+
+#define PRED_2(r, state) \
+ BOOST_PP_NOT_EQUAL( \
+ BOOST_PP_TUPLE_ELEM(4, 0, state), \
+ BOOST_PP_TUPLE_ELEM(4, 1, state) \
+ ) \
+ /**/
+
+#define MACRO_2(r, state) \
+ BOOST_PP_COMMA_IF( \
+ BOOST_PP_TUPLE_ELEM(4, 0, state) \
+ ) class \
+ /**/
+
+#define TEMPLATE_TEMPLATE(low, high, name) \
+ BOOST_PP_FOR( \
+ (low, high, name, 0), \
+ PRED, OP, MACRO \
+ ) \
+ /**/
+
+TEMPLATE_TEMPLATE(2, 4, T)
+/*
+ expands to...
+ template<class, class> class T2,
+ template<class, class, class> class T3,
+ template<class, class, class, class> class T4
+*/
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/ref/frame_finish.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/ref/frame_finish.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,42 @@
+<html>
+<head>
+ <title>BOOST_PP_FRAME_FINISH</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_FRAME_FINISH</b> macro expands to the upper bound of an absolute <i>file-iteration</i> depth.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_FRAME_FINISH</b>(<i>i</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>i</dt>
+ <dd>
+ The absolute depth of the frame whose upper bound is to be retreived.
+ Valid values range from <i>1</i> to <b>BOOST_PP_ITERATION_DEPTH</b>().
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ This macro is only valid when a <i>file-iteration</i> is in progress.
+ </div>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <boost/preprocessor/iteration/iterate.hpp>
+ </div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/ref/frame_flags.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/ref/frame_flags.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,42 @@
+<html>
+<head>
+ <title>BOOST_PP_FRAME_FLAGS</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_FRAME_FLAGS</b> macro expands to the flags associated with an absolute <i>file-iteration</i> depth.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_FRAME_FLAGS</b>(<i>i</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>i</dt>
+ <dd>
+ The absolute depth of the frame whose flags are to be retreived.
+ Valid values range from <i>1</i> to <b>BOOST_PP_ITERATION_DEPTH</b>().
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ This macro is only valid when a <i>file-iteration</i> is in progress.
+ </div>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <boost/preprocessor/iteration/iterate.hpp>
+ </div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/ref/frame_iteration.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/ref/frame_iteration.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,73 @@
+<html>
+<head>
+ <title>BOOST_PP_FRAME_ITERATION</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_FRAME_ITERATION</b> macro expands to the iteration value of an absolute <i>file-iteration</i> depth.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_FRAME_ITERATION</b>(<i>i</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>i</dt>
+ <dd>
+ The absolute depth of the frame whose iteration value is to be retreived.
+ Valid values range from <i>1</i> to <b>BOOST_PP_ITERATION_DEPTH</b>().
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ This macro is only valid when a <i>file-iteration</i> is in progress.
+ </div>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <boost/preprocessor/iteration/iterate.hpp>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+// file.h
+#if !BOOST_PP_IS_ITERATING
+
+ #ifndef FILE_H_
+ #define FILE_H_
+
+ #include <boost/preprocessor/iteration/iterate.hpp>
+
+ #define BOOST_PP_ITERATION_PARAMS_1 (3, (1, 10, "file.h"))
+ #include BOOST_PP_ITERATE()
+
+ #endif
+
+#elif BOOST_PP_ITERATION_DEPTH() == 1
+
+ --
+ #define BOOST_PP_ITERATION_PARAMS_2 \
+ (3, (1, BOOST_PP_ITERATION(), "file.h")) \
+ /**/
+
+ #include BOOST_PP_ITERATE()
+
+#else
+
+ outer: BOOST_PP_FRAME_ITERATION(1)
+ inner: BOOST_PP_FRAME_ITERATION(2)
+
+#endif
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/ref/frame_start.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/ref/frame_start.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,42 @@
+<html>
+<head>
+ <title>BOOST_PP_FRAME_START</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_FRAME_START</b> macro expands to the lower bound of an absolute <i>file-iteration</i> depth.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_FRAME_START</b>(<i>i</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>i</dt>
+ <dd>
+ The absolute depth of the frame whose lower bound is to be retreived.
+ Valid values range from <i>1</i> to <b>BOOST_PP_ITERATION_DEPTH</b>().
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ This macro is only valid when a <i>file-iteration</i> is in progress.
+ </div>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <boost/preprocessor/iteration/iterate.hpp>
+ </div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/ref/greater.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/ref/greater.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,65 @@
+<html>
+<head>
+ <title>BOOST_PP_GREATER</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_GREATER</b> macro compares two values for greater magnitude.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_GREATER</b>(<i>x</i>, <i>y</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>x</dt>
+ <dd>
+ The left operand of the comparison.
+ Valid values range from <i>0</i> to <b>BOOST_PP_LIMIT_MAG</b>.
+ </dd>
+ <dt>y</dt>
+ <dd>
+ The right operand of the comparison.
+ Valid values range from <i>0</i> to <b>BOOST_PP_LIMIT_MAG</b>.
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ If <i>x</i> is greater than <i>y</i>, this macro expands to <i>1</i>.
+ Otherwise, it expands to <i>0</i>.
+ </div>
+ <div>
+ Previously, this macro could not be used inside <b>BOOST_PP_WHILE</b>.
+ There is no longer any such restriction.
+ It is more efficient, however, to use <b>BOOST_PP_GREATER_D</b> in such a situation.
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li>BOOST_PP_GREATER_D</li>
+ <li>BOOST_PP_LIMIT_MAG</li>
+ </ul>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <boost/preprocessor/comparison/greater.hpp>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+#include <boost/preprocessor/comparison/greater.hpp>
+
+BOOST_PP_GREATER(4, 3) // expands to 1
+BOOST_PP_GREATER(5, 5) // expands to 0
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/ref/greater_d.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/ref/greater_d.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,69 @@
+<html>
+<head>
+ <title>BOOST_PP_GREATER_D</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_GREATER_D</b> macro compares two values for greater magnitude.
+ It reenters <b>BOOST_PP_WHILE</b> with maximum efficiency.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_GREATER_D</b>(<i>d</i>, <i>x</i>, <i>y</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>d</dt>
+ <dd>
+ The next available <b>BOOST_PP_WHILE</b> iteration.
+ </dd>
+ <dt>x</dt>
+ <dd>
+ The left operand of the comparison.
+ Valid values range from <i>0</i> to <b>BOOST_PP_LIMIT_MAG</b>.
+ </dd>
+ <dt>y</dt>
+ <dd>
+ The right operand of the comparison.
+ Valid values range from <i>0</i> to <b>BOOST_PP_LIMIT_MAG</b>.
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ If <i>x</i> is greater than <i>y</i>, this macro expands to <i>1</i>.
+ Otherwise, it expands to <i>0</i>.
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li>BOOST_PP_GREATER</li>
+ <li>BOOST_PP_LIMIT_MAG</li>
+ </ul>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <boost/preprocessor/comparison/greater.hpp>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+#include <boost/preprocessor/comparison/greater.hpp>
+#include <boost/preprocessor/list/filter.hpp>
+
+#define LIST (1, (2, (3, (4, (5, BOOST_PP_NIL)))))
+
+#define PRED(d, _, num) BOOST_PP_GREATER_D(d, num, 2)
+
+BOOST_PP_LIST_FILTER(PRED, nil, LIST) // expands to (3, (4, (5, BOOST_PP_NIL)))
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/ref/greater_equal.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/ref/greater_equal.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,65 @@
+<html>
+<head>
+ <title>BOOST_PP_GREATER_EQUAL</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_GREATER_EQUAL</b> macro compares two values for equality or greater magnitude.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_GREATER_EQUAL</b>(<i>x</i>, <i>y</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>x</dt>
+ <dd>
+ The left operand of the comparison.
+ Valid values range from <i>0</i> to <b>BOOST_PP_LIMIT_MAG</b>.
+ </dd>
+ <dt>y</dt>
+ <dd>
+ The right operand of the comparison.
+ Valid values range from <i>0</i> to <b>BOOST_PP_LIMIT_MAG</b>.
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ If <i>x</i> is greater than or equal to <i>y</i>, this macro expands to <i>1</i>.
+ Otherwise, it expands to <i>0</i>.
+ </div>
+ <div>
+ Previously, this macro could not be used inside <b>BOOST_PP_WHILE</b>.
+ There is no longer any such restriction.
+ It is more efficient, however, to use <b>BOOST_PP_GREATER_EQUAL_D</b> in such a situation.
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li>BOOST_PP_GREATER_EQUAL_D</li>
+ <li>BOOST_PP_LIMIT_MAG</li>
+ </ul>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <boost/preprocessor/comparison/greater_equal.hpp>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+#include <boost/preprocessor/comparison/greater_equal.hpp>
+
+BOOST_PP_GREATER_EQUAL(4, 3) // expands to 1
+BOOST_PP_GREATER_EQUAL(5, 5) // expands to 1
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/ref/greater_equal_d.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/ref/greater_equal_d.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,69 @@
+<html>
+<head>
+ <title>BOOST_PP_GREATER_EQUAL_D</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_GREATER_EQUAL_D</b> macro compares two values for equality or greater magnitude.
+ It reenters <b>BOOST_PP_WHILE</b> with maximum efficiency.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_GREATER_EQUAL_D</b>(<i>d</i>, <i>x</i>, <i>y</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>d</dt>
+ <dd>
+ The next available <b>BOOST_PP_WHILE</b> iteration.
+ </dd>
+ <dt>x</dt>
+ <dd>
+ The left operand of the comparison.
+ Valid values range from <i>0</i> to <b>BOOST_PP_LIMIT_MAG</b>.
+ </dd>
+ <dt>y</dt>
+ <dd>
+ The right operand of the comparison.
+ Valid values range from <i>0</i> to <b>BOOST_PP_LIMIT_MAG</b>.
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ If <i>x</i> is greater than or equal to <i>y</i>, this macro expands to <i>1</i>.
+ Otherwise, it expands to <i>0</i>.
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li>BOOST_PP_GREATER_EQUAL</li>
+ <li>BOOST_PP_LIMIT_MAG</li>
+ </ul>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <boost/preprocessor/comparison/greater_equal.hpp>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+#include <boost/preprocessor/comparison/greater_equal.hpp>
+#include <boost/preprocessor/list/filter.hpp>
+
+#define LIST (1, (2, (3, (4, (5, BOOST_PP_NIL)))))
+
+#define PRED(d, _, num) BOOST_PP_GREATER_EQUAL_D(d, num, 4)
+
+BOOST_PP_LIST_FILTER(PRED, nil, LIST) // expands to (4, (5, BOOST_PP_NIL))
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/ref/identity.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/ref/identity.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,57 @@
+<html>
+<head>
+ <title>BOOST_PP_IDENTITY</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_IDENTITY</b> macro expands to its argument when invoked.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_IDENTITY</b>(<i>item</i>)()
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>item</dt>
+ <dd>
+ The result of the expansion.
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ This macro is designed to be used with <b>BOOST_PP_IF</b> and <b>BOOST_PP_IIF</b> when only one of the clauses needs to be invoked.
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li>BOOST_PP_IF</li>
+ <li>BOOST_PP_IIF</li>
+ </ul>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <boost/preprocessor/facilities/identity.hpp>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+#include <boost/preprocessor/control/if.hpp>
+#include <boost/preprocessor/facilities/empty.hpp>
+#include <boost/preprocessor/facilities/identity.hpp>
+
+#define MACRO(n) BOOST_PP_IF(n, BOOST_PP_IDENTITY(x), BOOST_PP_EMPTY)()
+
+MACRO(0) // expands to nothing
+MACRO(1) // expands to x
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/ref/if.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/ref/if.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,63 @@
+<html>
+<head>
+ <title>BOOST_PP_IF</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_IF</b> macro chooses between to values based on a logical condition.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_IF</b>(<i>cond</i>, <i>t</i>, <i>f</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>cond</dt>
+ <dd>
+ The condition that determines if the result is <i>expr</i> or nothing.
+ Valid values range from <i>0</i> to <b>BOOST_PP_LIMIT_MAG</b>.
+ </dd>
+ <dt>t</dt>
+ <dd>
+ The result of the expansion if <i>cond</i> is non-zero.
+ </dd>
+ <dt>f</dt>
+ <dd>
+ The result of the expansion if <i>cond</i> is <i>0</i>.
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ This macro performs a boolean conversion on its first argument.
+ If that conversion is unnecessary, use <b>BOOST_PP_IIF</b> instead.
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li>BOOST_PP_IIF</li>
+ <li>BOOST_PP_LIMIT_MAG</li>
+ </ul>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <boost/preprocessor/control/if.hpp>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+#include <boost/preprocessor/control/if.hpp>
+
+BOOST_PP_IF(10, a, b) // expands to a
+BOOST_PP_IF(0, a, b) // expands to b
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/ref/iif.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/ref/iif.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,66 @@
+<html>
+<head>
+ <title>BOOST_PP_IIF</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_IIF</b> macro chooses between to values based on a bitwise condition.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_IIF</b>(<i>bit</i>, <i>t</i>, <i>f</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>bit</dt>
+ <dd>
+ The condition that determines if the result is <i>expr</i> or nothing.
+ This value must expand to <i>0</i> or <i>1</i>.
+ </dd>
+ <dt>t</dt>
+ <dd>
+ The result of the expansion if <i>bit</i> is <i>1</i>.
+ </dd>
+ <dt>f</dt>
+ <dd>
+ The result of the expansion if <i>bit</i> is <i>0</i>.
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ This macro <i>does not</i> perform a boolean conversion on its first argument.
+ If that conversion is necessary, use <b>BOOST_PP_IF</b> instead.
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li>BOOST_PP_IF</li>
+ <li>BOOST_PP_LIMIT_MAG</li>
+ </ul>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <boost/preprocessor/control/iif.hpp>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+#include <boost/preprocessor/control/iif.hpp>
+#include <boost/preprocessor/logical/or.hpp>
+
+#define OR_IF(p, q, t, f) BOOST_PP_IIF(BOOST_PP_OR(p, q), t, f)
+
+OR_IF(1, 0, abc, xyz) // expands to abc
+OR_IF(0, 0, abc, xyz) // expands to xyz
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/ref/inc.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/ref/inc.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,54 @@
+<html>
+<head>
+ <title>BOOST_PP_INC</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_INC</b> macro expands to one more than its argument.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_INC</b>(<i>x</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>x</dt>
+ <dd>
+ The value to be incremented.
+ Valid values range from <i>0</i> to <b>BOOST_PP_LIMIT_MAG</b>.
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ If <i>x</i> is <b>BOOST_PP_LIMIT_MAG</b>, the result is saturated to <b>BOOST_PP_LIMIT_MAG</b>.
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li>BOOST_PP_DEC</li>
+ <li>BOOST_PP_LIMIT_MAG</li>
+ </ul>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <boost/preprocessor/arithmetic/inc.hpp>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+#include <boost/preprocessor/arithmetic/inc.hpp>
+
+BOOST_PP_INC(BOOST_PP_INC(6)) // expands to 8
+BOOST_PP_INC(4) // expands to 5
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/ref/include_self.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/ref/include_self.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,101 @@
+<html>
+<head>
+ <title>BOOST_PP_INCLUDE_SELF</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_INCLUDE_SELF</b> macro includes a file indirectly.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b>BOOST_PP_INCLUDE_SELF</b>()
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>filename</dt>
+ <dd>
+ A quoted or angle-bracketed filename to be included by <b>BOOST_PP_INCLUDE_SELF</b>.
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ <b>BOOST_PP_INDIRECT_SELF</b> must be defined prior to using this macro.
+ </div>
+ <div>
+ Most preprocessors will not allow a file to directly include itself--even when the file protects itself from such a scenario.
+ This macro, in combination with <b>BOOST_PP_INDIRECT_SELF</b> allows a file to include itself indirectly.
+ </div>
+ <div>
+ While <b>BOOST_PP_INDIRECT_SELF</b> is being included, <b>BOOST_PP_INCLUDE_SELF</b> defines the macro <b>BOOST_PP_IS_SELFISH</b> to <i>1</i>.
+ When it returns from the inclusion, <b>BOOST_PP_IS_SELFISH</b> is undefined.
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li>BOOST_PP_INDIRECT_SELF</li>
+ <li>BOOST_PP_IS_SELFISH</li>
+ </ul>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <boost/preprocessor/iteration/self.hpp>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+// file.h
+#if !BOOST_PP_IS_SELFISH
+
+ #ifndef FILE_H_
+ #define FILE_H_
+
+ #include <boost/preprocessor/iteration/self.hpp>
+
+ #define NAME X
+ struct NAME {
+ // ...
+ #define BOOST_PP_INDIRECT_SELF "file.h"
+ #include BOOST_PP_INCLUDE_SELF()
+ };
+
+ #define NAME Y
+ struct NAME {
+ // ...
+ #define BOOST_PP_INDIRECT_SELF "file.h"
+ #include BOOST_PP_INCLUDE_SELF()
+ };
+
+ #define NAME Z
+ struct NAME {
+ // ...
+ #define BOOST_PP_INDIRECT_SELF "file.h"
+ #include BOOST_PP_INCLUDE_SELF()
+ };
+
+ #endif
+
+#else
+
+ inline bool validate(NAME* p) {
+ return true;
+ }
+
+ template<class T> bool validate(T* p) {
+ return dynamic_cast<NAME*>(p);
+ }
+
+ #undef NAME
+
+#endif
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/ref/indirect_self.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/ref/indirect_self.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,45 @@
+<html>
+<head>
+ <title>BOOST_PP_INDIRECT_SELF</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_INDIRECT_SELF</b> macro is a user-defined <i>named external argument</i> used by <b>BOOST_PP_INCLUDE_SELF</b>.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #define <b>BOOST_PP_INDIRECT_SELF</b> <i>filename</i>
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>filename</dt>
+ <dd>
+ A quoted or angle-bracketed filename to be included by <b>BOOST_PP_INCLUDE_SELF</b>.
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ Most preprocessors will not allow a file to directly include itself--even when the file protects itself from such a scenario.
+ This macro, in combination with <b>BOOST_PP_INCLUDE_SELF</b> allows a file to include itself indirectly.
+ </div>
+ <div>
+ This macro is automatically undefined for reuse by a call to <b>BOOST_PP_INCLUDE_SELF</b>.
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li>BOOST_PP_INCLUDE_SELF</li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/ref/intercept.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/ref/intercept.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,51 @@
+<html>
+<head>
+ <title>BOOST_PP_INTERCEPT</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_INTERCEPT</b> macro intercepts a numeric concatenation and expands to nothing.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_INTERCEPT</b>
+ </div>
+ <h4>Remarks</h4>
+ <div>
+ This macro is used to intercept concatenations performed by various other library constructs.
+ It is typically used after other text to prevent eat the concatenation expand to nothing.
+ This macro can only intercept integer constants in the range of <i>0</i> to <b>BOOST_PP_LIMIT_MAG</b>.
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li>BOOST_PP_LIMIT_MAG</li>
+ </ul>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <boost/preprocessor/facilities/intercept.hpp>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+#include <boost/preprocessor/facilities/intercept.hpp>
+#include <boost/preprocessor/repetition/enum_binary_params.hpp>
+
+BOOST_PP_ENUM_BINARY_PARAMS(3, class T, = U)
+// expands to class T0 = U0, class T1 = U1, class T2 = U2
+
+BOOST_PP_ENUM_BINARY_PARAMS(3, class T, = int BOOST_PP_INTERCEPT)
+// expands to class T0 = int, class T1 = int, class T2 = int
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/ref/is_iterating.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/ref/is_iterating.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,38 @@
+<html>
+<head>
+ <title>BOOST_PP_IS_ITERATING</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_IS_ITERATING</b> macro is defined when a <i>file-iteration</i> is in progress.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #if !defined(<b>BOOST_PP_IS_ITERATING</b>) // ...
+ </div>
+ <h4>Remarks</h4>
+ <div>
+ If a <i>file-iteration</i> is in progress, this macro is defined as <i>1</i>.
+ This means that the following will also work:
+ <div>
+ #if !<b>BOOST_PP_IS_ITERATING</b> // ...
+ </div>
+ </div>
+ <div>
+ This macro is defined to guard a file from infinite inclusion.
+ </div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/ref/is_selfish.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/ref/is_selfish.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,38 @@
+<html>
+<head>
+ <title>BOOST_PP_IS_SELFISH</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_IS_SELFISH</b> macro is defined when a <i>self-inclusion</i> is in progress.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #if !defined(<b>BOOST_PP_IS_SELFISH</b>) // ...
+ </div>
+ <h4>Remarks</h4>
+ <div>
+ If a <i>self-inclusion</i> is in progress, this macro is defined as <i>1</i>.
+ This means that the following will also work:
+ <div>
+ #if !<b>BOOST_PP_IS_SELFISH</b> // ...
+ </div>
+ </div>
+ <div>
+ This macro is defined to guard a file from infinite inclusion.
+ </div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/ref/iterate.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/ref/iterate.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,83 @@
+<html>
+<head>
+ <title>BOOST_PP_ITERATE</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_ITERATE</b> macro initiates a <i>file-iteration</i>.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b>BOOST_PP_ITERATE</b>()
+ </div>
+ <h4>Remarks</h4>
+ <div>
+ Arguments to this macro are passed as <i>external named arguments</i> in one of two
+ ways--either through <b>BOOST_PP_FILENAME_<i>x</i></b> and <b>BOOST_PP_ITERATION_LIMITS</b> <i>or</i>
+ through <b>BOOST_PP_ITERATION_PARAMS_<i>x</i></b>.
+ </div>
+ <div>
+ Three pieces of information are required to perform a <i>file-iteration</i>.
+ First, the name of a file to iterate over.
+ This is passed via <b>BOOST_PP_FILENAME_<i>x</i></b> <i>or</i> as part of <b>BOOST_PP_ITERATION_PARAMS_<i>x</i></b>.
+ The <i>file-iteration</i> mechanism will repeatedly include this file with iteration values ranging from a lower bound to an upper bound--the second and third <i>required</i> parameters.
+ These two boundaries are either passed through <b>BOOST_PP_ITERATION_LIMITS</b> <i>or</i> as part of <b>BOOST_PP_ITERATION_PARAMS_<i>x</i></b>.
+ </div>
+ <div>
+ Optionally, a fourth parameter may be passed that associates flags with an iteration.
+ These flags are primarily useful to distinguish one iteration from another in the same file.
+ This parameter can only be passed through <b>BOOST_PP_ITERATION_PARAMS_<i>x</i></b>.
+ </div>
+ <div>
+ While a <i>file-iteration</i> is in progress, <b>BOOST_PP_IS_ITERATING</b> is defined as <i>1</i>.
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li>BOOST_PP_FILENAME_x</li>
+ <li>BOOST_PP_IS_ITERATING</li>
+ <li>BOOST_PP_ITERATION_LIMITS</li>
+ <li>BOOST_PP_ITERATION_PARAMS_x</li>
+ </ul>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <boost/preprocessor/iteration/iterate.hpp>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+// file.h
+#if !BOOST_PP_IS_ITERATING
+
+ #ifndef FILE_H_
+ #define FILE_H_
+
+ #include <boost/preprocessor/iteration/iterate.hpp>
+
+ #define BOOST_PP_ITERATION_PARAMS_1 (3, (1, 10, "file.h"))
+ #include BOOST_PP_ITERATE()
+
+ #define BOOST_PP_FILENAME_1 "file.h"
+ #define BOOST_PP_ITERATION_LIMITS (11, 20)
+ #include BOOST_PP_ITERATE()
+
+ #endif
+
+#else
+
+ current iteration value is BOOST_PP_ITERATION()
+
+#endif
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/ref/iteration.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/ref/iteration.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,55 @@
+<html>
+<head>
+ <title>BOOST_PP_ITERATION</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_ITERATION</b> macro expands to the iteration value of the current <i>file-iteration</i> depth.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_ITERATION</b>()
+ </div>
+ <h4>Remarks</h4>
+ <div>
+ This macro is only valid when a <i>file-iteration</i> is in progress.
+ </div>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <boost/preprocessor/iteration/iterate.hpp>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+// file.h
+#if !BOOST_PP_IS_ITERATING
+
+ #ifndef FILE_H_
+ #define FILE_H_
+
+ #include <boost/preprocessor/iteration/iterate.hpp>
+
+ #define BOOST_PP_ITERATION_PARAMS_1 (3, (1, 3, "file.h"))
+ #include BOOST_PP_ITERATE()
+
+ #endif
+
+#elif BOOST_PP_ITERATION_DEPTH() == 1
+
+ value == BOOST_PP_ITERATION()
+
+#endif
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/ref/iteration_depth.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/ref/iteration_depth.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,73 @@
+<html>
+<head>
+ <title>BOOST_PP_ITERATION_DEPTH</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_ITERATION_DEPTH</b> macro expands to the current <i>file-iteration</i> depth.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_ITERATION_DEPTH</b>()
+ </div>
+ <h4>Remarks</h4>
+ <div>
+ If a <i>file-iteration</i> is not in progress, this macro expands to <i>0</i>.
+ Otherwise, it expands to the current depth of <i>file-iteration</i>.
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li>BOOST_PP_FRAME_ITERATION</li>
+ <li>BOOST_PP_RELATIVE_ITERATION</li>
+ </ul>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <boost/preprocessor/iteration/iterate.hpp>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+// file.h
+#if !BOOST_PP_IS_ITERATING
+
+ #ifndef FILE_H_
+ #define FILE_H_
+
+ #include <boost/preprocessor/iteration/iterate.hpp>
+
+ #define BOOST_PP_ITERATION_PARAMS_1 (3, (1, 3, "file.h"))
+ #include BOOST_PP_ITERATE()
+
+ #endif
+
+#elif BOOST_PP_ITERATION_DEPTH() == 1
+
+ + depth BOOST_PP_ITERATION_DEPTH()
+ // ...
+
+ #define BOOST_PP_ITERATION_PARAMS_2 \
+ (3, (1, BOOST_PP_ITERATION(), "file.h")) \
+ /**/
+
+ #include BOOST_PP_ITERATE()
+
+#elif BOOST_PP_ITERATION_DEPTH() == 2
+
+ - depth BOOST_PP_ITERATION_DEPTH()
+ // ...
+
+#endif
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/ref/iteration_finish.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/ref/iteration_finish.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,57 @@
+<html>
+<head>
+ <title>BOOST_PP_ITERATION_FINISH</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_ITERATION_FINISH</b> macro expands to the upper bound of the current <i>file-iteration</i> depth.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_ITERATION_FINISH</b>()
+ </div>
+ <h4>Remarks</h4>
+ <div>
+ This macro is only valid when a <i>file-iteration</i> is in progress.
+ </div>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <boost/preprocessor/iteration/iterate.hpp>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+// file.h
+#if !BOOST_PP_IS_ITERATING
+
+ #ifndef FILE_H_
+ #define FILE_H_
+
+ #include <boost/preprocessor/iteration/iterate.hpp>
+
+ #define BOOST_PP_ITERATION_PARAMS_1 (3, (1, 10, "file.h"))
+ #include BOOST_PP_ITERATE()
+
+ #endif
+
+#elif BOOST_PP_ITERATION_DEPTH() == 1
+
+ start -> BOOST_PP_ITERATION_START()
+ iteration -> BOOST_PP_ITERATION()
+ finish -> BOOST_PP_ITERATION_FINISH()
+
+#endif
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/ref/iteration_flags.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/ref/iteration_flags.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,68 @@
+<html>
+<head>
+ <title>BOOST_PP_ITERATION_FLAGS</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_ITERATION_FLAGS</b> macro retrieves flags associated with the current <i>file-iteration</i> depth.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_ITERATION_FLAGS</b>()
+ </div>
+ <h4>Remarks</h4>
+ <div>
+ This macro is only valid when a <i>file-iteration</i> is in progress.
+ </div>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <boost/preprocessor/iteration/iterate.hpp>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+// 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, (1, 10, "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 \
+ /**/
+
+ { 1st }
+
+#elif BOOST_PP_ITERATION_DEPTH() == 1 \
+ && BOOST_PP_ITERATION_FLAGS() == 0x0002 \
+ /**/
+
+ { 2nd }
+
+#endif
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/ref/iteration_limits.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/ref/iteration_limits.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,59 @@
+<html>
+<head>
+ <title>BOOST_PP_ITERATION_LIMITS</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_ITERATION_LIMITS</b> macro is a user-defined <i>named external argument</i> used by <b>BOOST_PP_ITERATE</b>.
+ It denotes the lower and upper bounds of a <i>file-iteration</i>.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #define <b>BOOST_PP_ITERATION_LIMITS</b> (<i>start</i>, <i>finish</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>start</dt>
+ <dd>
+ The lower bound (inclusive) of a <i>file-iteration</i>.
+ Valid values range from <i>0</i> to <b>BOOST_PP_LIMIT_ITERATION</b>.
+ </dd>
+ <dt>finish</dt>
+ <dd>
+ The upper bound (inclusive) of a <i>file-iteration</i>.
+ Valid values range from <i>0</i> to <b>BOOST_PP_LIMIT_ITERATION</b>.
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ Note that there is a whitespace character after the macro identifier.
+ </div>
+ <div>
+ This macro is part of the secondary method of passing arguments to <b>BOOST_PP_ITERATE</b>.
+ The other part is <b>BOOST_PP_FILENAME_<i>x</i></b>. Both <i>start</i> and <i>finish</i> are <i>evaluated parameters</i>.
+ This implies that they may include simple arithmetic.
+ </div>
+ <div>
+ This macro is automatically undefined for reuse by a call to <b>BOOST_PP_ITERATE</b>.
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li>BOOST_PP_FILENAME_x</li>
+ <li>BOOST_PP_ITERATE</li>
+ <li>BOOST_PP_LIMIT_ITERATION</li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/ref/iteration_params_x.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/ref/iteration_params_x.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,77 @@
+<html>
+<head>
+ <title>BOOST_PP_ITERATION_PARAMS_x</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_ITERATION_PARAMS_<i>x</i></b> macro is a user-defined <i>named external argument</i> used by <b>BOOST_PP_ITERATE</b>.
+ It denotes the lower bound, upper bound, and the filename of a <i>file-iteration</i>. It can optionally denote flags associated with a <i>file-iteration</i> as well.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #define <b>BOOST_PP_ITERATION_PARAMS_<i>x</i></b> (<i>c</i>, (<i>start</i>, <i>finish</i>, <i>filename</i> [, <i>flags</i>]))
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>x</dt>
+ <dd>
+ The iteration depth of the next <i>file-iteration</i>.
+ This value <i>must</i> be the current iteration depth + <i>1</i>.
+ </dd>
+ <dt>c</dt>
+ <dd>
+ The number of parameters.
+ If <i>flags</i> is specified, this value must be <i>4</i>.
+ Otherwise, it must be <i>3</i>.
+ </dd>
+ <dt>start</dt>
+ <dd>
+ The lower bound (inclusive) of a <i>file-iteration</i>.
+ Valid values range from <i>0</i> to <b>BOOST_PP_LIMIT_ITERATION</b>.
+ </dd>
+ <dt>finish</dt>
+ <dd>
+ The upper bound (inclusive) of a <i>file-iteration</i>.
+ Valid values range from <i>0</i> to <b>BOOST_PP_LIMIT_ITERATION</b>.
+ </dd>
+ <dt>filename</dt>
+ <dd>
+ A quoted or angle-bracketed filename to used as the target of a <i>file-iteration</i>.
+ </dd>
+ <dt>[flags]</dt>
+ <dd>
+ The flags associated with this <i>file-iteration</i> used to discriminate between different <i>file-iterations</i> in the same file.
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ Note that there is a whitespace character after the macro identifier.
+ </div>
+ <div>
+ This macro is must be defined as an <i>array</i> of arguments in one of the two formats above (with or without <i>flags</i>).
+ It is the primary method of passing arguments to <b>BOOST_PP_ITERATE</b>.
+ Both <i>start</i> and <i>finish</i> are <i>evaluated parameters</i>, which implies that simple arithmetic can be used.
+ </div>
+ <div>
+ This macro is automatically undefined for reuse by a call to <b>BOOST_PP_ITERATE</b>.
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li>BOOST_PP_ITERATE</li>
+ <li>BOOST_PP_LIMIT_ITERATION</li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/ref/iteration_start.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/ref/iteration_start.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,57 @@
+<html>
+<head>
+ <title>BOOST_PP_ITERATION_START</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_ITERATION_START</b> macro expands to the lower bound of the current <i>file-iteration</i> depth.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_ITERATION_START</b>()
+ </div>
+ <h4>Remarks</h4>
+ <div>
+ This macro is only valid when a <i>file-iteration</i> is in progress.
+ </div>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <boost/preprocessor/iteration/iterate.hpp>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+// file.h
+#if !BOOST_PP_IS_ITERATING
+
+ #ifndef FILE_H_
+ #define FILE_H_
+
+ #include <boost/preprocessor/iteration/iterate.hpp>
+
+ #define BOOST_PP_ITERATION_PARAMS_1 (3, (1, 10, "file.h"))
+ #include BOOST_PP_ITERATE()
+
+ #endif
+
+#elif BOOST_PP_ITERATION_DEPTH() == 1
+
+ start -> BOOST_PP_ITERATION_START()
+ iteration -> BOOST_PP_ITERATION()
+ finish -> BOOST_PP_ITERATION_FINISH()
+
+#endif
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/ref/less.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/ref/less.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,65 @@
+<html>
+<head>
+ <title>BOOST_PP_LESS</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_LESS</b> macro compares two values for lesser magnitude.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_LESS</b>(<i>x</i>, <i>y</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>x</dt>
+ <dd>
+ The left operand of the comparison.
+ Valid values range from <i>0</i> to <b>BOOST_PP_LIMIT_MAG</b>.
+ </dd>
+ <dt>y</dt>
+ <dd>
+ The right operand of the comparison.
+ Valid values range from <i>0</i> to <b>BOOST_PP_LIMIT_MAG</b>.
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ If <i>x</i> is less than <i>y</i>, this macro expands to <i>1</i>.
+ Otherwise, it expands to <i>0</i>.
+ </div>
+ <div>
+ Previously, this macro could not be used inside <b>BOOST_PP_WHILE</b>.
+ There is no longer any such restriction.
+ It is more efficient, however, to use <b>BOOST_PP_LESS_D</b> in such a situation.
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li>BOOST_PP_LESS_D</li>
+ <li>BOOST_PP_LIMIT_MAG</li>
+ </ul>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <boost/preprocessor/comparison/less.hpp>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+#include <boost/preprocessor/comparison/less.hpp>
+
+BOOST_PP_LESS(4, 3) // expands to 0
+BOOST_PP_LESS(3, 4) // expands to 1
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/ref/less_d.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/ref/less_d.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,70 @@
+<html>
+<head>
+ <title>BOOST_PP_LESS_D</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_LESS_D</b> macro compares two values for lesser magnitude.
+ It reenters <b>BOOST_PP_WHILE</b> with maximum efficiency.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_LESS_D</b>(<i>d</i>, <i>x</i>, <i>y</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>d</dt>
+ <dd>
+ The next available <b>BOOST_PP_WHILE</b> iteration.
+ </dd>
+ <dt>x</dt>
+ <dd>
+ The left operand of the comparison.
+ Valid values range from <i>0</i> to <b>BOOST_PP_LIMIT_MAG</b>.
+ </dd>
+ <dt>y</dt>
+ <dd>
+ The right operand of the comparison.
+ Valid values range from <i>0</i> to <b>BOOST_PP_LIMIT_MAG</b>.
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ If <i>x</i> is less than <i>y</i>, this macro expands to <i>1</i>.
+ Otherwise, it expands to <i>0</i>.
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li>BOOST_PP_LESS</li>
+ <li>BOOST_PP_LIMIT_MAG</li>
+ </ul>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <boost/preprocessor/comparison/less.hpp>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+#include <boost/preprocessor/comparison/less.hpp>
+#include <boost/preprocessor/list/filter.hpp>
+
+#define LIST (1, (2, (3, (4, (5, BOOST_PP_NIL)))))
+
+#define PRED(d, _, num) BOOST_PP_LESS_D(d, num, 3)
+
+BOOST_PP_LIST_FILTER(PRED, nil, LIST)
+ // expands to (1, (2, BOOST_PP_NIL))
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/ref/less_equal.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/ref/less_equal.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,65 @@
+<html>
+<head>
+ <title>BOOST_PP_LESS_EQUAL</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_LESS_EQUAL</b> macro compares two values for equality or lesser magnitude.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_LESS_EQUAL</b>(<i>x</i>, <i>y</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>x</dt>
+ <dd>
+ The left operand of the comparison.
+ Valid values range from <i>0</i> to <b>BOOST_PP_LIMIT_MAG</b>.
+ </dd>
+ <dt>y</dt>
+ <dd>
+ The right operand of the comparison.
+ Valid values range from <i>0</i> to <b>BOOST_PP_LIMIT_MAG</b>.
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ If <i>x</i> is lesser than or equal to <i>y</i>, this macro expands to <i>1</i>.
+ Otherwise, it expands to <i>0</i>.
+ </div>
+ <div>
+ Previously, this macro could not be used inside <b>BOOST_PP_WHILE</b>.
+ There is no longer any such restriction.
+ It is more efficient, however, to use <b>BOOST_PP_LESS_EQUAL_D</b> in such a situation.
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li>BOOST_PP_LESS_EQUAL_D</li>
+ <li>BOOST_PP_LIMIT_MAG</li>
+ </ul>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <boost/preprocessor/comparison/less_equal.hpp>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+#include <boost/preprocessor/comparison/less_equal.hpp>
+
+BOOST_PP_LESS_EQUAL(4, 3) // expands to 0
+BOOST_PP_LESS_EQUAL(5, 5) // expands to 1
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/ref/less_equal_d.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/ref/less_equal_d.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,70 @@
+<html>
+<head>
+ <title>BOOST_PP_LESS_EQUAL_D</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_LESS_EQUAL_D</b> macro compares two values for equality or lesser magnitude.
+ It reenters <b>BOOST_PP_WHILE</b> with maximum efficiency.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_LESS_EQUAL_D</b>(<i>d</i>, <i>x</i>, <i>y</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>d</dt>
+ <dd>
+ The next available <b>BOOST_PP_WHILE</b> iteration.
+ </dd>
+ <dt>x</dt>
+ <dd>
+ The left operand of the comparison.
+ Valid values range from <i>0</i> to <b>BOOST_PP_LIMIT_MAG</b>.
+ </dd>
+ <dt>y</dt>
+ <dd>
+ The right operand of the comparison.
+ Valid values range from <i>0</i> to <b>BOOST_PP_LIMIT_MAG</b>.
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ If <i>x</i> is less than or equal to <i>y</i>, this macro expands to <i>1</i>.
+ Otherwise, it expands to <i>0</i>.
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li>BOOST_PP_LESS_EQUAL</li>
+ <li>BOOST_PP_LIMIT_MAG</li>
+ </ul>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <boost/preprocessor/comparison/less_equal.hpp>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+#include <boost/preprocessor/comparison/less_equal.hpp>
+#include <boost/preprocessor/list/filter.hpp>
+
+#define LIST (1, (2, (3, (4, (5, BOOST_PP_NIL)))))
+
+#define PRED(d, _, num) BOOST_PP_LESS_EQUAL_D(d, num, 4)
+
+BOOST_PP_LIST_FILTER(PRED, nil, LIST)
+ // expands to (1, (2, (3, (4, BOOST_PP_NIL))))
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/ref/limit_dim.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/ref/limit_dim.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,35 @@
+<html>
+<head>
+ <title>BOOST_PP_LIMIT_DIM</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_LIMIT_DIM</b> macro defines the maximum number of available <b>BOOST_PP_REPEAT</b> dimensions.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_LIMIT_DIM</b>
+ </div>
+ <h4>Remarks</h4>
+ <div>
+ This macro currently expands to <i>3</i>.
+ </div>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <boost/preprocessor/config/limits.hpp>
+ </div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/ref/limit_for.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/ref/limit_for.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,34 @@
+<html>
+<head>
+ <title>BOOST_PP_LIMIT_FOR</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_LIMIT_FOR</b> macro defines the maximum number of <b>BOOST_PP_FOR</b> repetitions.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_LIMIT_FOR</b>
+ </div>
+ <h4>Remarks</h4>
+ <div>
+ This macro currently expands to <i>256</i>.
+ </div>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <boost/preprocessor/config/limits.hpp>
+ </div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/ref/limit_iteration.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/ref/limit_iteration.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,34 @@
+<html>
+<head>
+ <title>BOOST_PP_LIMIT_ITERATION</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_LIMIT_ITERATION</b> macro defines the maximum number of <i>local</i> and <i>file</i> iterations.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_LIMIT_ITERATION</b>
+ </div>
+ <h4>Remarks</h4>
+ <div>
+ This macro currently expands to <i>256</i>.
+ </div>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <boost/preprocessor/config/limits.hpp>
+ </div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/ref/limit_iteration_dim.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/ref/limit_iteration_dim.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,34 @@
+<html>
+<head>
+ <title>BOOST_PP_LIMIT_ITERATION_DIM</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_LIMIT_ITERATION_DIM</b> macro defines the maximum depth of <i>file-iteration</i>.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_LIMIT_ITERATION_DIM</b>
+ </div>
+ <h4>Remarks</h4>
+ <div>
+ This macro currently expands to <i>3</i>.
+ </div>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <boost/preprocessor/config/limits.hpp>
+ </div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/ref/limit_mag.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/ref/limit_mag.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,34 @@
+<html>
+<head>
+ <title>BOOST_PP_LIMIT_MAG</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_LIMIT_MAG</b> macro defines the maximum input and result magnitudes of arithmetic.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_LIMIT_MAG</b>
+ </div>
+ <h4>Remarks</h4>
+ <div>
+ This macro currently expands to <i>256</i>.
+ </div>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <boost/preprocessor/config/limits.hpp>
+ </div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/ref/limit_repeat.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/ref/limit_repeat.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,34 @@
+<html>
+<head>
+ <title>BOOST_PP_LIMIT_REPEAT</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_LIMIT_REPEAT</b> macro defines the maximum number of repetitions supported by each <b>BOOST_PP_REPEAT</b> dimension.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_LIMIT_REPEAT</b>
+ </div>
+ <h4>Remarks</h4>
+ <div>
+ This macro current expands to <i>256</i>.
+ </div>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <boost/preprocessor/config/limits.hpp>
+ </div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/ref/limit_seq.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/ref/limit_seq.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,41 @@
+<html>
+ <head>
+ <title>BOOST_PP_LIMIT_SEQ</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+ </head>
+ <body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_LIMIT_SEQ</b> macro defines the maximum <i>seq</i> size
+ supported by the library.
+ </div>
+ <h4>
+ Usage
+ </h4>
+ <div class="code">
+ <b>BOOST_PP_LIMIT_SEQ</b>
+ </div>
+ <h4>
+ Remarks
+ </h4>
+ <div>
+ This macro currently expands to <i>256</i>.
+ </div>
+ <h4>
+ Requirements
+ </h4>
+ <div>
+ <b>Header:</b> <boost/preprocessor/config/limits.hpp>
+ </div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+ </body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/ref/limit_slot_count.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/ref/limit_slot_count.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,34 @@
+<html>
+<head>
+ <title>BOOST_PP_LIMIT_SLOT_COUNT</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_LIMIT_SLOT_COUNT</b> macro defines the number of available <i>evaluated slots</i>.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_LIMIT_SLOT_COUNT</b>
+ </div>
+ <h4>Remarks</h4>
+ <div>
+ This macro currently expands to <i>5</i>.
+ </div>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <boost/preprocessor/config/limits.hpp>
+ </div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/ref/limit_slot_sig.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/ref/limit_slot_sig.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,34 @@
+<html>
+<head>
+ <title>BOOST_PP_LIMIT_SLOT_SIG</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_LIMIT_SLOT_SIG</b> macro defines the number of significant base-10 digits that can be evaluated by the <i>slot</i> mechanism.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_LIMIT_SLOT_SIG</b>
+ </div>
+ <h4>Remarks</h4>
+ <div>
+ This macro currently expands to <i>10</i>.
+ </div>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <boost/preprocessor/config/limits.hpp>
+ </div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/ref/limit_tuple.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/ref/limit_tuple.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,33 @@
+<html>
+<head>
+ <title>BOOST_PP_LIMIT_TUPLE</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_LIMIT_TUPLE</b> macro defines the maximum <i>tuple</i> size supported by the library.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_LIMIT_TUPLE</b>
+ </div>
+ <h4>Remarks</h4>
+ <div>
+ This macro currently expands to <i>64</i>.
+ </div>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <boost/preprocessor/config/limits.hpp>
+ </div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ <br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at www.boost.org/LICENSE_1_0.txt)</small></p>
+ </div>
+</body>
+</html>
\ No newline at end of file
Added: branches/pplib/v2/libs/preprocessor/doc/ref/limit_variadic.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/ref/limit_variadic.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,24 @@
+<html>
+<head>
+ <title>BOOST_PP_LIMIT_VARIADIC</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+<div style="margin-left: 0px;"> The <b>BOOST_PP_LIMIT_VARIADIC</b> macro
+defines the maximum <i>variadic data</i> size supported by the library. </div>
+<h4>Usage</h4>
+<div class="code"> <b>BOOST_PP_LIMIT_VARIADIC</b> </div>
+<h4>Remarks</h4>
+<div> This macro currently expands to <i>64</i>. </div>
+<h4>Requirements</h4>
+<div> <b>Header:</b> <boost/preprocessor/config/limits.hpp>
+</div>
+<hr size="1">
+<div style="margin-left: 0px;"> <i></i><i>© Copyright Edward Diener 2011</i> </div>
+<div style="margin-left: 0px;">
+<p><small>Distributed under the Boost Software License, Version 1.0.
+(See accompanying file LICENSE_1_0.txt
+or copy at www.boost.org/LICENSE_1_0.txt)</small></p>
+</div>
+</body>
+</html>
\ No newline at end of file
Added: branches/pplib/v2/libs/preprocessor/doc/ref/limit_while.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/ref/limit_while.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,34 @@
+<html>
+<head>
+ <title>BOOST_PP_LIMIT_WHILE</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_LIMIT_WHILE</b> macro defines the maximum number of <b>BOOST_PP_WHILE</b> iterations.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_LIMIT_WHILE</b>
+ </div>
+ <h4>Remarks</h4>
+ <div>
+ This macro currently expands to <i>256</i>.
+ </div>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <boost/preprocessor/config/limits.hpp>
+ </div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/ref/line.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/ref/line.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,112 @@
+<html>
+<head>
+ <title>BOOST_PP_LINE</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_LINE</b> macro places notes encoded as line directives in the preprocessing output.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #line <b>BOOST_PP_LINE</b>(<i>line</i>, <i>file</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>line</dt>
+ <dd>
+ The new line number of the trailing line.
+ The predefined macro <i>__LINE__</i> is commonly used.
+ </dd>
+ <dt>file</dt>
+ <dd>
+ Typically the name of the current file.
+ However, any informative text will work.
+ This text is internally stringized, so quotation marks are unnecessary.
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ If the macro <b>BOOST_PP_CONFIG_EXTENDED_LINE_INFO</b> is defined as <i>1</i> and a <i>file-iteration</i>
+ is in progress, this macro will automatically insert debugging information about the state of <i>file-iteration</i>.
+ This information will show the all of the current iteration values with the inner most iteration last.
+ </div>
+ <div>
+ This information is useful when errors might be spanning multiple iterations of the same source text.
+ Finding any errors is sometimes less than straightforward.
+ Use of this macro can provide information to make this much easier.
+ For example, instead of getting several errors like this:
+ <div><i>
+ "file.hpp", line 2: error: expected a ";"<br>
+ "file.hpp", line 4: error: improperly terminated macro invocation<br>
+ </i></div>
+ You might get something like this instead....
+ <i><div>
+ "file.hpp [1]", line 2: error: expected a ";"<br>
+ "file.hpp [5]", line 4: error: improperly terminated macro invocation<br>
+ </i></div>
+ It is immediately evident that this error is spanning multiple iterations of the same source text.
+ If it wasn't, the same errors would occur on each iteration.
+ </div>
+ <div>
+ It must be noted however, that some compilers don't like filenames that aren't actually files.
+ Those compilers typically issues warnings about the bad filename.
+ This makes it a good idea to only define <b>BOOST_PP_CONFIG_EXTENDED_LINE_INFO</b> to <i>1</i> <i>only</i> when debugging.
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li>BOOST_PP_CONFIG_EXTENDED_LINE_INFO</li>
+ </ul>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <boost/preprocessor/debug/line.hpp>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+// sample.cpp
+#if !defined(BOOST_PP_IS_ITERATING)
+
+ #define BOOST_PP_CONFIG_EXTENDED_LINE_INFO 1
+
+ #include <boost/preprocessor/arithmetic/dec.hpp>
+ #include <boost/preprocessor/cat.hpp>
+ #include <boost/preprocessor/debug/line.hpp>
+ #include <boost/preprocessor/iteration/iterate.hpp>
+
+ namespace sample {
+
+ #define BOOST_PP_ITERATION_PARAMS_1 (3, (1, 5, "sample.cpp"))
+ #include BOOST_PP_ITERATE()
+
+ } // sample
+
+ int main(void) {
+ return 0;
+ }
+
+#else
+
+ #line BOOST_PP_LINE(1, sample.cpp)
+
+ int BOOST_PP_CAT(x, BOOST_PP_ITERATION())); // extra parenthesis
+
+ struct BOOST_PP_CAT(s, BOOST_PP_DEC(BOOST_PP_ITERATION()) {
+ // missing a parenthesis
+ // ...
+ };
+
+#endif
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/ref/list_append.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/ref/list_append.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,69 @@
+<html>
+<head>
+ <title>BOOST_PP_LIST_APPEND</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_LIST_APPEND</b> macro appends two <i>lists</i>.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_LIST_APPEND</b>(<i>a</i>, <i>b</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>a</dt>
+ <dd>
+ The first <i>list</i>.
+ </dd>
+ <dt>b</dt>
+ <dd>
+ The second <i>list</i>.
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ This macro appends two lists.
+ For example, if <i>a</i> is (<i>1</i>, (<i>2</i>, (<i>3</i>, <b>BOOST_PP_NIL</b>))) and <i>b</i> is (<i>4</i>, (<i>5</i>, <b>BOOST_PP_NIL</b>)),
+ this macro will expand to:
+ <div>
+ (<i>1</i>, (<i>2</i>, (<i>3</i>, (<i>4</i>, (<i>5</i>, <b>BOOST_PP_NIL</b>)))))
+ </div>
+ </div>
+ <div>
+ Previously, this macro could not be used inside <b>BOOST_PP_WHILE</b>.
+ There is no longer any such restriction.
+ It is more efficient, however, to use <b>BOOST_PP_LIST_APPEND_D</b> in such a situation.
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li>BOOST_PP_LIST_APPEND_D</li>
+ </ul>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <boost/preprocessor/list/append.hpp>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+#include <boost/preprocessor/list/append.hpp>
+
+#define L1 (a, (b, (c, BOOST_PP_NIL)))
+#define L2 (x, (y, (z, BOOST_PP_NIL)))
+
+BOOST_PP_LIST_APPEND(L1, L2)
+ // expands to (a, (b, (c, (x, (y, (z, BOOST_PP_NIL))))))
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/ref/list_append_d.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/ref/list_append_d.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,96 @@
+<html>
+<head>
+ <title>BOOST_PP_LIST_APPEND_D</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_LIST_APPEND_D</b> macro appends two <i>lists</i>.
+ It reenters <b>BOOST_PP_WHILE</b> with maximum efficiency.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_LIST_APPEND_D</b>(<i>d</i>, <i>a</i>, <i>b</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>d</dt>
+ <dd>
+ The next available <b>BOOST_PP_WHILE</b> iteration.
+ </dd>
+ <dt>a</dt>
+ <dd>
+ The first <i>list</i>.
+ </dd>
+ <dt>b</dt>
+ <dd>
+ The second <i>list</i>.
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ This macro appends two lists.
+ For example, if <i>a</i> is (<i>1</i>, (<i>2</i>, (<i>3</i>, <b>BOOST_PP_NIL</b>))) and <i>b</i> is (<i>4</i>, (<i>5</i>, <b>BOOST_PP_NIL</b>)),
+ this macro will expand to:
+ <div>
+ (<i>1</i>, (<i>2</i>, (<i>3</i>, (<i>4</i>, (<i>5</i>, <b>BOOST_PP_NIL</b>)))))
+ </div>
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li>BOOST_PP_LIST_APPEND</li>
+ </ul>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <boost/preprocessor/list/append.hpp>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+#include <boost/preprocessor/arithmetic/dec.hpp>
+#include <boost/preprocessor/control/while.hpp>
+#include <boost/preprocessor/list/append.hpp>
+#include <boost/preprocessor/tuple/elem.hpp>
+
+#define LIST (1, (2, (3, BOOST_PP_NIL)))
+
+#define PRED(d, state) BOOST_PP_TUPLE_ELEM(3, 1, state)
+
+#define OP(d, state) \
+ ( \
+ BOOST_PP_LIST_APPEND_D( \
+ d, BOOST_PP_TUPLE_ELEM(3, 0, state), \
+ BOOST_PP_TUPLE_ELEM(3, 2, state) \
+ ), \
+ BOOST_PP_DEC( \
+ BOOST_PP_TUPLE_ELEM(3, 1, state) \
+ ), \
+ BOOST_PP_TUPLE_ELEM(3, 2, state) \
+ ) \
+ /**/
+
+#define LIST_MULTIPLY(c, list) \
+ BOOST_PP_TUPLE_ELEM( \
+ 3, 0, \
+ BOOST_PP_WHILE( \
+ PRED, OP, \
+ (BOOST_PP_NIL, c, list) \
+ ) \
+ ) \
+ /**/
+
+LIST_MULTIPLY(3, LIST)
+ // expands to (1, (2, (3, (1, (2, (3, (1, (2, (3, BOOST_PP_NIL)))))))))
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/ref/list_at.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/ref/list_at.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,61 @@
+<html>
+<head>
+ <title>BOOST_PP_LIST_AT</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_LIST_AT</b> macro extracts an element in a <i>list</i>.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_LIST_AT</b>(<i>list</i>, <i>index</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>list</dt>
+ <dd>
+ The <i>list</i> from which a element is to be extracted.
+ This <i>list</i> must have at least <i>index</i> + <i>1</i> elements.
+ </dd>
+ <dt>index</dt>
+ <dd>
+ The zero-based position in the <i>list</i> of the element to be extracted.
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ Previously, this macro could not be used inside <b>BOOST_PP_WHILE</b>.
+ There is no longer any such restriction.
+ It is more efficient, however, to use <b>BOOST_PP_LIST_AT_D</b> in such a situation.
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li>BOOST_PP_LIST_AT_D</li>
+ </ul>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <boost/preprocessor/list/at.hpp>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+#include <boost/preprocessor/list/at.hpp>
+
+#define LIST (a, (b, (c, BOOST_PP_NIL)))
+
+BOOST_PP_LIST_AT(LIST, 0) // expands to a
+BOOST_PP_LIST_AT(LIST, 2) // expands to c
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/ref/list_at_d.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/ref/list_at_d.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,63 @@
+<html>
+<head>
+ <title>BOOST_PP_LIST_AT_D</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_LIST_AT_D</b> macro extracts an element in a <i>list</i>.
+ It reenters <b>BOOST_PP_WHILE</b> with maximum efficiency.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_LIST_AT_D</b>(<i>d</i>, <i>list</i>, <i>index</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>d</dt>
+ <dd>
+ The next available <b>BOOST_PP_WHILE</b> iteration.
+ </dd>
+ <dt>list</dt>
+ <dd>
+ The <i>list</i> from which a element is to be extracted.
+ This <i>list</i> must have at least <i>index</i> + <i>1</i> elements.
+ </dd>
+ <dt>index</dt>
+ <dd>
+ The zero-based position in the <i>list</i> of the element to be extracted.
+ </dd>
+ </dl>
+ <h4>See Also</h4>
+ <ul>
+ <li>BOOST_PP_LIST_AT</li>
+ </ul>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <boost/preprocessor/list/at.hpp>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+#include <boost/preprocessor/control/while.hpp>
+#include <boost/preprocessor/list/at.hpp>
+
+#define LIST (7, (2, (0, (1, BOOST_PP_NIL))))
+
+#define PRED(d, state) BOOST_PP_LIST_AT_D(d, state, 0)
+#define OP(d, state) BOOST_PP_LIST_REST(state)
+
+BOOST_PP_WHILE(PRED, OP, LIST) // expands to (0, (1, BOOST_PP_NIL))
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/ref/list_cat.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/ref/list_cat.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,58 @@
+<html>
+<head>
+ <title>BOOST_PP_LIST_CAT</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_LIST_CAT</b> macro concatenates all elements in a <i>list</i>.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_LIST_CAT</b>(<i>list</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>list</dt>
+ <dd>
+ The <i>list</i> whose elements are to be concatenated.
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ Elements are concatenated left-to-right starting with index <i>0</i>.
+ </div>
+ <div>
+ Previously, this macro could not be used inside <b>BOOST_PP_WHILE</b>.
+ There is no longer any such restriction.
+ It is more efficient, however, to use <b>BOOST_PP_LIST_CAT_D</b> in such a situation.
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li>BOOST_PP_LIST_CAT_D</li>
+ </ul>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <boost/preprocessor/list/cat.hpp>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+#include <boost/preprocessor/list/cat.hpp>
+
+#define LIST (a, (b, (c, BOOST_PP_NIL)))
+
+BOOST_PP_LIST_CAT(LIST) // expands to abc
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/ref/list_cat_d.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/ref/list_cat_d.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,67 @@
+<html>
+<head>
+ <title>BOOST_PP_LIST_CAT_D</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_LIST_CAT_D</b> macro concatenates all elements in a <i>list</i>.
+ It reenters <b>BOOST_PP_WHILE</b> with maximum efficiency.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_LIST_CAT_D</b>(<i>d</i>, <i>list</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>d</dt>
+ <dd>
+ The next available <b>BOOST_PP_WHILE</b> iteration.
+ </dd>
+ <dt>list</dt>
+ <dd>
+ The <i>list</i> whose elements are to be concatenated.
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ Elements are concatenated left-to-right starting with index <i>0</i>.
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li>BOOST_PP_LIST_CAT</li>
+ </ul>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <boost/preprocessor/list/cat.hpp>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+#include <boost/preprocessor/cat.hpp>
+#include <boost/preprocessor/list/cat.hpp>
+#include <boost/preprocessor/list/fold_left.hpp>
+
+#define LISTS \
+ ((a, (b, BOOST_PP_NIL)), \
+ ((c, (d, BOOST_PP_NIL)), \
+ ((e, (f, BOOST_PP_NIL)), \
+ BOOST_PP_NIL))) \
+ /**/
+
+#define OP(d, state, x) BOOST_PP_CAT(state, BOOST_PP_LIST_CAT_D(d, x))
+
+BOOST_PP_LIST_FOLD_LEFT(OP, _, LISTS) // expands to _abcdef
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/ref/list_cons.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/ref/list_cons.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,87 @@
+<html>
+<head>
+ <title>BOOST_PP_LIST_CONS</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_LIST_CONS</b> macro is a <i>list</i> constructor.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_LIST_CONS</b>(<i>head</i>, <i>tail</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>head</dt>
+ <dd>
+ An element in a <i>list</i>.
+ </dd>
+ <dt>tail</dt>
+ <dd>
+ Either a <i>list</i>, <b>BOOST_PP_LIST_NIL</b>, or <b>BOOST_PP_NIL</b>.
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ This macro appends a new head to an existing <i>list</i> or creates a <i>list</i> from <b>BOOST_PP_LIST_NIL</b>.
+ </div>
+ <div>
+ This macro is no longer necessary.
+ For example...
+ <div>
+ <b>BOOST_PP_LIST_CONS</b>(a, <b>BOOST_PP_LIST_CONS</b>(b, <b>BOOST_PP_LIST_NIL</b>)))
+ </div>
+ ...is just an explicit way of writing the following:
+ <div>
+ (a, (b, <b>BOOST_PP_NIL</b>))
+ </div>
+ Because of this, this macro is deprecated.
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li>BOOST_PP_LIST_NIL</li>
+ <li>BOOST_PP_NIL</li>
+ </ul>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <boost/preprocessor/list/adt.hpp>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+#include <boost/preprocessor/list/adt.hpp>
+
+#define OLD \
+ BOOST_PP_LIST_CONS( \
+ a, \
+ BOOST_PP_LIST_CONS( \
+ b, \
+ BOOST_PP_LIST_CONS( \
+ c, \
+ BOOST_PP_LIST_NIL \
+ ) \
+ ) \
+ ) \
+ /**/
+
+#define NEW (a, (b, (c, BOOST_PP_NIL)))
+
+BOOST_PP_LIST_FIRST(OLD) == BOOST_PP_LIST_FIRST(NEW)
+ // expands to a == a
+
+BOOST_PP_LIST_REST(OLD) == BOOST_PP_LIST_REST(NEW)
+ // expands to (b, (c, BOOST_PP_NIL)) == (b, (c, BOOST_PP_NIL))
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/ref/list_enum.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/ref/list_enum.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,62 @@
+<html>
+<head>
+ <title>BOOST_PP_LIST_ENUM</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_LIST_ENUM</b> macro converts a <i>list</i> to a comma-separated list.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_LIST_ENUM</b>(<i>list</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>list</dt>
+ <dd>
+ The <i>list</i> to be converted.
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ If <i>list</i> is, for example, (<i>a</i>, (<i>b</i>, (<i>c</i>, <b>BOOST_PP_NIL</b>))),
+ this macro will produce:
+ <div>
+ <i>a</i>, <i>b</i>, <i>c</i>
+ </div>
+ </div>
+ <div>
+ Previously, this macro could not be used inside <b>BOOST_PP_FOR</b>.
+ There is no longer any such restriction.
+ It is more efficient, however, to use <b>BOOST_PP_LIST_ENUM_R</b> in such a situation.
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li>BOOST_PP_LIST_ENUM_R</li>
+ </ul>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <boost/preprocessor/list/enum.hpp>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+#include <boost/preprocessor/list/enum.hpp>
+
+#define LIST (w, (x, (y, (z, BOOST_PP_NIL))))
+
+BOOST_PP_LIST_ENUM(LIST) // expands to w, x, y, z
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/ref/list_enum_r.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/ref/list_enum_r.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,69 @@
+<html>
+<head>
+ <title>BOOST_PP_LIST_ENUM_R</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_LIST_ENUM_R</b> macro converts a <i>list</i> to a comma-separated list.
+ It reenters <b>BOOST_PP_FOR</b> with maximum efficiency.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_LIST_ENUM_R</b>(<i>r</i>, <i>list</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>r</dt>
+ <dd>
+ The next available <b>BOOST_PP_FOR</b> repetition.
+ </dd>
+ <dt>list</dt>
+ <dd>
+ The <i>list</i> to be converted.
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ If <i>list</i> is, for example, (<i>a</i>, (<i>b</i>, (<i>c</i>, <b>BOOST_PP_NIL</b>))),
+ this macro will produce:
+ <div>
+ <i>a</i>, <i>b</i>, <i>c</i>
+ </div>
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li>BOOST_PP_LIST_ENUM</li>
+ </ul>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <boost/preprocessor/list/enum.hpp>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+#include <boost/preprocessor/list/adt.hpp>
+#include <boost/preprocessor/repetition/for.hpp>
+#include <boost/preprocessor/list/enum.hpp>
+
+#define LIST (x, (y, (z, BOOST_PP_NIL)))
+
+#define PRED(r, state) BOOST_PP_LIST_IS_CONS(state)
+#define OP(r, state) BOOST_PP_LIST_REST(state)
+#define MACRO(r, state) [ BOOST_PP_LIST_ENUM_R(r, state) ]
+
+BOOST_PP_FOR(LIST, PRED, OP, MACRO)
+ // expands to [x, y, z] [y, z] [z]
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/ref/list_filter.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/ref/list_filter.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,76 @@
+<html>
+<head>
+ <title>BOOST_PP_LIST_FILTER</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_LIST_FILTER</b> macro filters a <i>list</i> according to a supplied criterion.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_LIST_FILTER</b>(<i>pred</i>, <i>data</i>, <i>list</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>pred</dt>
+ <dd>
+ A ternary predicate of the form <i>pred</i>(<i>d</i>, <i>data</i>, <i>elem</i>).
+ This predicate is expanded by <b>BOOST_PP_LIST_FILTER</b> for each element in <i>list</i> with the next available <b>BOOST_PP_WHILE</b> iteration,
+ the auxiliary <i>data</i>, and the current element in <i>list</i>.
+ This macro must return a integral value in the range of <i>0</i> to <b>BOOST_PP_LIMIT_MAG</b>.
+ If this predicate expands to non-zero for a certain element, that element is included in the resulting <i>list</i>.
+ </dd>
+ <dt>data</dt>
+ <dd>
+ Auxiliary data passed to <i>pred</i>.
+ </dd>
+ <dt>list</dt>
+ <dd>
+ The <i>list</i> to be filtered.
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ This macro expands <i>pred</i> for each element in <i>list</i>.
+ It builds a new <i>list</i> out of each element for which <i>pred</i> returns non-zero.
+ </div>
+ <div>
+ Previously, this macro could not be used inside <b>BOOST_PP_WHILE</b>.
+ There is no longer any such restriction.
+ It is more efficient, however, to use <b>BOOST_PP_LIST_FILTER_D</b> in such a situation.
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li>BOOST_PP_LIMIT_MAG</li>
+ <li>BOOST_PP_LIST_FILTER_D</li>
+ </ul>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <boost/preprocessor/list/filter.hpp>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+#include <boost/preprocessor/comparison/less_equal.hpp>
+#include <boost/preprocessor/list/filter.hpp>
+
+#define LIST (1, (3, (2, (5, BOOST_PP_NIL))))
+
+#define PRED(d, data, elem) BOOST_PP_LESS_EQUAL(elem, data)
+
+BOOST_PP_LIST_FILTER(PRED, 3, LIST)
+ // expands to (1, (3, (2, BOOST_PP_NIL)))
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/ref/list_filter_d.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/ref/list_filter_d.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,86 @@
+<html>
+<head>
+ <title>BOOST_PP_LIST_FILTER_D</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_LIST_FILTER_D</b> macro filters a <i>list</i> according to a supplied criterion.
+ It reenters <b>BOOST_PP_WHILE</b> with maximum efficiency.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_LIST_FILTER_D</b>(<i>d</i>, <i>pred</i>, <i>data</i>, <i>list</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>d</dt>
+ <dd>
+ The next available <b>BOOST_PP_WHILE</b> iteration.
+ </dd>
+ <dt>pred</dt>
+ <dd>
+ A ternary predicate of the form <i>pred</i>(<i>d</i>, <i>data</i>, <i>elem</i>).
+ This predicate is expanded by <b>BOOST_PP_LIST_FILTER</b> for each element in <i>list</i> with the next available <b>BOOST_PP_WHILE</b> iteration,
+ the auxiliary <i>data</i>, and the current element in <i>list</i>.
+ This macro must return a integral value in the range of <i>0</i> to <b>BOOST_PP_LIMIT_MAG</b>.
+ If this predicate expands to non-zero for a certain element, that element is included in the resulting <i>list</i>.
+ </dd>
+ <dt>data</dt>
+ <dd>
+ Auxiliary data passed to <i>pred</i>.
+ </dd>
+ <dt>list</dt>
+ <dd>
+ The <i>list</i> to be filtered.
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ This macro expands <i>pred</i> for each element in <i>list</i>.
+ It builds a new <i>list</i> out of each element for which <i>pred</i> returns non-zero.
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li>BOOST_PP_LIMIT_MAG</li>
+ <li>BOOST_PP_LIST_FILTER</li>
+ </ul>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <boost/preprocessor/list/filter.hpp>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+#include <boost/preprocessor/comparison/less_equal.hpp>
+#include <boost/preprocessor/list/filter.hpp>
+#include <boost/preprocessor/list/fold_right.hpp>
+
+#define A (1, (2, (3, (4, BOOST_PP_NIL))))
+#define B (A, (A, (A, (A, BOOST_PP_NIL))))
+
+#define PRED(d, data, x) BOOST_PP_LESS_EQUAL(x, data)
+#define OP(d, state, x) (BOOST_PP_LIST_FILTER_D(d, PRED, 2, x), state)
+
+BOOST_PP_LIST_FOLD_RIGHT(OP, BOOST_PP_NIL, B)
+/*
+ expands to:
+ ((1, (2, BOOST_PP_NIL)),
+ ((1, (2, BOOST_PP_NIL)),
+ ((1, (2, BOOST_PP_NIL)),
+ ((1, (2, BOOST_PP_NIL)),
+ BOOST_PP_NIL))))
+*/
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/ref/list_first.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/ref/list_first.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,62 @@
+<html>
+<head>
+ <title>BOOST_PP_LIST_FIRST</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_LIST_FIRST</b> macro expands to the head of a <i>list</i>.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_LIST_FIRST</b>(<i>list</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>list</dt>
+ <dd>
+ A non-nil <i>list</i>.
+ </dd>
+ </dl>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <boost/preprocessor/list/adt.hpp>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+#include <boost/preprocessor/list/adt.hpp>
+
+#define OLD \
+ BOOST_PP_LIST_CONS( \
+ a, \
+ BOOST_PP_LIST_CONS( \
+ b, \
+ BOOST_PP_LIST_CONS( \
+ c, \
+ BOOST_PP_LIST_NIL \
+ ) \
+ ) \
+ ) \
+ /**/
+
+#define NEW (a, (b, (c, BOOST_PP_NIL)))
+
+BOOST_PP_LIST_FIRST(OLD) == BOOST_PP_LIST_FIRST(NEW)
+ // expands to a == a
+
+BOOST_PP_LIST_REST(OLD) == BOOST_PP_LIST_REST(NEW)
+ // expands to (b, (c, BOOST_PP_NIL)) == (b, (c, BOOST_PP_NIL))
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/ref/list_first_n.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/ref/list_first_n.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,62 @@
+<html>
+<head>
+ <title>BOOST_PP_LIST_FIRST_N</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_LIST_FIRST_N</b> macro expands to a <i>list</i> of the first <i>count</i> elements of a <i>list</i>.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_LIST_FIRST_N</b>(<i>count</i>, <i>list</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>count</dt>
+ <dd>
+ The number of elements to extract.
+ </dd>
+ <dt>list</dt>
+ <dd>
+ The <i>list</i> from which the elements are extracted.
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ This macro extracts <i>count</i> elements from the beginning of <i>list</i> and returns them as a <i>list</i>
+ </div>
+ <div>
+ Previously, this macro could not be used inside <b>BOOST_PP_WHILE</b>.
+ There is no longer any such restriction.
+ It is more efficient, however, to use <b>BOOST_PP_LIST_FIRST_N_D</b> in such a situation.
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li>BOOST_PP_LIST_FIRST_N_D</li>
+ </ul>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <boost/preprocessor/list/first_n.hpp>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+#include <boost/preprocessor/list/first_n.hpp>
+
+#define LIST (a, (b, (c, BOOST_PP_NIL)))
+
+BOOST_PP_LIST_FIRST_N(2, LIST) // expands to (a, (b, BOOST_PP_NIL))
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/ref/list_first_n_d.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/ref/list_first_n_d.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,71 @@
+<html>
+<head>
+ <title>BOOST_PP_LIST_FIRST_N_D</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_LIST_FIRST_N_D</b> macro expands to a <i>list</i> of the first <i>count</i> elements of a <i>list</i>.
+ It reenters <b>BOOST_PP_WHILE</b> with maximum efficiency.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_LIST_FIRST_N_D</b>(<i>d</i>, <i>count</i>, <i>list</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>d</dt>
+ <dd>
+ The next available <b>BOOST_PP_WHILE</b> iteration.
+ </dd>
+ <dt>count</dt>
+ <dd>
+ The number of elements to extract.
+ </dd>
+ <dt>list</dt>
+ <dd>
+ The <i>list</i> from which the elements are extracted.
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ This macro extracts <i>count</i> elements from the beginning of <i>list</i> and returns them as a <i>list</i>
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li>BOOST_PP_LIST_FIRST_N</li>
+ </ul>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <boost/preprocessor/list/first_n.hpp>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+#include <boost/preprocessor/list/first_n.hpp>
+#include <boost/preprocessor/list/fold_right.hpp>
+
+#define L1 (a, (b, (c, (d, BOOST_PP_NIL))))
+#define L2 (L1, (L1, (L1, BOOST_PP_NIL)))
+
+#define OP(d, state, x) (BOOST_PP_LIST_FIRST_N_D(d, 2, x), state)
+
+BOOST_PP_LIST_FOLD_RIGHT(OP, BOOST_PP_NIL, L2)
+/*
+ expands to...
+ ((a, (b, BOOST_PP_NIL)), ((a, (b, BOOST_PP_NIL)),
+ ((a, (b, BOOST_PP_NIL)) , BOOST_PP_NIL )))
+*/
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/ref/list_fold_left.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/ref/list_fold_left.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,75 @@
+<html>
+<head>
+ <title>BOOST_PP_LIST_FOLD_LEFT</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_LIST_FOLD_LEFT</b> macro folds (or accumulates) the elements of a <i>list</i> left-to-right.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_LIST_FOLD_LEFT</b>(<i>op</i>, <i>state</i>, <i>list</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>op</dt>
+ <dd>
+ A ternary operation of the form <i>op</i>(<i>d</i>, <i>state</i>, <i>elem</i>).
+ This macro is called for each element in <i>list</i>--each time returning a new <i>state</i>.
+ This operation is expanded by <b>BOOST_PP_LIST_FOLD_LEFT</b> with the next available <b>BOOST_PP_WHILE</b> iteration,
+ the current <i>state</i>, and the current element.
+ </dd>
+ <dt>state</dt>
+ <dd>
+ The initial state of the fold.
+ </dd>
+ <dt>list</dt>
+ <dd>
+ The <i>list</i> to be folded.
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ For the <i>list</i>, (<i>0</i>, (<i>1</i>, (<i>2</i>, <b>BOOST_PP_NIL</b>))), this macro expands to:
+ <div>
+ <i>op</i>(<i>d</i>, <i>op</i>(<i>d</i>, <i>op</i>(<i>d</i>, <i>state</i>, <i>0</i>), <i>1</i>), <i>2</i>)
+ </div>
+ </div>
+ <div>
+ Previously, this macro could not be used inside <b>BOOST_PP_WHILE</b>.
+ There is no longer any such restriction.
+ It is more efficient, however, to use <b>BOOST_PP_LIST_FOLD_LEFT_<i>d</i></b> in such a situation.
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li>BOOST_PP_LIST_FOLD_LEFT_d</li>
+ </ul>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <boost/preprocessor/list/fold_left.hpp>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+#include <boost/preprocessor/cat.hpp>
+#include <boost/preprocessor/list/fold_left.hpp>
+
+#define LIST (a, (b, (c, BOOST_PP_NIL)))
+
+#define OP(d, state, x) BOOST_PP_CAT(state, x)
+
+BOOST_PP_LIST_FOLD_LEFT(OP, _, LIST) // expands to _abc
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/ref/list_fold_left_2nd.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/ref/list_fold_left_2nd.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,75 @@
+<html>
+<head>
+ <title>BOOST_PP_LIST_FOLD_LEFT_2ND</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_LIST_FOLD_LEFT_2ND</b> macro folds (or accumulates) the elements of a <i>list</i> left-to-right.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_LIST_FOLD_LEFT_2ND</b>(<i>op</i>, <i>state</i>, <i>list</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>op</dt>
+ <dd>
+ A ternary operation of the form <i>op</i>(<i>d</i>, <i>state</i>, <i>elem</i>).
+ This macro is called for each element in <i>list</i>--each time returning a new <i>state</i>.
+ This operation is expanded by <b>BOOST_PP_LIST_FOLD_LEFT</b> with the next available <b>BOOST_PP_WHILE</b> iteration,
+ the current <i>state</i>, and the current element.
+ </dd>
+ <dt>state</dt>
+ <dd>
+ The initial state of the fold.
+ </dd>
+ <dt>list</dt>
+ <dd>
+ The <i>list</i> to be folded.
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ For the <i>list</i>, (<i>0</i>, (<i>1</i>, (<i>2</i>, <b>BOOST_PP_NIL</b>))), this macro expands to:
+ <div>
+ <i>op</i>(<i>d</i>, <i>op</i>(<i>d</i>, <i>op</i>(<i>d</i>, <i>state</i>, <i>0</i>), <i>1</i>), <i>2</i>)
+ </div>
+ </div>
+ <div>
+ This macro is deprecated.
+ Use <b>BOOST_PP_LIST_FOLD_LEFT_<i>d</i></b> instead.
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li>BOOST_PP_LIST_FOLD_LEFT</li>
+ <li>BOOST_PP_LIST_FOLD_LEFT_d</li>
+ </ul>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <boost/preprocessor/list/fold_left.hpp>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+#include <boost/preprocessor/cat.hpp>
+#include <boost/preprocessor/list/fold_left.hpp>
+
+#define LIST (a, (b, (c, BOOST_PP_NIL)))
+
+#define OP(d, state, x) BOOST_PP_CAT(state, x)
+
+BOOST_PP_LIST_FOLD_LEFT_2ND(OP, _, LIST) // expands to _abc
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/ref/list_fold_left_2nd_d.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/ref/list_fold_left_2nd_d.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,86 @@
+<html>
+<head>
+ <title>BOOST_PP_LIST_FOLD_LEFT_2ND_D</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_LIST_FOLD_LEFT_2ND_D</b> macro folds (or accumulates) the elements of a <i>list</i> left-to-right.
+ It reenters <b>BOOST_PP_WHILE</b> with maximum efficiency.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_LIST_FOLD_LEFT_2ND_D</b>(<i>d</i>, <i>op</i>, <i>state</i>, <i>list</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>d</dt>
+ <dd>
+ The next available <b>BOOST_PP_WHILE</b> iteration.
+ </dd>
+ <dt>op</dt>
+ <dd>
+ A ternary operation of the form <i>op</i>(<i>d</i>, <i>state</i>, <i>elem</i>).
+ This macro is called for each element in <i>list</i>--each time returning a new <i>state</i>.
+ This operation is expanded by <b>BOOST_PP_LIST_FOLD_LEFT</b> with the next available <b>BOOST_PP_WHILE</b> iteration,
+ the current <i>state</i>, and the current element.
+ </dd>
+ <dt>state</dt>
+ <dd>
+ The initial state of the fold.
+ </dd>
+ <dt>list</dt>
+ <dd>
+ The <i>list</i> to be folded.
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ For the <i>list</i>, (<i>0</i>, (<i>1</i>, (<i>2</i>, <b>BOOST_PP_NIL</b>))), this macro expands to:
+ <div>
+ <i>op</i>(<i>d</i>, <i>op</i>(<i>d</i>, <i>op</i>(<i>d</i>, <i>state</i>, <i>0</i>), <i>1</i>), <i>2</i>)
+ </div>
+ </div>
+ <div>
+ This macro has been superceded by <b>BOOST_PP_LIST_FOLD_LEFT_<i>d</i></b> and is deprecated.
+ It only allows a single reentry into <b>BOOST_PP_LIST_FOLD_LEFT</b>.
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li>BOOST_PP_LIST_FOLD_LEFT</li>
+ <li>BOOST_PP_LIST_FOLD_LEFT_d</li>
+ </ul>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <boost/preprocessor/list/fold_left.hpp>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+#include <boost/preprocessor/cat.hpp>
+#include <boost/preprocessor/list/fold_left.hpp>
+
+#define L1 (a, (b, (c, BOOST_PP_NIL)))
+#define L2 (L1, (L1, (L1, BOOST_PP_NIL)))
+
+#define OP(d, state, x) (BOOST_PP_LIST_FOLD_LEFT_2ND_D(d, OP_2, _, x), state)
+#define OP_2(d, state, x) BOOST_PP_CAT(state, x)
+
+BOOST_PP_LIST_FOLD_LEFT(OP, BOOST_PP_NIL, L2)
+/*
+ expands to:
+ (_abc , (_abc , (_abc , BOOST_PP_NIL)))
+*/
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/ref/list_fold_left_d.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/ref/list_fold_left_d.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,81 @@
+<html>
+<head>
+ <title>BOOST_PP_LIST_FOLD_LEFT_d</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_LIST_FOLD_LEFT_<i>d</i></b> macro folds (or accumulates) the elements of a <i>list</i> left-to-right.
+ It reenters <b>BOOST_PP_WHILE</b> with maximum efficiency.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_LIST_FOLD_LEFT_</b> ## <i>d</i>(<i>op</i>, <i>state</i>, <i>list</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>d</dt>
+ <dd>
+ The next available <b>BOOST_PP_WHILE</b> iteration.
+ </dd>
+ <dt>op</dt>
+ <dd>
+ A ternary operation of the form <i>op</i>(<i>d</i>, <i>state</i>, <i>elem</i>).
+ This macro is called for each element in <i>list</i>--each time returning a new <i>state</i>.
+ This operation is expanded by <b>BOOST_PP_LIST_FOLD_LEFT</b> with the next available <b>BOOST_PP_WHILE</b> iteration,
+ the current <i>state</i>, and the current element.
+ </dd>
+ <dt>state</dt>
+ <dd>
+ The initial state of the fold.
+ </dd>
+ <dt>list</dt>
+ <dd>
+ The <i>list</i> to be folded.
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ For the <i>list</i>, (<i>0</i>, (<i>1</i>, (<i>2</i>, <b>BOOST_PP_NIL</b>))), this macro expands to:
+ <div>
+ <i>op</i>(<i>d</i>, <i>op</i>(<i>d</i>, <i>op</i>(<i>d</i>, <i>state</i>, <i>0</i>), <i>1</i>), <i>2</i>)
+ </div>
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li>BOOST_PP_LIST_FOLD_LEFT</li>
+ </ul>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <boost/preprocessor/list/fold_left.hpp>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+#include <boost/preprocessor/cat.hpp>
+#include <boost/preprocessor/list/fold_left.hpp>
+
+#define L1 (a, (b, (c, BOOST_PP_NIL)))
+#define L2 (L1, (L1, (L1, BOOST_PP_NIL)))
+
+#define OP(d, state, x) (BOOST_PP_LIST_FOLD_LEFT_ ## d(OP_2, _, x), state)
+#define OP_2(d, state, x) BOOST_PP_CAT(state, x)
+
+BOOST_PP_LIST_FOLD_LEFT(OP, BOOST_PP_NIL, L2)
+/*
+ expands to:
+ (_abc, (_abc, (_abc, BOOST_PP_NIL)))
+*/
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/ref/list_fold_left_d_old.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/ref/list_fold_left_d_old.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,86 @@
+<html>
+<head>
+ <title>BOOST_PP_LIST_FOLD_LEFT_D</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_LIST_FOLD_LEFT_D</b> macro folds (or accumulates) the elements of a <i>list</i> left-to-right.
+ It reenters <b>BOOST_PP_WHILE</b> with maximum efficiency.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_LIST_FOLD_LEFT_D</b>(<i>d</i>, <i>op</i>, <i>state</i>, <i>list</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>d</dt>
+ <dd>
+ The next available <b>BOOST_PP_WHILE</b> iteration.
+ </dd>
+ <dt>op</dt>
+ <dd>
+ A ternary operation of the form <i>op</i>(<i>d</i>, <i>state</i>, <i>elem</i>).
+ This macro is called for each element in <i>list</i>--each time returning a new <i>state</i>.
+ This operation is expanded by <b>BOOST_PP_LIST_FOLD_LEFT</b> with the next available <b>BOOST_PP_WHILE</b> iteration,
+ the current <i>state</i>, and the current element.
+ </dd>
+ <dt>state</dt>
+ <dd>
+ The initial state of the fold.
+ </dd>
+ <dt>list</dt>
+ <dd>
+ The <i>list</i> to be folded.
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ For the <i>list</i>, (<i>0</i>, (<i>1</i>, (<i>2</i>, <b>BOOST_PP_NIL</b>))), this macro expands to:
+ <div>
+ <i>op</i>(<i>d</i>, <i>op</i>(<i>d</i>, <i>op</i>(<i>d</i>, <i>state</i>, <i>0</i>), <i>1</i>), <i>2</i>)
+ </div>
+ </div>
+ <div>
+ This macro has been superceded by <b>BOOST_PP_LIST_FOLD_LEFT_<i>d</i></b> and is deprecated.
+ It only allows a single reentry into <b>BOOST_PP_LIST_FOLD_LEFT</b>.
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li>BOOST_PP_LIST_FOLD_LEFT</li>
+ <li>BOOST_PP_LIST_FOLD_LEFT_d</li>
+ </ul>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <boost/preprocessor/list/fold_left.hpp>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+#include <boost/preprocessor/cat.hpp>
+#include <boost/preprocessor/list/fold_left.hpp>
+
+#define L1 (a, (b, (c, BOOST_PP_NIL)))
+#define L2 (L1, (L1, (L1, BOOST_PP_NIL)))
+
+#define OP(d, state, x) (BOOST_PP_LIST_FOLD_LEFT_D(d, OP_2, _, x), state)
+#define OP_2(d, state, x) BOOST_PP_CAT(state, x)
+
+BOOST_PP_LIST_FOLD_LEFT(OP, BOOST_PP_NIL, L2)
+/*
+ expands to:
+ (_abc, (_abc, (_abc, BOOST_PP_NIL)))
+*/
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/ref/list_fold_right.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/ref/list_fold_right.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,79 @@
+<html>
+<head>
+ <title>BOOST_PP_LIST_FOLD_RIGHT</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_LIST_FOLD_RIGHT</b> macro folds (or accumulates) the elements of a <i>list</i> right-to-left.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_LIST_FOLD_RIGHT</b>(<i>op</i>, <i>state</i>, <i>list</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>op</dt>
+ <dd>
+ A ternary operation of the form <i>op</i>(<i>d</i>, <i>state</i>, <i>elem</i>).
+ This macro is called for each element in <i>list</i>--each time returning a new <i>state</i>.
+ This operation is expanded by <b>BOOST_PP_LIST_FOLD_RIGHT</b> with the next available <b>BOOST_PP_WHILE</b> iteration,
+ the current <i>state</i>, and the current element.
+ </dd>
+ <dt>state</dt>
+ <dd>
+ The initial state of the fold.
+ </dd>
+ <dt>list</dt>
+ <dd>
+ The <i>list</i> to be folded.
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ This macro does not have the same signature as it previously did.
+ The arguments have been swapped to provide a uniform interface with <b>BOOST_PP_LIST_FOLD_LEFT</b>.
+ </div>
+ <div>
+ For the <i>list</i>, (<i>0</i>, (<i>1</i>, (<i>2</i>, <b>BOOST_PP_NIL</b>))), this macro expands to:
+ <div>
+ <i>op</i>(<i>d</i>, <i>op</i>(<i>d</i>, <i>op</i>(<i>d</i>, <i>state</i>, <i>2</i>), <i>1</i>), <i>0</i>)
+ </div>
+ </div>
+ <div>
+ Previously, this macro could not be used inside <b>BOOST_PP_WHILE</b>.
+ There is no longer any such restriction.
+ It is more efficient, however, to use <b>BOOST_PP_LIST_FOLD_RIGHT_<i>d</i></b> in such a situation.
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li>BOOST_PP_LIST_FOLD_RIGHT_d</li>
+ </ul>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <boost/preprocessor/list/fold_right.hpp>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+#include <boost/preprocessor/cat.hpp>
+#include <boost/preprocessor/list/fold_right.hpp>
+
+#define LIST (a, (b, (c, BOOST_PP_NIL)))
+
+#define OP(d, state, x) BOOST_PP_CAT(state, x)
+
+BOOST_PP_LIST_FOLD_RIGHT(OP, _, LIST) // expands to _cba
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/ref/list_fold_right_2nd.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/ref/list_fold_right_2nd.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,79 @@
+<html>
+<head>
+ <title>BOOST_PP_LIST_FOLD_RIGHT_2ND</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_LIST_FOLD_RIGHT_2ND</b> macro folds (or accumulates) the elements of a <i>list</i> right-to-left.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_LIST_FOLD_RIGHT_2ND</b>(<i>op</i>, <i>state</i>, <i>list</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>op</dt>
+ <dd>
+ A ternary operation of the form <i>op</i>(<i>d</i>, <i>state</i>, <i>elem</i>).
+ This macro is called for each element in <i>list</i>--each time returning a new <i>state</i>.
+ This operation is expanded by <b>BOOST_PP_LIST_FOLD_RIGHT</b> with the next available <b>BOOST_PP_WHILE</b> iteration,
+ the current <i>state</i>, and the current element.
+ </dd>
+ <dt>state</dt>
+ <dd>
+ The initial state of the fold.
+ </dd>
+ <dt>list</dt>
+ <dd>
+ The <i>list</i> to be folded.
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ This macro does not have the same signature as it previously did.
+ The arguments have been swapped to provide a uniform interface with <b>BOOST_PP_LIST_FOLD_LEFT</b>.
+ </div>
+ <div>
+ For the <i>list</i>, (<i>0</i>, (<i>1</i>, (<i>2</i>, <b>BOOST_PP_NIL</b>))), this macro expands to:
+ <div>
+ <i>op</i>(<i>d</i>, <i>op</i>(<i>d</i>, <i>op</i>(<i>d</i>, <i>state</i>, <i>0</i>), <i>1</i>), <i>2</i>)
+ </div>
+ </div>
+ <div>
+ This macro is deprecated.
+ Use <b>BOOST_PP_LIST_FOLD_RIGHT_<i>d</i></b> instead.
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li>BOOST_PP_LIST_FOLD_RIGHT</li>
+ <li>BOOST_PP_LIST_FOLD_RIGHT_d</li>
+ </ul>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <boost/preprocessor/list/fold_right.hpp>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+#include <boost/preprocessor/cat.hpp>
+#include <boost/preprocessor/list/fold_right.hpp>
+
+#define LIST (a, (b, (c, BOOST_PP_NIL)))
+
+#define OP(d, state, x) BOOST_PP_CAT(state, x)
+
+BOOST_PP_LIST_FOLD_RIGHT_2ND(OP, _, LIST) // expands to _cba
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/ref/list_fold_right_2nd_d.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/ref/list_fold_right_2nd_d.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,86 @@
+<html>
+<head>
+ <title>BOOST_PP_LIST_FOLD_RIGHT_2ND_D</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_LIST_FOLD_RIGHT_2ND_D</b> macro folds (or accumulates) the elements of a <i>list</i> right-to-left.
+ It reenters <b>BOOST_PP_WHILE</b> with maximum efficiency.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_LIST_FOLD_RIGHT_2ND_D</b>(<i>d</i>, <i>op</i>, <i>state</i>, <i>list</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>d</dt>
+ <dd>
+ The next available <b>BOOST_PP_WHILE</b> iteration.
+ </dd>
+ <dt>op</dt>
+ <dd>
+ A ternary operation of the form <i>op</i>(<i>d</i>, <i>state</i>, <i>elem</i>).
+ This macro is called for each element in <i>list</i>--each time returning a new <i>state</i>.
+ This operation is expanded by <b>BOOST_PP_LIST_FOLD_RIGHT</b> with the next available <b>BOOST_PP_WHILE</b> iteration,
+ the current <i>state</i>, and the current element.
+ </dd>
+ <dt>state</dt>
+ <dd>
+ The initial state of the fold.
+ </dd>
+ <dt>list</dt>
+ <dd>
+ The <i>list</i> to be folded.
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ For the <i>list</i>, (<i>0</i>, (<i>1</i>, (<i>2</i>, <b>BOOST_PP_NIL</b>))), this macro expands to:
+ <div>
+ <i>op</i>(<i>d</i>, <i>op</i>(<i>d</i>, <i>op</i>(<i>d</i>, <i>state</i>, <i>0</i>), <i>1</i>), <i>2</i>)
+ </div>
+ </div>
+ <div>
+ This macro has been superceded by <b>BOOST_PP_LIST_FOLD_RIGHT_<i>d</i></b> and is deprecated.
+ It only allows a single reentry into <b>BOOST_PP_LIST_FOLD_RIGHT</b>.
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li>BOOST_PP_LIST_FOLD_RIGHT</li>
+ <li>BOOST_PP_LIST_FOLD_RIGHT_d</li>
+ </ul>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <boost/preprocessor/list/fold_right.hpp>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+#include <boost/preprocessor/cat.hpp>
+#include <boost/preprocessor/list/fold_right.hpp>
+
+#define L1 (a, (b, (c, BOOST_PP_NIL)))
+#define L2 (L1, (L1, (L1, BOOST_PP_NIL)))
+
+#define OP(d, state, x) (BOOST_PP_LIST_FOLD_RIGHT_2ND_D(d, OP_2, _, x), state)
+#define OP_2(d, state, x) BOOST_PP_CAT(state, x)
+
+BOOST_PP_LIST_FOLD_RIGHT(OP, BOOST_PP_NIL, L2)
+/*
+ expands to:
+ (_cba , (_cba , (_cba , BOOST_PP_NIL)))
+*/
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/ref/list_fold_right_d.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/ref/list_fold_right_d.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,81 @@
+<html>
+<head>
+ <title>BOOST_PP_LIST_FOLD_RIGHT_d</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_LIST_FOLD_RIGHT_<i>d</i></b> macro folds (or accumulates) the elements of a <i>list</i> right-to-left.
+ It reenters <b>BOOST_PP_WHILE</b> with maximum efficiency.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_LIST_FOLD_RIGHT_</b> ## <i>d</i>(<i>op</i>, <i>state</i>, <i>list</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>d</dt>
+ <dd>
+ The next available <b>BOOST_PP_WHILE</b> iteration.
+ </dd>
+ <dt>op</dt>
+ <dd>
+ A ternary operation of the form <i>op</i>(<i>d</i>, <i>state</i>, <i>elem</i>).
+ This macro is called for each element in <i>list</i>--each time returning a new <i>state</i>.
+ This operation is expanded by <b>BOOST_PP_LIST_FOLD_RIGHT</b> with the next available <b>BOOST_PP_WHILE</b> iteration,
+ the current <i>state</i>, and the current element.
+ </dd>
+ <dt>state</dt>
+ <dd>
+ The initial state of the fold.
+ </dd>
+ <dt>list</dt>
+ <dd>
+ The <i>list</i> to be folded.
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ For the <i>list</i>, (<i>0</i>, (<i>1</i>, (<i>2</i>, <b>BOOST_PP_NIL</b>))), this macro expands to:
+ <div>
+ <i>op</i>(<i>d</i>, <i>op</i>(<i>d</i>, <i>op</i>(<i>d</i>, <i>state</i>, <i>2</i>), <i>1</i>), <i>0</i>)
+ </div>
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li>BOOST_PP_LIST_FOLD_RIGHT</li>
+ </ul>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <boost/preprocessor/list/fold_right.hpp>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+#include <boost/preprocessor/cat.hpp>
+#include <boost/preprocessor/list/fold_right.hpp>
+
+#define L1 (a, (b, (c, BOOST_PP_NIL)))
+#define L2 (L1, (L1, (L1, BOOST_PP_NIL)))
+
+#define OP(d, state, x) (BOOST_PP_LIST_FOLD_RIGHT_ ## d(OP_2, _, x), state)
+#define OP_2(d, state, x) BOOST_PP_CAT(state, x)
+
+BOOST_PP_LIST_FOLD_RIGHT(OP, BOOST_PP_NIL, L2)
+/*
+ expands to:
+ (_cba, (_cba, (_cba, BOOST_PP_NIL)))
+*/
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/ref/list_fold_right_d_old.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/ref/list_fold_right_d_old.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,90 @@
+<html>
+<head>
+ <title>BOOST_PP_LIST_FOLD_RIGHT_D</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_LIST_FOLD_RIGHT_D</b> macro folds (or accumulates) the elements of a <i>list</i> right-to-left.
+ It reenters <b>BOOST_PP_WHILE</b> with maximum efficiency.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_LIST_FOLD_RIGHT_D</b>(<i>d</i>, <i>op</i>, <i>state</i>, <i>list</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>d</dt>
+ <dd>
+ The next available <b>BOOST_PP_WHILE</b> iteration.
+ </dd>
+ <dt>op</dt>
+ <dd>
+ A ternary operation of the form <i>op</i>(<i>d</i>, <i>state</i>, <i>elem</i>).
+ This macro is called for each element in <i>list</i>--each time returning a new <i>state</i>.
+ This operation is expanded by <b>BOOST_PP_LIST_FOLD_RIGHT</b> with the next available <b>BOOST_PP_WHILE</b> iteration,
+ the current <i>state</i>, and the current element.
+ </dd>
+ <dt>state</dt>
+ <dd>
+ The initial state of the fold.
+ </dd>
+ <dt>list</dt>
+ <dd>
+ The <i>list</i> to be folded.
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ This macro does not have the same signature as it previously did.
+ The arguments have been swapped to provide a uniform interface with <b>BOOST_PP_LIST_FOLD_LEFT</b>.
+ </div>
+ <div>
+ For the <i>list</i>, (<i>0</i>, (<i>1</i>, (<i>2</i>, <b>BOOST_PP_NIL</b>))), this macro expands to:
+ <div>
+ <i>op</i>(<i>d</i>, <i>op</i>(<i>d</i>, <i>op</i>(<i>d</i>, <i>state</i>, <i>2</i>), <i>1</i>), <i>0</i>)
+ </div>
+ </div>
+ <div>
+ This macro has been superceded by <b>BOOST_PP_LIST_FOLD_RIGHT_<i>d</i></b> and is deprecated.
+ It only allows a single reentry into <b>BOOST_PP_LIST_FOLD_RIGHT</b>.
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li>BOOST_PP_LIST_FOLD_RIGHT</li>
+ <li>BOOST_PP_LIST_FOLD_RIGHT_d</li>
+ </ul>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <boost/preprocessor/list/fold_right.hpp>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+#include <boost/preprocessor/cat.hpp>
+#include <boost/preprocessor/list/fold_right.hpp>
+
+#define L1 (a, (b, (c, BOOST_PP_NIL)))
+#define L2 (L1, (L1, (L1, BOOST_PP_NIL)))
+
+#define OP(d, state, x) (BOOST_PP_LIST_FOLD_RIGHT_D(d, OP_2, _, x), state)
+#define OP_2(d, state, x) BOOST_PP_CAT(state, x)
+
+BOOST_PP_LIST_FOLD_RIGHT(OP, BOOST_PP_NIL, L2)
+/*
+ expands to:
+ (_cba, (_cba, (_cba, BOOST_PP_NIL)))
+*/
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/ref/list_for_each.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/ref/list_for_each.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,75 @@
+<html>
+<head>
+ <title>BOOST_PP_LIST_FOR_EACH</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_LIST_FOR_EACH</b> macro repeats a macro for each element in a <i>list</i>.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_LIST_FOR_EACH</b>(<i>macro</i>, <i>data</i>, <i>list</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>macro</dt>
+ <dd>
+ A ternary macro of the form <i>macro</i>(<i>r</i>, <i>data</i>, <i>elem</i>).
+ This macro is expanded by <b>BOOST_PP_LIST_FOR_EACH</b> with each element in <i>list</i>.
+ It is expanded with the next available <b>BOOST_PP_FOR</b> repetition, the auxiliary <i>data</i>, and the current element.
+ </dd>
+ <dt>data</dt>
+ <dd>
+ Auxiliary data passed to <i>macro</i>.
+ </dd>
+ <dt>list</dt>
+ <dd>
+ The <i>list</i> for which <i>macro</i> will be invoked on each element.
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ This macro is a repetition construct.
+ If <i>list</i> is (<i>a</i>, (<i>b</i>, (<i>c</i>, <b>BOOST_PP_NIL</b>))), it expands to the sequence:
+ <div>
+ <i>macro</i>(<i>r</i>, <i>data</i>, <i>a</i>) <i>macro</i>(<i>r</i>, <i>data</i>, <i>b</i>) <i>macro</i>(<i>r</i>, <i>data</i>, <i>c</i>)
+ </div>
+ </div>
+ <div>
+ Previously, this macro could not be used inside <b>BOOST_PP_FOR</b>.
+ There is no longer any such restriction.
+ It is more efficient, however, to use <b>BOOST_PP_LIST_FOR_EACH_R</b> in such a situation.
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li>BOOST_PP_LIST_FOR_EACH_R</li>
+ </ul>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <boost/preprocessor/list/for_each.hpp>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+#include <boost/preprocessor/cat.hpp>
+#include <boost/preprocessor/list/for_each.hpp>
+
+#define LIST (w, (x, (y, (z, BOOST_PP_NIL))))
+
+#define MACRO(r, data, elem) BOOST_PP_CAT(elem, data)
+
+BOOST_PP_LIST_FOR_EACH(MACRO, _, LIST) // expands to w_ x_ y_ z_
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/ref/list_for_each_i.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/ref/list_for_each_i.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,75 @@
+<html>
+<head>
+ <title>BOOST_PP_LIST_FOR_EACH_I</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_LIST_FOR_EACH_I</b> macro repeats a macro for each element in a <i>list</i>.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_LIST_FOR_EACH_I</b>(<i>macro</i>, <i>data</i>, <i>list</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>macro</dt>
+ <dd>
+ A macro of the form <i>macro</i>(<i>r</i>, <i>data</i>, <i>i</i>, <i>elem</i>).
+ This macro is expanded by <b>BOOST_PP_LIST_FOR_EACH_I</b> with each element in <i>list</i>.
+ It is expanded with the next available <b>BOOST_PP_FOR</b> repetition, the auxiliary <i>data</i>, the index of the current element, and the current element.
+ </dd>
+ <dt>data</dt>
+ <dd>
+ Auxiliary data passed to <i>macro</i>.
+ </dd>
+ <dt>list</dt>
+ <dd>
+ The <i>list</i> for which <i>macro</i> will be invoked on each element.
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ This macro is a repetition construct.
+ If <i>list</i> is (<i>a</i>, (<i>b</i>, (<i>c</i>, <b>BOOST_PP_NIL</b>))), it expands to the sequence:
+ <div>
+ <i>macro</i>(<i>r</i>, <i>data</i>, <i>0</i>, <i>a</i>) <i>macro</i>(<i>r</i>, <i>data</i>, <i>1</i>, <i>b</i>) <i>macro</i>(<i>r</i>, <i>data</i>, <i>2</i>, <i>c</i>)
+ </div>
+ </div>
+ <div>
+ Previously, this macro could not be used inside <b>BOOST_PP_FOR</b>.
+ There is no longer any such restriction.
+ It is more efficient, however, to use <b>BOOST_PP_LIST_FOR_EACH_I_R</b> in such a situation.
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li>BOOST_PP_LIST_FOR_EACH_I_R</li>
+ </ul>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <boost/preprocessor/list/for_each_i.hpp>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+#include <boost/preprocessor/cat.hpp>
+#include <boost/preprocessor/list/for_each_i.hpp>
+
+#define LIST (w, (x, (y, (z, BOOST_PP_NIL))))
+
+#define MACRO(r, data, i, elem) BOOST_PP_CAT(elem, BOOST_PP_CAT(data, i))
+
+BOOST_PP_LIST_FOR_EACH_I(MACRO, _, LIST) // expands to w_0 x_1 y_2 z_3
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/ref/list_for_each_i_r.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/ref/list_for_each_i_r.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,82 @@
+<html>
+<head>
+ <title>BOOST_PP_LIST_FOR_EACH_I_R</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_LIST_FOR_EACH_I_R</b> macro repeats a macro for each element in a <i>list</i>.
+ It reenters <b>BOOST_PP_FOR</b> with maximum efficiency.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_LIST_FOR_EACH_I_R</b>(<i>r</i>, <i>macro</i>, <i>data</i>, <i>list</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>r</dt>
+ <dd>
+ The next available <b>BOOST_PP_FOR</b> repetition.
+ </dd>
+ <dt>macro</dt>
+ <dd>
+ A macro of the for <i>macro</i>(<i>r</i>, <i>data</i>, <i>i</i>, <i>elem</i>).
+ This macro is expanded by <b>BOOST_PP_LIST_FOR_EACH_I</b> with each element in <i>list</i>.
+ It is expanded with the next available <b>BOOST_PP_FOR</b> repetition, the auxiliary <i>data</i>, the index of the current element, and the current element.
+ </dd>
+ <dt>data</dt>
+ <dd>
+ Auxiliary data passed to <i>macro</i>.
+ </dd>
+ <dt>list</dt>
+ <dd>
+ The <i>list</i> for which <i>macro</i> will be invoked on each element.
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ This macro is a repetition construct.
+ If <i>list</i> is (<i>a</i>, (<i>b</i>, (<i>c</i>, <b>BOOST_PP_NIL</b>))), it expands to the sequence:
+ <div>
+ <i>macro</i>(<i>r</i>, <i>data</i>, <i>0</i>, <i>a</i>) <i>macro</i>(<i>r</i>, <i>data</i>, <i>1</i>, <i>b</i>) <i>macro</i>(<i>r</i>, <i>data</i>, <i>2</i>, <i>c</i>)
+ </div>
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li>BOOST_PP_LIST_FOR_EACH_I</li>
+ </ul>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <boost/preprocessor/list/for_each_i.hpp>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+#include <boost/preprocessor/cat.hpp>
+#include <boost/preprocessor/list/adt.hpp>
+#include <boost/preprocessor/list/for_each_i.hpp>
+#include <boost/preprocessor/repetition/for.hpp>
+
+#define LIST (x, (y, (z, BOOST_PP_NIL)))
+
+#define MACRO_2(r, data, i, elem) BOOST_PP_CAT(elem, i)
+
+#define PRED(r, state) BOOST_PP_LIST_IS_CONS(state)
+#define OP(r, state) BOOST_PP_LIST_REST(state)
+#define MACRO(r, state) [ BOOST_PP_LIST_FOR_EACH_I_R(r, MACRO_2, _, state) ]
+
+BOOST_PP_FOR(LIST, PRED, OP, MACRO)
+ // expands to [x0 y1 z2] [y0 z1] [z0]
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/ref/list_for_each_product.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/ref/list_for_each_product.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,86 @@
+<html>
+<head>
+ <title>BOOST_PP_LIST_FOR_EACH_PRODUCT</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_LIST_FOR_EACH_PRODUCT</b> macro repeats a macro for each cartesian product of several <i>lists</i>.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_LIST_FOR_EACH_PRODUCT</b>(<i>macro</i>, <i>size</i>, <i>tuple</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>macro</dt>
+ <dd>
+ The binary macro of the form <i>macro</i>(<i>r</i>, <i>product</i>).
+ This macro is expanded by <b>BOOST_PP_FOR_EACH_PRODUCT</b> with each cartesian product in <i>tuple</i>.
+ It is expanded with the next available <b>BOOST_PP_FOR</b> repetition and a <i>tuple</i> containing a cartesian product.
+ This <i>tuple</i> will have <i>size</i> elements.
+ </dd>
+ <dt>size</dt>
+ <dd>
+ The size of <i>tuple</i>.
+ </dd>
+ <dt>tuple</dt>
+ <dd>
+ A <i>tuple</i> of <i>lists</i> from which cartesian products are obtained.
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ This macro is a repetition construct.
+ If two <i>lists</i> are (<i>a</i>, (<i>b</i>, (<i>c</i>, <b>BOOST_PP_NIL</b>))) and (<i>x</i>, (<i>y</i>, (<i>z</i>, <b>BOOST_PP_NIL</b>))),
+ this macro will produce the following sequence:
+ <div>
+ <i>macro</i>(<i>r</i>, (<i>a</i>, <i>x</i>))
+ <i>macro</i>(<i>r</i>, (<i>a</i>, <i>y</i>))
+ <i>macro</i>(<i>r</i>, (<i>a</i>, <i>z</i>))<br>
+ <i>macro</i>(<i>r</i>, (<i>b</i>, <i>x</i>))
+ <i>macro</i>(<i>r</i>, (<i>b</i>, <i>y</i>))
+ <i>macro</i>(<i>r</i>, (<i>b</i>, <i>z</i>))<br>
+ <i>macro</i>(<i>r</i>, (<i>c</i>, <i>x</i>))
+ <i>macro</i>(<i>r</i>, (<i>c</i>, <i>y</i>))
+ <i>macro</i>(<i>r</i>, (<i>c</i>, <i>z</i>))
+ </div>
+ </div>
+ <div>
+ Previously, this macro could not be used inside <b>BOOST_PP_FOR</b>.
+ There is no longer any such restriction.
+ It is more efficient, however, to use <b>BOOST_PP_LIST_FOR_EACH_PRODUCT_R</b> in such a situation.
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li>BOOST_PP_LIST_FOR_EACH_PRODUCT_R</li>
+ </ul>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <boost/preprocessor/list/for_each_product.hpp>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+#include <boost/preprocessor/list/for_each_product.hpp>
+
+#define L1 (a, (b, (c, BOOST_PP_NIL)))
+#define L2 (x, (y, (z, BOOST_PP_NIL)))
+
+#define MACRO(r, product) product
+
+BOOST_PP_LIST_FOR_EACH_PRODUCT(MACRO, 2, (L1, L2))
+ // expands to (a, x) (a, y) (a, z) (b, x) (b, y) (b, z) (c, x) (c, y) (c, z)
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/ref/list_for_each_product_r.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/ref/list_for_each_product_r.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,118 @@
+<html>
+<head>
+ <title>BOOST_PP_LIST_FOR_EACH_PRODUCT_R</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_LIST_FOR_EACH_PRODUCT_R</b> macro repeats a macro for each cartesian product of several <i>lists</i>.
+ It reenters <b>BOOST_PP_FOR</b> with maximum efficiency.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_LIST_FOR_EACH_PRODUCT_R</b>(<i>r</i>, <i>macro</i>, <i>size</i>, <i>tuple</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>r</dt>
+ <dd>
+ The next available <b>BOOST_PP_FOR</b> repetition.
+ </dd>
+ <dt>macro</dt>
+ <dd>
+ The binary macro of the form <i>macro</i>(<i>r</i>, <i>product</i>).
+ This macro is expanded by <b>BOOST_PP_FOR_EACH_PRODUCT</b> with each cartesian product in <i>tuple</i>.
+ It is expanded with the next available <b>BOOST_PP_FOR</b> repetition and a <i>tuple</i> containing a cartesian product.
+ This <i>tuple</i> will have <i>size</i> elements.
+ </dd>
+ <dt>size</dt>
+ <dd>
+ The size of <i>tuple</i>.
+ </dd>
+ <dt>tuple</dt>
+ <dd>
+ A <i>tuple</i> of <i>lists</i> from which cartesian products are obtained.
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ This macro is a repetition construct.
+ If two <i>lists</i> are (<i>a</i>, (<i>b</i>, (<i>c</i>, <b>BOOST_PP_NIL</b>))) and (<i>x</i>, (<i>y</i>, (<i>z</i>, <b>BOOST_PP_NIL</b>))),
+ this macro will produce the following sequence:
+ <div>
+ <i>macro</i>(<i>r</i>, (<i>a</i>, <i>x</i>))
+ <i>macro</i>(<i>r</i>, (<i>a</i>, <i>y</i>))
+ <i>macro</i>(<i>r</i>, (<i>a</i>, <i>z</i>))<br>
+ <i>macro</i>(<i>r</i>, (<i>b</i>, <i>x</i>))
+ <i>macro</i>(<i>r</i>, (<i>b</i>, <i>y</i>))
+ <i>macro</i>(<i>r</i>, (<i>b</i>, <i>z</i>))<br>
+ <i>macro</i>(<i>r</i>, (<i>c</i>, <i>x</i>))
+ <i>macro</i>(<i>r</i>, (<i>c</i>, <i>y</i>))
+ <i>macro</i>(<i>r</i>, (<i>c</i>, <i>z</i>))
+ </div>
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li>BOOST_PP_LIST_FOR_EACH_PRODUCT</li>
+ </ul>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <boost/preprocessor/list/for_each_product.hpp>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+#include <boost/preprocessor/arithmetic/dec.hpp>
+#include <boost/preprocessor/list/for_each_product.hpp>
+#include <boost/preprocessor/repetition/for.hpp>
+#include <boost/preprocessor/tuple/elem.hpp>
+
+#define L1 (a, (b, BOOST_PP_NIL))
+#define L2 (x, (y, BOOST_PP_NIL))
+
+#define PRED(r, state) BOOST_PP_TUPLE_ELEM(2, 0, state)
+
+#define OP(r, state) \
+ ( \
+ BOOST_PP_DEC( \
+ BOOST_PP_TUPLE_ELEM(2, 0, state) \
+ ), \
+ BOOST_PP_TUPLE_ELEM(2, 1, state) \
+ ) \
+ /**/
+
+#define MACRO(r, state) \
+ MACRO_I( \
+ r, \
+ BOOST_PP_TUPLE_ELEM(2, 0, state), \
+ BOOST_PP_TUPLE_ELEM(2, 1, state) \
+ ) \
+ /**/
+
+#define MACRO_I(r, c, t) \
+ BOOST_PP_LIST_FOR_EACH_PRODUCT_R( \
+ r, MACRO_P, 2, \
+ ( \
+ BOOST_PP_TUPLE_ELEM(2, BOOST_PP_DEC(c), t), \
+ BOOST_PP_TUPLE_ELEM(2, BOOST_PP_DEC(c), t) \
+ ) \
+ ) \
+ /**/
+
+#define MACRO_P(r, product) product
+
+BOOST_PP_FOR((2, (L1, L2)), PRED, OP, MACRO)
+ // expands to (x, x) (x, y) (y, x) (y, y) (a, a) (a, b) (b, a) (b, b)
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/ref/list_for_each_r.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/ref/list_for_each_r.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,81 @@
+<html>
+<head>
+ <title>BOOST_PP_LIST_FOR_EACH_R</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_LIST_FOR_EACH_R</b> macro repeats a macro for each element in a <i>list</i>.
+ It reenters <b>BOOST_PP_FOR</b> with maximum efficiency.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_LIST_FOR_EACH_R</b>(<i>r</i>, <i>macro</i>, <i>data</i>, <i>list</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>r</dt>
+ <dd>
+ The next available <b>BOOST_PP_FOR</b> repetition.
+ </dd>
+ <dt>macro</dt>
+ <dd>
+ A ternary macro of the form <i>macro</i>(<i>r</i>, <i>data</i>, <i>elem</i>).
+ This macro is expanded by <b>BOOST_PP_LIST_FOR_EACH</b> with each element in <i>list</i>.
+ It is expanded with the next available <b>BOOST_PP_FOR</b> repetition, the auxiliary <i>data</i>, and the current element.
+ </dd>
+ <dt>data</dt>
+ <dd>
+ Auxiliary data passed to <i>macro</i>.
+ </dd>
+ <dt>list</dt>
+ <dd>
+ The <i>list</i> for which <i>macro</i> will be invoked on each element.
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ This macro is a repetition construct.
+ If <i>list</i> is (<i>a</i>, (<i>b</i>, (<i>c</i>, <b>BOOST_PP_NIL</b>))), it expands to the sequence:
+ <div>
+ <i>macro</i>(<i>r</i>, <i>data</i>, <i>a</i>) <i>macro</i>(<i>r</i>, <i>data</i>, <i>b</i>) <i>macro</i>(<i>r</i>, <i>data</i>, <i>c</i>)
+ </div>
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li>BOOST_PP_LIST_FOR_EACH</li>
+ </ul>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <boost/preprocessor/list/for_each.hpp>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+#include <boost/preprocessor/list/adt.hpp>
+#include <boost/preprocessor/list/for_each.hpp>
+#include <boost/preprocessor/repetition/for.hpp>
+
+#define LIST (x, (y, (z, BOOST_PP_NIL)))
+
+#define MACRO_2(r, data, elem) elem
+
+#define PRED(r, state) BOOST_PP_LIST_IS_CONS(state)
+#define OP(r, state) BOOST_PP_LIST_REST(state)
+#define MACRO(r, state) [ BOOST_PP_LIST_FOR_EACH_R(r, MACRO_2, _, state) ]
+
+BOOST_PP_FOR(LIST, PRED, OP, MACRO)
+ // expands to [x y z] [y z] [z]
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/ref/list_is_cons.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/ref/list_is_cons.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,51 @@
+<html>
+<head>
+ <title>BOOST_PP_LIST_IS_CONS</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_LIST_IS_CONS</b> macro is a predicate that determines if a <i>list</i> not nil.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_LIST_IS_CONS</b>(<i>list</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>list</dt>
+ <dd>
+ A <i>list</i>.
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ If <i>list</i> is non-nil, this macro expands to <i>1</i>.
+ Otherwise, it expands to <i>0</i>.
+ </div>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <boost/preprocessor/list/adt.hpp>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+#include <boost/preprocessor/list/adt.hpp>
+
+#define LIST (a, BOOST_PP_NIL)
+
+BOOST_PP_LIST_IS_CONS(LIST) // expands to 1
+BOOST_PP_LIST_IS_CONS(BOOST_PP_LIST_REST(LIST)) // expands to 0
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/ref/list_is_nil.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/ref/list_is_nil.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,51 @@
+<html>
+<head>
+ <title>BOOST_PP_LIST_IS_NIL</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_LIST_IS_NIL</b> macro is a predicate that determines if a <i>list</i> is nil.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_LIST_IS_NIL</b>(<i>list</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>list</dt>
+ <dd>
+ A <i>list</i>.
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ If <i>list</i> is nil, this macro expands to <i>1</i>.
+ Otherwise, it expands to <i>0</i>.
+ </div>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <boost/preprocessor/list/adt.hpp>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+#include <boost/preprocessor/list/adt.hpp>
+
+#define LIST (a, BOOST_PP_NIL)
+
+BOOST_PP_LIST_IS_NIL(LIST) // expands to 0
+BOOST_PP_LIST_IS_NIL(BOOST_PP_LIST_REST(LIST)) // expands to 1
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/ref/list_nil.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/ref/list_nil.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,68 @@
+<html>
+<head>
+ <title>BOOST_PP_LIST_NIL</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_LIST_NIL</b> macro is a nil <i>list</i> constructor.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_LIST_NIL</b>
+ </div>
+ <h4>Remarks</h4>
+ <div>
+ This macro represents the end of a <i>list</i>.
+ </div>
+ <div>
+ This macro is no longer necessary.
+ It simply expands to <b>BOOST_PP_NIL</b>.
+ Because of this, this macro is deprecated.
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li>BOOST_PP_NIL</li>
+ </ul>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <boost/preprocessor/list/adt.hpp>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+#include <boost/preprocessor/list/adt.hpp>
+
+#define OLD \
+ BOOST_PP_LIST_CONS( \
+ a, \
+ BOOST_PP_LIST_CONS( \
+ b, \
+ BOOST_PP_LIST_CONS( \
+ c, \
+ BOOST_PP_LIST_NIL \
+ ) \
+ ) \
+ ) \
+ /**/
+
+#define NEW (a, (b, (c, BOOST_PP_NIL)))
+
+BOOST_PP_LIST_FIRST(OLD) == BOOST_PP_LIST_FIRST(NEW)
+ // expands to a == a
+
+BOOST_PP_LIST_REST(OLD) == BOOST_PP_LIST_RESTK(NEW)
+ // expands to (b, (c, BOOST_PP_NIL)) == (b, (c, BOOST_PP_NIL))
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/ref/list_rest.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/ref/list_rest.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,62 @@
+<html>
+<head>
+ <title>BOOST_PP_LIST_REST</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_LIST_REST</b> macro expands to the tail of a <i>list</i>.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_LIST_REST</b>(<i>list</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>list</dt>
+ <dd>
+ A non-nil <i>list</i>.
+ </dd>
+ </dl>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <boost/preprocessor/list/adt.hpp>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+#include <boost/preprocessor/list/adt.hpp>
+
+#define OLD \
+ BOOST_PP_LIST_CONS( \
+ a, \
+ BOOST_PP_LIST_CONS( \
+ b, \
+ BOOST_PP_LIST_CONS( \
+ c, \
+ BOOST_PP_LIST_NIL \
+ ) \
+ ) \
+ ) \
+ /**/
+
+#define NEW (a, (b, (c, BOOST_PP_NIL)))
+
+BOOST_PP_LIST_FIRST(OLD) == BOOST_PP_LIST_FIRST(NEW)
+ // expands to a == a
+
+BOOST_PP_LIST_REST(OLD) == BOOST_PP_LIST_REST(NEW)
+ // expands to (b, (c, BOOST_PP_NIL)) == (b, (c, BOOST_PP_NIL))
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/ref/list_rest_n.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/ref/list_rest_n.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,62 @@
+<html>
+<head>
+ <title>BOOST_PP_LIST_REST_N</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_LIST_REST_N</b> macro expands to a <i>list</i> of all but the first <i>count</i> elements of a <i>list</i>.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_LIST_REST_N</b>(<i>count</i>, <i>list</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>count</dt>
+ <dd>
+ The number of elements to remove from the beginning of <i>list</i>.
+ </dd>
+ <dt>list</dt>
+ <dd>
+ The <i>list</i> from which the elements are extracted.
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ This macro removes <i>count</i> elements from the beginning of <i>list</i> and returns the remainder as a <i>list</i>
+ </div>
+ <div>
+ Previously, this macro could not be used inside <b>BOOST_PP_WHILE</b>.
+ There is no longer any such restriction.
+ It is more efficient, however, to use <b>BOOST_PP_LIST_REST_N_D</b> in such a situation.
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li>BOOST_PP_LIST_REST_N_D</li>
+ </ul>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <boost/preprocessor/list/rest_n.hpp>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+#include <boost/preprocessor/list/rest_n.hpp>
+
+#define LIST (a, (b, (c, (d, BOOST_PP_NIL))))
+
+BOOST_PP_LIST_REST_N(2, LIST) // expands to (c, (d, BOOST_PP_NIL))
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/ref/list_rest_n_d.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/ref/list_rest_n_d.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,71 @@
+<html>
+<head>
+ <title>BOOST_PP_LIST_REST_N_D</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_LIST_REST_N_D</b> macro expands to a <i>list</i> of all but the first <i>count</i> elements of a <i>list</i>.
+ It reenters <b>BOOST_PP_WHILE</b> with maximum efficiency.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_LIST_REST_N_D</b>(<i>d</i>, <i>count</i>, <i>list</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>d</dt>
+ <dd>
+ The next available <b>BOOST_PP_WHILE</b> iteration.
+ </dd>
+ <dt>count</dt>
+ <dd>
+ The number of elements to remove from the beginning of <i>list</i>.
+ </dd>
+ <dt>list</dt>
+ <dd>
+ The <i>list</i> from which the elements are extracted.
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ This macro removes <i>count</i> elements from the beginning of <i>list</i> and returns the remainder as a <i>list</i>
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li>BOOST_PP_LIST_REST_N</li>
+ </ul>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <boost/preprocessor/list/rest_n.hpp>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+#include <boost/preprocessor/list/fold_right.hpp>
+#include <boost/preprocessor/list/rest_n.hpp>
+
+#define L1 (a, (b, (c, (d, BOOST_PP_NIL))))
+#define L2 (L1, (L1, (L1, BOOST_PP_NIL)))
+
+#define OP(d, state, x) (BOOST_PP_LIST_REST_N_D(d, 2, x), state)
+
+BOOST_PP_LIST_FOLD_RIGHT(OP, BOOST_PP_NIL, L2)
+/*
+ expands to...
+ ((c, (d, BOOST_PP_NIL)), ((c, (d, BOOST_PP_NIL)),
+ ((c, (d, BOOST_PP_NIL)), BOOST_PP_NIL)))
+*/
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/ref/list_reverse.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/ref/list_reverse.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,55 @@
+<html>
+<head>
+ <title>BOOST_PP_LIST_REVERSE</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_LIST_REVERSE</b> macro expands to the reverse a <i>list</i>.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_LIST_REVERSE</b>(<i>list</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>list</dt>
+ <dd>
+ A <i>list</i> to be reversed.
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ Previously, this macro could not be used inside <b>BOOST_PP_WHILE</b>.
+ There is no longer any such restriction.
+ It is more efficient, however, to use <b>BOOST_PP_LIST_REVERSE_D</b> in such a situation.
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li>BOOST_PP_LIST_REVERSE_D</li>
+ </ul>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <boost/preprocessor/list/reverse.hpp>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+#include <boost/preprocessor/list/reverse.hpp>
+
+#define LIST (0, (1, (2, (3, BOOST_PP_NIL))))
+
+BOOST_PP_LIST_REVERSE(LIST) // expands to (3, (2, (1, (0, BOOST_PP_NIL))))
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/ref/list_reverse_d.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/ref/list_reverse_d.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,63 @@
+<html>
+<head>
+ <title>BOOST_PP_LIST_REVERSE_D</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_LIST_REVERSE_D</b> macro expands to the reverse a <i>list</i>.
+ It reenters <b>BOOST_PP_WHILE</b> with maximum efficiency.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_LIST_REVERSE_D</b>(<i>d</i>, <i>list</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>d</dt>
+ <dd>
+ The next available <b>BOOST_PP_WHILE</b> iteration.
+ </dd>
+ <dt>list</dt>
+ <dd>
+ A <i>list</i> to be reversed.
+ </dd>
+ </dl>
+ <h4>See Also</h4>
+ <ul>
+ <li>BOOST_PP_LIST_REVERSE</li>
+ </ul>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <boost/preprocessor/list/reverse.hpp>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+#include <boost/preprocessor/list/fold_right.hpp>
+#include <boost/preprocessor/list/reverse.hpp>
+
+#define L1 (a, (b, (c, (d, BOOST_PP_NIL))))
+#define L2 (L1, (L1, (L1, BOOST_PP_NIL)))
+
+#define OP(d, state, x) (BOOST_PP_LIST_REVERSE_D(d, x), state)
+
+BOOST_PP_LIST_FOLD_RIGHT(OP, BOOST_PP_NIL, L2)
+/*
+ expands to...
+ ((d, (c, (b, (a, BOOST_PP_NIL)))), ((d, (c, (b, (a, BOOST_PP_NIL)))),
+ ((d, (c, (b, (a, BOOST_PP_NIL)))), BOOST_PP_NIL)))
+*/
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/ref/list_size.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/ref/list_size.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,55 @@
+<html>
+<head>
+ <title>BOOST_PP_LIST_SIZE</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_LIST_SIZE</b> macro expands to the size of a <i>list</i>.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_LIST_SIZE</b>(<i>list</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>list</dt>
+ <dd>
+ A <i>list</i> whose size is to be calculated.
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ Previously, this macro could not be used inside <b>BOOST_PP_WHILE</b>.
+ There is no longer any such restriction.
+ It is more efficient, however, to use <b>BOOST_PP_LIST_SIZE_D</b> in such a situation.
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li>BOOST_PP_LIST_SIZE_D</li>
+ </ul>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <boost/preprocessor/list/size.hpp>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+#include <boost/preprocessor/list/size.hpp>
+
+#define LIST (0, (1, (2, (3, BOOST_PP_NIL))))
+
+BOOST_PP_LIST_SIZE(LIST) // expands to 4
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/ref/list_size_d.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/ref/list_size_d.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,67 @@
+<html>
+<head>
+ <title>BOOST_PP_LIST_SIZE_D</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_LIST_SIZE_D</b> macro expands to the size of a <i>list</i>.
+ It reenters <b>BOOST_PP_WHILE</b> with maximum efficiency.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_LIST_SIZE_D</b>(<i>d</i>, <i>list</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>d</dt>
+ <dd>
+ The next available <b>BOOST_PP_WHILE</b> iteration.
+ </dd>
+ <dt>list</dt>
+ <dd>
+ A <i>list</i> whose size is to be calculated.
+ </dd>
+ </dl>
+ <h4>See Also</h4>
+ <ul>
+ <li>BOOST_PP_LIST_SIZE</li>
+ </ul>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <boost/preprocessor/list/size.hpp>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+#include <boost/preprocessor/arithmetic/add.hpp>
+#include <boost/preprocessor/list/fold_left.hpp>
+#include <boost/preprocessor/list/size.hpp>
+
+#define L1 (a, (b, (c, BOOST_PP_NIL)))
+#define L2 (x, (y, BOOST_PP_NIL))
+#define L3 (p, (q, BOOST_PP_NIL))
+
+#define LIST (L1, (L2, (L3, BOOST_PP_NIL)))
+
+#define OP(d, state, x) \
+ BOOST_PP_ADD_D( \
+ d, state, \
+ BOOST_PP_LIST_SIZE_D(d, x) \
+ ) \
+ /**/
+
+BOOST_PP_LIST_FOLD_LEFT(OP, 0, LIST) // expands to 7
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/ref/list_to_array.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/ref/list_to_array.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,30 @@
+<html>
+<head>
+ <title>BOOST_PP_LIST_TO_ARRAY</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css"></head>
+<body>
+<div style="margin-left: 0px;"> The <b>BOOST_PP_LIST_TO_ARRAY</b> macro
+converts a <i>list</i> to an <i>array</i>. </div>
+<h4> Usage </h4>
+<div class="code"> <b>BOOST_PP_LIST_TO_ARRAY</b>(<i>list</i>) </div>
+<h4> Arguments </h4>
+<dl>
+ <dt>list</dt>
+ <dd> The <i>list</i> to be converted. </dd>
+</dl>
+<h4> Requirements </h4>
+<div> <b>Header:</b> <boost/preprocessor/list/to_array.hpp>
+</div>
+<h4> Sample Code </h4>
+<div>
+<pre>#include <boost/preprocessor/list/to_array.hpp><br><br>#define LIST (a, (b, (c, BOOST_PP_NIL)))<br><br>BOOST_PP_LIST_TO_ARRAY(LIST) // expands to (3, (a, b, c))<br></pre>
+</div>
+<hr size="1">
+<div style="margin-left: 0px;"> <i></i><i>© Copyright Edward Diener 2011</i> </div>
+<div style="margin-left: 0px;">
+<p><small>Distributed under the Boost Software License, Version 1.0.
+(See accompanying file LICENSE_1_0.txt
+or copy at www.boost.org/LICENSE_1_0.txt)</small></p>
+</div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/ref/list_to_seq.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/ref/list_to_seq.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,31 @@
+<html>
+<head>
+ <title>BOOST_PP_LIST_TO_SEQ</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+<div style="margin-left: 0px;"> The <b>BOOST_PP_LIST_TO_SEQ</b> macro
+converts a <i>list</i> to a <i>seq</i>. </div>
+<h4> Usage </h4>
+<div class="code"> <b>BOOST_PP_LIST_TO_SEQ</b>(<i>list</i>)
+</div>
+<h4> Arguments </h4>
+<dl><dt>list</dt>
+ <dd> The <i>list</i> to be converted. </dd>
+</dl>
+<h4> Requirements </h4>
+<div> <b>Header:</b> <boost/preprocessor/list/to_seq.hpp>
+</div>
+<h4> Sample Code </h4>
+<div>
+<pre>#include <boost/preprocessor/list/to_seq.hpp><br><br>BOOST_PP_LIST_TO_SEQ((a, (b, (c, BOOST_PP_NIL)))) // expands to (a)(b)(c)<br></pre>
+</div>
+<hr size="1">
+<div style="margin-left: 0px;"> <i></i><i>© Copyright Edward Diener 2011</i> </div>
+<div style="margin-left: 0px;">
+<p><small>Distributed under the Boost Software License, Version 1.0.
+(See accompanying file LICENSE_1_0.txt
+or copy at www.boost.org/LICENSE_1_0.txt)</small></p>
+</div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/ref/list_to_tuple.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/ref/list_to_tuple.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,62 @@
+<html>
+<head>
+ <title>BOOST_PP_LIST_TO_TUPLE</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_LIST_TO_TUPLE</b> macro converts a <i>list</i> to a <i>tuple</i>.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_LIST_TO_TUPLE</b>(<i>list</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>list</dt>
+ <dd>
+ The <i>list</i> to be converted.
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ If <i>list</i> is, for example, (<i>a</i>, (<i>b</i>, (<i>c</i>, <b>BOOST_PP_NIL</b>))),
+ this macro will produce:
+ <div>
+ (<i>a</i>, <i>b</i>, <i>c</i>)
+ </div>
+ </div>
+ <div>
+ Previously, this macro could not be used inside <b>BOOST_PP_FOR</b>.
+ There is no longer any such restriction.
+ It is more efficient, however, to use <b>BOOST_PP_LIST_TO_TUPLE_R</b> in such a situation.
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li>BOOST_PP_LIST_TO_TUPLE_R</li>
+ </ul>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <boost/preprocessor/list/to_tuple.hpp>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+#include <boost/preprocessor/list/to_tuple.hpp>
+
+#define LIST (w, (x, (y, (z, BOOST_PP_NIL))))
+
+BOOST_PP_LIST_TO_TUPLE(LIST) // expands to (w, x, y, z)
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/ref/list_to_tuple_r.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/ref/list_to_tuple_r.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,69 @@
+<html>
+<head>
+ <title>BOOST_PP_LIST_TO_TUPLE_R</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_LIST_TO_TUPLE_R</b> macro converts a <i>list</i> to a <i>tuple</i>.
+ It reenters <b>BOOST_PP_FOR</b> with maximum efficiency.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_LIST_TO_TUPLE_R</b>(<i>r</i>, <i>list</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>r</dt>
+ <dd>
+ The next available <b>BOOST_PP_FOR</b> repetition.
+ </dd>
+ <dt>list</dt>
+ <dd>
+ The <i>list</i> to be converted.
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ If <i>list</i> is, for example, (<i>a</i>, (<i>b</i>, (<i>c</i>, <b>BOOST_PP_NIL</b>))),
+ this macro will produce:
+ <div>
+ (<i>a</i>, <i>b</i>, <i>c</i>)
+ </div>
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li>BOOST_PP_LIST_TO_TUPLE</li>
+ </ul>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <boost/preprocessor/list/to_tuple.hpp>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+#include <boost/preprocessor/list/adt.hpp>
+#include <boost/preprocessor/list/to_tuple.hpp>
+#include <boost/preprocessor/repetition/for.hpp>
+
+#define LIST (x, (y, (z, BOOST_PP_NIL)))
+
+#define PRED(r, state) BOOST_PP_LIST_IS_CONS(state)
+#define OP(r, state) BOOST_PP_LIST_REST(state)
+#define MACRO(r, state) BOOST_PP_LIST_TO_TUPLE_R(r, state)
+
+BOOST_PP_FOR(LIST, PRED, OP, MACRO)
+ // expands to (x, y, z) (y, z) (z)
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/ref/list_transform.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/ref/list_transform.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,78 @@
+<html>
+<head>
+ <title>BOOST_PP_LIST_TRANSFORM</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_LIST_TRANSFORM</b> macro transforms each element in a <i>list</i> according to a supplied transformation.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_LIST_TRANSFORM</b>(<i>op</i>, <i>data</i>, <i>list</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>op</dt>
+ <dd>
+ A ternary predicate of the form <i>op</i>(<i>d</i>, <i>data</i>, <i>elem</i>).
+ This transformation is expanded by <b>BOOST_PP_LIST_TRANSFORM</b> for each element in <i>list</i> with the next available <b>BOOST_PP_WHILE</b> iteration,
+ the auxiliary <i>data</i>, and the current element in <i>list</i>.
+ </dd>
+ <dt>data</dt>
+ <dd>
+ Auxiliary data passed to <i>pred</i>.
+ </dd>
+ <dt>list</dt>
+ <dd>
+ The <i>list</i> to be transformed.
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ This macro expands <i>op</i> for each element in <i>list</i>.
+ It builds a new <i>list</i> out of the results of each call.
+ If, for example, <i>list</i> is (<i>a</i>, (<i>b</i>, (<i>c</i>, <b>BOOST_PP_NIL</b>))),
+ this macro expands to...
+ <div>
+ (<i>op</i>(<i>d</i>, <i>data</i>, <i>a</i>), (<i>op</i>(<i>d</i>, <i>data</i>, <i>b</i>), (<i>op</i>(<i>d</i>, <i>data</i>, <i>c</i>), <b>BOOST_PP_NIL</b>)))
+ </div>
+ </div>
+ <div>
+ Previously, this macro could not be used inside <b>BOOST_PP_WHILE</b>.
+ There is no longer any such restriction.
+ It is more efficient, however, to use <b>BOOST_PP_LIST_TRANSFORM_D</b> in such a situation.
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li>BOOST_PP_LIST_TRANSFORM_D</li>
+ </ul>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <boost/preprocessor/list/transform.hpp>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+#include <boost/preprocessor/arithmetic/dec.hpp>
+#include <boost/preprocessor/list/transform.hpp>
+
+#define LIST (1, (3, (2, (5, BOOST_PP_NIL))))
+
+#define OP(d, data, elem) BOOST_PP_DEC(elem)
+
+BOOST_PP_LIST_TRANSFORM(OP, 3, LIST)
+ // expands to (0, (2, (1, (4, BOOST_PP_NIL))))
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/ref/list_transform_d.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/ref/list_transform_d.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,86 @@
+<html>
+<head>
+ <title>BOOST_PP_LIST_TRANSFORM_D</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_LIST_TRANSFORM_D</b> macro transforms each element in a <i>list</i> according to a supplied transformation.
+ It reenters <b>BOOST_PP_WHILE</b> with maximum efficiency.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_LIST_TRANSFORM_D</b>(<i>d</i>, <i>op</i>, <i>data</i>, <i>list</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>d</dt>
+ <dd>
+ The next available <b>BOOST_PP_WHILE</b> iteration.
+ </dd>
+ <dt>op</dt>
+ <dd>
+ A ternary predicate of the form <i>op</i>(<i>d</i>, <i>data</i>, <i>elem</i>).
+ This transformation is expanded by <b>BOOST_PP_LIST_TRANSFORM</b> for each element in <i>list</i> with the next available <b>BOOST_PP_WHILE</b> iteration,
+ the auxiliary <i>data</i>, and the current element in <i>list</i>.
+ </dd>
+ <dt>data</dt>
+ <dd>
+ Auxiliary data passed to <i>pred</i>.
+ </dd>
+ <dt>list</dt>
+ <dd>
+ The <i>list</i> to be transformed.
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ This macro expands <i>op</i> for each element in <i>list</i>.
+ It builds a new <i>list</i> out of the results of each call.
+ If, for example, <i>list</i> is (<i>a</i>, (<i>b</i>, (<i>c</i>, <b>BOOST_PP_NIL</b>))),
+ this macro expands to...
+ <div>
+ (<i>op</i>(<i>d</i>, <i>data</i>, <i>a</i>), (<i>op</i>(<i>d</i>, <i>data</i>, <i>b</i>), (<i>op</i>(<i>d</i>, <i>data</i>, <i>c</i>), <b>BOOST_PP_NIL</b>)))
+ </div>
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li>BOOST_PP_LIST_TRANSFORM</li>
+ </ul>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <boost/preprocessor/list/transform.hpp>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+#include <boost/preprocessor/arithmetic/inc.hpp>
+#include <boost/preprocessor/list/fold_right.hpp>
+#include <boost/preprocessor/list/transform.hpp>
+
+#define A (1, (2, (3, (4, BOOST_PP_NIL))))
+#define B (A, (A, (A, (A, BOOST_PP_NIL))))
+
+#define OP_T(d, data, x) BOOST_PP_INC(x)
+#define OP(d, state, x) (BOOST_PP_LIST_TRANSFORM_D(d, OP_T, 2, x), state)
+
+BOOST_PP_LIST_FOLD_RIGHT(OP, BOOST_PP_NIL, B)
+/*
+ expands to:
+ ((2, (3, (4, (5, BOOST_PP_NIL)))), ((2, (3, (4, (5, BOOST_PP_NIL)))),
+ ((2, (3, (4, (5, BOOST_PP_NIL)))), ((2, (3, (4, (5, BOOST_PP_NIL)))),
+ BOOST_PP_NIL))))
+*/
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/ref/local_iterate.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/ref/local_iterate.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,62 @@
+<html>
+<head>
+ <title>BOOST_PP_LOCAL_ITERATE</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_LOCAL_ITERATE</b> macro initiates a <i>local-iteration</i>.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b>BOOST_PP_LOCAL_ITERATE</b>()
+ </div>
+ <h4>Remarks</h4>
+ <div>
+ This macro causes the user-defined macro <b>BOOST_PP_LOCAL_MACRO</b> to be expanded vertically with values in the range specified by <b>BOOST_PP_LOCAL_LIMITS</b>.
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li>BOOST_PP_LOCAL_LIMITS</li>
+ <li>BOOST_PP_LOCAL_MACRO</li>
+ </ul>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <boost/preprocessor/iteration/local.hpp>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+#include <boost/preprocessor/iteration/local.hpp>
+
+template<int> struct sample;
+
+#define BOOST_PP_LOCAL_MACRO(n) \
+ template<> struct sample<n> { \
+ enum { value = n }; \
+ }; \
+ /**/
+
+#define BOOST_PP_LOCAL_LIMITS (1, 5)
+
+#include BOOST_PP_LOCAL_ITERATE()
+/* expands to...
+template<> struct sample<1> { enum { value = 1 }; };
+template<> struct sample<2> { enum { value = 2 }; };
+template<> struct sample<3> { enum { value = 3 }; };
+template<> struct sample<4> { enum { value = 4 }; };
+template<> struct sample<5> { enum { value = 5 }; };
+*/
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/ref/local_limits.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/ref/local_limits.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,80 @@
+<html>
+<head>
+ <title>BOOST_PP_LOCAL_LIMITS</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_LOCAL_LIMITS</b> macro is a user-defined <i>named external argument</i> used by <b>BOOST_PP_LOCAL_ITERATE</b>.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #define <b>BOOST_PP_LOCAL_LIMITS</b> (<i>start</i>, <i>finish</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>start</dt>
+ <dd>
+ The lower bound (inclusive) of a <i>local iteration</i>.
+ Valid values range from <i>0</i> to <b>BOOST_PP_LIMIT_ITERATION</b>.
+ </dd>
+ <dt>finish</dt>
+ <dd>
+ The upper bound (inclusive) of a <i>local iteration</i>.
+ Valid values range from <i>0</i> to <b>BOOST_PP_LIMIT_ITERATION</b>.
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ Note that there is a whitespace character after the macro identifier.
+ </div>
+ <div>
+ This macro must expand to a <i>2</i>-element <i>tuple</i>.
+ The elements of this <i>tuple</i> represent the lower and upper boundaries of a <i>local iteration</i>.
+ Both <i>start</i> and <i>finish</i> are <i>evaluated parameters</i>.
+ This implies that they can include simple arithmetic expressions (such as <i>1</i> + <i>3</i>), etc..
+ </div>
+ <div>
+ This macro is automatically undefined for reuse by a call to <b>BOOST_PP_LOCAL_ITERATE</b>.
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li>BOOST_PP_LIMIT_ITERATION</li>
+ <li>BOOST_PP_LOCAL_ITERATE</li>
+ </ul>
+ <h4>Sample Code</h4>
+<div><pre>
+#include <boost/preprocessor/iteration/local.hpp>
+
+template<int> struct sample;
+
+#define BOOST_PP_LOCAL_MACRO(n) \
+ template<> struct sample<n> { \
+ enum { value = n }; \
+ }; \
+ /**/
+
+#define BOOST_PP_LOCAL_LIMITS (1, 5)
+
+#include BOOST_PP_LOCAL_ITERATE()
+/* expands to...
+template<> struct sample<1> { enum { value = 1 }; };
+template<> struct sample<2> { enum { value = 2 }; };
+template<> struct sample<3> { enum { value = 3 }; };
+template<> struct sample<4> { enum { value = 4 }; };
+template<> struct sample<5> { enum { value = 5 }; };
+*/
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/ref/local_macro.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/ref/local_macro.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,64 @@
+<html>
+<head>
+ <title>BOOST_PP_LOCAL_MACRO</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_LOCAL_MACRO</b> macro is a user-defined <i>named external argument</i> used by <b>BOOST_PP_LOCAL_ITERATE</b>.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #define <b>BOOST_PP_LOCAL_MACRO</b>(<i>n</i>) ...
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>n</dt>
+ <dd>
+ The current iteration value received from the <i>local-iteration</i> mechanism.
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ This macro is automatically undefined for reuse by a call to <b>BOOST_PP_LOCAL_ITERATE</b>.
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li>BOOST_PP_LOCAL_ITERATE</li>
+ </ul>
+ <h4>Sample Code</h4>
+<div><pre>
+#include <boost/preprocessor/iteration/local.hpp>
+
+template<int> struct sample;
+
+#define BOOST_PP_LOCAL_MACRO(n) \
+ template<> struct sample<n> { \
+ enum { value = n }; \
+ }; \
+ /**/
+
+#define BOOST_PP_LOCAL_LIMITS (1, 5)
+
+#include BOOST_PP_LOCAL_ITERATE()
+/* expands to...
+template<> struct sample<1> { enum { value = 1 }; };
+template<> struct sample<2> { enum { value = 2 }; };
+template<> struct sample<3> { enum { value = 3 }; };
+template<> struct sample<4> { enum { value = 4 }; };
+template<> struct sample<5> { enum { value = 5 }; };
+*/
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/ref/lparen.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/ref/lparen.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,52 @@
+<html>
+<head>
+ <title>BOOST_PP_LPAREN</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_LPAREN</b> macro expands to a left parenthesis.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_LPAREN</b>()
+ </div>
+ <h4>Remarks</h4>
+ <div>
+ The preprocessor interprets parentheses as delimiters in macro invocations.
+ Because of this, parentheses require special handling.
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li>BOOST_PP_RPAREN</li>
+ </ul>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <boost/preprocessor/punctuation/paren.hpp>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+#include <boost/preprocessor/punctuation/paren.hpp>
+
+#define X(x) x
+#define MACRO(p, x) X p x )
+
+MACRO(BOOST_PP_LPAREN(), abc) // expands to abc
+
+#define Y(x)
+
+MACRO((10) Y BOOST_PP_LPAREN(), result) // expands to 10
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/ref/lparen_if.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/ref/lparen_if.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,61 @@
+<html>
+<head>
+ <title>BOOST_PP_LPAREN_IF</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_LPAREN_IF</b> macro conditionally expands to a left parenthesis.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_LPAREN_IF</b>(<i>cond</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>cond</dt>
+ <dd>
+ The condition that determines if a the macro expands to a left parenthesis or nothing.
+ Valid values range from <i>0</i> to <b>BOOST_PP_LIMIT_MAG</b>.
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ If <i>cond</i> expands to <i>0</i>, this macro expands to nothing.
+ Otherwise, it expands to a left parenthesis.
+ </div>
+ <div>
+ The preprocessor interprets parentheses as delimiters in macro invocations.
+ Because of this, parentheses require special handling.
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li>BOOST_PP_LIMIT_MAG</li>
+ <li>BOOST_PP_RPAREN_IF</li>
+ </ul>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <boost/preprocessor/punctuation/paren_if.hpp>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+#include <boost/preprocessor/punctuation/paren_if.hpp>
+
+#define MACRO(c, x) BOOST_PP_LPAREN_IF(c) x BOOST_PP_RPAREN_IF(c)
+
+MACRO(0, text) // expands to text
+MACRO(1, text) // expands to (text)
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/ref/max.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/ref/max.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,64 @@
+<html>
+<head>
+ <title>BOOST_PP_MAX</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_MAX</b> macro expands to the greater of its two arguments.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_MAX</b>(<i>x</i>, <i>y</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>x</dt>
+ <dd>
+ The first operand.
+ Valid values range from <i>0</i> to <b>BOOST_PP_LIMIT_MAG</b>.
+ </dd>
+ <dt>y</dt>
+ <dd>
+ The second operand.
+ Valid values range from <i>0</i> to <b>BOOST_PP_LIMIT_MAG</b>.
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ This macro returns the greater of its two arguments or the value of both arguments if they are equal.
+ </div>
+ <div>
+ Previously, this macro could not be used inside <b>BOOST_PP_WHILE</b>.
+ There is no longer any such restriction.
+ It is more efficient, however, to use <b>BOOST_PP_MAX_D</b> in such a situation.
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li>BOOST_PP_LIMIT_MAG</li>
+ <li>BOOST_PP_MAX_D</li>
+ </ul>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <boost/preprocessor/selection/max.hpp>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+#include <boost/preprocessor/selection/max.hpp>
+
+BOOST_PP_MAX(5, 7) // expands to 7
+BOOST_PP_MAX(3, 3) // expands to 3
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/ref/max_d.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/ref/max_d.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,70 @@
+<html>
+<head>
+ <title>BOOST_PP_MAX_D</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_MAX_D</b> macro expands to the greater of its second and third arguments.
+ It reenters <b>BOOST_PP_WHILE</b> with maximum efficiency.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_MAX_D</b>(<i>d</i>, <i>x</i>, <i>y</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>d</dt>
+ <dd>
+ The next available <b>BOOST_PP_WHILE</b> iteration.
+ </dd>
+ <dt>x</dt>
+ <dd>
+ The first operand.
+ Valid values range from <i>0</i> to <b>BOOST_PP_LIMIT_MAG</b>.
+ </dd>
+ <dt>y</dt>
+ <dd>
+ The second operand.
+ Valid values range from <i>0</i> to <b>BOOST_PP_LIMIT_MAG</b>.
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ This macro returns the greater of its first and second arguments or the value of both arguments if they are equal.
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li>BOOST_PP_LIMIT_MAG</li>
+ <li>BOOST_PP_MAX</li>
+ </ul>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <boost/preprocessor/selection/max.hpp>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+#include <boost/preprocessor/list/fold_left.hpp>
+#include <boost/preprocessor/selection/max.hpp>
+
+#define LIST (1, (3, (5, (2, (4, BOOST_PP_NIL)))))
+
+#define OP(d, state, x) BOOST_PP_MAX_D(d, state, x)
+
+#define LIST_MAX(list) BOOST_PP_LIST_FOLD_LEFT(OP, 0, LIST)
+
+LIST_MAX(LIST) // expands to 5
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/ref/min.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/ref/min.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,64 @@
+<html>
+<head>
+ <title>BOOST_PP_MIN</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_MIN</b> macro expands to the lesser of its two arguments.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_MIN</b>(<i>x</i>, <i>y</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>x</dt>
+ <dd>
+ The first operand.
+ Valid values range from <i>0</i> to <b>BOOST_PP_LIMIT_MAG</b>.
+ </dd>
+ <dt>y</dt>
+ <dd>
+ The second operand.
+ Valid values range from <i>0</i> to <b>BOOST_PP_LIMIT_MAG</b>.
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ This macro returns the lesser of its two arguments or the value of both arguments if they are equal.
+ </div>
+ <div>
+ Previously, this macro could not be used inside <b>BOOST_PP_WHILE</b>.
+ There is no longer any such restriction.
+ It is more efficient, however, to use <b>BOOST_PP_MIN_D</b> in such a situation.
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li>BOOST_PP_LIMIT_MAG</li>
+ <li>BOOST_PP_MIN_D</li>
+ </ul>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <boost/preprocessor/selection/min.hpp>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+#include <boost/preprocessor/selection/min.hpp>
+
+BOOST_PP_MIN(5, 7) // expands to 5
+BOOST_PP_MIN(3, 3) // expands to 3
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/ref/min_d.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/ref/min_d.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,70 @@
+<html>
+<head>
+ <title>BOOST_PP_MIN_D</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_MIN_D</b> macro expands to the lesser of its second and third arguments.
+ It reenters <b>BOOST_PP_WHILE</b> with maximum efficiency.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_MIN_D</b>(<i>d</i>, <i>x</i>, <i>y</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>d</dt>
+ <dd>
+ The next available <b>BOOST_PP_WHILE</b> iteration.
+ </dd>
+ <dt>x</dt>
+ <dd>
+ The first operand.
+ Valid values range from <i>0</i> to <b>BOOST_PP_LIMIT_MAG</b>.
+ </dd>
+ <dt>y</dt>
+ <dd>
+ The second operand.
+ Valid values range from <i>0</i> to <b>BOOST_PP_LIMIT_MAG</b>.
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ This macro returns the lesser of its first and second arguments or the value of both arguments if they are equal.
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li>BOOST_PP_LIMIT_MAG</li>
+ <li>BOOST_PP_MIN</li>
+ </ul>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <boost/preprocessor/selection/min.hpp>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+#include <boost/preprocessor/list/fold_left.hpp>
+#include <boost/preprocessor/selection/min.hpp>
+
+#define LIST (1, (3, (5, (2, (4, BOOST_PP_NIL)))))
+
+#define OP(d, state, x) BOOST_PP_MIN_D(d, state, x)
+
+#define LIST_MAX(list) BOOST_PP_LIST_FOLD_LEFT(OP, 20, LIST)
+
+LIST_MIN(LIST) // expands to 1
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/ref/mod.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/ref/mod.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,63 @@
+<html>
+<head>
+ <title>BOOST_PP_MOD</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_MOD</b> macro expands to the modulus of its arguments.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_MOD</b>(<i>x</i>, <i>y</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>x</dt>
+ <dd>
+ The dividend (numerator) of the operation.
+ Valid values range from <i>0</i> to <b>BOOST_PP_LIMIT_MAG</b>.
+ </dd>
+ <dt>y</dt>
+ <dd>
+ The divisor (denominator) of the operation.
+ Valid values range from <i>1</i> to <b>BOOST_PP_LIMIT_MAG</b>.
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ Previously, this macro could not be used inside <b>BOOST_PP_WHILE</b>.
+ There is no longer any such restriction.
+ It is more efficient, however, to use <b>BOOST_PP_MOD_D</b> in such a situation.
+ </div>
+ <div>
+ If <i>y</i> is <i>0</i>, the result is undefined.
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li>BOOST_PP_LIMIT_MAG</li>
+ <li>BOOST_PP_MOD_D</li>
+ </ul>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <boost/preprocessor/arithmetic/mod.hpp>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+#include <boost/preprocessor/arithmetic/mod.hpp>
+
+BOOST_PP_MOD(11, 5) // expands to 1
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/ref/mod_d.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/ref/mod_d.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,75 @@
+<html>
+<head>
+ <title>BOOST_PP_MOD_D</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_MOD_D</b> macro expands to the modulus of its second and third arguments.
+ It reenters <b>BOOST_PP_WHILE</b> with maximum efficiency.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_MOD_D</b>(<i>d</i>, <i>x</i>, <i>y</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>d</dt>
+ <dd>
+ The next available <b>BOOST_PP_WHILE</b> iteration.
+ </dd>
+ <dt>x</dt>
+ <dd>
+ The dividend (numerator) of the operation.
+ Valid values range from <i>0</i> to <b>BOOST_PP_LIMIT_MAG</b>.
+ </dd>
+ <dt>y</dt>
+ <dd>
+ The divisor (denominator) of the operation.
+ Valid values range from <i>1</i> to <b>BOOST_PP_LIMIT_MAG</b>.
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ If <i>y</i> is <i>0</i>, the result is undefined.
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li>BOOST_PP_LIMIT_MAG</li>
+ <li>BOOST_PP_MOD</li>
+ </ul>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <boost/preprocessor/arithmetic/div.hpp>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+#include <boost/preprocessor/arithmetic/mod.hpp>
+#include <boost/preprocessor/list/filter.hpp>
+#include <boost/preprocessor/logical/not.hpp>
+
+#define LIST (1, (2, (3, (4, (5, BOOST_PP_NIL)))))
+
+#define EVEN_P(d, _, num) BOOST_PP_NOT(BOOST_PP_MOD_D(d, num, 2))
+#define EVEN(list) BOOST_PP_LIST_FILTER(EVEN_P, nil, list)
+
+EVEN(LIST) // expands to (2, (4, BOOST_PP_NIL))
+
+#define ODD_P(d, _, num) BOOST_PP_MOD_D(d, num, 2)
+#define ODD(list) BOOST_PP_LIST_FILTER(ODD_P, nil, list)
+
+ODD(LIST) // expands to (1, (3, (5, BOOST_PP_NIL)))
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/ref/mul.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/ref/mul.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,68 @@
+<html>
+<head>
+ <title>BOOST_PP_MUL</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_MUL</b> macro expands to the product of its arguments.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_MUL</b>(<i>x</i>, <i>y</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>x</dt>
+ <dd>
+ The multiplicand of the operation.
+ Valid values range from <i>0</i> to <b>BOOST_PP_LIMIT_MAG</b>.
+ </dd>
+ <dt>y</dt>
+ <dd>
+ The multiplier of the operation.
+ Valid values range from <i>0</i> to <b>BOOST_PP_LIMIT_MAG</b>.
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ If the product of <i>x</i> and <i>y</i> is greater than <b>BOOST_PP_LIMIT_MAG</b>, the result is saturated to <b>BOOST_PP_LIMIT_MAG</b>.
+ </div>
+ <div>
+ Previously, this macro could not be used inside <b>BOOST_PP_WHILE</b>.
+ There is no longer any such restriction.
+ It is more efficient, however, to use <b>BOOST_PP_MUL_D</b> in such a situation.
+ </div>
+ <div>
+ This macro is the most efficient when <i>x</i> is less than or equal to <i>y</i>.
+ However, the efficiency gain is not worth actually comparing the two arguments prior to invocation.
+ In other words, <i>x</i> should be the value that is <i>most likely</i> to be the largest of the two operands.
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li>BOOST_PP_LIMIT_MAG</li>
+ <li>BOOST_PP_MUL_D</li>
+ </ul>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <boost/preprocessor/arithmetic/mul.hpp>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+#include <boost/preprocessor/arithmetic/mul.hpp>
+
+BOOST_PP_MUL(4, 4) // expands to 16
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/ref/mul_d.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/ref/mul_d.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,91 @@
+<html>
+<head>
+ <title>BOOST_PP_MUL_D</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_MUL_D</b> macro expands to the product of its second and third arguments.
+ It reenters <b>BOOST_PP_WHILE</b> with maximum efficiency.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_MUL_D</b>(<i>d</i>, <i>x</i>, <i>y</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>d</dt>
+ <dd>
+ The next available <b>BOOST_PP_WHILE</b> iteration.
+ </dd>
+ <dt>x</dt>
+ <dd>
+ The multiplicand of the operation.
+ Valid values range from <i>0</i> to <b>BOOST_PP_LIMIT_MAG</b>.
+ </dd>
+ <dt>y</dt>
+ <dd>
+ The multiplier of the operation.
+ Valid values range from <i>0</i> to <b>BOOST_PP_LIMIT_MAG</b>.
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ If the product of <i>x</i> and <i>y</i> is greater than <b>BOOST_PP_LIMIT_MAG</b>, the result is saturated to <b>BOOST_PP_LIMIT_MAG</b>.
+ </div>
+ <div>
+ This macro is the most efficient when <i>x</i> is less than or equal to <i>y</i>.
+ However, the efficiency gain is not worth actually comparing the two arguments prior to invocation.
+ In other words, <i>x</i> should be the value that is <i>most likely</i> to be the largest of the two operands.
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li>BOOST_PP_LIMIT_MAG</li>
+ <li>BOOST_PP_MUL</li>
+ </ul>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <boost/preprocessor/arithmetic/mul.hpp>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+#include <boost/preprocessor/arithmetic/dec.hpp>
+#include <boost/preprocessor/arithmetic/mul.hpp>
+#include <boost/preprocessor/control/while.hpp>
+#include <boost/preprocessor/tuple/elem.hpp>
+
+#define PRED(d, data) BOOST_PP_TUPLE_ELEM(3, 0, data)
+
+#define OP(d, data) \
+ ( \
+ BOOST_PP_DEC( \
+ BOOST_PP_TUPLE_ELEM(3, 0, data) \
+ ), \
+ BOOST_PP_TUPLE_ELEM(3, 1, data), \
+ BOOST_PP_MUL_D( \
+ d, \
+ BOOST_PP_TUPLE_ELEM(3, 2, data), \
+ BOOST_PP_TUPLE_ELEM(3, 1, data) \
+ ) \
+ ) \
+ /**/
+
+// raise 'x' to the 'n'-th power
+#define EXP(x, n) BOOST_PP_TUPLE_ELEM(3, 2, BOOST_PP_WHILE(PRED, OP, (n, x, 1)))
+
+EXP(4, 2) // expands to 16
+EXP(2, 3) // expands to 8
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/ref/nil.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/ref/nil.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,41 @@
+<html>
+<head>
+ <title>BOOST_PP_NIL</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_NIL</b> identifier is reserved by the library to indicate a non-macro.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_NIL</b>
+ </div>
+ <h4>Remarks</h4>
+ <div>
+ This identifier is <i>not</i> defined.
+ Its purpose is to <i>not be a macro</i>.
+ It is also used to terminate a <i>list</i>.
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+#include <boost/preprocessor/list/adt.hpp>
+
+#define LIST (x, (y, (z, BOOST_PP_NIL)))
+
+BOOST_PP_LIST_FIRST(x) // expands to x
+BOOST_PP_LIST_REST(x) // expands to (y, (z, BOOST_PP_NIL))
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/ref/nor.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/ref/nor.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,64 @@
+<html>
+<head>
+ <title>BOOST_PP_NOR</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_NOR</b> macro expands to the logical <i>NOR</i> of its operands.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_NOR</b>(<i>p</i>, <i>q</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>p</dt>
+ <dd>
+ The left operand of the operation.
+ Valid values range from <i>0</i> to <b>BOOST_PP_LIMIT_MAG</b>.
+ </dd>
+ <dt>q</dt>
+ <dd>
+ The right operand of the operation.
+ Valid values range from <i>0</i> to <b>BOOST_PP_LIMIT_MAG</b>.
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ If both <i>p</i> and <i>q</i> are both <i>0</i>, this macro expands to <i>1</i>.
+ Otherwise, it expands to <i>0</i>.
+ </div>
+ <div>
+ This macro performs a boolean conversion on each operand before performing the logical <i>NOR</i> operation.
+ If that conversion is not necessary, use <b>BOOST_PP_BITNOR</b> instead.
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li>BOOST_PP_BITNOR</li>
+ <li>BOOST_PP_LIMIT_MAG</li>
+ </ul>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <boost/preprocessor/logical/nor.hpp>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+#include <boost/preprocessor/logical/nor.hpp>
+
+BOOST_PP_NOR(4, 0) // expands to 0
+BOOST_PP_NOR(0, 0) // expands to 1
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/ref/not.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/ref/not.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,59 @@
+<html>
+<head>
+ <title>BOOST_PP_NOT</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_NOT</b> macro performs a logical <i>NOT</i> on its operand.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_NOT</b>(<i>x</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>x</dt>
+ <dd>
+ The value to be converted.
+ Valid values range from <i>0</i> to <b>BOOST_PP_LIMIT_MAG</b>.
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ If <i>x</i> is zero, this macro expands to <i>1</i>.
+ Otherwise, it expands to <i>0</i>.
+ </div>
+ <div>
+ This macro performs a boolean conversion on its operand before performing the logical <i>NOT</i> operation.
+ If that conversion is not necessary, use <b>BOOST_PP_COMPL</b> instead.
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li>BOOST_PP_COMPL</li>
+ <li>BOOST_PP_LIMIT_MAG</li>
+ </ul>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <boost/preprocessor/logical/not.hpp>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+#include <boost/preprocessor/logical/not.hpp>
+
+BOOST_PP_NOT(55) // expands to 0
+BOOST_PP_NOT(0) // expands to 1
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/ref/not_equal.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/ref/not_equal.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,64 @@
+<html>
+<head>
+ <title>BOOST_PP_NOT_EQUAL</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_NOT_EQUAL</b> macro compares two values for inequality.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_NOT_EQUAL</b>(<i>x</i>, <i>y</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>x</dt>
+ <dd>
+ The left operand of the comparison.
+ Valid values range from <i>0</i> to <b>BOOST_PP_LIMIT_MAG</b>.
+ </dd>
+ <dt>y</dt>
+ <dd>
+ The right operand of the comparison.
+ Valid values range from <i>0</i> to <b>BOOST_PP_LIMIT_MAG</b>.
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ If <i>x</i> is equal to <i>y</i>, this macro expands to <i>0</i>.
+ Otherwise, it expands to <i>1</i>.
+ </div>
+ <div>
+ Previously, this macro could not be used inside <b>BOOST_PP_WHILE</b>.
+ There is no longer any such restriction because this macro no longer uses <b>BOOST_PP_WHILE</b>.
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li>BOOST_PP_LIMIT_MAG</li>
+ <li>BOOST_PP_NOT_EQUAL_D</li>
+ </ul>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <boost/preprocessor/comparison/not_equal.hpp>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+#include <boost/preprocessor/comparison/not_equal.hpp>
+
+BOOST_PP_NOT_EQUAL(4, 3) // expands to 1
+BOOST_PP_NOT_EQUAL(5, 5) // expands to 0
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/ref/not_equal_d.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/ref/not_equal_d.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,69 @@
+<html>
+<head>
+ <title>BOOST_PP_NOT_EQUAL_D</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_NOT_EQUAL_D</b> macro compares two values for inequality.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_NOT_EQUAL_D</b>(<i>d</i>, <i>x</i>, <i>y</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>d</dt>
+ <dd>
+ This argument is ignored.
+ </dd>
+ <dt>x</dt>
+ <dd>
+ The left operand of the comparison.
+ Valid values range from <i>0</i> to <b>BOOST_PP_LIMIT_MAG</b>.
+ </dd>
+ <dt>y</dt>
+ <dd>
+ The right operand of the comparison.
+ Valid values range from <i>0</i> to <b>BOOST_PP_LIMIT_MAG</b>.
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ If <i>x</i> is equal to <i>y</i>, this macro expands to <i>0</i>.
+ Otherwise, it expands to <i>1</i>.
+ </div>
+ <div>
+ This macro is deprecated.
+ It only exists for backward compatibility.
+ Use <b>BOOST_PP_NOT_EQUAL</b> instead.
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li>BOOST_PP_LIMIT_MAG</li>
+ <li>BOOST_PP_NOT_EQUAL</li>
+ </ul>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <boost/preprocessor/comparison/not_equal.hpp>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+#include <boost/preprocessor/comparison/equal.hpp>
+
+BOOST_PP_NOT_EQUAL_D(1, 4, 3) // expands to 1
+BOOST_PP_NOT_EQUAL_D(1, 5, 5) // expands to 0
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/ref/or.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/ref/or.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,64 @@
+<html>
+<head>
+ <title>BOOST_PP_OR</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_OR</b> macro expands to the logical <i>OR</i> of its operands.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_OR</b>(<i>p</i>, <i>q</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>p</dt>
+ <dd>
+ The left operand of the operation.
+ Valid values range from <i>0</i> to <b>BOOST_PP_LIMIT_MAG</b>.
+ </dd>
+ <dt>q</dt>
+ <dd>
+ The right operand of the operation.
+ Valid values range from <i>0</i> to <b>BOOST_PP_LIMIT_MAG</b>.
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ If either <i>p</i> or <i>q</i> is non-zero, this macro expands to <i>1</i>.
+ Otherwise, it expands to <i>0</i>.
+ </div>
+ <div>
+ This macro performs a boolean conversion on each operand before performing the logical <i>OR</i> operation.
+ If that conversion is not necessary, use <b>BOOST_PP_BITOR</b> instead.
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li>BOOST_PP_BITOR</li>
+ <li>BOOST_PP_LIMIT_MAG</li>
+ </ul>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <boost/preprocessor/logical/or.hpp>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+#include <boost/preprocessor/logical/or.hpp>
+
+BOOST_PP_OR(4, 3) // expands to 1
+BOOST_PP_OR(5, 0) // expands to 1
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/ref/overload.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/ref/overload.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,46 @@
+<html>
+ <head>
+ <title>BOOST_PP_OVERLOAD</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+ </head>
+ <body>
+<div style="margin-left: 0px;"> The <b>BOOST_PP_OVERLOAD</b> variadic macro expands to the name of a non-variadic macro having a given number of parameters.<br>
+ </div>
+<h4>Usage</h4>
+<div class="code"> <b>BOOST_PP_OVERLOAD</b>(<i>prefix</i>,...) <sup>(v)</sup><br>
+ </div>
+<h4>Arguments</h4>
+<dl>
+<dt>prefix<br>
+</dt><dd>
+ The prefix of the non-variadic macro name.
+ </dd><dt>...<br>
+</dt><dd><i>
+ Variadic data</i>. The number of variadic data
+elements, as determined by BOOST_PP_VARIADIC_SIZE, is appended to the
+prefix to form the output non-variadic macro name.<br>
+</dd>
+</dl>
+<h4>Remarks</h4>
+<div> This macro creates a macro name which depends on the number of elements of variadic data. It should be used in the form of <br>
+BOOST_PP_OVERLOAD(MACRO_NAME_,__VA_ARGS__)(__VA_ARGS__) in order to
+call a non-variadic macro taking a given number of variadic data
+elements as non-variadic arguments. In this way one can invoke a
+variadic macro with a variable number of parameters which calls one of
+a series of non-variadic macros doing very similar things.
+</div><b>Requirements</b>
+<div> <b>Header:</b> <boost/preprocessor/facilities/overload.hpp>
+</div>
+<h4>Sample Code</h4>
+<div>
+<pre>#include <boost/preprocessor/facilities/overload.hpp><br>#include <boost/preprocessor/cat.hpp><br>#include <boost/preprocessor/facilities/empty.hpp><br>#include <boost/preprocessor/arithmetic/add.hpp><br><br>#define MACRO_1(number) MACRO_2(number,10)<br>#define MACRO_2(number1,number2) BOOST_PP_ADD(number1,number2)<br><br>#define MACRO_ADD_NUMBERS(...) BOOST_PP_OVERLOAD(MACRO_,__VA_ARGS__)(__VA_ARGS__)<br><br>// or for Visual C++<br><br>#define MACRO_ADD_NUMBERS(...) \<br> BOOST_PP_CAT(BOOST_PP_OVERLOAD(MACRO_,__VA_ARGS__)(__VA_ARGS__),BOOST_PP_EMPTY())<br><br>MACRO_ADD_NUMBERS(5) // output is 15<br>MACRO_ADD_NUMBERS(3,6) // output is 9<br></pre>
+</div>
+<hr size="1">
+<div style="margin-left: 0px;"> <i></i><i>© Copyright Edward Diener 2011</i> </div>
+<div style="margin-left: 0px;">
+<p><small>Distributed under the Boost Software License, Version 1.0.
+(See accompanying file LICENSE_1_0.txt
+or copy at www.boost.org/LICENSE_1_0.txt)</small></p>
+</div>
+ </body>
+</html>
\ No newline at end of file
Added: branches/pplib/v2/libs/preprocessor/doc/ref/relative_finish.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/ref/relative_finish.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,46 @@
+<html>
+<head>
+ <title>BOOST_PP_RELATIVE_FINISH</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_RELATIVE_FINISH</b> macro expands to the upper bound of a <i>file-iteration</i> depth relative to the current depth.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_RELATIVE_FINISH</b>(<i>i</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>i</dt>
+ <dd>
+ The relative depth of the frame whose upper bound is to be retreived.
+ Valid values range from <i>0</i> to <b>BOOST_PP_ITERATION_DEPTH</b>() - <i>1</i>.
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ This macro is only valid when a <i>file-iteration</i> is in progress.
+ </div>
+ <div>
+ The argument <i>i</i> is interpreted as the number of frames <i>outward</i> from the current frame.
+ </div>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <boost/preprocessor/iteration/iterate.hpp>
+ </div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/ref/relative_flags.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/ref/relative_flags.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,46 @@
+<html>
+<head>
+ <title>BOOST_PP_RELATIVE_FLAGS</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_RELATIVE_FLAGS</b> macro expands to the flags associated with a <i>file-iteration</i> depth relative to the current depth.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_RELATIVE_FLAGS</b>(<i>i</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>i</dt>
+ <dd>
+ The relative depth of the frame whose flags are to be retreived.
+ Valid values range from <i>0</i> to <b>BOOST_PP_ITERATION_DEPTH</b>() - <i>1</i>.
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ This macro is only valid when a <i>file-iteration</i> is in progress.
+ </div>
+ <div>
+ The argument <i>i</i> is interpreted as the number of frames <i>outward</i> from the current frame.
+ </div>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <boost/preprocessor/iteration/iterate.hpp>
+ </div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/ref/relative_iteration.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/ref/relative_iteration.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,101 @@
+<html>
+<head>
+ <title>BOOST_PP_RELATIVE_ITERATION</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_RELATIVE_ITERATION</b> macro expands to the iteration value of a <i>file-iteration</i> depth relative to the current depth.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_RELATIVE_ITERATION</b>(<i>i</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>i</dt>
+ <dd>
+ The relative depth of the frame whose iteration value is to be retreived.
+ Valid values range from <i>0</i> to <b>BOOST_PP_ITERATION_DEPTH</b>() - <i>1</i>.
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ This macro is only valid when a <i>file-iteration</i> is in progress.
+ </div>
+ <div>
+ The argument <i>i</i> is interpreted as the number of frames <i>outward</i> from the current frame.
+ Therefore, <b>BOOST_PP_RELATIVE_ITERATION</b>(<i>0</i>) is equivalent to <b>BOOST_PP_ITERATION</b>().
+ </div>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <boost/preprocessor/iteration/iterate.hpp>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+// 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
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/ref/relative_start.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/ref/relative_start.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,46 @@
+<html>
+<head>
+ <title>BOOST_PP_RELATIVE_START</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_RELATIVE_START</b> macro expands to the lower bound of a <i>file-iteration</i> depth relative to the current depth.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_RELATIVE_START</b>(<i>i</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>i</dt>
+ <dd>
+ The relative depth of the frame whose lower bound is to be retreived.
+ Valid values range from <i>0</i> to <b>BOOST_PP_ITERATION_DEPTH</b>() - <i>1</i>.
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ This macro is only valid when a <i>file-iteration</i> is in progress.
+ </div>
+ <div>
+ The argument <i>i</i> is interpreted as the number of frames <i>outward</i> from the current frame.
+ </div>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <boost/preprocessor/iteration/iterate.hpp>
+ </div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/ref/repeat.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/ref/repeat.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,80 @@
+<html>
+<head>
+ <title>BOOST_PP_REPEAT</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_REPEAT</b> macro represents a fast horizontal repetition construct.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_REPEAT</b>(<i>count</i>, <i>macro</i>, <i>data</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>count</dt>
+ <dd>
+ The number of repetitious calls to <i>macro</i>.
+ Valid values range from <i>0</i> to <b>BOOST_PP_LIMIT_REPEAT</b>.
+ </dd>
+ <dt>macro</dt>
+ <dd>
+ A ternary operation of the form <i>macro</i>(<i>z</i>, <i>n</i>, <i>data</i>).
+ This macro is expanded by <b>BOOST_PP_REPEAT</b> with the next available repetition depth,
+ the current repetition number, and the auxiliary <i>data</i> argument.
+ </dd>
+ <dt>data</dt>
+ <dd>
+ Auxiliary data passed to <i>macro</i>.
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ This macro expands to the sequence:
+ <div>
+ <i>macro</i>(<i>z</i>, <i>0</i>, <i>data</i>) <i>macro</i>(<i>z</i>, <i>1</i>, <i>data</i>) ... <i>macro</i>(<i>z</i>, <i>count</i> - <i>1</i>, <i>data</i>)
+ </div>
+ </div>
+ <div>
+ The <i>z</i> value that is passed to <i>macro</i> represents the next available repetition dimension.
+ Other macros that have <b>_Z</b> suffix variants internally use <b>BOOST_PP_REPEAT</b>--for example, <b>BOOST_PP_ENUM_PARAMS</b> and <b>BOOST_PP_ENUM_PARAMS_Z</b>.
+ Using these <b>_Z</b> versions is not strictly necessary, but passing the <i>z</i> value (that is passed to <i>macro</i>) to these macros allows them to reenter <b>BOOST_PP_REPEAT</b> with maximum efficiency.
+ </div>
+ <div>
+ To directly use this <i>z</i> value, rather than simply passing it to another macro, see <b>BOOST_PP_REPEAT_<i>z</i></b>.
+ </div>
+ <div>
+ Previously, this macro could not be used recursively inside <b>BOOST_PP_REPEAT</b>.
+ This limitation no longer exists, as the library can automatically detect the next available repetition depth.
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li>BOOST_PP_LIMIT_REPEAT</li>
+ <li>BOOST_PP_REPEAT_z</li>
+ </ul>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <boost/preprocessor/repetition/repeat.hpp>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+#include <boost/preprocessor/repetition/repeat.hpp>
+
+#define DECL(z, n, text) text ## n = n;
+
+BOOST_PP_REPEAT(5, DECL, int x)
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/ref/repeat_1st.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/ref/repeat_1st.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,82 @@
+<html>
+<head>
+ <title>BOOST_PP_REPEAT_1ST</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_REPEAT_1ST</b> macro represents the first dimension of <b>BOOST_PP_REPEAT</b>.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_REPEAT_1ST</b>(<i>count</i>, <i>macro</i>, <i>data</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>count</dt>
+ <dd>
+ The number of repetitious calls to <i>macro</i>.
+ Valid values range from <i>0</i> to <b>BOOST_PP_LIMIT_REPEAT</b>.
+ </dd>
+ <dt>macro</dt>
+ <dd>
+ A ternary operation of the form <i>macro</i>(<i>z</i>, <i>n</i>, <i>data</i>).
+ This macro is expanded by <b>BOOST_PP_REPEAT_1ST</b> with the next available repetition depth,
+ the current repetition number, and the auxiliary <i>data</i> argument.
+ </dd>
+ <dt>data</dt>
+ <dd>
+ Auxiliary data passed to <i>macro</i>.
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ This macro expands to the sequence:
+ <div>
+ <i>macro</i>(<i>z</i>, <i>0</i>, <i>data</i>) <i>macro</i>(<i>z</i>, <i>1</i>, <i>data</i>) ... <i>macro</i>(<i>z</i>, <i>count</i> - <i>1</i>, <i>data</i>)
+ </div>
+ </div>
+ <div>
+ The <i>z</i> value that is passed to <i>macro</i> represents the next available repetition dimension.
+ Other macros that have <b>_Z</b> suffix variants internally use <b>BOOST_PP_REPEAT</b>--for example, <b>BOOST_PP_ENUM_PARAMS</b> and <b>BOOST_PP_ENUM_PARAMS_Z</b>.
+ Using these <b>_Z</b> versions is not strictly necessary, but passing the <i>z</i> value (that is passed to <i>macro</i>) to these macros allows them to reenter <b>BOOST_PP_REPEAT</b> with maximum efficiency.
+ </div>
+ <div>
+ To directly use this <i>z</i> value, rather than simply passing it to another macro, see <b>BOOST_PP_REPEAT_<i>z</i></b>.
+ </div>
+ <div>
+ This macro is deprecated.
+ It only exists for backward compatibility.
+ Use <b>BOOST_PP_REPEAT</b> instead.
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li>BOOST_PP_LIMIT_REPEAT</li>
+ <li>BOOST_PP_REPEAT</li>
+ <li>BOOST_PP_REPEAT_z</li>
+ </ul>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <boost/preprocessor/repetition/repeat.hpp>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+#include <boost/preprocessor/repetition/repeat.hpp>
+
+#define DECL(z, n, text) text ## n = n;
+
+BOOST_PP_REPEAT_1ST(5, DECL, int x)
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/ref/repeat_2nd.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/ref/repeat_2nd.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,82 @@
+<html>
+<head>
+ <title>BOOST_PP_REPEAT_2ND</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_REPEAT_2ND</b> macro represents the second dimension of <b>BOOST_PP_REPEAT</b>.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_REPEAT_2ND</b>(<i>count</i>, <i>macro</i>, <i>data</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>count</dt>
+ <dd>
+ The number of repetitious calls to <i>macro</i>.
+ Valid values range from <i>0</i> to <b>BOOST_PP_LIMIT_REPEAT</b>.
+ </dd>
+ <dt>macro</dt>
+ <dd>
+ A ternary operation of the form <i>macro</i>(<i>z</i>, <i>n</i>, <i>data</i>).
+ This macro is expanded by <b>BOOST_PP_REPEAT_2ND</b> with the next available repetition depth,
+ the current repetition number, and the auxiliary <i>data</i> argument.
+ </dd>
+ <dt>data</dt>
+ <dd>
+ Auxiliary data passed to <i>macro</i>.
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ This macro expands to the sequence:
+ <div>
+ <i>macro</i>(<i>z</i>, <i>0</i>, <i>data</i>) <i>macro</i>(<i>z</i>, <i>1</i>, <i>data</i>) ... <i>macro</i>(<i>z</i>, <i>count</i> - <i>1</i>, <i>data</i>)
+ </div>
+ </div>
+ <div>
+ The <i>z</i> value that is passed to <i>macro</i> represents the next available repetition dimension.
+ Other macros that have <b>_Z</b> suffix variants internally use <b>BOOST_PP_REPEAT</b>--for example, <b>BOOST_PP_ENUM_PARAMS</b> and <b>BOOST_PP_ENUM_PARAMS_Z</b>.
+ Using these <b>_Z</b> versions is not strictly necessary, but passing the <i>z</i> value (that is passed to <i>macro</i>) to these macros allows them to reenter <b>BOOST_PP_REPEAT</b> with maximum efficiency.
+ </div>
+ <div>
+ To directly use this <i>z</i> value, rather than simply passing it to another macro, see <b>BOOST_PP_REPEAT_<i>z</i></b>.
+ </div>
+ <div>
+ This macro is deprecated.
+ It only exists for backward compatibility.
+ Use <b>BOOST_PP_REPEAT</b> instead.
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li>BOOST_PP_LIMIT_REPEAT</li>
+ <li>BOOST_PP_REPEAT</li>
+ <li>BOOST_PP_REPEAT_z</li>
+ </ul>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <boost/preprocessor/repetition/repeat.hpp>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+#include <boost/preprocessor/repetition/repeat.hpp>
+
+#define DECL(z, n, text) text ## n = n;
+
+BOOST_PP_REPEAT_2ND(5, DECL, int x)
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/ref/repeat_3rd.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/ref/repeat_3rd.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,82 @@
+<html>
+<head>
+ <title>BOOST_PP_REPEAT_3RD</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_REPEAT_3RD</b> macro represents the third dimension of <b>BOOST_PP_REPEAT</b>.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_REPEAT_3RD</b>(<i>count</i>, <i>macro</i>, <i>data</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>count</dt>
+ <dd>
+ The number of repetitious calls to <i>macro</i>.
+ Valid values range from <i>0</i> to <b>BOOST_PP_LIMIT_REPEAT</b>.
+ </dd>
+ <dt>macro</dt>
+ <dd>
+ A ternary operation of the form <i>macro</i>(<i>z</i>, <i>n</i>, <i>data</i>).
+ This macro is expanded by <b>BOOST_PP_REPEAT_3RD</b> with the next available repetition depth,
+ the current repetition number, and the auxiliary <i>data</i> argument.
+ </dd>
+ <dt>data</dt>
+ <dd>
+ Auxiliary data passed to <i>macro</i>.
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ This macro expands to the sequence:
+ <div>
+ <i>macro</i>(<i>z</i>, <i>0</i>, <i>data</i>) <i>macro</i>(<i>z</i>, <i>1</i>, <i>data</i>) ... <i>macro</i>(<i>z</i>, <i>count</i> - <i>1</i>, <i>data</i>)
+ </div>
+ </div>
+ <div>
+ The <i>z</i> value that is passed to <i>macro</i> represents the next available repetition dimension.
+ Other macros that have <b>_Z</b> suffix variants internally use <b>BOOST_PP_REPEAT</b>--for example, <b>BOOST_PP_ENUM_PARAMS</b> and <b>BOOST_PP_ENUM_PARAMS_Z</b>.
+ Using these <b>_Z</b> versions is not strictly necessary, but passing the <i>z</i> value (that is passed to <i>macro</i>) to these macros allows them to reenter <b>BOOST_PP_REPEAT</b> with maximum efficiency.
+ </div>
+ <div>
+ To directly use this <i>z</i> value, rather than simply passing it to another macro, see <b>BOOST_PP_REPEAT_<i>z</i></b>.
+ </div>
+ <div>
+ This macro is deprecated.
+ It only exists for backward compatibility.
+ Use <b>BOOST_PP_REPEAT</b> instead.
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li>BOOST_PP_LIMIT_REPEAT</li>
+ <li>BOOST_PP_REPEAT</li>
+ <li>BOOST_PP_REPEAT_z</li>
+ </ul>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <boost/preprocessor/repetition/repeat.hpp>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+#include <boost/preprocessor/repetition/repeat.hpp>
+
+#define DECL(z, n, text) text ## n = n;
+
+BOOST_PP_REPEAT_3RD(5, DECL, int x)
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/ref/repeat_from_to.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/ref/repeat_from_to.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,102 @@
+<html>
+<head>
+ <title>BOOST_PP_REPEAT_FROM_TO</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_REPEAT_FROM_TO</b> macro represents a fast horizontal repetition construct.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_REPEAT_FROM_TO</b>(<i>first</i>, <i>last</i>, <i>macro</i>, <i>data</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>first</dt>
+ <dd>
+ The lower bound of the repetition.
+ Valid values range from <i>0</i> to <b>BOOST_PP_LIMIT_MAG</b>.
+ </dd>
+ <dt>last</dt>
+ <dd>
+ The upper bound of the repetition.
+ Valid values range from <i>0</i> to <b>BOOST_PP_LIMIT_MAG</b>.
+ </dd>
+ <dt>macro</dt>
+ <dd>
+ A ternary operation of the form <i>macro</i>(<i>z</i>, <i>n</i>, <i>data</i>).
+ This macro is expanded by <b>BOOST_PP_REPEAT</b> with the next available repetition depth,
+ the current repetition number, and the auxiliary <i>data</i> argument.
+ </dd>
+ <dt>data</dt>
+ <dd>
+ Auxiliary data passed to <i>macro</i>.
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ This macro expands to the sequence:
+ <div>
+ <i>macro</i>(<i>z</i>, <i>first</i>, <i>data</i>) <i>macro</i>(<i>z</i>, <i>first</i> + <i>1</i>, <i>data</i>) ... <i>macro</i>(<i>z</i>, <i>last</i> - <i>1</i>, <i>data</i>)
+ </div>
+ </div>
+ <div>
+ The number of repetitions (i.e. <i>last</i> - <i>first</i>) must not exceed <b>BOOST_PP_LIMIT_REPEAT</b>.
+ </div>
+ <div>
+ The <i>z</i> value that is passed to <i>macro</i> represents the next available repetition dimension.
+ Other macros that have <b>_Z</b> suffix variants internally use <b>BOOST_PP_REPEAT</b>--for example, <b>BOOST_PP_ENUM_PARAMS</b> and <b>BOOST_PP_ENUM_PARAMS_Z</b>.
+ Using these <b>_Z</b> versions is not strictly necessary, but passing the <i>z</i> value (that is passed to <i>macro</i>) to these macros allows them to reenter <b>BOOST_PP_REPEAT</b> with maximum efficiency.
+ </div>
+ <div>
+ To directly use this <i>z</i> value, rather than simply passing it to another macro, see <b>BOOST_PP_REPEAT_FROM_TO_<i>z</i></b>.
+ </div>
+ <div>
+ Previously, this macro could not be used recursively inside <b>BOOST_PP_REPEAT</b>.
+ This limitation no longer exists, as the library can automatically detect the next available repetition depth.
+ </div>
+ <div>
+ This macro also uses <b>BOOST_PP_WHILE</b>.
+ Because of this, there are also two variants of this macro for ideal reentrance into <b>BOOST_PP_WHILE</b>,
+ <b>BOOST_PP_REPEAT_FROM_TO_D</b> and <b>BOOST_PP_REPEAT_FROM_TO_D_<i>z</i>.
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li>BOOST_PP_LIMIT_MAG</li>
+ <li>BOOST_PP_LIMIT_REPEAT</li>
+ <li>BOOST_PP_REPEAT_FROM_TO_D</li>
+ <li>BOOST_PP_REPEAT_FROM_TO_D_z</li>
+ <li>BOOST_PP_REPEAT_FROM_TO_z</li>
+ </ul>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <boost/preprocessor/repetition/repeat_from_to.hpp>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+#include <boost/preprocessor/cat.hpp>
+#include <boost/preprocessor/repetition/repeat_from_to.hpp>
+
+#define DECL(z, n, text) BOOST_PP_CAT(text, n) = n;
+
+BOOST_PP_REPEAT_FROM_TO(5, 10, DECL, int x)
+ /*
+ expands to:
+ int x5 = 5; int x6 = 6; int x7 = 7;
+ int x8 = 8; int x9 = 9;
+ */
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/ref/repeat_from_to_1st.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/ref/repeat_from_to_1st.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,91 @@
+<html>
+<head>
+ <title>BOOST_PP_REPEAT_FROM_TO_1ST</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_REPEAT_FROM_TO_1ST</b> macro represents the first dimension of <b>BOOST_PP_REPEAT_FROM_TO</b>.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_REPEAT_FROM_TO_1ST</b>(<i>first</i>, <i>last</i>, <i>macro</i>, <i>data</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>first</dt>
+ <dd>
+ The lower bound of the repetition.
+ Valid values range from <i>0</i> to <b>BOOST_PP_LIMIT_MAG</b>.
+ </dd>
+ <dt>last</dt>
+ <dd>
+ The upper bound of the repetition.
+ Valid values range from <i>0</i> to <b>BOOST_PP_LIMIT_MAG</b>.
+ </dd>
+ <dt>macro</dt>
+ <dd>
+ A ternary operation of the form <i>macro</i>(<i>z</i>, <i>n</i>, <i>data</i>).
+ This macro is expanded by <b>BOOST_PP_REPEAT_FROM_TO_1ST</b> with the next available repetition depth,
+ the current repetition number, and the auxiliary <i>data</i> argument.
+ </dd>
+ <dt>data</dt>
+ <dd>
+ Auxiliary data passed to <i>macro</i>.
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ This macro expands to the sequence:
+ <div>
+ <i>macro</i>(<i>z</i>, <i>first</i>, <i>data</i>) <i>macro</i>(<i>z</i>, <i>first</i> + <i>1</i>, <i>data</i>) ... <i>macro</i>(<i>z</i>, <i>last</i> - <i>1</i>, <i>data</i>)
+ </div>
+ </div>
+ <div>
+ The number of repetitions (i.e. <i>last</i> - <i>first</i>) must not exceed <b>BOOST_PP_LIMIT_REPEAT</b>.
+ </div>
+ <div>
+ The <i>z</i> value that is passed to <i>macro</i> represents the next available repetition dimension.
+ Other macros that have <b>_Z</b> suffix variants internally use <b>BOOST_PP_REPEAT</b>--for example, <b>BOOST_PP_ENUM_PARAMS</b> and <b>BOOST_PP_ENUM_PARAMS_Z</b>.
+ Using these <b>_Z</b> versions is not strictly necessary, but passing the <i>z</i> value (that is passed to <i>macro</i>) to these macros allows them to reenter <b>BOOST_PP_REPEAT</b> with maximum efficiency.
+ </div>
+ <div>
+ To directly use this <i>z</i> value, rather than simply passing it to another macro, see <b>BOOST_PP_REPEAT_FROM_TO_<i>z</i></b>.
+ </div>
+ <div>
+ This macro is deprecated.
+ It only exists for backward compatibility.
+ Use <b>BOOST_PP_REPEAT_FROM_TO</b> instead.
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li>BOOST_PP_LIMIT_MAG</li>
+ <li>BOOST_PP_LIMIT_REPEAT</li>
+ <li>BOOST_PP_REPEAT_FROM_TO_z</li>
+ </ul>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <boost/preprocessor/repetition/repeat_from_to.hpp>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+#include <boost/preprocessor/repetition/repeat_from_to.hpp>
+
+#define MACRO(z, n, data) (n)
+
+BOOST_PP_REPEAT_FROM_TO_1ST(1, 6, MACRO, nil)
+ // expands to (1) (2) (3) (4) (5)
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/ref/repeat_from_to_2nd.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/ref/repeat_from_to_2nd.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,91 @@
+<html>
+<head>
+ <title>BOOST_PP_REPEAT_FROM_TO_2ND</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_REPEAT_FROM_TO_2ND</b> macro represents the second dimension of <b>BOOST_PP_REPEAT_FROM_TO</b>.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_REPEAT_FROM_TO_2ND</b>(<i>first</i>, <i>last</i>, <i>macro</i>, <i>data</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>first</dt>
+ <dd>
+ The lower bound of the repetition.
+ Valid values range from <i>0</i> to <b>BOOST_PP_LIMIT_MAG</b>.
+ </dd>
+ <dt>last</dt>
+ <dd>
+ The upper bound of the repetition.
+ Valid values range from <i>0</i> to <b>BOOST_PP_LIMIT_MAG</b>.
+ </dd>
+ <dt>macro</dt>
+ <dd>
+ A ternary operation of the form <i>macro</i>(<i>z</i>, <i>n</i>, <i>data</i>).
+ This macro is expanded by <b>BOOST_PP_REPEAT_FROM_TO_2ND</b> with the next available repetition depth,
+ the current repetition number, and the auxiliary <i>data</i> argument.
+ </dd>
+ <dt>data</dt>
+ <dd>
+ Auxiliary data passed to <i>macro</i>.
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ This macro expands to the sequence:
+ <div>
+ <i>macro</i>(<i>z</i>, <i>first</i>, <i>data</i>) <i>macro</i>(<i>z</i>, <i>first</i> + <i>1</i>, <i>data</i>) ... <i>macro</i>(<i>z</i>, <i>last</i> - <i>1</i>, <i>data</i>)
+ </div>
+ </div>
+ <div>
+ The number of repetitions (i.e. <i>last</i> - <i>first</i>) must not exceed <b>BOOST_PP_LIMIT_REPEAT</b>.
+ </div>
+ <div>
+ The <i>z</i> value that is passed to <i>macro</i> represents the next available repetition dimension.
+ Other macros that have <b>_Z</b> suffix variants internally use <b>BOOST_PP_REPEAT</b>--for example, <b>BOOST_PP_ENUM_PARAMS</b> and <b>BOOST_PP_ENUM_PARAMS_Z</b>.
+ Using these <b>_Z</b> versions is not strictly necessary, but passing the <i>z</i> value (that is passed to <i>macro</i>) to these macros allows them to reenter <b>BOOST_PP_REPEAT</b> with maximum efficiency.
+ </div>
+ <div>
+ To directly use this <i>z</i> value, rather than simply passing it to another macro, see <b>BOOST_PP_REPEAT_FROM_TO_<i>z</i></b>.
+ </div>
+ <div>
+ This macro is deprecated.
+ It only exists for backward compatibility.
+ Use <b>BOOST_PP_REPEAT_FROM_TO</b> instead.
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li>BOOST_PP_LIMIT_MAG</li>
+ <li>BOOST_PP_LIMIT_REPEAT</li>
+ <li>BOOST_PP_REPEAT_FROM_TO_z</li>
+ </ul>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <boost/preprocessor/repetition/repeat_from_to.hpp>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+#include <boost/preprocessor/repetition/repeat_from_to.hpp>
+
+#define MACRO(z, n, data) (n)
+
+BOOST_PP_REPEAT_FROM_TO_2ND(1, 6, MACRO, nil)
+ // expands to (1) (2) (3) (4) (5)
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/ref/repeat_from_to_3rd.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/ref/repeat_from_to_3rd.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,91 @@
+<html>
+<head>
+ <title>BOOST_PP_REPEAT_FROM_TO_3RD</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_REPEAT_FROM_TO_3RD</b> macro represents the third dimension of <b>BOOST_PP_REPEAT_FROM_TO</b>.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_REPEAT_FROM_TO_3RD</b>(<i>first</i>, <i>last</i>, <i>macro</i>, <i>data</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>first</dt>
+ <dd>
+ The lower bound of the repetition.
+ Valid values range from <i>0</i> to <b>BOOST_PP_LIMIT_MAG</b>.
+ </dd>
+ <dt>last</dt>
+ <dd>
+ The upper bound of the repetition.
+ Valid values range from <i>0</i> to <b>BOOST_PP_LIMIT_MAG</b>.
+ </dd>
+ <dt>macro</dt>
+ <dd>
+ A ternary operation of the form <i>macro</i>(<i>z</i>, <i>n</i>, <i>data</i>).
+ This macro is expanded by <b>BOOST_PP_REPEAT_FROM_TO_3RD</b> with the next available repetition depth,
+ the current repetition number, and the auxiliary <i>data</i> argument.
+ </dd>
+ <dt>data</dt>
+ <dd>
+ Auxiliary data passed to <i>macro</i>.
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ This macro expands to the sequence:
+ <div>
+ <i>macro</i>(<i>z</i>, <i>first</i>, <i>data</i>) <i>macro</i>(<i>z</i>, <i>first</i> + <i>1</i>, <i>data</i>) ... <i>macro</i>(<i>z</i>, <i>last</i> - <i>1</i>, <i>data</i>)
+ </div>
+ </div>
+ <div>
+ The number of repetitions (i.e. <i>last</i> - <i>first</i>) must not exceed <b>BOOST_PP_LIMIT_REPEAT</b>.
+ </div>
+ <div>
+ The <i>z</i> value that is passed to <i>macro</i> represents the next available repetition dimension.
+ Other macros that have <b>_Z</b> suffix variants internally use <b>BOOST_PP_REPEAT</b>--for example, <b>BOOST_PP_ENUM_PARAMS</b> and <b>BOOST_PP_ENUM_PARAMS_Z</b>.
+ Using these <b>_Z</b> versions is not strictly necessary, but passing the <i>z</i> value (that is passed to <i>macro</i>) to these macros allows them to reenter <b>BOOST_PP_REPEAT</b> with maximum efficiency.
+ </div>
+ <div>
+ To directly use this <i>z</i> value, rather than simply passing it to another macro, see <b>BOOST_PP_REPEAT_FROM_TO_<i>z</i></b>.
+ </div>
+ <div>
+ This macro is deprecated.
+ It only exists for backward compatibility.
+ Use <b>BOOST_PP_REPEAT_FROM_TO</b> instead.
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li>BOOST_PP_LIMIT_MAG</li>
+ <li>BOOST_PP_LIMIT_REPEAT</li>
+ <li>BOOST_PP_REPEAT_FROM_TO_z</li>
+ </ul>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <boost/preprocessor/repetition/repeat_from_to.hpp>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+#include <boost/preprocessor/repetition/repeat_from_to.hpp>
+
+#define MACRO(z, n, data) (n)
+
+BOOST_PP_REPEAT_FROM_TO_3RD(1, 6, MACRO, nil)
+ // expands to (1) (2) (3) (4) (5)
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/ref/repeat_from_to_d.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/ref/repeat_from_to_d.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,83 @@
+<html>
+<head>
+ <title>BOOST_PP_REPEAT_FROM_TO_D</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_REPEAT_FROM_TO_D</b> macro represents a fast horizontal repetition construct.
+ It reenters <b>BOOST_PP_WHILE</b> with maximum efficiency.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_REPEAT_FROM_TO_D</b>(<i>d</i>, <i>first</i>, <i>last</i>, <i>macro</i>, <i>data</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>d</dt>
+ <dd>
+ The next available <b>BOOST_PP_WHILE</b> iteration.
+ </dd>
+ <dt>first</dt>
+ <dd>
+ The lower bound of the repetition.
+ Valid values range from <i>0</i> to <b>BOOST_PP_LIMIT_MAG</b>.
+ </dd>
+ <dt>last</dt>
+ <dd>
+ The upper bound of the repetition.
+ Valid values range from <i>0</i> to <b>BOOST_PP_LIMIT_MAG</b>.
+ </dd>
+ <dt>macro</dt>
+ <dd>
+ A ternary operation of the form <i>macro</i>(<i>z</i>, <i>n</i>, <i>data</i>).
+ This macro is expanded by <b>BOOST_PP_REPEAT</b> with the next available repetition depth,
+ the current repetition number, and the auxiliary <i>data</i> argument.
+ </dd>
+ <dt>data</dt>
+ <dd>
+ Auxiliary data passed to <i>macro</i>.
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ This macro expands to the sequence:
+ <div>
+ <i>macro</i>(<i>z</i>, <i>first</i>, <i>data</i>) <i>macro</i>(<i>z</i>, <i>first</i> + <i>1</i>, <i>data</i>) ... <i>macro</i>(<i>z</i>, <i>last</i> - <i>1</i>, <i>data</i>)
+ </div>
+ </div>
+ <div>
+ The number of repetitions (i.e. <i>last</i> - <i>first</i>) must not exceed <b>BOOST_PP_LIMIT_REPEAT</b>.
+ </div>
+ <div>
+ The <i>z</i> value that is passed to <i>macro</i> represents the next available repetition dimension.
+ Other macros that have <b>_Z</b> suffix variants internally use <b>BOOST_PP_REPEAT</b>--for example, <b>BOOST_PP_ENUM_PARAMS</b> and <b>BOOST_PP_ENUM_PARAMS_Z</b>.
+ Using these <b>_Z</b> versions is not strictly necessary, but passing the <i>z</i> value (that is passed to <i>macro</i>) to these macros allows them to reenter <b>BOOST_PP_REPEAT</b> with maximum efficiency.
+ </div>
+ <div>
+ To directly use this <i>z</i> value, rather than simply passing it to another macro, see <b>BOOST_PP_REPEAT_FROM_TO_D_<i>z</i></b>.
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li>BOOST_PP_LIMIT_MAG</li>
+ <li>BOOST_PP_LIMIT_REPEAT</li>
+ <li>BOOST_PP_REPEAT_FROM_TO</li>
+ <li>BOOST_PP_REPEAT_FROM_TO_D_z</li>
+ </ul>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <boost/preprocessor/repetition/repeat_from_to.hpp>
+ </div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/ref/repeat_from_to_d_z.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/ref/repeat_from_to_d_z.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,84 @@
+<html>
+<head>
+ <title>BOOST_PP_REPEAT_FROM_TO_D_z</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_REPEAT_FROM_TO_D_<i>z</i></b> macro represents a fast horizontal repetition construct.
+ It reenters both <b>BOOST_PP_REPEAT</b> and <b>BOOST_PP_WHILE</b> with maximum efficiency.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_REPEAT_FROM_TO_D_<i>z</i></b>(<i>d</i>, <i>first</i>, <i>last</i>, <i>macro</i>, <i>data</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>z</dt>
+ <dd>
+ The next available <b>BOOST_PP_REPEAT</b> dimension.
+ </dd>
+ <dt>d</dt>
+ <dd>
+ The next available <b>BOOST_PP_WHILE</b> iteration.
+ </dd>
+ <dt>first</dt>
+ <dd>
+ The lower bound of the repetition.
+ Valid values range from <i>0</i> to <b>BOOST_PP_LIMIT_MAG</b>.
+ </dd>
+ <dt>last</dt>
+ <dd>
+ The upper bound of the repetition.
+ Valid values range from <i>0</i> to <b>BOOST_PP_LIMIT_MAG</b>.
+ </dd>
+ <dt>macro</dt>
+ <dd>
+ A ternary operation of the form <i>macro</i>(<i>z</i>, <i>n</i>, <i>data</i>).
+ This macro is expanded by <b>BOOST_PP_REPEAT</b> with the next available repetition depth,
+ the current repetition number, and the auxiliary <i>data</i> argument.
+ </dd>
+ <dt>data</dt>
+ <dd>
+ Auxiliary data passed to <i>macro</i>.
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ This macro expands to the sequence:
+ <div>
+ <i>macro</i>(<i>z</i>, <i>first</i>, <i>data</i>) <i>macro</i>(<i>z</i>, <i>first</i> + <i>1</i>, <i>data</i>) ... <i>macro</i>(<i>z</i>, <i>last</i> - <i>1</i>, <i>data</i>)
+ </div>
+ </div>
+ <div>
+ The number of repetitions (i.e. <i>last</i> - <i>first</i>) must not exceed <b>BOOST_PP_LIMIT_REPEAT</b>.
+ </div>
+ <div>
+ The <i>z</i> value that is passed to <i>macro</i> represents the next available repetition dimension.
+ Other macros that have <b>_Z</b> suffix variants internally use <b>BOOST_PP_REPEAT</b>--for example, <b>BOOST_PP_ENUM_PARAMS</b> and <b>BOOST_PP_ENUM_PARAMS_Z</b>.
+ Using these <b>_Z</b> versions is not strictly necessary, but passing the <i>z</i> value (that is passed to <i>macro</i>) to these macros allows them to reenter <b>BOOST_PP_REPEAT</b> with maximum efficiency.
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li>BOOST_PP_LIMIT_MAG</li>
+ <li>BOOST_PP_LIMIT_REPEAT</li>
+ <li>BOOST_PP_REPEAT_FROM_TO</li>
+ <li>BOOST_PP_REPEAT_FROM_TO_D</li>
+ </ul>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <boost/preprocessor/repetition/repeat_from_to.hpp>
+ </div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/ref/repeat_from_to_z.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/ref/repeat_from_to_z.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,105 @@
+<html>
+<head>
+ <title>BOOST_PP_REPEAT_FROM_TO_z</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_REPEAT_FROM_TO_<i>z</i></b> macro represents a reentry into the <b>BOOST_PP_REPEAT_FROM_TO</b> repetition construct.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_REPEAT_FROM_TO_</b> ## <i>z</i>(<i>first</i>, <i>last</i>, <i>macro</i>, <i>data</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>z</dt>
+ <dd>
+ The next available <b>BOOST_PP_REPEAT</b> dimension.
+ </dd>
+ <dt>first</dt>
+ <dd>
+ The lower bound of the repetition.
+ Valid values range from <i>0</i> to <b>BOOST_PP_LIMIT_MAG</b>.
+ </dd>
+ <dt>last</dt>
+ <dd>
+ The upper bound of the repetition.
+ Valid values range from <i>0</i> to <b>BOOST_PP_LIMIT_MAG</b>.
+ </dd>
+ <dt>macro</dt>
+ <dd>
+ A ternary operation of the form <i>macro</i>(<i>z</i>, <i>n</i>, <i>data</i>).
+ This macro is expanded by <b>BOOST_PP_REPEAT</b> with the next available repetition depth,
+ the current repetition number, and the auxiliary <i>data</i> argument.
+ </dd>
+ <dt>data</dt>
+ <dd>
+ Auxiliary data passed to <i>macro</i>.
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ This macro expands to the sequence:
+ <div>
+ <i>macro</i>(<i>z</i>, <i>first</i>, <i>data</i>) <i>macro</i>(<i>z</i>, <i>first</i> + <i>1</i>, <i>data</i>) ... <i>macro</i>(<i>z</i>, <i>last</i> - <i>1</i>, <i>data</i>)
+ </div>
+ </div>
+ <div>
+ The number of repetitions (i.e. <i>last</i> - <i>first</i>) must not exceed <b>BOOST_PP_LIMIT_REPEAT</b>.
+ </div>
+ <div>
+ At certain times, it may be necessary to perform the concatenation with <b>BOOST_PP_CAT</b> rather than the preprocessor token-pasting operator.
+ This happens when the <i>z</i> value is a macro invocation itself.
+ It needs a delay to allow it to expand.
+ The syntax in such a scenario becomes:
+ <div>
+ <b>BOOST_PP_CAT</b>(<b>BOOST_PP_REPEAT_FROM_TO_</b>, <i>z</i>)(<i>count</i>, <i>macro</i>, <i>data</i>).
+ </div>
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li>BOOST_PP_CAT</li>
+ <li>BOOST_PP_LIMIT_REPEAT</li>
+ <li>BOOST_PP_REPEAT</li>
+ </ul>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <boost/preprocessor/repetition/repeat_from_to.hpp>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+#include <boost/preprocessor/repetition/repeat_from_to.hpp>
+
+#define TEXT(z, n, data) n data
+
+#define MACRO(z, n, data) \
+ ( \
+ BOOST_PP_REPEAT_FROM_TO_ ## z( \
+ 1, 4, \
+ TEXT, xyz \
+ ) \
+ ) \
+ /**/
+
+BOOST_PP_REPEAT(3, MACRO, _)
+ /*
+ expands to:
+ (1 xyz 2 xyz 3 xyz)
+ (1 xyz 2 xyz 3 xyz)
+ (1 xyz 2 xyz 3 xyz)
+ */
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/ref/repeat_z.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/ref/repeat_z.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,100 @@
+<html>
+<head>
+ <title>BOOST_PP_REPEAT_z</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_REPEAT_<i>z</i></b> macro represents a reentry into the <b>BOOST_PP_REPEAT</b> repetition construct.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_REPEAT_</b> ## <i>z</i>(<i>count</i>, <i>macro</i>, <i>data</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>z</dt>
+ <dd>
+ The next available <b>BOOST_PP_REPEAT</b> dimension.
+ </dd>
+ <dt>count</dt>
+ <dd>
+ The number of repetitious calls to <i>macro</i>.
+ Valid values range from <i>0</i> to <b>BOOST_PP_LIMIT_REPEAT</b>.
+ </dd>
+ <dt>macro</dt>
+ <dd>
+ A ternary operation of the form <i>macro</i>(<i>z</i>, <i>n</i>, <i>data</i>).
+ This macro is expanded by <b>BOOST_PP_REPEAT</b> with the next available repetition depth,
+ the current repetition number, and the auxiliary <i>data</i> argument.
+ </dd>
+ <dt>data</dt>
+ <dd>
+ Auxiliary data passed to <i>macro</i>.
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ This macro expands to the sequence:
+ <div>
+ <i>macro</i>(<i>z</i>, <i>0</i>, <i>data</i>) <i>macro</i>(<i>z</i>, <i>1</i>, <i>data</i>) ... <i>macro</i>(<i>z</i>, <i>count</i> - <i>1</i>, <i>data</i>)
+ </div>
+ </div>
+ <div>
+ At certain times, it may be necessary to perform the concatenation with <b>BOOST_PP_CAT</b> rather than the preprocessor token-pasting operator.
+ This happens when the <i>z</i> value is a macro invocation itself.
+ It needs a delay to allow it to expand.
+ The syntax in such a scenario becomes:
+ <div>
+ <b>BOOST_PP_CAT</b>(<b>BOOST_PP_REPEAT_</b>, <i>z</i>)(<i>count</i>, <i>macro</i>, <i>data</i>)
+ </div>
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li>BOOST_PP_CAT</li>
+ <li>BOOST_PP_LIMIT_REPEAT</li>
+ <li>BOOST_PP_REPEAT</li>
+ </ul>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <boost/preprocessor/repetition/repeat.hpp>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+#include <boost/preprocessor/arithmetic/inc.hpp>
+#include <boost/preprocessor/punctuation/comma_if.hpp>
+#include <boost/preprocessor/repetition/repeat.hpp>
+
+#define TEXT(z, n, text) BOOST_PP_COMMA_IF(n) text
+
+#define TEMPLATE(z, n, _) \
+ BOOST_PP_COMMA_IF(n) \
+ template< \
+ BOOST_PP_REPEAT_ ## z( \
+ BOOST_PP_INC(n), \
+ TEXT, class \
+ ) \
+ > class T ## n \
+ /**/
+
+BOOST_PP_REPEAT(3, TEMPLATE, nil)
+ /*
+ expands to:
+ template<class> class T0,
+ template<class, class> class T1,
+ template<class, class, class> class T2
+ */
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/ref/rparen.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/ref/rparen.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,53 @@
+<html>
+<head>
+ <title>BOOST_PP_RPAREN</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_RPAREN</b> macro expands to a right parenthesis.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_RPAREN</b>()
+ </div>
+ <h4>Remarks</h4>
+ <div>
+ The preprocessor interprets parentheses as delimiters in macro invocations.
+ Because of this, parentheses require special handling.
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li>BOOST_PP_LPAREN</li>
+ </ul>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <boost/preprocessor/punctuation/paren.hpp>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+#include <boost/preprocessor/facilities/empty.hpp>
+#include <boost/preprocessor/punctuation/paren.hpp>
+
+#define X(x) x
+#define MACRO(x, p) X ( x p
+
+MACRO(abc, BOOST_PP_RPAREN()) // expands to abc
+
+#define Y(x)
+
+MACRO(BOOST_PP_EMPTY BOOST_PP_RPAREN()(), 10) // expands to 10
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/ref/rparen_if.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/ref/rparen_if.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,61 @@
+<html>
+<head>
+ <title>BOOST_PP_RPAREN_IF</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_RPAREN_IF</b> macro conditionally expands to a right parenthesis.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_RPAREN_IF</b>(<i>cond</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>cond</dt>
+ <dd>
+ The condition that determines if a the macro expands to a right parenthesis or nothing.
+ Valid values range from <i>0</i> to <b>BOOST_PP_LIMIT_MAG</b>.
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ If <i>cond</i> expands to <i>0</i>, this macro expands to nothing.
+ Otherwise, it expands to a right parenthesis.
+ </div>
+ <div>
+ The preprocessor interprets parentheses as delimiters in macro invocations.
+ Because of this, parentheses require special handling.
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li>BOOST_PP_LIMIT_MAG</li>
+ <li>BOOST_PP_LPAREN_IF</li>
+ </ul>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <boost/preprocessor/punctuation/paren_if.hpp>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+#include <boost/preprocessor/punctuation/paren_if.hpp>
+
+#define MACRO(c, x) BOOST_PP_LPAREN_IF(c) x BOOST_PP_RPAREN_IF(c)
+
+MACRO(0, text) // expands to text
+MACRO(1, text) // expands to (text)
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/ref/seq_cat.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/ref/seq_cat.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,64 @@
+<html>
+<head>
+ <title>BOOST_PP_SEQ_CAT</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_SEQ_CAT</b> macro concatenates all elements in a <i>seq</i>.
+ </div>
+ <h4>
+ Usage
+ </h4>
+ <div class="code">
+ <b>BOOST_PP_SEQ_CAT</b>(<i>seq</i>)
+ </div>
+ <h4>
+ Arguments
+ </h4>
+ <dl>
+ <dt>seq</dt>
+ <dd>
+ The <i>seq</i> whose elements are to be concatenated.
+ </dd>
+ </dl>
+ <h4>
+ Remarks
+ </h4>
+ <div>
+ Elements are concatenated left-to-right starting with index <i>0</i>.
+ </div>
+ <div>
+ For maximum efficiency, use <b>BOOST_PP_SEQ_CAT_S</b>.
+ </div>
+ <h4>
+ See Also
+ </h4>
+ <ul>
+ <li>
+ BOOST_PP_SEQ_CAT_S</li>
+ </ul>
+ <h4>
+ Requirements
+ </h4>
+ <div>
+ <b>Header:</b> <boost/preprocessor/seq/cat.hpp>
+ </div>
+ <h4>
+ Sample Code
+ </h4>
+ <div>
+ <pre>#include <boost/preprocessor/seq/cat.hpp><br><br>#define SEQ (a)(b)(c)<br><br>BOOST_PP_SEQ_CAT(SEQ) // expands to abc<br></pre>
+ </div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ <br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at www.boost.org/LICENSE_1_0.txt)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/ref/seq_cat_s.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/ref/seq_cat_s.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,60 @@
+<html>
+<head>
+ <title>BOOST_PP_SEQ_CAT_S</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_SEQ_CAT_S</b> macro concatenates all elements in a <i>seq</i>.
+ It reenters <b>BOOST_PP_SEQ_FOLD_LEFT</b> with maximum efficiency.
+ </div>
+ <h4>
+ Usage
+ </h4>
+ <div class="code">
+ <b>BOOST_PP_SEQ_CAT_S</b>(<i>s</i>, <i>seq</i>)
+ </div>
+ <h4>
+ Arguments
+ </h4>
+ <dl>
+ <dt>s</dt>
+ <dd>
+ The next available <b>BOOST_PP_SEQ_FOLD_LEFT</b> fold step.
+ </dd>
+ <dt>seq</dt>
+ <dd>
+ The <i>seq</i> whose elements are to be concatenated.
+ </dd>
+ </dl>
+ <h4>
+ Remarks
+ </h4>
+ <div>
+ Elements are concatenated left-to-right starting with index <i>0</i>.
+ </div>
+ <h4>
+ See Also
+ </h4>
+ <ul>
+ <li>
+ BOOST_PP_SEQ_CAT</li>
+ </ul>
+ <h4>
+ Requirements
+ </h4>
+ <div>
+ <b>Header:</b> <boost/preprocessor/seq/cat.hpp>
+ </div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ <br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at www.boost.org/LICENSE_1_0.txt)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/ref/seq_elem.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/ref/seq_elem.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,59 @@
+<html>
+<head>
+ <title>BOOST_PP_SEQ_ELEM</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_SEQ_ELEM</b> macro extracts an element from a <i>seq</i>.
+ </div>
+ <h4>
+ Usage
+ </h4>
+ <div class="code">
+ <b>BOOST_PP_SEQ_ELEM</b>(<i>i</i>, <i>seq</i>)
+ </div>
+ <h4>
+ Arguments
+ </h4>
+ <dl>
+ <dt>i</dt>
+ <dd>
+ The zero-based index of the element to be extracted.
+ </dd>
+ <dt>seq</dt>
+ <dd>
+ The <i>seq</i> from which an element is to be extracted.
+ </dd>
+ </dl>
+ <h4>
+ Remarks
+ </h4>
+ <div>
+ The index <i>i</i> must be in the range of <i>0</i> to <b>BOOST_PP_SEQ_SIZE</b>(<i>seq</i>)
+ - <i>1</i>.
+ </div>
+ <h4>
+ Requirements
+ </h4>
+ <div>
+ <b>Header:</b> <boost/preprocessor/seq/elem.hpp>
+ </div>
+ <h4>
+ Sample Code
+ </h4>
+ <div>
+ <pre>#include <boost/preprocessor/seq/elem.hpp><br><br>BOOST_PP_SEQ_ELEM(1, (a)(b)(c)) // expands to b<br><br>#define SEQ \<br> (0)(1)(2)(3)(4)(5)(6)(7)(8)(9) \<br> (10)(11)(12)(13)(14)(15)(16)(17)(18)(19) \<br> (20)(21)(22)(23)(24)(25)(26)(27)(28)(29) \<br> (30)(31)(32)(33)(34)(35)(36)(37)(38)(39) \<br> (40)(41)(42)(43)(44)(45)(46)(47)(48)(49) \<br> (50)(51)(52)(53)(54)(55)(56)(57)(58)(59) \<br> (60)(61)(62)(63)(64)(65)(66)(67)(68)(69) \<br> (70)(71)(72)(73)(74)(75)(76)(77)(78)(79) \<br> (80)(81)(82)(83)(84)(85)(86)(87)(88)(89) \<br> (90)(91)(92)(93)(94)(95)(96)(97)(98)(99) \<br> /**/<br><br>BOOST_PP_SEQ_ELEM(88, SEQ) // expands to 88<br></pre>
+ </div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ <br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at www.boost.org/LICENSE_1_0.txt)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/ref/seq_enum.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/ref/seq_enum.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,66 @@
+<html>
+ <head>
+ <title>BOOST_PP_SEQ_ENUM</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+ </head>
+ <body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_SEQ_ENUM</b> macro enumerates the elements in a <i>seq</i>.
+ </div>
+ <h4>
+ Usage
+ </h4>
+ <div class="code">
+ <b>BOOST_PP_SEQ_ENUM</b>(<i>seq</i>)
+ </div>
+ <h4>
+ Arguments
+ </h4>
+ <dl>
+ <dt>seq</dt>
+ <dd>
+ The <i>seq</i> from whose elements are to be enumerated.
+ </dd>
+ </dl>
+ <h4>
+ Remarks
+ </h4>
+ <div>
+ This macro expands to a comma-separated list of the elements in <i>seq</i>.
+ For example, <b>BOOST_PP_SEQ_ENUM</b>((<i>x</i>)(<i>y</i>)(<i>z</i>)) expands
+ to...
+ <div>
+ <i>x</i>, <i>y</i>, <i>z</i>
+ </div>
+ </div>
+ <h4>
+ Requirements
+ </h4>
+ <div>
+ <b>Header:</b> <boost/preprocessor/seq/enum.hpp>
+ </div>
+ <h4>
+ Sample Code
+ </h4>
+ <div>
+ <pre>
+#include <boost/preprocessor/seq/enum.hpp>
+
+#define SEQ (B)(O)(O)(S)(T)
+
+BOOST_PP_SEQ_ENUM(SEQ) // expands to B, O, O, S, T
+</pre>
+ </div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+ </body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/ref/seq_filter.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/ref/seq_filter.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,93 @@
+<html>
+ <head>
+ <title>BOOST_PP_SEQ_FILTER</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+ </head>
+ <body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_SEQ_FILTER</b> macro filters a <i>seq</i> according to a
+ supplied criterion.
+ </div>
+ <h4>
+ Usage
+ </h4>
+ <div class="code">
+ <b>BOOST_PP_SEQ_FILTER</b>(<i>pred</i>, <i>data</i>, <i>seq</i>)
+ </div>
+ <h4>
+ Arguments
+ </h4>
+ <dl>
+ <dt>pred</dt>
+ <dd>
+ A ternary predicate of the form <i>pred</i>(<i>s</i>, <i>data</i>, <i>elem</i>).
+ This predicate is expanded by <b>BOOST_PP_SEQ_FILTER</b> for each element in <i>seq</i>
+ with the next available <b>BOOST_PP_SEQ_FOLD_LEFT</b> fold step, the auxiliary <i>data</i>,
+ and the current element in <i>seq</i>. This macro must return a integral
+ value in the range of <i>0</i> to <b>BOOST_PP_LIMIT_MAG</b>. If this
+ predicate expands to non-zero for a certain element, that element is included
+ in the resulting <i>seq</i>.
+ </dd>
+ <dt>data</dt>
+ <dd>
+ Auxiliary data passed to <i>pred</i>.
+ </dd>
+ <dt>seq</dt>
+ <dd>
+ The <i>seq</i> to be filtered.
+ </dd>
+ </dl>
+ <h4>
+ Remarks
+ </h4>
+ <div>
+ This macro expands <i>pred</i> for each element in <i>seq</i>. It builds
+ a new <i>seq</i> out of each element for which <i>pred</i> returns non-zero.
+ </div>
+ <div>
+ For maximum efficiency, use <b>BOOST_PP_SEQ_FILTER_S</b>.
+ </div>
+ <h4>
+ See Also
+ </h4>
+ <ul>
+ <li>
+ BOOST_PP_LIMIT_MAG</li>
+ <li>
+ BOOST_PP_SEQ_FILTER_S</li>
+ </ul>
+ <h4>
+ Requirements
+ </h4>
+ <div>
+ <b>Header:</b> <boost/preprocessor/seq/filter.hpp>
+ </div>
+ <h4>
+ Sample Code
+ </h4>
+ <div>
+ <pre>
+#include <boost/preprocessor/comparison/less_equal.hpp>
+#include <boost/preprocessor/seq/filter.hpp>
+
+#define SEQ (1)(3)(2)(5)
+
+#define PRED(s, data, elem) BOOST_PP_LESS_EQUAL(elem, data)
+
+BOOST_PP_SEQ_FILTER(PRED, 3, SEQ)
+ // expands to (1)(3)(2)
+</pre>
+ </div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+ </body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/ref/seq_filter_s.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/ref/seq_filter_s.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,79 @@
+<html>
+ <head>
+ <title>BOOST_PP_SEQ_FILTER_S</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+ </head>
+ <body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_SEQ_FILTER_S</b> macro filters a <i>seq</i> according to a
+ supplied criterion. It reenters <b>BOOST_PP_SEQ_FOLD_LEFT</b> with
+ maximum efficiency.
+ </div>
+ <h4>
+ Usage
+ </h4>
+ <div class="code">
+ <b>BOOST_PP_SEQ_FILTER_S</b>(<i>s</i>, <i>pred</i>, <i>data</i>, <i>seq</i>)
+ </div>
+ <h4>
+ Arguments
+ </h4>
+ <dl>
+ <dt>s</dt>
+ <dd>
+ The next available <b>BOOST_PP_SEQ_FOLD_LEFT</b> fold step.
+ </dd>
+ <dt>pred</dt>
+ <dd>
+ A ternary predicate of the form <i>pred</i>(<i>s</i>, <i>data</i>, <i>elem</i>).
+ This predicate is expanded by <b>BOOST_PP_SEQ_FILTER</b> for each element in <i>seq</i>
+ with the next available <b>BOOST_PP_SEQ_FOLD_LEFT</b> fold step, the auxiliary <i>data</i>,
+ and the current element in <i>seq</i>. This macro must return a integral
+ value in the range of <i>0</i> to <b>BOOST_PP_LIMIT_MAG</b>. If this
+ predicate expands to non-zero for a certain element, that element is included
+ in the resulting <i>seq</i>.
+ </dd>
+ <dt>data</dt>
+ <dd>
+ Auxiliary data passed to <i>pred</i>.
+ </dd>
+ <dt>seq</dt>
+ <dd>
+ The <i>seq</i> to be filtered.
+ </dd>
+ </dl>
+ <h4>
+ Remarks
+ </h4>
+ <div>
+ This macro expands <i>pred</i> for each element in <i>seq</i>. It builds
+ a new <i>seq</i> out of each element for which <i>pred</i> returns non-zero.
+ </div>
+ <h4>
+ See Also
+ </h4>
+ <ul>
+ <li>
+ BOOST_PP_LIMIT_MAG</li>
+ <li>
+ BOOST_PP_SEQ_FILTER</li>
+ </ul>
+ <h4>
+ Requirements
+ </h4>
+ <div>
+ <b>Header:</b> <boost/preprocessor/seq/filter.hpp>
+ </div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+ </body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/ref/seq_first_n.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/ref/seq_first_n.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,67 @@
+<html>
+<head>
+ <title>BOOST_PP_SEQ_FIRST_N</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_SEQ_FIRST_N</b> macro expands to a <i>seq</i> of the first <i>n</i>
+ elements of a <i>seq</i>.
+ </div>
+ <h4>
+ Usage
+ </h4>
+ <div class="code">
+ <b>BOOST_PP_SEQ_FIRST_N</b>(<i>n</i>, <i>seq</i>)
+ </div>
+ <h4>
+ Arguments
+ </h4>
+ <dl>
+ <dt>n</dt>
+ <dd>
+ The number of elements to extract.
+ </dd>
+ <dt>seq</dt>
+ <dd>
+ The <i>seq</i> from which the elements are extracted.
+ </dd>
+ </dl>
+ <h4>
+ Remarks
+ </h4>
+ <div>
+ This macro extracts <i>n</i> elements from the beginning of <i>seq</i> and
+ returns them as a new <i>seq</i>
+ </div>
+ <h4>
+ See Also
+ </h4>
+ <ul>
+ <li>
+ BOOST_PP_SEQ_REST_N</li>
+ </ul>
+ <h4>
+ Requirements
+ </h4>
+ <div>
+ <b>Header:</b> <boost/preprocessor/seq/first_n.hpp>
+ </div>
+ <h4>
+ Sample Code
+ </h4>
+ <div>
+ <pre>#include <boost/preprocessor/seq/first_n.hpp><br><br>#define SEQ (a)(b)(c)(d)(e)<br><br>BOOST_PP_SEQ_FIRST_N(2, SEQ) // expands to (a)(b)<br></pre>
+ </div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ <br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at www.boost.org/LICENSE_1_0.txt)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/ref/seq_fold_left.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/ref/seq_fold_left.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,90 @@
+<html>
+ <head>
+ <title>BOOST_PP_SEQ_FOLD_LEFT</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+ </head>
+ <body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_SEQ_FOLD_LEFT</b> macro folds (or accumulates) the elements of
+ a <i>seq</i> left-to-right.
+ </div>
+ <h4>
+ Usage
+ </h4>
+ <div class="code">
+ <b>BOOST_PP_SEQ_FOLD_LEFT</b>(<i>op</i>, <i>state</i>, <i>seq</i>)
+ </div>
+ <h4>
+ Arguments
+ </h4>
+ <dl>
+ <dt>op</dt>
+ <dd>
+ A ternary operation of the form <i>op</i>(<i>s</i>, <i>state</i>, <i>elem</i>).
+ This macro is called for each element in <i>seq</i>--each time returning a new <i>state</i>.
+ This operation is expanded by <b>BOOST_PP_SEQ_FOLD_LEFT</b> with the next
+ available fold step, the current <i>state</i>, and the current element.
+ </dd>
+ <dt>state</dt>
+ <dd>
+ The initial state of the fold.
+ </dd>
+ <dt>seq</dt>
+ <dd>
+ The <i>seq</i> to be folded.
+ </dd>
+ </dl>
+ <h4>
+ Remarks
+ </h4>
+ <div>
+ For the <i>seq</i>, (<i>0</i>)(<i>1</i>)(<i>2</i>), this macro expands to:
+ <div>
+ <i>op</i>(<i>s</i>, <i>op</i>(<i>s</i>, <i>op</i>(<i>s</i>, <i>state</i>, <i>0</i>),
+ <i>1</i>), <i>2</i>)
+ </div>
+ </div>
+ <div>
+ For maximum efficiency, <b>BOOST_PP_SEQ_FOLD_LEFT</b> can be reentered with <b>BOOST_PP_SEQ_FOLD_LEFT_<i>s</i></b>.
+ </div>
+ <h4>
+ See Also
+ </h4>
+ <ul>
+ <li>
+ BOOST_PP_SEQ_FOLD_LEFT_s</li>
+ </ul>
+ <h4>
+ Requirements
+ </h4>
+ <div>
+ <b>Header:</b> <boost/preprocessor/seq/fold_left.hpp>
+ </div>
+ <h4>
+ Sample Code
+ </h4>
+ <div>
+ <pre>
+#include <boost/preprocessor/cat.hpp>
+#include <boost/preprocessor/seq/fold_left.hpp>
+
+#define SEQ (b)(o)(o)(s)(t)
+
+#define OP(s, state, x) BOOST_PP_CAT(state, x)
+
+BOOST_PP_SEQ_FOLD_LEFT(OP, BOOST_PP_SEQ_HEAD(SEQ), BOOST_PP_SEQ_TAIL(SEQ)) // expands to boost
+</pre>
+ </div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+ </body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/ref/seq_fold_left_s.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/ref/seq_fold_left_s.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,96 @@
+<html>
+ <head>
+ <title>BOOST_PP_SEQ_FOLD_LEFT_s</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+ </head>
+ <body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_SEQ_FOLD_LEFT_<i>s</i></b> macro folds (or accumulates) the
+ elements of a <i>seq</i> left-to-right. It reenters <b>BOOST_PP_SEQ_FOLD_LEFT</b>
+ with maximum efficiency.
+ </div>
+ <h4>
+ Usage
+ </h4>
+ <div class="code">
+ <b>BOOST_PP_SEQ_FOLD_LEFT_</b> ## <i>s</i>(<i>op</i>, <i>state</i>, <i>seq</i>)
+ </div>
+ <h4>
+ Arguments
+ </h4>
+ <dl>
+ <dt>s</dt>
+ <dd>
+ The next available <b>BOOST_PP_SEQ_FOLD_LEFT</b> fold step.
+ </dd>
+ <dt>op</dt>
+ <dd>
+ A ternary operation of the form <i>op</i>(<i>s</i>, <i>state</i>, <i>elem</i>).
+ This macro is called for each element in <i>seq</i>--each time returning a new <i>state</i>.
+ This operation is expanded by <b>BOOST_PP_SEQ_FOLD_LEFT</b> with the next
+ available fold step, the current <i>state</i>, and the current element.
+ </dd>
+ <dt>state</dt>
+ <dd>
+ The initial state of the fold.
+ </dd>
+ <dt>seq</dt>
+ <dd>
+ The <i>seq</i> to be folded.
+ </dd>
+ </dl>
+ <h4>
+ Remarks
+ </h4>
+ <div>
+ For the <i>seq</i>, (<i>0</i>)(<i>1</i>)(<i>2</i>), this macro expands to:
+ <div>
+ <i>op</i>(<i>s</i>, <i>op</i>(<i>s</i>, <i>op</i>(<i>s</i>, <i>state</i>, <i>0</i>),
+ <i>1</i>), <i>2</i>)
+ </div>
+ </div>
+ <h4>
+ See Also
+ </h4>
+ <ul>
+ <li>
+ BOOST_PP_SEQ_FOLD_LEFT</li>
+ </ul>
+ <h4>
+ Requirements
+ </h4>
+ <div>
+ <b>Header:</b> <boost/preprocessor/seq/fold_left.hpp>
+ </div>
+ <h4>
+ Sample Code
+ </h4>
+ <div>
+ <pre>
+#include <boost/preprocessor/cat.hpp>
+#include <boost/preprocessor/seq/fold_left.hpp>
+#include <boost/preprocessor/seq/seq.hpp>
+
+#define S1 (a)(b)(c)
+#define S2 (S1)(S1)(S1)
+
+#define OP(s, state, x) state (BOOST_PP_SEQ_FOLD_LEFT_ ## s(OP_2, _, x))
+#define OP_2(s, state, x) BOOST_PP_CAT(state, x)
+
+BOOST_PP_SEQ_FOLD_LEFT(OP, BOOST_PP_SEQ_NIL, S2)
+// expands to (_abc)(_abc)(_abc)
+</pre>
+ </div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+ </body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/ref/seq_fold_right.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/ref/seq_fold_right.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,92 @@
+<html>
+ <head>
+ <title>BOOST_PP_SEQ_FOLD_RIGHT</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+ </head>
+ <body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_SEQ_FOLD_RIGHT</b> macro folds (or accumulates) the elements of
+ a <i>seq</i> right-to-left.
+ </div>
+ <h4>
+ Usage
+ </h4>
+ <div class="code">
+ <b>BOOST_PP_SEQ_FOLD_RIGHT</b>(<i>op</i>, <i>state</i>, <i>seq</i>)
+ </div>
+ <h4>
+ Arguments
+ </h4>
+ <dl>
+ <dt>op</dt>
+ <dd>
+ A ternary operation of the form <i>op</i>(<i>s</i>, <i>state</i>, <i>elem</i>).
+ This macro is called for each element in <i>seq</i>--each time returning a new <i>state</i>.
+ This operation is expanded by <b>BOOST_PP_SEQ_FOLD_RIGHT</b> with the next
+ available fold step, the current <i>state</i>, and the current element.
+ </dd>
+ <dt>state</dt>
+ <dd>
+ The initial state of the fold.
+ </dd>
+ <dt>seq</dt>
+ <dd>
+ The <i>seq</i> to be folded.
+ </dd>
+ </dl>
+ <h4>
+ Remarks
+ </h4>
+ <div>
+ For the <i>seq</i>, (<i>0</i>)(<i>1</i>)(<i>2</i>), this macro expands to:
+ <div>
+ <i>op</i>(<i>s</i>, <i>op</i>(<i>s</i>, <i>op</i>(<i>s</i>, <i>state</i>, <i>2</i>),
+ <i>1</i>), <i>0</i>)
+ </div>
+ </div>
+ <div>
+ For maximum efficiency, <b>BOOST_PP_SEQ_FOLD_RIGHT</b> can be reentered with <b>BOOST_PP_SEQ_FOLD_RIGHT_<i>s</i></b>.
+ </div>
+ <h4>
+ See Also
+ </h4>
+ <ul>
+ <li>
+ BOOST_PP_SEQ_FOLD_RIGHT_s</li>
+ </ul>
+ <h4>
+ Requirements
+ </h4>
+ <div>
+ <b>Header:</b> <boost/preprocessor/seq/fold_right.hpp>
+ </div>
+ <h4>
+ Sample Code
+ </h4>
+ <div>
+ <pre>
+#include <boost/preprocessor/cat.hpp>
+#include <boost/preprocessor/seq/elem.hpp>
+#include <boost/preprocessor/seq/fold_right.hpp>
+#include <boost/preprocessor/seq/pop_back.hpp>
+
+#define SEQ (t)(s)(o)(o)(b)
+
+#define OP(s, state, x) BOOST_PP_CAT(state, x)
+
+BOOST_PP_SEQ_FOLD_RIGHT(OP, BOOST_PP_SEQ_ELEM(4, SEQ), BOOST_PP_SEQ_POP_BACK(SEQ)) // expands to boost
+</pre>
+ </div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+ </body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/ref/seq_fold_right_s.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/ref/seq_fold_right_s.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,97 @@
+<html>
+ <head>
+ <title>BOOST_PP_SEQ_FOLD_RIGHT_s</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+ </head>
+ <body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_SEQ_FOLD_RIGHT_<i>s</i></b> macro folds (or accumulates) the
+ elements of a <i>seq</i> right-to-left. It reenters <b>BOOST_PP_SEQ_FOLD_RIGHT</b>
+ with maximum efficiency.
+ </div>
+ <h4>
+ Usage
+ </h4>
+ <div class="code">
+ <b>BOOST_PP_SEQ_FOLD_RIGHT_</b> ## <i>s</i>(<i>op</i>, <i>state</i>, <i>seq</i>)
+ </div>
+ <h4>
+ Arguments
+ </h4>
+ <dl>
+ <dt>s</dt>
+ <dd>
+ The next available <b>BOOST_PP_SEQ_FOLD_LEFT</b> fold step.
+ </dd>
+ <dt>op</dt>
+ <dd>
+ A ternary operation of the form <i>op</i>(<i>s</i>, <i>state</i>, <i>elem</i>).
+ This macro is called for each element in <i>seq</i>--each time returning a new <i>state</i>.
+ This operation is expanded by <b>BOOST_PP_SEQ_FOLD_RIGHT</b> with the next
+ available fold step, the current <i>state</i>, and the current element.
+ </dd>
+ <dt>state</dt>
+ <dd>
+ The initial state of the fold.
+ </dd>
+ <dt>seq</dt>
+ <dd>
+ The <i>seq</i> to be folded.
+ </dd>
+ </dl>
+ <h4>
+ Remarks
+ </h4>
+ <div>
+ For the <i>seq</i>, (<i>0</i>)(<i>1</i>)(<i>2</i>), this macro expands to:
+ <div>
+ <i>op</i>(<i>s</i>, <i>op</i>(<i>s</i>, <i>op</i>(<i>s</i>, <i>state</i>, <i>2</i>),
+ <i>1</i>), <i>0</i>)
+ </div>
+ </div>
+ <h4>
+ See Also
+ </h4>
+ <ul>
+ <li>
+ BOOST_PP_SEQ_FOLD_RIGHT</li>
+ </ul>
+ <h4>
+ Requirements
+ </h4>
+ <div>
+ <b>Header:</b> <boost/preprocessor/seq/fold_right.hpp>
+ </div>
+ <h4>
+ Sample Code
+ </h4>
+ <div>
+ <pre>
+#include <boost/preprocessor/cat.hpp>
+#include <boost/preprocessor/seq/fold_left.hpp>
+#include <boost/preprocessor/seq/fold_right.hpp>
+#include <boost/preprocessor/seq/seq.hpp>
+
+#define S1 (a)(b)(c)
+#define S2 (S1)(S1)(S1)
+
+#define OP(s, state, x) state (BOOST_PP_SEQ_FOLD_RIGHT_ ## s(OP_2, _, x))
+#define OP_2(s, state, x) BOOST_PP_CAT(state, x)
+
+BOOST_PP_SEQ_FOLD_LEFT(OP, BOOST_PP_SEQ_NIL, S2)
+// expands to (_cba)(_cba)(_cba)
+</pre>
+ </div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+ </body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/ref/seq_for_each.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/ref/seq_for_each.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,90 @@
+<html>
+ <head>
+ <title>BOOST_PP_SEQ_FOR_EACH</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+ </head>
+ <body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_SEQ_FOR_EACH</b> macro repeats a macro for each element in a <i>seq</i>.
+ </div>
+ <h4>
+ Usage
+ </h4>
+ <div class="code">
+ <b>BOOST_PP_SEQ_FOR_EACH</b>(<i>macro</i>, <i>data</i>, <i>seq</i>)
+ </div>
+ <h4>
+ Arguments
+ </h4>
+ <dl>
+ <dt>macro</dt>
+ <dd>
+ A ternary macro of the form <i>macro</i>(<i>r</i>, <i>data</i>, <i>elem</i>).
+ This macro is expanded by <b>BOOST_PP_SEQ_FOR_EACH</b> with each element in <i>seq</i>.
+ It is expanded with the next available <b>BOOST_PP_FOR</b> repetition, the
+ auxiliary <i>data</i>, and the current element.
+ </dd>
+ <dt>data</dt>
+ <dd>
+ Auxiliary data passed to <i>macro</i>.
+ </dd>
+ <dt>seq</dt>
+ <dd>
+ The <i>seq</i> for which <i>macro</i> will be invoked on each element.
+ </dd>
+ </dl>
+ <h4>
+ Remarks
+ </h4>
+ <div>
+ This macro is a repetition construct. If <i>seq</i> is (<i>a</i>)(<i>b</i>)(<i>c</i>),
+ it expands to the sequence:
+ <div>
+ <i>macro</i>(<i>r</i>, <i>data</i>, <i>a</i>) <i>macro</i>(<i>r</i>, <i>data</i>,
+ <i>b</i>) <i>macro</i>(<i>r</i>, <i>data</i>, <i>c</i>)
+ </div>
+ </div>
+ <div>
+ For maximum efficiency, use <b>BOOST_PP_SEQ_FOR_EACH_R</b>.
+ </div>
+ <h4>
+ See Also
+ </h4>
+ <ul>
+ <li>
+ BOOST_PP_SEQ_FOR_EACH_R</li>
+ </ul>
+ <h4>
+ Requirements
+ </h4>
+ <div>
+ <b>Header:</b> <boost/preprocessor/seq/for_each.hpp>
+ </div>
+ <h4>
+ Sample Code
+ </h4>
+ <div>
+ <pre>
+#include <boost/preprocessor/cat.hpp>
+#include <boost/preprocessor/seq/for_each.hpp>
+
+#define SEQ (w)(x)(y)(z)
+
+#define MACRO(r, data, elem) BOOST_PP_CAT(elem, data)
+
+BOOST_PP_SEQ_FOR_EACH(MACRO, _, SEQ) // expands to w_ x_ y_ z_
+</pre>
+ </div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+ </body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/ref/seq_for_each_i.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/ref/seq_for_each_i.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,91 @@
+<html>
+ <head>
+ <title>BOOST_PP_SEQ_FOR_EACH_I</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+ </head>
+ <body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_SEQ_FOR_EACH_I</b> macro repeats a macro for each element in a <i>seq</i>.
+ </div>
+ <h4>
+ Usage
+ </h4>
+ <div class="code">
+ <b>BOOST_PP_SEQ_FOR_EACH_I</b>(<i>macro</i>, <i>data</i>, <i>seq</i>)
+ </div>
+ <h4>
+ Arguments
+ </h4>
+ <dl>
+ <dt>macro</dt>
+ <dd>
+ A macro of the form <i>macro</i>(<i>r</i>, <i>data</i>, <i>i</i>, <i>elem</i>).
+ This macro is expanded by <b>BOOST_PP_SEQ_FOR_EACH_I</b> with each element in <i>seq</i>.
+ It is expanded with the next available <b>BOOST_PP_FOR</b> repetition, the
+ auxiliary <i>data</i>, the index of the current element, and the current
+ element.
+ </dd>
+ <dt>data</dt>
+ <dd>
+ Auxiliary data passed to <i>macro</i>.
+ </dd>
+ <dt>seq</dt>
+ <dd>
+ The <i>seq</i> for which <i>macro</i> will be invoked on each element.
+ </dd>
+ </dl>
+ <h4>
+ Remarks
+ </h4>
+ <div>
+ This macro is a repetition construct. If <i>seq</i> is (<i>a</i>)(<i>b</i>)(<i>c</i>),
+ it expands to the sequence:
+ <div>
+ <i>macro</i>(<i>r</i>, <i>data</i>, <i>0</i>, <i>a</i>) <i>macro</i>(<i>r</i>, <i>data</i>,
+ <i>1</i>, <i>b</i>) <i>macro</i>(<i>r</i>, <i>data</i>, <i>2</i>, <i>c</i>)
+ </div>
+ </div>
+ <div>
+ For maximum efficiency, use <b>BOOST_PP_SEQ_FOR_EACH_I_R</a></li>
+ </div>
+ <h4>
+ See Also
+ </h4>
+ <ul>
+ <li>
+ BOOST_PP_SEQ_FOR_EACH_I_R</li>
+ </ul>
+ <h4>
+ Requirements
+ </h4>
+ <div>
+ <b>Header:</b> <boost/preprocessor/seq/for_each_i.hpp>
+ </div>
+ <h4>
+ Sample Code
+ </h4>
+ <div>
+ <pre>
+#include <boost/preprocessor/cat.hpp>
+#include <boost/preprocessor/seq/for_each_i.hpp>
+
+#define SEQ (a)(b)(c)(d)
+
+#define MACRO(r, data, i, elem) BOOST_PP_CAT(elem, BOOST_PP_CAT(data, i))
+
+BOOST_PP_SEQ_FOR_EACH_I(MACRO, _, SEQ) // expands to a_0 b_1 c_2 d_3
+</pre>
+ </div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+ </body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/ref/seq_for_each_i_r.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/ref/seq_for_each_i_r.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,78 @@
+<html>
+ <head>
+ <title>BOOST_PP_SEQ_FOR_EACH_I_R</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+ </head>
+ <body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_SEQ_FOR_EACH_I_R</b> macro repeats a macro for each element in
+ a <i>seq</i>. It reenters <b>BOOST_PP_FOR</b> with maximum efficiency.
+ </div>
+ <h4>
+ Usage
+ </h4>
+ <div class="code">
+ <b>BOOST_PP_SEQ_FOR_EACH_I_R</b>(<i>r</i>, <i>macro</i>, <i>data</i>, <i>seq</i>)
+ </div>
+ <h4>
+ Arguments
+ </h4>
+ <dl>
+ <dt>r</dt>
+ <dd>
+ The next available <b>BOOST_PP_FOR</b> repetition.
+ </dd>
+ <dt>macro</dt>
+ <dd>
+ A macro of the form <i>macro</i>(<i>r</i>, <i>data</i>, <i>i</i>, <i>elem</i>).
+ This macro is expanded by <b>BOOST_PP_SEQ_FOR_EACH_I</b> with each element in <i>seq</i>.
+ It is expanded with the next available <b>BOOST_PP_FOR</b> repetition, the
+ auxiliary <i>data</i>, the index of the current element, and the current
+ element.
+ </dd>
+ <dt>data</dt>
+ <dd>
+ Auxiliary data passed to <i>macro</i>.
+ </dd>
+ <dt>seq</dt>
+ <dd>
+ The <i>seq</i> for which <i>macro</i> will be invoked on each element.
+ </dd>
+ </dl>
+ <h4>
+ Remarks
+ </h4>
+ <div>
+ This macro is a repetition construct. If <i>seq</i> is (<i>a</i>)(<i>b</i>)(<i>c</i>),
+ it expands to the sequence:
+ <div>
+ <i>macro</i>(<i>r</i>, <i>data</i>, <i>0</i>, <i>a</i>) <i>macro</i>(<i>r</i>, <i>data</i>,
+ <i>1</i>, <i>b</i>) <i>macro</i>(<i>r</i>, <i>data</i>, <i>2</i>, <i>c</i>)
+ </div>
+ </div>
+ <h4>
+ See Also
+ </h4>
+ <ul>
+ <li>
+ BOOST_PP_SEQ_FOR_EACH_I</li>
+ </ul>
+ <h4>
+ Requirements
+ </h4>
+ <div>
+ <b>Header:</b> <boost/preprocessor/seq/for_each_i.hpp>
+ </div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+ </body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/ref/seq_for_each_product.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/ref/seq_for_each_product.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,100 @@
+<html>
+ <head>
+ <title>BOOST_PP_SEQ_FOR_EACH_PRODUCT</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+ </head>
+ <body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_SEQ_FOR_EACH_PRODUCT</b> macro repeats a macro for each
+ cartesian product of several <i>seqs</i>.
+ </div>
+ <h4>
+ Usage
+ </h4>
+ <div class="code">
+ <b>BOOST_PP_SEQ_FOR_EACH_PRODUCT</b>(<i>macro</i>, <i>seqs</i>)
+ </div>
+ <h4>
+ Arguments
+ </h4>
+ <dl>
+ <dt>macro</dt>
+ <dd>
+ The binary macro of the form <i>macro</i>(<i>r</i>, <i>product</i>). This
+ macro is expanded by <b>BOOST_PP_FOR_EACH_PRODUCT</b> with each cartesian
+ product in <i>seqs</i>. It is expanded with the next available <b>BOOST_PP_FOR</b>
+ repetition and a <i>seq</i> containing a cartesian product.
+ </dd>
+ <dt>seqs</dt>
+ <dd>
+ A <i>seq</i> of <i>seqs</i> from which cartesian products are obtained.
+ </dd>
+ </dl>
+ <h4>
+ Remarks
+ </h4>
+ <div>
+ This macro is a repetition construct. If two <i>seqs</i> are (<i>a</i>)(<i>b</i>)(<i>c</i>)
+ and (<i>x</i>)(<i>y</i>)(<i>z</i>), this macro will produce the following
+ sequence:
+ <div>
+ <i>macro</i>(<i>r</i>, (<i>a</i>)(<i>x</i>)) <i>macro</i>(<i>r</i>, (<i>a</i>)(<i>y</i>))
+ <i>macro</i>(<i>r</i>, (<i>a</i>)(<i>z</i>)) \
+ <br>
+ <i>macro</i>(<i>r</i>, (<i>b</i>)(<i>x</i>)) <i>macro</i>(<i>r</i>, (<i>b</i>)(<i>y</i>))
+ <i>macro</i>(<i>r</i>, (<i>b</i>)(<i>z</i>)) \
+ <br>
+ <i>macro</i>(<i>r</i>, (<i>c</i>)(<i>x</i>)) <i>macro</i>(<i>r</i>, (<i>c</i>)(<i>y</i>))
+ <i>macro</i>(<i>r</i>, (<i>c</i>)(<i>z</i>))
+ </div>
+ </div>
+ <div>
+ For maximum efficiency, use <b>BOOST_PP_SEQ_FOR_EACH_PRODUCT_R</b>.
+ </div>
+ <h4>
+ See Also
+ </h4>
+ <ul>
+ <li>
+ BOOST_PP_SEQ_FOR_EACH_PRODUCT_R</li>
+ </ul>
+ <h4>
+ Requirements
+ </h4>
+ <div>
+ <b>Header:</b> <boost/preprocessor/seq/for_each_product.hpp>
+ </div>
+ <h4>
+ Sample Code
+ </h4>
+ <div>
+ <pre>
+#include <boost/preprocessor/seq/for_each_product.hpp>
+#include <boost/preprocessor/seq/to_tuple.hpp>
+
+#define S1 (a)(b)(c)
+#define S2 (x)(y)(z)
+#define S3 (p)(q)
+
+#define MACRO(r, product) BOOST_PP_SEQ_TO_TUPLE(product)
+
+BOOST_PP_SEQ_FOR_EACH_PRODUCT(MACRO, (S1)(S2)(S3))
+ // expands to:
+ // (a, x, p) (a, x, q) (a, y, p) (a, y, q) (a, z, p) (a, z, q)
+ // (b, x, p) (b, x, q) (b, y, p) (b, y, q) (b, z, p) (b, z, q)
+ // (c, x, p) (c, x, q) (c, y, p) (c, y, q) (c, z, p) (c, z, q)
+</pre>
+ </div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+ </body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/ref/seq_for_each_product_r.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/ref/seq_for_each_product_r.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,81 @@
+<html>
+ <head>
+ <title>BOOST_PP_SEQ_FOR_EACH_PRODUCT_R</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+ </head>
+ <body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_SEQ_FOR_EACH_PRODUCT_R</b> macro repeats a macro for each
+ cartesian product of several <i>seqs</i>. It reenters <b>BOOST_PP_FOR</b>
+ with maximum efficiency.
+ </div>
+ <h4>
+ Usage
+ </h4>
+ <div class="code">
+ <b>BOOST_PP_SEQ_FOR_EACH_PRODUCT_R</b>(<i>r</i>, <i>macro</i>, <i>seqs</i>)
+ </div>
+ <h4>
+ Arguments
+ </h4>
+ <dl>
+ <dt>r</dt>
+ <dd>
+ The next available <b>BOOST_PP_FOR</b> repetition.
+ </dd>
+ <dt>macro</dt>
+ <dd>
+ The binary macro of the form <i>macro</i>(<i>r</i>, <i>product</i>). This
+ macro is expanded by <b>BOOST_PP_FOR_EACH_PRODUCT</b> with each cartesian
+ product in <i>seqs</i>. It is expanded with the next available <b>BOOST_PP_FOR</b>
+ repetition and a <i>seq</i> containing a cartesian product.
+ </dd>
+ <dt>seqs</dt>
+ <dd>
+ A <i>seq</i> of <i>seqs</i> from which cartesian products are obtained.
+ </dd>
+ </dl>
+ <h4>
+ Remarks
+ </h4>
+ <div>
+ This macro is a repetition construct. If two <i>seqs</i> are (<i>a</i>)(<i>b</i>)(<i>c</i>)
+ and (<i>x</i>)(<i>y</i>)(<i>z</i>), this macro will produce the following
+ sequence:
+ <div>
+ <i>macro</i>(<i>r</i>, (<i>a</i>)(<i>x</i>)) <i>macro</i>(<i>r</i>, (<i>a</i>)(<i>y</i>))
+ <i>macro</i>(<i>r</i>, (<i>a</i>)(<i>z</i>)) \
+ <br>
+ <i>macro</i>(<i>r</i>, (<i>b</i>)(<i>x</i>)) <i>macro</i>(<i>r</i>, (<i>b</i>)(<i>y</i>))
+ <i>macro</i>(<i>r</i>, (<i>b</i>)(<i>z</i>)) \
+ <br>
+ <i>macro</i>(<i>r</i>, (<i>c</i>)(<i>x</i>)) <i>macro</i>(<i>r</i>, (<i>c</i>)(<i>y</i>))
+ <i>macro</i>(<i>r</i>, (<i>c</i>)(<i>z</i>))
+ </div>
+ </div>
+ <h4>
+ See Also
+ </h4>
+ <ul>
+ <li>
+ BOOST_PP_SEQ_FOR_EACH_PRODUCT</li>
+ </ul>
+ <h4>
+ Requirements
+ </h4>
+ <div>
+ <b>Header:</b> <boost/preprocessor/seq/for_each_product.hpp>
+ </div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+ </body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/ref/seq_for_each_r.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/ref/seq_for_each_r.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,77 @@
+<html>
+ <head>
+ <title>BOOST_PP_SEQ_FOR_EACH_R</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+ </head>
+ <body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_SEQ_FOR_EACH_R</b> macro repeats a macro for each element in a <i>seq</i>.
+ It reenters <b>BOOST_PP_FOR</b> with maximum efficiency.
+ </div>
+ <h4>
+ Usage
+ </h4>
+ <div class="code">
+ <b>BOOST_PP_SEQ_FOR_EACH_R</b>(<i>r</i>, <i>macro</i>, <i>data</i>, <i>seq</i>)
+ </div>
+ <h4>
+ Arguments
+ </h4>
+ <dl>
+ <dt>r</dt>
+ <dd>
+ The next available <b>BOOST_PP_FOR</b> repetition.
+ </dd>
+ <dt>macro</dt>
+ <dd>
+ A ternary macro of the form <i>macro</i>(<i>r</i>, <i>data</i>, <i>elem</i>).
+ This macro is expanded by <b>BOOST_PP_SEQ_FOR_EACH</b> with each element in <i>seq</i>.
+ It is expanded with the next available <b>BOOST_PP_FOR</b> repetition, the
+ auxiliary <i>data</i>, and the current element.
+ </dd>
+ <dt>data</dt>
+ <dd>
+ Auxiliary data passed to <i>macro</i>.
+ </dd>
+ <dt>seq</dt>
+ <dd>
+ The <i>seq</i> for which <i>macro</i> will be invoked on each element.
+ </dd>
+ </dl>
+ <h4>
+ Remarks
+ </h4>
+ <div>
+ This macro is a repetition construct. If <i>seq</i> is (<i>a</i>)(<i>b</i>)(<i>c</i>),
+ it expands to the sequence:
+ <div>
+ <i>macro</i>(<i>r</i>, <i>data</i>, <i>a</i>) <i>macro</i>(<i>r</i>, <i>data</i>,
+ <i>b</i>) <i>macro</i>(<i>r</i>, <i>data</i>, <i>c</i>)
+ </div>
+ </div>
+ <h4>
+ See Also
+ </h4>
+ <ul>
+ <li>
+ BOOST_PP_SEQ_FOR_EACH</li>
+ </ul>
+ <h4>
+ Requirements
+ </h4>
+ <div>
+ <b>Header:</b> <boost/preprocessor/seq/for_each.hpp>
+ </div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+ </body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/ref/seq_head.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/ref/seq_head.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,63 @@
+<html>
+ <head>
+ <title>BOOST_PP_SEQ_HEAD</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+ </head>
+ <body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_SEQ_HEAD</b> macro expands to the first element in a <i>seq</i>.
+ </div>
+ <h4>
+ Usage
+ </h4>
+ <div class="code">
+ <b>BOOST_PP_SEQ_HEAD</b>(<i>seq</i>)
+ </div>
+ <h4>
+ Arguments
+ </h4>
+ <dl>
+ <dt>seq</dt>
+ <dd>
+ The <i>seq</i> from which the first element is extracted.
+ </dd>
+ </dl>
+ <h4>
+ See Also
+ </h4>
+ <ul>
+ <li>
+ BOOST_PP_SEQ_TAIL</li>
+ </ul>
+ <h4>
+ Requirements
+ </h4>
+ <div>
+ <b>Header:</b> <boost/preprocessor/seq/seq.hpp>
+ </div>
+ <h4>
+ Sample Code
+ </h4>
+ <div>
+ <pre>
+#include <boost/preprocessor/seq/seq.hpp>
+
+#define SEQ (a)(b)(c)
+
+BOOST_PP_SEQ_HEAD(SEQ) // expands to a
+BOOST_PP_SEQ_TAIL(SEQ) // expands to (b)(c)
+</pre>
+ </div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+ </body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/ref/seq_insert.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/ref/seq_insert.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,70 @@
+<html>
+ <head>
+ <title>BOOST_PP_SEQ_INSERT</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+ </head>
+ <body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_SEQ_INSERT</b> macro inserts an element into an <i>seq</i>.
+ </div>
+ <h4>
+ Usage
+ </h4>
+ <div class="code">
+ <b>BOOST_PP_SEQ_INSERT</b>(<i>seq</i>, <i>i</i>, <i>elem</i>)
+ </div>
+ <h4>
+ Arguments
+ </h4>
+ <dl>
+ <dt>seq</dt>
+ <dd>
+ The <i>seq</i> into which an element is to be inserted.
+ </dd>
+ <dt>i</dt>
+ <dd>
+ The zero-based position in <i>seq</i> where an element is to be inserted.
+ Valid values range from <i>0</i> to <b>BOOST_PP_SEQ_SIZE</b>(<i>seq</i>) - <i>1</i>.
+ </dd>
+ <dt>elem</dt>
+ <dd>
+ The element to insert.
+ </dd>
+ </dl>
+ <h4>
+ Remarks
+ </h4>
+ <div>
+ This macro inserts <i>elem</i> before the element at index <i>i</i>.
+ </div>
+ <h4>
+ Requirements
+ </h4>
+ <div>
+ <b>Header:</b> <boost/preprocessor/seq/insert.hpp>
+ </div>
+ <h4>
+ Sample Code
+ </h4>
+ <div>
+ <pre>
+#include <boost/preprocessor/seq/insert.hpp>
+
+#define SEQ (a)(b)(d)
+
+BOOST_PP_SEQ_INSERT(SEQ, 2, c) // expands to (a)(b)(c)(d)
+</pre>
+ </div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+ </body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/ref/seq_nil.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/ref/seq_nil.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,81 @@
+<html>
+<head>
+ <title>BOOST_PP_SEQ_NIL</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_SEQ_NIL</b> macro is a placeholder macro for an empty <i>seq</i>.
+ It is only valid if it's elements are appended to the end of this empty
+ "seq."
+ </div>
+ <h4>
+ Usage
+ </h4>
+ <div class="code">
+ <b>BOOST_PP_SEQ_NIL</b>
+ </div>
+ <h4>
+ Remarks
+ </h4>
+ <div>
+ This macro is a utility macro intended as a empty starting point for appending
+ to the tail. It is <i>not</i> a nil <i>seq</i>. When an element is
+ appended to this macro, it expands on the element and to the element--thereby
+ removing itself. For example, both <b>BOOST_PP_SEQ_NIL</b>(<i>x</i>) and <b>BOOST_PP_SEQ_PUSH_BACK</b>(<b>BOOST_PP_SEQ_NIL</b>,
+ <i>x</i>) expand to <i>x</i>.
+ </div>
+ <div>
+ If any <b>BOOST_PP_SEQ_</b>* macro (other than <b>BOOST_PP_SEQ_PUSH_BACK</b>)
+ is invoked with an argument that contains <b>BOOST_PP_SEQ_NIL</b>, the behavior
+ is undefined and in most cases will result in obscure errors.
+ </div>
+ <div>
+ The closest thing available to <b>BOOST_PP_SEQ_NIL</b> for appending to the
+ head is <b>BOOST_PP_EMPTY</b>. After all the elements have been
+ prepended, empty parenthesis can be invoked on the tail to remove the <b>BOOST_PP_EMPTY</b>.
+ As with <b>BOOST_PP_SEQ_NIL</b>, passing an argument that contains <b>BOOST_PP_EMPTY</b>
+ to any <b>BOOST_PP_SEQ_</b>* macro (other than <b>BOOST_PP_SEQ_PUSH_FRONT</b>)
+ is undefined.
+ </div>
+ <div>
+ (It is also possible to start with an extra element and pop it off when you
+ have finished appending to it.)
+ </div>
+ <div>
+ In C99, neither of these macros are necessary since it is legal to pass empty
+ arguments.
+ </div>
+ <h4>
+ See Also
+ </h4>
+ <ul>
+ <li>
+ BOOST_PP_EMPTY</li>
+ </ul>
+ <h4>
+ Requirements
+ </h4>
+ <div>
+ <b>Header:</b> <boost/preprocessor/seq/seq.hpp>
+ </div>
+ <h4>
+ Sample Code
+ </h4>
+ <div>
+ <pre>#include <boost/preprocessor/facilities/empty.hpp><br>#include <boost/preprocessor/seq/push_back.hpp><br>#include <boost/preprocessor/seq/push_front.hpp><br>#include <boost/preprocessor/seq/seq.hpp><br><br>#define SEQ_L BOOST_PP_SEQ_NIL
+#define SEQ_R BOOST_PP_EMPTY
+BOOST_PP_SEQ_PUSH_BACK(<br> BOOST_PP_SEQ_PUSH_BACK(SEQ_L, a), b<br>)<br><br>// expands to (a)(b)<br><br>BOOST_PP_SEQ_PUSH_FRONT(<br> BOOST_PP_SEQ_PUSH_FRONT(SEQ_R, a), b<br>)()<br><br>// expands to (b)(a)<br></pre>
+ </div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ <br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at www.boost.org/LICENSE_1_0.txt)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/ref/seq_pop_back.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/ref/seq_pop_back.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,68 @@
+<html>
+ <head>
+ <title>BOOST_PP_SEQ_POP_BACK</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+ </head>
+ <body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_SEQ_POP_BACK</b> macro pops an element from the end of a <i>seq</i>.
+ </div>
+ <h4>
+ Usage
+ </h4>
+ <div class="code">
+ <b>BOOST_PP_SEQ_POP_BACK</b>(<i>seq</i>)
+ </div>
+ <h4>
+ Arguments
+ </h4>
+ <dl>
+ <dt>seq</dt>
+ <dd>
+ The <i>seq</i> to pop an element from.
+ </dd>
+ </dl>
+ <h4>
+ Remarks
+ </h4>
+ <div>
+ This macro returns <i>seq</i> after removing the last element.
+ </div>
+ <h4>
+ See Also
+ </h4>
+ <ul>
+ <li>
+ BOOST_PP_SEQ_POP_FRONT</li>
+ </ul>
+ <h4>
+ Requirements
+ </h4>
+ <div>
+ <b>Header:</b> <boost/preprocessor/seq/pop_back.hpp>
+ </div>
+ <h4>
+ Sample Code
+ </h4>
+ <div>
+ <pre>
+#include <boost/preprocessor/seq/pop_back.hpp>
+
+#define SEQ (a)(b)(c)
+
+BOOST_PP_SEQ_POP_BACK(SEQ) // expands to (a)(b)
+</pre>
+ </div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+ </body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/ref/seq_pop_front.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/ref/seq_pop_front.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,68 @@
+<html>
+ <head>
+ <title>BOOST_PP_SEQ_POP_FRONT</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+ </head>
+ <body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_SEQ_POP_FRONT</b> macro pops an element from the beginning of a <i>seq</i>.
+ </div>
+ <h4>
+ Usage
+ </h4>
+ <div class="code">
+ <b>BOOST_PP_SEQ_POP_FRONT</b>(<i>seq</i>)
+ </div>
+ <h4>
+ Arguments
+ </h4>
+ <dl>
+ <dt>seq</dt>
+ <dd>
+ The <i>seq</i> to pop an element from.
+ </dd>
+ </dl>
+ <h4>
+ Remarks
+ </h4>
+ <div>
+ This macro returns <i>seq</i> after removing the first element.
+ </div>
+ <h4>
+ See Also
+ </h4>
+ <ul>
+ <li>
+ BOOST_PP_SEQ_POP_BACK</li>
+ </ul>
+ <h4>
+ Requirements
+ </h4>
+ <div>
+ <b>Header:</b> <boost/preprocessor/seq/pop_front.hpp>
+ </div>
+ <h4>
+ Sample Code
+ </h4>
+ <div>
+ <pre>
+#include <boost/preprocessor/seq/pop_front.hpp>
+
+#define SEQ (a)(b)(c)
+
+BOOST_PP_SEQ_POP_FRONT(SEQ) // expands to (b)(c)
+</pre>
+ </div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+ </body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/ref/seq_push_back.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/ref/seq_push_back.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,76 @@
+<html>
+ <head>
+ <title>BOOST_PP_SEQ_PUSH_BACK</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+ </head>
+ <body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_SEQ_PUSH_BACK</b> macro pushes an element onto the end of a <i>seq</i>.
+ </div>
+ <h4>
+ Usage
+ </h4>
+ <div class="code">
+ <b>BOOST_PP_SEQ_PUSH_BACK</b>(<i>seq</i>, <i>elem</i>)
+ </div>
+ <h4>
+ Arguments
+ </h4>
+ <dl>
+ <dt>seq</dt>
+ <dd>
+ The <i>seq</i> onto which <i>elem</i> is pushed.
+ </dd>
+ <dt>elem</dt>
+ <dd>
+ The element to push onto the end of <i>seq</i>.
+ </dd>
+ </dl>
+ <h4>
+ Remarks
+ </h4>
+ <div>
+ This macro returns <i>seq</i> after appending <i>elem</i>.
+ </div>
+ <div>
+ This macro is an explicit form of directly appending an element. In other
+ words, <b>BOOST_PP_SEQ_PUSH_BACK</b>(<i>seq</i>, <i>x</i>) is equivalent to <i>seq</i>(<i>x</i>).
+ </div>
+ <h4>
+ See Also
+ </h4>
+ <ul>
+ <li>
+ BOOST_PP_SEQ_PUSH_FRONT</li>
+ </ul>
+ <h4>
+ Requirements
+ </h4>
+ <div>
+ <b>Header:</b> <boost/preprocessor/seq/push_back.hpp>
+ </div>
+ <h4>
+ Sample Code
+ </h4>
+ <div>
+ <pre>
+#include <boost/preprocessor/seq/push_back.hpp>
+
+#define SEQ (a)(b)
+
+BOOST_PP_SEQ_PUSH_BACK(SEQ, c) // expands to (a)(b)(c)
+</pre>
+ </div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+ </body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/ref/seq_push_front.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/ref/seq_push_front.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,78 @@
+<html>
+ <head>
+ <title>BOOST_PP_SEQ_PUSH_FRONT</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+ </head>
+ <body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_SEQ_PUSH_FRONT</b> macro pushes an element onto the beginning
+ of a <i>seq</i>.
+ </div>
+ <h4>
+ Usage
+ </h4>
+ <div class="code">
+ <b>BOOST_PP_SEQ_PUSH_FRONT</b>(<i>seq</i>, <i>elem</i>)
+ </div>
+ <h4>
+ Arguments
+ </h4>
+ <dl>
+ <dt>seq</dt>
+ <dd>
+ The <i>seq</i> onto which <i>elem</i> is pushed.
+ </dd>
+ <dt>elem</dt>
+ <dd>
+ The element to push onto the beginning of <i>seq</i>.
+ </dd>
+ </dl>
+ <h4>
+ Remarks
+ </h4>
+ <div>
+ This macro returns <i>seq</i> after prepending <i>elem</i>.
+ </div>
+ <div>
+ This macro is an explicit form of directly prepending an element. In
+ other words, <b>BOOST_PP_SEQ_PUSH_FRONT</b>(<i>seq</i>, <i>x</i>) is equivalent
+ to (<i>x</i>)<i>seq</i>.
+ </div>
+ <h4>
+ See Also
+ </h4>
+ <ul>
+ <li>
+ BOOST_PP_SEQ_PUSH_BACK</li>
+ </ul>
+ <h4>
+ Requirements
+ </h4>
+ <div>
+ <b>Header:</b> <boost/preprocessor/seq/push_front.hpp>
+ </div>
+ <h4>
+ Sample Code
+ </h4>
+ <div>
+ <pre>
+#include <boost/preprocessor/seq/push_front.hpp>
+
+#define SEQ (b)(c)
+
+BOOST_PP_SEQ_PUSH_FRONT(SEQ, a) // expands to (a)(b)(c)
+</pre>
+ </div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+ </body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/ref/seq_remove.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/ref/seq_remove.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,66 @@
+<html>
+ <head>
+ <title>BOOST_PP_SEQ_REMOVE</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+ </head>
+ <body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_SEQ_REMOVE</b> macro removes an element from a <i>seq</i>.
+ </div>
+ <h4>
+ Usage
+ </h4>
+ <div class="code">
+ <b>BOOST_PP_SEQ_REMOVE</b>(<i>seq</i>, <i>i</i>)
+ </div>
+ <h4>
+ Arguments
+ </h4>
+ <dl>
+ <dt>seq</dt>
+ <dd>
+ The <i>seq</i> from which an element is to be removed.
+ </dd>
+ <dt>i</dt>
+ <dd>
+ The zero-based position in <i>seq</i> of the element to be removed. Valid
+ values range from <i>0</i> to <b>BOOST_PP_SEQ_SIZE</b>(<i>seq</i>) - <i>1</i>.
+ </dd>
+ </dl>
+ <h4>
+ Remarks
+ </h4>
+ <div>
+ This macro returns <i>seq</i> after removing the element at index <i>i</i>.
+ </div>
+ <h4>
+ Requirements
+ </h4>
+ <div>
+ <b>Header:</b> <boost/preprocessor/seq/remove.hpp>
+ </div>
+ <h4>
+ Sample Code
+ </h4>
+ <div>
+ <pre>
+#include <boost/preprocessor/seq/remove.hpp>
+
+#define SEQ (a)(b)(x)(c)
+
+BOOST_PP_SEQ_REMOVE(SEQ, 2) // expands to (a)(b)(c)
+</pre>
+ </div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+ </body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/ref/seq_replace.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/ref/seq_replace.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,71 @@
+<html>
+ <head>
+ <title>BOOST_PP_SEQ_REPLACE</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+ </head>
+ <body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_SEQ_REPLACE</b> macro replaces an element in a <i>seq</i>.
+ </div>
+ <h4>
+ Usage
+ </h4>
+ <div class="code">
+ <b>BOOST_PP_SEQ_RPLACE</b>(<i>seq</i>, <i>i</i>, <i>elem</i>)
+ </div>
+ <h4>
+ Arguments
+ </h4>
+ <dl>
+ <dt>seq</dt>
+ <dd>
+ The <i>seq</i> in which an element is to be replaced.
+ </dd>
+ <dt>i</dt>
+ <dd>
+ The zero-based position in <i>seq</i> of the element to be replaced.
+ Valid values range from <i>0</i> to <b>BOOST_PP_SEQ_SIZE</b>(<i>seq</i>) - <i>1</i>.
+ </dd>
+ <dt>elem</dt>
+ <dd>
+ The element to replace the element at index <i>i</i> within <i>seq</i>.
+ </dd>
+ </dl>
+ <h4>
+ Remarks
+ </h4>
+ <div>
+ This macro returns <i>seq</i> after replacing the element at index <i>i</i> with
+ <i>elem</i>.
+ </div>
+ <h4>
+ Requirements
+ </h4>
+ <div>
+ <b>Header:</b> <boost/preprocessor/seq/replace.hpp>
+ </div>
+ <h4>
+ Sample Code
+ </h4>
+ <div>
+ <pre>
+#include <boost/preprocessor/seq/replace.hpp>
+
+#define SEQ (a)(b)(x)(d)
+
+BOOST_PP_SEQ_REPLACE(SEQ, 2, c) // expands to (a)(b)(c)(d)
+</pre>
+ </div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+ </body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/ref/seq_rest_n.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/ref/seq_rest_n.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,67 @@
+<html>
+<head>
+ <title>BOOST_PP_SEQ_REST_N</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_SEQ_REST_N</b> macro expands to a <i>seq</i> of all but the
+ first <i>n</i> elements of a <i>seq</i>.
+ </div>
+ <h4>
+ Usage
+ </h4>
+ <div class="code">
+ <b>BOOST_PP_SEQ_REST_N</b>(<i>n</i>, <i>seq</i>)
+ </div>
+ <h4>
+ Arguments
+ </h4>
+ <dl>
+ <dt>n</dt>
+ <dd>
+ The number of elements to remove.
+ </dd>
+ <dt>seq</dt>
+ <dd>
+ The <i>seq</i> from which the elements are to be removed.
+ </dd>
+ </dl>
+ <h4>
+ Remarks
+ </h4>
+ <div>
+ This macro extracts <i>n</i> elements from the beginning of <i>seq</i> and
+ returns the remainder of <i>seq</i> as a new <i>seq</i>
+ </div>
+ <h4>
+ See Also
+ </h4>
+ <ul>
+ <li>
+ BOOST_PP_SEQ_FIRST_N</li>
+ </ul>
+ <h4>
+ Requirements
+ </h4>
+ <div>
+ <b>Header:</b> <boost/preprocessor/seq/rest_n.hpp>
+ </div>
+ <h4>
+ Sample Code
+ </h4>
+ <div>
+ <pre>#include <boost/preprocessor/arithmetic/inc.hpp><br>#include <boost/preprocessor/seq/elem.hpp><br>#include <boost/preprocessor/seq/first_n.hpp><br>#include <boost/preprocessor/seq/rest_n.hpp><br>#include <boost/preprocessor/seq/size.hpp><br><br>#define NUMBERS \<br> (0)(1)(2)(3)(4)(5)(6)(7)(8)(9) \<br> (10)(11)(12)(13)(14)(15)(16)(17)(18)(19) \<br> (20)(21)(22)(23)(24)(25)(26)(27)(28)(29) \<br> (30)(31)(32)(33)(34)(35)(36)(37)(38)(39) \<br> (40)(41)(42)(43)(44)(45)(46)(47)(48)(49) \<br> (50)(51)(52)(53)(54)(55)(56)(57)(58)(59) \<br> (60)(61)(62)(63)(64)(65)(66)(67)(68)(69) \<br> (70)(71)(72)(73)(74)(75)(76)(77)(78)(79) \<br> (80)(81)(82)(83)(84)(85)(86)(87)(88)(89) \<br> (90)(91)(92)(93)(94)(95)(96)(97)(98)(99) \<br> (100)(101)(102)(103)(104)(105
)(106)(107)(108)(109) \<br> (110)(111)(112)(113)(114)(115)(116)(117)(118)(119) \<br> (120)(121)(122)(123)(124)(125)(126)(127)(128)(129) \<br> (130)(131)(132)(133)(134)(135)(136)(137)(138)(139) \<br> (140)(141)(142)(143)(144)(145)(146)(147)(148)(149) \<br> (150)(151)(152)(153)(154)(155)(156)(157)(158)(159) \<br> (160)(161)(162)(163)(164)(165)(166)(167)(168)(169) \<br> (170)(171)(172)(173)(174)(175)(176)(177)(178)(179) \<br> (180)(181)(182)(183)(184)(185)(186)(187)(188)(189) \<br> (190)(191)(192)(193)(194)(195)(196)(197)(198)(199) \<br> (200)(201)(202)(203)(204)(205)(206)(207)(208)(209) \<br> (210)(211)(212)(213)(214)(215)(216)(217)(218)(219) \<br> (220)(221)(222)(223)(224)(225)(226)(227)(228)(229) \<br> (230)(231)(232)(233)(234)(235)(236)(237)(238)(239) \<br> (240)(241)(242)(243)(244)(245)(246)(247)(248)(249) \<br> (250)(251)(252)(253)(254)(255)(256) \<br> /**/<br><br>#define SUPER_ADD(x, y) BOOST_PP_SEQ_ELEM(y, <a href="seq_rest_n.html">BOOST_PP_SEQ
_REST_N</a>(x, NUMBERS))<br><br>SUPER_ADD(100, 100) // expands to 200<br><br>#define SUPER_SUB(x, y) \<br> BOOST_PP_SEQ_SIZE( \<br> BOOST_PP_SEQ_REST_N( \<br> BOOST_PP_INC(y), \<br> BOOST_PP_SEQ_FIRST_N( \<br> BOOST_PP_INC(x), NUMBERS \<br> ) \<br> ) \<br> ) \<br> /**/<br><br>SUPER_SUB(67, 25) // expands to 42<br></pre>
+ </div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ <br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at www.boost.org/LICENSE_1_0.txt)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/ref/seq_reverse.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/ref/seq_reverse.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,68 @@
+<html>
+ <head>
+ <title>BOOST_PP_SEQ_REVERSE</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+ </head>
+ <body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_SEQ_REVERSE</b> macro reverses a <i>seq</i>.
+ </div>
+ <h4>
+ Usage
+ </h4>
+ <div class="code">
+ <b>BOOST_PP_SEQ_REVERSE</b>(<i>seq</i>)
+ </div>
+ <h4>
+ Arguments
+ </h4>
+ <dl>
+ <dt>seq</dt>
+ <dd>
+ The <i>seq</i> to be reversed.
+ </dd>
+ </dl>
+ <h4>
+ Remarks
+ </h4>
+ <div>
+ For maximum efficiency, use <b>BOOST_PP_SEQ_REVERSE_S</b>.
+ </div>
+ <h4>
+ See Also
+ </h4>
+ <ul>
+ <li>
+ BOOST_PP_SEQ_REVERSE_S</li>
+ </ul>
+ <h4>
+ Requirements
+ </h4>
+ <div>
+ <b>Header:</b> <boost/preprocessor/seq/reverse.hpp>
+ </div>
+ <h4>
+ Sample Code
+ </h4>
+ <div>
+ <pre>
+#include <boost/preprocessor/seq/reverse.hpp>
+
+#define SEQ (1)(2)(3)
+
+BOOST_PP_SEQ_REVERSE(SEQ) // expands to (3)(2)(1)
+</pre>
+ </div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+ </body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/ref/seq_reverse_s.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/ref/seq_reverse_s.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,55 @@
+<html>
+ <head>
+ <title>BOOST_PP_SEQ_REVERSE_S</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+ </head>
+ <body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_SEQ_REVERSE_S</b> macro reverses a <i>seq</i>. It
+ reenters <b>BOOST_PP_SEQ_FOLD_LEFT</b> with maximum efficiency.
+ </div>
+ <h4>
+ Usage
+ </h4>
+ <div class="code">
+ <b>BOOST_PP_SEQ_REVERSE_S</b>(<i>s</i>, <i>seq</i>)
+ </div>
+ <h4>
+ Arguments
+ </h4>
+ <dl>
+ <dt>s</dt>
+ <dd>
+ The next available <b>BOOST_PP_SEQ_FOLD_LEFT</b> fold step.
+ </dd>
+ <dt>seq</dt>
+ <dd>
+ The <i>seq</i> to be reversed.
+ </dd>
+ </dl>
+ <h4>
+ See Also
+ </h4>
+ <ul>
+ <li>
+ BOOST_PP_SEQ_REVERSE</li>
+ </ul>
+ <h4>
+ Requirements
+ </h4>
+ <div>
+ <b>Header:</b> <boost/preprocessor/seq/reverse.hpp>
+ </div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+ </body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/ref/seq_size.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/ref/seq_size.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,55 @@
+<html>
+ <head>
+ <title>BOOST_PP_SEQ_SIZE</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+ </head>
+ <body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_SEQ_SIZE</b> macro expands to the size of a <i>seq</i>.
+ </div>
+ <h4>
+ Usage
+ </h4>
+ <div class="code">
+ <b>BOOST_PP_SEQ_SIZE</b>(<i>seq</i>)
+ </div>
+ <h4>
+ Arguments
+ </h4>
+ <dl>
+ <dt>seq</dt>
+ <dd>
+ The <i>seq</i> whose size is to be calculated.
+ </dd>
+ </dl>
+ <h4>
+ Requirements
+ </h4>
+ <div>
+ <b>Header:</b> <boost/preprocessor/seq/size.hpp>
+ </div>
+ <h4>
+ Sample Code
+ </h4>
+ <div>
+ <pre>
+#include <boost/preprocessor/seq/size.hpp>
+
+#define SEQ (a)(b)(c)
+
+BOOST_PP_SEQ_SIZE(SEQ) // expands to 3
+</pre>
+ </div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+ </body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/ref/seq_subseq.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/ref/seq_subseq.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,69 @@
+<html>
+ <head>
+ <title>BOOST_PP_SEQ_SUBSEQ</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+ </head>
+ <body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_SEQ_SUBSEQ</b> macro expands to a subseq of elements in a <i>seq</i>.
+ </div>
+ <h4>
+ Usage
+ </h4>
+ <div class="code">
+ <b>BOOST_PP_SEQ_SUBSEQ</b>(<i>seq</i>, <i>i</i>, <i>len</i>)
+ </div>
+ <h4>
+ Arguments
+ </h4>
+ <dl>
+ <dt>seq</dt>
+ <dd>
+ The <i>seq</i> whose size is to be calculated.
+ </dd>
+ <dt>i</dt>
+ <dd>
+ The index of the first element of the subseq to be extracted.
+ </dd>
+ <dt>len</dt>
+ <dd>
+ The length of the subseq to be extracted.
+ </dd>
+ </dl>
+ <h4>
+ Remarks
+ </h4>
+ <div>
+ This macro expands to a <i>seq</i> extracted from <i>seq</i>.
+ </div>
+ <h4>
+ Requirements
+ </h4>
+ <div>
+ <b>Header:</b> <boost/preprocessor/seq/subseq.hpp>
+ </div>
+ <h4>
+ Sample Code
+ </h4>
+ <div>
+ <pre>
+#include <boost/preprocessor/seq/subseq.hpp>
+
+#define SEQ (0)(1)(2)(3)(4)(5)
+
+BOOST_PP_SEQ_SUBSEQ(SEQ, 2, 3) // expands to (2)(3)(4)
+</pre>
+ </div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+ </body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/ref/seq_tail.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/ref/seq_tail.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,63 @@
+<html>
+ <head>
+ <title>BOOST_PP_SEQ_TAIL</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+ </head>
+ <body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_SEQ_TAIL</b> macro expands to all but the first element of a <i>seq</i>.
+ </div>
+ <h4>
+ Usage
+ </h4>
+ <div class="code">
+ <b>BOOST_PP_SEQ_TAIL</b>(<i>seq</i>)
+ </div>
+ <h4>
+ Arguments
+ </h4>
+ <dl>
+ <dt>seq</dt>
+ <dd>
+ The <i>seq</i> from which the tail is extracted.
+ </dd>
+ </dl>
+ <h4>
+ See Also
+ </h4>
+ <ul>
+ <li>
+ BOOST_PP_SEQ_HEAD</li>
+ </ul>
+ <h4>
+ Requirements
+ </h4>
+ <div>
+ <b>Header:</b> <boost/preprocessor/seq/seq.hpp>
+ </div>
+ <h4>
+ Sample Code
+ </h4>
+ <div>
+ <pre>
+#include <boost/preprocessor/seq/seq.hpp>
+
+#define SEQ (a)(b)(c)
+
+BOOST_PP_SEQ_HEAD(SEQ) // expands to a
+BOOST_PP_SEQ_TAIL(SEQ) // expands to (b)(c)
+</pre>
+ </div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+ </body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/ref/seq_to_array.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/ref/seq_to_array.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,55 @@
+<html>
+ <head>
+ <title>BOOST_PP_SEQ_TO_ARRAY</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+ </head>
+ <body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_SEQ_TO_ARRAY</b> macro converts a <i>seq</i> to an <i>array</i>.
+ </div>
+ <h4>
+ Usage
+ </h4>
+ <div class="code">
+ <b>BOOST_PP_SEQ_TO_ARRAY</b>(<i>seq</i>)
+ </div>
+ <h4>
+ Arguments
+ </h4>
+ <dl>
+ <dt>seq</dt>
+ <dd>
+ The <i>seq</i> to be converted.
+ </dd>
+ </dl>
+ <h4>
+ Requirements
+ </h4>
+ <div>
+ <b>Header:</b> <boost/preprocessor/seq/to_array.hpp>
+ </div>
+ <h4>
+ Sample Code
+ </h4>
+ <div>
+ <pre>
+#include <boost/preprocessor/seq/to_array.hpp>
+
+#define SEQ (a)(b)(c)
+
+BOOST_PP_SEQ_TO_ARRAY(SEQ) // expands to (3, (a, b, c))
+</pre>
+ </div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+ </body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/ref/seq_to_list.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/ref/seq_to_list.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,34 @@
+<html>
+<head>
+ <title>BOOST_PP_SEQ_TO_LIST</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+<div style="margin-left: 0px;"> The <b>BOOST_PP_SEQ_TO_LIST</b>
+macro converts a <i>seq</i> to a <i>list</i>. </div>
+<h4>Usage</h4>
+<div class="code"> <b>BOOST_PP_SEQ_TO_LIST</b>(<i>seq</i>)
+</div>
+<h4>Arguments</h4>
+<dl><dt>seq</dt>
+ <dd> The <i>seq</i> to be converted. </dd>
+</dl><b>See Also</b>
+<ul>
+ <li>BOOST_PP_LIMIT_SEQ</li>
+</ul>
+<h4>Requirements</h4>
+<div> <b>Header:</b> <boost/preprocessor/seq/to_list.hpp>
+</div>
+<h4>Sample Code</h4>
+<div>
+<pre>#include <boost/preprocessor/seq/to_list.hpp><br><br>BOOST_PP_SEQ_TO_LIST((x)(y)(z))<br> // expands to (x, (y, (z, BOOST_PP_NIL)))<br></pre>
+</div>
+<hr size="1">
+<div style="margin-left: 0px;"> <i>© Copyright Edward Diener 2011</i> </div>
+<div style="margin-left: 0px;">
+<p><small>Distributed under the Boost Software License, Version 1.0.
+(See accompanying file LICENSE_1_0.txt
+or copy at www.boost.org/LICENSE_1_0.txt)</small></p>
+</div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/ref/seq_to_tuple.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/ref/seq_to_tuple.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,55 @@
+<html>
+ <head>
+ <title>BOOST_PP_SEQ_TO_TUPLE</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+ </head>
+ <body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_SEQ_TO_TUPLE</b> macro converts a <i>seq</i> to an <i>tuple</i>.
+ </div>
+ <h4>
+ Usage
+ </h4>
+ <div class="code">
+ <b>BOOST_PP_SEQ_TO_TUPLE</b>(<i>seq</i>)
+ </div>
+ <h4>
+ Arguments
+ </h4>
+ <dl>
+ <dt>seq</dt>
+ <dd>
+ The <i>seq</i> to be converted.
+ </dd>
+ </dl>
+ <h4>
+ Requirements
+ </h4>
+ <div>
+ <b>Header:</b> <boost/preprocessor/seq/to_tuple.hpp>
+ </div>
+ <h4>
+ Sample Code
+ </h4>
+ <div>
+ <pre>
+#include <boost/preprocessor/seq/to_tuple.hpp>
+
+#define SEQ (a)(b)(c)
+
+BOOST_PP_SEQ_TO_TUPLE(SEQ) // expands to (a, b, c)
+</pre>
+ </div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+ </body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/ref/seq_transform.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/ref/seq_transform.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,93 @@
+<html>
+ <head>
+ <title>BOOST_PP_SEQ_TRANSFORM</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+ </head>
+ <body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_SEQ_TRANSFORM</b> macro transforms each element in a <i>seq</i>
+ according to a supplied transformation.
+ </div>
+ <h4>
+ Usage
+ </h4>
+ <div class="code">
+ <b>BOOST_PP_SEQ_TRANSFORM</b>(<i>op</i>, <i>data</i>, <i>seq</i>)
+ </div>
+ <h4>
+ Arguments
+ </h4>
+ <dl>
+ <dt>op</dt>
+ <dd>
+ A ternary predicate of the form <i>op</i>(<i>s</i>, <i>data</i>, <i>elem</i>).
+ This transformation is expanded by <b>BOOST_PP_SEQ_TRANSFORM</b> for each
+ element in <i>seq</i> with the next available <b>BOOST_PP_SEQ_FOLD_LEFT</b> fold
+ step, the auxiliary <i>data</i>, and the current element in <i>seq</i>.
+ </dd>
+ <dt>data</dt>
+ <dd>
+ Auxiliary data passed to <i>pred</i>.
+ </dd>
+ <dt>seq</dt>
+ <dd>
+ The <i>seq</i> to be transformed.
+ </dd>
+ </dl>
+ <h4>
+ Remarks
+ </h4>
+ <div>
+ This macro expands <i>op</i> for each element in <i>seq</i>. It builds a
+ new <i>seq</i> out of the results of each call. If, for example, <i>seq</i>
+ is (<i>a</i>)(<i>b</i>)(<i>c</i>), this macro expands to...
+ <div>
+ (<i>op</i>(<i>d</i>, <i>data</i>, <i>a</i>))(<i>op</i>(<i>d</i>, <i>data</i>, <i>b</i>))(<i>op</i>(<i>d</i>,
+ <i>data</i>, <i>c</i>))
+ </div>
+ </div>
+ <div>
+ For maximum efficiency, use <b>BOOST_PP_SEQ_TRANSFORM_S</b>.
+ </div>
+ <h4>
+ See Also
+ </h4>
+ <ul>
+ <li>
+ BOOST_PP_SEQ_TRANSFORM_S</li>
+ </ul>
+ <h4>
+ Requirements
+ </h4>
+ <div>
+ <b>Header:</b> <boost/preprocessor/seq/transform.hpp>
+ </div>
+ <h4>
+ Sample Code
+ </h4>
+ <div>
+ <pre>
+#include <boost/preprocessor/arithmetic/dec.hpp>
+#include <boost/preprocessor/seq/transform.hpp>
+
+#define SEQ (1)(3)(2)(5)
+
+#define OP(s, data, elem) BOOST_PP_DEC(elem)
+
+BOOST_PP_SEQ_TRANSFORM(OP, 3, SEQ)
+ // expands to (0)(2)(1)(4)
+</pre>
+ </div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+ </body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/ref/seq_transform_s.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/ref/seq_transform_s.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,79 @@
+<html>
+ <head>
+ <title>BOOST_PP_SEQ_TRANSFORM_S</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+ </head>
+ <body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_SEQ_TRANSFORM_S</b> macro transforms each element in a <i>seq</i>
+ according to a supplied transformation. It reenters <b>BOOST_PP_SEQ_FOLD_LEFT</b>
+ with maximum efficiency.
+ </div>
+ <h4>
+ Usage
+ </h4>
+ <div class="code">
+ <b>BOOST_PP_SEQ_TRANSFORM_S</b>(<i>s</i>, <i>op</i>, <i>data</i>, <i>seq</i>)
+ </div>
+ <h4>
+ Arguments
+ </h4>
+ <dl>
+ <dt>s</dt>
+ <dd>
+ The next available <b>BOOST_PP_SEQ_FOLD_LEFT</b> fold step.
+ </dd>
+ <dt>op</dt>
+ <dd>
+ A ternary predicate of the form <i>op</i>(<i>s</i>, <i>data</i>, <i>elem</i>).
+ This transformation is expanded by <b>BOOST_PP_SEQ_TRANSFORM</b> for each
+ element in <i>seq</i> with the next available <b>BOOST_PP_SEQ_FOLD_LEFT</b> fold
+ step, the auxiliary <i>data</i>, and the current element in <i>seq</i>.
+ </dd>
+ <dt>data</dt>
+ <dd>
+ Auxiliary data passed to <i>pred</i>.
+ </dd>
+ <dt>seq</dt>
+ <dd>
+ The <i>seq</i> to be transformed.
+ </dd>
+ </dl>
+ <h4>
+ Remarks
+ </h4>
+ <div>
+ This macro expands <i>op</i> for each element in <i>seq</i>. It builds a
+ new <i>seq</i> out of the results of each call. If, for example, <i>seq</i>
+ is (<i>a</i>)(<i>b</i>)(<i>c</i>), this macro expands to...
+ <div>
+ (<i>op</i>(<i>d</i>, <i>data</i>, <i>a</i>))(<i>op</i>(<i>d</i>, <i>data</i>, <i>b</i>))(<i>op</i>(<i>d</i>,
+ <i>data</i>, <i>c</i>))
+ </div>
+ </div>
+ <h4>
+ See Also
+ </h4>
+ <ul>
+ <li>
+ BOOST_PP_SEQ_TRANSFORM</li>
+ </ul>
+ <h4>
+ Requirements
+ </h4>
+ <div>
+ <b>Header:</b> <boost/preprocessor/seq/transform.hpp>
+ </div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+ </body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/ref/slot.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/ref/slot.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,60 @@
+<html>
+<head>
+ <title>BOOST_PP_SLOT</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_SLOT</b> macro retrieves a value previously evaluated by <b>BOOST_PP_ASSIGN_SLOT</b>.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_SLOT</b>(<i>i</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>i</dt>
+ <dd>
+ The <i>slot</i> index to be retrieved.
+ This value must be in the range of <i>1</i> to <b>BOOST_PP_LIMIT_SLOT_COUNT</b>.
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ Prior to use, the <i>slot</i> at index <i>i</i> must have been assigned with <b>BOOST_PP_ASSIGN_SLOT</b>.
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li>BOOST_PP_ASSIGN_SLOT</li>
+ <li>BOOST_PP_LIMIT_SLOT_COUNT</li>
+ </ul>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <boost/preprocessor/slot/slot.hpp>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+#include <boost/preprocessor/slot/slot.hpp>
+
+#define X() 4
+
+#define BOOST_PP_VALUE 1 + 2 + 3 + X()
+#include BOOST_PP_ASSIGN_SLOT(1)
+
+#undef X
+
+BOOST_PP_SLOT(1) // expands to 10
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/ref/stringize.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/ref/stringize.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,50 @@
+<html>
+<head>
+ <title>BOOST_PP_STRINGIZE</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_STRINGIZE</b> macro stringizes its argument after it has been expanded.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_STRINGIZE</b>(<i>text</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>text</dt>
+ <dd>
+ The text to be converted to a string literal.
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ The preprocessor stringizing operator (<b>#</b>) prevents arguments from expanding.
+ This macro allows its argument to expand before it is stringized.
+ </div>
+<!-- <h4>See Also</h4> -->
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <boost/preprocessor/stringize.hpp>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+#include <boost/preprocessor/cat.hpp>
+#include <boost/preprocessor/stringize.hpp>
+
+BOOST_PP_STRINGIZE(BOOST_PP_CAT(a, b)) // expands to "ab"
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/ref/sub.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/ref/sub.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,63 @@
+<html>
+<head>
+ <title>BOOST_PP_SUB</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_SUB</b> macro expands to the difference between its arguments.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_SUB</b>(<i>x</i>, <i>y</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>x</dt>
+ <dd>
+ The minuend of the operation.
+ Valid values range from <i>0</i> to <b>BOOST_PP_LIMIT_MAG</b>.
+ </dd>
+ <dt>y</dt>
+ <dd>
+ The subtrahend of the operation.
+ Valid values range from <i>0</i> to <b>BOOST_PP_LIMIT_MAG</b>.
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ If the difference between <i>x</i> and <i>y</i> is less than <i>0</i>, the result is saturated to <i>0</i>.
+ </div>
+ <div>
+ Previously, this macro could not be used inside <b>BOOST_PP_WHILE</b>.
+ There is no longer any such restriction.
+ It is more efficient, however, to use <b>BOOST_PP_SUB_D</b> in such a situation.
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li>BOOST_PP_LIMIT_MAG</li>
+ <li>BOOST_PP_SUB_D</li>
+ </ul>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <boost/preprocessor/arithmetic/sub.hpp>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+#include <boost/preprocessor/arithmetic/sub.hpp>
+
+BOOST_PP_SUB(4, 3) // expands to 1
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/ref/sub_d.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/ref/sub_d.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,85 @@
+<html>
+<head>
+ <title>BOOST_PP_SUB_D</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_SUB_D</b> macro expands to the difference between its second and third arguments.
+ It reenters <b>BOOST_PP_WHILE</b> with maximum efficiency.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_SUB_D</b>(<i>d</i>, <i>x</i>, <i>y</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>d</dt>
+ <dd>
+ The next available <b>BOOST_PP_WHILE</b> iteration.
+ </dd>
+ <dt>x</dt>
+ <dd>
+ The minuend of the operation.
+ Valid values range from <i>0</i> to <b>BOOST_PP_LIMIT_MAG</b>.
+ </dd>
+ <dt>y</dt>
+ <dd>
+ The subtrahend of the operation.
+ Valid values range from <i>0</i> to <b>BOOST_PP_LIMIT_MAG</b>.
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ If the difference between <i>x</i> and <i>y</i> is less than <i>0</i>, the result is saturated to <i>0</i>.
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li>BOOST_PP_LIMIT_MAG</li>
+ <li>BOOST_PP_SUB</li>
+ </ul>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <boost/preprocessor/arithmetic/sub.hpp>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+#include <boost/preprocessor/arithmetic/dec.hpp>
+#include <boost/preprocessor/arithmetic/sub.hpp>
+#include <boost/preprocessor/control/while.hpp>
+#include <boost/preprocessor/tuple/elem.hpp>
+
+#define PRED(d, data) BOOST_PP_TUPLE_ELEM(2, 0, data)
+
+#define OP(d, data) \
+ ( \
+ BOOST_PP_DEC( \
+ BOOST_PP_TUPLE_ELEM(2, 0, data) \
+ ), \
+ BOOST_PP_SUB_D( \
+ d, \
+ BOOST_PP_TUPLE_ELEM(2, 1, data), \
+ 2 \
+ ) \
+ ) \
+ /**/
+
+// decrement 'x' by 2 'n' times
+#define STRIDE(x, n) BOOST_PP_TUPLE_ELEM(2, 1, BOOST_PP_WHILE(PRED, OP, (n, x)))
+
+STRIDE(10, 2) // expands to 6
+STRIDE(14, 6) // expands to 2
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/ref/tuple_eat.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/ref/tuple_eat.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,58 @@
+<html>
+<head>
+ <title>BOOST_PP_TUPLE_EAT</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_TUPLE_EAT</b> macro expands to a macro that eats a <i>tuple</i>.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_TUPLE_EAT</b>(<i>size</i>)<br>
+<br>
+or<br>
+<br>
+<b>BOOST_PP_TUPLE_EAT</b>(<i>size</i>) <sup>(v)</sup><b></b><br>
+</div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>size</dt>
+ <dd>
+ The size of the <i>tuple</i> to be eaten.
+ Valid <i>tuple</i> sizes range from <i>0</i> to <b>BOOST_PP_LIMIT_TUPLE</b>.
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ The <i>size</i> argument must be the actual size of the <i>tuple</i> in the non-variadic version. <br>
+<br>For the variadic version <sup>(v)</sup> the
+size may be left out
+completely so that the macro can be invoked as BOOST_PP_TUPLE_EAT(); you may get a warning from some compilers, but the
+functionality will still work. If you specify a size in the variadic
+version, it will be ignored, but the warning from some compilers will
+not occur.<br>
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li>BOOST_PP_LIMIT_TUPLE</li>
+ </ul>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <boost/preprocessor/tuple/eat.hpp>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>#include <boost/preprocessor/control/if.hpp><br>#include <boost/preprocessor/tuple/eat.hpp><br><br>#define OP(a, b) (a b)<br><br>#define MACRO(n) BOOST_PP_IF(n, OP, BOOST_PP_TUPLE_EAT(2))(1, 2)<br><br>// or for the variadic version <sup>(v)</sup><br><br>#define MACRO(n) BOOST_PP_IF(n, OP, BOOST_PP_TUPLE_EAT())(1, 2)<br><br>MACRO(0) // expands to nothing<br>MACRO(1) // expands to (1, 2)<br></pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ <br><i>© Copyright Paul Mensonides 2002<br>
+</i><i>© Copyright Edward Diener 2011</i><br>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at www.boost.org/LICENSE_1_0.txt)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/ref/tuple_elem.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/ref/tuple_elem.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,65 @@
+<html>
+<head>
+ <title>BOOST_PP_TUPLE_ELEM</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_TUPLE_ELEM</b> macro extracts an element from a <i>tuple</i>.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_TUPLE_ELEM</b>(<i>size</i>, <i>i</i>, <i>tuple</i>)<sup></sup><br>
+<br>
+or<br>
+<br>
+<b>BOOST_PP_TUPLE_ELEM</b>(<i>...</i>) <sup>(v)</sup><b></b><br>
+</div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>size</dt>
+ <dd>
+ The size of the <i>tuple</i>.
+ Valid <i>tuple</i> sizes range from <i>0</i> to <b>BOOST_PP_LIMIT_TUPLE</b>.
+ </dd>
+ <dt>i</dt>
+ <dd>
+ The zero-based index into the <i>tuple</i> of the element to be extracted.
+ Valid values range from <i>0</i> to <i>size</i> - <i>1</i>.
+ </dd>
+ <dt>tuple</dt>
+ <dd>
+ The <i>tuple</i> from which an element is to be extracted.
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ The <i>size</i> argument must be the actual size of the <i>tuple</i>,
+ and <i>i</i> must be less than the size of the <i>tuple</i>. <br>
+ <br>You can
+ invoke the variadic version as BOOST_PP_TUPLE_ELEM(<i>i</i>,<i>tuple</i>) or
+ BOOST_PP_TUPLE_ELEM(<i>size</i>,<i>i</i>,<i>tuple</i>).
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li>BOOST_PP_LIMIT_TUPLE</li>
+ </ul>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <boost/preprocessor/tuple/elem.hpp>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>#include <boost/preprocessor/tuple/elem.hpp><br><br>#define TUPLE (a, b, c, d)<br><br>BOOST_PP_TUPLE_ELEM(4, 0, TUPLE) // expands to a<br>BOOST_PP_TUPLE_ELEM(4, 3, TUPLE) // expands to d<br><br>// or for the variadic version <sup>(v)</sup><br><br>BOOST_PP_TUPLE_ELEM(0, TUPLE) // expands to a in the variadic version<br>BOOST_PP_TUPLE_ELEM(3, TUPLE) // expands to d in the variadic version<br></pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ <br><i>© Copyright Paul Mensonides 2002<br>
+ </i><i>© Copyright Edward Diener 2011</i><br>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at www.boost.org/LICENSE_1_0.txt)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/ref/tuple_enum.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/ref/tuple_enum.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,55 @@
+<html>
+<head>
+ <title>BOOST_PP_TUPLE_ENUM</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+<div style="margin-left: 0px;"> The <b>BOOST_PP_TUPLE_ENUM</b> macro converts a <i>tuple</i> to its comma-separated elements. The comma-separated elements are in the form of <i>variadic data</i>. </div>
+<h4> Usage </h4>
+<div class="code"> <b>BOOST_PP_TUPLE_ENUM</b>(<i>size,tuple</i>)<br>
+<br>
+or<br>
+<br>
+<b>BOOST_PP_TUPLE_ENUM</b>(<i>...</i>) <sup>(v)</sup><b></b><br>
+</div>
+<h4> Arguments </h4>
+<dl>
+ <dt>size</dt>
+ <dd>
+ The size of the <i>tuple</i>.
+ Valid <i>tuple</i> sizes range from <i>0</i> to <b>BOOST_PP_LIMIT_TUPLE</b>. <br>
+ </dd>
+ <dt>tuple</dt>
+ <dd> The <i>tuple</i> whose elements are to be converted. </dd>
+</dl>
+<h4> Remarks </h4>
+<div>
+<br>You can
+invoke the variadic version <sup>(v)</sup> as BOOST_PP_TUPLE_ENUM(<i>tuple</i>) or
+BOOST_PP_TUPLE_ENUM(<i>size</i>,<i>tuple</i>).<br>
+</div>
+<h4>See Also</h4>
+<ul>
+<li>BOOST_PP_LIMIT_TUPLE<br>
+</li>
+</ul>
+<h4> Requirements </h4>
+<div> <b>Header:</b> <boost/preprocessor/tuple/enum.hpp>
+</div>
+<h4> Sample Code </h4>
+<div>
+<pre>#include <boost/preprocessor/tuple/enum.hpp><br><br>#define TUPLE (B,O,O,S,T)<br><br>BOOST_PP_TUPLE_ENUM(5,TUPLE) // expands to B, O, O, S, T<br><br>// or for the variadic version <sup>(v)<br><br></sup>BOOST_PP_TUPLE_ENUM(TUPLE) // expands to B, O, O, S, T<br></pre>
+</div>
+<hr size="1">
+<div style="margin-left: 0px;"> <i>© Copyright Housemarque Oy 2002</i>
+<br>
+<i>© Copyright Paul Mensonides 2002<br>
+</i><i>© Copyright Edward Diener 2011</i><br>
+ </div>
+<div style="margin-left: 0px;">
+<p><small>Distributed under the Boost Software License, Version 1.0.
+(See accompanying file LICENSE_1_0.txt
+or copy at www.boost.org/LICENSE_1_0.txt)</small></p>
+</div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/ref/tuple_rem.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/ref/tuple_rem.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,59 @@
+<html>
+<head>
+ <title>BOOST_PP_TUPLE_REM</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_TUPLE_REM</b> macro expands to a macro that removes the parentheses from a <i>tuple</i>.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_TUPLE_REM</b>(<i>size</i>)<br>
+<br>
+or<br>
+<br>
+<b>BOOST_PP_TUPLE_REM</b>(<i>size</i>) <sup>(v)</sup><br>
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>size</dt>
+ <dd>
+ The size of the <i>tuple</i> from which the parentheses are to be removed.
+ Valid <i>tuple</i> sizes range from <i>0</i> to <b>BOOST_PP_LIMIT_TUPLE</b>.
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ The <i>size</i> argument must be the actual size of the <i>tuple</i> in the non-variadic version.<br>
+<br>
+For the variadic version <sup>(v)</sup> the
+size may be left out
+completely so that the macro can be invoked as BOOST_PP_TUPLE_REM(); you may get a warning from some compilers, but the
+functionality will still work. If you specify a size in the variadic
+version, it will be ignored, but the warning from some compilers will
+not occur.<br>
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li>BOOST_PP_LIMIT_TUPLE</li>
+ </ul>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <boost/preprocessor/tuple/rem.hpp>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>#include <boost/preprocessor/tuple/rem.hpp><br><br>BOOST_PP_TUPLE_REM(3)(x, y, z) // expands to x, y, z<br><br>// or for the variadic version <sup>(v)</sup><br><br>BOOST_PP_TUPLE_REM()(x, y, z) // expands to x, y, z<br></pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ <br><i>© Copyright Paul Mensonides 2002<br>
+</i><i>© Copyright Edward Diener 2011</i><br>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at www.boost.org/LICENSE_1_0.txt)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/ref/tuple_rem_ctor.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/ref/tuple_rem_ctor.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,61 @@
+<html>
+<head>
+ <title>BOOST_PP_TUPLE_REM_CTOR</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_TUPLE_REM_CTOR</b> macro removes the parentheses from a <i>tuple</i>.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_TUPLE_REM_CTOR</b>(<i>size</i>, <i>tuple</i>)<br>
+<br>
+or<br>
+<br>
+<b>BOOST_PP_TUPLE_REM_CTOR</b>(<i>...</i>) <sup>(v)</sup><br>
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>size</dt>
+ <dd>
+ The size of the <i>tuple</i> from which the parentheses are to be removed.
+ Valid <i>tuple</i> sizes range from <i>0</i> to <b>BOOST_PP_LIMIT_TUPLE</b>.
+ </dd>
+ <dt>tuple</dt>
+ <dd>
+ The <i>tuple</i> from which the parenthesis are removed.
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ The <i>size</i> argument must be the actual size of <i>tuple</i>.<br>
+<br>
+You can
+invoke the variadic version <sup>(v)</sup> as BOOST_PP_TUPLE_REM_CTOR(<i>tuple</i>) or
+BOOST_PP_TUPLE_REM_CTOR(<i>size</i>,<i>tuple</i>).<br>
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li>BOOST_PP_LIMIT_TUPLE</li>
+ </ul>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <boost/preprocessor/tuple/rem.hpp>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>#include <boost/preprocessor/tuple/rem.hpp><br><br>BOOST_PP_TUPLE_REM_CTOR(3, (x, y, z)) // expands to x, y, z<br><br>// or for the variadic version <sup>(v)<br><br></sup>BOOST_PP_TUPLE_REM_CTOR((x, y, z)) // expands to x, y, z<br></pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ <br><i>© Copyright Paul Mensonides 2002<br>
+</i><i>© Copyright Edward Diener 2011</i><br>
+
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at www.boost.org/LICENSE_1_0.txt)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/ref/tuple_reverse.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/ref/tuple_reverse.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,61 @@
+<html>
+<head>
+ <title>BOOST_PP_TUPLE_REVERSE</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_TUPLE_REVERSE</b> macro reverses a <i>tuple</i>.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_TUPLE_REVERSE</b>(<i>size</i>, <i>tuple</i>)<br>
+<br>
+or<br>
+<br>
+<b>BOOST_PP_TUPLE_REVERSE</b>(<i>...</i>) <sup>(v)</sup><br>
+
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>size</dt>
+ <dd>
+ The size of the <i>tuple</i> to be reversed.
+ Valid <i>tuple</i> sizes range from <i>0</i> to <b>BOOST_PP_LIMIT_TUPLE</b>.
+ </dd>
+ <dt>tuple</dt>
+ <dd>
+ The <i>tuple</i> to be reversed.
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ The <i>size</i> argument must be the actual size of the <i>tuple</i>.<br>
+<br>
+You can
+invoke the variadic version <sup>(v)</sup> as BOOST_PP_TUPLE_REVERSE(<i>tuple</i>) or
+BOOST_PP_TUPLE_REVERSE(<i>size</i>,<i>tuple</i>).<br>
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li>BOOST_PP_LIMIT_TUPLE</li>
+ </ul>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <boost/preprocessor/tuple/reverse.hpp>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>#include <boost/preprocessor/tuple/reverse.hpp><br><br>BOOST_PP_TUPLE_REVERSE(3, (x, y, z)) // expands to (z, y, x)<br><br>// or for the variadic version <sup>(v)<br><br></sup>BOOST_PP_TUPLE_REVERSE((x, y, z)) // expands to (z, y, x)<br></pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ <br><i>© Copyright Paul Mensonides 2002<br>
+</i><i>© Copyright Edward Diener 2011</i><br>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at www.boost.org/LICENSE_1_0.txt)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/ref/tuple_size.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/ref/tuple_size.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,32 @@
+<html>
+<head>
+ <title>BOOST_PP_TUPLE_SIZE</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+<div style="margin-left: 0px;"> The <b>BOOST_PP_TUPLE_SIZE</b> macro
+expands to the size of the <i>tuple</i> passed to it. </div>
+<h4>Usage</h4>
+<div class="code"> <b>BOOST_PP_TUPLE_SIZE</b>(<i>tuple</i>) <sup>(v)</sup><br>
+ </div>
+<h4>Arguments</h4>
+<dl>
+ <dt>tuple</dt>
+ <dd> A <i>tuple</i> whose size is to be extracted. </dd>
+</dl>
+<h4>Requirements</h4>
+<div> <b>Header:</b> <boost/preprocessor/tuple/size.hpp>
+</div>
+<h4>Sample Code</h4>
+<div>
+<pre>#include <boost/preprocessor/tuple/size.hpp><br><br>#define TUPLE (x, y, z)<br><br>BOOST_PP_TUPLE_SIZE(TUPLE) // expands to 3<br></pre>
+</div>
+<hr size="1">
+<div style="margin-left: 0px;"> <i></i><i>© Copyright Edward Diener 2011</i> </div>
+<div style="margin-left: 0px;">
+<p><small>Distributed under the Boost Software License, Version 1.0.
+(See accompanying file LICENSE_1_0.txt
+or copy at www.boost.org/LICENSE_1_0.txt)</small></p>
+</div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/ref/tuple_to_array.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/ref/tuple_to_array.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,50 @@
+<html>
+<head>
+ <title>BOOST_PP_TUPLE_TO_ARRAY</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+<div style="margin-left: 0px;"> The <b>BOOST_PP_TUPLE_TO_ARRAY</b>
+macro
+converts a <i>tuple</i> to an <i>array</i>. </div>
+<h4> Usage </h4>
+<div class="code"> <b>BOOST_PP_TUPLE_TO_ARRAY</b>(<i>size,tuple</i>)<br>
+<br>
+or<br>
+<br>
+<b>BOOST_PP_TUPLE_TO_ARRAY</b>(<i>...</i>) <sup>(v)</sup><br>
+</div>
+<h4> Arguments </h4>
+<dl>
+ <dt>size</dt>
+ <dd> The size of the <i>tuple</i>. Valid <i>tuple</i> sizes
+range from <i>0</i> to <b>BOOST_PP_LIMIT_TUPLE</b>. <br>
+ </dd>
+ <dt>tuple</dt>
+ <dd> The <i>tuple</i> to be converted.</dd>
+</dl>
+<h4>Remarks</h4>
+<div>
+ The <i>size</i> argument must be the actual size of the <i>tuple</i>.<br>
+<br>
+You can
+invoke the variadic version <sup>(v)</sup> as BOOST_PP_TUPLE_TO_ARRAY(<i>tuple</i>) or
+BOOST_PP_TUPLE_TO_ARRAY(<i>size</i>,<i>tuple</i>).
+</div>
+<h4> Requirements </h4>
+<div> <b>Header:</b> <boost/preprocessor/tuple/to_array.hpp>
+</div>
+<h4> Sample Code </h4>
+<div>
+<pre>#include <boost/preprocessor/tuple/to_array.hpp><br><br>#define TUPLE (a,b,c)<br><br>BOOST_PP_TUPLE_TO_ARRAY(3,TUPLE) // expands to (3, (a, b, c))<br><br>// or for the variadic version <sup>(v)<br><br></sup>BOOST_PP_TUPLE_TO_ARRAY(TUPLE) // expands to (3, (a, b, c))<br></pre>
+</div>
+<hr size="1">
+<div style="margin-left: 0px;"> <i>© Copyright Edward Diener 2011</i>
+</div>
+<div style="margin-left: 0px;">
+<p><small>Distributed under the Boost Software License, Version 1.0.
+(See accompanying file LICENSE_1_0.txt
+or copy at www.boost.org/LICENSE_1_0.txt)</small></p>
+</div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/ref/tuple_to_list.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/ref/tuple_to_list.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,60 @@
+<html>
+<head>
+ <title>BOOST_PP_TUPLE_TO_LIST</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_TUPLE_TO_LIST</b> macro converts a <i>tuple</i> to a <i>list</i>.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_TUPLE_TO_LIST</b>(<i>size</i>, <i>tuple</i>)<br>
+<br>
+or<br>
+<br>
+<b>BOOST_PP_TUPLE_TO_LIST</b>(<i>...</i>) <sup>(v)</sup><br>
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>size</dt>
+ <dd>
+ The size of the <i>tuple</i> to be converted.
+ Valid <i>tuple</i> sizes range from <i>0</i> to <b>BOOST_PP_LIMIT_TUPLE</b>.
+ </dd>
+ <dt>tuple</dt>
+ <dd>
+ The <i>tuple</i> to be converted.
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ The <i>size</i> argument must be the actual size of the <i>tuple</i>.<br>
+<br>
+You can
+invoke the variadic version <sup>(v)</sup> as BOOST_PP_TUPLE_TO_LIST(<i>tuple</i>) or
+BOOST_PP_TUPLE_TO_LIST(<i>size</i>,<i>tuple</i>).<br>
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li>BOOST_PP_LIMIT_TUPLE</li>
+ </ul>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <boost/preprocessor/tuple/to_list.hpp>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>#include <boost/preprocessor/tuple/to_list.hpp><br><br>BOOST_PP_TUPLE_TO_LIST(3, (x, y, z))<br> // expands to (x, (y, (z, BOOST_PP_NIL)))<br><br>// or for the variadic version <sup>(v)<br><br></sup>BOOST_PP_TUPLE_TO_LIST((x, y, z))<br> // expands to (x, (y, (z, BOOST_PP_NIL)))<br></pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ <br><i>© Copyright Paul Mensonides 2002<br>
+</i><i>© Copyright Edward Diener 2011</i><br>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at www.boost.org/LICENSE_1_0.txt)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/ref/tuple_to_seq.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/ref/tuple_to_seq.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,49 @@
+<html>
+<head>
+ <title>BOOST_PP_TUPLE_TO_SEQ</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+<div style="margin-left: 0px;"> The <b>BOOST_PP_TUPLE_TO_SEQ</b> macro
+converts a <i>tuple</i> to an <i>seq</i>. </div>
+<h4> Usage </h4>
+<div class="code"> <b>BOOST_PP_TUPLE_TO_SEQ</b>(<i>size</i>, <i>tuple</i>)<br>
+<br>
+or<br>
+<br>
+<b>BOOST_PP_TUPLE_TO_SEQ</b>(<i>...</i>) <sup>(v)</sup><br>
+</div>
+<h4> Arguments </h4>
+<dl>
+ <dt>size</dt>
+ <dd> The number of elements in <i>tuple</i>. </dd>
+ <dt>tuple</dt>
+ <dd> The <i>tuple</i> to be converted. </dd>
+</dl>
+<h4>Remarks</h4>
+<div> The <i>size</i> argument must be the actual size of the <i>tuple</i>.<br>
+<br>
+You can
+invoke the variadic version <sup>(v)</sup> as BOOST_PP_TUPLE_TO_SEQ(<i>tuple</i>) or
+BOOST_PP_TUPLE_TO_SEQ(<i>size</i>,<i>tuple</i>).
+</div>
+<h4>Requirements </h4>
+<div> <b>Header:</b> <boost/preprocessor/tuple/to_seq.hpp>
+</div>
+<h4> Sample Code </h4>
+<div>
+<pre>#include <boost/preprocessor/tuple/to_seq.hpp><br><br>BOOST_PP_TUPLE_TO_SEQ(3, (a, b, c)) // expands to (a)(b)(c)<br><br>// or for the variadic version <sup>(v)<br><br></sup>BOOST_PP_TUPLE_TO_SEQ((a, b, c)) // expands to (a)(b)(c)<br></pre>
+</div>
+<hr size="1">
+<div style="margin-left: 0px;"> <i>© Copyright Housemarque Oy 2002</i>
+<br>
+<i>© Copyright Paul Mensonides 2002<br>
+</i><i>© Copyright Edward Diener 2011</i><br>
+ </div>
+<div style="margin-left: 0px;">
+<p><small>Distributed under the Boost Software License, Version 1.0.
+(See accompanying file LICENSE_1_0.txt
+or copy at www.boost.org/LICENSE_1_0.txt)</small></p>
+</div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/ref/update_counter.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/ref/update_counter.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,34 @@
+<html>
+<head>
+ <title>BOOST_PP_UPDATE_COUNTER</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_UPDATE_COUNTER</b> macro increments the current counter value.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b>BOOST_PP_UPDATE_COUNTER()</b>
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li>BOOST_PP_COUNTER</li>
+ </ul>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <boost/preprocessor/slot/counter.hpp>
+ </div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/ref/value.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/ref/value.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,37 @@
+<html>
+<head>
+ <title>BOOST_PP_VALUE</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_VALUE</b> macro is a user-defined <i>named external argument</i> to <b>BOOST_PP_ASSIGN_SLOT</b>.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #define <b>BOOST_PP_VALUE</b> <i>value</i>
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>value</dt>
+ <dd>
+ An intergral constant expression to be evaluated by <b>BOOST_PP_ASSIGN_SLOT</b>.
+ </dd>
+ </dl>
+ <h4>See Also</h4>
+ <ul>
+ <li>BOOST_PP_ASSIGN_SLOT</li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/ref/variadic_elem.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/ref/variadic_elem.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,42 @@
+<html>
+<head>
+ <title>BOOST_PP_VARIADIC_ELEM</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+<div style="margin-left: 0px;"> The <b>BOOST_PP_VARIADIC_ELEM</b> variadic macro
+extracts an element from <i>variadic data</i>. </div>
+<h4>Usage</h4>
+<div class="code"> <b>BOOST_PP_VARIADIC_ELEM</b>(<i>i</i>, <i>...</i>) <sup>(v)</sup><br>
+ </div>
+<h4>Arguments</h4>
+<dl><dt>i</dt>
+ <dd> The zero-based index into the <i>variadic data</i> of the element to be
+extracted. Valid values range from <i>0</i> to the size of the variadic data - 1.
+ </dd>
+ <dt>...<br>
+</dt>
+ <dd> The <i>variadic data</i> from which an element is to be extracted. </dd>
+</dl>
+<h4>Remarks</h4>
+<div>The index <i>i</i> must be less than the size of the <i>variadic data</i>. </div>
+<h4>See Also</h4>
+<ul>
+ <li>BOOST_PP_LIMIT_VARIADIC</li>
+</ul>
+<h4>Requirements</h4>
+<div> <b>Header:</b> <boost/preprocessor/variadic/elem.hpp>
+</div>
+<h4>Sample Code</h4>
+<div>
+<pre>#include <boost/preprocessor/variadic/elem.hpp><br><br>#define VAR_DATA a, b, c, d<br><br>BOOST_PP_VARIADIC_ELEM(0, VAR_DATA) // expands to a<br>BOOST_PP_VARIADIC_ELEM(3, VAR_DATA) // expands to d<br></pre>
+</div>
+<hr size="1">
+<div style="margin-left: 0px;"> <i></i><i>© Copyright Edward Diener 2011</i> </div>
+<div style="margin-left: 0px;">
+<p><small>Distributed under the Boost Software License, Version 1.0.
+(See accompanying file LICENSE_1_0.txt
+or copy at www.boost.org/LICENSE_1_0.txt)</small></p>
+</div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/ref/variadic_size.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/ref/variadic_size.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,33 @@
+<html>
+<head>
+ <title>BOOST_PP_VARIADIC_SIZE</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+<div style="margin-left: 0px;"> The <b>BOOST_PP_VARIADIC_SIZE</b> variadic macro
+expands to the size of the <i>variadic data </i>passed to it. </div>
+<h4>Usage</h4>
+<div class="code"> <b>BOOST_PP_VARIADIC_SIZE</b>(<i>...</i>) <sup>(v)</sup><br>
+ </div>
+<h4>Arguments</h4>
+<dl>
+ <dt>...<br>
+</dt>
+ <dd> <i>Variadic data </i>whose size is to be extracted. </dd>
+</dl>
+<h4>Requirements</h4>
+<div> <b>Header:</b> <boost/preprocessor/variadic/size.hpp>
+</div>
+<h4>Sample Code</h4>
+<div>
+<pre>#include <boost/preprocessor/variadic/size.hpp><br><br>#define VAR_DATA x, y, z<br><br>BOOST_PP_VARIADIC_SIZE(VAR_DATA) // expands to 3<br></pre>
+</div>
+<hr size="1">
+<div style="margin-left: 0px;"> <i></i><i>© Copyright Edward Diener 2011</i> </div>
+<div style="margin-left: 0px;">
+<p><small>Distributed under the Boost Software License, Version 1.0.
+(See accompanying file LICENSE_1_0.txt
+or copy at www.boost.org/LICENSE_1_0.txt)</small></p>
+</div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/ref/variadic_to_array.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/ref/variadic_to_array.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,32 @@
+<html>
+<head>
+ <title>BOOST_PP_VARIADIC_TO_ARRAY</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+<div style="margin-left: 0px;"> The <b>BOOST_PP_VARIADIC_TO_ARRAY</b> variadic macro
+converts <i>variadic data</i> to an <i>array</i>. </div>
+<h4> Usage </h4>
+<div class="code"> <b>BOOST_PP_VARIADIC_TO_ARRAY</b>(<i>...</i>) <sup>(v)</sup><br>
+ </div>
+<h4> Arguments </h4>
+<dl>
+ <dt>...</dt>
+ <dd> The <i>variadic data</i> to be converted. </dd>
+</dl>
+<h4> Requirements </h4>
+<div> <b>Header:</b> <boost/preprocessor/variadic/to_array.hpp>
+</div>
+<h4> Sample Code </h4>
+<div>
+<pre>#include <boost/preprocessor/variadic/to_array.hpp><br><br>#define VAR_DATA a, b, c<br><br>BOOST_PP_VARIADIC_TO_ARRAY(VAR_DATA) // expands to (3, (a, b, c))<br></pre>
+</div>
+<hr size="1">
+<div style="margin-left: 0px;"> <i></i><i>© Copyright Edward Diener 2011</i> </div>
+<div style="margin-left: 0px;">
+<p><small>Distributed under the Boost Software License, Version 1.0.
+(See accompanying file LICENSE_1_0.txt
+or copy at www.boost.org/LICENSE_1_0.txt)</small></p>
+</div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/ref/variadic_to_list.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/ref/variadic_to_list.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,31 @@
+<html>
+<head>
+ <title>BOOST_PP_VARIADIC_TO_LIST</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+<div style="margin-left: 0px;"> The <b>BOOST_PP_VARIADIC_TO_LIST</b>
+variadic macro converts <i>variadic data</i> to a <i>list</i>. </div>
+<h4>Usage</h4>
+<div class="code"> <b>BOOST_PP_VARIADIC_TO_LIST</b>(<i>...</i>) <sup>(v)</sup><br>
+ </div>
+<h4>Arguments</h4>
+<dl><dt>...</dt>
+ <dd> The <i>variadic data</i> to be converted.<br>
+</dd>
+</dl><h4>Requirements</h4>
+<div> <b>Header:</b> <boost/preprocessor/variadic/to_list.hpp>
+</div>
+<h4>Sample Code</h4>
+<div>
+<pre>#include <boost/preprocessor/variadic/to_list.hpp><br><br>BOOST_PP_VARIADIC_TO_LIST(x, y, z)<br> // expands to (x, (y, (z, BOOST_PP_NIL)))<br></pre>
+</div>
+<hr size="1">
+<div style="margin-left: 0px;"> <i></i><i>© Copyright Edward Diener 2011</i> </div>
+<div style="margin-left: 0px;">
+<p><small>Distributed under the Boost Software License, Version 1.0.
+(See accompanying file LICENSE_1_0.txt
+or copy at www.boost.org/LICENSE_1_0.txt)</small></p>
+</div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/ref/variadic_to_seq.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/ref/variadic_to_seq.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,32 @@
+<html>
+<head>
+ <title>BOOST_PP_VARIADIC_TO_SEQ</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+<div style="margin-left: 0px;"> The <b>BOOST_PP_VARIADIC_TO_SEQ</b> variadic macro
+converts a <i>variadic data</i> to a <i>seq</i>. </div>
+<h4> Usage </h4>
+<div class="code"> <b>BOOST_PP_VARIADIC_TO_SEQ</b>(<i>...</i>) <sup>(v)</sup><br>
+ </div>
+<h4> Arguments </h4>
+<dl><dt>...<br>
+</dt>
+ <dd> The <i>variadic data</i> to be converted. </dd>
+</dl>
+<h4> Requirements </h4>
+<div> <b>Header:</b> <boost/preprocessor/variadic/to_seq.hpp>
+</div>
+<h4> Sample Code </h4>
+<div>
+<pre>#include <boost/preprocessor/variadic/to_seq.hpp><br><br>BOOST_PP_VARIADIC_TO_SEQ(a, b, c) // expands to (a)(b)(c)<br></pre>
+</div>
+<hr size="1">
+<div style="margin-left: 0px;"> <i></i><i>© Copyright Edward Diener 2011</i> </div>
+<div style="margin-left: 0px;">
+<p><small>Distributed under the Boost Software License, Version 1.0.
+(See accompanying file LICENSE_1_0.txt
+or copy at www.boost.org/LICENSE_1_0.txt)</small></p>
+</div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/ref/variadic_to_tuple.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/ref/variadic_to_tuple.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,32 @@
+<html>
+<head>
+ <title>BOOST_PP_VARIADIC_TO_TUPLE</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+<div style="margin-left: 0px;"> The <b>BOOST_PP_VARIADIC_TO_TUPLE</b> variadic macro
+converts <i>variadic data </i>to a <i>tuple</i>. </div>
+<h4> Usage </h4>
+<div class="code"> <b>BOOST_PP_VARIADIC_TO_TUPLE</b>(<i>...</i>)<sup> (v)</sup> </div>
+<h4> Arguments </h4>
+<dl>
+ <dt>...<br>
+</dt>
+ <dd> The <i>variadic data</i> to be converted. </dd>
+</dl>
+<h4> Requirements </h4>
+<div> <b>Header:</b> <boost/preprocessor/variadic/to_tuple.hpp>
+</div>
+<h4> Sample Code </h4>
+<div>
+<pre>#include <boost/preprocessor/variadic/to_tuple.hpp><br><br>#define VAR_DATA a, b, c<br><br>BOOST_PP_VARIADIC_TO_TUPLE(VAR_DATA) // expands to (a, b, c)<br></pre>
+</div>
+<hr size="1">
+<div style="margin-left: 0px;"> <i></i><i>© Copyright Edward Diener 2011</i> </div>
+<div style="margin-left: 0px;">
+<p><small>Distributed under the Boost Software License, Version 1.0.
+(See accompanying file LICENSE_1_0.txt
+or copy at www.boost.org/LICENSE_1_0.txt)</small></p>
+</div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/ref/variadics.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/ref/variadics.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,30 @@
+<html>
+<head>
+ <title>BOOST_PP_VARIADICS</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+<div style="margin-left: 0px;"> The <b>BOOST_PP_VARIADICS </b>macro specifies whether variadic macro support exists.<br>
+</div>
+<h4>Usage</h4>
+<div class="code"><b>BOOST_PP_VARIADICS</b><br>
+</div><b>Remarks</b>
+<div> The macro is an <i>object-like</i> macro. It is used in internal
+code to check for the presence of variadic macro support. It can be
+used by the end-user for the same purpose. The macro equals 1 if
+variadic macros are supported and 0 if they are not. </div><b>Requirements</b>
+<div> <b>Header:</b> <boost/preprocessor/config/variadics.hpp>
+</div>
+<h4>Sample Code</h4>
+<div>
+<pre>#include <boost/preprocessor/config/variadics.hpp><br><br>#if BOOST_PP_VARIADICS<br>#define SOME_MACRO(...) // replacement list<br>#else<br>#define SOME_MACRO(param1,param2) // replacement list<br>#endif<br></pre>
+</div>
+<hr size="1">
+<div style="margin-left: 0px;"> <i></i><i>© Copyright Edward Diener 2011</i> </div>
+<div style="margin-left: 0px;">
+<p><small>Distributed under the Boost Software License, Version 1.0.
+(See accompanying file LICENSE_1_0.txt
+or copy at www.boost.org/LICENSE_1_0.txt)</small></p>
+</div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/ref/while.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/ref/while.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,116 @@
+<html>
+<head>
+ <title>BOOST_PP_WHILE</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_WHILE</b> macro represents a looping construct.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_WHILE</b>(<i>pred</i>, <i>op</i>, <i>state</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>pred</dt>
+ <dd>
+ A binary predicate of the form <i>pred</i>(<i>d</i>, <i>state</i>).
+ This predicate is expanded by <b>BOOST_PP_WHILE</b> with the next available
+ iteration <i>d</i> and the current <i>state</i>.
+ This predicate must expand to value in the range of <i>0</i> to <b>BOOST_PP_LIMIT_MAG</b>.
+ The construct continues to loop until this predicate returns <i>0</i>.
+ When this predicate returns <i>0</i>, <b>BOOST_PP_WHILE</b> returns the current <i>state</i>.
+ </dd>
+ <dt>op</dt>
+ <dd>
+ A binary operation of the form <i>op</i>(<i>d</i>, <i>state</i>).
+ This operation is expanded by <b>BOOST_PP_WHILE</b> with the next available
+ iteration <i>d</i> and the current <i>state</i>.
+ This macro is repeatedly applied to the <i>state</i>, each time producing a new <i>state</i>, until <i>pred</i> returns <i>0</i>.
+ </dd>
+ <dt>state</dt>
+ <dd>
+ The initial state.
+ Often this argument is a <i>tuple</i>.
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ This macro iterates <i>op</i>(<i>d</i>, <i>state</i>) while <i>pred</i>(<i>d</i>, <i>state</i>) is non-zero.
+ In other words expands to:
+ <div>
+ <i>op</i>(<i>d</i>, ... <i>op</i>(<i>d</i>, <i>op</i>(<i>d</i>, <i>state</i>)) ... ).
+ </div>
+ </div>
+ <div>
+ The <i>d</i> value that is passed to both <i>pred</i> and <i>op</i> represents the next available iteration.
+ Other macros that have <b>_D</b> suffix variants internally use <b>BOOST_PP_WHILE</b>--for example, <b>BOOST_PP_ADD</b> and <b>BOOST_PP_ADD_D</b>.
+ Using these <b>_D</b> versions is not strictly necessary, but passing the <i>d</i> value (that passed to <i>pred</i> or <i>op</i>) to these macros allows them to reenter <b>BOOST_PP_WHILE</b> with maximum efficiency.
+ </div>
+ <div>
+ To directly use this <i>d</i> value, rather than simply passing it to another macro, see <b>BOOST_PP_WHILE_<i>d</i></b>.
+ </div>
+ <div>
+ Previously, this macro could not be used recursively inside <b>BOOST_PP_WHILE</b>.
+ This limitation no longer exists, as the library can automatically detect the next available iteration.
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li>BOOST_PP_LIMIT_MAG</li>
+ <li>BOOST_PP_WHILE_d</li>
+ </ul>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <boost/preprocessor/control/while.hpp>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+#include <boost/preprocessor/arithmetic/add.hpp>
+#include <boost/preprocessor/control/while.hpp>
+#include <boost/preprocessor/tuple/elem.hpp>
+
+#define PRED(n, state) BOOST_PP_TUPLE_ELEM(2, 1, state)
+
+#define OP(d, state) \
+ OP_D( \
+ d, \
+ BOOST_PP_TUPLE_ELEM(2, 0, state), \
+ BOOST_PP_TUPLE_ELEM(2, 1, state) \
+ ) \
+ /**/
+
+#define OP_D(d, res, c) \
+ ( \
+ BOOST_PP_ADD_D( \
+ d, \
+ res, \
+ BOOST_PP_DEC(c) \
+ ), \
+ BOOST_PP_DEC(c) \
+ ) \
+ /**/
+
+#define SUMMATION(n) \
+ BOOST_PP_TUPLE_ELEM( \
+ 2, 0, \
+ BOOST_PP_WHILE(PRED, OP, (n, n)) \
+ ) \
+ /**/
+
+SUMMATION(3) // expands to 6
+SUMMATION(4) // expands to 10
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/ref/while_d.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/ref/while_d.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,129 @@
+<html>
+<head>
+ <title>BOOST_PP_WHILE_d</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_WHILE_<i>d</i></b> macro represents a reentry into the <b>BOOST_PP_WHILE</b> looping construct.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_WHILE_</b> ## <i>d</i>(<i>pred</i>, <i>op</i>, <i>state</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>d</dt>
+ <dd>
+ The next available <b>BOOST_PP_WHILE</b> iteration.
+ </dd>
+ <dt>pred</dt>
+ <dd>
+ A binary predicate of the form <i>pred</i>(<i>d</i>, <i>state</i>).
+ This predicate is expanded by <b>BOOST_PP_WHILE</b> with the next available
+ iteration <i>d</i> and the current <i>state</i>.
+ This predicate must expand to value in the range of <i>0</i> to <b>BOOST_PP_LIMIT_MAG</b>.
+ The construct continues to loop until this predicate returns <i>0</i>.
+ When this predicate returns <i>0</i>, <b>BOOST_PP_WHILE</b> returns the current <i>state</i>.
+ </dd>
+ <dt>op</dt>
+ <dd>
+ A binary operation of the form <i>op</i>(<i>d</i>, <i>state</i>).
+ This operation is expanded by <b>BOOST_PP_WHILE</b> with the next available
+ iteration <i>d</i> and the current <i>state</i>.
+ This macro is repeatedly applied to the <i>state</i>, each time producing a new <i>state</i>, until <i>pred</i> returns <i>0</i>.
+ </dd>
+ <dt>state</dt>
+ <dd>
+ The initial state.
+ Often this argument is a <i>tuple</i>.
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ This macro iterates <i>op</i>(<i>d</i>, <i>state</i>) while <i>pred</i>(<i>d</i>, <i>state</i>) is non-zero.
+ In other words expands to:
+ <div>
+ <i>op</i>(<i>d</i>, ... <i>op</i>(<i>d</i>, <i>op</i>(<i>d</i>, <i>state</i>)) ... ).
+ </div>
+ </div>
+ <div>
+ At certain times, it may be necessary to perform the concatenation with <b>BOOST_PP_CAT</b> rather than the preprocessor token-pasting operator.
+ This happens when the <i>d</i> value is a macro invocation itself.
+ It needs a delay to allow it to expand.
+ The syntax in such a scenario becomes:
+ <div>
+ <b>BOOST_PP_CAT</b>(<b>BOOST_PP_WHILE_</b>, <i>d</i>)(<i>pred</i>, <i>op</i>, <i>state</i>).
+ </div>
+ </div>
+ <div>
+ Previously, it was possible to concatenate <i>d</i> directly to <b>BOOST_PP_WHILE</b> (without the trailing underscore).
+ This is no longer supported.
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li>BOOST_PP_CAT</li>
+ <li>BOOST_PP_LIMIT_MAG</li>
+ <li>BOOST_PP_WHILE</li>
+ </ul>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <boost/preprocessor/control/while.hpp>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+#include <boost/preprocessor/arithmetic/add.hpp>
+#include <boost/preprocessor/arithmetic/dec.hpp>
+#include <boost/preprocessor/array/elem.hpp>
+#include <boost/preprocessor/array/size.hpp>
+#include <boost/preprocessor/control/while.hpp>
+#include <boost/preprocessor/tuple/elem.hpp>
+
+#define PRED(d, data) BOOST_PP_TUPLE_ELEM(3, 1, data)
+
+#define OP(d, data) \
+ OP_D( \
+ d, \
+ BOOST_PP_TUPLE_ELEM(3, 0, data), \
+ BOOST_PP_TUPLE_ELEM(3, 1, data), \
+ BOOST_PP_TUPLE_ELEM(3, 2, data) \
+ ) \
+ /**/
+
+#define OP_D(d, res, i, array) \
+ ( \
+ BOOST_PP_ADD_D( \
+ d, res, \
+ BOOST_PP_ARRAY_ELEM(BOOST_PP_DEC(i), array)), \
+ BOOST_PP_DEC(i), \
+ array \
+ ) \
+ /**/
+
+#define ACCUMULATE_D(d, array) \
+ BOOST_PP_TUPLE_ELEM( \
+ 3, 0, \
+ BOOST_PP_WHILE_ ## d( \
+ PRED, OP, \
+ (0, BOOST_PP_ARRAY_SIZE(array), array) \
+ ) \
+ ) \
+ /**/
+
+#define ARRAY (4, (1, 2, 3, 4))
+
+ACCUMULATE_D(1, ARRAY)// expands to 10
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/ref/wstringize.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/ref/wstringize.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,49 @@
+<html>
+<head>
+ <title>BOOST_PP_WSTRINGIZE</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_WSTRINGIZE</b> macro wide stringizes its argument after it has been expanded.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_WSTRINGIZE</b>(<i>text</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>text</dt>
+ <dd>
+ The text to be converted to a wide string literal.
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ The preprocessor stringizing operator (<b>#</b>) prevents arguments from expanding.
+ This macro allows its argument to expand before it is stringized.
+ </div>
+<!-- <h4>See Also</h4> -->
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <boost/preprocessor/wstringize.hpp>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+#include <boost/preprocessor/wstringize.hpp>
+
+BOOST_PP_WSTRINGIZE(some text) // expands to L"some text"
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/ref/xor.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/ref/xor.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,64 @@
+<html>
+<head>
+ <title>BOOST_PP_XOR</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_XOR</b> macro expands to the logical <i>XOR</i> of its operands.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_XOR</b>(<i>p</i>, <i>q</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>p</dt>
+ <dd>
+ The left operand of the operation.
+ Valid values range from <i>0</i> to <b>BOOST_PP_LIMIT_MAG</b>.
+ </dd>
+ <dt>q</dt>
+ <dd>
+ The right operand of the operation.
+ Valid values range from <i>0</i> to <b>BOOST_PP_LIMIT_MAG</b>.
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ If either <i>p</i> or <i>q</i> is non-zero exclusively, this macro expands to <i>1</i>.
+ Otherwise, it expands to <i>0</i>.
+ </div>
+ <div>
+ This macro performs a boolean conversion on each operand before performing the logical <i>XOR</i> operation.
+ If that conversion is not necessary, use <b>BOOST_PP_BITXOR</b> instead.
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li>BOOST_PP_BITXOR</li>
+ <li>BOOST_PP_LIMIT_MAG</li>
+ </ul>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <boost/preprocessor/logical/xor.hpp>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+#include <boost/preprocessor/logical/xor.hpp>
+
+BOOST_PP_XOR(4, 3) // expands to 0
+BOOST_PP_XOR(5, 0) // expands to 1
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/styles.css
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/styles.css 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,87 @@
+a {
+ color: black;
+ font-weight: normal;
+}
+a.na:link, a.na:visited {
+ color: #dddddd;
+ text-decoration: line-through;
+}
+a:link, a:visited, a:active {
+ color: gray;
+ text-decoration: none;
+}
+a.local {
+ font-weight: bold;
+}
+a:hover, a.na:hover {
+ color: blue;
+}
+body {
+ color: black; background-color: white;
+}
+.code {
+ color: black; background-color: #dddddd;
+ letter-spacing: 1px;
+ border: 1px solid; border-color: black;
+ padding-left: 12px; padding-right: 12px; padding-top: 5px; padding-bottom: 5px;
+ margin-left: 20px;
+}
+dd {
+ padding-left: 40px;
+ margin-left: 0px; margin-bottom: 10px;
+}
+div {
+ margin-top: 10px; margin-bottom: 10px; margin-left: 20px;
+}
+dl {
+ margin-top: 0px; margin-bottom: 0px;
+}
+dt {
+ font-style: italic;
+ padding-left: 20px;
+ margin-top: 10px;
+}
+h4, h5 {
+ margin-top: 10px; margin-bottom: 10px;
+}
+hr {
+ margin-top: 0px; margin-bottom: 0px;
+}
+.incompatibility {
+ color: red;
+}
+.indent {
+ margin-top: 0px; margin-bottom: 0px;
+}
+pre {
+ letter-spacing: 1px;
+ padding: 0px;
+ margin: 0px;
+}
+pre a:hover {
+ color: orange;
+}
+s {
+ color: #dddddd;
+}
+.sig {
+ font-style: italic;
+ color: #aaaaaa;
+ text-align: right;
+}
+span {
+ display: block;
+ margin: 0px;
+}
+ul {
+ margin-top: 10px; margin-bottom: 10px; margin-left: 20px;
+ padding-left: 17px;
+}
+
+/*
+© Copyright Housemarque Oy 2002
+© Copyright Paul Mensonides 2002
+Distributed under the Boost Software License, Version 1.0.
+(See accompanying file LICENSE_1_0.txt or copy at
+http://www.boost.org/LICENSE_1_0.txt)
+*/
Added: branches/pplib/v2/libs/preprocessor/doc/syntax.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/syntax.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,307 @@
+<html>
+ <head>
+ <title>syntax.html</title>
+ <link rel="stylesheet" type="text/css" href="styles.css">
+ </head>
+ <body>
+ <h4>Identifiers for Syntax Highlighting</h4>
+ <div>
+ <!-- A -->
+ <br>BOOST_PP_ADD
+ <br>BOOST_PP_ADD_D
+ <br>BOOST_PP_AND
+ <br>BOOST_PP_APPLY
+ <br>BOOST_PP_ARRAY_DATA
+ <br>BOOST_PP_ARRAY_ELEM
+ <br>BOOST_PP_ARRAY_ENUM
+ <br>BOOST_PP_ARRAY_INSERT
+ <br>BOOST_PP_ARRAY_INSERT_D
+ <br>BOOST_PP_ARRAY_POP_BACK
+ <br>BOOST_PP_ARRAY_POP_BACK_Z
+ <br>BOOST_PP_ARRAY_POP_FRONT
+ <br>BOOST_PP_ARRAY_POP_FRONT_Z
+ <br>BOOST_PP_ARRAY_PUSH_BACK
+ <br>BOOST_PP_ARRAY_PUSH_FRONT
+ <br>BOOST_PP_ARRAY_REMOVE
+ <br>BOOST_PP_ARRAY_REMOVE_D
+ <br>BOOST_PP_ARRAY_REPLACE
+ <br>BOOST_PP_ARRAY_REPLACE_D
+ <br>BOOST_PP_ARRAY_REVERSE
+ <br>BOOST_PP_ARRAY_SIZE
+ <br>BOOST_PP_ARRAY_TO_LIST
+ <br>BOOST_PP_ARRAY_TO_SEQ
+ <br>BOOST_PP_ARRAY_TO_TUPLE
+ <br>BOOST_PP_ASSERT
+ <br>BOOST_PP_ASSERT_MSG
+ <br>BOOST_PP_ASSIGN_SLOT
+ <!-- B -->
+ <br>BOOST_PP_BITAND
+ <br>BOOST_PP_BITNOR
+ <br>BOOST_PP_BITOR
+ <br>BOOST_PP_BITXOR
+ <br>BOOST_PP_BOOL
+ <!-- C -->
+ <br>BOOST_PP_CAT
+ <br>BOOST_PP_COMMA
+ <br>BOOST_PP_COMMA_IF
+ <br>BOOST_PP_COMPL
+ <br>BOOST_PP_CONFIG_EXTENDED_LINE_INFO
+ <br>BOOST_PP_COUNTER
+ <!-- D -->
+ <br>BOOST_PP_DEC
+ <br>BOOST_PP_DEDUCE_D
+ <br>BOOST_PP_DEDUCE_R
+ <br>BOOST_PP_DEDUCE_Z
+ <br>BOOST_PP_DIV
+ <br>BOOST_PP_DIV_D
+ <!-- E -->
+ <br>BOOST_PP_EMPTY
+ <br>BOOST_PP_ENUM
+ <br>BOOST_PP_ENUM_BINARY_PARAMS
+ <br>BOOST_PP_ENUM_BINARY_PARAMS_Z
+ <br>BOOST_PP_ENUM_PARAMS
+ <br>BOOST_PP_ENUM_PARAMS_WITH_A_DEFAULT
+ <br>BOOST_PP_ENUM_PARAMS_WITH_DEFAULTS
+ <br>BOOST_PP_ENUM_PARAMS_Z
+ <br>BOOST_PP_ENUM_SHIFTED
+ <br>BOOST_PP_ENUM_SHIFTED_BINARY_PARAMS
+ <br>BOOST_PP_ENUM_SHIFTED_BINARY_PARAMS_Z
+ <br>BOOST_PP_ENUM_SHIFTED_PARAMS
+ <br>BOOST_PP_ENUM_SHIFTED_PARAMS_Z
+ <br>BOOST_PP_ENUM_SHIFTED_
+ <br>BOOST_PP_ENUM_TRAILING
+ <br>BOOST_PP_ENUM_TRAILING_BINARY_PARAMS
+ <br>BOOST_PP_ENUM_TRAILING_BINARY_PARAMS_Z
+ <br>BOOST_PP_ENUM_TRAILING_PARAMS
+ <br>BOOST_PP_ENUM_TRAILING_PARAMS_Z
+ <br>BOOST_PP_ENUM_TRAILING_
+ <br>BOOST_PP_ENUM_
+ <br>BOOST_PP_EQUAL
+ <br>BOOST_PP_EQUAL_D
+ <br>BOOST_PP_EXPAND
+ <br>BOOST_PP_EXPR_IF
+ <br>BOOST_PP_EXPR_IIF
+ <!-- F -->
+ <br>BOOST_PP_FILENAME_1
+ <br>BOOST_PP_FILENAME_2
+ <br>BOOST_PP_FILENAME_3
+ <br>BOOST_PP_FILENAME_4
+ <br>BOOST_PP_FILENAME_5
+ <br>BOOST_PP_FOR
+ <br>BOOST_PP_FOR_
+ <br>BOOST_PP_FRAME_FINISH
+ <br>BOOST_PP_FRAME_FLAGS
+ <br>BOOST_PP_FRAME_ITERATION
+ <br>BOOST_PP_FRAME_START
+ <!-- G -->
+ <br>BOOST_PP_GREATER
+ <br>BOOST_PP_GREATER_D
+ <br>BOOST_PP_GREATER_EQUAL
+ <br>BOOST_PP_GREATER_EQUAL_D
+ <!-- I -->
+ <br>BOOST_PP_IDENTITY
+ <br>BOOST_PP_IF
+ <br>BOOST_PP_IIF
+ <br>BOOST_PP_INC
+ <br>BOOST_PP_INCLUDE_SELF
+ <br>BOOST_PP_INDIRECT_SELF
+ <br>BOOST_PP_INTERCEPT
+ <br>BOOST_PP_IS_ITERATING
+ <br>BOOST_PP_IS_SELFISH
+ <br>BOOST_PP_ITERATE
+ <br>BOOST_PP_ITERATION
+ <br>BOOST_PP_ITERATION_DEPTH
+ <br>BOOST_PP_ITERATION_FINISH
+ <br>BOOST_PP_ITERATION_FLAGS
+ <br>BOOST_PP_ITERATION_LIMITS
+ <br>BOOST_PP_ITERATION_PARAMS_1
+ <br>BOOST_PP_ITERATION_PARAMS_2
+ <br>BOOST_PP_ITERATION_PARAMS_3
+ <br>BOOST_PP_ITERATION_PARAMS_4
+ <br>BOOST_PP_ITERATION_PARAMS_5
+ <br>BOOST_PP_ITERATION_START
+ <!-- L -->
+ <br>BOOST_PP_LESS
+ <br>BOOST_PP_LESS_D
+ <br>BOOST_PP_LESS_EQUAL
+ <br>BOOST_PP_LESS_EQUAL_D
+ <br>BOOST_PP_LIMIT_DIM
+ <br>BOOST_PP_LIMIT_FOR
+ <br>BOOST_PP_LIMIT_ITERATION
+ <br>BOOST_PP_LIMIT_ITERATION_DIM
+ <br>BOOST_PP_LIMIT_MAG
+ <br>BOOST_PP_LIMIT_REPEAT
+ <br>BOOST_PP_LIMIT_SEQ
+ <br>BOOST_PP_LIMIT_SLOT_COUNT
+ <br>BOOST_PP_LIMIT_SLOT_SIG
+ <br>BOOST_PP_LIMIT_TUPLE
+ <br>BOOST_PP_LIMIT_VARIADIC
+ <br>BOOST_PP_LIMIT_WHILE
+ <br>BOOST_PP_LINE
+ <br>BOOST_PP_LIST_APPEND
+ <br>BOOST_PP_LIST_APPEND_D
+ <br>BOOST_PP_LIST_AT
+ <br>BOOST_PP_LIST_AT_D
+ <br>BOOST_PP_LIST_CAT
+ <br>BOOST_PP_LIST_CAT_D
+ <br>BOOST_PP_LIST_CONS
+ <br>BOOST_PP_LIST_ENUM
+ <br>BOOST_PP_LIST_ENUM_R
+ <br>BOOST_PP_LIST_FILTER
+ <br>BOOST_PP_LIST_FILTER_D
+ <br>BOOST_PP_LIST_FIRST
+ <br>BOOST_PP_LIST_FIRST_N
+ <br>BOOST_PP_LIST_FIRST_N_D
+ <br>BOOST_PP_LIST_FOLD_LEFT
+ <br>BOOST_PP_LIST_FOLD_LEFT_2ND
+ <br>BOOST_PP_LIST_FOLD_LEFT_2ND_D
+ <br>BOOST_PP_LIST_FOLD_LEFT_
+ <br>BOOST_PP_LIST_FOLD_LEFT_D
+ <br>BOOST_PP_LIST_FOLD_RIGHT
+ <br>BOOST_PP_LIST_FOLD_RIGHT_2ND
+ <br>BOOST_PP_LIST_FOLD_RIGHT_2ND_D
+ <br>BOOST_PP_LIST_FOLD_RIGHT_
+ <br>BOOST_PP_LIST_FOLD_RIGHT_D
+ <br>BOOST_PP_LIST_FOR_EACH
+ <br>BOOST_PP_LIST_FOR_EACH_I
+ <br>BOOST_PP_LIST_FOR_EACH_I_R
+ <br>BOOST_PP_LIST_FOR_EACH_PRODUCT
+ <br>BOOST_PP_LIST_FOR_EACH_PRODUCT_R
+ <br>BOOST_PP_LIST_FOR_EACH_R
+ <br>BOOST_PP_LIST_IS_CONS
+ <br>BOOST_PP_LIST_IS_NIL
+ <br>BOOST_PP_LIST_NIL
+ <br>BOOST_PP_LIST_REST
+ <br>BOOST_PP_LIST_REST_N
+ <br>BOOST_PP_LIST_REST_N_D
+ <br>BOOST_PP_LIST_REVERSE
+ <br>BOOST_PP_LIST_REVERSE_D
+ <br>BOOST_PP_LIST_SIZE
+ <br>BOOST_PP_LIST_SIZE_D
+ <br>BOOST_PP_LIST_TO_ARRAY
+ <br>BOOST_PP_LIST_TO_SEQ
+ <br>BOOST_PP_LIST_TO_TUPLE
+ <br>BOOST_PP_LIST_TO_TUPLE_R
+ <br>BOOST_PP_LIST_TRANSFORM
+ <br>BOOST_PP_LIST_TRANSFORM_D
+ <br>BOOST_PP_LOCAL_ITERATE
+ <br>BOOST_PP_LOCAL_LIMITS
+ <br>BOOST_PP_LOCAL_MACRO
+ <br>BOOST_PP_LPAREN
+ <br>BOOST_PP_LPAREN_IF
+ <!-- M -->
+ <br>BOOST_PP_MAX
+ <br>BOOST_PP_MAX_D
+ <br>BOOST_PP_MIN
+ <br>BOOST_PP_MIN_D
+ <br>BOOST_PP_MOD
+ <br>BOOST_PP_MOD_D
+ <br>BOOST_PP_MUL
+ <br>BOOST_PP_MUL_D
+ <!-- N -->
+ <br>BOOST_PP_NIL
+ <br>BOOST_PP_NOR
+ <br>BOOST_PP_NOT
+ <br>BOOST_PP_NOT_EQUAL
+ <br>BOOST_PP_NOT_EQUAL_D
+ <!-- O -->
+ <br>BOOST_PP_OR
+ <br>BOOST_PP_OVERLOAD
+ <!-- R -->
+ <br>BOOST_PP_RELATIVE_FINISH
+ <br>BOOST_PP_RELATIVE_FLAGS
+ <br>BOOST_PP_RELATIVE_ITERATION
+ <br>BOOST_PP_RELATIVE_START
+ <br>BOOST_PP_REPEAT
+ <br>BOOST_PP_REPEAT_1ST
+ <br>BOOST_PP_REPEAT_2ND
+ <br>BOOST_PP_REPEAT_3RD
+ <br>BOOST_PP_REPEAT_FROM_TO
+ <br>BOOST_PP_REPEAT_FROM_TO_1ST
+ <br>BOOST_PP_REPEAT_FROM_TO_2ND
+ <br>BOOST_PP_REPEAT_FROM_TO_3RD
+ <br>BOOST_PP_REPEAT_FROM_TO_D
+ <br>BOOST_PP_REPEAT_FROM_TO_D_
+ <br>BOOST_PP_REPEAT_FROM_TO_
+ <br>BOOST_PP_REPEAT_
+ <br>BOOST_PP_RPAREN
+ <br>BOOST_PP_RPAREN_IF
+ <!-- S -->
+ <br>BOOST_PP_SEQ_CAT
+ <br>BOOST_PP_SEQ_CAT_S
+ <br>BOOST_PP_SEQ_ELEM
+ <br>BOOST_PP_SEQ_ENUM
+ <br>BOOST_PP_SEQ_FILTER
+ <br>BOOST_PP_SEQ_FILTER_S
+ <br>BOOST_PP_SEQ_FIRST_N
+ <br>BOOST_PP_SEQ_FOLD_LEFT
+ <br>BOOST_PP_SEQ_FOLD_LEFT_
+ <br>BOOST_PP_SEQ_FOLD_RIGHT
+ <br>BOOST_PP_SEQ_FOLD_RIGHT_
+ <br>BOOST_PP_SEQ_FOR_EACH
+ <br>BOOST_PP_SEQ_FOR_EACH_I
+ <br>BOOST_PP_SEQ_FOR_EACH_I_R
+ <br>BOOST_PP_SEQ_FOR_EACH_PRODUCT
+ <br>BOOST_PP_SEQ_FOR_EACH_PRODUCT_R
+ <br>BOOST_PP_SEQ_FOR_EACH_R
+ <br>BOOST_PP_SEQ_HEAD
+ <br>BOOST_PP_SEQ_INSERT
+ <br>BOOST_PP_SEQ_NIL
+ <br>BOOST_PP_SEQ_POP_BACK
+ <br>BOOST_PP_SEQ_POP_FRONT
+ <br>BOOST_PP_SEQ_PUSH_BACK
+ <br>BOOST_PP_SEQ_PUSH_FRONT
+ <br>BOOST_PP_SEQ_REMOVE
+ <br>BOOST_PP_SEQ_REPLACE
+ <br>BOOST_PP_SEQ_REST_N
+ <br>BOOST_PP_SEQ_REVERSE
+ <br>BOOST_PP_SEQ_REVERSE_S
+ <br>BOOST_PP_SEQ_SIZE
+ <br>BOOST_PP_SEQ_SUBSEQ
+ <br>BOOST_PP_SEQ_TAIL
+ <br>BOOST_PP_SEQ_TO_ARRAY
+ <br>BOOST_PP_SEQ_TO_LIST
+ <br>BOOST_PP_SEQ_TO_TUPLE
+ <br>BOOST_PP_SEQ_TRANSFORM
+ <br>BOOST_PP_SEQ_TRANSFORM_S
+ <br>BOOST_PP_SLOT
+ <br>BOOST_PP_STRINGIZE
+ <br>BOOST_PP_SUB
+ <br>BOOST_PP_SUB_D
+ <!-- T -->
+ <br>BOOST_PP_TUPLE_EAT
+ <br>BOOST_PP_TUPLE_ELEM
+ <br>BOOST_PP_TUPLE_ENUM
+ <br>BOOST_PP_TUPLE_REM
+ <br>BOOST_PP_TUPLE_REM_CTOR
+ <br>BOOST_PP_TUPLE_REVERSE
+ <br>BOOST_PP_TUPLE_SIZE
+ <br>BOOST_PP_TUPLE_TO_ARRAY
+ <br>BOOST_PP_TUPLE_TO_LIST
+ <br>BOOST_PP_TUPLE_TO_SEQ
+ <!-- U -->
+ <br>BOOST_PP_UPDATE_COUNTER
+ <!-- V -->
+ <br>BOOST_PP_VALUE
+ <br>BOOST_PP_VARIADIC_ELEM
+ <br>BOOST_PP_VARIADIC_SIZE
+ <br>BOOST_PP_VARIADIC_TO_ARRAY
+ <br>BOOST_PP_VARIADIC_TO_LIST
+ <br>BOOST_PP_VARIADIC_TO_SEQ
+ <br>BOOST_PP_VARIADIC_TO_TUPLE
+ <!-- W -->
+ <br>BOOST_PP_WHILE
+ <br>BOOST_PP_WHILE_
+ <br>BOOST_PP_WSTRINGIZE
+ <!-- X -->
+ <br>BOOST_PP_XOR
+ </div>
+<!--
+© Copyright Housemarque Oy 2002
+© Copyright Paul Mensonides 2002
+Distributed under the Boost Software License, Version 1.0.
+(See accompanying file LICENSE_1_0.txt or copy at
+http://www.boost.org/LICENSE_1_0.txt)
+-->
+ </body>
+</html>
\ No newline at end of file
Added: branches/pplib/v2/libs/preprocessor/doc/terms.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/terms.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,23 @@
+<html>
+<head>
+ <title>terms.html</title>
+ <link rel="stylesheet" type="text/css" href="styles.css">
+ <base target="desc">
+</head>
+<body>
+<h4>Terminology <small>[back]</small></h4>
+<ul>
+ <li>evaluated parameter</li>
+ <li>named external argument</li>
+</ul>
+
+<!--
+© Copyright Housemarque Oy 2002
+© Copyright Paul Mensonides 2002
+Distributed under the Boost Software License, Version 1.0.
+(See accompanying file LICENSE_1_0.txt or copy at
+http://www.boost.org/LICENSE_1_0.txt)
+-->
+
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/terms/evaluated.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/terms/evaluated.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,27 @@
+<html>
+<head>
+ <title>Evaluated Parameter</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <h4>Evaluated Parameter</h4>
+ <div>
+ An <i>evaluated parameter</i> is a numeric value that is evaluated by the library as a constant expression.
+ This means that the expression can include simple arithmetic, logical, and condition expressions.
+ It also means that the value of the parameter no longer depends on the source of the parameter.
+ In other words, if the value is dependent on some macro, it will no longer be dependent on that macro after it is evaluated.
+ This disables the lazy-evaluation that the preprocessor normallly uses.
+ </div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/terms/named_external.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/terms/named_external.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,25 @@
+<html>
+<head>
+ <title>Named External Argument</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <h4>Named External Argument</h4>
+ <div>
+ A <i>named external argument</i> is an argument to a macro that is <i>included</i>.
+ There is no way to pass arguments to a file directly, so they must be passed to files in the form of macros with known names that are defined by the user.
+ Every time that the library uses this idiom, the file that is included automatically undefines the macro in order to better simulate <i>normal</i> parameters.
+ </div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/title.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/title.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,22 @@
+<html>
+<head>
+ <title>title.html</title>
+ <link rel="stylesheet" type="text/css" href="styles.css">
+</head>
+<body>
+ <h4>Introduction</h4>
+ <div>
+ An excerpt from <i>C++ Template Metaprogramming: Concepts, Tools, and Techniques from Boost and Beyond</i> by Dave Abrahams and Aleksey Gurtovoy has been made available online.
+ This excerpt contains a basic introduction to the Preprocessor library and preprocessor metaprogramming which may help users new to the library and users interested in seeing some of the facilities offered by the library.
+ </div>
+
+<!--
+© Copyright Housemarque Oy 2002
+© Copyright Paul Mensonides 2002
+Distributed under the Boost Software License, Version 1.0.
+(See accompanying file LICENSE_1_0.txt or copy at
+http://www.boost.org/LICENSE_1_0.txt)
+-->
+
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/top.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/top.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,32 @@
+<html>
+ <head>
+ <title>top.html</title>
+ <link rel="stylesheet" type="text/css" href="styles.css">
+ <style>
+ td { height: 60px; width: 100%; text-align: center; vertical-align: middle;
+ margin: 0px; padding: 0px; font-weight: bold; }
+ </style>
+ </head>
+ <body style="margin: 0px; padding: 0px;">
+ <table style="width: 100%;">
+ <tr align="center">
+ <td>
+ The Boost
+ Library
+ <br>
+ Preprocessor
+ Subset for <font color="red">C/C++</font>
+ </td>
+ </tr>
+ </table>
+
+<!--
+© Copyright Housemarque Oy 2002
+© Copyright Paul Mensonides 2002
+Distributed under the Boost Software License, Version 1.0.
+(See accompanying file LICENSE_1_0.txt or copy at
+http://www.boost.org/LICENSE_1_0.txt)
+-->
+
+ </body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/topics.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/topics.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,27 @@
+<html>
+<head>
+ <title>topics.html</title>
+ <link rel="stylesheet" type="text/css" href="styles.css">
+ <base target="desc">
+</head>
+<body>
+<h4>Topics <small>[back]</small></h4>
+<ul>
+ <li>motivation</li>
+ <li>known problems of the preprocessor </li><li>techniques</li>
+ <li>incompatibilities</li>
+ <li>reentrancy</li>
+ <li>local iteration</li>
+ <li>file iteration</li>
+ <li>evaluated slots</li>
+ <li>variadic macros</li>
+</ul>
+<!--
+© Copyright Housemarque Oy 2002
+© Copyright Paul Mensonides 2002
+Distributed under the Boost Software License, Version 1.0.
+(See accompanying file LICENSE_1_0.txt or copy at
+http://www.boost.org/LICENSE_1_0.txt)
+-->
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/topics/evaluated_slots.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/topics/evaluated_slots.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,157 @@
+<html>
+<head>
+ <title>evaluated_slots.html</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+<h4>Evaluated Slots</h4>
+<div>
+ The evaluated slot mechanism is a tool to fully evaluate a constant integral expression and avoid the lazy evaluation normally performed by the preprocessor.
+</div>
+<h4>Tutorial</h4>
+<div>
+ In order to understand the use of such a mechanism, I will start with a simple file-iteration example.
+ Consider the following scenario....
+</div>
+<div class ="code"><pre>
+for (int i = 0; i < 10; ++i) {
+ for (int j = 0; j < i; ++j) {
+ // ... use i and j
+ }
+}
+</pre></div>
+<div>
+ The above is a simple runtime model of the following multidimensional file-iteration....
+</div>
+<div class="code"><pre>
+// file.hpp
+#if !BOOST_PP_IS_ITERATING
+ #ifndef FILE_HPP_
+ #define FILE_HPP_
+
+ #include <boost/preprocessor/iteration/iterate.hpp>
+
+ #define BOOST_PP_ITERATION_PARAMS_1 (3, (0, 9, "file.hpp"))
+ #include BOOST_PP_ITERATE()
+
+ #endif // FILE_HPP_
+#elif BOOST_PP_ITERATION_DEPTH() == 1
+ #define I BOOST_PP_ITERATION()
+
+ #define BOOST_PP_ITERATION_PARAMS_2 (3, (0, I, "file.hpp"))
+ #include BOOST_PP_ITERATE()
+
+ #undef I
+#elif BOOST_PP_ITERATION_DEPTH() == 2
+ #define J BOOST_PP_ITERATION()
+
+ // use I and J
+
+ #undef J
+#endif
+</pre></div>
+<div>
+ There is a problem with the code above.
+ The writer expected <i>I</i> to refer the previous iteration frame.
+ However, that is not the case.
+ When the user refers to <i>I</i>, he is actually referring to <b>BOOST_PP_ITERATION</b>(),
+ not the value of <b>BOOST_PP_ITERATION</b>() at the point of definition.
+ Instead, it refers to exactly the same value to which <i>J</i> refers.
+</div>
+<div>
+ The problem is that the preprocessor always evaluates everything with lazy evaluation.
+ To solve the problem, we need <i>I</i> to be <i>evaluated</i> here:
+</div>
+<div class="code"><pre>
+// ...
+#elif BOOST_PP_ITERATION_DEPTH() == 1
+ #define I BOOST_PP_ITERATION()
+// ...
+</pre></div>
+<div>
+ Fortunately, the library offers a mechanism to do just that: evaluated slots.
+ The following code uses this mechanism to "fix" the example above...
+</div>
+<div class="code"><pre>
+// ...
+#elif BOOST_PP_ITERATION_DEPTH() == 1
+ #define BOOST_PP_VALUE BOOST_PP_ITERATION()
+ #include BOOST_PP_ASSIGN_SLOT(1)
+ #define I BOOST_PP_SLOT(1)
+// ...
+</pre></div>
+<div>
+ There are two steps to the assignment of an evaluated slot.
+ First, the user must define the <i>named external argument</i> <b>BOOST_PP_VALUE</b>.
+ This value must be an integral constant expression.
+ Second, the user must <i>include</i> <b>BOOST_PP_ASSIGN_SLOT</b>(<i>x</i>), where <i>x</i> is the particular slot to be assigned to (<i>1</i> to <b>BOOST_PP_LIMIT_SLOT_COUNT</b>).
+ This will evaluate <b>BOOST_PP_VALUE</b> and assign the result to the slot at index <i>x</i>.
+</div>
+<div>
+ To retrieve a slot's value, the user must use <b>BOOST_PP_SLOT</b>(<i>x</i>).
+</div>
+<div>
+ In the case above, <i>I</i> is <i>still</i> lazily evaluated.
+ However, it now evaluates to <b>BOOST_PP_SLOT</b>(<i>1</i>).
+ This value <i>will not change</i> unless there is a subsequent call to <b>BOOST_PP_ASSIGN_SLOT</b>(<i>1</i>).
+</div>
+<h4>Advanced Techniques</h4>
+<div>
+ The slot mechanism can also be used to perform calculations:
+</div>
+<div class="code"><pre>
+#include <iostream>
+
+#include <boost/preprocessor/slot/slot.hpp>
+#include <boost/preprocessor/stringize.hpp>
+
+#define X() 4
+
+#define BOOST_PP_VALUE 1 + 2 + 3 + X()
+#include BOOST_PP_ASSIGN_SLOT(1)
+
+#undef X
+
+int main(void) {
+ std::cout
+ << BOOST_PP_STRINGIZE(BOOST_PP_SLOT(1))
+ << &std::endl;
+ return 0;
+}
+</pre></div>
+<div>
+ In essence, anything that can be evaluated in an #if (or #elif) preprocessor directive is available <i>except</i> the <i>defined</i> operator.
+</div>
+<div>
+ It is even possible to use a particular slot itself while reassigning it:
+</div>
+<div class="code"><pre>
+#define BOOST_PP_VALUE 20
+#include BOOST_PP_ASSIGN_SLOT(1)
+
+#define BOOST_PP_VALUE 2 * BOOST_PP_SLOT(1)
+#include BOOST_PP_ASSIGN_SLOT(1)
+
+BOOST_PP_SLOT(1) // 40
+</pre></div>
+<h4>See Also</h4>
+<ul>
+ <li>BOOST_PP_ASSIGN_SLOT</li>
+ <li>BOOST_PP_LIMIT_SLOT_COUNT</li>
+ <li>BOOST_PP_SLOT</li>
+ <li>BOOST_PP_VALUE</li>
+</ul>
+<div class="sig">- Paul Mensonides</div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/topics/file_iteration.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/topics/file_iteration.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,1044 @@
+<html>
+ <head>
+ <title>file_iteration.html</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+ </head>
+ <body>
+ <h4>
+ File Iteration
+ </h4>
+ <div>
+ File iteration is a complex, but powerful, vertical repetition construct.
+ It repeatedly includes a <i>file</i> for each number in a user-specified range.
+ </div>
+ <h4>
+ Tutorial
+ </h4>
+ <div>
+ This mechanism requires two pieces of information to operate: a range to
+ iterate over and a file to include on each iteration. It can optionally
+ take a third piece of information that represents flags used to discriminate
+ between different iterations of the same file. This information is
+ obtained by the mechanism through one or two <i>named external arguments</i>.
+ These arguments are specified as user-defined macros named <b>BOOST_PP_ITERATION_PARAMS_<i>x</i></b>
+ or the combination of <b>BOOST_PP_FILENAME_<i>x</i></b> and <b>BOOST_PP_ITERATION_LIMITS</b>.
+ </div>
+ <div>
+ <b>BOOST_PP_ITERATION_LIMITS</b> specifies the range of values to iterate
+ over. It <i>must</i> expand to a <i>tuple</i> containing two elements--a
+ lower and upper bound. Both the upper and lower bounds must be numeric
+ values in the range of <i>0</i> to <b>BOOST_PP_LIMIT_ITERATION</b>. For
+ example, if the user wishes a file to be included for numbers ranging from <i>0</i>
+ to <i>10</i>, <b>BOOST_PP_ITERATION_LIMITS</b> would be defined like this:
+ </div>
+ <div class="code">
+ <pre>
+#define BOOST_PP_ITERATION_LIMITS (0, 10)
+</pre>
+ </div>
+ <div>
+ Note that there is whitespace after the name of the macro. The macro <i>does
+ not</i> take <i>two</i> arguments. In the case above, if there was
+ no whitespace, a preprocessing error would occur because <i>0</i> and <i>10</i>
+ are invalid identifiers.
+ </div>
+ <div>
+ Both the upper and lower bounds specified in the <b>BOOST_PP_ITERATION_LIMITS</b>
+ macro are <i>evaluated parameters</i>. This implies that they can include
+ simple arithmetic or logical expressions. For instance, the above
+ definition could easily have been written like this:
+ </div>
+ <div class="code">
+ <pre>
+#define N() 5
+#define BOOST_PP_ITERATION_LIMITS (0, N() + 5)
+</pre>
+ </div>
+ <div>
+ Because of this, if the whitespace after the macro name is elided, it is
+ possible for the definition to be syntactically valid:
+ </div>
+ <div class="code">
+ <pre>
+#define A 0
+#define B 10
+#define BOOST_PP_ITERATION_LIMITS(A, B)
+ // note: no whitespace ^
+</pre>
+ </div>
+ <div>
+ If this happens, an error will occur inside the mechanism when it attempts to
+ use this macro. The error messages that result may be obscure, so always
+ remember to include the whitespace. A <i>correct</i> version of the above
+ looks like this:
+ </div>
+ <div class="code">
+ <pre>
+#define A 0
+#define B 10
+#define BOOST_PP_ITERATION_LIMITS (A, B)
+ // note: has whitespace ^
+</pre>
+ </div>
+ <div>
+ <b>BOOST_PP_FILENAME_<i>x</i></b> specifies the file to iterate over. The <i>x</i>
+ is a placeholder for the dimension of iteration. (For now, we'll assume
+ this is <i>1</i>--i.e. the first dimension, so we are actually dealing with <b>BOOST_PP_FILENAME_1</b>.)
+ This macro must expand to a valid filename--in quotes or in angle brackets
+ depending on how the file is accessed:
+ </div>
+ <div class="code">
+ <pre>
+#define BOOST_PP_FILENAME_1 "file.h"
+// -or-
+#define BOOST_PP_FILENAME_1 <file.h>
+</pre>
+ </div>
+ <div>
+ All that we need now to perform a simple file iteration is to invoke the
+ mechanism:
+ </div>
+ <div class="code">
+ <pre>
+??=include BOOST_PP_ITERATE()
+</pre>
+ </div>
+ <div>
+ (The <code>??=</code> token is a trigraph for <code>#</code>. I use the
+ trigraph to make it clear that I am <i>including</i> a file rather than
+ defining or expanding a macro, but it is not necessary. Even the digraph
+ version, <code>%:</code>, could be used. Some compilers do not readily
+ accept trigraphs and digraphs, so keep that in mind. Other than that, use
+ whichever one you prefer.)
+ </div>
+ <div>
+ So, if we wish to iterate "file.h" from <i>1</i> to <i>10</i>, we just need to
+ put the pieces together:
+ </div>
+ <div class="code">
+ <pre>
+#define BOOST_PP_ITERATION_LIMITS (1, 10)
+#define BOOST_PP_FILENAME_1 "file.h"
+??=include BOOST_PP_ITERATE()
+</pre>
+ </div>
+ <div>
+ The above code has the effect of including "file.h" ten times in
+ succession.
+ </div>
+ <div>
+ Alternately, both the range and the file to iterate over can be expressed in
+ one macro, <b>BOOST_PP_ITERATION_PARAMS_<i>x</i></b>. Once again, the <i>x</i>
+ is a placeholder for the dimension of iteration--which we'll assume is <i>1</i>.
+ This macro must expand to an <i>array</i> that includes the lower bound, upper
+ bound, filename, and optional flags (in that order).
+ </div>
+ <div class="code">
+ <pre>
+#define BOOST_PP_ITERATION_PARAMS_1 (3, (1, 10, "file.h"))
+??=include BOOST_PP_ITERATE()
+</pre>
+ </div>
+ <div>
+ This has the same effect as the previous version. Only one of these two
+ ways to specify the parameters can be used at a time. (The reason that
+ there are two different methods has to do with dimensional abstraction which
+ I'll get to later.)
+ </div>
+ <div>
+ There is nothing particularly useful about including a file ten times.
+ The difference is that the current macro state changes each time. For
+ example, the current "iteration value" is available with <b>BOOST_PP_ITERATION</b>().
+ If "file.h" is defined like this...
+ </div>
+ <div class="code">
+ <pre>
+// file.h
+template<> struct sample<BOOST_PP_ITERATION()> { };
+</pre>
+ </div>
+ <div>
+ ...and it is iterated as follows...
+ </div>
+ <div class="code">
+ <pre>
+template<int> struct sample;
+
+#define BOOST_PP_ITERATION_PARAMS_1 (3, (1, 5, "file.h"))
+??=include BOOST_PP_ITERATE()
+</pre>
+ </div>
+ <div>
+ ...the result is different each time:
+ </div>
+ <div>
+ <pre>
+template<> struct sample<1> { };
+template<> struct sample<2> { };
+template<> struct sample<3> { };
+template<> struct sample<4> { };
+template<> struct sample<5> { };
+</pre>
+ </div>
+ <div>
+ There is no reason that a file can't iterate over itself. This has the
+ advantage of keeping the code together. The problem is that you have to
+ discriminate the "regular" section of the file from the iterated section of the
+ file. The library provides the <b>BOOST_PP_IS_ITERATING</b> macro to help
+ in this regard. This macro is defined as <i>1</i> if an iteration is in
+ progress. For example, to merge the contents of "file.h" into the file
+ that iterates it:
+ </div>
+ <div class="code">
+ <pre>
+// sample.h
+#if !BOOST_PP_IS_ITERATING
+
+ #ifndef SAMPLE_H
+ #define SAMPLE_H
+
+ #include <boost/preprocessor/iteration/iterate.hpp>
+
+ template<int> struct sample;
+
+ #define BOOST_PP_ITERATION_PARAMS_1 (3, (1, 5, "sample.h"))
+ ??=include BOOST_PP_ITERATE()
+
+ #endif // SAMPLE_H
+
+#else
+
+ template<> struct sample<BOOST_PP_ITERATION()> { };
+
+#endif
+</pre>
+ </div>
+ <div>
+ Using the same file like this raises another issue. What happens when a
+ file performs two separate file iterations over itself? This is the
+ purpose of the optional flags parameter. It is used to discriminate
+ between separate iterations.
+ </div>
+ <div class="code">
+ <pre>
+// sample.h
+#if !BOOST_PP_IS_ITERATING
+
+ #ifndef SAMPLE_H
+ #define SAMPLE_H
+
+ #include <boost/preprocessor/iteration/iterate.hpp>
+ #include <boost/preprocessor/repetition/enum_params.hpp>
+ #include <boost/preprocessor/repetition/enum_shifted_params.hpp>
+
+ template<int> struct sample;
+
+ #define BOOST_PP_ITERATION_PARAMS_1 (4, (1, 5, "sample.h", 1))
+ ??=include BOOST_PP_ITERATE()
+
+ template<class T, class U> struct typelist_t {
+ typedef T head;
+ typedef U tail;
+ };
+
+ template<int> struct typelist;
+ struct null_t;
+
+ template<> struct typelist<1> {
+ template<class T0> struct args {
+ typedef typelist_t<T0, null_t> type;
+ };
+ };
+
+ #ifndef TYPELIST_MAX
+ #define TYPELIST_MAX 50
+ #endif
+
+ #define BOOST_PP_ITERATION_PARAMS_1 (4, (2, TYPELIST_MAX, "sample.h", 2))
+ ??=include BOOST_PP_ITERATE()
+
+ #endif // SAMPLE_H
+
+#elif BOOST_PP_ITERATION_FLAGS() == 1
+
+ template<> struct sample<BOOST_PP_ITERATION()> { };
+
+#elif BOOST_PP_ITERATION_FLAGS() == 2
+
+ #define N BOOST_PP_ITERATION()
+
+ template<> struct typelist<N> {
+ template<BOOST_PP_ENUM_PARAMS(N, class T)> struct args {
+ typedef typelist_t<
+ T0,
+ typename typelist<N - 1>::args<BOOST_PP_ENUM_SHIFTED_PARAMS(N, T)>::type
+ > type;
+ };
+ };
+
+ #undef N
+
+#endif
+</pre>
+ </div>
+ <div>
+ Notice the use of the "flags" parameter (which is accessed through <b>BOOST_PP_ITERATION_FLAGS</b>()).
+ It discriminates between our recurring <code>sample</code> iteration and a
+ typelist linearization iteration.
+ </div>
+ <div>
+ The second iteration illustrates the power of the file iteration
+ mechanism. It generates typelist linearizations of the form <code>typelist<3>::args<int,
+ double, char>::type</code>.
+ </div>
+ <div>
+ Actually, to continue the typelist example, with the help of another iteration
+ we can <i>fully</i> linearize typelist creation....
+ </div>
+ <div class="code">
+ <pre>
+// extract.h
+#if !BOOST_PP_IS_ITERATING
+
+ #ifndef EXTRACT_H
+ #define EXTRACT_H
+
+ #include <boost/preprocessor/iteration/iterate.hpp>
+ #include <boost/preprocessor/repetition/enum.hpp>
+ #include <boost/preprocessor/repetition/enum_params.hpp>
+ #include <boost/preprocessor/repetition/enum_trailing_params.hpp>
+
+ // certain types such as "void" can't be function argument types
+
+ template<class T> struct incomplete {
+ typedef T type;
+ };
+
+ template<class T> struct strip_incomplete {
+ typedef T type;
+ };
+
+ template<class T> struct strip_incomplete<incomplete<T> > {
+ typedef T type;
+ };
+
+ template<template<int> class output, class func_t> struct extract;
+
+ #ifndef EXTRACT_MAX
+ #define EXTRACT_MAX 50
+ #endif
+
+ #define BOOST_PP_ITERATION_PARAMS_1 (3, (1, EXTRACT_MAX, "extract.h"))
+ ??=include BOOST_PP_ITERATE()
+
+ #endif // EXTRACT_H
+
+#else
+
+ #define N BOOST_PP_ITERATION()
+ #define STRIP(z, n, _) \
+ typename strip_incomplete<T ## n>::type \
+ /**/
+
+ template<template<int> class output, class R BOOST_PP_ENUM_TRAILING_PARAMS(N, class T)>
+ struct extract<R (BOOST_PP_ENUM_PARAMS(N, T))> {
+ typedef typename output<N>::template args<BOOST_PP_ENUM(N, STRIP, nil)>::type type;
+ };
+
+ #undef STRIP
+ #undef N
+
+#endif
+</pre>
+ </div>
+ <div>
+ Now we can define a helper macro to finish the job:
+ </div>
+ <div class="code">
+ <pre>
+#define TYPELIST(args) extract<typelist, void args>::type
+
+typedef TYPELIST((int, double, incomplete<void>)) xyz;
+</pre>
+ </div>
+ <div>
+ There are two minor caveats with this result. First, certain types like <code>void</code>
+ can't be the type of an argument, so they have to be wrapped with <code>incomplete<T></code>.
+ Second, the necessary double parenthesis is annoying. If and when C++
+ gets C99's variadic macros, <code>TYPELIST</code> can be redefined:
+ </div>
+ <div class="code">
+ <pre>
+#define TYPELIST(...) extract<typelist, void (__VA_ARGS__)>::type
+
+typedef TYPELIST(int, double, short) xyz;
+</pre>
+ </div>
+ <div>
+ Note also that both the lower and upper bounds of an iteration are also
+ accessible inside an iteration with <b>BOOST_PP_ITERATION_START</b>() and <b>BOOST_PP_ITERATION_FINISH</b>().
+ </div>
+ <div>
+ It is my hope that the explanation and examples presented here demonstrate the
+ power of file iteration. Even so, this is just the beginning. The
+ file iteration mechanism also defines a full suite of facilities to support
+ multidimensional iteration.
+ </div>
+ <h4>
+ Multiple Dimensions
+ </h4>
+ <div>
+ The file iteration mechanism supports up to <b>BOOST_PP_LIMIT_ITERATION_DIM</b>
+ dimensions. The first dimension (i.e. the outermost) we have already used
+ above. In order to use the second dimension (inside the first), we simply
+ have to replace the placeholder <i>x</i> with <i>2</i> instead of <i>1</i>.
+ </div>
+ <div class="code">
+ <pre>
+#define BOOST_PP_ITERATION_PARAMS_2 /* ... */
+ ^
+</pre>
+ </div>
+ <div>
+ ...or...
+ </div>
+ <div class="code">
+ <pre>
+#define BOOST_PP_FILENAME_2 /* ... */
+ ^
+</pre>
+ </div>
+ <div>
+ Each dimension must be used <i>in order</i> starting with <i>1</i>.
+ Therefore, the above can <i>only</i> be valid immediately inside the first
+ dimension.
+ </div>
+ <div>
+ At this point, further explanation is necessary regarding <b>BOOST_PP_ITERATION</b>,
+ <b>BOOST_PP_ITERATION_START</b>, and <b>BOOST_PP_ITERATION_FINISH</b>. <b>BOOST_PP_ITERATION</b>()
+ expands to the iteration value of the <i>current</i> dimension--regardless of
+ what dimension that is. Likewise, <b>BOOST_PP_ITERATION_START</b>() and <b>BOOST_PP_ITERATION_FINISH</b>()
+ expand to the lower and upper bounds of the <i>current</i> dimension.
+ Using the following pseudo-code as reference:
+ </div>
+ <div class="code">
+ <pre>
+for (int i = start(1); i <= finish(1); ++i) {
+ // A
+ for (int j = start(2); j <= finish(2); ++j) {
+ // B
+ }
+ // C
+}
+</pre>
+ </div>
+ <div>
+ At point <i>A</i>, <b>BOOST_PP_ITERATION</b>() refers to <code>i</code>. <b>BOOST_PP_ITERATION_START</b>()
+ and <b>BOOST_PP_ITERATION_FINISH</b>() refer to <code>start(1)</code> and <code>finish(1)</code>
+ respectively. At point <i>B</i>, however, <b>BOOST_PP_ITERATION</b>()
+ refers to <code>j</code>--the <i>current</i> iteration value at point <i>B</i>.
+ The same is true for <b>BOOST_PP_ITERATION_START</b>() which refers to <code>start(2)</code>,
+ etc..
+ </div>
+ <div>
+ If separate files are used for each dimension, then there are no major
+ problems, and using multiple dimensions is straightforward. However, if
+ more than one dimension is located in the same file, they need to be
+ distinguished from one another. The file iteration mechanism provides the
+ macro <b>BOOST_PP_ITERATION_DEPTH</b> for this purpose:
+ </div>
+ <div class="code">
+ <pre>
+// file.h
+#if !BOOST_PP_IS_ITERATING
+
+ #ifndef FILE_H
+ #define FILE_H
+
+ #include <boost/preprocessor/iteration/iterate.hpp>
+
+ #define BOOST_PP_ITERATION_PARAMS_1 (3, (1, 2, "file.h"))
+ ??=include BOOST_PP_ITERATE()
+
+ #endif // FILE_H
+
+#elif BOOST_PP_ITERATION_DEPTH() == 1
+
+ // A
+ + BOOST_PP_ITERATION()
+
+ #define BOOST_PP_ITERATION_PARAMS_2 (3, (1, 2, "file.h"))
+ ??=include BOOST_PP_ITERATE()
+
+ // C
+
+#elif BOOST_PP_ITERATION_DEPTH() == 2
+
+ // B
+ - BOOST_PP_ITERATION()
+
+#endif
+</pre>
+ </div>
+ <div>
+ This will result to the following:
+ </div>
+ <div>
+ <pre>
++ 1
+- 1
+- 2
++ 2
+- 1
+- 2
+</pre>
+ </div>
+ <div>
+ Multiple dimensions raise another question. How does one access the state
+ of dimensions <i>other</i> than the current dimension? In other words,
+ how does one access <code>i</code> at point <i>A</i>? Because of the
+ preprocessor's lazy evaluation, this <i>doesn't</i> work....
+ </div>
+ <div class="code">
+ <pre>
+// ...
+
+#elif BOOST_PP_ITERATION_DEPTH() == 1
+
+ #define I BOOST_PP_ITERATION()
+
+ #define BOOST_PP_ITERATION_PARAMS_2 (3, (1, 2, "file.h"))
+ ??=include BOOST_PP_ITERATE()
+
+ #undef I
+
+#elif BOOST_PP_ITERATION_DEPTH() == 2
+
+ #define J BOOST_PP_ITERATION()
+
+ // use I and J
+
+ #undef I
+
+#endif
+</pre>
+ </div>
+ <div>
+ The problem here is that <code>I</code> refers to <b>BOOST_PP_ITERATION</b>(),
+ not to the <i>value</i> of <b>BOOST_PP_ITERATION</b>() at the point of <code>I</code>'s
+ definition.
+ </div>
+ <div>
+ The library provides macros to access these values in two ways--absolutely or
+ relatively. The first variety accesses a value of a specific iteration
+ frame (i.e. dimension). To access the iteration value of the first
+ dimension--from <i>any</i> dimension--<b>BOOST_PP_FRAME_ITERATION</b>(<i>1</i>)
+ is used. To access the iteration value of the second dimension, <b>BOOST_PP_FRAME_ITERATION</b>(<i>2</i>)
+ is used, and so on.
+ </div>
+ <div>
+ There are also frame versions to access the lower bound, the upper bound, and
+ the flags of a dimension: <b>BOOST_PP_FRAME_START</b>, <b>BOOST_PP_FRAME_FINISH</b>,
+ and <b>BOOST_PP_FRAME_FLAGS</b>.
+ </div>
+ <div>
+ So, to fix the last example, we modify the definition of <code>I</code>....
+ </div>
+ <div class="code">
+ <pre>
+// ...
+
+#elif BOOST_PP_ITERATION_DEPTH() == 1
+
+ #define I BOOST_PP_FRAME_ITERATION(1)
+
+// ...
+</pre>
+ </div>
+ <div>
+ The library also provides macros to access values in dimensions <i>relative</i>
+ to the current dimension (e.g. the <i>previous</i> dimension). These
+ macros take an argument that is interpreted as an offset from the current
+ frame. For example, <b>BOOST_PP_RELATIVE_ITERATION</b>(<i>1</i>) always
+ refers to the outer dimension immediately previous to the current
+ dimension. An argument of <i>0</i> is interpreted as an offset of <i>0</i>
+ which causes <b>BOOST_PP_RELATIVE_ITERATION</b>(<i>0</i>) to be equivalent to <b>BOOST_PP_ITERATION</b>().
+ <b>BOOST_PP_RELATIVE_ITERATION</b>(<i>2</i>) refers to the iteration value of
+ the dimension immediately preceding the dimension that precedes the current
+ dimension.
+ </div>
+ <div>
+ The lower and upper bounds of a dimension can be accessed in this fashion as
+ well with <b>BOOST_PP_RELATIVE_START</b> and <b>BOOST_PP_RELATIVE_FINISH</b>.
+ The flags of a relative dimension can be accessed with <b>BOOST_PP_RELATIVE_FLAGS</b>.
+ </div>
+ <h4>
+ Relativity
+ </h4>
+ <div>
+ I mentioned earlier that there is a reason that there are two ways to
+ parametize the mechanism. The reason is dimensional abstraction. In
+ certain situations the dimension is unknown by the code that is being
+ iterated--possibly because the code is reused at multiple, different
+ dimensions. If that code needs to iterate again, it has to define the
+ right parameters (based on the dimension) for the mechanism to consume.
+ </div>
+ <div>
+ All of the macro state maintained by the mechanism can be referred to in an
+ indirect way relative to a dimension. This is the purpose of the <b>BOOST_PP_RELATIVE_</b>
+ accessors.
+ </div>
+ <div>
+ Likewise, the user-defined <i>named external arguments</i> can be defined this
+ way as well--<i>except</i> the name of the file to iterate. Because the
+ lower and upper boundaries are <i>evaluated</i> by the mechanism, the
+ implementation no longer needs the macro <b>BOOST_PP_ITERATION_LIMITS</b>, and
+ the identifier can be reused for each dimension of iteration.
+ </div>
+ <div>
+ Unfortunately, the filename is a different story. The library has no way
+ to evaluate the quoted (or angle-bracketed) text. Therefore, it has to
+ use a different macro for each dimension. That is the purpose of the <b>BOOST_PP_FILENAME_<i>x</i></b>
+ macros. They exist to isolate the only non-abstractable piece of data
+ required by the mechanism.
+ </div>
+ <div>
+ In order to define the filename in an abstract fashion, you need to do
+ something like this:
+ </div>
+ <div class="code">
+ <pre>
+#define UNIQUE_TO_FILE "some_file.h"
+
+#if BOOST_PP_ITERATION_DEPTH() == 0
+ #define BOOST_PP_FILENAME_1 UNIQUE_TO_FILE
+#elif BOOST_PP_ITERATION_DEPTH() == 1
+ #define BOOST_PP_FILENAME_2 UNIQUE_TO_FILE
+#elif BOOST_PP_ITERATION_DEPTH() == 2
+ #define BOOST_PP_FILENAME_3 UNIQUE_TO_FILE
+
+// ... up to BOOST_PP_LIMIT_ITERATION_DIM
+
+#endif
+</pre>
+ </div>
+ <div>
+ The intent is to avoid having to do this for anything but the filename.
+ If this needs to be done more than once in a file (<b>BOOST_PP_FILENAME_<i>x</i></b>
+ is undefined by the mechanism after it is used.), consider using a separate
+ file to make the proper definition:
+ </div>
+ <div class="code">
+ <pre>
+# // detail/define_file_h.h
+# ifndef FILE_H
+# error FILE_H is not defined
+# endif
+#
+# if BOOST_PP_ITERATION_DEPTH() == 0
+# define BOOST_PP_FILENAME_1 FILE_H
+# elif BOOST_PP_ITERATION_DEPTH() == 1
+# define BOOST_PP_FILENAME_2 FILE_H
+# elif BOOST_PP_ITERATION_DEPTH() == 2
+# define BOOST_PP_FILENAME_3 FILE_H
+# elif BOOST_PP_ITERATION_DEPTH() == 3
+# define BOOST_PP_FILENAME_4 FILE_H
+# elif BOOST_PP_ITERATION_DEPTH() == 4
+# define BOOST_PP_FILENAME_5 FILE_H
+# else
+# error unsupported iteration dimension
+# endif
+</pre>
+ </div>
+ <div>
+ And then use it like this....
+ </div>
+ <div class="code">
+ <pre>
+// file.h
+#if !BOOST_PP_IS_ITERATING
+
+ #ifndef FILE_H
+ #define FILE_H "file.h"
+
+ #define BOOST_PP_ITERATION_LIMITS (1, 10)
+ #include "detail/define_file_h.h"
+
+ ??=include BOOST_PP_ITERATE()
+
+#endif // FILE_H
+
+#else
+ // iterated portion
+#endif
+</pre>
+ </div>
+ <div>
+ With a little effort like this, it is possible to maintain the abstraction
+ without the code bloat that would otherwise be required. Unfortunately,
+ this is not a completely general solution as it would need to be done for each
+ unique filename, but it is better than nothing.
+ </div>
+ <h4>
+ Conclusion
+ </h4>
+ <div>
+ That about covers the facilities that are available from the mechanism.
+ Using these facilities, let's implement a <code>function_traits</code> template
+ to demonstrate a full-fledge use of the mechanism.
+ </div>
+ <h4>
+ Function Traits - An Involved Example
+ </h4>
+ <div>
+ Implementing a comprehensive <code>function_traits</code> template metafunction
+ requires the use of every major part of the file iteration mechanism.
+ </div>
+ <div>
+ (This example makes no attempt of work around compiler deficiencies and exists
+ only to illustrate the mechanism.)
+ </div>
+ <div>
+ The result should have the following features:
+ </div>
+ <ul>
+ <li>
+ return type</li>
+ <li>
+ number and types of parameters</li>
+ <li>
+ whether or not the type is a pointer-to-function, reference-to-function,
+ pointer-to-member-function, or a plain function type</li>
+ <li>
+ whether the type has an ellipsis</li>
+ <li>
+ if not a pointer-to-member-function, the equivalent pointer-to-function,
+ reference-to-function, and function type</li>
+ <li>
+ otherwise, the pointer-to-member type, the class type to which it refers, and
+ whether it is const and/or volatile qualified</li>
+ </ul>
+ <div>
+ There are a myriad of ways that this can be implemented. I'll give a
+ brief summary here of what is happening in the implementation below.
+ </div>
+ <div>
+ The implementation inherently has to deal with function arity. Therefore,
+ at minimum, we need to iterate over function arities and define partial
+ specializations of the primary template <code>function_traits</code>. The
+ situation is further complicated by variadic functions (i.e. functions with an
+ ellipsis). Therefore, for every arity, we need a variadic version as
+ well.
+ </div>
+ <div>
+ We also need to handle pointers-to-member-functions. This implies that we
+ have to handle not just arity and variadics, but also cv-qualifications.
+ </div>
+ <div>
+ For the sake of clarity, the implementation below handles function types and
+ pointers-to-member-functions separately. They could be merged, but the
+ result would be significantly messier.
+ </div>
+ <div>
+ To handle function types, the implementation below iterates over function
+ arities. For each arity, it iterates over each parameter to provide
+ access to each individually. It then re-includes itself to define a
+ variadic specialization of the same arity. It performs the rough
+ equivalent of the following pseudo-code:
+ </div>
+ <div class="code">
+ <pre>
+void make_spec(int i, bool variadic) {
+ :open function_traits<i, variadic>
+ for (int j = 0; j < i; ++j) {
+ :parameter<j>
+ }
+ :close
+ if (!variadic) {
+ make_spec(i, true);
+ }
+ return;
+}
+
+void function_types(int max_arity) {
+ for (int i = 0; i <= max_arity; ++i) {
+ make_spec(i, false);
+ }
+ return;
+}
+</pre>
+ </div>
+ <div>
+ The implementation of pointers-to-member-functions is a bit different.
+ First, it iterates over cv-qualifiers. For each cv-qualifier, it iterates
+ over function arities. For each function arity, it iterates again over
+ each parameter. It then re-includes itself to define a variadic
+ specialization of the same arity....
+ </div>
+ <div class="code">
+ <pre>
+void make_spec(int j, const char* cv, bool variadic) {
+ :open function_traits<j, cv, variadic>
+ for (int k = 0; k < j; ++k) {
+ parameter<k>
+ }
+ :close
+ if (!variadic) {
+ make_spec(j, cv, true);
+ }
+ return;
+}
+
+void gen_arities(const char* cv, int max_arity) {
+ for (int j = 0; j <= max_arity; ++j) {
+ make_spec(j, cv, false);
+ }
+ return;
+}
+
+void pointers_to_members(int max_arity) {
+ static const char* cv_qualifiers[] = { "", "const", "volatile", "const volatile" };
+ for (int i = 0; i < 4; ++i) {
+ gen_arities(cv_qualifiers[i], max_arity);
+ }
+ return;
+}
+</pre>
+ </div>
+ <div>
+ Here is the complete implementation. This example represents the power of
+ the file iteration mechanism as well as the library in general, so follow it
+ carefully if you wish to fully understand what the mechanism does....
+ </div>
+ <div class="code">
+ <pre>
+// function_traits.hpp
+
+#if !BOOST_PP_IS_ITERATING
+
+#ifndef FUNCTION_TRAITS_HPP
+#define FUNCTION_TRAITS_HPP
+
+#include <boost/preprocessor/cat.hpp>
+#include <boost/preprocessor/facilities/apply.hpp>
+#include <boost/preprocessor/iteration/iterate.hpp>
+#include <boost/preprocessor/iteration/self.hpp>
+#include <boost/preprocessor/repetition/enum_params.hpp>
+#include <boost/preprocessor/repetition/enum_trailing_params.hpp>
+#include <boost/preprocessor/tuple/elem.hpp>
+
+// enable user-expansion
+#ifndef FUNCTION_TRAITS_MAX_ARITY
+ #define FUNCTION_TRAITS_MAX_ARITY 15
+#endif
+
+namespace detail {
+
+// avoid replication of "default" values
+struct function_traits_base {
+ static const bool is_plain = false;
+ static const bool is_pointer = false;
+ static const bool is_reference = false;
+ static const bool is_member = false;
+};
+
+} // detail
+
+// no definition
+template<class> struct function_traits;
+
+// extract ellipsis state
+#define ELLIPSIS(n) \
+ BOOST_PP_APPLY( \
+ BOOST_PP_TUPLE_ELEM(2, n, ELLIPSIS_I) \
+ ) \
+ /**/
+
+// iterate over function arities for function types
+#define BOOST_PP_ITERATION_PARAMS_1 \
+ (4, (0, FUNCTION_TRAITS_MAX_ARITY, "function_traits.hpp", 0)) \
+ /**/
+??=include BOOST_PP_ITERATE()
+
+// obtain a cv-qualifier by index
+#define QUALIFIER(n) \
+ BOOST_PP_APPLY( \
+ BOOST_PP_TUPLE_ELEM( \
+ 4, n, \
+ (BOOST_PP_NIL, (const), (volatile), (const volatile)) \
+ ) \
+ ) \
+ /**/
+
+// iterate over cv-qualifiers for pointers-to-members
+#define BOOST_PP_ITERATION_PARAMS_1 \
+ (4, (0, 3, "function_traits.hpp", 1)) \
+ /**/
+??=include BOOST_PP_ITERATE()
+
+// remove temporary macros
+#undef QUALIFIER
+#undef ELLIPSIS
+
+// overriding jumper for pointers-to-functions
+template<class T> struct function_traits<T*> : function_traits<T> {
+ static const bool is_plain = false;
+ static const bool is_pointer = true;
+};
+
+// overriding jumper for references-to-functions
+template<class T> struct function_traits<T&> : function_traits<T> {
+ static const bool is_plain = false;
+ static const bool is_reference = true;
+};
+
+// eof
+#endif // FUNCTION_TRAITS_HPP
+
+// specializations for function types
+#elif BOOST_PP_ITERATION_DEPTH() == 1 \
+ && BOOST_PP_ITERATION_FLAGS() == 0 \
+ /**/
+
+ // define ellipsis state
+ #if BOOST_PP_IS_SELFISH
+ #define ELLIPSIS_I ((true), (...))
+ #else
+ #define ELLIPSIS_I ((false), BOOST_PP_NIL)
+ #endif
+
+ #define N BOOST_PP_ITERATION()
+
+ template<class R BOOST_PP_ENUM_TRAILING_PARAMS(N, class T)>
+ struct function_traits<R (BOOST_PP_ENUM_PARAMS(N, T) ELLIPSIS(1))>
+ : detail::function_traits_base {
+ static const bool is_plain = true;
+ typedef R function_type(BOOST_PP_ENUM_PARAMS(N, T) ELLIPSIS(1));
+ typedef function_type* pointer_type;
+ typedef function_type& reference_type;
+ static const bool has_ellipsis = ELLIPSIS(0);
+ typedef R return_type;
+ static const int parameter_count = N;
+ template<int, class D = int> struct parameter;
+ #if N
+ // iterate over parameters
+ #define BOOST_PP_ITERATION_PARAMS_2 \
+ (3, (0, N - 1, "function_traits.hpp")) \
+ /**/
+ ??=include BOOST_PP_ITERATE()
+ #endif
+ };
+
+ #undef N
+ #undef ELLIPSIS_I
+
+ // re-include this section for an ellipsis variant
+ #if !BOOST_PP_IS_SELFISH
+ #define BOOST_PP_INDIRECT_SELF "function_traits.hpp"
+ ??=include BOOST_PP_INCLUDE_SELF()
+ #endif
+
+// iteration over cv-qualifiers
+#elif BOOST_PP_ITERATION_DEPTH() == 1 \
+ && BOOST_PP_ITERATION_FLAGS() == 1 \
+ /**/
+
+ #define BOOST_PP_ITERATION_PARAMS_2 \
+ (3, (0, FUNCTION_TRAITS_MAX_ARITY, "function_traits.hpp")) \
+ /**/
+ ??=include BOOST_PP_ITERATE()
+
+// generate specializations for pointers-to-members
+#elif BOOST_PP_ITERATION_DEPTH() == 2 \
+ && BOOST_PP_FRAME_FLAGS(1) == 1 \
+
+ // define ellipsis state
+ #if BOOST_PP_IS_SELFISH
+ #define ELLIPSIS_I ((true), (...))
+ #else
+ #define ELLIPSIS_I ((false), BOOST_PP_NIL)
+ #endif
+
+ #define N BOOST_PP_ITERATION()
+ #define Q QUALIFIER(BOOST_PP_FRAME_ITERATION(1))
+
+ template<class R, class O BOOST_PP_ENUM_TRAILING_PARAMS(N, class T)>
+ struct function_traits<R (O::*)(BOOST_PP_ENUM_PARAMS(N, T) ELLIPSIS(1)) Q>
+ : detail::function_traits_base {
+ static const bool is_member = true;
+ typedef R (O::* pointer_to_member_type)(BOOST_PP_ENUM_PARAMS(N, T) ELLIPSIS(1)) Q;
+ typedef O class_type;
+ typedef Q O qualified_class_type;
+ static const bool has_ellipsis = ELLIPSIS(0);
+ static const bool is_const =
+ BOOST_PP_FRAME_ITERATION(1) == 1 || BOOST_PP_FRAME_ITERATION(1) == 3;
+ static const bool is_volatile =
+ BOOST_PP_FRAME_ITERATION(1) == 2 || BOOST_PP_FRAME_ITERATION(1) == 3;
+ typedef R return_type;
+ static const int parameter_count = N;
+ template<int, class D = int> struct parameter;
+ #if N
+ // iterate over parameters
+ #define BOOST_PP_ITERATION_PARAMS_3 \
+ (3, (0, N - 1, "function_traits.hpp")) \
+ /**/
+ ??=include BOOST_PP_ITERATE()
+ #endif
+ };
+
+ #undef Q
+ #undef N
+ #undef ELLIPSIS_I
+
+ // re-include this section for an ellipsis variant
+ #if !BOOST_PP_IS_SELFISH
+ #define BOOST_PP_INDIRECT_SELF "function_traits.hpp"
+ ??=include BOOST_PP_INCLUDE_SELF()
+ #endif
+
+// parameter specializations
+#else
+
+ #define X BOOST_PP_ITERATION()
+
+ template<class D> struct parameter<X, D> {
+ typedef BOOST_PP_CAT(T, X) type;
+ };
+
+ #undef X
+
+#endif
+</pre>
+ </div>
+ <div>
+ One problem that still exists is the lack of support for <code>throw</code> specifications.
+ There is no way that we can completely handle it anyway because we cannot
+ partially specialize on <code>throw</code> specifications. However, we
+ could accurately report the "actual" function type, etc., including the <code>throw</code>
+ specification (which the above implementation doesn't do, as it reconstructs
+ those types). If you like, you can figure out how to do that on your own
+ as an exercise.
+ </div>
+ <h4>
+ See Also
+ </h4>
+ <ul>
+ <li>
+ BOOST_PP_ITERATE</li>
+ </ul>
+ <div class="sig">
+ - Paul Mensonides
+ </div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+ </body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/topics/incompatible.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/topics/incompatible.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,140 @@
+<html>
+<head>
+ <title>incompatible.html</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <h4>Incompatibilities</h4>
+ <div>
+ There are several incompatibilities with the previous Boost release (1.28).
+ These fall into roughly three categories:
+ </div>
+ <ul>
+ <li>the horizontal repetition primitives based on <b>BOOST_PP_REPEAT</b></li>
+ <li>the reentrancy syntax</li>
+ <li><i>list</i> folding</li>
+ </ul>
+ <h4>Repetition Targets</h4>
+ <div>
+ First, and probably the most commonly used, is the target macros passed into <b>BOOST_PP_REPEAT</b> and the horizontal repetition contructs that use <b>BOOST_PP_REPEAT</b>.
+ This includes all of the <b>BOOST_PP_REPEAT_</b>* primitives and all of the <b>BOOST_PP_ENUM_</b>* primitives that require a target macro.
+ </div>
+ <div>
+ The incompatiblity is trivial, but it will require that the source be updated.
+ </div>
+ <div>
+ These target macros must now except a <i>third</i> parameter.
+ This extra parameter becomes the <i>first</i> parameter in every target macro.
+ It represents the next repetition dimension and brings <b>BOOST_PP_REPEAT</b> inline with rest of the library.
+ </div>
+ <div>
+ So, what once was:
+ </div>
+ <div class="code">
+ #define <i>macro</i>(<i>n</i>, <i>data</i>) ...<br>
+ <b>BOOST_PP_REPEAT</b>(<i>5</i>, <i>macro</i>, <i>data</i>)
+ </div>
+ <div>
+ ...is now:
+ </div>
+ <div class="code">
+ #define <i>macro</i>(<i>z</i>, <i>n</i>, <i>data</i>) ...<br>
+ <b>BOOST_PP_REPEAT</b>(<i>5</i>, <i>macro</i>, <i>data</i>)
+ </div>
+ <div>
+ This parameter can be used for highly efficient reentrance into the <b>BOOST_PP_REPEAT</b> mechanism.
+ However, it is not necessary to use it as the library can automatically detect the next available repetition dimension.
+ </div>
+ <h4>Dimensional Ordering</h4>
+ <div>
+ Because of this detection, however, it is unsafe to use <b>BOOST_PP_REPEAT_1ST</b>, <b>BOOST_PP_REPEAT_2ND</b>, and <b>BOOST_PP_REPEAT_3RD</b> out of order.
+ These macros bypass the <i>automatic-recursion</i> mechanism, and the <i>automatic-recursion</i> mechanism relies on macros being used in the proper order.
+ To clarify, if you use these bypass macros, the outer-most repetition <i>must</i> be <b>BOOST_PP_REPEAT_1ST</b>, then <b>BOOST_PP_REPEAT_2ND</b>, and finally <b>BOOST_PP_REPEAT_3RD</b>.
+ Any other usage is not supported by the library.
+ Sometimes it may work, and other times it won't.
+ </div>
+ <h4>Reentrancy Syntax</h4>
+ <div>
+ <i>Automatic-recursion</i> brings with it another issue as well. Previously, the reentrancy syntax for <b>BOOST_PP_WHILE</b> (and similarly for <b>BOOST_PP_FOR</b>) was:
+ </div>
+ <div class="code">
+ <b>BOOST_PP_WHILE</b> ## <i>d</i>(<i>pred</i>, <i>op</i>, <i>state</i>)
+ </div>
+ <div>
+ ...or:
+ </div>
+ <div class="code">
+ <b>BOOST_PP_CAT</b>(<b>BOOST_PP_WHILE</b>, <i>d</i>)(<i>pred</i>, <i>op</i>, <i>state</i>)
+ </div>
+ <div>
+ Under the <i>automatic-recursion</i> model, the <b>BOOST_PP_CAT</b> version breaks.
+ This is because <b>BOOST_PP_CAT</b> allows its arguments to expand prior to concatenation,
+ and <b>BOOST_PP_WHILE</b> is a macro that expands without arguments.
+ The library makes it appear that it takes three parameters, but that is the trick of <i>automatic-recursion</i>.
+ It works similarly to the following:
+ </div>
+ <div class="code">
+ #define A(x, y) ...<br>
+ #define B A<br>
+ // ...<br>
+ B(2, 3)
+ </div>
+ <div>
+ The syntax makes it look like the <i>B</i> macro above takes two arguments, but it doesn't.
+ The <i>automatic-recursion</i> mechanism works in this fashion, except that the "<i>B</i>" macro deduces the next available "<i>A</i>" macro.
+ </div>
+ <div>
+ Because some preprocessors are still slow, direct reentrancy (sans <i>automatic-recursion</i>) is still necessary in non-trivial cases.
+ Consequently, the library uses a new syntax to handle reentrancy:
+ </div>
+ <div class="code">
+ <b>BOOST_PP_FOR_</b> ## <i>r</i>(<i>state</i>, <i>pred</i>, <i>op</i>, <i>macro</i>)<br>
+ <b>BOOST_PP_REPEAT_</b> ## <i>z</i>(<i>count</i>, <i>macro</i>, <i>data</i>)<br>
+ <b>BOOST_PP_WHILE_</b> ## <i>d</i>(<i>pred</i>, <i>op</i>, <i>state</i>)
+ </div>
+ <h4>Folding</h4>
+ <div>
+ Previously, the <b>BOOST_PP_LIST_FOLD_RIGHT</b> macros' arguments were the reverse of <b>BOOST_PP_LIST_FOLD_LEFT</b>.
+ Also, the accumulation macro passed into <b>BOOST_PP_LIST_FOLD_RIGHT</b> was called with reversed parameters as well.
+ This discrepancy has been eliminated.
+ </div>
+ <div>
+ To illustrate, <b>BOOST_PP_LIST_FOLD_RIGHT</b> used to be used like this:
+ </div>
+ <div class="code">
+ #define <i>macro</i>(<i>d</i>, <u><i>elem</i></u>, <u><i>state</i></u>)<br>
+ <b>BOOST_PP_LIST_FOLD_RIGHT</b>(<i>macro</i>, <u><i>list</i></u>, <u><i>state</i></u>)
+ </div>
+ <div>
+ This signature has been replaced by...
+ </div>
+ <div class="code">
+ #define <i>macro</i>(<i>d</i>, <u><i>state</i></u>, <u><i>elem</i></u>)<br>
+ <b>BOOST_PP_LIST_FOLD_RIGHT</b>(<i>macro</i>, <u><i>state</i></u>, <u><i>list</i></u>)
+ </div>
+ <h4>Summary</h4>
+ <div>
+ The library has many new features not present in the 1.28 release, and this list does not attempt to enumerate them.
+ This is simply a list of things that <i>must</i> change for code to be compatible with this new release.
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li>BOOST_PP_FOR</li>
+ <li>BOOST_PP_LIST_FOLD_RIGHT</li>
+ <li>BOOST_PP_REPEAT</li>
+ <li>BOOST_PP_WHILE</li>
+ </ul>
+ <div class="sig">- Paul Mensonides</div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/topics/local_iteration.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/topics/local_iteration.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,156 @@
+<html>
+<head>
+ <title>local_iteration.html</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+<h4>Local Iteration</h4>
+<div>
+ Local iteration is a simple vertical repetition construct.
+ It expands a macro with each number in a user-specified range.
+ Each expansion is on a separate line.
+</div>
+<h4>Tutorial</h4>
+<div>
+ This mechanism requires two pieces of information to operate:
+ a range to iterate over and a macro to expand on each iteration.
+ This information is obtained by the mechanism through two <i>named external arguments</i>.
+ These arguments are specified as user-defined macros named <b>BOOST_PP_LOCAL_LIMITS</b> and <b>BOOST_PP_LOCAL_MACRO</b>.
+</div>
+<div>
+ <b>BOOST_PP_LOCAL_LIMITS</b> specifies a range of values to iterate over.
+ It <i>must</i> expand to a <i>tuple</i> containing two elements--a lower and upper bound.
+ Both the upper and lower bounds must be numeric values in the range of <i>0</i> to <b>BOOST_PP_LIMIT_ITERATION</b>.
+ For example, if the user wishes a macro to be expanded with numbers ranging from <i>0</i> to <i>10</i>,
+ <b>BOOST_PP_LOCAL_LIMITS</b> would be defined like this:
+</div>
+<div class="code"><pre>
+#define BOOST_PP_LOCAL_LIMITS (0, 10)
+</pre></div>
+<div>
+ Note that there is whitespace after the name of the macro.
+ The macro <i>does not</i> take <i>two</i> arguments.
+ In the case above, if there was no whitespace, a preprocessing error would occur because <i>0</i> and <i>10</i> are invalid identifiers.
+</div>
+<div>
+ Both the upper and lower bounds specified in the <b>BOOST_PP_LOCAL_LIMITS</b> macro are <i>evaluated parameters</i>.
+ This implies that they can include simple arithmetic or logical expressions.
+ For instance, the above definition could easily have been written like this:
+</div>
+<div class="code"><pre>
+#define N() 5
+#define BOOST_PP_LOCAL_LIMITS (0, N() + 5)
+</pre></div>
+<div>
+ Because of this, if the whitespace after the macro name is elided, it is possible for the definition to be syntactically valid:
+</div>
+<div class="code"><pre>
+#define A 0
+#define B 10
+#define BOOST_PP_LOCAL_LIMITS(A, B)
+ // note: no whitespace ^
+</pre></div>
+<div>
+ If this happens, an error will occur inside the mechanism when it attempts to use this macro.
+ The error messages that result may be obscure, so always remember to include the whitespace.
+ A <i>correct</i> version of the above looks like this:
+</div>
+<div class="code"><pre>
+#define A 0
+#define B 10
+#define BOOST_PP_LOCAL_LIMITS (A, B)
+ // note: has whitespace ^
+</pre></div>
+<div>
+ <b>BOOST_PP_LOCAL_MACRO</b> is the macro that is expanded by the mechanism.
+ This macro is expanded on each iteration with the current number of the iteration.
+ It must defined as a unary macro <i>or</i> result in a macro that can be called with one argument:
+</div>
+<div class="code"><pre>
+#define BOOST_PP_LOCAL_MACRO(n) \
+ template<> struct sample<n> { }; \
+ /**/
+</pre></div>
+<div>
+ ...or...
+</div>
+<div class="code"><pre>
+#define SAMPLE(n) \
+ template<> struct sample<n> { }; \
+ /**/
+
+#define BOOST_PP_LOCAL_MACRO SAMPLE
+</pre></div>
+<div>
+ Once these two macros are defined, the local iteration is initiated by <i>including</i> <b>BOOST_PP_LOCAL_ITERATE</b>().
+</div>
+<div class="code"><pre>
+??=include BOOST_PP_LOCAL_ITERATE()
+</pre></div>
+<div>
+ (The <code>??=</code> token is a trigraph for <code>#</code>.
+ I use the trigraph to make it clear that I am <i>including</i> a file rather than defining or expanding a macro, but it is not necessary.
+ Even the digraph version, <code>%:</code>, could be used.
+ Some compilers do not readily accept trigraphs and digraphs, so keep that in mind.
+ Other than that, use whichever one you prefer.)
+</div>
+<div>
+ In order to repeat the <code>sample</code> specialization, the pieces must be put together....
+</div>
+<div class="code"><pre>
+#define BOOST_PP_LOCAL_MACRO(n) \
+ template<> struct sample<n> { }; \
+ /**/
+
+#define BOOST_PP_LOCAL_LIMITS (0, 10)
+??=include BOOST_PP_LOCAL_ITERATE()
+</pre></div>
+<div>
+ This will result in a specialization of <code>sample</code> for each number in the range of <i>0</i> to <i>10</i>.
+ The output will look something like this:
+</div>
+<div class="code"><pre>
+template<> struct sample<0> { };
+template<> struct sample<1> { };
+template<> struct sample<2> { };
+
+// ...
+
+template<> struct sample<10> { };
+</pre></div>
+<div>
+ After the local-iteration is complete, both <b>BOOST_PP_LOCAL_LIMITS</b> and <b>BOOST_PP_LOCAL_MACRO</b> are automatically undefined.
+ If the values need to be retained for a future local-iteration, they must be defined indirectly:
+</div>
+<div class="code"><pre>
+#define LIMITS (0, 10)
+
+#define SAMPLE(n) \
+ template<> struct sample<n> { }; \
+ /**/
+
+#define BOOST_PP_LOCAL_LIMITS LIMITS
+#define BOOST_PP_LOCAL_MACRO(n) SAMPLE(n)
+
+??=include BOOST_PP_LOCAL_ITERATE()
+</pre></div>
+<h4>See Also</h4>
+<ul>
+ <li>BOOST_PP_LOCAL_ITERATE</li>
+ <li>BOOST_PP_LOCAL_LIMITS</li>
+ <li>BOOST_PP_LOCAL_MACRO</li>
+</ul>
+<div class="sig">- Paul Mensonides</div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
\ No newline at end of file
Added: branches/pplib/v2/libs/preprocessor/doc/topics/motivation.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/topics/motivation.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,119 @@
+<html>
+<head>
+ <title>motivation.html</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+<h4>Motivation</h4>
+<div>
+ The C++ function and template parameter lists are special syntactic constructs, and it is impossible to directly
+ manipulate or generate them using C++ constructs.
+ This leads to unnecessary code repetition.
+</div>
+<div>
+ Consider the implementation of the <code>is_function<></code> metafunction is Boost.
+ The implementation uses an overloaded <code>is_function_tester()</code> function that is used for testing if a type is convertible
+ to a pointer to a function.
+ Because of the special treatment of parameter lists, it is not possible to directly match a function with an arbitrary parameter list.
+ Instead, the <code>is_function_tester()</code> must be overloaded for every distinct number of parameters that is to be supported.
+ For example:
+</div>
+<div class="code"><pre>
+template<class R>
+yes_type is_function_tester(R (*)());
+
+template<class R, class A0>
+yes_type is_function_tester(R (*)(A0));
+
+template<class R, class A0, class A1>
+yes_type is_function_tester(R (*)(A0, A1));
+
+template<class R, class A0, class A1, class A2>
+yes_type is_function_tester(R (*)(A0, A1, A2));
+
+// ...
+</pre></div>
+<div>
+ The need for this kind of repetition occurs particularly frequently while implementing generic components or metaprogramming facilities,
+ but the need also manifests itself in many far simpler situations.
+</div>
+<h4>Typical Solutions</h4>
+<div>
+ Typically the repetition is done manually.
+ Manual code repetition is highly unproductive, but sometimes more readable to the untrained eye.
+</div>
+<div>
+ Another solution is to write an external program for generating the repeated code or use some other extra linguistic means such as a smart editor.
+ Unfortunately, using external code generators has many disadvantages:
+ <ul>
+ <li>Writing the generator takes time. (This could be helped by using a standard generator.)</li>
+ <li>It is no longer productive to manipulate C++ code directly.</li>
+ <li>Invoking the generator may be difficult.</li>
+ <li>Automating the invocation of the generator can be difficult in certain environments. (Automatic invocation is desirable for active libraries.)</li>
+ <li>Porting and distributing the generator may be difficult or simply takes precious time.</li>
+ </ul>
+</div>
+<h4>What about the preprocessor?</h4>
+<div>
+ Because C++ comes with a preprocessor, one would assume that it would support these kinds of needs directly.
+ Using the preprocessor in this case is highly desirable because:
+ <ul>
+ <li>The preprocessor is highly portable.</li>
+ <li>The preprocessor is automatically invoked as part of the compilation process.</li>
+ <li>Preprocessor metacode can be directly embedded into the C++ source code.</li>
+ <li>Compilers generally allow viewing or outputting the preprocessed code, which can be used for debugging or to copy and paste the generated code.</li>
+ </ul>
+</div>
+<div>
+ Most unfortunately, the preprocessor is a very low level preprocessor that specifically does not support repetition or recursive macros.
+ Library support is needed!
+</div>
+<div>
+ <i>For detailed information on the capabilities and limitations of the preprocessor, please refer to the C++ standard [Std].</i>
+</div>
+<h4>The Motivation Example Revisited</h4>
+<div>
+ Using the primitives of the preprocessor library, the <code>is_function_tester()</code>'s could be implemented like this:
+</div>
+<div class="code"><pre>
+#include <boost/preprocessor/arithmetic/inc.hpp>
+#include <boost/preprocessor/punctuation/comma_if.hpp>
+#include <boost/preprocessor/repetition.hpp>
+
+#ifndef MAX_IS_FUNCTION_TESTER_PARAMS
+#define MAX_IS_FUNCTION_TESTER_PARAMS 15
+#endif
+
+#define IS_FUNCTION_TESTER(Z, N, _) \
+ template<class R BOOST_PP_COMMA_IF(N) BOOST_PP_ENUM_PARAMS(N, class A)> \
+ yes_type is_function_tester(R (*)(BOOST_PP_ENUM_PARAMS(N, A))); \
+ /**/
+
+BOOST_PP_REPEAT(BOOST_PP_INC(MAX_IS_FUNCTION_TESTER_PARAMS), IS_FUNCTION_TESTER, _)
+
+#undef IS_FUNCTION_TESTER
+</pre></div>
+<div>
+ In order to change the maximum number of function parameters supported, you now simply change the <code>MAX_IS_FUNCTION_TESTER_PARAMS</code> definition and recompile.
+</div>
+<hr size="1">
+<div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+</div>
+<div style="margin-left: 0px;">
+Permission to copy, use, modify, sell and distribute this document is granted provided this copyright notice appears in all copies.
+This document is provided "as is" without express or implied warranty and with no claim as to its suitability for any purpose.
+</div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/topics/problems.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/topics/problems.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,135 @@
+<html>
+<head>
+ <title>problems.html</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+<h4>Known Problems of the C/C++ Preprocessor</h4>
+<div>
+ Preprocessor metaprogramming is subject to heated discussions.
+ Part of this is caused by bad experiences with dangerous techniques,
+ such as defining inline functions using macros.
+ As a rule of thumb, if you can find a clean and manageable way to do something
+ without the preprocessor, then you should do it that way.
+</div>
+<div>
+ Let's survey some of the widely known problems of the preprocessor in a problem/solution format.
+</div>
+<h4>Problem #1</h4>
+<div>
+ The preprocessor does not respect scope, therefore macros can accidentally and sometimes silently replace code.
+</div>
+<div>
+ <b>Solution A</b>
+ <div>
+ Use all caps identifiers for macros and only macros.
+ This practically eliminates the possibility that a macro might replace other kinds of code accidentally.
+ </div>
+</div>
+<div>
+ <b>Solution B</b>
+ <div>
+ Use the local macro idiom:
+ </div>
+<div class="code"><pre>
+#define MACRO ...
+// use MACRO
+#undef MACRO
+</pre></div>
+ <div>
+ This makes sure that a macro cannot accidentally replace code outside of the scope of the local macro.
+ </div>
+ <div>
+ A problem with this solution is that the #undef cannot be automated and may be forgotten.
+ Experienced programmers generally write the #undef either immediately before (in time)
+ or immediately after writing the macro definition.
+ </div>
+</div>
+<div>
+ <b>Solution C</b>
+ <div>
+ Use the unique macro prefix idiom.
+ </div>
+<div class="code"><pre>
+#define UMP_MACRO
+// use UMP_MACRO
+</pre></div>
+ <div>
+ This makes accidental substitution and collisions highly unlikely.
+ Problems with this solution include:
+ </div>
+ <ul>
+ <li>There can still be naming collisions inside a large project.</li>
+ <li>Macros still pollute the global namespace.</li>
+ </ul>
+ <i>By combining all solutions, whenever possible, the scope problem can be largely avoided.</i>
+</div>
+<h4>Problem #2</h4>
+<div>
+ Preprocessor code is difficult to read.
+ It requires an understanding of the basic process of how the preprocessor recursively expands macros,
+ finding macro definitions, and mentally substituting the parameters of the macro.
+</div>
+<div>
+ <b>Solution</b>
+ <div>
+ Any kind of programming requires a basic understanding of how the code is executed.
+ Any parameterization technique, including simple functions and templates requires finding
+ the definition and mentally substituting parameters.
+ </div>
+ <div>
+ However, it is good to know a few techniques:
+ </div>
+ <ul>
+ <li>By using as many local macros as reasonable, the bulk of the searching process can be eliminated.</li>
+ <li>Code browsers and text search tools make it easier to find the definitions.</li>
+ <li>The compiler can be used for generating the preprocessed source code in order to look for bugs.</li>
+ <li>
+ Before turning something into a preprocessor metaprogram, first implement a small scale version
+ of it without the preprocessor.
+ The work bottom-up, replacing hand-written constructs by using the preprocessor.
+ This way you can test the code incrementally.
+ Experienced programmers often skip many stages, but if something proves too complex to write
+ directly, it is always possible to fall back to incremental methods.
+ </li>
+ <li>
+ If you insert a special symbol into the preprocessor code in places where there should be a line break,
+ you can make code readable after preprocessing simply by using a search and replace tool.
+ </li>
+ </ul>
+ <i>An especially important thing to remember is to limit the use of the preprocessor to
+ structured, well-understood, and safe methods.
+ Structure helps to understand complex systems [McConnell].</i>
+</div>
+<h4>Problem #3</h4>
+<div>
+ "I'd like to see Cpp abolished." - <i>Bjarne Stroustrup</i> in [Stroustrup].
+</div>
+<div>
+ <b>Solution</b>
+ <div>
+ The C/C++ preprocessor will be here for a long time.
+ </div>
+ <i>In practice, preprocessor metaprogramming is far simpler and more portable than template metaprogramming [Czarnecki].</i>
+</div>
+<hr size="1">
+<div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+</div>
+<div style="margin-left: 0px;">
+Permission to copy, use, modify, sell and distribute this document is granted provided this copyright notice appears in all copies.
+This document is provided "as is" without express or implied warranty and with no claim as to its suitability for any purpose.
+</div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/topics/reentrancy.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/topics/reentrancy.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,298 @@
+<html>
+ <head>
+ <title>reentrancy.html</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+ </head>
+ <body>
+ <h4>
+ Reentrancy
+ </h4>
+ <div>
+ Macro expansion in the preprocessor is entirely functional. Therefore,
+ there is no iteration. Unfortunately, the preprocessor also disallows
+ recursion. This means that the library must fake iteration or recursion
+ by defining sets of macros that are implemented similarly.
+ </div>
+ <div>
+ To illustrate, here is a simple concatenation macro:
+ </div>
+ <div class="code">
+ <pre>
+#define CONCAT(a, b) CONCAT_D(a, b)
+#define CONCAT_D(a, b) a ## b
+
+CONCAT(a, CONCAT(b, c)) // abc
+</pre>
+ </div>
+ <div>
+ This is fine for a simple case like the above, but what happens in a scenario
+ like the following:
+ </div>
+ <div class="code">
+ <pre>
+#define AB(x, y) CONCAT(x, y)
+
+CONCAT(A, B(p, q)) // CONCAT(p, q)
+</pre>
+ </div>
+ <div>
+ Because there is no recursion, the example above expands to <code>CONCAT(p, q)</code>
+ rather than <code>pq</code>.
+ </div>
+ <div>
+ There are only two ways to "fix" the above. First, it can be documented
+ that <code>AB</code> uses <code>CONCAT</code> and disallow usage similar to the
+ above. Second, multiple concatenation macros can be provided....
+ </div>
+ <div class="code">
+ <pre>
+#define CONCAT_1(a, b) CONCAT_1_D(a, b)
+#define CONCAT_1_D(a, b) a ## b
+
+#define CONCAT_2(a, b) CONCAT_2_D(a, b)
+#define CONCAT_2_D(a, b) a ## b
+
+#define AB(x, y) CONCAT_2(x, y)
+
+CONCAT_1(A, B(p, q)) // pq
+</pre>
+ </div>
+ <div>
+ This solves the problem. However, it is now necessary to know that <code>AB</code>
+ uses, not only <i>a</i> concatenation macro, but <code>CONCAT_2</code> specifically.
+ </div>
+ <div>
+ A better solution is to abstract <i>which</i> concatenation macro is used....
+ </div>
+ <div class="code">
+ <pre>
+#define AB(c, x, y) CONCAT_ ## c(x, y)
+
+CONCAT_1(A, B(2, p, q)) // pq
+</pre>
+ </div>
+ <div>
+ This is an example of <i>generic reentrance</i>, in this case, into a fictional
+ set of concatenation macros. The <code>c</code> parameter represents the
+ "state" of the concatenation construct, and as long as the user keeps track of
+ this state, <code>AB</code> can be used inside of a concatenation macro.
+ </div>
+ <div>
+ The library has the same choices. It either has to disallow a construct
+ being inside itself or provide multiple, equivalent definitions of a construct
+ and provide a uniform way to <i>reenter</i> that construct. There are
+ several contructs that <i>require</i> recursion (such as <b>BOOST_PP_WHILE</b>).
+ Consequently, the library chooses to provide several sets of macros with
+ mechanisms to reenter the set at a macro that has not already been used.
+ </div>
+ <div>
+ In particular, the library must provide reentrance for <b>BOOST_PP_FOR</b>, <b>BOOST_PP_REPEAT</b>,
+ and <b>BOOST_PP_WHILE</b>. There are two mechanisms that are used to
+ accomplish this: state parameters (like the above concatenation example)
+ and <i>automatic recursion</i>.
+ </div>
+ <h4>
+ State Parameters
+ </h4>
+ <div>
+ Each of the above constructs (<b>BOOST_PP_FOR</b>, <b>BOOST_PP_REPEAT</b>, and <b>BOOST_PP_WHILE</b>)
+ has an associated state. This state provides the means to reenter the
+ respective construct.
+ </div>
+ <div>
+ Several user-defined macros are passed to each of these constructs (for use as
+ predicates, operations, etc.). Every time a user-defined macro is
+ invoked, it is passed the current state of the construct that invoked it so
+ that the macro can reenter the respective set if necessary.
+ </div>
+ <div>
+ These states are used in one of two ways--either by concatenating to or passing
+ to another macro.
+ </div>
+ <div>
+ There are three types of macros that use these state parameters. First,
+ the set itself which is reentered through concatenation. Second,
+ corresponding sets that act like they are a part of the the primary set.
+ These are also reentered through concatenation. And third, macros that
+ internally use the first or second type of macro. These macros take the
+ state as an additional argument.
+ </div>
+ <div>
+ The state of <b>BOOST_PP_WHILE</b> is symbolized by the letter <i>D</i>.
+ Two user-defined macros are passed to <b>BOOST_PP_WHILE</b>--a predicate and an
+ operation. When <b>BOOST_PP_WHILE</b> expands these macros, it passes
+ along its state so that these macros can reenter the <b>BOOST_PP_WHILE</b> set.
+ </div>
+ <div>
+ Consider the following multiplication implementation that illustrates this
+ technique:
+ </div>
+ <div class="code">
+ <pre>
+// The addition interface macro.
+// The _D signifies that it reenters
+// BOOST_PP_WHILE with concatenation.
+
+#define ADD_D(d, x, y) \
+ BOOST_PP_TUPLE_ELEM( \
+ 2, 0, \
+ BOOST_PP_WHILE_ ## d(ADD_P, ADD_O, (x, y)) \
+ ) \
+ /**/
+
+// The predicate that is passed to BOOST_PP_WHILE.
+// It returns "true" until "y" becomes zero.
+
+#define ADD_P(d, xy) BOOST_PP_TUPLE_ELEM(2, 1, xy)
+
+// The operation that is passed to BOOST_PP_WHILE.
+// It increments "x" and decrements "y" which will
+// eventually cause "y" to equal zero and therefore
+// cause the predicate to return "false."
+
+#define ADD_O(d, xy) \
+ ( \
+ BOOST_PP_INC( \
+ BOOST_PP_TUPLE_ELEM(2, 0, xy) \
+ ), \
+ BOOST_PP_DEC( \
+ BOOST_PP_TUPLE_ELEM(2, 1, xy) \
+ ) \
+ ) \
+ /**/
+
+// The multiplication interface macro.
+
+#define MUL(x, y) \
+ BOOST_PP_TUPLE_ELEM( \
+ 3, 0, \
+ BOOST_PP_WHILE(MUL_P, MUL_O, (0, x, y)) \
+ ) \
+ /**/
+
+// The predicate that is passed to BOOST_PP_WHILE.
+// It returns "true" until "y" becomes zero.
+
+#define MUL_P(d, rxy) BOOST_PP_TUPLE_ELEM(3, 2, rxy)
+
+// The operation that is passed to BOOST_PP_WHILE.
+// It adds "x" to "r" and decrements "y" which will
+// eventually cause "y" to equal zero and therefore
+// cause the predicate to return "false."
+
+#define MUL_O(d, rxy) \
+ ( \
+ ADD_D( \
+ d, /* pass the state on to ADD_D */ \
+ BOOST_PP_TUPLE_ELEM(3, 0, rxy), \
+ BOOST_PP_TUPLE_ELEM(3, 1, rxy) \
+ ), \
+ BOOST_PP_TUPLE_ELEM(3, 1, rxy), \
+ BOOST_PP_DEC( \
+ BOOST_PP_TUPLE_ELEM(3, 2, rxy) \
+ ) \
+ ) \
+ /**/
+
+MUL(3, 2) // expands to 6
+</pre>
+ </div>
+ <div>
+ There are a couple things to note in the above implementation. First,
+ note how <code>ADD_D</code> reenters <b>BOOST_PP_WHILE</b> using the <i>d</i> state
+ parameter. Second, note how <code>MUL</code>'s operation, which is
+ expanded by <b>BOOST_PP_WHILE</b>, passes the state on to <code>ADD_D</code>.
+ This illustrates state reentrance by both argument and concatenation.
+ </div>
+ <div>
+ For every macro in the library that uses <b>BOOST_PP_WHILE</b>, there is a
+ state reentrant variant. If that variant uses an argument rather than
+ concatenation, it is suffixed by <code>_D</code> to symbolize its method of
+ reentrance. Examples or this include the library's own <b>BOOST_PP_ADD_D</b>
+ and <b>BOOST_PP_MUL_D</b>. If the variant uses concatenation, it is
+ suffixed by an underscore. It is completed by concatenation of the
+ state. This includes <b>BOOST_PP_WHILE</b> itself with <b>BOOST_PP_WHILE_</b>
+ ## <i>d</i> and, for example, <b>BOOST_PP_LIST_FOLD_LEFT</b> with <b>BOOST_PP_LIST_FOLD_LEFT_</b>
+ ## <i>d</i>.
+ </div>
+ <div>
+ The same set of conventions are used for <b>BOOST_PP_FOR</b> and <b>BOOST_PP_REPEAT</b>,
+ but with the letters <i>R</i> and <i>Z</i>, respectively, to symbolize their
+ states.
+ </div>
+ <div>
+ Also note that the above <code>MUL</code> implementation, though not
+ immediately obvious, is using <i>all three</i> types of reentrance. Not
+ only is it using both types of <i>state</i> reentrance, it is also using <i>automatic
+ recursion</i>....
+ </div>
+ <h4>
+ Automatic Recursion
+ </h4>
+ <div>
+ Automatic recursion is a technique that vastly simplifies the use of reentrant
+ constructs. It is used by simply <i>not</i> using any state parameters at
+ all.
+ </div>
+ <div>
+ The <code>MUL</code> example above uses automatic recursion when it uses <b>BOOST_PP_WHILE</b>
+ by itself. In other words, <code>MUL</code> can <i>still</i> be used
+ inside <b>BOOST_PP_WHILE</b> even though it doesn't reenter <b>BOOST_PP_WHILE</b>
+ by concatenating the state to <b>BOOST_PP_WHILE_</b>.
+ </div>
+ <div>
+ To accomplish this, the library uses a "trick." Despite what it looks
+ like, the macro <b>BOOST_PP_WHILE</b> does not take three arguments. In
+ fact, it takes no arguments at all. Instead, the <b>BOOST_PP_WHILE</b> macro
+ expands <i>to</i> a macro that takes three arguments. It simply detects
+ what the next available <b>BOOST_PP_WHILE_</b> ## <i>d</i> macro is and returns
+ it. This detection process is somewhat involved, so I won't go into <i>how</i>
+ it works here, but suffice to say it <i>does</i> work.
+ </div>
+ <div>
+ Using automatic recursion to reenter various sets of macros is obviously much
+ simpler. It completely hides the underlying implementation details.
+ So, if it is so much easier to use, why do the state parameters still
+ exist? The reason is simple as well. When state parameters are
+ used, the state is <i>known</i> at all times. This is not the case when
+ automatic recursion is used. The automatic recursion mechanism has to <i>deduce</i>
+ the state at each point that it is used. This implies a cost in macro
+ complexity that in some situations--notably at deep macro depths--will slow
+ some preprocessors to a crawl.
+ </div>
+ <h4>
+ Conclusion
+ </h4>
+ <div>
+ It is really a tradeoff whether to use state parameters or automatic recursion
+ for reentrancy. The strengths of automatic recursion are ease of use and
+ implementation encapsulation. These come at a performance cost on some
+ preprocessors in some situations. The primary strength of state
+ parameters, on the other hand, is efficiency. Use of the state parameters
+ is the only way to achieve <i>maximum</i> efficiency. This efficiency
+ comes at the cost of both code complexity and exposition of implementation.
+ </div>
+ <h4>
+ See Also
+ </h4>
+ <ul>
+ <li>BOOST_PP_FOR</li>
+ <li>BOOST_PP_REPEAT</li>
+ <li>BOOST_PP_WHILE</li>
+ </ul>
+ <div class="sig">
+ - Paul Mensonides
+ </div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+ </body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/topics/techniques.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/topics/techniques.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,350 @@
+<html>
+<head>
+ <title>techniques.html</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+ <style>
+ u { font-weight: normal; text-decoration: none; }
+ </style>
+</head>
+<body>
+<h4>Techniques</h4>
+<div>
+ The preprocessor metaprogramming techniques are presented in example format.
+</div>
+
+<h4>Example<u> - Use a local macro to avoid small scale repetition.</u></h4>
+<div class="code"><pre>
+#define BOOST_PP_DEF(op) /* ..................................... */ \
+ template<class T, int n> \
+ vec<T, n> operator op ## =(vec<T, n> lhs, const vec<T, n>& rhs) { \
+ for (int i = 0; i < n; ++i) { \
+ lhs(i) op ## = rhs(i); \
+ } \
+ } \
+ /**/
+
+BOOST_PP_DEF(+)
+BOOST_PP_DEF(-)
+BOOST_PP_DEF(*)
+BOOST_PP_DEF(/)
+
+#undef BOOST_PP_DEF
+</pre></div>
+<div>
+ <b>Tip:</b> It is usually okay to use a standard macro name like <code>BOOST_PP_DEF</code> for this kind of code
+ because the macro is both defined and undefined in the immediate site of its use.
+</div>
+<div>
+ <b>Tip:</b> It is easier to verify proper use of the line continuation operator when they are aligned.
+</div>
+<div>
+ <b>Notes:</b> You can extend this example by defining more and different kinds of operators.
+ Before doing so, consider using the <i>algebraic categories</i> technique introduced in [Barton]
+ or a <i>layered architecture</i> (see for instance [Czarnecki]).
+ However, at some point you must type the operator tokens <code>*</code>, <code>/</code>, <code>+</code>, <code>-</code>, etc.,
+ because it is impossible to generate them using templates.
+ The resulting <i>categorical repetition</i> of tokens can be eliminated by using preprocessor metaprogramming.
+</div>
+
+<h4>Example<u> - Use BOOST_PP_EMPTY as an unused parameter in local macro instantiations.</u></h4>
+<div class="code"><pre>
+#define BOOST_PP_DEF(cv) /* ... */ \
+ template<class base> \
+ cv() typename implement_subscript_using_begin_subscript<base>::value_type& \
+ implement_subscript_using_begin_subscript<base>::operator[](index_type i) cv() { \
+ return base::begin()[i]; \
+ } \
+ /**/
+
+ BOOST_PP_DEF(BOOST_PP_EMPTY)
+ BOOST_PP_DEF(BOOST_PP_IDENTITY(const))
+</pre></div>
+<div>
+ <b>How:</b> BOOST_PP_EMPTY() expands to nothing and can be used as an unused parameter.
+</div>
+<div>
+ <b>Note:</b> BOOST_PP_EMPTY with the () never gets expanded.
+ The () is necessary to invoke a function-like macro.
+</div>
+<div>
+ <b>Caveat:</b> You cannot safely use concatenation while using BOOST_PP_EMPTY().
+</div>
+<div>
+ <b>Tip:</b> Occasionally, one or two lines are considerably longer than the rest.
+ It can often save some work to <i>not</i> align all the line continuation operators without making the code too unreadable.
+</div>
+<div>
+ <b>Tip:</b> Use syntax highlighting on preprocessor metaprogramming macro identifiers such as:
+ <ul>
+ <li>BOOST_PP_DEF</li>
+ <li>BOOST_PP_EMPTY</li>
+ <li>BOOST_PP_REPEAT</li>
+ <li>...</li>
+ </ul>
+ It can greatly improve readability.
+</div>
+
+<h4>Example<u> - Use BOOST_PP_CAT instead of ## when necessary.</u></h4>
+<div class="code"><pre>
+#define STATIC_ASSERT(expr) \
+ enum { BOOST_PP_CAT(static_check_, __LINE__) = (expr) ? 1 : -1 }; \
+ typedef char \
+ BOOST_PP_CAT(static_assert_, __LINE__)[BOOST_PP_CAT(static_check_, __LINE__)] \
+ /**/
+
+// ...
+
+STATIC_ASSERT(sizeof(int) <= sizeof(long));
+</pre></div>
+<div>
+ <b>Why:</b> Macro expansion proceeds recursively in "layers."
+ Token pasting prevents the preprocessor from performing macro expansion,
+ therefore it is often necessary to delay token concatenation.
+</div>
+
+<h4>Example<u> - Use BOOST_PP_STRINGIZE instead of # whenever necessary.</u></h4>
+<div class="code"><pre>
+#define NOTE(str) \
+ message(__FILE__ "(" BOOST_PP_STRINGIZE(__LINE__) ") : " str) \
+ /**/
+
+// ...
+
+#pragma NOTE("TBD!")
+</pre></div>
+<div>
+ <b>Why:</b> Macro expansion proceeds recursively in "layers."
+ Stringization prevents the preprocessor from performing macro expansion, therefore it is often necessary to delay stringization.
+</div>
+
+<h4>Example<u> - Use BOOST_PP_ENUM_PARAMS (and its variants) or BOOST_PP_REPEAT and BOOST_PP_COMMA_IF to avoid <i>O</i>(<i>n</i>) repetition on lists in general.</u></h4>
+<div class="code"><pre>
+struct make_type_list_end;
+
+template<
+ BOOST_PP_ENUM_PARAMS_WITH_A_DEFAULT(
+ MAKE_TYPE_LIST_MAX_LENGTH,
+ class T,
+ make_type_list_end
+ )
+>
+struct make_type_list {
+ private:
+ enum { end = is_same<T0, make_type_list_end>::value };
+ public:
+ typedef typename type_if<
+ end, type_cons_empty,
+ type_cons<
+ T0,
+ typename type_inner_if<
+ end, type_identity<end>,
+ make_type_list<
+ BOOST_PP_ENUM_SHIFTED_PARAMS(
+ MAKE_TYPE_LIST_MAX_LENGTH,
+ T
+ )
+ >
+ >::type
+ >
+ >::type type;
+};
+</pre></div>
+<div>
+ <b>How:</b> BOOST_PP_REPEAT uses simulated recursion (pseudo code):
+</div>
+<div><pre>
+#define BOOST_PP_REPEAT(n, m, p) BOOST_PP_REPEAT ## n(m, p)
+
+#define BOOST_PP_REPEAT0(m, p)
+#define BOOST_PP_REPEAT1(m, p) m(0, p)
+#define BOOST_PP_REPEAT2(m, p) m(0, p) m(1, p)
+#define BOOST_PP_REPEAT3(m, p) BOOST_PP_REPEAT2(m, p) m(2, p)
+#define BOOST_PP_REPEAT4(m, p) BOOST_PP_REPEAT3(m, p) m(3, p)
+// ...
+</pre></div>
+<div>
+ <i>Note: This is no longer how BOOST_PP_REPEAT is implemented, so the code above is illustrative only! </i>
+</div>
+<div>
+ BOOST_PP_ENUM_PARAMS and its variations use BOOST_PP_REPEAT.
+ BOOST_PP_COMMA_IF(I) expands to a comma if I != 0.
+ BOOST_PP_INC(I) essentially expands to "I+1," and BOOST_PP_DEC(I) essentially expands to "I-1.".
+</div>
+
+<h4>Example<u> - Use a <i>conditional macro definition</i> to enable user configuration of code repetition based on need rather than some "reasonable" upper limit.</u></h4>
+<div class="code"><pre>
+#ifndef MAKE_TYPE_LIST_MAX_LENGTH
+#define MAKE_TYPE_LIST_MAX_LENGTH 8
+#endif
+</pre></div>
+<div>
+ Now the user can configure the <code>make_type_list</code> primitive without modifying library code.
+</div>
+
+<h4>Example<u> - Use BOOST_PP_REPEAT and a <i>token look-up function</i> to eliminate categorical repetition.</u></h4>
+<div class="code"><pre>
+// CAVEAT: My compiler is not standard on arithmetic types.
+#define ARITHMETIC_TYPE(I) ARITHMETIC_TYPE ## I
+
+#define ARITHMETIC_TYPE0 bool
+#define ARITHMETIC_TYPE1 char
+#define ARITHMETIC_TYPE2 signed char
+#define ARITHMETIC_TYPE3 unsigned char
+#define ARITHMETIC_TYPE4 short
+#define ARITHMETIC_TYPE5 unsigned short
+#define ARITHMETIC_TYPE6 int
+#define ARITHMETIC_TYPE7 unsigned int
+#define ARITHMETIC_TYPE8 long
+#define ARITHMETIC_TYPE9 unsigned long
+#define ARITHMETIC_TYPE10 float
+#define ARITHMETIC_TYPE11 double
+#define ARITHMETIC_TYPE12 long double
+
+#define ARITHMETIC_TYPE_CNT 13
+
+// ...
+
+#define BOOST_PP_DEF(z, I, _) /* ... */ \
+ catch (ARITHMETIC_TYPE(I) t) { \
+ report_typeid(t); \
+ report_value(t); \
+ } \
+ /**/
+
+BOOST_PP_REPEAT(ARITHMETIC_TYPE_CNT, BOOST_PP_DEF, _)
+
+#undef BOOST_PP_DEF
+</pre></div>
+<div>
+ <b>Note:</b> The repetition of the above example can be eliminated using template metaprogramming [Czarnecki] as well.
+ However categorical repetition of operator tokens cannot be completely eliminated by using template metaprogramming.
+</div>
+
+<h4>Example<u> - Use BOOST_PP_REPEAT to avoid <i>O</i>(<i>n</i>*<i>n</i>) repetition.</u></h4>
+<div class="code"><pre>
+#ifndef MAX_VEC_ARG_CNT
+#define MAX_VEC_ARG_CNT 8
+#endif
+
+// ...
+
+#define ARG_FUN(z, i, _) BOOST_PP_COMMA_IF(i) T a ## i
+#define ASSIGN_FUN(z, i, ) (*this)[i] = a ## i;
+
+#define DEF_VEC_CTOR_FUN(z, i, _) /* ... */ \
+ vec(BOOST_PP_REPEAT(i, ARG_FUN, _)) { \
+ BOOST_PP_REPEAT(i, ASSIGN_FUN, _) \
+ } \
+ /**/
+
+BOOST_PP_REPEAT(BOOST_PP_INC(MAX_VEC_ARG_CNT), DEF_VEC_CTOR_FUN, _)
+
+#undef ARG_FUN
+#undef ASSIGN_FUN
+#undef DEF_VEC_CTOR_FUN
+
+// ...
+</pre></div>
+<div>
+ <b>How:</b> BOOST_PP_REPEAT is implemented is a special way to enable <i>automatic recursion</i>.
+</div>
+
+<h4>Example<u> - Use BOOST_PP_IF to implement special case for the first element.</u></h4>
+<div class="code"><pre>
+#define COMMA_IF(c) \
+ BOOST_PP_IF(c, BOOST_PP_COMMA, BOOST_PP_EMPTY)() \
+ /**/
+
+BOOST_PP_IF(0, true, false) == false;
+BOOST_PP_IF(1, true, false) == true;
+</pre></div>
+<div>
+ BOOST_PP_IF enables convenient generation of lists using BOOST_PP_REPEAT.
+</div>
+<div>
+ <b>Note:</b> <i>THEN</i> and <i>ELSE</i> don't have to be macros.
+ However, if at least one of them is a function-like macro, and you want it be expanded conditionally,
+ you have to make the other parameter a function-like macro too.
+ This can often be done using BOOST_PP_IDENTITY.
+ Consider the following example (by Aleksey Gurtovoy):
+</div>
+<div><pre>
+#define NUMBERED_EXPRESSION(i, x) /* ... */ \
+ BOOST_PP_IF( \
+ i, \
+ BOOST_PP_IDENTITY(x ## i) \
+ BOOST_PP_EMPTY \
+ )() \
+ /**/
+</pre></div>
+<div>
+ <b>Note:</b> Like in the above implementation of COMMA_IF, the result of BOOST_PP_IF is often invoked and not the <i>THEN</i> and <i>ELSE</i> parameters.
+ If the parameters were invoked, the code would not expand correctly, because the BOOST_PP_EMPTY parameter would get expanded
+ to nothing before the <b>BOOST_PP_IF</b> would be properly expanded.
+</div>
+<div>
+ <b>How:</b> BOOST_PP_IF is defined for the entire repeat range (psuedo code):
+</div>
+<div><pre>
+#define BOOST_PP_IF(c, THEN, ELSE) BOOST_PP_IF ## c(THEN, ELSE)
+
+#define BOOST_PP_IF0(THEN, ELSE) ELSE
+#define BOOST_PP_IF1(THEN, ELSE) THEN
+#define BOOST_PP_IF1(THEN, ELSE) THEN
+// ...
+</pre></div>
+
+<h4>Example:<u> Use arithmetic, logical, and comparison operations when necessary.</u></h4>
+<div class="code"><pre>
+#define SPECIAL_NUMBERED_LIST(n, i, elem, special) \
+ BOOST_PP_ASSERT_MSG( \
+ BOOST_PP_LESS(i, n), \
+ bad params for SPECIAL_NUMBERED_LIST! \
+ ) \
+ BOOST_PP_ENUM_PARAMS(i, elem) \
+ BOOST_PP_COMMA_IF(i) special \
+ BOOST_PP_REPEAT( \
+ BOOST_PP_SUB(BOOST_PP_DEC(n), i), \
+ SPECIAL_NUMBERED_LIST_HELPER, \
+ (elem, i) \
+ ) \
+ /**/
+
+#define SPECIAL_NUMBERED_LIST_HELPER(z, i, elem_base) \
+ , \
+ BOOST_PP_CAT( \
+ BOOST_PP_TUPLE_ELEM(2, 0, elem_base), \
+ BOOST_PP_ADD( \
+ i, \
+ BOOST_PP_TUPLE_ELEM(2, 1, elem_base) \
+ ) \
+ ) \
+ /**/
+
+SPECIAL_NUMBERED_LIST(3, 0, E, S)
+SPECIAL_NUMBERED_LIST(3, 1, E, S)
+SPECIAL_NUMBERED_LIST(3, 2, E, S)
+SPECIAL_NUMBERED_LIST(3, 3, E, S)
+</pre></div>
+
+<hr size="1">
+<div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+</div>
+<div style="margin-left: 0px;">
+Permission to copy, use, modify, sell and distribute this document is granted provided this copyright notice appears in all copies.
+This document is provided "as is" without express or implied warranty and with no claim as to its suitability for any purpose.
+</div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Housemarque Oy 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file LICENSE_1_0.txt or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
Added: branches/pplib/v2/libs/preprocessor/doc/topics/variadic_macros.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/doc/topics/variadic_macros.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,242 @@
+<html>
+ <head>
+ <title>variadic_macros.html</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+ <style>
+ u { font-weight: normal; text-decoration: none; }
+ </style>
+ </head>
+ <body>
+<h4>Variadic Macros</h4>
+<div> Variadic macros are supported by a number of compilers.
+They are
+macros of the form:
+</div>
+<div class="code">
+<pre>#define SOME_MACRO(ZeroOrMoreParameters,...) macro expansion possible specifying __VA_ARGS__<br></pre>
+</div>
+<div> The '...' in the parameter list represents the variadic
+data when the macro is invoked and the __VA_ARGS__ in the expansion
+represents the variadic data in the expansion of the macro. Variadic
+data is of the form of 1 or more preprocessor tokens separated by
+commas.<br>
+<br>
+The '...' must be the last parameter in the macro definition and there
+may be 0 or more non-variadic parameters preceding it.<br>
+<br>
+In the expansion of the macro __VA_ARGS__ may be specified 0 or more
+times to represent the variadic data. The variadic data in the
+expansion is a comma separated list of preprocessor tokens representing
+the variadic data which the invoker of the macro enters as the last
+arguments to the macro.<br>
+</div>
+<h4>Example<u> - Creating and invoking a variadic macro.</u></h4>
+<div class="code">
+<pre>#define INITIALIZE_INT_ARRAY(array_name,...) \ <br> static int array_name[] = { __VA_ARGS__ }; \ <br> /**/<br><br> INITIALIZE_INT_ARRAY(myname,45,789,33510,9346,2)<br></pre>
+</div>
+<u> <span style="font-weight: bold;">Preprocessor
+Library Support<br>
+</span></u>
+<div>The library offers support for variadic macros for those
+compilers
+which support the feature. The library can automatically detect whether
+a compiler supports variadic macros and sets the macro
+BOOST_PP_VARIADICS accordingly to 1 if the compiler supports variadic
+macros or 0 if the compiler does not support variadic macros.<br>
+<br>
+The end-user can #define BOOST_PP_VARIADICS to 1 or 0 himself in a
+translation unit, before including any preprocessor header files, to
+prevent the library from attempting to detect whether the compiler
+supports variadic macros. This has the effect of manually turning on or
+off variadic macro support in the library. Of course if one manually
+turns on variadic macro support in the library, and one's compiler does
+not support variadic macros, functionality in the library which uses
+variadic macros will fail with error messages from the compiler.<br>
+<br>
+When BOOST_PP_VARIADICS is 1, the library offers some extended
+functionality
+by using variadic macros, and also offers extended support for working
+with variadic data.<br>
+<br>
+Support for working with variadic
+data is largely centered on being able to convert variadic data to
+other library data types, since the
+functionality for working with those Boost preprocessor library data
+types is much greater than that for working with variadic data directly.<br>
+</div>
+<h4>Notation For Variadic Macros<br>
+</h4>
+<div>In the documentation, headers which have variadic macros,
+and
+variadic macros themselves, have a notation of '(v)' appended to them.
+For the variadic macros themselves this signifies that
+BOOST_PP_VARIADICS must be 1 for those variadic macros to be usable.
+For variadic macros which have a non-variadic equivalent, the
+non-variadic equivalent will be used if BOOST_PP_VARIADICS is set to 0
+and the non-variadic version of the
+macro does not have a '(v)' appended to its name in the documentation.
+</div>
+<h4>Extended Functionality Using Variadic Macros<br>
+</h4>
+<div>Some macros in the library offer extended
+functionality through the use of variadic macros.<br>
+<br>
+The variadic macro version offers the same functionality
+as the non-variadic version, but because of the ability of the variadic
+parameters to encompass a variable number of arguments, it also offers
+an enhanced syntax using the same macro name.<br>
+<br>
+The macros in the library which offer this enhanced functionality are
+all
+centered on <i>tuple</i> manipulation. With variadic
+macros it is
+possible to
+manipulate tuples without having to know the size of the tuple. So
+while the invoker can still specify the size when using tuple macro
+functionality, there are variadic versions of each of the tuple macros,
+with the exact same name as the non-variadic macro, where the size need
+not be specified.<br>
+</div>
+<h4>Extended Support For Variadic Data</h4>
+<div>The library offers extended support for working with
+variadic data
+which goes beyond the functionality offered by the C++ specification
+for variadic macros. It does this through preprocessor programming and
+by using some of the other functionality in the library itself. Header
+and macro names
+in the library which offer extended support for working with variadic
+data, and need the compiler to support variadic macros, are marked with
+a (v)<sup> </sup>to indicate a variadic macro.<br>
+<br>
+The form of the functionality which the library offers is centered on
+two macros which work with variadic data itself, and a set of macros
+which convert between variadic data and other library data
+types.<br>
+<br>
+The two macros are BOOST_PP_VARIADIC_ELEM and BOOST_PP_VARIADIC_SIZE,
+which respectively return a particular token of variadic data and the
+number of tokens of variadic data.<br>
+<br>
+The macros for converting variadic data to the library's data types are
+BOOST_PP_VARIADIC_TO_ARRAY, BOOST_PP_VARIADIC_TO_LIST,
+BOOST_PP_VARIADIC_TO_SEQ, and BOOST_PP_VARIADIC_TO_TUPLE.<br>
+<br>
+All of these macros need compiler support for variadic data and only
+exist if BOOST_PP_VARIADICS is 1. <br>
+<br>
+The remaining four macros, which convert from a library data type
+to comma-separated preprocessor tokens, which is the form of
+variadic data, do not need compiler support for variadic
+macros. These functions are BOOST_PP_ARRAY_ENUM, BOOST_PP_LIST_ENUM,
+BOOST_PP_SEQ_ENUM, and BOOST_PP_TUPLE_ENUM. However if one wishes to
+use this variadic data reliably as arguments to other macros, one needs
+variadic macro support.<br>
+</div>
+<u style="font-weight: bold;"> Using Variadic Data</u>
+<div>Variadic data exists in the
+form of comma-separated preprocessor tokens. This is the case whether
+the variadic data comes from the __VA_ARGS__ of a variadic macro, from
+the conversion of a library's data type to variadic data, or the
+manual construction of comma-separated preprocessing tokens by the
+programmer writing a macro.<br>
+<br>
+The easiest way to work with
+variadic data internally is to convert it to a library data type.
+Library data types, whether an <i>array</i>, <i>list</i>,
+<i>sequence</i>,
+or <i>tuple</i>, have a rich set of functionality for
+manipulating
+data whereas
+variadic data functionality in the library only allows one to access
+the variadic data as a whole or to access a single token of the
+variadic data at a time.<br>
+<br>
+The user of the library still may
+choose to pass variadic data back into internal macros rather than
+convert it to other library data types. There is no problem passing
+variadic data as a whole to variadic macros as the last parameter of
+the macro. However: <br>
+<br>
+<span style="font-weight: bold;">Attempting to pass
+variadic data as a
+whole directly into a non-variadic macro is not guaranteed to work and
+may fail.<br>
+</span><br>
+This occurs because of a preprocessor weakness in a number
+of compilers, currently most notably Visual C++. Even passing variadic
+data as arguments to a non-variadic macro, when it is not represented
+in
+the form of __VA_ARGS__, may fail with certain compilers.<br>
+<br>
+What follows are very simple examples, showing how variadic data can be
+passed to a non-variadic macro.<br>
+<br>
+First an example of what NOT to do.<br>
+</div>
+<h4>Example<u> - Passing variadic data as a whole to a
+non-variadic
+macro. DO NOT DO.</u></h4>
+<div class="code">
+<pre>#define MACRO_ARG_2(x,y) BOOST_PP_ADD(x,y)<br>#define VAR_MACRO(...) __VA_ARGS__<br><br>/* The following should not be done and is not guaranteed to work with compilers. */<br><br><span style="font-weight: bold;"><span style="font-family: monospace;"></span></span>int xx = MACRO_ARG_2(VAR_MACRO(2,3));<br></pre>
+</div>
+<div> There are two ways to pass variadic data to a non-variadic
+macro.
+The
+first of these is to pass the individual tokens of the variadic data
+separately to the non-variadic macro using the BOOST_PP_VARIADIC_ELEM
+macro in the library.<br>
+</div>
+<h4>Example<u> - Passing individual variadic data tokens to
+a
+non-variadic macro.<br>
+</u></h4>
+<div class="code">
+<pre>#define MACRO_ARG_2(x,y) BOOST_PP_ADD(x,y)<br>#define VAR_MACRO(...) __VA_ARGS__<br><br>/* The following will work correctly */<br><br>int xx = MACRO_ARG_2<br> (<br> BOOST_PP_VARIADIC_ELEM(0,VAR_MACRO(2,3)),<br> BOOST_PP_VARIADIC_ELEM(1,VAR_MACRO(2,3))<br> );</pre>
+</div>
+<div>The second way is to use a macro in the library called
+BOOST_PP_OVERLOAD.
+This macro allows one to "overload" a variadic macro to non-variadic
+macros of different numbers of parameters, using a common prefix.
+</div>
+<h4>Example<u> - Passing variadic data as a whole to
+BOOST_PP_OVERLOAD
+and on to a non-variadic macro.<br>
+</u></h4>
+<div class="code">
+<pre>#define MACRO_ARG_2(x,y) BOOST_PP_ADD(x,y)<br>#define VAR_MACRO(...) __VA_ARGS__<br><br>/* The following will work correctly */<br><br>int xx = BOOST_PP_OVERLOAD(MACRO_ARG_,VAR_MACRO(2,3))(VAR_MACRO(2,3));<br><br>/* For Visual C++ it is necessary to do this */<br><br>int xx = <br>BOOST_PP_CAT(BOOST_PP_OVERLOAD(MACRO_ARG_,VAR_MACRO(2,3))(VAR_MACRO(2,3)),BOOST_PP_EMPTY());</pre>
+</div><br>
+<div>Although these techniques will work when passing variadic
+data to
+non-variadic macros, it is much better and less problematical to
+work internally with the existing library data types and to only use
+variadic
+macros as an interface for end-users when there is a need to have a
+macro which takes a
+variable number of parameters.<br>
+</div>
+<b>See</b> <b>Also</b><br>
+<ul>
+<li>BOOST_PP_VARIADICS</li>
+<li>Tuple Macros<br>
+</li>
+<li><a href="../headers/variadic.html">Variadic
+Macros<br>
+</a></li>
+<li>BOOST_PP_ARRAY_ENUM</li>
+<li>BOOST_PP_LIST_ENUM</li>
+<li>BOOST_PP_SEQ_ENUM</li>
+<li>BOOST_PP_TUPLE_ENUM</li>
+<li>BOOST_PP_OVERLOAD</li>
+</ul>
+<hr size="1">
+<div style="margin-left: 0px;"> <i>© Copyright
+Edward Diener
+2011</i> </div>
+<div style="margin-left: 0px;">
+<p><small>Distributed under the Boost Software License,
+Version 1.0.
+(See accompanying file LICENSE_1_0.txt
+or copy at www.boost.org/LICENSE_1_0.txt)</small></p>
+</div>
+ </body>
+</html>
\ No newline at end of file
Added: branches/pplib/v2/libs/preprocessor/index.html
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/index.html 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,18 @@
+<html>
+<head>
+<meta http-equiv="refresh" content="0; URL=doc/index.html">
+</head>
+<body>
+Automatic redirection failed, please go to
+doc/index.html.
+
+<!--
+© Copyright Housemarque Oy 2002
+© Copyright Paul Mensonides 2002
+Distributed under the Boost Software License, Version 1.0.
+(See accompanying file LICENSE_1_0.txt or copy at
+http://www.boost.org/LICENSE_1_0.txt)
+-->
+
+</body>
+</html>
\ No newline at end of file
Added: branches/pplib/v2/libs/preprocessor/test/Jamfile.v2
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/test/Jamfile.v2 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,175 @@
+#~ Copyright Rene Rivera 2008
+#~ Distributed under the Boost Software License, Version 1.0.
+#~ (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+import testing ;
+
+project preprocessor_tests : requirements <warnings>on
+ <toolset>gcc-4.3.0:<warnings>all
+ <toolset>gcc-4.3.0:<cxxflags>-Wno-variadic-macros
+ <toolset>gcc-4.4.0:<warnings>all
+ <toolset>gcc-4.4.0:<cxxflags>-Wno-variadic-macros
+ <toolset>gcc-4.5.0:<warnings>all
+ <toolset>gcc-4.5.0:<cxxflags>-Wno-variadic-macros
+ <toolset>gcc-4.5.0:<linkflags>"-Wl,--enable-auto-import"
+ <toolset>gcc-4.5.2:<warnings>all
+ <toolset>gcc-4.5.2:<cxxflags>-Wno-variadic-macros
+ <toolset>msvc:<warnings>all
+ ;
+
+test-suite preprocessor
+ :
+ [ compile arithmetic.cpp ]
+ [ compile array.cpp ]
+ [ compile comparison.cpp ]
+ [ compile control.cpp ]
+ [ compile debug.cpp ]
+ [ compile facilities.cpp ]
+ [ compile iteration.cpp ]
+ [ compile list.cpp ]
+ [ compile logical.cpp ]
+ [ compile repetition.cpp ]
+ [ compile selection.cpp ]
+ [ compile seq.cpp ]
+ [ compile slot.cpp ]
+ [ compile tuple.cpp ]
+ [ compile variadic.cpp ]
+ ;
+
+test-suite preprocessor_nvm
+ :
+ [ compile arithmetic.cpp : <define>BOOST_PP_VARIADICS=0 : arithmetic_nvm ]
+ [ compile array.cpp : <define>BOOST_PP_VARIADICS=0 : array_nvm ]
+ [ compile comparison.cpp : <define>BOOST_PP_VARIADICS=0 : comparison_nvm ]
+ [ compile control.cpp : <define>BOOST_PP_VARIADICS=0 : control_nvm ]
+ [ compile debug.cpp : <define>BOOST_PP_VARIADICS=0 : debug_nvm ]
+ [ compile facilities.cpp : <define>BOOST_PP_VARIADICS=0 : facilities_nvm ]
+ [ compile iteration.cpp : <define>BOOST_PP_VARIADICS=0 : iteration_nvm ]
+ [ compile list.cpp : <define>BOOST_PP_VARIADICS=0 : list_nvm ]
+ [ compile logical.cpp : <define>BOOST_PP_VARIADICS=0 : logical_nvm ]
+ [ compile repetition.cpp : <define>BOOST_PP_VARIADICS=0 : repetition_nvm ]
+ [ compile selection.cpp : <define>BOOST_PP_VARIADICS=0 : selection_nvm ]
+ [ compile seq.cpp : <define>BOOST_PP_VARIADICS=0 : seq_nvm ]
+ [ compile slot.cpp : <define>BOOST_PP_VARIADICS=0 : slot_nvm ]
+ [ compile tuple.cpp : <define>BOOST_PP_VARIADICS=0 : tuple_nvm ]
+ ;
+
+test-suite preprocessor_c
+ :
+ [ compile arithmetic.c
+ : <toolset>gcc:<cflags>-std=c99
+ : arithmetic_c
+ ]
+ [ compile array.c
+ : <toolset>gcc:<cflags>-std=c99
+ : array_c
+ ]
+ [ compile comparison.c
+ : <toolset>gcc:<cflags>-std=c99
+ : comparison_c
+ ]
+ [ compile control.c
+ : <toolset>gcc:<cflags>-std=c99
+ : control_c
+ ]
+ [ compile debug.c
+ : <toolset>gcc:<cflags>-std=c99
+ : debug_c
+ ]
+ [ compile facilities.c
+ : <toolset>gcc:<cflags>-std=c99
+ : facilities_c
+ ]
+ [ compile list.c
+ : <toolset>gcc:<cflags>-std=c99
+ : list_c
+ ]
+ [ compile logical.c
+ : <toolset>gcc:<cflags>-std=c99
+ : logical_c
+ ]
+ [ compile selection.c
+ : <toolset>gcc:<cflags>-std=c99
+ : selection_c
+ ]
+ [ compile seq.c
+ : <toolset>gcc:<cflags>-std=c99
+ : seq_c
+ ]
+ [ compile slot.c
+ : <toolset>gcc:<cflags>-std=c99
+ : slot_c
+ ]
+ [ compile tuple.c
+ : <toolset>gcc:<cflags>-std=c99
+ : tuple_c
+ ]
+ [ compile variadic.c
+ : <toolset>gcc:<cflags>-std=c99
+ : variadic_c
+ ]
+ ;
+
+test-suite preprocessor_c_nvm
+ :
+ [ compile arithmetic.c
+ : <define>BOOST_PP_VARIADICS=0
+ <toolset>gcc:<cflags>-std=c99
+ : arithmetic_c_nvm
+ ]
+ [ compile array.c
+ : <define>BOOST_PP_VARIADICS=0
+ <toolset>gcc:<cflags>-std=c99
+ : array_c_nvm
+ ]
+ [ compile comparison.c
+ : <define>BOOST_PP_VARIADICS=0
+ <toolset>gcc:<cflags>-std=c99
+ : comparison_c_nvm
+ ]
+ [ compile control.c
+ : <define>BOOST_PP_VARIADICS=0
+ <toolset>gcc:<cflags>-std=c99
+ : control_c_nvm
+ ]
+ [ compile debug.c
+ : <define>BOOST_PP_VARIADICS=0
+ <toolset>gcc:<cflags>-std=c99
+ : debug_c_nvm
+ ]
+ [ compile facilities.c
+ : <define>BOOST_PP_VARIADICS=0
+ <toolset>gcc:<cflags>-std=c99
+ : facilities_c_nvm
+ ]
+ [ compile list.c
+ : <define>BOOST_PP_VARIADICS=0
+ <toolset>gcc:<cflags>-std=c99
+ : list_c_nvm
+ ]
+ [ compile logical.c
+ : <define>BOOST_PP_VARIADICS=0
+ <toolset>gcc:<cflags>-std=c99
+ : logical_c_nvm
+ ]
+ [ compile selection.c
+ : <define>BOOST_PP_VARIADICS=0
+ <toolset>gcc:<cflags>-std=c99
+ : selection_c_nvm
+ ]
+ [ compile seq.c
+ : <define>BOOST_PP_VARIADICS=0
+ <toolset>gcc:<cflags>-std=c99
+ : seq_c_nvm
+ ]
+ [ compile slot.c
+ : <define>BOOST_PP_VARIADICS=0
+ <toolset>gcc:<cflags>-std=c99
+ : slot_c_nvm
+ ]
+ [ compile tuple.c
+ : <define>BOOST_PP_VARIADICS=0
+ <toolset>gcc:<cflags>-std=c99
+ : tuple_c_nvm
+ ]
+ ;
Added: branches/pplib/v2/libs/preprocessor/test/arithmetic.c
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/test/arithmetic.c 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,62 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# include <boost/preprocessor/arithmetic.hpp>
+# include <boost/preprocessor/config/limits.hpp>
+# include <libs/preprocessor/test/test.h>
+
+/* addition */
+
+BEGIN BOOST_PP_ADD(2, 3) == 5 END
+
+BEGIN BOOST_PP_ADD(BOOST_PP_ADD(2, 2), 2) == 6 END
+BEGIN BOOST_PP_ADD(2, BOOST_PP_ADD(1, 4)) == 7 END
+BEGIN BOOST_PP_ADD(BOOST_PP_ADD(2, 2), BOOST_PP_ADD(2, 2)) == 8 END
+
+/* subtraction */
+
+BEGIN BOOST_PP_SUB(11, 0) == 11 END
+BEGIN BOOST_PP_SUB(12, 1) == 11 END
+BEGIN BOOST_PP_SUB(3, 4) == 0 END
+
+BEGIN BOOST_PP_SUB(5, BOOST_PP_SUB(3, 2)) == 4 END
+BEGIN BOOST_PP_SUB(BOOST_PP_SUB(10, 5), 2) == 3 END
+BEGIN BOOST_PP_SUB(BOOST_PP_SUB(7, 3), BOOST_PP_SUB(10, 8)) == 2 END
+
+/* multiplication */
+
+BEGIN BOOST_PP_MUL(0, 1) == 0 END
+BEGIN BOOST_PP_MUL(1, 0) == 0 END
+BEGIN BOOST_PP_MUL(1, 1) == 1 END
+BEGIN BOOST_PP_MUL(4, 3) == 12 END
+
+BEGIN BOOST_PP_MUL(BOOST_PP_MUL(2, 2), 2) == 8 END
+BEGIN BOOST_PP_MUL(2, BOOST_PP_MUL(2, 2)) == 8 END
+BEGIN BOOST_PP_MUL(BOOST_PP_MUL(2, 2), BOOST_PP_MUL(2, 2)) == 16 END
+
+/* division */
+
+BEGIN BOOST_PP_DIV(2, 1) == 2 END
+BEGIN BOOST_PP_DIV(0, 5) == 0 END
+BEGIN BOOST_PP_DIV(7, 3) == 2 END
+
+BEGIN BOOST_PP_DIV(BOOST_PP_DIV(4, 2), 2) == 1 END
+BEGIN BOOST_PP_DIV(10, BOOST_PP_DIV(10, 2)) == 2 END
+BEGIN BOOST_PP_DIV(BOOST_PP_DIV(10, 2), BOOST_PP_DIV(4, 2)) == 2 END
+
+/* modulus */
+
+BEGIN BOOST_PP_MOD(5, 5) == 0 END
+BEGIN BOOST_PP_MOD(9, 5) == 4 END
+BEGIN BOOST_PP_MOD(7, 4) == 3 END
+
+BEGIN BOOST_PP_MOD(BOOST_PP_MOD(5, 3), 3) == 2 END
+BEGIN BOOST_PP_MOD(5, BOOST_PP_MOD(4, 3)) == 0 END
Added: branches/pplib/v2/libs/preprocessor/test/arithmetic.cpp
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/test/arithmetic.cpp 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,62 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# include <boost/preprocessor/arithmetic.hpp>
+# include <boost/preprocessor/config/limits.hpp>
+# include <libs/preprocessor/test/test.h>
+
+// addition
+
+BEGIN BOOST_PP_ADD(2, 3) == 5 END
+
+BEGIN BOOST_PP_ADD(BOOST_PP_ADD(2, 2), 2) == 6 END
+BEGIN BOOST_PP_ADD(2, BOOST_PP_ADD(1, 4)) == 7 END
+BEGIN BOOST_PP_ADD(BOOST_PP_ADD(2, 2), BOOST_PP_ADD(2, 2)) == 8 END
+
+// subtraction
+
+BEGIN BOOST_PP_SUB(11, 0) == 11 END
+BEGIN BOOST_PP_SUB(12, 1) == 11 END
+BEGIN BOOST_PP_SUB(3, 4) == 0 END
+
+BEGIN BOOST_PP_SUB(5, BOOST_PP_SUB(3, 2)) == 4 END
+BEGIN BOOST_PP_SUB(BOOST_PP_SUB(10, 5), 2) == 3 END
+BEGIN BOOST_PP_SUB(BOOST_PP_SUB(7, 3), BOOST_PP_SUB(10, 8)) == 2 END
+
+// multiplication
+
+BEGIN BOOST_PP_MUL(0, 1) == 0 END
+BEGIN BOOST_PP_MUL(1, 0) == 0 END
+BEGIN BOOST_PP_MUL(1, 1) == 1 END
+BEGIN BOOST_PP_MUL(4, 3) == 12 END
+
+BEGIN BOOST_PP_MUL(BOOST_PP_MUL(2, 2), 2) == 8 END
+BEGIN BOOST_PP_MUL(2, BOOST_PP_MUL(2, 2)) == 8 END
+BEGIN BOOST_PP_MUL(BOOST_PP_MUL(2, 2), BOOST_PP_MUL(2, 2)) == 16 END
+
+// division
+
+BEGIN BOOST_PP_DIV(2, 1) == 2 END
+BEGIN BOOST_PP_DIV(0, 5) == 0 END
+BEGIN BOOST_PP_DIV(7, 3) == 2 END
+
+BEGIN BOOST_PP_DIV(BOOST_PP_DIV(4, 2), 2) == 1 END
+BEGIN BOOST_PP_DIV(10, BOOST_PP_DIV(10, 2)) == 2 END
+BEGIN BOOST_PP_DIV(BOOST_PP_DIV(10, 2), BOOST_PP_DIV(4, 2)) == 2 END
+
+// modulus
+
+BEGIN BOOST_PP_MOD(5, 5) == 0 END
+BEGIN BOOST_PP_MOD(9, 5) == 4 END
+BEGIN BOOST_PP_MOD(7, 4) == 3 END
+
+BEGIN BOOST_PP_MOD(BOOST_PP_MOD(5, 3), 3) == 2 END
+BEGIN BOOST_PP_MOD(5, BOOST_PP_MOD(4, 3)) == 0 END
Added: branches/pplib/v2/libs/preprocessor/test/array.c
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/test/array.c 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,93 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* Revised by Edward Diener (2011) */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# include <boost/preprocessor/array.hpp>
+# include <libs/preprocessor/test/test.h>
+# include <boost/preprocessor/list/at.hpp>
+# include <boost/preprocessor/seq/elem.hpp>
+# include <boost/preprocessor/tuple/elem.hpp>
+# if BOOST_PP_VARIADICS
+# include <boost/preprocessor/variadic/size.hpp>
+# include <boost/preprocessor/variadic/elem.hpp>
+# endif
+
+# define ARRAY (3, (0, 1, 2))
+# define ARRAY_LARGE (33, (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32))
+# define ARRAY_VERY_LARGE (64, (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63))
+
+// element access
+
+BEGIN BOOST_PP_ARRAY_ELEM(1, ARRAY) == 1 END
+BEGIN BOOST_PP_ARRAY_ELEM(2, (5, (0, 1, 2, 3, 4))) == 2 END
+BEGIN BOOST_PP_ARRAY_ELEM(28, ARRAY_LARGE) == 28 END
+BEGIN BOOST_PP_ARRAY_ELEM(17, (33, (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32))) == 17 END
+BEGIN BOOST_PP_ARRAY_ELEM(42, ARRAY_VERY_LARGE) == 42 END
+BEGIN BOOST_PP_ARRAY_ELEM(62, (64, (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63))) == 62 END
+
+// size
+
+BEGIN BOOST_PP_ARRAY_SIZE(ARRAY) == 3 END
+BEGIN BOOST_PP_ARRAY_SIZE((5, (0, 1, 2, 3, 4))) == 5 END
+BEGIN BOOST_PP_ARRAY_SIZE(ARRAY_LARGE) == 33 END
+BEGIN BOOST_PP_ARRAY_SIZE((33, (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32))) == 33 END
+BEGIN BOOST_PP_ARRAY_SIZE(ARRAY_VERY_LARGE) == 64 END
+BEGIN BOOST_PP_ARRAY_SIZE((64, (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63))) == 64 END
+
+// enum
+
+# if BOOST_PP_VARIADICS
+
+BEGIN BOOST_PP_VARIADIC_ELEM(2,BOOST_PP_ARRAY_ENUM(ARRAY)) == 2 END
+BEGIN BOOST_PP_VARIADIC_ELEM(3,BOOST_PP_ARRAY_ENUM((5, (0, 1, 2, 3, 4)))) == 3 END
+BEGIN BOOST_PP_VARIADIC_ELEM(31,BOOST_PP_ARRAY_ENUM(ARRAY_LARGE)) == 31 END
+BEGIN BOOST_PP_VARIADIC_ELEM(13,BOOST_PP_ARRAY_ENUM((33, (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32)))) == 13 END
+BEGIN BOOST_PP_VARIADIC_ELEM(39,BOOST_PP_ARRAY_ENUM(ARRAY_VERY_LARGE)) == 39 END
+BEGIN BOOST_PP_VARIADIC_ELEM(24,BOOST_PP_ARRAY_ENUM((64, (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63)))) == 24 END
+BEGIN BOOST_PP_VARIADIC_SIZE(BOOST_PP_ARRAY_ENUM((5, (0, 1, 2, 3, 4)))) == 5 END
+BEGIN BOOST_PP_VARIADIC_SIZE(BOOST_PP_ARRAY_ENUM(ARRAY_LARGE)) == 33 END
+BEGIN BOOST_PP_VARIADIC_SIZE(BOOST_PP_ARRAY_ENUM(ARRAY_VERY_LARGE)) == 64 END
+BEGIN BOOST_PP_VARIADIC_SIZE(BOOST_PP_ARRAY_ENUM((64, (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63)))) == 64 END
+
+# endif
+
+// to_list
+
+BEGIN BOOST_PP_LIST_AT(BOOST_PP_ARRAY_TO_LIST(ARRAY), 1) == 1 END
+BEGIN BOOST_PP_LIST_AT(BOOST_PP_ARRAY_TO_LIST((5, (0, 1, 2, 3, 4))), 4) == 4 END
+BEGIN BOOST_PP_LIST_AT(BOOST_PP_ARRAY_TO_LIST((33, (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32))), 26) == 26 END
+BEGIN BOOST_PP_LIST_AT(BOOST_PP_ARRAY_TO_LIST(ARRAY_VERY_LARGE), 60) == 60 END
+
+// to_seq
+
+BEGIN BOOST_PP_SEQ_ELEM(0, BOOST_PP_ARRAY_TO_SEQ(ARRAY)) == 0 END
+BEGIN BOOST_PP_SEQ_ELEM(3, BOOST_PP_ARRAY_TO_SEQ((5, (0, 1, 2, 3, 4)))) == 3 END
+BEGIN BOOST_PP_SEQ_ELEM(17, BOOST_PP_ARRAY_TO_SEQ(ARRAY_LARGE)) == 17 END
+BEGIN BOOST_PP_SEQ_ELEM(42, BOOST_PP_ARRAY_TO_SEQ((64, (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63)))) == 42 END
+
+// to_tuple
+
+# if BOOST_PP_VARIADICS
+
+BEGIN BOOST_PP_TUPLE_ELEM(2, BOOST_PP_ARRAY_TO_TUPLE(ARRAY)) == 2 END
+BEGIN BOOST_PP_TUPLE_ELEM(1, BOOST_PP_ARRAY_TO_TUPLE((5, (0, 1, 2, 3, 4)))) == 1 END
+BEGIN BOOST_PP_TUPLE_ELEM(26, BOOST_PP_ARRAY_TO_TUPLE(ARRAY_LARGE)) == 26 END
+BEGIN BOOST_PP_TUPLE_ELEM(37, BOOST_PP_ARRAY_TO_TUPLE((64, (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63)))) == 37 END
+
+# else
+
+BEGIN BOOST_PP_TUPLE_ELEM(3, 2, BOOST_PP_ARRAY_TO_TUPLE(ARRAY)) == 2 END
+BEGIN BOOST_PP_TUPLE_ELEM(5, 1, BOOST_PP_ARRAY_TO_TUPLE((5, (0, 1, 2, 3, 4)))) == 1 END
+BEGIN BOOST_PP_TUPLE_ELEM(33, 26, BOOST_PP_ARRAY_TO_TUPLE(ARRAY_LARGE)) == 26 END
+BEGIN BOOST_PP_TUPLE_ELEM(64, 37, BOOST_PP_ARRAY_TO_TUPLE((64, (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63)))) == 37 END
+
+# endif
Added: branches/pplib/v2/libs/preprocessor/test/array.cpp
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/test/array.cpp 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,93 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* Revised by Edward Diener (2011) */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# include <boost/preprocessor/array.hpp>
+# include <libs/preprocessor/test/test.h>
+# include <boost/preprocessor/list/at.hpp>
+# include <boost/preprocessor/seq/elem.hpp>
+# include <boost/preprocessor/tuple/elem.hpp>
+# if BOOST_PP_VARIADICS
+# include <boost/preprocessor/variadic/size.hpp>
+# include <boost/preprocessor/variadic/elem.hpp>
+# endif
+
+# define ARRAY (3, (0, 1, 2))
+# define ARRAY_LARGE (33, (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32))
+# define ARRAY_VERY_LARGE (64, (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63))
+
+// element access
+
+BEGIN BOOST_PP_ARRAY_ELEM(1, ARRAY) == 1 END
+BEGIN BOOST_PP_ARRAY_ELEM(2, (5, (0, 1, 2, 3, 4))) == 2 END
+BEGIN BOOST_PP_ARRAY_ELEM(28, ARRAY_LARGE) == 28 END
+BEGIN BOOST_PP_ARRAY_ELEM(17, (33, (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32))) == 17 END
+BEGIN BOOST_PP_ARRAY_ELEM(42, ARRAY_VERY_LARGE) == 42 END
+BEGIN BOOST_PP_ARRAY_ELEM(62, (64, (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63))) == 62 END
+
+// size
+
+BEGIN BOOST_PP_ARRAY_SIZE(ARRAY) == 3 END
+BEGIN BOOST_PP_ARRAY_SIZE((5, (0, 1, 2, 3, 4))) == 5 END
+BEGIN BOOST_PP_ARRAY_SIZE(ARRAY_LARGE) == 33 END
+BEGIN BOOST_PP_ARRAY_SIZE((33, (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32))) == 33 END
+BEGIN BOOST_PP_ARRAY_SIZE(ARRAY_VERY_LARGE) == 64 END
+BEGIN BOOST_PP_ARRAY_SIZE((64, (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63))) == 64 END
+
+// enum
+
+# if BOOST_PP_VARIADICS
+
+BEGIN BOOST_PP_VARIADIC_ELEM(2,BOOST_PP_ARRAY_ENUM(ARRAY)) == 2 END
+BEGIN BOOST_PP_VARIADIC_ELEM(3,BOOST_PP_ARRAY_ENUM((5, (0, 1, 2, 3, 4)))) == 3 END
+BEGIN BOOST_PP_VARIADIC_ELEM(31,BOOST_PP_ARRAY_ENUM(ARRAY_LARGE)) == 31 END
+BEGIN BOOST_PP_VARIADIC_ELEM(13,BOOST_PP_ARRAY_ENUM((33, (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32)))) == 13 END
+BEGIN BOOST_PP_VARIADIC_ELEM(39,BOOST_PP_ARRAY_ENUM(ARRAY_VERY_LARGE)) == 39 END
+BEGIN BOOST_PP_VARIADIC_ELEM(24,BOOST_PP_ARRAY_ENUM((64, (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63)))) == 24 END
+BEGIN BOOST_PP_VARIADIC_SIZE(BOOST_PP_ARRAY_ENUM((5, (0, 1, 2, 3, 4)))) == 5 END
+BEGIN BOOST_PP_VARIADIC_SIZE(BOOST_PP_ARRAY_ENUM(ARRAY_LARGE)) == 33 END
+BEGIN BOOST_PP_VARIADIC_SIZE(BOOST_PP_ARRAY_ENUM(ARRAY_VERY_LARGE)) == 64 END
+BEGIN BOOST_PP_VARIADIC_SIZE(BOOST_PP_ARRAY_ENUM((64, (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63)))) == 64 END
+
+# endif
+
+// to_list
+
+BEGIN BOOST_PP_LIST_AT(BOOST_PP_ARRAY_TO_LIST(ARRAY), 1) == 1 END
+BEGIN BOOST_PP_LIST_AT(BOOST_PP_ARRAY_TO_LIST((5, (0, 1, 2, 3, 4))), 4) == 4 END
+BEGIN BOOST_PP_LIST_AT(BOOST_PP_ARRAY_TO_LIST((33, (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32))), 26) == 26 END
+BEGIN BOOST_PP_LIST_AT(BOOST_PP_ARRAY_TO_LIST(ARRAY_VERY_LARGE), 60) == 60 END
+
+// to_seq
+
+BEGIN BOOST_PP_SEQ_ELEM(0, BOOST_PP_ARRAY_TO_SEQ(ARRAY)) == 0 END
+BEGIN BOOST_PP_SEQ_ELEM(3, BOOST_PP_ARRAY_TO_SEQ((5, (0, 1, 2, 3, 4)))) == 3 END
+BEGIN BOOST_PP_SEQ_ELEM(17, BOOST_PP_ARRAY_TO_SEQ(ARRAY_LARGE)) == 17 END
+BEGIN BOOST_PP_SEQ_ELEM(42, BOOST_PP_ARRAY_TO_SEQ((64, (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63)))) == 42 END
+
+// to_tuple
+
+# if BOOST_PP_VARIADICS
+
+BEGIN BOOST_PP_TUPLE_ELEM(2, BOOST_PP_ARRAY_TO_TUPLE(ARRAY)) == 2 END
+BEGIN BOOST_PP_TUPLE_ELEM(1, BOOST_PP_ARRAY_TO_TUPLE((5, (0, 1, 2, 3, 4)))) == 1 END
+BEGIN BOOST_PP_TUPLE_ELEM(26, BOOST_PP_ARRAY_TO_TUPLE(ARRAY_LARGE)) == 26 END
+BEGIN BOOST_PP_TUPLE_ELEM(37, BOOST_PP_ARRAY_TO_TUPLE((64, (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63)))) == 37 END
+
+# else
+
+BEGIN BOOST_PP_TUPLE_ELEM(3, 2, BOOST_PP_ARRAY_TO_TUPLE(ARRAY)) == 2 END
+BEGIN BOOST_PP_TUPLE_ELEM(5, 1, BOOST_PP_ARRAY_TO_TUPLE((5, (0, 1, 2, 3, 4)))) == 1 END
+BEGIN BOOST_PP_TUPLE_ELEM(33, 26, BOOST_PP_ARRAY_TO_TUPLE(ARRAY_LARGE)) == 26 END
+BEGIN BOOST_PP_TUPLE_ELEM(64, 37, BOOST_PP_ARRAY_TO_TUPLE((64, (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63)))) == 37 END
+
+# endif
Added: branches/pplib/v2/libs/preprocessor/test/comparison.c
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/test/comparison.c 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,45 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# include <boost/preprocessor/comparison.hpp>
+# include <libs/preprocessor/test/test.h>
+
+/* equality */
+
+BEGIN BOOST_PP_EQUAL(2, 0) == 0 END
+BEGIN BOOST_PP_EQUAL(2, 2) == 1 END
+
+/* inequality */
+
+BEGIN BOOST_PP_NOT_EQUAL(2, 0) == 1 END
+BEGIN BOOST_PP_NOT_EQUAL(2, 2) == 0 END
+
+/* less */
+
+BEGIN BOOST_PP_LESS(2, 1) == 0 END
+BEGIN BOOST_PP_LESS(1, 2) == 1 END
+
+/* less_equal */
+
+BEGIN BOOST_PP_LESS_EQUAL(2, 1) == 0 END
+BEGIN BOOST_PP_LESS_EQUAL(1, 2) == 1 END
+BEGIN BOOST_PP_LESS_EQUAL(2, 2) == 1 END
+
+/* greater */
+
+BEGIN BOOST_PP_GREATER(2, 1) == 1 END
+BEGIN BOOST_PP_GREATER(1, 2) == 0 END
+
+/* greater_equal */
+
+BEGIN BOOST_PP_GREATER_EQUAL(2, 1) == 1 END
+BEGIN BOOST_PP_GREATER_EQUAL(1, 2) == 0 END
+BEGIN BOOST_PP_GREATER_EQUAL(2, 2) == 1 END
Added: branches/pplib/v2/libs/preprocessor/test/comparison.cpp
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/test/comparison.cpp 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,45 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# include <boost/preprocessor/comparison.hpp>
+# include <libs/preprocessor/test/test.h>
+
+// equality
+
+BEGIN BOOST_PP_EQUAL(2, 0) == 0 END
+BEGIN BOOST_PP_EQUAL(2, 2) == 1 END
+
+// inequality
+
+BEGIN BOOST_PP_NOT_EQUAL(2, 0) == 1 END
+BEGIN BOOST_PP_NOT_EQUAL(2, 2) == 0 END
+
+// less
+
+BEGIN BOOST_PP_LESS(2, 1) == 0 END
+BEGIN BOOST_PP_LESS(1, 2) == 1 END
+
+// less_equal
+
+BEGIN BOOST_PP_LESS_EQUAL(2, 1) == 0 END
+BEGIN BOOST_PP_LESS_EQUAL(1, 2) == 1 END
+BEGIN BOOST_PP_LESS_EQUAL(2, 2) == 1 END
+
+// greater
+
+BEGIN BOOST_PP_GREATER(2, 1) == 1 END
+BEGIN BOOST_PP_GREATER(1, 2) == 0 END
+
+// greater_equal
+
+BEGIN BOOST_PP_GREATER_EQUAL(2, 1) == 1 END
+BEGIN BOOST_PP_GREATER_EQUAL(1, 2) == 0 END
+BEGIN BOOST_PP_GREATER_EQUAL(2, 2) == 1 END
Added: branches/pplib/v2/libs/preprocessor/test/control.c
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/test/control.c 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,40 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# include <boost/preprocessor/arithmetic/add.hpp>
+# include <boost/preprocessor/arithmetic/dec.hpp>
+# include <boost/preprocessor/control.hpp>
+# include <libs/preprocessor/test/test.h>
+
+# define TR(x) 1
+
+BEGIN BOOST_PP_EXPR_IIF(0, TR)(0) == 0 END
+BEGIN BOOST_PP_EXPR_IIF(1, TR)(0) == 1 END
+
+BEGIN BOOST_PP_EXPR_IF(3, TR)(0) == 1 END
+BEGIN BOOST_PP_EXPR_IF(0, TR)(0) == 0 END
+
+BEGIN BOOST_PP_IIF(0, 1, 0) == 0 END
+BEGIN BOOST_PP_IIF(1, 1, 0) == 1 END
+
+BEGIN BOOST_PP_IF(0, 1, 0) == 0 END
+BEGIN BOOST_PP_IF(9, 1, 0) == 1 END
+
+# define PRED(d, state) state
+# define OP_1(d, state) BOOST_PP_DEC(state)
+
+BEGIN BOOST_PP_WHILE(PRED, OP_1, 50) == 0 END
+
+# define OP_2(d, state) BOOST_PP_DEC(BOOST_PP_ADD(BOOST_PP_WHILE(PRED, OP_1, state), state))
+# define OP_3(d, state) BOOST_PP_DEC(BOOST_PP_ADD_D(d, BOOST_PP_WHILE_ ## d(PRED, OP_1, state), state))
+
+BEGIN BOOST_PP_WHILE(PRED, OP_2, 10) == 0 END
+BEGIN BOOST_PP_WHILE(PRED, OP_3, 10) == 0 END
Added: branches/pplib/v2/libs/preprocessor/test/control.cpp
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/test/control.cpp 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,40 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# include <boost/preprocessor/arithmetic/add.hpp>
+# include <boost/preprocessor/arithmetic/dec.hpp>
+# include <boost/preprocessor/control.hpp>
+# include <libs/preprocessor/test/test.h>
+
+# define TR(x) 1
+
+BEGIN BOOST_PP_EXPR_IIF(0, TR)(0) == 0 END
+BEGIN BOOST_PP_EXPR_IIF(1, TR)(0) == 1 END
+
+BEGIN BOOST_PP_EXPR_IF(3, TR)(0) == 1 END
+BEGIN BOOST_PP_EXPR_IF(0, TR)(0) == 0 END
+
+BEGIN BOOST_PP_IIF(0, 1, 0) == 0 END
+BEGIN BOOST_PP_IIF(1, 1, 0) == 1 END
+
+BEGIN BOOST_PP_IF(0, 1, 0) == 0 END
+BEGIN BOOST_PP_IF(9, 1, 0) == 1 END
+
+# define PRED(d, state) state
+# define OP_1(d, state) BOOST_PP_DEC(state)
+
+BEGIN BOOST_PP_WHILE(PRED, OP_1, 50) == 0 END
+
+# define OP_2(d, state) BOOST_PP_DEC(BOOST_PP_ADD(BOOST_PP_WHILE(PRED, OP_1, state), state))
+# define OP_3(d, state) BOOST_PP_DEC(BOOST_PP_ADD_D(d, BOOST_PP_WHILE_ ## d(PRED, OP_1, state), state))
+
+BEGIN BOOST_PP_WHILE(PRED, OP_2, 10) == 0 END
+BEGIN BOOST_PP_WHILE(PRED, OP_3, 10) == 0 END
Added: branches/pplib/v2/libs/preprocessor/test/debug.c
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/test/debug.c 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,21 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# include <boost/preprocessor/debug.hpp>
+# include <libs/preprocessor/test/test.h>
+
+BEGIN sizeof(BOOST_PP_ASSERT_MSG(0, "text") "") / sizeof(char) != 1 END
+BEGIN sizeof(BOOST_PP_ASSERT_MSG(1, "text") "") / sizeof(char) == 1 END
+
+BOOST_PP_ASSERT(10)
+
+# line BOOST_PP_LINE(100, __FILE__)
+BEGIN __LINE__ == 100 END
Added: branches/pplib/v2/libs/preprocessor/test/debug.cpp
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/test/debug.cpp 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,21 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# include <boost/preprocessor/debug.hpp>
+# include <libs/preprocessor/test/test.h>
+
+BEGIN sizeof(BOOST_PP_ASSERT_MSG(0, "text") "") / sizeof(char) != 1 END
+BEGIN sizeof(BOOST_PP_ASSERT_MSG(1, "text") "") / sizeof(char) == 1 END
+
+BOOST_PP_ASSERT(10)
+
+# line BOOST_PP_LINE(100, __FILE__)
+BEGIN __LINE__ == 100 END
Added: branches/pplib/v2/libs/preprocessor/test/facilities.c
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/test/facilities.c 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,28 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# include <boost/preprocessor/cat.hpp>
+# include <boost/preprocessor/facilities.hpp>
+# include <libs/preprocessor/test/test.h>
+
+BEGIN BOOST_PP_APPLY(BOOST_PP_NIL) 0 == 0 END
+BEGIN BOOST_PP_APPLY((0)) == 0 END
+
+BEGIN BOOST_PP_APPLY((BOOST_PP_EMPTY))() 0 == 0 END
+
+# define MACRO(x, y, z) 1
+# define ARGS (1, 2, 3)
+
+BEGIN BOOST_PP_EXPAND(MACRO ARGS) == 1 END
+
+BEGIN BOOST_PP_IDENTITY(1)() == 1 END
+
+BEGIN BOOST_PP_CAT(BOOST_PP_INTERCEPT, 2) 1 == 1 END
Added: branches/pplib/v2/libs/preprocessor/test/facilities.cpp
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/test/facilities.cpp 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,28 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# include <boost/preprocessor/cat.hpp>
+# include <boost/preprocessor/facilities.hpp>
+# include <libs/preprocessor/test/test.h>
+
+BEGIN BOOST_PP_APPLY(BOOST_PP_NIL) 0 == 0 END
+BEGIN BOOST_PP_APPLY((0)) == 0 END
+
+BEGIN BOOST_PP_APPLY((BOOST_PP_EMPTY))() 0 == 0 END
+
+# define MACRO(x, y, z) 1
+# define ARGS (1, 2, 3)
+
+BEGIN BOOST_PP_EXPAND(MACRO ARGS) == 1 END
+
+BEGIN BOOST_PP_IDENTITY(1)() == 1 END
+
+BEGIN BOOST_PP_CAT(BOOST_PP_INTERCEPT, 2) 1 == 1 END
Added: branches/pplib/v2/libs/preprocessor/test/iteration.cpp
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/test/iteration.cpp 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,33 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# if !BOOST_PP_IS_SELFISH
+#
+# include <libs/preprocessor/test/iteration.h>
+#
+# define TEST(n) BEGIN n == n END
+#
+# define BOOST_PP_LOCAL_MACRO(n) TEST(n)
+# define BOOST_PP_LOCAL_LIMITS (1, 5)
+# include BOOST_PP_LOCAL_ITERATE()
+#
+# define BOOST_PP_LOCAL_MACRO(n) TEST(n)
+# define BOOST_PP_LOCAL_LIMITS (5, 1)
+# include BOOST_PP_LOCAL_ITERATE()
+#
+# define BOOST_PP_INDIRECT_SELF <libs/preprocessor/test/iteration.cpp>
+# include BOOST_PP_INCLUDE_SELF()
+#
+# else
+
+BEGIN BOOST_PP_IS_SELFISH == 1 END
+
+# endif
Added: branches/pplib/v2/libs/preprocessor/test/iteration.h
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/test/iteration.h 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,62 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# if !BOOST_PP_IS_ITERATING
+#
+# include <boost/preprocessor/cat.hpp>
+# include <boost/preprocessor/iteration.hpp>
+# include <libs/preprocessor/test/test.h>
+#
+# define NO_FLAGS
+#
+# define BOOST_PP_ITERATION_PARAMS_1 (3, (1, 10, <libs/preprocessor/test/iteration.h>))
+# include BOOST_PP_ITERATE()
+#
+# undef NO_FLAGS
+#
+# define BOOST_PP_ITERATION_PARAMS_1 (4, (1, 5, <libs/preprocessor/test/iteration.h>, 0x0001))
+# include BOOST_PP_ITERATE()
+#
+# define BOOST_PP_ITERATION_PARAMS_1 (4, (1, 5, <libs/preprocessor/test/iteration.h>, 0x0002))
+# include BOOST_PP_ITERATE()
+#
+# else
+# if 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(), <libs/preprocessor/test/iteration.h>))
+# 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
+# endif
Added: branches/pplib/v2/libs/preprocessor/test/list.c
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/test/list.c 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,61 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* Revised by Edward Diener (2011) */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# include <boost/preprocessor/arithmetic/add.hpp>
+# include <boost/preprocessor/arithmetic/sub.hpp>
+# include <boost/preprocessor/comparison/less.hpp>
+# include <boost/preprocessor/list.hpp>
+# include <boost/preprocessor/tuple/elem.hpp>
+# include <boost/preprocessor/array/elem.hpp>
+# include <boost/preprocessor/seq/elem.hpp>
+# include <libs/preprocessor/test/test.h>
+
+# define LIST (4, (1, (5, (2, BOOST_PP_NIL))))
+
+# define REVERSAL(d, x, y) BOOST_PP_SUB_D(d, y, x)
+
+BEGIN BOOST_PP_LIST_FOLD_LEFT(BOOST_PP_SUB_D, 22, LIST) == 10 END
+BEGIN BOOST_PP_LIST_FOLD_RIGHT(BOOST_PP_ADD_D, 0, LIST) == 12 END
+BEGIN BOOST_PP_LIST_FOLD_RIGHT(REVERSAL, 0, LIST) == 4 END
+
+BEGIN BOOST_PP_LIST_CAT(BOOST_PP_LIST_REVERSE(LIST)) == 2514 END
+
+BEGIN BOOST_PP_LIST_CAT(BOOST_PP_LIST_REST_N(2, LIST)) == 52 END
+BEGIN BOOST_PP_LIST_CAT(BOOST_PP_LIST_FIRST_N(2, LIST)) == 41 END
+
+BEGIN BOOST_PP_LIST_AT(LIST, 2) == 5 END
+BEGIN BOOST_PP_LIST_SIZE(LIST) == 4 END
+
+BEGIN BOOST_PP_LIST_CAT(BOOST_PP_LIST_TRANSFORM(BOOST_PP_ADD_D, 2, LIST)) == 6374 END
+BEGIN BOOST_PP_LIST_CAT(BOOST_PP_LIST_APPEND(BOOST_PP_LIST_REST(LIST), LIST)) == 1524152 END
+
+# define F1(r, state, x) + x + state
+BEGIN BOOST_PP_LIST_FOR_EACH(F1, 1, LIST) == 16 END
+
+BEGIN BOOST_PP_TUPLE_ELEM(4, 3, BOOST_PP_LIST_TO_TUPLE(LIST)) == 2 END
+
+BEGIN BOOST_PP_LIST_CAT(BOOST_PP_LIST_FILTER(BOOST_PP_LESS_D, 3, LIST)) == 45 END
+
+# define F2(r, x) + BOOST_PP_TUPLE_ELEM(2, 0, x) + 2 - BOOST_PP_TUPLE_ELEM(2, 1, x)
+BEGIN BOOST_PP_LIST_FOR_EACH_PRODUCT(F2, 2, ( (1, (0, BOOST_PP_NIL)), (2, (3, BOOST_PP_NIL)) )) == 0 END
+
+# define L1 (0, (x, BOOST_PP_NIL))
+# define L2 (a, (1, (b, (2, BOOST_PP_NIL))))
+# define L3 (c, (3, (d, BOOST_PP_NIL)))
+
+# define LL (L1, (L2, (L3, BOOST_PP_NIL)))
+
+BEGIN BOOST_PP_LIST_CAT(BOOST_PP_LIST_FOLD_LEFT(BOOST_PP_LIST_APPEND_D, BOOST_PP_NIL, LL)) == 0x0a1b2c3d END
+
+BEGIN BOOST_PP_ARRAY_ELEM(2, BOOST_PP_LIST_TO_ARRAY(LIST)) == 5 END
+BEGIN BOOST_PP_SEQ_ELEM(3, BOOST_PP_LIST_TO_SEQ(LIST)) == 2 END
Added: branches/pplib/v2/libs/preprocessor/test/list.cpp
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/test/list.cpp 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,61 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* Revised by Edward Diener (2011) */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# include <boost/preprocessor/arithmetic/add.hpp>
+# include <boost/preprocessor/arithmetic/sub.hpp>
+# include <boost/preprocessor/comparison/less.hpp>
+# include <boost/preprocessor/list.hpp>
+# include <boost/preprocessor/tuple/elem.hpp>
+# include <boost/preprocessor/array/elem.hpp>
+# include <boost/preprocessor/seq/elem.hpp>
+# include <libs/preprocessor/test/test.h>
+
+# define LIST (4, (1, (5, (2, BOOST_PP_NIL))))
+
+# define REVERSAL(d, x, y) BOOST_PP_SUB_D(d, y, x)
+
+BEGIN BOOST_PP_LIST_FOLD_LEFT(BOOST_PP_SUB_D, 22, LIST) == 10 END
+BEGIN BOOST_PP_LIST_FOLD_RIGHT(BOOST_PP_ADD_D, 0, LIST) == 12 END
+BEGIN BOOST_PP_LIST_FOLD_RIGHT(REVERSAL, 0, LIST) == 4 END
+
+BEGIN BOOST_PP_LIST_CAT(BOOST_PP_LIST_REVERSE(LIST)) == 2514 END
+
+BEGIN BOOST_PP_LIST_CAT(BOOST_PP_LIST_REST_N(2, LIST)) == 52 END
+BEGIN BOOST_PP_LIST_CAT(BOOST_PP_LIST_FIRST_N(2, LIST)) == 41 END
+
+BEGIN BOOST_PP_LIST_AT(LIST, 2) == 5 END
+BEGIN BOOST_PP_LIST_SIZE(LIST) == 4 END
+
+BEGIN BOOST_PP_LIST_CAT(BOOST_PP_LIST_TRANSFORM(BOOST_PP_ADD_D, 2, LIST)) == 6374 END
+BEGIN BOOST_PP_LIST_CAT(BOOST_PP_LIST_APPEND(BOOST_PP_LIST_REST(LIST), LIST)) == 1524152 END
+
+# define F1(r, state, x) + x + state
+BEGIN BOOST_PP_LIST_FOR_EACH(F1, 1, LIST) == 16 END
+
+BEGIN BOOST_PP_TUPLE_ELEM(4, 3, BOOST_PP_LIST_TO_TUPLE(LIST)) == 2 END
+
+BEGIN BOOST_PP_LIST_CAT(BOOST_PP_LIST_FILTER(BOOST_PP_LESS_D, 3, LIST)) == 45 END
+
+# define F2(r, x) + BOOST_PP_TUPLE_ELEM(2, 0, x) + 2 - BOOST_PP_TUPLE_ELEM(2, 1, x)
+BEGIN BOOST_PP_LIST_FOR_EACH_PRODUCT(F2, 2, ( (1, (0, BOOST_PP_NIL)), (2, (3, BOOST_PP_NIL)) )) == 0 END
+
+# define L1 (0, (x, BOOST_PP_NIL))
+# define L2 (a, (1, (b, (2, BOOST_PP_NIL))))
+# define L3 (c, (3, (d, BOOST_PP_NIL)))
+
+# define LL (L1, (L2, (L3, BOOST_PP_NIL)))
+
+BEGIN BOOST_PP_LIST_CAT(BOOST_PP_LIST_FOLD_LEFT(BOOST_PP_LIST_APPEND_D, BOOST_PP_NIL, LL)) == 0x0a1b2c3d END
+
+BEGIN BOOST_PP_ARRAY_ELEM(2, BOOST_PP_LIST_TO_ARRAY(LIST)) == 5 END
+BEGIN BOOST_PP_SEQ_ELEM(3, BOOST_PP_LIST_TO_SEQ(LIST)) == 2 END
Added: branches/pplib/v2/libs/preprocessor/test/logical.c
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/test/logical.c 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,36 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# include <boost/preprocessor/logical.hpp>
+# include <libs/preprocessor/test/test.h>
+
+BEGIN BOOST_PP_NOT(0) == 1 END
+BEGIN BOOST_PP_NOT(2) == 0 END
+
+BEGIN BOOST_PP_AND(0, 0) == 0 END
+BEGIN BOOST_PP_AND(0, 3) == 0 END
+BEGIN BOOST_PP_AND(4, 0) == 0 END
+BEGIN BOOST_PP_AND(5, 6) == 1 END
+
+BEGIN BOOST_PP_OR(0, 0) == 0 END
+BEGIN BOOST_PP_OR(0, 7) == 1 END
+BEGIN BOOST_PP_OR(8, 0) == 1 END
+BEGIN BOOST_PP_OR(9, 1) == 1 END
+
+BEGIN BOOST_PP_XOR(0, 0) == 0 END
+BEGIN BOOST_PP_XOR(0, 2) == 1 END
+BEGIN BOOST_PP_XOR(3, 0) == 1 END
+BEGIN BOOST_PP_XOR(4, 5) == 0 END
+
+BEGIN BOOST_PP_NOR(0, 0) == 1 END
+BEGIN BOOST_PP_NOR(0, 6) == 0 END
+BEGIN BOOST_PP_NOR(7, 0) == 0 END
+BEGIN BOOST_PP_NOR(8, 9) == 0 END
Added: branches/pplib/v2/libs/preprocessor/test/logical.cpp
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/test/logical.cpp 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,36 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# include <boost/preprocessor/logical.hpp>
+# include <libs/preprocessor/test/test.h>
+
+BEGIN BOOST_PP_NOT(0) == 1 END
+BEGIN BOOST_PP_NOT(2) == 0 END
+
+BEGIN BOOST_PP_AND(0, 0) == 0 END
+BEGIN BOOST_PP_AND(0, 3) == 0 END
+BEGIN BOOST_PP_AND(4, 0) == 0 END
+BEGIN BOOST_PP_AND(5, 6) == 1 END
+
+BEGIN BOOST_PP_OR(0, 0) == 0 END
+BEGIN BOOST_PP_OR(0, 7) == 1 END
+BEGIN BOOST_PP_OR(8, 0) == 1 END
+BEGIN BOOST_PP_OR(9, 1) == 1 END
+
+BEGIN BOOST_PP_XOR(0, 0) == 0 END
+BEGIN BOOST_PP_XOR(0, 2) == 1 END
+BEGIN BOOST_PP_XOR(3, 0) == 1 END
+BEGIN BOOST_PP_XOR(4, 5) == 0 END
+
+BEGIN BOOST_PP_NOR(0, 0) == 1 END
+BEGIN BOOST_PP_NOR(0, 6) == 0 END
+BEGIN BOOST_PP_NOR(7, 0) == 0 END
+BEGIN BOOST_PP_NOR(8, 9) == 0 END
Added: branches/pplib/v2/libs/preprocessor/test/repetition.cpp
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/test/repetition.cpp 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,50 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# include <boost/preprocessor/arithmetic/inc.hpp>
+# include <boost/preprocessor/cat.hpp>
+# include <boost/preprocessor/comparison/equal.hpp>
+# include <boost/preprocessor/comparison/not_equal.hpp>
+# include <boost/preprocessor/facilities/intercept.hpp>
+# include <boost/preprocessor/repetition.hpp>
+# include <libs/preprocessor/test/test.h>
+
+# define MAX 10
+
+# define NTH(z, n, data) data ## n
+
+int add(BOOST_PP_ENUM_PARAMS(MAX, int x)) {
+ return BOOST_PP_REPEAT(MAX, NTH, + x);
+}
+
+const int r = add(BOOST_PP_ENUM_PARAMS(MAX, 1 BOOST_PP_INTERCEPT));
+
+# define CONSTANT(z, n, text) BOOST_PP_CAT(text, n) = n
+const int BOOST_PP_ENUM(MAX, CONSTANT, default_param_);
+
+# define TEST(n) \
+ void BOOST_PP_CAT(test_enum_params, n)(BOOST_PP_ENUM_PARAMS(n, int x)); \
+ void BOOST_PP_CAT(test_enum_params_with_a_default, n)(BOOST_PP_ENUM_PARAMS_WITH_A_DEFAULT(n, int x, 0)); \
+ void BOOST_PP_CAT(test_enum_params_with_defaults, n)(BOOST_PP_ENUM_PARAMS_WITH_DEFAULTS(n, int x, default_param_));
+
+TEST(0)
+TEST(MAX)
+
+template<BOOST_PP_ENUM_PARAMS(MAX, class T)> struct no_rescan;
+
+# define F1(z, n, p) p n
+BEGIN 1 + (4+5+6) BOOST_PP_REPEAT_FROM_TO(4, 7, F1, -) END
+
+# define PRED(r, state) BOOST_PP_NOT_EQUAL(state, BOOST_PP_INC(MAX))
+# define OP(r, state) BOOST_PP_INC(state)
+# define MACRO(r, state) BOOST_PP_COMMA_IF(BOOST_PP_NOT_EQUAL(state, 1)) BOOST_PP_CAT(class T, state)
+
+template<BOOST_PP_FOR(1, PRED, OP, MACRO)> struct for_test;
Added: branches/pplib/v2/libs/preprocessor/test/selection.c
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/test/selection.c 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,21 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# include <boost/preprocessor/selection.hpp>
+# include <libs/preprocessor/test/test.h>
+
+BEGIN BOOST_PP_MAX(2, 2) == 2 END
+BEGIN BOOST_PP_MAX(2, 1) == 2 END
+BEGIN BOOST_PP_MAX(1, 2) == 2 END
+
+BEGIN BOOST_PP_MIN(2, 2) == 2 END
+BEGIN BOOST_PP_MIN(2, 1) == 1 END
+BEGIN BOOST_PP_MIN(1, 2) == 1 END
Added: branches/pplib/v2/libs/preprocessor/test/selection.cpp
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/test/selection.cpp 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,21 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# include <boost/preprocessor/selection.hpp>
+# include <libs/preprocessor/test/test.h>
+
+BEGIN BOOST_PP_MAX(2, 2) == 2 END
+BEGIN BOOST_PP_MAX(2, 1) == 2 END
+BEGIN BOOST_PP_MAX(1, 2) == 2 END
+
+BEGIN BOOST_PP_MIN(2, 2) == 2 END
+BEGIN BOOST_PP_MIN(2, 1) == 1 END
+BEGIN BOOST_PP_MIN(1, 2) == 1 END
Added: branches/pplib/v2/libs/preprocessor/test/seq.c
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/test/seq.c 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,90 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* Revised by Edward Diener (2011) */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# include <boost/preprocessor/arithmetic/add.hpp>
+# include <boost/preprocessor/arithmetic/sub.hpp>
+# include <boost/preprocessor/comparison/less.hpp>
+# include <boost/preprocessor/seq.hpp>
+# include <boost/preprocessor/tuple/elem.hpp>
+# include <boost/preprocessor/list/at.hpp>
+# include <libs/preprocessor/test/test.h>
+
+# define SEQ (4)(1)(5)(2)
+
+# define REVERSAL(s, x, y) BOOST_PP_SUB(y, x)
+# define SUB_S(s, x, y) BOOST_PP_SUB(x, y)
+# define ADD_S(s, x, y) BOOST_PP_ADD(x, y)
+
+BEGIN BOOST_PP_SEQ_FOLD_LEFT(SUB_S, 22, SEQ) == 10 END
+BEGIN BOOST_PP_SEQ_FOLD_RIGHT(ADD_S, 0, SEQ) == 12 END
+BEGIN BOOST_PP_SEQ_FOLD_RIGHT(REVERSAL, 0, SEQ) == 4 END
+
+BEGIN BOOST_PP_SEQ_CAT(BOOST_PP_SEQ_REVERSE(SEQ)) == 2514 END
+
+BEGIN BOOST_PP_SEQ_CAT(BOOST_PP_SEQ_REST_N(2, SEQ)) == 52 END
+BEGIN BOOST_PP_SEQ_CAT(BOOST_PP_SEQ_FIRST_N(2, SEQ)) == 41 END
+
+BEGIN BOOST_PP_SEQ_ELEM(2, SEQ) == 5 END
+BEGIN BOOST_PP_SEQ_SIZE(SEQ) == 4 END
+
+BEGIN BOOST_PP_SEQ_CAT(BOOST_PP_SEQ_TRANSFORM(ADD_S, 2, SEQ)) == 6374 END
+BEGIN BOOST_PP_SEQ_CAT(BOOST_PP_SEQ_TAIL(SEQ) SEQ) == 1524152 END
+
+# define F1(r, state, x) + x + state
+BEGIN BOOST_PP_SEQ_FOR_EACH(F1, 1, SEQ) == 16 END
+
+BEGIN BOOST_PP_TUPLE_ELEM(4, 3, BOOST_PP_SEQ_TO_TUPLE(SEQ)) == 2 END
+
+# define LESS_S(s, x, y) BOOST_PP_LESS(x, y)
+BEGIN BOOST_PP_SEQ_CAT(BOOST_PP_SEQ_FILTER(LESS_S, 3, SEQ)) == 45 END
+
+BEGIN BOOST_PP_SEQ_CAT(BOOST_PP_SEQ_INSERT(SEQ, 0, 3)) == 34152 END
+BEGIN BOOST_PP_SEQ_CAT(BOOST_PP_SEQ_INSERT(SEQ, 2, 3)) == 41352 END
+BEGIN BOOST_PP_SEQ_CAT(BOOST_PP_SEQ_INSERT(SEQ, 4, 3)) == 41523 END
+
+BEGIN BOOST_PP_SEQ_CAT(BOOST_PP_SEQ_POP_BACK(SEQ)) == 415 END
+BEGIN BOOST_PP_SEQ_CAT(BOOST_PP_SEQ_POP_FRONT(SEQ)) == 152 END
+
+BEGIN BOOST_PP_SEQ_CAT(BOOST_PP_SEQ_PUSH_FRONT(SEQ, 3)) == 34152 END
+BEGIN BOOST_PP_SEQ_CAT(BOOST_PP_SEQ_PUSH_BACK(SEQ, 3)) == 41523 END
+
+BEGIN BOOST_PP_SEQ_CAT(BOOST_PP_SEQ_REMOVE(SEQ, 0)) == 152 END
+BEGIN BOOST_PP_SEQ_CAT(BOOST_PP_SEQ_REMOVE(SEQ, 2)) == 412 END
+BEGIN BOOST_PP_SEQ_CAT(BOOST_PP_SEQ_REMOVE(SEQ, 3)) == 415 END
+
+BEGIN BOOST_PP_SEQ_CAT(BOOST_PP_SEQ_REPLACE(SEQ, 0, 3)) == 3152 END
+BEGIN BOOST_PP_SEQ_CAT(BOOST_PP_SEQ_REPLACE(SEQ, 1, 3)) == 4352 END
+BEGIN BOOST_PP_SEQ_CAT(BOOST_PP_SEQ_REPLACE(SEQ, 3, 3)) == 4153 END
+
+BEGIN BOOST_PP_SEQ_CAT(BOOST_PP_SEQ_SUBSEQ(SEQ, 0, 4)) == 4152 END
+BEGIN BOOST_PP_SEQ_CAT(BOOST_PP_SEQ_SUBSEQ(SEQ, 0, 2)) == 41 END
+BEGIN BOOST_PP_SEQ_CAT(BOOST_PP_SEQ_SUBSEQ(SEQ, 1, 2)) == 15 END
+BEGIN BOOST_PP_SEQ_CAT(BOOST_PP_SEQ_SUBSEQ(SEQ, 2, 2)) == 52 END
+
+# define F2(r, x) + BOOST_PP_SEQ_ELEM(0, x) + 2 - BOOST_PP_SEQ_ELEM(1, x)
+
+#define ADD_NIL(x) x(nil)
+
+BEGIN BOOST_PP_SEQ_FOR_EACH_PRODUCT(F2, ((1)(0)) ((2)(3))) == 0 END
+
+# define L1 (0)(x)
+# define L2 (a)(1)(b)(2)
+# define L3 (c)(3)(d)
+
+# define LL (L1)(L2)(L3)
+
+#define SEQ_APPEND(s, state, elem) state elem
+BEGIN BOOST_PP_SEQ_CAT(BOOST_PP_SEQ_TAIL(BOOST_PP_SEQ_FOLD_LEFT(SEQ_APPEND, (~), LL))) == 0x0a1b2c3d END
+BEGIN BOOST_PP_SEQ_SIZE(BOOST_PP_SEQ_TAIL(BOOST_PP_SEQ_FOLD_LEFT(SEQ_APPEND, (~), LL))) == 9 END
+
+BEGIN BOOST_PP_LIST_AT(BOOST_PP_SEQ_TO_LIST(SEQ), 2) == 5 END
Added: branches/pplib/v2/libs/preprocessor/test/seq.cpp
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/test/seq.cpp 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,90 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* Revised by Edward Diener (2011) */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# include <boost/preprocessor/arithmetic/add.hpp>
+# include <boost/preprocessor/arithmetic/sub.hpp>
+# include <boost/preprocessor/comparison/less.hpp>
+# include <boost/preprocessor/seq.hpp>
+# include <boost/preprocessor/tuple/elem.hpp>
+# include <boost/preprocessor/list/at.hpp>
+# include <libs/preprocessor/test/test.h>
+
+# define SEQ (4)(1)(5)(2)
+
+# define REVERSAL(s, x, y) BOOST_PP_SUB(y, x)
+# define SUB_S(s, x, y) BOOST_PP_SUB(x, y)
+# define ADD_S(s, x, y) BOOST_PP_ADD(x, y)
+
+BEGIN BOOST_PP_SEQ_FOLD_LEFT(SUB_S, 22, SEQ) == 10 END
+BEGIN BOOST_PP_SEQ_FOLD_RIGHT(ADD_S, 0, SEQ) == 12 END
+BEGIN BOOST_PP_SEQ_FOLD_RIGHT(REVERSAL, 0, SEQ) == 4 END
+
+BEGIN BOOST_PP_SEQ_CAT(BOOST_PP_SEQ_REVERSE(SEQ)) == 2514 END
+
+BEGIN BOOST_PP_SEQ_CAT(BOOST_PP_SEQ_REST_N(2, SEQ)) == 52 END
+BEGIN BOOST_PP_SEQ_CAT(BOOST_PP_SEQ_FIRST_N(2, SEQ)) == 41 END
+
+BEGIN BOOST_PP_SEQ_ELEM(2, SEQ) == 5 END
+BEGIN BOOST_PP_SEQ_SIZE(SEQ) == 4 END
+
+BEGIN BOOST_PP_SEQ_CAT(BOOST_PP_SEQ_TRANSFORM(ADD_S, 2, SEQ)) == 6374 END
+BEGIN BOOST_PP_SEQ_CAT(BOOST_PP_SEQ_TAIL(SEQ) SEQ) == 1524152 END
+
+# define F1(r, state, x) + x + state
+BEGIN BOOST_PP_SEQ_FOR_EACH(F1, 1, SEQ) == 16 END
+
+BEGIN BOOST_PP_TUPLE_ELEM(4, 3, BOOST_PP_SEQ_TO_TUPLE(SEQ)) == 2 END
+
+# define LESS_S(s, x, y) BOOST_PP_LESS(x, y)
+BEGIN BOOST_PP_SEQ_CAT(BOOST_PP_SEQ_FILTER(LESS_S, 3, SEQ)) == 45 END
+
+BEGIN BOOST_PP_SEQ_CAT(BOOST_PP_SEQ_INSERT(SEQ, 0, 3)) == 34152 END
+BEGIN BOOST_PP_SEQ_CAT(BOOST_PP_SEQ_INSERT(SEQ, 2, 3)) == 41352 END
+BEGIN BOOST_PP_SEQ_CAT(BOOST_PP_SEQ_INSERT(SEQ, 4, 3)) == 41523 END
+
+BEGIN BOOST_PP_SEQ_CAT(BOOST_PP_SEQ_POP_BACK(SEQ)) == 415 END
+BEGIN BOOST_PP_SEQ_CAT(BOOST_PP_SEQ_POP_FRONT(SEQ)) == 152 END
+
+BEGIN BOOST_PP_SEQ_CAT(BOOST_PP_SEQ_PUSH_FRONT(SEQ, 3)) == 34152 END
+BEGIN BOOST_PP_SEQ_CAT(BOOST_PP_SEQ_PUSH_BACK(SEQ, 3)) == 41523 END
+
+BEGIN BOOST_PP_SEQ_CAT(BOOST_PP_SEQ_REMOVE(SEQ, 0)) == 152 END
+BEGIN BOOST_PP_SEQ_CAT(BOOST_PP_SEQ_REMOVE(SEQ, 2)) == 412 END
+BEGIN BOOST_PP_SEQ_CAT(BOOST_PP_SEQ_REMOVE(SEQ, 3)) == 415 END
+
+BEGIN BOOST_PP_SEQ_CAT(BOOST_PP_SEQ_REPLACE(SEQ, 0, 3)) == 3152 END
+BEGIN BOOST_PP_SEQ_CAT(BOOST_PP_SEQ_REPLACE(SEQ, 1, 3)) == 4352 END
+BEGIN BOOST_PP_SEQ_CAT(BOOST_PP_SEQ_REPLACE(SEQ, 3, 3)) == 4153 END
+
+BEGIN BOOST_PP_SEQ_CAT(BOOST_PP_SEQ_SUBSEQ(SEQ, 0, 4)) == 4152 END
+BEGIN BOOST_PP_SEQ_CAT(BOOST_PP_SEQ_SUBSEQ(SEQ, 0, 2)) == 41 END
+BEGIN BOOST_PP_SEQ_CAT(BOOST_PP_SEQ_SUBSEQ(SEQ, 1, 2)) == 15 END
+BEGIN BOOST_PP_SEQ_CAT(BOOST_PP_SEQ_SUBSEQ(SEQ, 2, 2)) == 52 END
+
+# define F2(r, x) + BOOST_PP_SEQ_ELEM(0, x) + 2 - BOOST_PP_SEQ_ELEM(1, x)
+
+#define ADD_NIL(x) x(nil)
+
+BEGIN BOOST_PP_SEQ_FOR_EACH_PRODUCT(F2, ((1)(0)) ((2)(3))) == 0 END
+
+# define L1 (0)(x)
+# define L2 (a)(1)(b)(2)
+# define L3 (c)(3)(d)
+
+# define LL (L1)(L2)(L3)
+
+#define SEQ_APPEND(s, state, elem) state elem
+BEGIN BOOST_PP_SEQ_CAT(BOOST_PP_SEQ_TAIL(BOOST_PP_SEQ_FOLD_LEFT(SEQ_APPEND, (~), LL))) == 0x0a1b2c3d END
+BEGIN BOOST_PP_SEQ_SIZE(BOOST_PP_SEQ_TAIL(BOOST_PP_SEQ_FOLD_LEFT(SEQ_APPEND, (~), LL))) == 9 END
+
+BEGIN BOOST_PP_LIST_AT(BOOST_PP_SEQ_TO_LIST(SEQ), 2) == 5 END
Added: branches/pplib/v2/libs/preprocessor/test/slot.c
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/test/slot.c 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,27 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# include <boost/preprocessor/slot.hpp>
+# include <libs/preprocessor/test/test.h>
+
+# define X() 4
+
+# define BOOST_PP_VALUE 1 + 2 + 3 + X()
+# include BOOST_PP_ASSIGN_SLOT(1)
+
+# undef X
+
+BEGIN BOOST_PP_SLOT(1) == 10 END
+
+# define BOOST_PP_VALUE BOOST_PP_SLOT(1) * BOOST_PP_SLOT(1)
+# include BOOST_PP_ASSIGN_SLOT(1)
+
+BEGIN BOOST_PP_SLOT(1) == 100 END
Added: branches/pplib/v2/libs/preprocessor/test/slot.cpp
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/test/slot.cpp 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,27 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# include <boost/preprocessor/slot.hpp>
+# include <libs/preprocessor/test/test.h>
+
+# define X() 4
+
+# define BOOST_PP_VALUE 1 + 2 + 3 + X()
+# include BOOST_PP_ASSIGN_SLOT(1)
+
+# undef X
+
+BEGIN BOOST_PP_SLOT(1) == 10 END
+
+# define BOOST_PP_VALUE BOOST_PP_SLOT(1) * BOOST_PP_SLOT(1)
+# include BOOST_PP_ASSIGN_SLOT(1)
+
+BEGIN BOOST_PP_SLOT(1) == 100 END
Added: branches/pplib/v2/libs/preprocessor/test/test.h
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/test/test.h 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,37 @@
+# /* Copyright (C) 2001
+# * Housemarque Oy
+# * http://www.housemarque.com
+# *
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# */
+#
+# /* 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 <boost/preprocessor/cat.hpp>
+#
+# define BEGIN typedef int BOOST_PP_CAT(test_, __LINE__)[((
+# define END )==1) ? 1 : -1];
+
+#if defined(__cplusplus)
+#include <cstdio>
+#if !defined(_STLP_MSVC) || _STLP_MSVC >= 1300
+namespace std { }
+using namespace std;
+#endif
+#else
+#include <stdio.h>
+#endif
+
+int main(void) {
+ printf("pass " __TIME__);
+ return 0;
+}
+
+# endif
Added: branches/pplib/v2/libs/preprocessor/test/tuple.c
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/test/tuple.c 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,104 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* Revised by Edward Diener (2011) */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# include <boost/preprocessor/tuple.hpp>
+# include <boost/preprocessor/array/elem.hpp>
+# include <boost/preprocessor/list/at.hpp>
+# include <boost/preprocessor/seq/elem.hpp>
+# if BOOST_PP_VARIADICS
+# include <boost/preprocessor/variadic/size.hpp>
+# include <boost/preprocessor/variadic/elem.hpp>
+# endif
+# include <libs/preprocessor/test/test.h>
+
+# define TUPLE (0, 1, 2, 3, 4, 5)
+# define TUPLE_LARGE (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32)
+# define TUPLE_VERY_LARGE (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63)
+# define T2 (+3, /2, +6)
+
+#if BOOST_PP_VARIADICS
+
+# define CALC(x) BOOST_PP_TUPLE_ELEM(0, x) BOOST_PP_TUPLE_ELEM(1, x) BOOST_PP_TUPLE_ELEM(2, x)
+# define TEST_EAT BOOST_PP_TUPLE_EAT()(1, 2) 4
+# define TEST_EAT_LARGE BOOST_PP_TUPLE_EAT()(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32) 6
+# define TEST_EAT_VERY_LARGE BOOST_PP_TUPLE_EAT()(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63) 8
+
+#else
+
+# define CALC(x) BOOST_PP_TUPLE_ELEM(3, 0, x) BOOST_PP_TUPLE_ELEM(3, 1, x) BOOST_PP_TUPLE_ELEM(3, 2, x)
+# define TEST_EAT BOOST_PP_TUPLE_EAT(2)(1, 2) 4
+# define TEST_EAT_LARGE BOOST_PP_TUPLE_EAT(33)(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32) 6
+# define TEST_EAT_VERY_LARGE BOOST_PP_TUPLE_EAT(64)(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63) 8
+
+#endif
+
+BEGIN BOOST_PP_TUPLE_ELEM(6, 3, TUPLE) == 3 END
+BEGIN BOOST_PP_TUPLE_ELEM(6, 5, TUPLE) == 5 END
+BEGIN BOOST_PP_TUPLE_ELEM(33, 15, TUPLE_LARGE) == 15 END
+BEGIN BOOST_PP_TUPLE_ELEM(33, 27, TUPLE_LARGE) == 27 END
+BEGIN BOOST_PP_TUPLE_ELEM(33, 32, TUPLE_LARGE) == 32 END
+BEGIN BOOST_PP_TUPLE_ELEM(64, 22, TUPLE_VERY_LARGE) == 22 END
+BEGIN BOOST_PP_TUPLE_ELEM(64, 47, TUPLE_VERY_LARGE) == 47 END
+BEGIN BOOST_PP_TUPLE_ELEM(64, 63, TUPLE_VERY_LARGE) == 63 END
+BEGIN BOOST_PP_TUPLE_ELEM(6, 2, BOOST_PP_TUPLE_REVERSE(6,TUPLE)) == 3 END
+BEGIN BOOST_PP_TUPLE_ELEM(33, 27, BOOST_PP_TUPLE_REVERSE(33,TUPLE_LARGE)) == 5 END
+BEGIN BOOST_PP_TUPLE_ELEM(64, 43, BOOST_PP_TUPLE_REVERSE(64,TUPLE_VERY_LARGE)) == 20 END
+BEGIN CALC(T2) == 7 END
+BEGIN CALC(BOOST_PP_TUPLE_REVERSE(3, T2)) == 6 END
+BEGIN TEST_EAT == 4 END
+BEGIN TEST_EAT_LARGE == 6 END
+BEGIN TEST_EAT_VERY_LARGE == 8 END
+BEGIN BOOST_PP_ARRAY_ELEM(3,BOOST_PP_TUPLE_TO_ARRAY(6,TUPLE)) == 3 END
+BEGIN BOOST_PP_ARRAY_ELEM(29,BOOST_PP_TUPLE_TO_ARRAY(33,TUPLE_LARGE)) == 29 END
+BEGIN BOOST_PP_ARRAY_ELEM(61,BOOST_PP_TUPLE_TO_ARRAY(64,TUPLE_VERY_LARGE)) == 61 END
+BEGIN BOOST_PP_LIST_AT(BOOST_PP_TUPLE_TO_LIST(6,TUPLE), 2) == 2 END
+BEGIN BOOST_PP_LIST_AT(BOOST_PP_TUPLE_TO_LIST(33,TUPLE_LARGE), 19) == 19 END
+BEGIN BOOST_PP_LIST_AT(BOOST_PP_TUPLE_TO_LIST(64,TUPLE_VERY_LARGE), 62) == 62 END
+BEGIN BOOST_PP_SEQ_ELEM(4,BOOST_PP_TUPLE_TO_SEQ(6,TUPLE)) == 4 END
+BEGIN BOOST_PP_SEQ_ELEM(31,BOOST_PP_TUPLE_TO_SEQ(33,TUPLE_LARGE)) == 31 END
+BEGIN BOOST_PP_SEQ_ELEM(55,BOOST_PP_TUPLE_TO_SEQ(64,TUPLE_VERY_LARGE)) == 55 END
+
+#if BOOST_PP_VARIADICS
+
+BEGIN BOOST_PP_TUPLE_ELEM(3, TUPLE) == 3 END
+BEGIN BOOST_PP_TUPLE_ELEM(5, TUPLE) == 5 END
+BEGIN BOOST_PP_TUPLE_ELEM(15, TUPLE_LARGE) == 15 END
+BEGIN BOOST_PP_TUPLE_ELEM(27, TUPLE_LARGE) == 27 END
+BEGIN BOOST_PP_TUPLE_ELEM(32, TUPLE_LARGE) == 32 END
+BEGIN BOOST_PP_TUPLE_ELEM(22, TUPLE_VERY_LARGE) == 22 END
+BEGIN BOOST_PP_TUPLE_ELEM(47, TUPLE_VERY_LARGE) == 47 END
+BEGIN BOOST_PP_TUPLE_ELEM(63, TUPLE_VERY_LARGE) == 63 END
+BEGIN BOOST_PP_TUPLE_ELEM(2, BOOST_PP_TUPLE_REVERSE(TUPLE)) == 3 END
+BEGIN BOOST_PP_TUPLE_ELEM(27, BOOST_PP_TUPLE_REVERSE(TUPLE_LARGE)) == 5 END
+BEGIN BOOST_PP_TUPLE_ELEM(43, BOOST_PP_TUPLE_REVERSE(TUPLE_VERY_LARGE)) == 20 END
+BEGIN CALC(BOOST_PP_TUPLE_REVERSE(T2)) == 6 END
+BEGIN BOOST_PP_VARIADIC_ELEM(2,BOOST_PP_TUPLE_ENUM(BOOST_PP_TUPLE_REVERSE(TUPLE))) == 3 END
+BEGIN BOOST_PP_VARIADIC_ELEM(27,BOOST_PP_TUPLE_ENUM(BOOST_PP_TUPLE_REVERSE(TUPLE_LARGE))) == 5 END
+BEGIN BOOST_PP_VARIADIC_ELEM(45,BOOST_PP_TUPLE_ENUM(BOOST_PP_TUPLE_REVERSE(TUPLE_VERY_LARGE))) == 18 END
+BEGIN BOOST_PP_VARIADIC_SIZE(BOOST_PP_TUPLE_ENUM(TUPLE)) == 6 END
+BEGIN BOOST_PP_VARIADIC_SIZE(BOOST_PP_TUPLE_ENUM(TUPLE_LARGE)) == 33 END
+BEGIN BOOST_PP_VARIADIC_SIZE(BOOST_PP_TUPLE_ENUM(TUPLE_VERY_LARGE)) == 64 END
+BEGIN BOOST_PP_TUPLE_SIZE(TUPLE) == 6 END
+BEGIN BOOST_PP_TUPLE_SIZE(TUPLE_LARGE) == 33 END
+BEGIN BOOST_PP_TUPLE_SIZE(TUPLE_VERY_LARGE) == 64 END
+BEGIN BOOST_PP_ARRAY_ELEM(3,BOOST_PP_TUPLE_TO_ARRAY(TUPLE)) == 3 END
+BEGIN BOOST_PP_ARRAY_ELEM(29,BOOST_PP_TUPLE_TO_ARRAY(TUPLE_LARGE)) == 29 END
+BEGIN BOOST_PP_ARRAY_ELEM(61,BOOST_PP_TUPLE_TO_ARRAY(TUPLE_VERY_LARGE)) == 61 END
+BEGIN BOOST_PP_LIST_AT(BOOST_PP_TUPLE_TO_LIST(TUPLE), 2) == 2 END
+BEGIN BOOST_PP_LIST_AT(BOOST_PP_TUPLE_TO_LIST(TUPLE_LARGE), 19) == 19 END
+BEGIN BOOST_PP_LIST_AT(BOOST_PP_TUPLE_TO_LIST(TUPLE_VERY_LARGE), 62) == 62 END
+BEGIN BOOST_PP_SEQ_ELEM(4,BOOST_PP_TUPLE_TO_SEQ(TUPLE)) == 4 END
+BEGIN BOOST_PP_SEQ_ELEM(31,BOOST_PP_TUPLE_TO_SEQ(TUPLE_LARGE)) == 31 END
+BEGIN BOOST_PP_SEQ_ELEM(55,BOOST_PP_TUPLE_TO_SEQ(TUPLE_VERY_LARGE)) == 55 END
+
+#endif
Added: branches/pplib/v2/libs/preprocessor/test/tuple.cpp
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/test/tuple.cpp 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,104 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* Revised by Edward Diener (2011) */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# include <boost/preprocessor/tuple.hpp>
+# include <boost/preprocessor/array/elem.hpp>
+# include <boost/preprocessor/list/at.hpp>
+# include <boost/preprocessor/seq/elem.hpp>
+# if BOOST_PP_VARIADICS
+# include <boost/preprocessor/variadic/size.hpp>
+# include <boost/preprocessor/variadic/elem.hpp>
+# endif
+# include <libs/preprocessor/test/test.h>
+
+# define TUPLE (0, 1, 2, 3, 4, 5)
+# define TUPLE_LARGE (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32)
+# define TUPLE_VERY_LARGE (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63)
+# define T2 (+3, /2, +6)
+
+#if BOOST_PP_VARIADICS
+
+# define CALC(x) BOOST_PP_TUPLE_ELEM(0, x) BOOST_PP_TUPLE_ELEM(1, x) BOOST_PP_TUPLE_ELEM(2, x)
+# define TEST_EAT BOOST_PP_TUPLE_EAT()(1, 2) 4
+# define TEST_EAT_LARGE BOOST_PP_TUPLE_EAT()(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32) 6
+# define TEST_EAT_VERY_LARGE BOOST_PP_TUPLE_EAT()(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63) 8
+
+#else
+
+# define CALC(x) BOOST_PP_TUPLE_ELEM(3, 0, x) BOOST_PP_TUPLE_ELEM(3, 1, x) BOOST_PP_TUPLE_ELEM(3, 2, x)
+# define TEST_EAT BOOST_PP_TUPLE_EAT(2)(1, 2) 4
+# define TEST_EAT_LARGE BOOST_PP_TUPLE_EAT(33)(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32) 6
+# define TEST_EAT_VERY_LARGE BOOST_PP_TUPLE_EAT(64)(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63) 8
+
+#endif
+
+BEGIN BOOST_PP_TUPLE_ELEM(6, 3, TUPLE) == 3 END
+BEGIN BOOST_PP_TUPLE_ELEM(6, 5, TUPLE) == 5 END
+BEGIN BOOST_PP_TUPLE_ELEM(33, 15, TUPLE_LARGE) == 15 END
+BEGIN BOOST_PP_TUPLE_ELEM(33, 27, TUPLE_LARGE) == 27 END
+BEGIN BOOST_PP_TUPLE_ELEM(33, 32, TUPLE_LARGE) == 32 END
+BEGIN BOOST_PP_TUPLE_ELEM(64, 22, TUPLE_VERY_LARGE) == 22 END
+BEGIN BOOST_PP_TUPLE_ELEM(64, 47, TUPLE_VERY_LARGE) == 47 END
+BEGIN BOOST_PP_TUPLE_ELEM(64, 63, TUPLE_VERY_LARGE) == 63 END
+BEGIN BOOST_PP_TUPLE_ELEM(6, 2, BOOST_PP_TUPLE_REVERSE(6,TUPLE)) == 3 END
+BEGIN BOOST_PP_TUPLE_ELEM(33, 27, BOOST_PP_TUPLE_REVERSE(33,TUPLE_LARGE)) == 5 END
+BEGIN BOOST_PP_TUPLE_ELEM(64, 43, BOOST_PP_TUPLE_REVERSE(64,TUPLE_VERY_LARGE)) == 20 END
+BEGIN CALC(T2) == 7 END
+BEGIN CALC(BOOST_PP_TUPLE_REVERSE(3, T2)) == 6 END
+BEGIN TEST_EAT == 4 END
+BEGIN TEST_EAT_LARGE == 6 END
+BEGIN TEST_EAT_VERY_LARGE == 8 END
+BEGIN BOOST_PP_ARRAY_ELEM(3,BOOST_PP_TUPLE_TO_ARRAY(6,TUPLE)) == 3 END
+BEGIN BOOST_PP_ARRAY_ELEM(29,BOOST_PP_TUPLE_TO_ARRAY(33,TUPLE_LARGE)) == 29 END
+BEGIN BOOST_PP_ARRAY_ELEM(61,BOOST_PP_TUPLE_TO_ARRAY(64,TUPLE_VERY_LARGE)) == 61 END
+BEGIN BOOST_PP_LIST_AT(BOOST_PP_TUPLE_TO_LIST(6,TUPLE), 2) == 2 END
+BEGIN BOOST_PP_LIST_AT(BOOST_PP_TUPLE_TO_LIST(33,TUPLE_LARGE), 19) == 19 END
+BEGIN BOOST_PP_LIST_AT(BOOST_PP_TUPLE_TO_LIST(64,TUPLE_VERY_LARGE), 62) == 62 END
+BEGIN BOOST_PP_SEQ_ELEM(4,BOOST_PP_TUPLE_TO_SEQ(6,TUPLE)) == 4 END
+BEGIN BOOST_PP_SEQ_ELEM(31,BOOST_PP_TUPLE_TO_SEQ(33,TUPLE_LARGE)) == 31 END
+BEGIN BOOST_PP_SEQ_ELEM(55,BOOST_PP_TUPLE_TO_SEQ(64,TUPLE_VERY_LARGE)) == 55 END
+
+#if BOOST_PP_VARIADICS
+
+BEGIN BOOST_PP_TUPLE_ELEM(3, TUPLE) == 3 END
+BEGIN BOOST_PP_TUPLE_ELEM(5, TUPLE) == 5 END
+BEGIN BOOST_PP_TUPLE_ELEM(15, TUPLE_LARGE) == 15 END
+BEGIN BOOST_PP_TUPLE_ELEM(27, TUPLE_LARGE) == 27 END
+BEGIN BOOST_PP_TUPLE_ELEM(32, TUPLE_LARGE) == 32 END
+BEGIN BOOST_PP_TUPLE_ELEM(22, TUPLE_VERY_LARGE) == 22 END
+BEGIN BOOST_PP_TUPLE_ELEM(47, TUPLE_VERY_LARGE) == 47 END
+BEGIN BOOST_PP_TUPLE_ELEM(63, TUPLE_VERY_LARGE) == 63 END
+BEGIN BOOST_PP_TUPLE_ELEM(2, BOOST_PP_TUPLE_REVERSE(TUPLE)) == 3 END
+BEGIN BOOST_PP_TUPLE_ELEM(27, BOOST_PP_TUPLE_REVERSE(TUPLE_LARGE)) == 5 END
+BEGIN BOOST_PP_TUPLE_ELEM(43, BOOST_PP_TUPLE_REVERSE(TUPLE_VERY_LARGE)) == 20 END
+BEGIN CALC(BOOST_PP_TUPLE_REVERSE(T2)) == 6 END
+BEGIN BOOST_PP_VARIADIC_ELEM(2,BOOST_PP_TUPLE_ENUM(BOOST_PP_TUPLE_REVERSE(TUPLE))) == 3 END
+BEGIN BOOST_PP_VARIADIC_ELEM(27,BOOST_PP_TUPLE_ENUM(BOOST_PP_TUPLE_REVERSE(TUPLE_LARGE))) == 5 END
+BEGIN BOOST_PP_VARIADIC_ELEM(45,BOOST_PP_TUPLE_ENUM(BOOST_PP_TUPLE_REVERSE(TUPLE_VERY_LARGE))) == 18 END
+BEGIN BOOST_PP_VARIADIC_SIZE(BOOST_PP_TUPLE_ENUM(TUPLE)) == 6 END
+BEGIN BOOST_PP_VARIADIC_SIZE(BOOST_PP_TUPLE_ENUM(TUPLE_LARGE)) == 33 END
+BEGIN BOOST_PP_VARIADIC_SIZE(BOOST_PP_TUPLE_ENUM(TUPLE_VERY_LARGE)) == 64 END
+BEGIN BOOST_PP_TUPLE_SIZE(TUPLE) == 6 END
+BEGIN BOOST_PP_TUPLE_SIZE(TUPLE_LARGE) == 33 END
+BEGIN BOOST_PP_TUPLE_SIZE(TUPLE_VERY_LARGE) == 64 END
+BEGIN BOOST_PP_ARRAY_ELEM(3,BOOST_PP_TUPLE_TO_ARRAY(TUPLE)) == 3 END
+BEGIN BOOST_PP_ARRAY_ELEM(29,BOOST_PP_TUPLE_TO_ARRAY(TUPLE_LARGE)) == 29 END
+BEGIN BOOST_PP_ARRAY_ELEM(61,BOOST_PP_TUPLE_TO_ARRAY(TUPLE_VERY_LARGE)) == 61 END
+BEGIN BOOST_PP_LIST_AT(BOOST_PP_TUPLE_TO_LIST(TUPLE), 2) == 2 END
+BEGIN BOOST_PP_LIST_AT(BOOST_PP_TUPLE_TO_LIST(TUPLE_LARGE), 19) == 19 END
+BEGIN BOOST_PP_LIST_AT(BOOST_PP_TUPLE_TO_LIST(TUPLE_VERY_LARGE), 62) == 62 END
+BEGIN BOOST_PP_SEQ_ELEM(4,BOOST_PP_TUPLE_TO_SEQ(TUPLE)) == 4 END
+BEGIN BOOST_PP_SEQ_ELEM(31,BOOST_PP_TUPLE_TO_SEQ(TUPLE_LARGE)) == 31 END
+BEGIN BOOST_PP_SEQ_ELEM(55,BOOST_PP_TUPLE_TO_SEQ(TUPLE_VERY_LARGE)) == 55 END
+
+#endif
Added: branches/pplib/v2/libs/preprocessor/test/variadic.c
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/test/variadic.c 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,56 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Edward Diener 2011.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# include <boost/preprocessor/variadic.hpp>
+# include <boost/preprocessor/array/size.hpp>
+# include <boost/preprocessor/array/elem.hpp>
+# include <boost/preprocessor/list/at.hpp>
+# include <boost/preprocessor/list/size.hpp>
+# include <boost/preprocessor/seq/elem.hpp>
+# include <boost/preprocessor/seq/size.hpp>
+# include <boost/preprocessor/tuple/size.hpp>
+# include <boost/preprocessor/tuple/elem.hpp>
+# include <libs/preprocessor/test/test.h>
+
+#if BOOST_PP_VARIADICS
+
+#define VDATA 0,1,2,3,4,5,6
+#define VDATA_LARGE 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32
+#define VDATA_VERY_LARGE 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63
+
+BEGIN BOOST_PP_VARIADIC_ELEM(4,VDATA) == 4 END
+BEGIN BOOST_PP_VARIADIC_ELEM(6,7,11,3,8,14,85,56,92,165) == 56 END
+BEGIN BOOST_PP_VARIADIC_ELEM(29,VDATA_LARGE) == 29 END
+BEGIN BOOST_PP_VARIADIC_ELEM(57,VDATA_VERY_LARGE) == 57 END
+BEGIN BOOST_PP_VARIADIC_ELEM(35, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63) == 35 END
+BEGIN BOOST_PP_VARIADIC_SIZE(VDATA) == 7 END
+BEGIN BOOST_PP_VARIADIC_SIZE(7,11,3,8,14,85,56,92,165) == 9 END
+BEGIN BOOST_PP_VARIADIC_SIZE(VDATA_LARGE) == 33 END
+BEGIN BOOST_PP_VARIADIC_SIZE(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32) == 33 END
+BEGIN BOOST_PP_VARIADIC_SIZE(VDATA_VERY_LARGE) == 64 END
+BEGIN BOOST_PP_ARRAY_SIZE(BOOST_PP_VARIADIC_TO_ARRAY(VDATA)) == 7 END
+BEGIN BOOST_PP_ARRAY_SIZE(BOOST_PP_VARIADIC_TO_ARRAY(VDATA_VERY_LARGE)) == 64 END
+BEGIN BOOST_PP_ARRAY_ELEM(4,BOOST_PP_VARIADIC_TO_ARRAY(7,11,3,8,14,85,56,92,165)) == 14 END
+BEGIN BOOST_PP_ARRAY_ELEM(30,BOOST_PP_VARIADIC_TO_ARRAY(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32)) == 30 END
+BEGIN BOOST_PP_LIST_AT(BOOST_PP_VARIADIC_TO_LIST(VDATA),3) == 3 END
+BEGIN BOOST_PP_LIST_AT(BOOST_PP_VARIADIC_TO_LIST(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63),49) == 49 END
+BEGIN BOOST_PP_LIST_SIZE(BOOST_PP_VARIADIC_TO_LIST(7,11,3,8,14,85,56,92,165)) == 9 END
+BEGIN BOOST_PP_LIST_SIZE(BOOST_PP_VARIADIC_TO_LIST(VDATA_LARGE)) == 33 END
+BEGIN BOOST_PP_SEQ_ELEM(5,BOOST_PP_VARIADIC_TO_SEQ(VDATA)) == 5 END
+BEGIN BOOST_PP_SEQ_ELEM(16,BOOST_PP_VARIADIC_TO_SEQ(VDATA_LARGE)) == 16 END
+BEGIN BOOST_PP_SEQ_SIZE(BOOST_PP_VARIADIC_TO_SEQ(3,78,22,11,3)) == 5 END
+BEGIN BOOST_PP_SEQ_SIZE(BOOST_PP_VARIADIC_TO_SEQ(VDATA_VERY_LARGE)) == 64 END
+BEGIN BOOST_PP_TUPLE_SIZE(BOOST_PP_VARIADIC_TO_TUPLE(VDATA)) == 7 END
+BEGIN BOOST_PP_TUPLE_SIZE(BOOST_PP_VARIADIC_TO_TUPLE(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63)) == 64 END
+BEGIN BOOST_PP_TUPLE_ELEM(8,BOOST_PP_VARIADIC_TO_TUPLE(7,11,3,8,14,85,56,92,165)) == 165 END
+BEGIN BOOST_PP_TUPLE_ELEM(27,BOOST_PP_VARIADIC_TO_TUPLE(VDATA_LARGE)) == 27 END
+
+#endif
Added: branches/pplib/v2/libs/preprocessor/test/variadic.cpp
==============================================================================
--- (empty file)
+++ branches/pplib/v2/libs/preprocessor/test/variadic.cpp 2011-05-25 12:30:23 EDT (Wed, 25 May 2011)
@@ -0,0 +1,56 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Edward Diener 2011.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# include <boost/preprocessor/variadic.hpp>
+# include <boost/preprocessor/array/size.hpp>
+# include <boost/preprocessor/array/elem.hpp>
+# include <boost/preprocessor/list/at.hpp>
+# include <boost/preprocessor/list/size.hpp>
+# include <boost/preprocessor/seq/elem.hpp>
+# include <boost/preprocessor/seq/size.hpp>
+# include <boost/preprocessor/tuple/size.hpp>
+# include <boost/preprocessor/tuple/elem.hpp>
+# include <libs/preprocessor/test/test.h>
+
+#if BOOST_PP_VARIADICS
+
+#define VDATA 0,1,2,3,4,5,6
+#define VDATA_LARGE 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32
+#define VDATA_VERY_LARGE 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63
+
+BEGIN BOOST_PP_VARIADIC_ELEM(4,VDATA) == 4 END
+BEGIN BOOST_PP_VARIADIC_ELEM(6,7,11,3,8,14,85,56,92,165) == 56 END
+BEGIN BOOST_PP_VARIADIC_ELEM(29,VDATA_LARGE) == 29 END
+BEGIN BOOST_PP_VARIADIC_ELEM(57,VDATA_VERY_LARGE) == 57 END
+BEGIN BOOST_PP_VARIADIC_ELEM(35, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63) == 35 END
+BEGIN BOOST_PP_VARIADIC_SIZE(VDATA) == 7 END
+BEGIN BOOST_PP_VARIADIC_SIZE(7,11,3,8,14,85,56,92,165) == 9 END
+BEGIN BOOST_PP_VARIADIC_SIZE(VDATA_LARGE) == 33 END
+BEGIN BOOST_PP_VARIADIC_SIZE(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32) == 33 END
+BEGIN BOOST_PP_VARIADIC_SIZE(VDATA_VERY_LARGE) == 64 END
+BEGIN BOOST_PP_ARRAY_SIZE(BOOST_PP_VARIADIC_TO_ARRAY(VDATA)) == 7 END
+BEGIN BOOST_PP_ARRAY_SIZE(BOOST_PP_VARIADIC_TO_ARRAY(VDATA_VERY_LARGE)) == 64 END
+BEGIN BOOST_PP_ARRAY_ELEM(4,BOOST_PP_VARIADIC_TO_ARRAY(7,11,3,8,14,85,56,92,165)) == 14 END
+BEGIN BOOST_PP_ARRAY_ELEM(30,BOOST_PP_VARIADIC_TO_ARRAY(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32)) == 30 END
+BEGIN BOOST_PP_LIST_AT(BOOST_PP_VARIADIC_TO_LIST(VDATA),3) == 3 END
+BEGIN BOOST_PP_LIST_AT(BOOST_PP_VARIADIC_TO_LIST(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63),49) == 49 END
+BEGIN BOOST_PP_LIST_SIZE(BOOST_PP_VARIADIC_TO_LIST(7,11,3,8,14,85,56,92,165)) == 9 END
+BEGIN BOOST_PP_LIST_SIZE(BOOST_PP_VARIADIC_TO_LIST(VDATA_LARGE)) == 33 END
+BEGIN BOOST_PP_SEQ_ELEM(5,BOOST_PP_VARIADIC_TO_SEQ(VDATA)) == 5 END
+BEGIN BOOST_PP_SEQ_ELEM(16,BOOST_PP_VARIADIC_TO_SEQ(VDATA_LARGE)) == 16 END
+BEGIN BOOST_PP_SEQ_SIZE(BOOST_PP_VARIADIC_TO_SEQ(3,78,22,11,3)) == 5 END
+BEGIN BOOST_PP_SEQ_SIZE(BOOST_PP_VARIADIC_TO_SEQ(VDATA_VERY_LARGE)) == 64 END
+BEGIN BOOST_PP_TUPLE_SIZE(BOOST_PP_VARIADIC_TO_TUPLE(VDATA)) == 7 END
+BEGIN BOOST_PP_TUPLE_SIZE(BOOST_PP_VARIADIC_TO_TUPLE(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63)) == 64 END
+BEGIN BOOST_PP_TUPLE_ELEM(8,BOOST_PP_VARIADIC_TO_TUPLE(7,11,3,8,14,85,56,92,165)) == 165 END
+BEGIN BOOST_PP_TUPLE_ELEM(27,BOOST_PP_VARIADIC_TO_TUPLE(VDATA_LARGE)) == 27 END
+
+#endif
Boost-Commit list run by bdawes at acm.org, david.abrahams at rcn.com, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk