|
Boost-Commit : |
Subject: [Boost-commit] svn:boost r65993 - in sandbox/variadic_macro_data: boost/variadic_macro_data boost/variadic_macro_data/detail libs/variadic_macro_data/doc libs/variadic_macro_data/doc/html libs/variadic_macro_data/doc/html/the_variadic_macro_data_library libs/variadic_macro_data/doc/html/the_variadic_macro_data_library/vmd_detail libs/variadic_macro_data/test
From: eldiener_at_[hidden]
Date: 2010-10-15 14:09:22
Author: eldiener
Date: 2010-10-15 14:09:16 EDT (Fri, 15 Oct 2010)
New Revision: 65993
URL: http://svn.boost.org/trac/boost/changeset/65993
Log:
Files
Added:
sandbox/variadic_macro_data/boost/variadic_macro_data/VariadicMacroData.hpp (contents, props changed)
sandbox/variadic_macro_data/boost/variadic_macro_data/detail/VMDDetail.hpp (contents, props changed)
sandbox/variadic_macro_data/libs/variadic_macro_data/doc/VMDAcknowledgements.qbk (contents, props changed)
sandbox/variadic_macro_data/libs/variadic_macro_data/doc/VMDComparison.qbk (contents, props changed)
sandbox/variadic_macro_data/libs/variadic_macro_data/doc/VMDCompilers.qbk (contents, props changed)
sandbox/variadic_macro_data/libs/variadic_macro_data/doc/VMDDesign.qbk (contents, props changed)
sandbox/variadic_macro_data/libs/variadic_macro_data/doc/VMDDetail.qbk (contents, props changed)
sandbox/variadic_macro_data/libs/variadic_macro_data/doc/VMDFunctionality.qbk (contents, props changed)
sandbox/variadic_macro_data/libs/variadic_macro_data/doc/VMDIntroduction.qbk (contents, props changed)
sandbox/variadic_macro_data/libs/variadic_macro_data/doc/VMDLimitations.qbk (contents, props changed)
sandbox/variadic_macro_data/libs/variadic_macro_data/doc/VMDNaming.qbk (contents, props changed)
sandbox/variadic_macro_data/libs/variadic_macro_data/doc/VMDReference.qbk (contents, props changed)
sandbox/variadic_macro_data/libs/variadic_macro_data/doc/VMDVariadicMacros.qbk (contents, props changed)
sandbox/variadic_macro_data/libs/variadic_macro_data/doc/VariadicMacroData.qbk (contents, props changed)
sandbox/variadic_macro_data/libs/variadic_macro_data/doc/html/
sandbox/variadic_macro_data/libs/variadic_macro_data/doc/html/VMD_DATA_ELEM.html (contents, props changed)
sandbox/variadic_macro_data/libs/variadic_macro_data/doc/html/VMD_DATA_SIZE.html (contents, props changed)
sandbox/variadic_macro_data/libs/variadic_macro_data/doc/html/VMD_DATA_TO_PP_ARRAY.html (contents, props changed)
sandbox/variadic_macro_data/libs/variadic_macro_data/doc/html/VMD_DATA_TO_PP_LIST.html (contents, props changed)
sandbox/variadic_macro_data/libs/variadic_macro_data/doc/html/VMD_DATA_TO_PP_SEQ.html (contents, props changed)
sandbox/variadic_macro_data/libs/variadic_macro_data/doc/html/VMD_DATA_TO_PP_TUPLE.html (contents, props changed)
sandbox/variadic_macro_data/libs/variadic_macro_data/doc/html/VMD_PP_ARRAY_TO_DATA.html (contents, props changed)
sandbox/variadic_macro_data/libs/variadic_macro_data/doc/html/VMD_PP_LIST_TO_DATA.html (contents, props changed)
sandbox/variadic_macro_data/libs/variadic_macro_data/doc/html/VMD_PP_SEQ_TO_DATA.html (contents, props changed)
sandbox/variadic_macro_data/libs/variadic_macro_data/doc/html/VMD_PP_TUPLE_ELEM.html (contents, props changed)
sandbox/variadic_macro_data/libs/variadic_macro_data/doc/html/VMD_PP_TUPLE_REM_CTOR.html (contents, props changed)
sandbox/variadic_macro_data/libs/variadic_macro_data/doc/html/VMD_PP_TUPLE_REVERSE.html (contents, props changed)
sandbox/variadic_macro_data/libs/variadic_macro_data/doc/html/VMD_PP_TUPLE_SIZE.html (contents, props changed)
sandbox/variadic_macro_data/libs/variadic_macro_data/doc/html/VMD_PP_TUPLE_TO_DATA.html (contents, props changed)
sandbox/variadic_macro_data/libs/variadic_macro_data/doc/html/VMD_PP_TUPLE_TO_LIST.html (contents, props changed)
sandbox/variadic_macro_data/libs/variadic_macro_data/doc/html/VMD_PP_TUPLE_TO_SEQ.html (contents, props changed)
sandbox/variadic_macro_data/libs/variadic_macro_data/doc/html/index.html (contents, props changed)
sandbox/variadic_macro_data/libs/variadic_macro_data/doc/html/the_variadic_macro_data_library/
sandbox/variadic_macro_data/libs/variadic_macro_data/doc/html/the_variadic_macro_data_library/vmd_ack.html (contents, props changed)
sandbox/variadic_macro_data/libs/variadic_macro_data/doc/html/the_variadic_macro_data_library/vmd_comparison.html (contents, props changed)
sandbox/variadic_macro_data/libs/variadic_macro_data/doc/html/the_variadic_macro_data_library/vmd_compilers.html (contents, props changed)
sandbox/variadic_macro_data/libs/variadic_macro_data/doc/html/the_variadic_macro_data_library/vmd_design.html (contents, props changed)
sandbox/variadic_macro_data/libs/variadic_macro_data/doc/html/the_variadic_macro_data_library/vmd_detail/
sandbox/variadic_macro_data/libs/variadic_macro_data/doc/html/the_variadic_macro_data_library/vmd_detail.html (contents, props changed)
sandbox/variadic_macro_data/libs/variadic_macro_data/doc/html/the_variadic_macro_data_library/vmd_detail/vmd_fromPP.html (contents, props changed)
sandbox/variadic_macro_data/libs/variadic_macro_data/doc/html/the_variadic_macro_data_library/vmd_detail/vmd_toPP.html (contents, props changed)
sandbox/variadic_macro_data/libs/variadic_macro_data/doc/html/the_variadic_macro_data_library/vmd_detail/vmd_tuple.html (contents, props changed)
sandbox/variadic_macro_data/libs/variadic_macro_data/doc/html/the_variadic_macro_data_library/vmd_functionality.html (contents, props changed)
sandbox/variadic_macro_data/libs/variadic_macro_data/doc/html/the_variadic_macro_data_library/vmd_limitations.html (contents, props changed)
sandbox/variadic_macro_data/libs/variadic_macro_data/doc/html/the_variadic_macro_data_library/vmd_naming.html (contents, props changed)
sandbox/variadic_macro_data/libs/variadic_macro_data/doc/html/the_variadic_macro_data_library/vmd_vmacros.html (contents, props changed)
sandbox/variadic_macro_data/libs/variadic_macro_data/doc/html/variadic_macro_data_reference.html (contents, props changed)
sandbox/variadic_macro_data/libs/variadic_macro_data/doc/jamfile.v2 (contents, props changed)
sandbox/variadic_macro_data/libs/variadic_macro_data/test/Jamfile.v2 (contents, props changed)
sandbox/variadic_macro_data/libs/variadic_macro_data/test/TestData.cpp (contents, props changed)
sandbox/variadic_macro_data/libs/variadic_macro_data/test/TestDataAsArray.cpp (contents, props changed)
sandbox/variadic_macro_data/libs/variadic_macro_data/test/TestDataAsList.cpp (contents, props changed)
sandbox/variadic_macro_data/libs/variadic_macro_data/test/TestDataAsSequence.cpp (contents, props changed)
sandbox/variadic_macro_data/libs/variadic_macro_data/test/TestDataAsTuple.cpp (contents, props changed)
sandbox/variadic_macro_data/libs/variadic_macro_data/test/TestDataTry.cpp (contents, props changed)
Added: sandbox/variadic_macro_data/boost/variadic_macro_data/VariadicMacroData.hpp
==============================================================================
--- (empty file)
+++ sandbox/variadic_macro_data/boost/variadic_macro_data/VariadicMacroData.hpp 2010-10-15 14:09:16 EDT (Fri, 15 Oct 2010)
@@ -0,0 +1,330 @@
+#if !defined(VARIADIC_MACRO_DATA_HPP)
+#define VARIADIC_MACRO_DATA_HPP
+
+#include <boost/config.hpp>
+
+#if !defined(BOOST_NO_VARIADIC_MACROS)
+
+#include <boost/preprocessor/array/data.hpp>
+#include <boost/preprocessor/list/to_tuple.hpp>
+#include <boost/preprocessor/seq/to_tuple.hpp>
+#include <boost/preprocessor/repetition/repeat.hpp>
+#include "detail/VMDDetail.hpp"
+
+/*
+
+ The succeeding comments in this file are in doxygen format.
+
+*/
+
+/** \file
+*/
+
+/// Expands to the number of comma-separated variadic macro data arguments.
+/**
+
+ ... = variadic macro data.
+
+ returns = the number of comma-separated variadic macro data
+ arguments being passed to it.
+
+ The value returned can be between 1 and 64.
+
+*/
+#define VMD_DATA_SIZE(...) \
+ VMD_DETAIL_DATA_SIZE(__VA_ARGS__) \
+/**/
+
+/// Expands to a particular variadic macro data argument.
+/**
+
+ n = number of the variadic macro data argument.
+ The number starts from 0 to the number of
+ variadic macro data arguments - 1. The maximum
+ number for n is 63.
+
+ ... = variadic macro data.
+
+ returns = the particular macro data argument as specified
+ by n. The argument returned can be any valid
+ preprocessing token.
+
+*/
+#define VMD_DATA_ELEM(n,...) \
+ VMD_DETAIL_DATA_ELEM(n,__VA_ARGS__) \
+/**/
+
+/// Expand to a Boost PP tuple data type.
+/**
+
+ ... = variadic macro data.
+
+ returns = a Boost PP library tuple data type.
+
+ You can use the result of this macro whenever
+ you need to pass a Boost PP library tuple as
+ data to a Boost PP library macro.
+
+*/
+#define VMD_DATA_TO_PP_TUPLE(...) \
+ VMD_DETAIL_DATA_TO_PP_TUPLE(__VA_ARGS__) \
+/**/
+
+/// Expand to a Boost PP array data type.
+/**
+
+ ... = variadic macro data.
+
+ returns = a Boost PP library array data type.
+
+ You can use the result of this macro whenever
+ you need to pass a Boost PP library array as
+ data to a Boost PP library macro.
+
+*/
+#define VMD_DATA_TO_PP_ARRAY(...) \
+ VMD_DETAIL_DATA_TO_PP_ARRAY(__VA_ARGS__) \
+/**/
+
+/// Expand to a Boost PP list data type.
+/**
+
+ ... = variadic macro data.
+
+ returns = a Boost PP library list data type.
+
+ You can use the result of this macro whenever
+ you need to pass a Boost PP library list as
+ data to a Boost PP library macro.
+
+*/
+#define VMD_DATA_TO_PP_LIST(...) \
+ VMD_DETAIL_DATA_TO_PP_LIST(__VA_ARGS__) \
+/**/
+
+/// Expand to a Boost PP sequence data type.
+/**
+
+ ... = variadic macro data.
+
+ returns = a Boost PP library sequence data type.
+
+ You can use the result of this macro whenever
+ you need to pass a Boost PP library sequence as
+ data to a Boost PP library macro.
+
+*/
+#define VMD_DATA_TO_PP_SEQ(...) \
+ VMD_DETAIL_DATA_TO_PP_SEQ(__VA_ARGS__) \
+/**/
+
+/// Expands to the number of elements in a tuple.
+/**
+
+ tuple = a Boost PP library tuple data type.
+
+ returns = the number of elements in the tuple,
+ commonly referred to as the tuple size.
+
+ In the Boost PP library there is no way to calculate
+ the size of a tuple, so that the size must be known
+ in order to be used by Boost PP library tuple macros.
+ With variadic macros the size of a tuple can be
+ calculated from the tuple itself.
+
+*/
+#define VMD_PP_TUPLE_SIZE(tuple) \
+ VMD_DETAIL_PP_TUPLE_SIZE(tuple) \
+/**/
+
+/// Expands to a particular tuple element.
+/**
+
+ n = number of the tuple element.
+ The number starts from 0 to the size of
+ the tuple - 1.
+
+ tuple = a Boost PP library tuple data type.
+
+ returns = the particular tuple element as specified
+ by n.
+
+ In the Boost PP library there is no way to calculate
+ the size of a tuple, so that the size must be known
+ in order to be used by Boost PP library tuple macros.
+ With variadic macros the size of a tuple can be
+ calculated from the tuple itself.
+
+ Therefore this macro is a replacement for the BOOST_PP_TUPLE_ELEM
+ macro without the necessity of having to pass a size.
+
+*/
+#define VMD_PP_TUPLE_ELEM(n,tuple) \
+ VMD_DETAIL_PP_TUPLE_ELEM(VMD_PP_TUPLE_SIZE(tuple),n,tuple) \
+/**/
+
+/// Expands to a series of tokens which are equivalent to removing the parentheses from a tuple.
+/**
+
+ tuple = a Boost PP library tuple data type.
+
+ returns = a series of comma-separated tokens equivalent to removing the parentheses from a tuple.
+
+ This result is actually equivalent to the form of variadic macro data
+ and can be used as an alternative to VMD_PP_TUPLE_TO_DATA to convert
+ the tuple to variadic macro data.
+
+ In the Boost PP library there is no way to calculate
+ the size of a tuple, so that the size must be known
+ in order to be used by Boost PP library tuple macros.
+ With variadic macros the size of a tuple can be
+ calculated from the tuple itself.
+
+ Therefore this macro is a replacement for the BOOST_PP_TUPLE_REM_CTOR
+ macro without the necessity of having to pass a size.
+
+*/
+#define VMD_PP_TUPLE_REM_CTOR(tuple) \
+ VMD_DETAIL_PP_TUPLE_REM_CTOR(VMD_PP_TUPLE_SIZE(tuple),tuple) \
+/**/
+
+/// Expands to a tuple whose elements are in reversed order.
+/**
+
+ tuple = a Boost PP library tuple data type.
+
+ returns = a tuple whose elements are in reversed order
+ from the original tuple.
+
+ In the Boost PP library there is no way to calculate
+ the size of a tuple, so that the size must be known
+ in order to be used by Boost PP library tuple macros.
+ With variadic macros the size of a tuple can be
+ calculated from the tuple itself.
+
+ Therefore this macro is a replacement for the BOOST_PP_TUPLE_REVERSE
+ macro without the necessity of having to pass a size.
+
+*/
+#define VMD_PP_TUPLE_REVERSE(tuple) \
+ VMD_DETAIL_PP_TUPLE_REVERSE(VMD_PP_TUPLE_SIZE(tuple),tuple) \
+/**/
+
+/// Expands to a list whose elements are the same as a tuple.
+/**
+
+ tuple = a Boost PP library tuple data type.
+
+ returns = a list whose elements are the same as the tuple
+ that is inputted.
+
+ In the Boost PP library there is no way to calculate
+ the size of a tuple, so that the size must be known
+ in order to be used by Boost PP library tuple macros.
+ With variadic macros the size of a tuple can be
+ calculated from the tuple itself.
+
+ Therefore this macro is a replacement for the BOOST_PP_TUPLE_TO_LIST
+ macro without the necessity of having to pass a size.
+
+*/
+#define VMD_PP_TUPLE_TO_LIST(tuple) \
+ VMD_DETAIL_PP_TUPLE_TO_LIST(VMD_PP_TUPLE_SIZE(tuple),tuple) \
+/**/
+
+/// Expands to a sequence whose elements are the same as a tuple.
+/**
+
+ tuple = a Boost PP library tuple data type.
+
+ returns = a sequence whose elements are the same as the tuple
+ that is inputted.
+
+ In the Boost PP library there is no way to calculate
+ the size of a tuple, so that the size must be known
+ in order to be used by Boost PP library tuple macros.
+ With variadic macros the size of a tuple can be
+ calculated from the tuple itself.
+
+ Therefore this macro is a replacement for the BOOST_PP_TUPLE_TO_SEQ
+ macro without the necessity of having to pass a size.
+
+*/
+#define VMD_PP_TUPLE_TO_SEQ(tuple) \
+ VMD_DETAIL_PP_TUPLE_TO_SEQ(VMD_PP_TUPLE_SIZE(tuple),tuple) \
+/**/
+
+/// Expands to variadic macro data whose arguments are the same as a tuple's elements.
+/**
+
+ tuple = a Boost PP library tuple data type.
+
+ returns = variadic macro data whose arguments are the same as the
+ elements of a tuple that is inputted.
+
+ The variadic macro data that is returned is in the form of
+ of comma separated arguments. The variadic macro data can be
+ passed to any macro which takes variadic macro data in the form
+ of a final variadic macro data '...' macro parameter.
+
+*/
+#define VMD_PP_TUPLE_TO_DATA(tuple) \
+ VMD_DETAIL_PP_TUPLE_TO_DATA(tuple) \
+/**/
+
+/// Expands to variadic macro data whose arguments are the same as an array's elements.
+/**
+
+ array = a Boost PP library array data type.
+
+ returns = variadic macro data whose arguments are the same as the
+ elements of an array that is inputted.
+
+ The variadic macro data that is returned is in the form of
+ of comma separated arguments. The variadic macro data can be
+ passed to any macro which takes variadic macro data in the form
+ of a final variadic macro data '...' macro parameter.
+
+*/
+#define VMD_PP_ARRAY_TO_DATA(array) \
+ VMD_PP_TUPLE_TO_DATA(BOOST_PP_ARRAY_DATA(array)) \
+/**/
+
+/// Expands to variadic macro data whose arguments are the same as a list's elements.
+/**
+
+ list = a Boost PP library list data type.
+
+ returns = variadic macro data whose arguments are the same as the
+ elements of a list that is inputted.
+
+ The variadic macro data that is returned is in the form of
+ of comma separated arguments. The variadic macro data can be
+ passed to any macro which takes variadic macro data in the form
+ of a final variadic macro data '...' macro parameter.
+
+*/
+#define VMD_PP_LIST_TO_DATA(list) \
+ VMD_PP_TUPLE_TO_DATA(BOOST_PP_LIST_TO_TUPLE(list)) \
+/**/
+
+/// Expands to variadic macro data whose arguments are the same as a sequence's elements.
+/**
+
+ seq = a Boost PP library sequence data type.
+
+ returns = variadic macro data whose arguments are the same as the
+ elements of a sequence that is inputted.
+
+ The variadic macro data that is returned is in the form of
+ of comma separated arguments. The variadic macro data can be
+ passed to any macro which takes variadic macro data in the form
+ of a final variadic macro data '...' macro parameter.
+
+*/
+#define VMD_PP_SEQ_TO_DATA(seq) \
+ VMD_PP_TUPLE_TO_DATA(BOOST_PP_SEQ_TO_TUPLE(seq)) \
+/**/
+
+#endif // BOOST_NO_VARIADIC_MACROS
+#endif // VARIADIC_MACRO_DATA_HPP
Added: sandbox/variadic_macro_data/boost/variadic_macro_data/detail/VMDDetail.hpp
==============================================================================
--- (empty file)
+++ sandbox/variadic_macro_data/boost/variadic_macro_data/detail/VMDDetail.hpp 2010-10-15 14:09:16 EDT (Fri, 15 Oct 2010)
@@ -0,0 +1,166 @@
+#if !defined(VMD_DETAIL_HPP)
+#define VMD_DETAIL_HPP
+
+#include <boost/config.hpp>
+
+#if !defined(BOOST_NO_VARIADIC_MACROS)
+
+#include <boost/preprocessor/tuple/elem.hpp>
+#include <boost/preprocessor/tuple/reverse.hpp>
+#include <boost/preprocessor/tuple/to_list.hpp>
+#include <boost/preprocessor/tuple/to_seq.hpp>
+#include <boost/preprocessor/tuple/rem.hpp>
+#if defined(BOOST_MSVC)
+#include <boost/preprocessor/arithmetic/add.hpp>
+#include <boost/preprocessor/cat.hpp>
+#include <boost/preprocessor/facilities/empty.hpp>
+#endif
+
+#define VMD_DETAIL_DATA_ELEM_0(p0, ...) p0
+#define VMD_DETAIL_DATA_ELEM_1(p0, p1, ...) p1
+#define VMD_DETAIL_DATA_ELEM_2(p0, p1, p2, ...) p2
+#define VMD_DETAIL_DATA_ELEM_3(p0, p1, p2, p3, ...) p3
+#define VMD_DETAIL_DATA_ELEM_4(p0, p1, p2, p3, p4, ...) p4
+#define VMD_DETAIL_DATA_ELEM_5(p0, p1, p2, p3, p4, p5, ...) p5
+#define VMD_DETAIL_DATA_ELEM_6(p0, p1, p2, p3, p4, p5, p6, ...) p6
+#define VMD_DETAIL_DATA_ELEM_7(p0, p1, p2, p3, p4, p5, p6, p7, ...) p7
+#define VMD_DETAIL_DATA_ELEM_8(p0, p1, p2, p3, p4, p5, p6, p7, p8, ...) p8
+#define VMD_DETAIL_DATA_ELEM_9(p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, ...) p9
+#define VMD_DETAIL_DATA_ELEM_10(p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, ...) p10
+#define VMD_DETAIL_DATA_ELEM_11(p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, ...) p11
+#define VMD_DETAIL_DATA_ELEM_12(p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, ...) p12
+#define VMD_DETAIL_DATA_ELEM_13(p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, ...) p13
+#define VMD_DETAIL_DATA_ELEM_14(p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, ...) p14
+#define VMD_DETAIL_DATA_ELEM_15(p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, p15, ...) p15
+#define VMD_DETAIL_DATA_ELEM_16(p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, p15, p16, ...) p16
+#define VMD_DETAIL_DATA_ELEM_17(p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, p15, p16, p17, ...) p17
+#define VMD_DETAIL_DATA_ELEM_18(p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, p15, p16, p17, p18, ...) p18
+#define VMD_DETAIL_DATA_ELEM_19(p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, p15, p16, p17, p18, p19, ...) p19
+#define VMD_DETAIL_DATA_ELEM_20(p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, p15, p16, p17, p18, p19, p20, ...) p20
+#define VMD_DETAIL_DATA_ELEM_21(p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, p15, p16, p17, p18, p19, p20, p21, ...) p21
+#define VMD_DETAIL_DATA_ELEM_22(p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, p15, p16, p17, p18, p19, p20, p21, p22, ...) p22
+#define VMD_DETAIL_DATA_ELEM_23(p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, p15, p16, p17, p18, p19, p20, p21, p22, p23, ...) p23
+#define VMD_DETAIL_DATA_ELEM_24(p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, p15, p16, p17, p18, p19, p20, p21, p22, p23, p24, ...) p24
+#define VMD_DETAIL_DATA_ELEM_25(p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, p15, p16, p17, p18, p19, p20, p21, p22, p23, p24, p25, ...) p25
+#define VMD_DETAIL_DATA_ELEM_26(p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, p15, p16, p17, p18, p19, p20, p21, p22, p23, p24, p25, p26, ...) p26
+#define VMD_DETAIL_DATA_ELEM_27(p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, p15, p16, p17, p18, p19, p20, p21, p22, p23, p24, p25, p26, p27, ...) p27
+#define VMD_DETAIL_DATA_ELEM_28(p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, p15, p16, p17, p18, p19, p20, p21, p22, p23, p24, p25, p26, p27, p28, ...) p28
+#define VMD_DETAIL_DATA_ELEM_29(p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, p15, p16, p17, p18, p19, p20, p21, p22, p23, p24, p25, p26, p27, p28, p29, ...) p29
+#define VMD_DETAIL_DATA_ELEM_30(p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, p15, p16, p17, p18, p19, p20, p21, p22, p23, p24, p25, p26, p27, p28, p29, p30, ...) p30
+#define VMD_DETAIL_DATA_ELEM_31(p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, p15, p16, p17, p18, p19, p20, p21, p22, p23, p24, p25, p26, p27, p28, p29, p30, p31, ...) p31
+#define VMD_DETAIL_DATA_ELEM_32(p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, p15, p16, p17, p18, p19, p20, p21, p22, p23, p24, p25, p26, p27, p28, p29, p30, p31, p32, ...) p32
+#define VMD_DETAIL_DATA_ELEM_33(p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, p15, p16, p17, p18, p19, p20, p21, p22, p23, p24, p25, p26, p27, p28, p29, p30, p31, p32, p33, ...) p33
+#define VMD_DETAIL_DATA_ELEM_34(p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, p15, p16, p17, p18, p19, p20, p21, p22, p23, p24, p25, p26, p27, p28, p29, p30, p31, p32, p33, p34, ...) p34
+#define VMD_DETAIL_DATA_ELEM_35(p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, p15, p16, p17, p18, p19, p20, p21, p22, p23, p24, p25, p26, p27, p28, p29, p30, p31, p32, p33, p34, p35, ...) p35
+#define VMD_DETAIL_DATA_ELEM_36(p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, p15, p16, p17, p18, p19, p20, p21, p22, p23, p24, p25, p26, p27, p28, p29, p30, p31, p32, p33, p34, p35, p36, ...) p36
+#define VMD_DETAIL_DATA_ELEM_37(p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, p15, p16, p17, p18, p19, p20, p21, p22, p23, p24, p25, p26, p27, p28, p29, p30, p31, p32, p33, p34, p35, p36, p37, ...) p37
+#define VMD_DETAIL_DATA_ELEM_38(p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, p15, p16, p17, p18, p19, p20, p21, p22, p23, p24, p25, p26, p27, p28, p29, p30, p31, p32, p33, p34, p35, p36, p37, p38, ...) p38
+#define VMD_DETAIL_DATA_ELEM_39(p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, p15, p16, p17, p18, p19, p20, p21, p22, p23, p24, p25, p26, p27, p28, p29, p30, p31, p32, p33, p34, p35, p36, p37, p38, p39, ...) p39
+#define VMD_DETAIL_DATA_ELEM_40(p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, p15, p16, p17, p18, p19, p20, p21, p22, p23, p24, p25, p26, p27, p28, p29, p30, p31, p32, p33, p34, p35, p36, p37, p38, p39, p40, ...) p40
+#define VMD_DETAIL_DATA_ELEM_41(p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, p15, p16, p17, p18, p19, p20, p21, p22, p23, p24, p25, p26, p27, p28, p29, p30, p31, p32, p33, p34, p35, p36, p37, p38, p39, p40, p41, ...) p41
+#define VMD_DETAIL_DATA_ELEM_42(p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, p15, p16, p17, p18, p19, p20, p21, p22, p23, p24, p25, p26, p27, p28, p29, p30, p31, p32, p33, p34, p35, p36, p37, p38, p39, p40, p41, p42, ...) p42
+#define VMD_DETAIL_DATA_ELEM_43(p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, p15, p16, p17, p18, p19, p20, p21, p22, p23, p24, p25, p26, p27, p28, p29, p30, p31, p32, p33, p34, p35, p36, p37, p38, p39, p40, p41, p42, p43, ...) p43
+#define VMD_DETAIL_DATA_ELEM_44(p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, p15, p16, p17, p18, p19, p20, p21, p22, p23, p24, p25, p26, p27, p28, p29, p30, p31, p32, p33, p34, p35, p36, p37, p38, p39, p40, p41, p42, p43, p44, ...) p44
+#define VMD_DETAIL_DATA_ELEM_45(p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, p15, p16, p17, p18, p19, p20, p21, p22, p23, p24, p25, p26, p27, p28, p29, p30, p31, p32, p33, p34, p35, p36, p37, p38, p39, p40, p41, p42, p43, p44, p45, ...) p45
+#define VMD_DETAIL_DATA_ELEM_46(p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, p15, p16, p17, p18, p19, p20, p21, p22, p23, p24, p25, p26, p27, p28, p29, p30, p31, p32, p33, p34, p35, p36, p37, p38, p39, p40, p41, p42, p43, p44, p45, p46, ...) p46
+#define VMD_DETAIL_DATA_ELEM_47(p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, p15, p16, p17, p18, p19, p20, p21, p22, p23, p24, p25, p26, p27, p28, p29, p30, p31, p32, p33, p34, p35, p36, p37, p38, p39, p40, p41, p42, p43, p44, p45, p46, p47, ...) p47
+#define VMD_DETAIL_DATA_ELEM_48(p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, p15, p16, p17, p18, p19, p20, p21, p22, p23, p24, p25, p26, p27, p28, p29, p30, p31, p32, p33, p34, p35, p36, p37, p38, p39, p40, p41, p42, p43, p44, p45, p46, p47, p48, ...) p48
+#define VMD_DETAIL_DATA_ELEM_49(p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, p15, p16, p17, p18, p19, p20, p21, p22, p23, p24, p25, p26, p27, p28, p29, p30, p31, p32, p33, p34, p35, p36, p37, p38, p39, p40, p41, p42, p43, p44, p45, p46, p47, p48, p49, ...) p49
+#define VMD_DETAIL_DATA_ELEM_50(p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, p15, p16, p17, p18, p19, p20, p21, p22, p23, p24, p25, p26, p27, p28, p29, p30, p31, p32, p33, p34, p35, p36, p37, p38, p39, p40, p41, p42, p43, p44, p45, p46, p47, p48, p49, p50, ...) p50
+#define VMD_DETAIL_DATA_ELEM_51(p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, p15, p16, p17, p18, p19, p20, p21, p22, p23, p24, p25, p26, p27, p28, p29, p30, p31, p32, p33, p34, p35, p36, p37, p38, p39, p40, p41, p42, p43, p44, p45, p46, p47, p48, p49, p50, p51, ...) p51
+#define VMD_DETAIL_DATA_ELEM_52(p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, p15, p16, p17, p18, p19, p20, p21, p22, p23, p24, p25, p26, p27, p28, p29, p30, p31, p32, p33, p34, p35, p36, p37, p38, p39, p40, p41, p42, p43, p44, p45, p46, p47, p48, p49, p50, p51, p52, ...) p52
+#define VMD_DETAIL_DATA_ELEM_53(p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, p15, p16, p17, p18, p19, p20, p21, p22, p23, p24, p25, p26, p27, p28, p29, p30, p31, p32, p33, p34, p35, p36, p37, p38, p39, p40, p41, p42, p43, p44, p45, p46, p47, p48, p49, p50, p51, p52, p53, ...) p53
+#define VMD_DETAIL_DATA_ELEM_54(p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, p15, p16, p17, p18, p19, p20, p21, p22, p23, p24, p25, p26, p27, p28, p29, p30, p31, p32, p33, p34, p35, p36, p37, p38, p39, p40, p41, p42, p43, p44, p45, p46, p47, p48, p49, p50, p51, p52, p53, p54, ...) p54
+#define VMD_DETAIL_DATA_ELEM_55(p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, p15, p16, p17, p18, p19, p20, p21, p22, p23, p24, p25, p26, p27, p28, p29, p30, p31, p32, p33, p34, p35, p36, p37, p38, p39, p40, p41, p42, p43, p44, p45, p46, p47, p48, p49, p50, p51, p52, p53, p54, p55, ...) p55
+#define VMD_DETAIL_DATA_ELEM_56(p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, p15, p16, p17, p18, p19, p20, p21, p22, p23, p24, p25, p26, p27, p28, p29, p30, p31, p32, p33, p34, p35, p36, p37, p38, p39, p40, p41, p42, p43, p44, p45, p46, p47, p48, p49, p50, p51, p52, p53, p54, p55, p56, ...) p56
+#define VMD_DETAIL_DATA_ELEM_57(p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, p15, p16, p17, p18, p19, p20, p21, p22, p23, p24, p25, p26, p27, p28, p29, p30, p31, p32, p33, p34, p35, p36, p37, p38, p39, p40, p41, p42, p43, p44, p45, p46, p47, p48, p49, p50, p51, p52, p53, p54, p55, p56, p57, ...) p57
+#define VMD_DETAIL_DATA_ELEM_58(p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, p15, p16, p17, p18, p19, p20, p21, p22, p23, p24, p25, p26, p27, p28, p29, p30, p31, p32, p33, p34, p35, p36, p37, p38, p39, p40, p41, p42, p43, p44, p45, p46, p47, p48, p49, p50, p51, p52, p53, p54, p55, p56, p57, p58, ...) p58
+#define VMD_DETAIL_DATA_ELEM_59(p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, p15, p16, p17, p18, p19, p20, p21, p22, p23, p24, p25, p26, p27, p28, p29, p30, p31, p32, p33, p34, p35, p36, p37, p38, p39, p40, p41, p42, p43, p44, p45, p46, p47, p48, p49, p50, p51, p52, p53, p54, p55, p56, p57, p58, p59, ...) p59
+#define VMD_DETAIL_DATA_ELEM_60(p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, p15, p16, p17, p18, p19, p20, p21, p22, p23, p24, p25, p26, p27, p28, p29, p30, p31, p32, p33, p34, p35, p36, p37, p38, p39, p40, p41, p42, p43, p44, p45, p46, p47, p48, p49, p50, p51, p52, p53, p54, p55, p56, p57, p58, p59, p60, ...) p60
+#define VMD_DETAIL_DATA_ELEM_61(p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, p15, p16, p17, p18, p19, p20, p21, p22, p23, p24, p25, p26, p27, p28, p29, p30, p31, p32, p33, p34, p35, p36, p37, p38, p39, p40, p41, p42, p43, p44, p45, p46, p47, p48, p49, p50, p51, p52, p53, p54, p55, p56, p57, p58, p59, p60, p61, ...) p61
+#define VMD_DETAIL_DATA_ELEM_62(p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, p15, p16, p17, p18, p19, p20, p21, p22, p23, p24, p25, p26, p27, p28, p29, p30, p31, p32, p33, p34, p35, p36, p37, p38, p39, p40, p41, p42, p43, p44, p45, p46, p47, p48, p49, p50, p51, p52, p53, p54, p55, p56, p57, p58, p59, p60, p61, p62, ...) p62
+#define VMD_DETAIL_DATA_ELEM_63(p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, p15, p16, p17, p18, p19, p20, p21, p22, p23, p24, p25, p26, p27, p28, p29, p30, p31, p32, p33, p34, p35, p36, p37, p38, p39, p40, p41, p42, p43, p44, p45, p46, p47, p48, p49, p50, p51, p52, p53, p54, p55, p56, p57, p58, p59, p60, p61, p62, p63, ...) p63
+
+#define VMD_DETAIL_ARG_N( \
+ A1,A2,A3,A4,A5,A6,A7,A8,A9,A10, \
+ A11,A12,A13,A14,A15,A16,A17,A18,A19,A20, \
+ A21,A22,A23,A24,A25,A26,A27,A28,A29,A30, \
+ A31,A32,A33,A34,A35,A36,A37,A38,A39,A40, \
+ A41,A42,A43,A44,A45,A46,A47,A48,A49,A50, \
+ A51,A52,A53,A54,A55,A56,A57,A58,A59,A60, \
+ A61,A62,A63,N,...) N \
+/**/
+#define VMD_DETAIL_RSEQ_N() \
+ 63,62,61,60, \
+ 59,58,57,56,55,54,53,52,51,50, \
+ 49,48,47,46,45,44,43,42,41,40, \
+ 39,38,37,36,35,34,33,32,31,30, \
+ 29,28,27,26,25,24,23,22,21,20, \
+ 19,18,17,16,15,14,13,12,11,10, \
+ 9,8,7,6,5,4,3,2,1,0 \
+/**/
+#define VMD_DETAIL_APPLY_I(macro, args) \
+ macro args \
+/**/
+#define VMD_DETAIL_APPLY(macro, args) \
+ VMD_DETAIL_APPLY_I(macro, args) \
+/**/
+#define VMD_DETAIL_DATA_TO_PP_TUPLE(...) \
+ ( __VA_ARGS__ ) \
+/**/
+#define VMD_DETAIL_REMOVE_TUPLE_PARENS(...) \
+ __VA_ARGS__ \
+/**/
+#define VMD_DETAIL_PP_TUPLE_TO_DATA(tuple) \
+ VMD_DETAIL_REMOVE_TUPLE_PARENS tuple \
+/**/
+#if defined(BOOST_MSVC)
+#define VMD_DETAIL_DATA_SIZE(...) \
+ BOOST_PP_ADD(VMD_DETAIL_APPLY(VMD_DETAIL_ARG_N, (__VA_ARGS__, VMD_DETAIL_RSEQ_N())),0) \
+/**/
+#else
+#define VMD_DETAIL_DATA_SIZE(...) \
+ VMD_DETAIL_APPLY(VMD_DETAIL_ARG_N, (__VA_ARGS__, VMD_DETAIL_RSEQ_N())) \
+/**/
+#endif
+#define VMD_DETAIL_PP_TUPLE_ELEM(size,i,tuple) \
+ BOOST_PP_TUPLE_ELEM(size,i,tuple) \
+/**/
+#define VMD_DETAIL_CAT(a, ...) VMD_DETAIL_PRIMITIVE_CAT(a, __VA_ARGS__)
+#define VMD_DETAIL_PRIMITIVE_CAT(a, ...) a ## __VA_ARGS__
+#if defined(BOOST_MSVC)
+#define VMD_DETAIL_DATA_ELEM(n,...) \
+ BOOST_PP_CAT(VMD_DETAIL_CAT(VMD_DETAIL_DATA_ELEM_, n)(__VA_ARGS__,),BOOST_PP_EMPTY()) \
+/**/
+#else
+#define VMD_DETAIL_DATA_ELEM(n,...) \
+ VMD_DETAIL_CAT(VMD_DETAIL_DATA_ELEM_, n)(__VA_ARGS__,) \
+/**/
+#endif
+#define VMD_DETAIL_DATA_TO_PP_ARRAY(...) \
+ ( VMD_DETAIL_DATA_SIZE(__VA_ARGS__) , VMD_DETAIL_DATA_TO_PP_TUPLE(__VA_ARGS__)) \
+/**/
+#define VMD_DETAIL_PP_TUPLE_TO_LIST(size,tuple) \
+ BOOST_PP_TUPLE_TO_LIST(size,tuple) \
+/**/
+#define VMD_DETAIL_DATA_TO_PP_LIST(...) \
+ VMD_DETAIL_PP_TUPLE_TO_LIST(VMD_DETAIL_DATA_SIZE(__VA_ARGS__),VMD_DETAIL_DATA_TO_PP_TUPLE(__VA_ARGS__)) \
+/**/
+#define VMD_DETAIL_PP_TUPLE_TO_SEQ(size,tuple) \
+ BOOST_PP_TUPLE_TO_SEQ(size,tuple) \
+/**/
+#define VMD_DETAIL_DATA_TO_PP_SEQ(...) \
+ VMD_DETAIL_PP_TUPLE_TO_SEQ(VMD_DETAIL_DATA_SIZE(__VA_ARGS__),VMD_DETAIL_DATA_TO_PP_TUPLE(__VA_ARGS__)) \
+/**/
+#define VMD_DETAIL_PP_TUPLE_SIZE(tuple) \
+ VMD_DETAIL_DATA_SIZE(VMD_DETAIL_PP_TUPLE_TO_DATA(tuple)) \
+/**/
+#define VMD_DETAIL_PP_TUPLE_REM_CTOR(size,tuple) \
+ BOOST_PP_TUPLE_REM_CTOR(size,tuple) \
+/**/
+#define VMD_DETAIL_PP_TUPLE_REVERSE(size,tuple) \
+ BOOST_PP_TUPLE_REVERSE(size,tuple) \
+/**/
+
+#endif // BOOST_NO_VARIADIC_MACROS
+#endif // VMD_DETAIL_HPP
Added: sandbox/variadic_macro_data/libs/variadic_macro_data/doc/VMDAcknowledgements.qbk
==============================================================================
--- (empty file)
+++ sandbox/variadic_macro_data/libs/variadic_macro_data/doc/VMDAcknowledgements.qbk 2010-10-15 14:09:16 EDT (Fri, 15 Oct 2010)
@@ -0,0 +1,12 @@
+[section:vmd_ack Acknowledgements]
+
+First and foremost I would like to thank Paul Mensonides for providing
+advice, explanation and code for working with variadic macros and macros
+in general. Secondly I would like to thank Steve Watanabe for his help, code,
+and explanations. Finally I have to acknowledge that this library is an amalgam
+of already known techniques for dealing with variadic macros themselves,
+among which are techniques published online by Laurent Deniau. I have added
+design and some cleverness in creating the library but I could not have done
+it without the previous knowledge of others.
+
+[endsect]
Added: sandbox/variadic_macro_data/libs/variadic_macro_data/doc/VMDComparison.qbk
==============================================================================
--- (empty file)
+++ sandbox/variadic_macro_data/libs/variadic_macro_data/doc/VMDComparison.qbk 2010-10-15 14:09:16 EDT (Fri, 15 Oct 2010)
@@ -0,0 +1,40 @@
+[section:vmd_comparison VMD and Boost PP]
+
+Boost PP already has the ability to pass variadic data
+as a single macro argument through any of its data types.
+It may then be reasonably asked why there is any need to
+use variadic macros to pass preprocessor data instead.
+
+There are two considerations for using variadic macros:
+
+# The syntax for using variadic macros is the more natural
+ syntax for passing macro arguments. Providing a comma-separated
+ list of data mimics the way macro arguments are usually passed.
+# The length of the variadic data does not have to be passed.
+ In Boost PP the length does not have to be passed for the
+ sequences and lists, but it has to be specified as part of an
+ array, and must be separately passed, or known in advance, for
+ tuples. Functionality in this library, however, alleviates this
+ last requirement for tuples.
+
+On the other hand there are considerations for using
+Boost PP data types for passing variadic data to macros:
+
+# Boost PP data types can be passed multiple times in any macro
+ whereas variadic macros can only pass its variadic macro data
+ a single time as the final set of arguments to a macro.
+# Boost PP data types, which are single macro arguments, fit
+ in well with Boost PP functionality.
+# Boost PP data types have a rich set of functionality for
+ manipulating the data in the data type.
+
+The more natural syntax of variadic macro data still provides
+enough importance, from the end-user's point of view, for using
+this library's facilities. A macro writer can design macros for
+the end-user which take variadic data using variadic macros while
+internally using Boost PP data types to manipulate that data and
+pass that data to other Boost PP macros. This library provides
+functionality to do just that with its macros which convert from
+variadic macro data to Boost PP data types.
+
+[endsect]
Added: sandbox/variadic_macro_data/libs/variadic_macro_data/doc/VMDCompilers.qbk
==============================================================================
--- (empty file)
+++ sandbox/variadic_macro_data/libs/variadic_macro_data/doc/VMDCompilers.qbk 2010-10-15 14:09:16 EDT (Fri, 15 Oct 2010)
@@ -0,0 +1,15 @@
+[section:vmd_compilers Compilers]
+
+A previously mentioned in the section 'Boost Support' the compilers supported
+by this library must not have the Boost Config macro BOOST_NO_VARIADIC_MACROS
+defined. I have tested this library using gcc/MingW and VC++ on Windows. Other
+compilers which currently should work with this library are gcc on Linux,
+Digital Mars C++, and Borland C++ Builder 6/Codegear C++.
+
+Currently (10/09/2010) the macro BOOST_NO_VARIADIC_MACROS is defined for
+compilers in the trunk. Since this macro specifies compilers which do not
+support variadic data, this library could be used with previous Boost
+installations but there would be no guarantee that the compilers for which
+one wanted to use this library actually support variadic macros.
+
+[endsect]
Added: sandbox/variadic_macro_data/libs/variadic_macro_data/doc/VMDDesign.qbk
==============================================================================
--- (empty file)
+++ sandbox/variadic_macro_data/libs/variadic_macro_data/doc/VMDDesign.qbk 2010-10-15 14:09:16 EDT (Fri, 15 Oct 2010)
@@ -0,0 +1,22 @@
+[section:vmd_design Design]
+
+The initial impetus for creating this library was entirely practical. I had been
+working on another library of macro functionality, which used Boost PP
+functionality, and I realized that if I could use variadic macros with
+my other library, the end-user usability for that library would be easier.
+Therefore the main design goal of this library is to interoperate variadic macro data
+with Boost PP in the easiest and clearest way possible.
+
+I also wanted to make the library as orthogonal and as easy to use as possible.
+Because of this, there is functionality in this library that is really not
+necessary for someone knowledgable about Boost PP, but it is included in
+the library even though it is just a convenient shorthand for
+functionality in Boost PP combined with new functionality in this library.
+This includes a number of the conversions back and forth between variadic
+macro data and Boost PP data types as well as nearly all of the specific
+Boost PP tuple functionality. As long as there is no run-time programming
+overhead, and a minimum of compile-time overhead, I value ease of use to
+be much more important than redundancy, so I added the functionality to
+this library.
+
+[endsect]
Added: sandbox/variadic_macro_data/libs/variadic_macro_data/doc/VMDDetail.qbk
==============================================================================
--- (empty file)
+++ sandbox/variadic_macro_data/libs/variadic_macro_data/doc/VMDDetail.qbk 2010-10-15 14:09:16 EDT (Fri, 15 Oct 2010)
@@ -0,0 +1,89 @@
+[section:vmd_detail Functional groups]
+
+The macros in VMD can best be explained as falling into four groups.
+These are:
+
+# Macros which directly support variadic macro data usage.
+# Macros which convert variadic macro data to Boost PP data types.
+# Macros which convert Boost PP data types to variadic macro data.
+# Macros which offer an easy to use replacement for Boost PP
+ tuple macros because they do not require the size of the tuple
+ to be specified.
+
+A further general explanation of each of these groups follow, while
+a specific explanation for each macro can be found in the reference
+section.
+
+[section:vmd_usage Variadic Usage]
+
+There are two macros which enhance variadic macro data usage.
+These macros add functionality to variadic macros so that the number
+of comma-separated tokens in the variadic macro data can be calculated,
+and that any token among the variadic macro data's comma-separated
+tokens can be returned. The two macros are:
+
+# VMD_DATA_SIZE(...), which returns the number of comma-separated
+ tokens.
+# VMD_DATA_ELEM(n,...), which returns a particular token among
+ the comma-separated sequence. Here 'n' stands for the number of
+ the token, starting with 0, which is returned from the variadic
+ macro data.
+
+[endsect]
+
+[section:vmd_toPP Convert to Boost PP data types]
+
+There are four macros which convert variadic macro data as a whole to
+each of the four Boost PP data types. These are:
+
+# VMD_DATA_TO_PP_TUPLE(...), which converts to a Boost PP tuple.
+# VMD_DATA_TO_PP_ARRAY(...), which converts to a Boost PP array.
+# VMD_DATA_TO_PP_LIST(...), which converts to a Boost PP list.
+# VMD_DATA_TO_PP_SEQ(...), which converts to a Boost PP sequence.
+
+[endsect]
+
+[section:vmd_fromPP Convert from Boost PP data types]
+
+There are four macros which convert each of the four Boost PP data
+types to variadic macro data. These are:
+
+# VMD_PP_TUPLE_TO_DATA(tuple), which converts from a Boost PP tuple.
+# VMD_PP_ARRAY_TO_DATA(array), which converts from a Boost PP array.
+# VMD_PP_LIST_TO_DATA(list), which converts from a Boost PP list.
+# VMD_PP_SEQ_TO_DATA(seq), which converts from a Boost PP sequence.
+
+In these macros the data is returned as a comma-separated list of
+tokens, which is the format of variadic macro data. The results of
+any of these macros can be passed to variadic macros as the final
+parameter.
+
+[endsect]
+
+[section:vmd_tuple Boost PP tuple enhancements]
+
+There are six macros which manipulate Boost PP tuple data. The first is an
+addition to Boost PP functionality when dealing with tuples while the
+final five are direct replacements for Boost PP tuple data manipulation
+macros and which do not require the size of the tuple. These are:
+
+# VMD_PP_TUPLE_SIZE(tuple), which returns the size of the tuple.
+# VMD_PP_TUPLE_ELEM(tuple), which is a replacement for
+ BOOST_PP_TUPLE_ELEM without having to pass the size of the
+ tuple as the first parameter.
+# VMD_PP_TUPLE_REM_CTOR(tuple), which is a replacement for
+ BOOST_PP_TUPLE_REM_CTOR without having to pass the size of the
+ tuple as the first parameter.
+# VMD_PP_TUPLE_REVERSE(tuple), which is a replacement for
+ BOOST_PP_TUPLE_REVERSE without having to pass the size of the
+ tuple as the first parameter.
+# VMD_PP_TUPLE_TO_LIST(tuple), which is a replacement for
+ BOOST_PP_TUPLE_TO_LIST without having to pass the size of the
+ tuple as the first parameter.
+# VMD_PP_TUPLE_TO_SEQ(tuple), which is a replacement for
+ BOOST_PP_TUPLE_TO_SEQ without having to pass the size of the
+ tuple as the first parameter.
+
+[endsect]
+
+[endsect]
Added: sandbox/variadic_macro_data/libs/variadic_macro_data/doc/VMDFunctionality.qbk
==============================================================================
--- (empty file)
+++ sandbox/variadic_macro_data/libs/variadic_macro_data/doc/VMDFunctionality.qbk 2010-10-15 14:09:16 EDT (Fri, 15 Oct 2010)
@@ -0,0 +1,35 @@
+[section:vmd_functionality Functionality]
+
+The design of Boost PP allows data, in the form of preprocessor
+tokens, to be grouped together into various data types, any one of
+which can be treated as a single preprocessor argument to a macro.
+A number of Boost PP macros accept data as a single argument. Each
+of these data types also has its own rich set of macros to manipulate
+the data. It is imperative when interoperating with Boost PP that
+data is able to be passed as a single argument, even though the data
+itself may consist of a number of preprocessing tokens.
+
+In variadic macros the data to be passed as variadic macro data is
+a comma-separated list of arguments, each of which can be any
+preprocessing token.
+
+Because the variadic macro data is more than a single token, in
+order to use variadic macro data with Boost PP, it is
+necessary to be able to convert the variadic macro data
+to a single argument Boost PP data type. One can do this either by
+converting the variadic macro data as a whole, by extracting any given
+token from the variadic macro data and use that as a single argument,
+or by combining individual tokens from the variadic
+macro data into Boost PP data types using the functionality of the
+Boost PP data type to do so. VMD provides means to interoperate
+variadic macro data with Boost PP in these ways.
+
+Outside of Boost PP interoperability, VMD allows individual tokens to
+be extracted from the variadic macro data and used in macro expansion
+or passed to other macross.
+
+Finally through the functionality of variadic macros, VMD provides parallel
+functionality to the Boost PP tuple interface macros with a set of macros
+which do not need the size of a tuple to be specified.
+
+[endsect]
Added: sandbox/variadic_macro_data/libs/variadic_macro_data/doc/VMDIntroduction.qbk
==============================================================================
--- (empty file)
+++ sandbox/variadic_macro_data/libs/variadic_macro_data/doc/VMDIntroduction.qbk 2010-10-15 14:09:16 EDT (Fri, 15 Oct 2010)
@@ -0,0 +1,26 @@
+[section:vmd_intro Introduction]
+
+The variadic macro data library, or VMD for short, is a library
+of macros which provide important functionality for variadic
+macros as well as integrating variadic macros with the Boost
+preprocessor library ( Boost PP ). It integrates with Boost PP
+without changing the latter library in any way.
+
+The functionality of the library may be summed up as:
+
+# Providing the means to extract any single token from the
+ comma-separated data which makes up variadic macro data,
+ as well as to calculate the number of tokens.
+# Convert variadic macro data to and from Boost PP data types.
+# Enhance the tuple functionality of Boost PP by providing
+ a means of calculating the size of a tuple as well as by
+ providing equivalent macros to Boost PP tuple macros
+ which do not require the size of the tuple to be explicitly
+ passed.
+
+The library is a header only library and all macros in the
+library are in a single header, whose name is 'VariadicMacroData.hpp'.
+
+The library is dependent on Boost PP.
+
+[endsect]
Added: sandbox/variadic_macro_data/libs/variadic_macro_data/doc/VMDLimitations.qbk
==============================================================================
--- (empty file)
+++ sandbox/variadic_macro_data/libs/variadic_macro_data/doc/VMDLimitations.qbk 2010-10-15 14:09:16 EDT (Fri, 15 Oct 2010)
@@ -0,0 +1,7 @@
+[section:vmd_limitations Limitations]
+
+The number of comma-separated macro parameters supported
+by the macros VMD_DATA_SIZE(...) and VMD_DATA_ELEM(n,...)
+is 64.
+
+[endsect]
Added: sandbox/variadic_macro_data/libs/variadic_macro_data/doc/VMDNaming.qbk
==============================================================================
--- (empty file)
+++ sandbox/variadic_macro_data/libs/variadic_macro_data/doc/VMDNaming.qbk 2010-10-15 14:09:16 EDT (Fri, 15 Oct 2010)
@@ -0,0 +1,23 @@
+[section:vmd_naming Naming conventions]
+
+Currently all of the macros in the library begin with the prefix VMD_,
+which stands for 'Variadic Macro Data'. If this library were to be
+accepted into Boost, the macros can easily be changed to use BOOST\_VMD\_
+as the prefix instead.
+
+Following the prefix, certain names in the macros refer to data types
+in this library or Boost PP. These names and their data types are:
+
+# DATA = variadic macro data as represented by '...' in a variadic
+ macro signature and \_\_VA\_ARGS\_\_ in variadic macro expansion.
+# TUPLE = Boost PP tuple data type.
+# ARRAY = Boost PP array data type.
+# LIST = Boost PP list data type.
+# SEQ = Boost PP sequence data type.
+
+I have used names in order to mimic the naming of Boost PP
+as closely as possible. Therefore I have used the terms SIZE and ELEM
+in the macro names because these are the terms in Boost PP to denote
+the number of tokens of data and the general name for a token.
+
+[endsect]
Added: sandbox/variadic_macro_data/libs/variadic_macro_data/doc/VMDReference.qbk
==============================================================================
--- (empty file)
+++ sandbox/variadic_macro_data/libs/variadic_macro_data/doc/VMDReference.qbk 2010-10-15 14:09:16 EDT (Fri, 15 Oct 2010)
@@ -0,0 +1 @@
+[xinclude VariadicMacroDataReference.xml]
Added: sandbox/variadic_macro_data/libs/variadic_macro_data/doc/VMDVariadicMacros.qbk
==============================================================================
--- (empty file)
+++ sandbox/variadic_macro_data/libs/variadic_macro_data/doc/VMDVariadicMacros.qbk 2010-10-15 14:09:16 EDT (Fri, 15 Oct 2010)
@@ -0,0 +1,30 @@
+[section:vmd_vmacros Variadic Macros]
+
+Variadic macros, as specified by C++0x, is a feature taken from the C99
+specification. They are macros which take a final parameter denoted as
+'...' which represents one or more final arguments to the macro as a
+series of comma-separated tokens. In the macro expansion a special
+keyword of '\_\_VA\_ARGS\_\_' represents the comma-separated tokens. This
+information when passed to a variadic macro I call 'variadic macro data',
+which gives its name to this library. The more general term 'variadic data'
+is used in this documentation to specify data passed to a macro which can
+contain any number of macro tokens as a single macro parameter, such as is
+found in Boost PP.
+
+C99, and by implication C++0x, provides no built-in way of accessing a
+single token from the comma-separated list of variadic macro data. But this
+library does provide a means to do that among its other functionality.
+
+[section:vmd_vmacros_Boost Boost support]
+
+Boost until recently has had no generic support for variadic macros
+based on the ability of a given compiler/version to support C99's variadic
+macros. This support has now been added to the trunk in the form of
+a macro which denotes that compiler support for variadic macros does not exist.
+This macro is BOOST_NO_VARIADIC_MACROS. The variadic macro data library
+will only work for a compiler/version combination when BOOST_NO_VARIADIC_MACROS
+is not defined.
+
+[endsect]
+
+[endsect]
Added: sandbox/variadic_macro_data/libs/variadic_macro_data/doc/VariadicMacroData.qbk
==============================================================================
--- (empty file)
+++ sandbox/variadic_macro_data/libs/variadic_macro_data/doc/VariadicMacroData.qbk 2010-10-15 14:09:16 EDT (Fri, 15 Oct 2010)
@@ -0,0 +1,23 @@
+[library The Variadic Macro Data Library
+ [quickbook 1.5]
+ [version 1.0]
+ [id variadic_macro_data]
+ [dirname variadic_macro_data]
+ [copyright 2010 Tropic Software East Inc]
+ [purpose Integration of variadic macro data with the Boost PP library]
+ [category preprocessor]
+ [authors [Diener, Edward]]
+ [source-mode c++]
+]
+
+[include VMDIntroduction.qbk]
+[include VMDVariadicMacros.qbk]
+[include VMDFunctionality.qbk]
+[include VMDNaming.qbk]
+[include VMDDetail.qbk]
+[include VMDReference.qbk]
+[include VMDComparison.qbk]
+[include VMDDesign.qbk]
+[include VMDCompilers.qbk]
+[include VMDLimitations.qbk]
+[include VMDAcknowledgements.qbk]
Added: sandbox/variadic_macro_data/libs/variadic_macro_data/doc/html/VMD_DATA_ELEM.html
==============================================================================
--- (empty file)
+++ sandbox/variadic_macro_data/libs/variadic_macro_data/doc/html/VMD_DATA_ELEM.html 2010-10-15 14:09:16 EDT (Fri, 15 Oct 2010)
@@ -0,0 +1,51 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Macro VMD_DATA_ELEM</title>
+<link rel="stylesheet" href="../../../../doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.0">
+<link rel="home" href="index.html" title="Chapter 1. The Variadic Macro Data Library 1.0">
+<link rel="up" href="variadic_macro_data_reference.html#header.boost.variadic_macro_data.VariadicMacroData_hpp" title="Header <boost/variadic_macro_data/VariadicMacroData.hpp>">
+<link rel="prev" href="VMD_DATA_SIZE.html" title="Macro VMD_DATA_SIZE">
+<link rel="next" href="VMD_DATA_TO_PP_TUPLE.html" title="Macro VMD_DATA_TO_PP_TUPLE">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="VMD_DATA_SIZE.html"><img src="../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="variadic_macro_data_reference.html#header.boost.variadic_macro_data.VariadicMacroData_hpp"><img src="../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="index.html"><img src="../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="VMD_DATA_TO_PP_TUPLE.html"><img src="../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="refentry">
+<a name="VMD_DATA_ELEM"></a><div class="titlepage"></div>
+<div class="refnamediv">
+<h2><span class="refentrytitle">Macro VMD_DATA_ELEM</span></h2>
+<p>VMD_DATA_ELEM — Expands to a particular variadic macro data argument. </p>
+</div>
+<h2 xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv-title">Synopsis</h2>
+<div xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv"><pre class="synopsis"><span class="comment">// In header: <<a class="link" href="variadic_macro_data_reference.html#header.boost.variadic_macro_data.VariadicMacroData_hpp" title="Header <boost/variadic_macro_data/VariadicMacroData.hpp>">boost/variadic_macro_data/VariadicMacroData.hpp</a>>
+
+</span>VMD_DATA_ELEM(n, ...)</pre></div>
+<div class="refsect1">
+<a name="id934859"></a><h2>Description</h2>
+<p>n = number of the variadic macro data argument. The number starts from 0 to the number of variadic macro data arguments - 1. The maximum number for n is 63.</p>
+<p>... = variadic macro data.</p>
+<p>returns = the particular macro data argument as specified by n. The argument returned can be any valid preprocessing token. </p>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2010 Tropic Software East Inc</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="VMD_DATA_SIZE.html"><img src="../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="variadic_macro_data_reference.html#header.boost.variadic_macro_data.VariadicMacroData_hpp"><img src="../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="index.html"><img src="../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="VMD_DATA_TO_PP_TUPLE.html"><img src="../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/variadic_macro_data/libs/variadic_macro_data/doc/html/VMD_DATA_SIZE.html
==============================================================================
--- (empty file)
+++ sandbox/variadic_macro_data/libs/variadic_macro_data/doc/html/VMD_DATA_SIZE.html 2010-10-15 14:09:16 EDT (Fri, 15 Oct 2010)
@@ -0,0 +1,51 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Macro VMD_DATA_SIZE</title>
+<link rel="stylesheet" href="../../../../doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.0">
+<link rel="home" href="index.html" title="Chapter 1. The Variadic Macro Data Library 1.0">
+<link rel="up" href="variadic_macro_data_reference.html#header.boost.variadic_macro_data.VariadicMacroData_hpp" title="Header <boost/variadic_macro_data/VariadicMacroData.hpp>">
+<link rel="prev" href="variadic_macro_data_reference.html" title="Variadic Macro Data Reference">
+<link rel="next" href="VMD_DATA_ELEM.html" title="Macro VMD_DATA_ELEM">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="variadic_macro_data_reference.html"><img src="../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="variadic_macro_data_reference.html#header.boost.variadic_macro_data.VariadicMacroData_hpp"><img src="../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="index.html"><img src="../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="VMD_DATA_ELEM.html"><img src="../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="refentry">
+<a name="VMD_DATA_SIZE"></a><div class="titlepage"></div>
+<div class="refnamediv">
+<h2><span class="refentrytitle">Macro VMD_DATA_SIZE</span></h2>
+<p>VMD_DATA_SIZE — Expands to the number of comma-separated variadic macro data arguments. </p>
+</div>
+<h2 xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv-title">Synopsis</h2>
+<div xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv"><pre class="synopsis"><span class="comment">// In header: <<a class="link" href="variadic_macro_data_reference.html#header.boost.variadic_macro_data.VariadicMacroData_hpp" title="Header <boost/variadic_macro_data/VariadicMacroData.hpp>">boost/variadic_macro_data/VariadicMacroData.hpp</a>>
+
+</span>VMD_DATA_SIZE(...)</pre></div>
+<div class="refsect1">
+<a name="id928142"></a><h2>Description</h2>
+<p>... = variadic macro data.</p>
+<p>returns = the number of comma-separated variadic macro data arguments being passed to it.</p>
+<p>The value returned can be between 1 and 64. </p>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2010 Tropic Software East Inc</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="variadic_macro_data_reference.html"><img src="../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="variadic_macro_data_reference.html#header.boost.variadic_macro_data.VariadicMacroData_hpp"><img src="../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="index.html"><img src="../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="VMD_DATA_ELEM.html"><img src="../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/variadic_macro_data/libs/variadic_macro_data/doc/html/VMD_DATA_TO_PP_ARRAY.html
==============================================================================
--- (empty file)
+++ sandbox/variadic_macro_data/libs/variadic_macro_data/doc/html/VMD_DATA_TO_PP_ARRAY.html 2010-10-15 14:09:16 EDT (Fri, 15 Oct 2010)
@@ -0,0 +1,51 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Macro VMD_DATA_TO_PP_ARRAY</title>
+<link rel="stylesheet" href="../../../../doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.0">
+<link rel="home" href="index.html" title="Chapter 1. The Variadic Macro Data Library 1.0">
+<link rel="up" href="variadic_macro_data_reference.html#header.boost.variadic_macro_data.VariadicMacroData_hpp" title="Header <boost/variadic_macro_data/VariadicMacroData.hpp>">
+<link rel="prev" href="VMD_DATA_TO_PP_TUPLE.html" title="Macro VMD_DATA_TO_PP_TUPLE">
+<link rel="next" href="VMD_DATA_TO_PP_LIST.html" title="Macro VMD_DATA_TO_PP_LIST">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="VMD_DATA_TO_PP_TUPLE.html"><img src="../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="variadic_macro_data_reference.html#header.boost.variadic_macro_data.VariadicMacroData_hpp"><img src="../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="index.html"><img src="../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="VMD_DATA_TO_PP_LIST.html"><img src="../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="refentry">
+<a name="VMD_DATA_TO_PP_ARRAY"></a><div class="titlepage"></div>
+<div class="refnamediv">
+<h2><span class="refentrytitle">Macro VMD_DATA_TO_PP_ARRAY</span></h2>
+<p>VMD_DATA_TO_PP_ARRAY — Expand to a Boost PP array data type. </p>
+</div>
+<h2 xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv-title">Synopsis</h2>
+<div xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv"><pre class="synopsis"><span class="comment">// In header: <<a class="link" href="variadic_macro_data_reference.html#header.boost.variadic_macro_data.VariadicMacroData_hpp" title="Header <boost/variadic_macro_data/VariadicMacroData.hpp>">boost/variadic_macro_data/VariadicMacroData.hpp</a>>
+
+</span>VMD_DATA_TO_PP_ARRAY(...)</pre></div>
+<div class="refsect1">
+<a name="id934936"></a><h2>Description</h2>
+<p>... = variadic macro data.</p>
+<p>returns = a Boost PP library array data type.</p>
+<p>You can use the result of this macro whenever you need to pass a Boost PP library array as data to a Boost PP library macro. </p>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2010 Tropic Software East Inc</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="VMD_DATA_TO_PP_TUPLE.html"><img src="../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="variadic_macro_data_reference.html#header.boost.variadic_macro_data.VariadicMacroData_hpp"><img src="../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="index.html"><img src="../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="VMD_DATA_TO_PP_LIST.html"><img src="../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/variadic_macro_data/libs/variadic_macro_data/doc/html/VMD_DATA_TO_PP_LIST.html
==============================================================================
--- (empty file)
+++ sandbox/variadic_macro_data/libs/variadic_macro_data/doc/html/VMD_DATA_TO_PP_LIST.html 2010-10-15 14:09:16 EDT (Fri, 15 Oct 2010)
@@ -0,0 +1,51 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Macro VMD_DATA_TO_PP_LIST</title>
+<link rel="stylesheet" href="../../../../doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.0">
+<link rel="home" href="index.html" title="Chapter 1. The Variadic Macro Data Library 1.0">
+<link rel="up" href="variadic_macro_data_reference.html#header.boost.variadic_macro_data.VariadicMacroData_hpp" title="Header <boost/variadic_macro_data/VariadicMacroData.hpp>">
+<link rel="prev" href="VMD_DATA_TO_PP_ARRAY.html" title="Macro VMD_DATA_TO_PP_ARRAY">
+<link rel="next" href="VMD_DATA_TO_PP_SEQ.html" title="Macro VMD_DATA_TO_PP_SEQ">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="VMD_DATA_TO_PP_ARRAY.html"><img src="../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="variadic_macro_data_reference.html#header.boost.variadic_macro_data.VariadicMacroData_hpp"><img src="../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="index.html"><img src="../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="VMD_DATA_TO_PP_SEQ.html"><img src="../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="refentry">
+<a name="VMD_DATA_TO_PP_LIST"></a><div class="titlepage"></div>
+<div class="refnamediv">
+<h2><span class="refentrytitle">Macro VMD_DATA_TO_PP_LIST</span></h2>
+<p>VMD_DATA_TO_PP_LIST — Expand to a Boost PP list data type. </p>
+</div>
+<h2 xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv-title">Synopsis</h2>
+<div xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv"><pre class="synopsis"><span class="comment">// In header: <<a class="link" href="variadic_macro_data_reference.html#header.boost.variadic_macro_data.VariadicMacroData_hpp" title="Header <boost/variadic_macro_data/VariadicMacroData.hpp>">boost/variadic_macro_data/VariadicMacroData.hpp</a>>
+
+</span>VMD_DATA_TO_PP_LIST(...)</pre></div>
+<div class="refsect1">
+<a name="id934974"></a><h2>Description</h2>
+<p>... = variadic macro data.</p>
+<p>returns = a Boost PP library list data type.</p>
+<p>You can use the result of this macro whenever you need to pass a Boost PP library list as data to a Boost PP library macro. </p>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2010 Tropic Software East Inc</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="VMD_DATA_TO_PP_ARRAY.html"><img src="../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="variadic_macro_data_reference.html#header.boost.variadic_macro_data.VariadicMacroData_hpp"><img src="../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="index.html"><img src="../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="VMD_DATA_TO_PP_SEQ.html"><img src="../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/variadic_macro_data/libs/variadic_macro_data/doc/html/VMD_DATA_TO_PP_SEQ.html
==============================================================================
--- (empty file)
+++ sandbox/variadic_macro_data/libs/variadic_macro_data/doc/html/VMD_DATA_TO_PP_SEQ.html 2010-10-15 14:09:16 EDT (Fri, 15 Oct 2010)
@@ -0,0 +1,51 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Macro VMD_DATA_TO_PP_SEQ</title>
+<link rel="stylesheet" href="../../../../doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.0">
+<link rel="home" href="index.html" title="Chapter 1. The Variadic Macro Data Library 1.0">
+<link rel="up" href="variadic_macro_data_reference.html#header.boost.variadic_macro_data.VariadicMacroData_hpp" title="Header <boost/variadic_macro_data/VariadicMacroData.hpp>">
+<link rel="prev" href="VMD_DATA_TO_PP_LIST.html" title="Macro VMD_DATA_TO_PP_LIST">
+<link rel="next" href="VMD_PP_TUPLE_SIZE.html" title="Macro VMD_PP_TUPLE_SIZE">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="VMD_DATA_TO_PP_LIST.html"><img src="../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="variadic_macro_data_reference.html#header.boost.variadic_macro_data.VariadicMacroData_hpp"><img src="../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="index.html"><img src="../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="VMD_PP_TUPLE_SIZE.html"><img src="../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="refentry">
+<a name="VMD_DATA_TO_PP_SEQ"></a><div class="titlepage"></div>
+<div class="refnamediv">
+<h2><span class="refentrytitle">Macro VMD_DATA_TO_PP_SEQ</span></h2>
+<p>VMD_DATA_TO_PP_SEQ — Expand to a Boost PP sequence data type. </p>
+</div>
+<h2 xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv-title">Synopsis</h2>
+<div xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv"><pre class="synopsis"><span class="comment">// In header: <<a class="link" href="variadic_macro_data_reference.html#header.boost.variadic_macro_data.VariadicMacroData_hpp" title="Header <boost/variadic_macro_data/VariadicMacroData.hpp>">boost/variadic_macro_data/VariadicMacroData.hpp</a>>
+
+</span>VMD_DATA_TO_PP_SEQ(...)</pre></div>
+<div class="refsect1">
+<a name="id935012"></a><h2>Description</h2>
+<p>... = variadic macro data.</p>
+<p>returns = a Boost PP library sequence data type.</p>
+<p>You can use the result of this macro whenever you need to pass a Boost PP library sequence as data to a Boost PP library macro. </p>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2010 Tropic Software East Inc</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="VMD_DATA_TO_PP_LIST.html"><img src="../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="variadic_macro_data_reference.html#header.boost.variadic_macro_data.VariadicMacroData_hpp"><img src="../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="index.html"><img src="../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="VMD_PP_TUPLE_SIZE.html"><img src="../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/variadic_macro_data/libs/variadic_macro_data/doc/html/VMD_DATA_TO_PP_TUPLE.html
==============================================================================
--- (empty file)
+++ sandbox/variadic_macro_data/libs/variadic_macro_data/doc/html/VMD_DATA_TO_PP_TUPLE.html 2010-10-15 14:09:16 EDT (Fri, 15 Oct 2010)
@@ -0,0 +1,51 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Macro VMD_DATA_TO_PP_TUPLE</title>
+<link rel="stylesheet" href="../../../../doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.0">
+<link rel="home" href="index.html" title="Chapter 1. The Variadic Macro Data Library 1.0">
+<link rel="up" href="variadic_macro_data_reference.html#header.boost.variadic_macro_data.VariadicMacroData_hpp" title="Header <boost/variadic_macro_data/VariadicMacroData.hpp>">
+<link rel="prev" href="VMD_DATA_ELEM.html" title="Macro VMD_DATA_ELEM">
+<link rel="next" href="VMD_DATA_TO_PP_ARRAY.html" title="Macro VMD_DATA_TO_PP_ARRAY">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="VMD_DATA_ELEM.html"><img src="../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="variadic_macro_data_reference.html#header.boost.variadic_macro_data.VariadicMacroData_hpp"><img src="../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="index.html"><img src="../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="VMD_DATA_TO_PP_ARRAY.html"><img src="../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="refentry">
+<a name="VMD_DATA_TO_PP_TUPLE"></a><div class="titlepage"></div>
+<div class="refnamediv">
+<h2><span class="refentrytitle">Macro VMD_DATA_TO_PP_TUPLE</span></h2>
+<p>VMD_DATA_TO_PP_TUPLE — Expand to a Boost PP tuple data type. </p>
+</div>
+<h2 xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv-title">Synopsis</h2>
+<div xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv"><pre class="synopsis"><span class="comment">// In header: <<a class="link" href="variadic_macro_data_reference.html#header.boost.variadic_macro_data.VariadicMacroData_hpp" title="Header <boost/variadic_macro_data/VariadicMacroData.hpp>">boost/variadic_macro_data/VariadicMacroData.hpp</a>>
+
+</span>VMD_DATA_TO_PP_TUPLE(...)</pre></div>
+<div class="refsect1">
+<a name="id934897"></a><h2>Description</h2>
+<p>... = variadic macro data.</p>
+<p>returns = a Boost PP library tuple data type.</p>
+<p>You can use the result of this macro whenever you need to pass a Boost PP library tuple as data to a Boost PP library macro. </p>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2010 Tropic Software East Inc</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="VMD_DATA_ELEM.html"><img src="../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="variadic_macro_data_reference.html#header.boost.variadic_macro_data.VariadicMacroData_hpp"><img src="../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="index.html"><img src="../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="VMD_DATA_TO_PP_ARRAY.html"><img src="../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/variadic_macro_data/libs/variadic_macro_data/doc/html/VMD_PP_ARRAY_TO_DATA.html
==============================================================================
--- (empty file)
+++ sandbox/variadic_macro_data/libs/variadic_macro_data/doc/html/VMD_PP_ARRAY_TO_DATA.html 2010-10-15 14:09:16 EDT (Fri, 15 Oct 2010)
@@ -0,0 +1,51 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Macro VMD_PP_ARRAY_TO_DATA</title>
+<link rel="stylesheet" href="../../../../doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.0">
+<link rel="home" href="index.html" title="Chapter 1. The Variadic Macro Data Library 1.0">
+<link rel="up" href="variadic_macro_data_reference.html#header.boost.variadic_macro_data.VariadicMacroData_hpp" title="Header <boost/variadic_macro_data/VariadicMacroData.hpp>">
+<link rel="prev" href="VMD_PP_TUPLE_TO_DATA.html" title="Macro VMD_PP_TUPLE_TO_DATA">
+<link rel="next" href="VMD_PP_LIST_TO_DATA.html" title="Macro VMD_PP_LIST_TO_DATA">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="VMD_PP_TUPLE_TO_DATA.html"><img src="../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="variadic_macro_data_reference.html#header.boost.variadic_macro_data.VariadicMacroData_hpp"><img src="../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="index.html"><img src="../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="VMD_PP_LIST_TO_DATA.html"><img src="../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="refentry">
+<a name="VMD_PP_ARRAY_TO_DATA"></a><div class="titlepage"></div>
+<div class="refnamediv">
+<h2><span class="refentrytitle">Macro VMD_PP_ARRAY_TO_DATA</span></h2>
+<p>VMD_PP_ARRAY_TO_DATA — Expands to variadic macro data whose arguments are the same as an array's elements. </p>
+</div>
+<h2 xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv-title">Synopsis</h2>
+<div xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv"><pre class="synopsis"><span class="comment">// In header: <<a class="link" href="variadic_macro_data_reference.html#header.boost.variadic_macro_data.VariadicMacroData_hpp" title="Header <boost/variadic_macro_data/VariadicMacroData.hpp>">boost/variadic_macro_data/VariadicMacroData.hpp</a>>
+
+</span>VMD_PP_ARRAY_TO_DATA(array)</pre></div>
+<div class="refsect1">
+<a name="id935341"></a><h2>Description</h2>
+<p>array = a Boost PP library array data type.</p>
+<p>returns = variadic macro data whose arguments are the same as the elements of an array that is inputted.</p>
+<p>The variadic macro data that is returned is in the form of of comma separated arguments. The variadic macro data can be passed to any macro which takes variadic macro data in the form of a final variadic macro data '...' macro parameter. </p>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2010 Tropic Software East Inc</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="VMD_PP_TUPLE_TO_DATA.html"><img src="../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="variadic_macro_data_reference.html#header.boost.variadic_macro_data.VariadicMacroData_hpp"><img src="../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="index.html"><img src="../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="VMD_PP_LIST_TO_DATA.html"><img src="../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/variadic_macro_data/libs/variadic_macro_data/doc/html/VMD_PP_LIST_TO_DATA.html
==============================================================================
--- (empty file)
+++ sandbox/variadic_macro_data/libs/variadic_macro_data/doc/html/VMD_PP_LIST_TO_DATA.html 2010-10-15 14:09:16 EDT (Fri, 15 Oct 2010)
@@ -0,0 +1,51 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Macro VMD_PP_LIST_TO_DATA</title>
+<link rel="stylesheet" href="../../../../doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.0">
+<link rel="home" href="index.html" title="Chapter 1. The Variadic Macro Data Library 1.0">
+<link rel="up" href="variadic_macro_data_reference.html#header.boost.variadic_macro_data.VariadicMacroData_hpp" title="Header <boost/variadic_macro_data/VariadicMacroData.hpp>">
+<link rel="prev" href="VMD_PP_ARRAY_TO_DATA.html" title="Macro VMD_PP_ARRAY_TO_DATA">
+<link rel="next" href="VMD_PP_SEQ_TO_DATA.html" title="Macro VMD_PP_SEQ_TO_DATA">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="VMD_PP_ARRAY_TO_DATA.html"><img src="../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="variadic_macro_data_reference.html#header.boost.variadic_macro_data.VariadicMacroData_hpp"><img src="../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="index.html"><img src="../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="VMD_PP_SEQ_TO_DATA.html"><img src="../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="refentry">
+<a name="VMD_PP_LIST_TO_DATA"></a><div class="titlepage"></div>
+<div class="refnamediv">
+<h2><span class="refentrytitle">Macro VMD_PP_LIST_TO_DATA</span></h2>
+<p>VMD_PP_LIST_TO_DATA — Expands to variadic macro data whose arguments are the same as a list's elements. </p>
+</div>
+<h2 xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv-title">Synopsis</h2>
+<div xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv"><pre class="synopsis"><span class="comment">// In header: <<a class="link" href="variadic_macro_data_reference.html#header.boost.variadic_macro_data.VariadicMacroData_hpp" title="Header <boost/variadic_macro_data/VariadicMacroData.hpp>">boost/variadic_macro_data/VariadicMacroData.hpp</a>>
+
+</span>VMD_PP_LIST_TO_DATA(list)</pre></div>
+<div class="refsect1">
+<a name="id935380"></a><h2>Description</h2>
+<p>list = a Boost PP library list data type.</p>
+<p>returns = variadic macro data whose arguments are the same as the elements of a list that is inputted.</p>
+<p>The variadic macro data that is returned is in the form of of comma separated arguments. The variadic macro data can be passed to any macro which takes variadic macro data in the form of a final variadic macro data '...' macro parameter. </p>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2010 Tropic Software East Inc</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="VMD_PP_ARRAY_TO_DATA.html"><img src="../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="variadic_macro_data_reference.html#header.boost.variadic_macro_data.VariadicMacroData_hpp"><img src="../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="index.html"><img src="../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="VMD_PP_SEQ_TO_DATA.html"><img src="../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/variadic_macro_data/libs/variadic_macro_data/doc/html/VMD_PP_SEQ_TO_DATA.html
==============================================================================
--- (empty file)
+++ sandbox/variadic_macro_data/libs/variadic_macro_data/doc/html/VMD_PP_SEQ_TO_DATA.html 2010-10-15 14:09:16 EDT (Fri, 15 Oct 2010)
@@ -0,0 +1,51 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Macro VMD_PP_SEQ_TO_DATA</title>
+<link rel="stylesheet" href="../../../../doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.0">
+<link rel="home" href="index.html" title="Chapter 1. The Variadic Macro Data Library 1.0">
+<link rel="up" href="variadic_macro_data_reference.html#header.boost.variadic_macro_data.VariadicMacroData_hpp" title="Header <boost/variadic_macro_data/VariadicMacroData.hpp>">
+<link rel="prev" href="VMD_PP_LIST_TO_DATA.html" title="Macro VMD_PP_LIST_TO_DATA">
+<link rel="next" href="the_variadic_macro_data_library/vmd_comparison.html" title="VMD and Boost PP">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="VMD_PP_LIST_TO_DATA.html"><img src="../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="variadic_macro_data_reference.html#header.boost.variadic_macro_data.VariadicMacroData_hpp"><img src="../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="index.html"><img src="../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="the_variadic_macro_data_library/vmd_comparison.html"><img src="../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="refentry">
+<a name="VMD_PP_SEQ_TO_DATA"></a><div class="titlepage"></div>
+<div class="refnamediv">
+<h2><span class="refentrytitle">Macro VMD_PP_SEQ_TO_DATA</span></h2>
+<p>VMD_PP_SEQ_TO_DATA — Expands to variadic macro data whose arguments are the same as a sequence's elements. </p>
+</div>
+<h2 xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv-title">Synopsis</h2>
+<div xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv"><pre class="synopsis"><span class="comment">// In header: <<a class="link" href="variadic_macro_data_reference.html#header.boost.variadic_macro_data.VariadicMacroData_hpp" title="Header <boost/variadic_macro_data/VariadicMacroData.hpp>">boost/variadic_macro_data/VariadicMacroData.hpp</a>>
+
+</span>VMD_PP_SEQ_TO_DATA(seq)</pre></div>
+<div class="refsect1">
+<a name="id935418"></a><h2>Description</h2>
+<p>seq = a Boost PP library sequence data type.</p>
+<p>returns = variadic macro data whose arguments are the same as the elements of a sequence that is inputted.</p>
+<p>The variadic macro data that is returned is in the form of of comma separated arguments. The variadic macro data can be passed to any macro which takes variadic macro data in the form of a final variadic macro data '...' macro parameter. </p>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2010 Tropic Software East Inc</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="VMD_PP_LIST_TO_DATA.html"><img src="../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="variadic_macro_data_reference.html#header.boost.variadic_macro_data.VariadicMacroData_hpp"><img src="../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="index.html"><img src="../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="the_variadic_macro_data_library/vmd_comparison.html"><img src="../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/variadic_macro_data/libs/variadic_macro_data/doc/html/VMD_PP_TUPLE_ELEM.html
==============================================================================
--- (empty file)
+++ sandbox/variadic_macro_data/libs/variadic_macro_data/doc/html/VMD_PP_TUPLE_ELEM.html 2010-10-15 14:09:16 EDT (Fri, 15 Oct 2010)
@@ -0,0 +1,53 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Macro VMD_PP_TUPLE_ELEM</title>
+<link rel="stylesheet" href="../../../../doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.0">
+<link rel="home" href="index.html" title="Chapter 1. The Variadic Macro Data Library 1.0">
+<link rel="up" href="variadic_macro_data_reference.html#header.boost.variadic_macro_data.VariadicMacroData_hpp" title="Header <boost/variadic_macro_data/VariadicMacroData.hpp>">
+<link rel="prev" href="VMD_PP_TUPLE_SIZE.html" title="Macro VMD_PP_TUPLE_SIZE">
+<link rel="next" href="VMD_PP_TUPLE_REM_CTOR.html" title="Macro VMD_PP_TUPLE_REM_CTOR">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="VMD_PP_TUPLE_SIZE.html"><img src="../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="variadic_macro_data_reference.html#header.boost.variadic_macro_data.VariadicMacroData_hpp"><img src="../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="index.html"><img src="../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="VMD_PP_TUPLE_REM_CTOR.html"><img src="../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="refentry">
+<a name="VMD_PP_TUPLE_ELEM"></a><div class="titlepage"></div>
+<div class="refnamediv">
+<h2><span class="refentrytitle">Macro VMD_PP_TUPLE_ELEM</span></h2>
+<p>VMD_PP_TUPLE_ELEM — Expands to a particular tuple element. </p>
+</div>
+<h2 xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv-title">Synopsis</h2>
+<div xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv"><pre class="synopsis"><span class="comment">// In header: <<a class="link" href="variadic_macro_data_reference.html#header.boost.variadic_macro_data.VariadicMacroData_hpp" title="Header <boost/variadic_macro_data/VariadicMacroData.hpp>">boost/variadic_macro_data/VariadicMacroData.hpp</a>>
+
+</span>VMD_PP_TUPLE_ELEM(n, tuple)</pre></div>
+<div class="refsect1">
+<a name="id935089"></a><h2>Description</h2>
+<p>n = number of the tuple element. The number starts from 0 to the size of the tuple - 1.</p>
+<p>tuple = a Boost PP library tuple data type.</p>
+<p>returns = the particular tuple element as specified by n.</p>
+<p>In the Boost PP library there is no way to calculate the size of a tuple, so that the size must be known in order to be used by Boost PP library tuple macros. With variadic macros the size of a tuple can be calculated from the tuple itself.</p>
+<p>Therefore this macro is a replacement for the BOOST_PP_TUPLE_ELEM macro without the necessity of having to pass a size. </p>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2010 Tropic Software East Inc</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="VMD_PP_TUPLE_SIZE.html"><img src="../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="variadic_macro_data_reference.html#header.boost.variadic_macro_data.VariadicMacroData_hpp"><img src="../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="index.html"><img src="../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="VMD_PP_TUPLE_REM_CTOR.html"><img src="../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/variadic_macro_data/libs/variadic_macro_data/doc/html/VMD_PP_TUPLE_REM_CTOR.html
==============================================================================
--- (empty file)
+++ sandbox/variadic_macro_data/libs/variadic_macro_data/doc/html/VMD_PP_TUPLE_REM_CTOR.html 2010-10-15 14:09:16 EDT (Fri, 15 Oct 2010)
@@ -0,0 +1,53 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Macro VMD_PP_TUPLE_REM_CTOR</title>
+<link rel="stylesheet" href="../../../../doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.0">
+<link rel="home" href="index.html" title="Chapter 1. The Variadic Macro Data Library 1.0">
+<link rel="up" href="variadic_macro_data_reference.html#header.boost.variadic_macro_data.VariadicMacroData_hpp" title="Header <boost/variadic_macro_data/VariadicMacroData.hpp>">
+<link rel="prev" href="VMD_PP_TUPLE_ELEM.html" title="Macro VMD_PP_TUPLE_ELEM">
+<link rel="next" href="VMD_PP_TUPLE_REVERSE.html" title="Macro VMD_PP_TUPLE_REVERSE">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="VMD_PP_TUPLE_ELEM.html"><img src="../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="variadic_macro_data_reference.html#header.boost.variadic_macro_data.VariadicMacroData_hpp"><img src="../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="index.html"><img src="../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="VMD_PP_TUPLE_REVERSE.html"><img src="../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="refentry">
+<a name="VMD_PP_TUPLE_REM_CTOR"></a><div class="titlepage"></div>
+<div class="refnamediv">
+<h2><span class="refentrytitle">Macro VMD_PP_TUPLE_REM_CTOR</span></h2>
+<p>VMD_PP_TUPLE_REM_CTOR — Expands to a series of tokens which are equivalent to removing the parentheses from a tuple. </p>
+</div>
+<h2 xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv-title">Synopsis</h2>
+<div xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv"><pre class="synopsis"><span class="comment">// In header: <<a class="link" href="variadic_macro_data_reference.html#header.boost.variadic_macro_data.VariadicMacroData_hpp" title="Header <boost/variadic_macro_data/VariadicMacroData.hpp>">boost/variadic_macro_data/VariadicMacroData.hpp</a>>
+
+</span>VMD_PP_TUPLE_REM_CTOR(tuple)</pre></div>
+<div class="refsect1">
+<a name="id935134"></a><h2>Description</h2>
+<p>tuple = a Boost PP library tuple data type.</p>
+<p>returns = a series of comma-separated tokens equivalent to removing the parentheses from a tuple.</p>
+<p>This result is actually equivalent to the form of variadic macro data and can be used as an alternative to VMD_PP_TUPLE_TO_DATA to convert the tuple to variadic macro data.</p>
+<p>In the Boost PP library there is no way to calculate the size of a tuple, so that the size must be known in order to be used by Boost PP library tuple macros. With variadic macros the size of a tuple can be calculated from the tuple itself.</p>
+<p>Therefore this macro is a replacement for the BOOST_PP_TUPLE_REM_CTOR macro without the necessity of having to pass a size. </p>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2010 Tropic Software East Inc</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="VMD_PP_TUPLE_ELEM.html"><img src="../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="variadic_macro_data_reference.html#header.boost.variadic_macro_data.VariadicMacroData_hpp"><img src="../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="index.html"><img src="../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="VMD_PP_TUPLE_REVERSE.html"><img src="../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/variadic_macro_data/libs/variadic_macro_data/doc/html/VMD_PP_TUPLE_REVERSE.html
==============================================================================
--- (empty file)
+++ sandbox/variadic_macro_data/libs/variadic_macro_data/doc/html/VMD_PP_TUPLE_REVERSE.html 2010-10-15 14:09:16 EDT (Fri, 15 Oct 2010)
@@ -0,0 +1,52 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Macro VMD_PP_TUPLE_REVERSE</title>
+<link rel="stylesheet" href="../../../../doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.0">
+<link rel="home" href="index.html" title="Chapter 1. The Variadic Macro Data Library 1.0">
+<link rel="up" href="variadic_macro_data_reference.html#header.boost.variadic_macro_data.VariadicMacroData_hpp" title="Header <boost/variadic_macro_data/VariadicMacroData.hpp>">
+<link rel="prev" href="VMD_PP_TUPLE_REM_CTOR.html" title="Macro VMD_PP_TUPLE_REM_CTOR">
+<link rel="next" href="VMD_PP_TUPLE_TO_LIST.html" title="Macro VMD_PP_TUPLE_TO_LIST">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="VMD_PP_TUPLE_REM_CTOR.html"><img src="../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="variadic_macro_data_reference.html#header.boost.variadic_macro_data.VariadicMacroData_hpp"><img src="../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="index.html"><img src="../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="VMD_PP_TUPLE_TO_LIST.html"><img src="../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="refentry">
+<a name="VMD_PP_TUPLE_REVERSE"></a><div class="titlepage"></div>
+<div class="refnamediv">
+<h2><span class="refentrytitle">Macro VMD_PP_TUPLE_REVERSE</span></h2>
+<p>VMD_PP_TUPLE_REVERSE — Expands to a tuple whose elements are in reversed order. </p>
+</div>
+<h2 xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv-title">Synopsis</h2>
+<div xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv"><pre class="synopsis"><span class="comment">// In header: <<a class="link" href="variadic_macro_data_reference.html#header.boost.variadic_macro_data.VariadicMacroData_hpp" title="Header <boost/variadic_macro_data/VariadicMacroData.hpp>">boost/variadic_macro_data/VariadicMacroData.hpp</a>>
+
+</span>VMD_PP_TUPLE_REVERSE(tuple)</pre></div>
+<div class="refsect1">
+<a name="id935178"></a><h2>Description</h2>
+<p>tuple = a Boost PP library tuple data type.</p>
+<p>returns = a tuple whose elements are in reversed order from the original tuple.</p>
+<p>In the Boost PP library there is no way to calculate the size of a tuple, so that the size must be known in order to be used by Boost PP library tuple macros. With variadic macros the size of a tuple can be calculated from the tuple itself.</p>
+<p>Therefore this macro is a replacement for the BOOST_PP_TUPLE_REVERSE macro without the necessity of having to pass a size. </p>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2010 Tropic Software East Inc</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="VMD_PP_TUPLE_REM_CTOR.html"><img src="../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="variadic_macro_data_reference.html#header.boost.variadic_macro_data.VariadicMacroData_hpp"><img src="../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="index.html"><img src="../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="VMD_PP_TUPLE_TO_LIST.html"><img src="../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/variadic_macro_data/libs/variadic_macro_data/doc/html/VMD_PP_TUPLE_SIZE.html
==============================================================================
--- (empty file)
+++ sandbox/variadic_macro_data/libs/variadic_macro_data/doc/html/VMD_PP_TUPLE_SIZE.html 2010-10-15 14:09:16 EDT (Fri, 15 Oct 2010)
@@ -0,0 +1,51 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Macro VMD_PP_TUPLE_SIZE</title>
+<link rel="stylesheet" href="../../../../doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.0">
+<link rel="home" href="index.html" title="Chapter 1. The Variadic Macro Data Library 1.0">
+<link rel="up" href="variadic_macro_data_reference.html#header.boost.variadic_macro_data.VariadicMacroData_hpp" title="Header <boost/variadic_macro_data/VariadicMacroData.hpp>">
+<link rel="prev" href="VMD_DATA_TO_PP_SEQ.html" title="Macro VMD_DATA_TO_PP_SEQ">
+<link rel="next" href="VMD_PP_TUPLE_ELEM.html" title="Macro VMD_PP_TUPLE_ELEM">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="VMD_DATA_TO_PP_SEQ.html"><img src="../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="variadic_macro_data_reference.html#header.boost.variadic_macro_data.VariadicMacroData_hpp"><img src="../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="index.html"><img src="../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="VMD_PP_TUPLE_ELEM.html"><img src="../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="refentry">
+<a name="VMD_PP_TUPLE_SIZE"></a><div class="titlepage"></div>
+<div class="refnamediv">
+<h2><span class="refentrytitle">Macro VMD_PP_TUPLE_SIZE</span></h2>
+<p>VMD_PP_TUPLE_SIZE — Expands to the number of elements in a tuple. </p>
+</div>
+<h2 xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv-title">Synopsis</h2>
+<div xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv"><pre class="synopsis"><span class="comment">// In header: <<a class="link" href="variadic_macro_data_reference.html#header.boost.variadic_macro_data.VariadicMacroData_hpp" title="Header <boost/variadic_macro_data/VariadicMacroData.hpp>">boost/variadic_macro_data/VariadicMacroData.hpp</a>>
+
+</span>VMD_PP_TUPLE_SIZE(tuple)</pre></div>
+<div class="refsect1">
+<a name="id935051"></a><h2>Description</h2>
+<p>tuple = a Boost PP library tuple data type.</p>
+<p>returns = the number of elements in the tuple, commonly referred to as the tuple size.</p>
+<p>In the Boost PP library there is no way to calculate the size of a tuple, so that the size must be known in order to be used by Boost PP library tuple macros. With variadic macros the size of a tuple can be calculated from the tuple itself. </p>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2010 Tropic Software East Inc</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="VMD_DATA_TO_PP_SEQ.html"><img src="../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="variadic_macro_data_reference.html#header.boost.variadic_macro_data.VariadicMacroData_hpp"><img src="../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="index.html"><img src="../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="VMD_PP_TUPLE_ELEM.html"><img src="../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/variadic_macro_data/libs/variadic_macro_data/doc/html/VMD_PP_TUPLE_TO_DATA.html
==============================================================================
--- (empty file)
+++ sandbox/variadic_macro_data/libs/variadic_macro_data/doc/html/VMD_PP_TUPLE_TO_DATA.html 2010-10-15 14:09:16 EDT (Fri, 15 Oct 2010)
@@ -0,0 +1,51 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Macro VMD_PP_TUPLE_TO_DATA</title>
+<link rel="stylesheet" href="../../../../doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.0">
+<link rel="home" href="index.html" title="Chapter 1. The Variadic Macro Data Library 1.0">
+<link rel="up" href="variadic_macro_data_reference.html#header.boost.variadic_macro_data.VariadicMacroData_hpp" title="Header <boost/variadic_macro_data/VariadicMacroData.hpp>">
+<link rel="prev" href="VMD_PP_TUPLE_TO_SEQ.html" title="Macro VMD_PP_TUPLE_TO_SEQ">
+<link rel="next" href="VMD_PP_ARRAY_TO_DATA.html" title="Macro VMD_PP_ARRAY_TO_DATA">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="VMD_PP_TUPLE_TO_SEQ.html"><img src="../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="variadic_macro_data_reference.html#header.boost.variadic_macro_data.VariadicMacroData_hpp"><img src="../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="index.html"><img src="../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="VMD_PP_ARRAY_TO_DATA.html"><img src="../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="refentry">
+<a name="VMD_PP_TUPLE_TO_DATA"></a><div class="titlepage"></div>
+<div class="refnamediv">
+<h2><span class="refentrytitle">Macro VMD_PP_TUPLE_TO_DATA</span></h2>
+<p>VMD_PP_TUPLE_TO_DATA — Expands to variadic macro data whose arguments are the same as a tuple's elements. </p>
+</div>
+<h2 xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv-title">Synopsis</h2>
+<div xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv"><pre class="synopsis"><span class="comment">// In header: <<a class="link" href="variadic_macro_data_reference.html#header.boost.variadic_macro_data.VariadicMacroData_hpp" title="Header <boost/variadic_macro_data/VariadicMacroData.hpp>">boost/variadic_macro_data/VariadicMacroData.hpp</a>>
+
+</span>VMD_PP_TUPLE_TO_DATA(tuple)</pre></div>
+<div class="refsect1">
+<a name="id935303"></a><h2>Description</h2>
+<p>tuple = a Boost PP library tuple data type.</p>
+<p>returns = variadic macro data whose arguments are the same as the elements of a tuple that is inputted.</p>
+<p>The variadic macro data that is returned is in the form of of comma separated arguments. The variadic macro data can be passed to any macro which takes variadic macro data in the form of a final variadic macro data '...' macro parameter. </p>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2010 Tropic Software East Inc</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="VMD_PP_TUPLE_TO_SEQ.html"><img src="../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="variadic_macro_data_reference.html#header.boost.variadic_macro_data.VariadicMacroData_hpp"><img src="../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="index.html"><img src="../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="VMD_PP_ARRAY_TO_DATA.html"><img src="../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/variadic_macro_data/libs/variadic_macro_data/doc/html/VMD_PP_TUPLE_TO_LIST.html
==============================================================================
--- (empty file)
+++ sandbox/variadic_macro_data/libs/variadic_macro_data/doc/html/VMD_PP_TUPLE_TO_LIST.html 2010-10-15 14:09:16 EDT (Fri, 15 Oct 2010)
@@ -0,0 +1,52 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Macro VMD_PP_TUPLE_TO_LIST</title>
+<link rel="stylesheet" href="../../../../doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.0">
+<link rel="home" href="index.html" title="Chapter 1. The Variadic Macro Data Library 1.0">
+<link rel="up" href="variadic_macro_data_reference.html#header.boost.variadic_macro_data.VariadicMacroData_hpp" title="Header <boost/variadic_macro_data/VariadicMacroData.hpp>">
+<link rel="prev" href="VMD_PP_TUPLE_REVERSE.html" title="Macro VMD_PP_TUPLE_REVERSE">
+<link rel="next" href="VMD_PP_TUPLE_TO_SEQ.html" title="Macro VMD_PP_TUPLE_TO_SEQ">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="VMD_PP_TUPLE_REVERSE.html"><img src="../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="variadic_macro_data_reference.html#header.boost.variadic_macro_data.VariadicMacroData_hpp"><img src="../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="index.html"><img src="../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="VMD_PP_TUPLE_TO_SEQ.html"><img src="../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="refentry">
+<a name="VMD_PP_TUPLE_TO_LIST"></a><div class="titlepage"></div>
+<div class="refnamediv">
+<h2><span class="refentrytitle">Macro VMD_PP_TUPLE_TO_LIST</span></h2>
+<p>VMD_PP_TUPLE_TO_LIST — Expands to a list whose elements are the same as a tuple. </p>
+</div>
+<h2 xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv-title">Synopsis</h2>
+<div xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv"><pre class="synopsis"><span class="comment">// In header: <<a class="link" href="variadic_macro_data_reference.html#header.boost.variadic_macro_data.VariadicMacroData_hpp" title="Header <boost/variadic_macro_data/VariadicMacroData.hpp>">boost/variadic_macro_data/VariadicMacroData.hpp</a>>
+
+</span>VMD_PP_TUPLE_TO_LIST(tuple)</pre></div>
+<div class="refsect1">
+<a name="id935220"></a><h2>Description</h2>
+<p>tuple = a Boost PP library tuple data type.</p>
+<p>returns = a list whose elements are the same as the tuple that is inputted.</p>
+<p>In the Boost PP library there is no way to calculate the size of a tuple, so that the size must be known in order to be used by Boost PP library tuple macros. With variadic macros the size of a tuple can be calculated from the tuple itself.</p>
+<p>Therefore this macro is a replacement for the BOOST_PP_TUPLE_TO_LIST macro without the necessity of having to pass a size. </p>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2010 Tropic Software East Inc</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="VMD_PP_TUPLE_REVERSE.html"><img src="../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="variadic_macro_data_reference.html#header.boost.variadic_macro_data.VariadicMacroData_hpp"><img src="../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="index.html"><img src="../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="VMD_PP_TUPLE_TO_SEQ.html"><img src="../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/variadic_macro_data/libs/variadic_macro_data/doc/html/VMD_PP_TUPLE_TO_SEQ.html
==============================================================================
--- (empty file)
+++ sandbox/variadic_macro_data/libs/variadic_macro_data/doc/html/VMD_PP_TUPLE_TO_SEQ.html 2010-10-15 14:09:16 EDT (Fri, 15 Oct 2010)
@@ -0,0 +1,52 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Macro VMD_PP_TUPLE_TO_SEQ</title>
+<link rel="stylesheet" href="../../../../doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.0">
+<link rel="home" href="index.html" title="Chapter 1. The Variadic Macro Data Library 1.0">
+<link rel="up" href="variadic_macro_data_reference.html#header.boost.variadic_macro_data.VariadicMacroData_hpp" title="Header <boost/variadic_macro_data/VariadicMacroData.hpp>">
+<link rel="prev" href="VMD_PP_TUPLE_TO_LIST.html" title="Macro VMD_PP_TUPLE_TO_LIST">
+<link rel="next" href="VMD_PP_TUPLE_TO_DATA.html" title="Macro VMD_PP_TUPLE_TO_DATA">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="VMD_PP_TUPLE_TO_LIST.html"><img src="../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="variadic_macro_data_reference.html#header.boost.variadic_macro_data.VariadicMacroData_hpp"><img src="../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="index.html"><img src="../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="VMD_PP_TUPLE_TO_DATA.html"><img src="../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="refentry">
+<a name="VMD_PP_TUPLE_TO_SEQ"></a><div class="titlepage"></div>
+<div class="refnamediv">
+<h2><span class="refentrytitle">Macro VMD_PP_TUPLE_TO_SEQ</span></h2>
+<p>VMD_PP_TUPLE_TO_SEQ — Expands to a sequence whose elements are the same as a tuple. </p>
+</div>
+<h2 xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv-title">Synopsis</h2>
+<div xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv"><pre class="synopsis"><span class="comment">// In header: <<a class="link" href="variadic_macro_data_reference.html#header.boost.variadic_macro_data.VariadicMacroData_hpp" title="Header <boost/variadic_macro_data/VariadicMacroData.hpp>">boost/variadic_macro_data/VariadicMacroData.hpp</a>>
+
+</span>VMD_PP_TUPLE_TO_SEQ(tuple)</pre></div>
+<div class="refsect1">
+<a name="id935262"></a><h2>Description</h2>
+<p>tuple = a Boost PP library tuple data type.</p>
+<p>returns = a sequence whose elements are the same as the tuple that is inputted.</p>
+<p>In the Boost PP library there is no way to calculate the size of a tuple, so that the size must be known in order to be used by Boost PP library tuple macros. With variadic macros the size of a tuple can be calculated from the tuple itself.</p>
+<p>Therefore this macro is a replacement for the BOOST_PP_TUPLE_TO_SEQ macro without the necessity of having to pass a size. </p>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2010 Tropic Software East Inc</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="VMD_PP_TUPLE_TO_LIST.html"><img src="../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="variadic_macro_data_reference.html#header.boost.variadic_macro_data.VariadicMacroData_hpp"><img src="../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="index.html"><img src="../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="VMD_PP_TUPLE_TO_DATA.html"><img src="../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/variadic_macro_data/libs/variadic_macro_data/doc/html/index.html
==============================================================================
--- (empty file)
+++ sandbox/variadic_macro_data/libs/variadic_macro_data/doc/html/index.html 2010-10-15 14:09:16 EDT (Fri, 15 Oct 2010)
@@ -0,0 +1,109 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Chapter 1. The Variadic Macro Data Library 1.0</title>
+<link rel="stylesheet" href="../../../../doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.0">
+<link rel="home" href="index.html" title="Chapter 1. The Variadic Macro Data Library 1.0">
+<link rel="next" href="the_variadic_macro_data_library/vmd_vmacros.html" title="Variadic Macros">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav"><a accesskey="n" href="the_variadic_macro_data_library/vmd_vmacros.html"><img src="../../../../doc/src/images/next.png" alt="Next"></a></div>
+<div class="chapter">
+<div class="titlepage"><div>
+<div><h2 class="title">
+<a name="variadic_macro_data"></a>Chapter 1. The Variadic Macro Data Library 1.0</h2></div>
+<div><div class="author"><h3 class="author">
+<span class="firstname">Edward</span> <span class="surname">Diener</span>
+</h3></div></div>
+<div><p class="copyright">Copyright © 2010 Tropic Software East Inc</p></div>
+</div></div>
+<div class="toc">
+<p><b>Table of Contents</b></p>
+<dl>
+<dt><span class="section">Introduction</span></dt>
+<dt><span class="section">Variadic Macros</span></dt>
+<dd><dl><dt><span class="section"><a href="the_variadic_macro_data_library/vmd_vmacros.html#the_variadic_macro_data_library.vmd_vmacros.vmd_vmacros_Boost">Boost
+ support</a></span></dt></dl></dd>
+<dt><span class="section">Functionality</span></dt>
+<dt><span class="section">Naming conventions</span></dt>
+<dt><span class="section"><a href="the_variadic_macro_data_library/vmd_detail.html">Functional
+ groups</a></span></dt>
+<dd><dl>
+<dt><span class="section"><a href="the_variadic_macro_data_library/vmd_detail.html#the_variadic_macro_data_library.vmd_detail.vmd_usage">Variadic
+ Usage</a></span></dt>
+<dt><span class="section"><a href="the_variadic_macro_data_library/vmd_detail/vmd_toPP.html">Convert
+ to Boost PP data types</a></span></dt>
+<dt><span class="section"><a href="the_variadic_macro_data_library/vmd_detail/vmd_fromPP.html">Convert
+ from Boost PP data types</a></span></dt>
+<dt><span class="section"><a href="the_variadic_macro_data_library/vmd_detail/vmd_tuple.html">Boost
+ PP tuple enhancements</a></span></dt>
+</dl></dd>
+<dt><span class="section">Variadic Macro Data Reference</span></dt>
+<dd><dl>
+<dt><span class="section">Header <boost/variadic_macro_data/VariadicMacroData.hpp></span></dt>
+<dd><dl></dl></dd>
+</dl></dd>
+<dt><span class="section"><a href="the_variadic_macro_data_library/vmd_comparison.html">VMD and
+ Boost PP</a></span></dt>
+<dt><span class="section">Design</span></dt>
+<dt><span class="section">Compilers</span></dt>
+<dt><span class="section">Limitations</span></dt>
+<dt><span class="section">Acknowledgements</span></dt>
+</dl>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="the_variadic_macro_data_library.vmd_intro"></a><a class="link" href="index.html#the_variadic_macro_data_library.vmd_intro" title="Introduction">Introduction</a>
+</h2></div></div></div>
+<p>
+ The variadic macro data library, or VMD for short, is a library of macros which
+ provide important functionality for variadic macros as well as integrating
+ variadic macros with the Boost preprocessor library ( Boost PP ). It integrates
+ with Boost PP without changing the latter library in any way.
+ </p>
+<p>
+ The functionality of the library may be summed up as:
+ </p>
+<div class="orderedlist"><ol class="orderedlist" type="1">
+<li class="listitem">
+ Providing the means to extract any single token from the comma-separated
+ data which makes up variadic macro data, as well as to calculate the number
+ of tokens.
+ </li>
+<li class="listitem">
+ Convert variadic macro data to and from Boost PP data types.
+ </li>
+<li class="listitem">
+ Enhance the tuple functionality of Boost PP by providing a means of calculating
+ the size of a tuple as well as by providing equivalent macros to Boost
+ PP tuple macros which do not require the size of the tuple to be explicitly
+ passed.
+ </li>
+</ol></div>
+<p>
+ The library is a header only library and all macros in the library are in a
+ single header, whose name is 'VariadicMacroData.hpp'.
+ </p>
+<p>
+ The library is dependent on Boost PP.
+ </p>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"><p><small>Last revised: October 15, 2010 at 16:45:53 GMT</small></p></td>
+<td align="right"><div class="copyright-footer"></div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav"><a accesskey="n" href="the_variadic_macro_data_library/vmd_vmacros.html"><img src="../../../../doc/src/images/next.png" alt="Next"></a></div>
+</body>
+</html>
Added: sandbox/variadic_macro_data/libs/variadic_macro_data/doc/html/the_variadic_macro_data_library/vmd_ack.html
==============================================================================
--- (empty file)
+++ sandbox/variadic_macro_data/libs/variadic_macro_data/doc/html/the_variadic_macro_data_library/vmd_ack.html 2010-10-15 14:09:16 EDT (Fri, 15 Oct 2010)
@@ -0,0 +1,48 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Acknowledgements</title>
+<link rel="stylesheet" href="../../../../../doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.0">
+<link rel="home" href="../index.html" title="Chapter 1. The Variadic Macro Data Library 1.0">
+<link rel="up" href="../index.html" title="Chapter 1. The Variadic Macro Data Library 1.0">
+<link rel="prev" href="vmd_limitations.html" title="Limitations">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="vmd_limitations.html"><img src="../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/src/images/home.png" alt="Home"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="the_variadic_macro_data_library.vmd_ack"></a><a class="link" href="vmd_ack.html" title="Acknowledgements">Acknowledgements</a>
+</h2></div></div></div>
+<p>
+ First and foremost I would like to thank Paul Mensonides for providing advice,
+ explanation and code for working with variadic macros and macros in general.
+ Secondly I would like to thank Steve Watanabe for his help, code, and explanations.
+ Finally I have to acknowledge that this library is an amalgam of already known
+ techniques for dealing with variadic macros themselves, among which are techniques
+ published online by Laurent Deniau. I have added design and some cleverness
+ in creating the library but I could not have done it without the previous knowledge
+ of others.
+ </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2010 Tropic Software East Inc</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="vmd_limitations.html"><img src="../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/src/images/home.png" alt="Home"></a>
+</div>
+</body>
+</html>
Added: sandbox/variadic_macro_data/libs/variadic_macro_data/doc/html/the_variadic_macro_data_library/vmd_comparison.html
==============================================================================
--- (empty file)
+++ sandbox/variadic_macro_data/libs/variadic_macro_data/doc/html/the_variadic_macro_data_library/vmd_comparison.html 2010-10-15 14:09:16 EDT (Fri, 15 Oct 2010)
@@ -0,0 +1,90 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>VMD and Boost PP</title>
+<link rel="stylesheet" href="../../../../../doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.0">
+<link rel="home" href="../index.html" title="Chapter 1. The Variadic Macro Data Library 1.0">
+<link rel="up" href="../index.html" title="Chapter 1. The Variadic Macro Data Library 1.0">
+<link rel="prev" href="../VMD_PP_SEQ_TO_DATA.html" title="Macro VMD_PP_SEQ_TO_DATA">
+<link rel="next" href="vmd_design.html" title="Design">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../VMD_PP_SEQ_TO_DATA.html"><img src="../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="vmd_design.html"><img src="../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="the_variadic_macro_data_library.vmd_comparison"></a><a class="link" href="vmd_comparison.html" title="VMD and Boost PP">VMD and
+ Boost PP</a>
+</h2></div></div></div>
+<p>
+ Boost PP already has the ability to pass variadic data as a single macro argument
+ through any of its data types. It may then be reasonably asked why there is
+ any need to use variadic macros to pass preprocessor data instead.
+ </p>
+<p>
+ There are two considerations for using variadic macros:
+ </p>
+<div class="orderedlist"><ol class="orderedlist" type="1">
+<li class="listitem">
+ The syntax for using variadic macros is the more natural syntax for passing
+ macro arguments. Providing a comma-separated list of data mimics the way
+ macro arguments are usually passed.
+ </li>
+<li class="listitem">
+ The length of the variadic data does not have to be passed. In Boost PP
+ the length does not have to be passed for the sequences and lists, but
+ it has to be specified as part of an array, and must be separately passed,
+ or known in advance, for tuples. Functionality in this library, however,
+ alleviates this last requirement for tuples.
+ </li>
+</ol></div>
+<p>
+ On the other hand there are considerations for using Boost PP data types for
+ passing variadic data to macros:
+ </p>
+<div class="orderedlist"><ol class="orderedlist" type="1">
+<li class="listitem">
+ Boost PP data types can be passed multiple times in any macro whereas variadic
+ macros can only pass its variadic macro data a single time as the final
+ set of arguments to a macro.
+ </li>
+<li class="listitem">
+ Boost PP data types, which are single macro arguments, fit in well with
+ Boost PP functionality.
+ </li>
+<li class="listitem">
+ Boost PP data types have a rich set of functionality for manipulating the
+ data in the data type.
+ </li>
+</ol></div>
+<p>
+ The more natural syntax of variadic macro data still provides enough importance,
+ from the end-user's point of view, for using this library's facilities. A macro
+ writer can design macros for the end-user which take variadic data using variadic
+ macros while internally using Boost PP data types to manipulate that data and
+ pass that data to other Boost PP macros. This library provides functionality
+ to do just that with its macros which convert from variadic macro data to Boost
+ PP data types.
+ </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2010 Tropic Software East Inc</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../VMD_PP_SEQ_TO_DATA.html"><img src="../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="vmd_design.html"><img src="../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/variadic_macro_data/libs/variadic_macro_data/doc/html/the_variadic_macro_data_library/vmd_compilers.html
==============================================================================
--- (empty file)
+++ sandbox/variadic_macro_data/libs/variadic_macro_data/doc/html/the_variadic_macro_data_library/vmd_compilers.html 2010-10-15 14:09:16 EDT (Fri, 15 Oct 2010)
@@ -0,0 +1,53 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Compilers</title>
+<link rel="stylesheet" href="../../../../../doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.0">
+<link rel="home" href="../index.html" title="Chapter 1. The Variadic Macro Data Library 1.0">
+<link rel="up" href="../index.html" title="Chapter 1. The Variadic Macro Data Library 1.0">
+<link rel="prev" href="vmd_design.html" title="Design">
+<link rel="next" href="vmd_limitations.html" title="Limitations">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="vmd_design.html"><img src="../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="vmd_limitations.html"><img src="../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="the_variadic_macro_data_library.vmd_compilers"></a><a class="link" href="vmd_compilers.html" title="Compilers">Compilers</a>
+</h2></div></div></div>
+<p>
+ A previously mentioned in the section 'Boost Support' the compilers supported
+ by this library must not have the Boost Config macro BOOST_NO_VARIADIC_MACROS
+ defined. I have tested this library using gcc/MingW and VC++ on Windows. Other
+ compilers which currently should work with this library are gcc on Linux, Digital
+ Mars C++, and Borland C++ Builder 6/Codegear C++.
+ </p>
+<p>
+ Currently (10/09/2010) the macro BOOST_NO_VARIADIC_MACROS is defined for compilers
+ in the trunk. Since this macro specifies compilers which do not support variadic
+ data, this library could be used with previous Boost installations but there
+ would be no guarantee that the compilers for which one wanted to use this library
+ actually support variadic macros.
+ </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2010 Tropic Software East Inc</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="vmd_design.html"><img src="../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="vmd_limitations.html"><img src="../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/variadic_macro_data/libs/variadic_macro_data/doc/html/the_variadic_macro_data_library/vmd_design.html
==============================================================================
--- (empty file)
+++ sandbox/variadic_macro_data/libs/variadic_macro_data/doc/html/the_variadic_macro_data_library/vmd_design.html 2010-10-15 14:09:16 EDT (Fri, 15 Oct 2010)
@@ -0,0 +1,59 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Design</title>
+<link rel="stylesheet" href="../../../../../doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.0">
+<link rel="home" href="../index.html" title="Chapter 1. The Variadic Macro Data Library 1.0">
+<link rel="up" href="../index.html" title="Chapter 1. The Variadic Macro Data Library 1.0">
+<link rel="prev" href="vmd_comparison.html" title="VMD and Boost PP">
+<link rel="next" href="vmd_compilers.html" title="Compilers">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="vmd_comparison.html"><img src="../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="vmd_compilers.html"><img src="../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="the_variadic_macro_data_library.vmd_design"></a><a class="link" href="vmd_design.html" title="Design">Design</a>
+</h2></div></div></div>
+<p>
+ The initial impetus for creating this library was entirely practical. I had
+ been working on another library of macro functionality, which used Boost PP
+ functionality, and I realized that if I could use variadic macros with my other
+ library, the end-user usability for that library would be easier. Therefore
+ the main design goal of this library is to interoperate variadic macro data
+ with Boost PP in the easiest and clearest way possible.
+ </p>
+<p>
+ I also wanted to make the library as orthogonal and as easy to use as possible.
+ Because of this, there is functionality in this library that is really not
+ necessary for someone knowledgable about Boost PP, but it is included in the
+ library even though it is just a convenient shorthand for functionality in
+ Boost PP combined with new functionality in this library. This includes a number
+ of the conversions back and forth between variadic macro data and Boost PP
+ data types as well as nearly all of the specific Boost PP tuple functionality.
+ As long as there is no run-time programming overhead, and a minimum of compile-time
+ overhead, I value ease of use to be much more important than redundancy, so
+ I added the functionality to this library.
+ </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2010 Tropic Software East Inc</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="vmd_comparison.html"><img src="../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="vmd_compilers.html"><img src="../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/variadic_macro_data/libs/variadic_macro_data/doc/html/the_variadic_macro_data_library/vmd_detail.html
==============================================================================
--- (empty file)
+++ sandbox/variadic_macro_data/libs/variadic_macro_data/doc/html/the_variadic_macro_data_library/vmd_detail.html 2010-10-15 14:09:16 EDT (Fri, 15 Oct 2010)
@@ -0,0 +1,96 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Functional groups</title>
+<link rel="stylesheet" href="../../../../../doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.0">
+<link rel="home" href="../index.html" title="Chapter 1. The Variadic Macro Data Library 1.0">
+<link rel="up" href="../index.html" title="Chapter 1. The Variadic Macro Data Library 1.0">
+<link rel="prev" href="vmd_naming.html" title="Naming conventions">
+<link rel="next" href="vmd_detail/vmd_toPP.html" title="Convert to Boost PP data types">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="vmd_naming.html"><img src="../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="vmd_detail/vmd_toPP.html"><img src="../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="the_variadic_macro_data_library.vmd_detail"></a><a class="link" href="vmd_detail.html" title="Functional groups">Functional
+ groups</a>
+</h2></div></div></div>
+<div class="toc"><dl>
+<dt><span class="section"><a href="vmd_detail.html#the_variadic_macro_data_library.vmd_detail.vmd_usage">Variadic
+ Usage</a></span></dt>
+<dt><span class="section"><a href="vmd_detail/vmd_toPP.html">Convert
+ to Boost PP data types</a></span></dt>
+<dt><span class="section"><a href="vmd_detail/vmd_fromPP.html">Convert
+ from Boost PP data types</a></span></dt>
+<dt><span class="section"><a href="vmd_detail/vmd_tuple.html">Boost
+ PP tuple enhancements</a></span></dt>
+</dl></div>
+<p>
+ The macros in VMD can best be explained as falling into four groups. These
+ are:
+ </p>
+<div class="orderedlist"><ol class="orderedlist" type="1">
+<li class="listitem">
+ Macros which directly support variadic macro data usage.
+ </li>
+<li class="listitem">
+ Macros which convert variadic macro data to Boost PP data types.
+ </li>
+<li class="listitem">
+ Macros which convert Boost PP data types to variadic macro data.
+ </li>
+<li class="listitem">
+ Macros which offer an easy to use replacement for Boost PP tuple macros
+ because they do not require the size of the tuple to be specified.
+ </li>
+</ol></div>
+<p>
+ A further general explanation of each of these groups follow, while a specific
+ explanation for each macro can be found in the reference section.
+ </p>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="the_variadic_macro_data_library.vmd_detail.vmd_usage"></a><a class="link" href="vmd_detail.html#the_variadic_macro_data_library.vmd_detail.vmd_usage" title="Variadic Usage">Variadic
+ Usage</a>
+</h3></div></div></div>
+<p>
+ There are two macros which enhance variadic macro data usage. These macros
+ add functionality to variadic macros so that the number of comma-separated
+ tokens in the variadic macro data can be calculated, and that any token among
+ the variadic macro data's comma-separated tokens can be returned. The two
+ macros are:
+ </p>
+<div class="orderedlist"><ol class="orderedlist" type="1">
+<li class="listitem">
+ VMD_DATA_SIZE(...), which returns the number of comma-separated tokens.
+ </li>
+<li class="listitem">
+ VMD_DATA_ELEM(n,...), which returns a particular token among the comma-separated
+ sequence. Here 'n' stands for the number of the token, starting with
+ 0, which is returned from the variadic macro data.
+ </li>
+</ol></div>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2010 Tropic Software East Inc</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="vmd_naming.html"><img src="../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="vmd_detail/vmd_toPP.html"><img src="../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/variadic_macro_data/libs/variadic_macro_data/doc/html/the_variadic_macro_data_library/vmd_detail/vmd_fromPP.html
==============================================================================
--- (empty file)
+++ sandbox/variadic_macro_data/libs/variadic_macro_data/doc/html/the_variadic_macro_data_library/vmd_detail/vmd_fromPP.html 2010-10-15 14:09:16 EDT (Fri, 15 Oct 2010)
@@ -0,0 +1,63 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Convert from Boost PP data types</title>
+<link rel="stylesheet" href="../../../../../../doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.0">
+<link rel="home" href="../../index.html" title="Chapter 1. The Variadic Macro Data Library 1.0">
+<link rel="up" href="../vmd_detail.html" title="Functional groups">
+<link rel="prev" href="vmd_toPP.html" title="Convert to Boost PP data types">
+<link rel="next" href="vmd_tuple.html" title="Boost PP tuple enhancements">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="vmd_toPP.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../vmd_detail.html"><img src="../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="vmd_tuple.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="the_variadic_macro_data_library.vmd_detail.vmd_fromPP"></a><a class="link" href="vmd_fromPP.html" title="Convert from Boost PP data types">Convert
+ from Boost PP data types</a>
+</h3></div></div></div>
+<p>
+ There are four macros which convert each of the four Boost PP data types
+ to variadic macro data. These are:
+ </p>
+<div class="orderedlist"><ol class="orderedlist" type="1">
+<li class="listitem">
+ VMD_PP_TUPLE_TO_DATA(tuple), which converts from a Boost PP tuple.
+ </li>
+<li class="listitem">
+ VMD_PP_ARRAY_TO_DATA(array), which converts from a Boost PP array.
+ </li>
+<li class="listitem">
+ VMD_PP_LIST_TO_DATA(list), which converts from a Boost PP list.
+ </li>
+<li class="listitem">
+ VMD_PP_SEQ_TO_DATA(seq), which converts from a Boost PP sequence.
+ </li>
+</ol></div>
+<p>
+ In these macros the data is returned as a comma-separated list of tokens,
+ which is the format of variadic macro data. The results of any of these macros
+ can be passed to variadic macros as the final parameter.
+ </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2010 Tropic Software East Inc</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="vmd_toPP.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../vmd_detail.html"><img src="../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="vmd_tuple.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/variadic_macro_data/libs/variadic_macro_data/doc/html/the_variadic_macro_data_library/vmd_detail/vmd_toPP.html
==============================================================================
--- (empty file)
+++ sandbox/variadic_macro_data/libs/variadic_macro_data/doc/html/the_variadic_macro_data_library/vmd_detail/vmd_toPP.html 2010-10-15 14:09:16 EDT (Fri, 15 Oct 2010)
@@ -0,0 +1,58 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Convert to Boost PP data types</title>
+<link rel="stylesheet" href="../../../../../../doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.0">
+<link rel="home" href="../../index.html" title="Chapter 1. The Variadic Macro Data Library 1.0">
+<link rel="up" href="../vmd_detail.html" title="Functional groups">
+<link rel="prev" href="../vmd_detail.html" title="Functional groups">
+<link rel="next" href="vmd_fromPP.html" title="Convert from Boost PP data types">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../vmd_detail.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../vmd_detail.html"><img src="../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="vmd_fromPP.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="the_variadic_macro_data_library.vmd_detail.vmd_toPP"></a><a class="link" href="vmd_toPP.html" title="Convert to Boost PP data types">Convert
+ to Boost PP data types</a>
+</h3></div></div></div>
+<p>
+ There are four macros which convert variadic macro data as a whole to each
+ of the four Boost PP data types. These are:
+ </p>
+<div class="orderedlist"><ol class="orderedlist" type="1">
+<li class="listitem">
+ VMD_DATA_TO_PP_TUPLE(...), which converts to a Boost PP tuple.
+ </li>
+<li class="listitem">
+ VMD_DATA_TO_PP_ARRAY(...), which converts to a Boost PP array.
+ </li>
+<li class="listitem">
+ VMD_DATA_TO_PP_LIST(...), which converts to a Boost PP list.
+ </li>
+<li class="listitem">
+ VMD_DATA_TO_PP_SEQ(...), which converts to a Boost PP sequence.
+ </li>
+</ol></div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2010 Tropic Software East Inc</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../vmd_detail.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../vmd_detail.html"><img src="../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="vmd_fromPP.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/variadic_macro_data/libs/variadic_macro_data/doc/html/the_variadic_macro_data_library/vmd_detail/vmd_tuple.html
==============================================================================
--- (empty file)
+++ sandbox/variadic_macro_data/libs/variadic_macro_data/doc/html/the_variadic_macro_data_library/vmd_detail/vmd_tuple.html 2010-10-15 14:09:16 EDT (Fri, 15 Oct 2010)
@@ -0,0 +1,71 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Boost PP tuple enhancements</title>
+<link rel="stylesheet" href="../../../../../../doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.0">
+<link rel="home" href="../../index.html" title="Chapter 1. The Variadic Macro Data Library 1.0">
+<link rel="up" href="../vmd_detail.html" title="Functional groups">
+<link rel="prev" href="vmd_fromPP.html" title="Convert from Boost PP data types">
+<link rel="next" href="../../variadic_macro_data_reference.html" title="Variadic Macro Data Reference">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="vmd_fromPP.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../vmd_detail.html"><img src="../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="../../variadic_macro_data_reference.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="the_variadic_macro_data_library.vmd_detail.vmd_tuple"></a><a class="link" href="vmd_tuple.html" title="Boost PP tuple enhancements">Boost
+ PP tuple enhancements</a>
+</h3></div></div></div>
+<p>
+ There are six macros which manipulate Boost PP tuple data. The first is an
+ addition to Boost PP functionality when dealing with tuples while the final
+ five are direct replacements for Boost PP tuple data manipulation macros
+ and which do not require the size of the tuple. These are:
+ </p>
+<div class="orderedlist"><ol class="orderedlist" type="1">
+<li class="listitem">
+ VMD_PP_TUPLE_SIZE(tuple), which returns the size of the tuple.
+ </li>
+<li class="listitem">
+ VMD_PP_TUPLE_ELEM(tuple), which is a replacement for BOOST_PP_TUPLE_ELEM
+ without having to pass the size of the tuple as the first parameter.
+ </li>
+<li class="listitem">
+ VMD_PP_TUPLE_REM_CTOR(tuple), which is a replacement for BOOST_PP_TUPLE_REM_CTOR
+ without having to pass the size of the tuple as the first parameter.
+ </li>
+<li class="listitem">
+ VMD_PP_TUPLE_REVERSE(tuple), which is a replacement for BOOST_PP_TUPLE_REVERSE
+ without having to pass the size of the tuple as the first parameter.
+ </li>
+<li class="listitem">
+ VMD_PP_TUPLE_TO_LIST(tuple), which is a replacement for BOOST_PP_TUPLE_TO_LIST
+ without having to pass the size of the tuple as the first parameter.
+ </li>
+<li class="listitem">
+ VMD_PP_TUPLE_TO_SEQ(tuple), which is a replacement for BOOST_PP_TUPLE_TO_SEQ
+ without having to pass the size of the tuple as the first parameter.
+ </li>
+</ol></div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2010 Tropic Software East Inc</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="vmd_fromPP.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../vmd_detail.html"><img src="../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="../../variadic_macro_data_reference.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/variadic_macro_data/libs/variadic_macro_data/doc/html/the_variadic_macro_data_library/vmd_functionality.html
==============================================================================
--- (empty file)
+++ sandbox/variadic_macro_data/libs/variadic_macro_data/doc/html/the_variadic_macro_data_library/vmd_functionality.html 2010-10-15 14:09:16 EDT (Fri, 15 Oct 2010)
@@ -0,0 +1,72 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Functionality</title>
+<link rel="stylesheet" href="../../../../../doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.0">
+<link rel="home" href="../index.html" title="Chapter 1. The Variadic Macro Data Library 1.0">
+<link rel="up" href="../index.html" title="Chapter 1. The Variadic Macro Data Library 1.0">
+<link rel="prev" href="vmd_vmacros.html" title="Variadic Macros">
+<link rel="next" href="vmd_naming.html" title="Naming conventions">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="vmd_vmacros.html"><img src="../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="vmd_naming.html"><img src="../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="the_variadic_macro_data_library.vmd_functionality"></a><a class="link" href="vmd_functionality.html" title="Functionality">Functionality</a>
+</h2></div></div></div>
+<p>
+ The design of Boost PP allows data, in the form of preprocessor tokens, to
+ be grouped together into various data types, any one of which can be treated
+ as a single preprocessor argument to a macro. A number of Boost PP macros accept
+ data as a single argument. Each of these data types also has its own rich set
+ of macros to manipulate the data. It is imperative when interoperating with
+ Boost PP that data is able to be passed as a single argument, even though the
+ data itself may consist of a number of preprocessing tokens.
+ </p>
+<p>
+ In variadic macros the data to be passed as variadic macro data is a comma-separated
+ list of arguments, each of which can be any preprocessing token.
+ </p>
+<p>
+ Because the variadic macro data is more than a single token, in order to use
+ variadic macro data with Boost PP, it is necessary to be able to convert the
+ variadic macro data to a single argument Boost PP data type. One can do this
+ either by converting the variadic macro data as a whole, by extracting any
+ given token from the variadic macro data and use that as a single argument,
+ or by combining individual tokens from the variadic macro data into Boost PP
+ data types using the functionality of the Boost PP data type to do so. VMD
+ provides means to interoperate variadic macro data with Boost PP in these ways.
+ </p>
+<p>
+ Outside of Boost PP interoperability, VMD allows individual tokens to be extracted
+ from the variadic macro data and used in macro expansion or passed to other
+ macross.
+ </p>
+<p>
+ Finally through the functionality of variadic macros, VMD provides parallel
+ functionality to the Boost PP tuple interface macros with a set of macros which
+ do not need the size of a tuple to be specified.
+ </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2010 Tropic Software East Inc</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="vmd_vmacros.html"><img src="../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="vmd_naming.html"><img src="../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/variadic_macro_data/libs/variadic_macro_data/doc/html/the_variadic_macro_data_library/vmd_limitations.html
==============================================================================
--- (empty file)
+++ sandbox/variadic_macro_data/libs/variadic_macro_data/doc/html/the_variadic_macro_data_library/vmd_limitations.html 2010-10-15 14:09:16 EDT (Fri, 15 Oct 2010)
@@ -0,0 +1,43 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Limitations</title>
+<link rel="stylesheet" href="../../../../../doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.0">
+<link rel="home" href="../index.html" title="Chapter 1. The Variadic Macro Data Library 1.0">
+<link rel="up" href="../index.html" title="Chapter 1. The Variadic Macro Data Library 1.0">
+<link rel="prev" href="vmd_compilers.html" title="Compilers">
+<link rel="next" href="vmd_ack.html" title="Acknowledgements">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="vmd_compilers.html"><img src="../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="vmd_ack.html"><img src="../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="the_variadic_macro_data_library.vmd_limitations"></a><a class="link" href="vmd_limitations.html" title="Limitations">Limitations</a>
+</h2></div></div></div>
+<p>
+ The number of comma-separated macro parameters supported by the macros VMD_DATA_SIZE(...)
+ and VMD_DATA_ELEM(n,...) is 64.
+ </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2010 Tropic Software East Inc</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="vmd_compilers.html"><img src="../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="vmd_ack.html"><img src="../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/variadic_macro_data/libs/variadic_macro_data/doc/html/the_variadic_macro_data_library/vmd_naming.html
==============================================================================
--- (empty file)
+++ sandbox/variadic_macro_data/libs/variadic_macro_data/doc/html/the_variadic_macro_data_library/vmd_naming.html 2010-10-15 14:09:16 EDT (Fri, 15 Oct 2010)
@@ -0,0 +1,72 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Naming conventions</title>
+<link rel="stylesheet" href="../../../../../doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.0">
+<link rel="home" href="../index.html" title="Chapter 1. The Variadic Macro Data Library 1.0">
+<link rel="up" href="../index.html" title="Chapter 1. The Variadic Macro Data Library 1.0">
+<link rel="prev" href="vmd_functionality.html" title="Functionality">
+<link rel="next" href="vmd_detail.html" title="Functional groups">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="vmd_functionality.html"><img src="../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="vmd_detail.html"><img src="../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="the_variadic_macro_data_library.vmd_naming"></a><a class="link" href="vmd_naming.html" title="Naming conventions">Naming conventions</a>
+</h2></div></div></div>
+<p>
+ Currently all of the macros in the library begin with the prefix VMD_, which
+ stands for 'Variadic Macro Data'. If this library were to be accepted into
+ Boost, the macros can easily be changed to use BOOST_VMD_ as the prefix instead.
+ </p>
+<p>
+ Following the prefix, certain names in the macros refer to data types in this
+ library or Boost PP. These names and their data types are:
+ </p>
+<div class="orderedlist"><ol class="orderedlist" type="1">
+<li class="listitem">
+ DATA = variadic macro data as represented by '...' in a variadic macro
+ signature and __VA_ARGS__ in variadic macro expansion.
+ </li>
+<li class="listitem">
+ TUPLE = Boost PP tuple data type.
+ </li>
+<li class="listitem">
+ ARRAY = Boost PP array data type.
+ </li>
+<li class="listitem">
+ LIST = Boost PP list data type.
+ </li>
+<li class="listitem">
+ SEQ = Boost PP sequence data type.
+ </li>
+</ol></div>
+<p>
+ I have used names in order to mimic the naming of Boost PP as closely as possible.
+ Therefore I have used the terms SIZE and ELEM in the macro names because these
+ are the terms in Boost PP to denote the number of tokens of data and the general
+ name for a token.
+ </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2010 Tropic Software East Inc</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="vmd_functionality.html"><img src="../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="vmd_detail.html"><img src="../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/variadic_macro_data/libs/variadic_macro_data/doc/html/the_variadic_macro_data_library/vmd_vmacros.html
==============================================================================
--- (empty file)
+++ sandbox/variadic_macro_data/libs/variadic_macro_data/doc/html/the_variadic_macro_data_library/vmd_vmacros.html 2010-10-15 14:09:16 EDT (Fri, 15 Oct 2010)
@@ -0,0 +1,71 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Variadic Macros</title>
+<link rel="stylesheet" href="../../../../../doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.0">
+<link rel="home" href="../index.html" title="Chapter 1. The Variadic Macro Data Library 1.0">
+<link rel="up" href="../index.html" title="Chapter 1. The Variadic Macro Data Library 1.0">
+<link rel="prev" href="../index.html" title="Chapter 1. The Variadic Macro Data Library 1.0">
+<link rel="next" href="vmd_functionality.html" title="Functionality">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../index.html"><img src="../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="vmd_functionality.html"><img src="../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="the_variadic_macro_data_library.vmd_vmacros"></a><a class="link" href="vmd_vmacros.html" title="Variadic Macros">Variadic Macros</a>
+</h2></div></div></div>
+<div class="toc"><dl><dt><span class="section"><a href="vmd_vmacros.html#the_variadic_macro_data_library.vmd_vmacros.vmd_vmacros_Boost">Boost
+ support</a></span></dt></dl></div>
+<p>
+ Variadic macros, as specified by C++0x, is a feature taken from the C99 specification.
+ They are macros which take a final parameter denoted as '...' which represents
+ one or more final arguments to the macro as a series of comma-separated tokens.
+ In the macro expansion a special keyword of '__VA_ARGS__' represents the comma-separated
+ tokens. This information when passed to a variadic macro I call 'variadic macro
+ data', which gives its name to this library. The more general term 'variadic
+ data' is used in this documentation to specify data passed to a macro which
+ can contain any number of macro tokens as a single macro parameter, such as
+ is found in Boost PP.
+ </p>
+<p>
+ C99, and by implication C++0x, provides no built-in way of accessing a single
+ token from the comma-separated list of variadic macro data. But this library
+ does provide a means to do that among its other functionality.
+ </p>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="the_variadic_macro_data_library.vmd_vmacros.vmd_vmacros_Boost"></a><a class="link" href="vmd_vmacros.html#the_variadic_macro_data_library.vmd_vmacros.vmd_vmacros_Boost" title="Boost support">Boost
+ support</a>
+</h3></div></div></div>
+<p>
+ Boost until recently has had no generic support for variadic macros based
+ on the ability of a given compiler/version to support C99's variadic macros.
+ This support has now been added to the trunk in the form of a macro which
+ denotes that compiler support for variadic macros does not exist. This macro
+ is BOOST_NO_VARIADIC_MACROS. The variadic macro data library will only work
+ for a compiler/version combination when BOOST_NO_VARIADIC_MACROS is not defined.
+ </p>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2010 Tropic Software East Inc</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../index.html"><img src="../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="vmd_functionality.html"><img src="../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/variadic_macro_data/libs/variadic_macro_data/doc/html/variadic_macro_data_reference.html
==============================================================================
--- (empty file)
+++ sandbox/variadic_macro_data/libs/variadic_macro_data/doc/html/variadic_macro_data_reference.html 2010-10-15 14:09:16 EDT (Fri, 15 Oct 2010)
@@ -0,0 +1,64 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Variadic Macro Data Reference</title>
+<link rel="stylesheet" href="../../../../doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.0">
+<link rel="home" href="index.html" title="Chapter 1. The Variadic Macro Data Library 1.0">
+<link rel="up" href="index.html" title="Chapter 1. The Variadic Macro Data Library 1.0">
+<link rel="prev" href="the_variadic_macro_data_library/vmd_detail/vmd_tuple.html" title="Boost PP tuple enhancements">
+<link rel="next" href="VMD_DATA_SIZE.html" title="Macro VMD_DATA_SIZE">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="the_variadic_macro_data_library/vmd_detail/vmd_tuple.html"><img src="../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="index.html"><img src="../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="index.html"><img src="../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="VMD_DATA_SIZE.html"><img src="../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="variadic_macro_data_reference"></a>Variadic Macro Data Reference</h2></div></div></div>
+<div class="toc"><dl>
+<dt><span class="section">Header <boost/variadic_macro_data/VariadicMacroData.hpp></span></dt>
+<dd><dl></dl></dd>
+</dl></div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="header.boost.variadic_macro_data.VariadicMacroData_hpp"></a>Header <boost/variadic_macro_data/VariadicMacroData.hpp></h3></div></div></div>
+<pre class="synopsis">
+
+<a class="link" href="VMD_DATA_SIZE.html" title="Macro VMD_DATA_SIZE">VMD_DATA_SIZE</a>(...)
+<a class="link" href="VMD_DATA_ELEM.html" title="Macro VMD_DATA_ELEM">VMD_DATA_ELEM</a>(n, ...)
+<a class="link" href="VMD_DATA_TO_PP_TUPLE.html" title="Macro VMD_DATA_TO_PP_TUPLE">VMD_DATA_TO_PP_TUPLE</a>(...)
+<a class="link" href="VMD_DATA_TO_PP_ARRAY.html" title="Macro VMD_DATA_TO_PP_ARRAY">VMD_DATA_TO_PP_ARRAY</a>(...)
+<a class="link" href="VMD_DATA_TO_PP_LIST.html" title="Macro VMD_DATA_TO_PP_LIST">VMD_DATA_TO_PP_LIST</a>(...)
+<a class="link" href="VMD_DATA_TO_PP_SEQ.html" title="Macro VMD_DATA_TO_PP_SEQ">VMD_DATA_TO_PP_SEQ</a>(...)
+<a class="link" href="VMD_PP_TUPLE_SIZE.html" title="Macro VMD_PP_TUPLE_SIZE">VMD_PP_TUPLE_SIZE</a>(tuple)
+<a class="link" href="VMD_PP_TUPLE_ELEM.html" title="Macro VMD_PP_TUPLE_ELEM">VMD_PP_TUPLE_ELEM</a>(n, tuple)
+<a class="link" href="VMD_PP_TUPLE_REM_CTOR.html" title="Macro VMD_PP_TUPLE_REM_CTOR">VMD_PP_TUPLE_REM_CTOR</a>(tuple)
+<a class="link" href="VMD_PP_TUPLE_REVERSE.html" title="Macro VMD_PP_TUPLE_REVERSE">VMD_PP_TUPLE_REVERSE</a>(tuple)
+<a class="link" href="VMD_PP_TUPLE_TO_LIST.html" title="Macro VMD_PP_TUPLE_TO_LIST">VMD_PP_TUPLE_TO_LIST</a>(tuple)
+<a class="link" href="VMD_PP_TUPLE_TO_SEQ.html" title="Macro VMD_PP_TUPLE_TO_SEQ">VMD_PP_TUPLE_TO_SEQ</a>(tuple)
+<a class="link" href="VMD_PP_TUPLE_TO_DATA.html" title="Macro VMD_PP_TUPLE_TO_DATA">VMD_PP_TUPLE_TO_DATA</a>(tuple)
+<a class="link" href="VMD_PP_ARRAY_TO_DATA.html" title="Macro VMD_PP_ARRAY_TO_DATA">VMD_PP_ARRAY_TO_DATA</a>(array)
+<a class="link" href="VMD_PP_LIST_TO_DATA.html" title="Macro VMD_PP_LIST_TO_DATA">VMD_PP_LIST_TO_DATA</a>(list)
+<a class="link" href="VMD_PP_SEQ_TO_DATA.html" title="Macro VMD_PP_SEQ_TO_DATA">VMD_PP_SEQ_TO_DATA</a>(seq)</pre>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2010 Tropic Software East Inc</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="the_variadic_macro_data_library/vmd_detail/vmd_tuple.html"><img src="../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="index.html"><img src="../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="index.html"><img src="../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="VMD_DATA_SIZE.html"><img src="../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/variadic_macro_data/libs/variadic_macro_data/doc/jamfile.v2
==============================================================================
--- (empty file)
+++ sandbox/variadic_macro_data/libs/variadic_macro_data/doc/jamfile.v2 2010-10-15 14:09:16 EDT (Fri, 15 Oct 2010)
@@ -0,0 +1,68 @@
+# VariadicMacroData documentation Jamfile
+#
+# Copyright (c) 2010
+# Edward Diener
+#
+
+project variadic_macro_data ;
+
+using quickbook ;
+using doxygen ;
+
+import modules ;
+import path ;
+import os ;
+
+local BOOST_ROOT = ../../../ ;
+path-constant local-boost-root : $(BOOST_ROOT) ;
+path-constant nav-images : $(local-boost-root)/doc/src/images/ ; # png and svg images for home, next, note, tip...
+path-constant images_location : html/images/ ; # location of SVG images referenced by Quickbook.
+path-constant here : . ; # convenient to refer to files in the same directory as this jamfile.v2
+
+doxygen VariadicMacroDataReference
+ :
+ $(here)/../../../boost/variadic_macro_data/VariadicMacroData.hpp
+ :
+ <doxygen:param>PROJECT_NAME="VariadicMacroData"
+ <doxygen:param>PROJECT_NUMBER=1
+ <doxygen:param>SORT_MEMBER_DOCS=NO
+ <doxygen:param>SHOW_INCLUDE_FILES=NO
+ <doxygen:param>MAX_INITIALIZER_LINES=0
+ <doxygen:param>VERBATIM_HEADERS=NO
+ <reftitle>"Variadic Macro Data Reference"
+;
+
+xml VariadicMacroData
+ :
+ VariadicMacroData.qbk
+ :
+ <dependency>VariadicMacroDataReference
+;
+
+boostbook standalone
+ :
+ VariadicMacroData
+ :
+ <xsl:param>boost.root="../../../.."
+# <xsl:param>table.footnote.number.format=1 # Identifies the format used for footnote numbers in tables.
+# <xsl:param>footnote.number.format=1 # Identifies the format used for text footnote numbers.
+# <xsl:param>nav.layout=horizontal # to get a horizontal navigation bar (you probably DO want this).
+# <xsl:param>navig.graphics=1 # Use graphics not text for navigation.
+ <xsl:param>chunk.section.depth=8 # How far down we chunk nested sections, basically all of them.
+# <xsl:param>chunk.first.sections=1 # Don't put the first section on the same page as the TOC.
+ <xsl:param>toc.section.depth=8 # How far down sections get TOCs.
+ <xsl:param>toc.max.depth=4 # Max depth in each TOC.
+# <xsl:param>generate.section.toc.level=10 # How far down we go with TOCs.
+# <xsl:param>fop1.extensions=0 # DISable extensions for FOP version 0.90 and later .
+# <format>pdf:<xsl:param>fop.extensions=0 # DISable extensions for FOP version 0.20.5 and earlier.
+# <format>pdf:<xsl:param>xep.extensions=1 # Use XEP extension- PDF bookmarks, document information and better index processing.
+# <format>pdf:<xsl:param>body.start.indent=0pt
+# <format>pdf:<xsl:param>paper.type=A4 # Paper type = A4
+# <xsl:param>admon.graphics=1
+# <format>pdf:<xsl:param>admon.graphics.extension=".svg"
+# <format>pdf:<xsl:param>use.role.for.mediaobject=1 # Use print role on next line.
+# <format>pdf:<xsl:param>preferred.mediaobject.role=print # pdf role is to be printed.
+# <format>pdf:<xsl:param>img.src.path=$(images_location)/ # Path of image (.svg) files. (Note trailing /) ? //
+# <format>pdf:<xsl:param>admon.graphics.path=$(nav-images)/ # path to admonition (warning, smiley...) image (.svg) files.
+# <format>pdf:<xsl:param>draft.mode="no"
+ ;
Added: sandbox/variadic_macro_data/libs/variadic_macro_data/test/Jamfile.v2
==============================================================================
--- (empty file)
+++ sandbox/variadic_macro_data/libs/variadic_macro_data/test/Jamfile.v2 2010-10-15 14:09:16 EDT (Fri, 15 Oct 2010)
@@ -0,0 +1,25 @@
+# VariadicMacroData testing Jamfile
+#
+# Copyright (c) 2010
+# Edward Diener
+#
+
+import testing ;
+
+project variadic_macro_data_tests : requirements <warnings>on
+ <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>msvc:<warnings>all
+ ;
+
+test-suite variadic_macro_data
+ :
+ [ run TestData.cpp ]
+ [ run TestDataAsTuple.cpp ]
+ [ run TestDataAsArray.cpp ]
+ [ run TestDataAsList.cpp ]
+ [ run TestDataAsSequence.cpp ]
+ ;
Added: sandbox/variadic_macro_data/libs/variadic_macro_data/test/TestData.cpp
==============================================================================
--- (empty file)
+++ sandbox/variadic_macro_data/libs/variadic_macro_data/test/TestData.cpp 2010-10-15 14:09:16 EDT (Fri, 15 Oct 2010)
@@ -0,0 +1,92 @@
+#include <boost/variadic_macro_data/VariadicMacroData.hpp>
+#include <boost/detail/lightweight_test.hpp>
+#include <vector>
+#include <string>
+#include <boost/type_traits/is_same.hpp>
+#include <boost/type_traits/is_const.hpp>
+#include <boost/preprocessor/arithmetic/inc.hpp>
+#include <boost/preprocessor/cat.hpp>
+#include <boost/preprocessor/control.hpp>
+#include <boost/preprocessor/comparison/less.hpp>
+#include <boost/preprocessor/logical/and.hpp>
+#include <boost/preprocessor/logical/bitor.hpp>
+#include <boost/preprocessor/selection/max.hpp>
+#include <boost/preprocessor/stringize.hpp>
+
+int main()
+ {
+
+#if !defined(BOOST_NO_VARIADIC_MACROS)
+
+ #define VMD_TEST_THE_DATA 147,12,the,*,we99,33,++,jjgg,+=,0,1
+
+ int mSize(VMD_DATA_SIZE(VMD_TEST_THE_DATA));
+
+ BOOST_TEST_EQ(mSize,11);
+
+ mSize VMD_DATA_ELEM(8,VMD_TEST_THE_DATA) 5;
+
+ BOOST_TEST_EQ(mSize,16);
+
+ int aSize(VMD_DATA_SIZE(23,ll,678,456));
+
+ BOOST_TEST_EQ(aSize,4);
+
+ aSize += mSize VMD_DATA_ELEM(3,VMD_TEST_THE_DATA) VMD_DATA_SIZE(VMD_TEST_THE_DATA);
+
+ BOOST_TEST_EQ(aSize,4 + (16 * 11));
+
+ BOOST_TEST_EQ(BOOST_PP_INC(VMD_DATA_ELEM(5,VMD_TEST_THE_DATA)),34);
+
+ aSize BOOST_PP_CAT(VMD_DATA_ELEM(3,VMD_TEST_THE_DATA),=) VMD_DATA_ELEM(1,VMD_TEST_THE_DATA);
+
+ BOOST_TEST_EQ(aSize,(4 + (16 * 11)) * 12);
+
+ int anElement(VMD_DATA_ELEM(2,23,ll,678,456));
+
+ BOOST_TEST_EQ(anElement,678);
+
+ BOOST_TEST_EQ(BOOST_PP_LESS(VMD_DATA_SIZE(VMD_TEST_THE_DATA),12),1);
+
+ typedef BOOST_PP_EXPR_IF(VMD_DATA_ELEM(9,VMD_TEST_THE_DATA),const) int AnIntType;
+
+ BOOST_TEST(!(boost::is_const<AnIntType>::value));
+
+ typedef BOOST_PP_EXPR_IIF(VMD_DATA_ELEM(10,VMD_TEST_THE_DATA),const) int AnotherIntType;
+
+ BOOST_TEST(boost::is_const<AnotherIntType>::value);
+
+ BOOST_TEST_EQ(BOOST_PP_IF(VMD_DATA_ELEM(5,VMD_TEST_THE_DATA),10,20),10);
+
+ BOOST_TEST_EQ(BOOST_PP_IIF(VMD_DATA_ELEM(9,VMD_TEST_THE_DATA),10,20),20);
+
+ bool tb(BOOST_PP_AND(VMD_DATA_ELEM(9,VMD_TEST_THE_DATA),VMD_DATA_ELEM(1,VMD_TEST_THE_DATA)));
+
+ BOOST_TEST_EQ(tb,false);
+
+ tb = BOOST_PP_BITOR(VMD_DATA_ELEM(10,VMD_TEST_THE_DATA),VMD_DATA_ELEM(10,VMD_TEST_THE_DATA));
+
+ BOOST_TEST_EQ(tb,true);
+
+ BOOST_TEST_EQ(BOOST_PP_MAX(VMD_DATA_ELEM(1,VMD_TEST_THE_DATA),VMD_DATA_SIZE(VMD_TEST_THE_DATA)),12);
+
+ std::string ss(BOOST_PP_STRINGIZE(VMD_DATA_ELEM(4,VMD_TEST_THE_DATA)));
+ std::string ss2("we99");
+
+ BOOST_TEST(ss == ss2);
+
+ #define VMD_TEST_EXPAND(...) int,__VA_ARGS__
+
+ int numberOfTypes(VMD_DATA_SIZE(VMD_TEST_EXPAND(unsigned,long,short,unsigned long)));
+
+ BOOST_TEST_EQ(numberOfTypes,5);
+
+ typedef std::vector<VMD_DATA_ELEM(0,VMD_TEST_EXPAND(unsigned,long,short,unsigned long))>::value_type vtype;
+
+ BOOST_TEST((boost::is_same<vtype,int>::value));
+
+#endif
+
+ return boost::report_errors();
+
+ }
Added: sandbox/variadic_macro_data/libs/variadic_macro_data/test/TestDataAsArray.cpp
==============================================================================
--- (empty file)
+++ sandbox/variadic_macro_data/libs/variadic_macro_data/test/TestDataAsArray.cpp 2010-10-15 14:09:16 EDT (Fri, 15 Oct 2010)
@@ -0,0 +1,62 @@
+#include <boost/variadic_macro_data/VariadicMacroData.hpp>
+#include <boost/detail/lightweight_test.hpp>
+#include <boost/preprocessor/array/size.hpp>
+#include <boost/preprocessor/array/elem.hpp>
+#include <boost/preprocessor/repetition/repeat.hpp>
+#include <vector>
+#include <boost/type_traits/is_same.hpp>
+
+int main()
+ {
+
+#if !defined(BOOST_NO_VARIADIC_MACROS)
+
+ #define VMD_TEST_ARRAY_NUMBERS \
+ VMD_DATA_TO_PP_ARRAY(47,69,23,985,458,77,12457,89,99872) \
+ /**/
+
+ #define VMD_TEST_ARRAY_TYPES(...) \
+ VMD_DATA_TO_PP_ARRAY(int,__VA_ARGS__) \
+ /**/
+
+ int addedNumber(0);
+
+ #define VMD_TEST_ADD_TO_INT(z,n,data) \
+ if (BOOST_PP_ARRAY_SIZE(data) > n) \
+ { \
+ addedNumber += BOOST_PP_ARRAY_ELEM(n,data); \
+ } \
+ /**/
+
+#if defined(BOOST_MSVC)
+
+#pragma warning( push )
+#pragma warning( disable : 4127 )
+
+#endif
+
+ BOOST_PP_REPEAT(BOOST_PP_ARRAY_SIZE(VMD_TEST_ARRAY_NUMBERS),VMD_TEST_ADD_TO_INT,VMD_TEST_ARRAY_NUMBERS)
+
+#if defined(BOOST_MSVC)
+
+#pragma warning( pop )
+
+#endif
+
+ addedNumber += VMD_DATA_ELEM(5,VMD_PP_ARRAY_TO_DATA(VMD_TEST_ARRAY_NUMBERS));
+
+ BOOST_TEST_EQ(addedNumber,47+69+23+985+458+77+12457+89+99872+77);
+
+ int numberOfTypes(BOOST_PP_ARRAY_SIZE(VMD_TEST_ARRAY_TYPES(unsigned,long,short,unsigned long,double,float)));
+
+ BOOST_TEST_EQ(numberOfTypes,7);
+
+ typedef std::vector<BOOST_PP_ARRAY_ELEM(4,VMD_TEST_ARRAY_TYPES(unsigned,long,short,unsigned long,double,float))>::value_type vtype;
+
+ BOOST_TEST((boost::is_same<vtype,unsigned long>::value));
+
+#endif
+
+ return boost::report_errors();
+
+ }
Added: sandbox/variadic_macro_data/libs/variadic_macro_data/test/TestDataAsList.cpp
==============================================================================
--- (empty file)
+++ sandbox/variadic_macro_data/libs/variadic_macro_data/test/TestDataAsList.cpp 2010-10-15 14:09:16 EDT (Fri, 15 Oct 2010)
@@ -0,0 +1,62 @@
+#include <boost/variadic_macro_data/VariadicMacroData.hpp>
+#include <boost/detail/lightweight_test.hpp>
+#include <boost/preprocessor/list/at.hpp>
+#include <boost/preprocessor/list/size.hpp>
+#include <boost/preprocessor/repetition/repeat.hpp>
+#include <vector>
+#include <boost/type_traits/is_same.hpp>
+
+int main()
+ {
+
+#if !defined(BOOST_NO_VARIADIC_MACROS)
+
+ #define VMD_TEST_LIST_NUMBERS \
+ VMD_DATA_TO_PP_LIST(34,23467,12,9984,34,678,7890,1235678,3489,1,8965,345) \
+ /**/
+
+ #define VMD_TEST_LIST_TYPES(...) \
+ VMD_DATA_TO_PP_LIST(unsigned char,__VA_ARGS__) \
+ /**/
+
+ int addedNumber(0);
+
+ #define VMD_TEST_ADD_TO_INT(z,n,data) \
+ if (BOOST_PP_LIST_SIZE(data) > n) \
+ { \
+ addedNumber += BOOST_PP_LIST_AT(data,n); \
+ } \
+ /**/
+
+#if defined(BOOST_MSVC)
+
+#pragma warning( push )
+#pragma warning( disable : 4127 )
+
+#endif
+
+ BOOST_PP_REPEAT(BOOST_PP_LIST_SIZE(VMD_TEST_LIST_NUMBERS),VMD_TEST_ADD_TO_INT,VMD_TEST_LIST_NUMBERS)
+
+#if defined(BOOST_MSVC)
+
+#pragma warning( pop )
+
+#endif
+
+ addedNumber += VMD_DATA_ELEM(8,VMD_PP_LIST_TO_DATA(VMD_TEST_LIST_NUMBERS));
+
+ BOOST_TEST_EQ(addedNumber,34+23467+12+9984+34+678+7890+1235678+3489+1+8965+345+3489);
+
+ int numberOfTypes(BOOST_PP_LIST_SIZE(VMD_TEST_LIST_TYPES(unsigned short,unsigned,long,short,unsigned long,double,float,char)));
+
+ BOOST_TEST_EQ(numberOfTypes,9);
+
+ typedef std::vector<BOOST_PP_LIST_AT(VMD_TEST_LIST_TYPES(unsigned short,unsigned,long,short,unsigned long,double,float,char),3)>::value_type vtype;
+
+ BOOST_TEST((boost::is_same<vtype,long>::value));
+
+#endif
+
+ return boost::report_errors();
+
+ }
Added: sandbox/variadic_macro_data/libs/variadic_macro_data/test/TestDataAsSequence.cpp
==============================================================================
--- (empty file)
+++ sandbox/variadic_macro_data/libs/variadic_macro_data/test/TestDataAsSequence.cpp 2010-10-15 14:09:16 EDT (Fri, 15 Oct 2010)
@@ -0,0 +1,62 @@
+#include <boost/variadic_macro_data/VariadicMacroData.hpp>
+#include <boost/detail/lightweight_test.hpp>
+#include <boost/preprocessor/seq/size.hpp>
+#include <boost/preprocessor/seq/elem.hpp>
+#include <boost/preprocessor/repetition/repeat.hpp>
+#include <vector>
+#include <boost/type_traits/is_same.hpp>
+
+int main()
+ {
+
+#if !defined(BOOST_NO_VARIADIC_MACROS)
+
+ #define VMD_TEST_SEQ_NUMBERS \
+ VMD_DATA_TO_PP_SEQ(4578,24,789436,78345,902,345,860,667433,56,727,47891) \
+ /**/
+
+ #define VMD_TEST_SEQ_TYPES(...) \
+ VMD_DATA_TO_PP_SEQ(bool,__VA_ARGS__) \
+ /**/
+
+ int addedNumber(0);
+
+ #define VMD_TEST_ADD_TO_INT(z,n,data) \
+ if (BOOST_PP_SEQ_SIZE(data) > n) \
+ { \
+ addedNumber += BOOST_PP_SEQ_ELEM(n,data); \
+ } \
+ /**/
+
+#if defined(BOOST_MSVC)
+
+#pragma warning( push )
+#pragma warning( disable : 4127 )
+
+#endif
+
+ BOOST_PP_REPEAT(BOOST_PP_SEQ_SIZE(VMD_TEST_SEQ_NUMBERS),VMD_TEST_ADD_TO_INT,VMD_TEST_SEQ_NUMBERS)
+
+#if defined(BOOST_MSVC)
+
+#pragma warning( pop )
+
+#endif
+
+ addedNumber += VMD_DATA_ELEM(2,VMD_PP_SEQ_TO_DATA(VMD_TEST_SEQ_NUMBERS));
+
+ BOOST_TEST_EQ(addedNumber,4578+24+789436+78345+902+345+860+667433+56+727+47891+789436);
+
+ int numberOfTypes(BOOST_PP_SEQ_SIZE(VMD_TEST_SEQ_TYPES(long,short,unsigned long,double,float)));
+
+ BOOST_TEST_EQ(numberOfTypes,6);
+
+ typedef std::vector<BOOST_PP_SEQ_ELEM(5,VMD_TEST_SEQ_TYPES(long,short,unsigned long,double,float))>::value_type vtype;
+
+ BOOST_TEST((boost::is_same<vtype,float>::value));
+
+#endif
+
+ return boost::report_errors();
+
+ }
Added: sandbox/variadic_macro_data/libs/variadic_macro_data/test/TestDataAsTuple.cpp
==============================================================================
--- (empty file)
+++ sandbox/variadic_macro_data/libs/variadic_macro_data/test/TestDataAsTuple.cpp 2010-10-15 14:09:16 EDT (Fri, 15 Oct 2010)
@@ -0,0 +1,84 @@
+#include <boost/variadic_macro_data/VariadicMacroData.hpp>
+#include <boost/detail/lightweight_test.hpp>
+#include <boost/preprocessor/list/size.hpp>
+#include <boost/preprocessor/seq/size.hpp>
+#include <boost/preprocessor/tuple/rem.hpp>
+#include <boost/preprocessor/tuple/eat.hpp>
+#include <boost/preprocessor/repetition/repeat.hpp>
+#include <vector>
+#include <boost/type_traits/is_same.hpp>
+
+int main()
+ {
+
+#if !defined(BOOST_NO_VARIADIC_MACROS)
+
+ #define VMD_TEST_TUPLE_NUMBERS \
+ VMD_DATA_TO_PP_TUPLE(23,45,147,6,7743,12,67,43,89045,82) \
+ /**/
+
+ #define VMD_TEST_TUPLE_NUMBERS2 \
+ VMD_DATA_TO_PP_TUPLE(23,45,147,6,7743) \
+ /**/
+
+ #define VMD_TEST_TUPLE_NUMBERS3 \
+ VMD_DATA_TO_PP_TUPLE(23,45,147,6,7743,12,67,43,89045,82,8743,11) \
+ /**/
+
+ #define VMD_TEST_TUPLE_TYPES(...) \
+ VMD_DATA_TO_PP_TUPLE(int,__VA_ARGS__) \
+ /**/
+
+ int addedNumber(0);
+
+ #define VMD_TEST_ADD_TO_INT(z,n,data) \
+ if (VMD_PP_TUPLE_SIZE(data) > n) \
+ { \
+ addedNumber += VMD_PP_TUPLE_ELEM(n,VMD_PP_TUPLE_REVERSE(data)); \
+ } \
+ /**/
+
+#if defined(BOOST_MSVC)
+
+#pragma warning( push )
+#pragma warning( disable : 4127 )
+
+#endif
+
+ BOOST_PP_REPEAT(VMD_PP_TUPLE_SIZE(VMD_TEST_TUPLE_NUMBERS),VMD_TEST_ADD_TO_INT,VMD_TEST_TUPLE_NUMBERS)
+
+#if defined(BOOST_MSVC)
+
+#pragma warning( pop )
+
+#endif
+
+ addedNumber += VMD_DATA_ELEM(5,VMD_PP_TUPLE_TO_DATA(VMD_TEST_TUPLE_NUMBERS));
+ addedNumber += VMD_DATA_ELEM(3,BOOST_PP_TUPLE_REM(VMD_PP_TUPLE_SIZE(VMD_TEST_TUPLE_NUMBERS))(23,45,147,6,7743,12,67,43,89045,82));
+ addedNumber += VMD_DATA_ELEM(4,VMD_PP_TUPLE_REM_CTOR(VMD_TEST_TUPLE_NUMBERS));
+
+ BOOST_PP_TUPLE_EAT(VMD_PP_TUPLE_SIZE(VMD_TEST_TUPLE_NUMBERS))(23,45,147,6,7743,12,67,43,89045,82)
+
+ BOOST_TEST_EQ(addedNumber,23+45+147+6+7743+12+67+43+89045+82+12+6+7743);
+
+ int listSize(BOOST_PP_LIST_SIZE(VMD_PP_TUPLE_TO_LIST(VMD_TEST_TUPLE_NUMBERS2)));
+
+ BOOST_TEST_EQ(listSize,5);
+
+ int seqSize(BOOST_PP_SEQ_SIZE(VMD_PP_TUPLE_TO_SEQ(VMD_TEST_TUPLE_NUMBERS3)));
+
+ BOOST_TEST_EQ(seqSize,12);
+
+ int numberOfTypes(VMD_PP_TUPLE_SIZE(VMD_TEST_TUPLE_TYPES(unsigned,long,short,unsigned long,double,float)));
+
+ BOOST_TEST_EQ(numberOfTypes,7);
+
+ typedef std::vector<VMD_PP_TUPLE_ELEM(5,VMD_TEST_TUPLE_TYPES(unsigned,long,short,unsigned long,double,float))>::value_type vtype;
+
+ BOOST_TEST((boost::is_same<vtype,double>::value));
+
+#endif
+
+ return boost::report_errors();
+
+ }
Added: sandbox/variadic_macro_data/libs/variadic_macro_data/test/TestDataTry.cpp
==============================================================================
--- (empty file)
+++ sandbox/variadic_macro_data/libs/variadic_macro_data/test/TestDataTry.cpp 2010-10-15 14:09:16 EDT (Fri, 15 Oct 2010)
@@ -0,0 +1,28 @@
+#include <boost/variadic_macro_data/VariadicMacroData.hpp>
+#include <boost/detail/lightweight_test.hpp>
+#include <boost/preprocessor/arithmetic/add.hpp>
+#include <boost/preprocessor/cat.hpp>
+#include <boost/preprocessor/facilities/empty.hpp>
+
+int main()
+ {
+
+#if !defined(BOOST_NO_VARIADIC_MACROS)
+
+ int number(BOOST_PP_ADD(VMD_DATA_SIZE(3,7,45),0));
+
+ BOOST_TEST_EQ(number,3);
+
+ number = BOOST_PP_CAT(6,VMD_DATA_SIZE(3,7,45));
+
+ BOOST_TEST_EQ(number,63);
+
+ number = BOOST_PP_CAT(6,BOOST_PP_EMPTY());
+
+ BOOST_TEST_EQ(number,6);
+
+#endif
+
+ return boost::report_errors();
+
+ }
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