$include_dir="/home/hyper-archives/boost-commit/include"; include("$include_dir/msg-header.inc") ?>
Subject: [Boost-commit] svn:boost r73508 - in sandbox/variadic_macro_data: boost/variadic_macro_data boost/variadic_macro_data/detail libs/variadic_macro_data/doc
From: eldiener_at_[hidden]
Date: 2011-08-03 11:26:12
Author: eldiener
Date: 2011-08-03 11:26:09 EDT (Wed, 03 Aug 2011)
New Revision: 73508
URL: http://svn.boost.org/trac/boost/changeset/73508
Log:
Changed header file arrangement
Added:
   sandbox/variadic_macro_data/boost/variadic_macro_data/detail/vmd_detail_main.hpp   (contents, props changed)
   sandbox/variadic_macro_data/boost/variadic_macro_data/detail/vmd_detail_main_common.hpp   (contents, props changed)
   sandbox/variadic_macro_data/boost/variadic_macro_data/detail/vmd_detail_main_native.hpp   (contents, props changed)
   sandbox/variadic_macro_data/boost/variadic_macro_data/detail/vmd_detail_main_pplib.hpp   (contents, props changed)
   sandbox/variadic_macro_data/boost/variadic_macro_data/vmd_main.hpp   (contents, props changed)
   sandbox/variadic_macro_data/boost/variadic_macro_data/vmd_main_common.hpp   (contents, props changed)
   sandbox/variadic_macro_data/boost/variadic_macro_data/vmd_main_native.hpp   (contents, props changed)
   sandbox/variadic_macro_data/boost/variadic_macro_data/vmd_main_pplib.hpp   (contents, props changed)
Text files modified: 
   sandbox/variadic_macro_data/boost/variadic_macro_data/detail/vmd_detail_common.hpp |    38 ---                                     
   sandbox/variadic_macro_data/boost/variadic_macro_data/detail/vmd_detail_native.hpp |   173 -----------------                       
   sandbox/variadic_macro_data/boost/variadic_macro_data/detail/vmd_detail_pplib.hpp  |    28 --                                      
   sandbox/variadic_macro_data/boost/variadic_macro_data/detail/vmd_detail_setup.hpp  |    15 +                                       
   sandbox/variadic_macro_data/boost/variadic_macro_data/vmd.hpp                      |     8                                         
   sandbox/variadic_macro_data/boost/variadic_macro_data/vmd_common.hpp               |    71 -------                                 
   sandbox/variadic_macro_data/boost/variadic_macro_data/vmd_native.hpp               |   370 --------------------------------------  
   sandbox/variadic_macro_data/boost/variadic_macro_data/vmd_pplib.hpp                |   385 --------------------------------------- 
   sandbox/variadic_macro_data/libs/variadic_macro_data/doc/index.idx                 |     4                                         
   sandbox/variadic_macro_data/libs/variadic_macro_data/doc/jamfile.v2                |     4                                         
   10 files changed, 34 insertions(+), 1062 deletions(-)
Modified: sandbox/variadic_macro_data/boost/variadic_macro_data/detail/vmd_detail_common.hpp
==============================================================================
--- sandbox/variadic_macro_data/boost/variadic_macro_data/detail/vmd_detail_common.hpp	(original)
+++ sandbox/variadic_macro_data/boost/variadic_macro_data/detail/vmd_detail_common.hpp	2011-08-03 11:26:09 EDT (Wed, 03 Aug 2011)
@@ -5,40 +5,8 @@
 
 #if BOOST_VMD_VARIADICS
 
-#define VMD_DETAIL_IS_TUPLE_BEGIN_EXPAND(...) \
-  1,1 \
-/**/
+#include "vmd_detail_main_common.hpp"
 
-#if BOOST_VMD_MSVC
+#endif /* BOOST_VMD_VARIADICS */
 
-# define VMD_DETAIL_IS_EMPTY_GEN_ZERO(x) 0
-# define VMD_DETAIL_IS_EMPTY_PRIMITIVE_CAT(a, b) a ## b
-# define VMD_DETAIL_IS_EMPTY_IIF_0(t, b) b
-# define VMD_DETAIL_IS_EMPTY_IIF_1(t, b) t
-
-#else
-
-# define VMD_DETAIL_IS_EMPTY_CAT(a, ...) VMD_DETAIL_IS_EMPTY_PRIMITIVE_CAT(a,__VA_ARGS__)
-# define VMD_DETAIL_IS_EMPTY_PRIMITIVE_CAT(a, ...) a ## __VA_ARGS__
-# define VMD_DETAIL_IS_EMPTY_IIF_0(t, ...) __VA_ARGS__
-# define VMD_DETAIL_IS_EMPTY_IIF_1(t, ...) t
-# define VMD_DETAIL_IS_EMPTY_SPLIT(i, ...) \
-    VMD_DETAIL_IS_EMPTY_PRIMITIVE_CAT(VMD_DETAIL_IS_EMPTY_SPLIT_,i)(__VA_ARGS__) \
-/**/
-
-# define VMD_DETAIL_IS_EMPTY_SPLIT_0(a, ...) a
-# define VMD_DETAIL_IS_EMPTY_SPLIT_1(a, ...) __VA_ARGS__
-# define VMD_DETAIL_IS_EMPTY_IS_VARIADIC_C(...) 1
-# define VMD_DETAIL_IS_EMPTY_IS_VARIADIC_R_1 1,
-# define VMD_DETAIL_IS_EMPTY_IS_VARIADIC_R_VMD_DETAIL_IS_EMPTY_IS_VARIADIC_C 0,
-
-#endif /* BOOST_VMD_MSVC */
-
-# define VMD_DETAIL_IS_EMPTY_IIF(bit) \
-    VMD_DETAIL_IS_EMPTY_PRIMITIVE_CAT(VMD_DETAIL_IS_EMPTY_IIF_,bit) \
-/**/
-
-# define VMD_DETAIL_IS_EMPTY_NON_FUNCTION_C() ()
-
-#endif // BOOST_VMD_VARIADICS
-#endif // VMD_DETAIL_COMMON_HPP
+#endif /* VMD_DETAIL_COMMON_HPP */
Added: sandbox/variadic_macro_data/boost/variadic_macro_data/detail/vmd_detail_main.hpp
==============================================================================
--- (empty file)
+++ sandbox/variadic_macro_data/boost/variadic_macro_data/detail/vmd_detail_main.hpp	2011-08-03 11:26:09 EDT (Wed, 03 Aug 2011)
@@ -0,0 +1,17 @@
+#if !defined(VMD_DETAIL_MAIN_HPP)
+#define VMD_DETAIL_MAIN_HPP
+
+#include "vmd_detail_setup.hpp"
+
+#if BOOST_VMD_VARIADICS
+
+#if BOOST_VMD_PPLIB
+#include "vmd_detail_main_pplib.hpp"
+#else
+#include "vmd_detail_main_native.hpp"
+#endif /* BOOST_VMD_PPLIB */
+
+#include "vmd_detail_main_common.hpp"
+
+#endif /* BOOST_VMD_VARIADICS */
+#endif /* VMD_DETAIL_MAIN_HPP */
Added: sandbox/variadic_macro_data/boost/variadic_macro_data/detail/vmd_detail_main_common.hpp
==============================================================================
--- (empty file)
+++ sandbox/variadic_macro_data/boost/variadic_macro_data/detail/vmd_detail_main_common.hpp	2011-08-03 11:26:09 EDT (Wed, 03 Aug 2011)
@@ -0,0 +1,44 @@
+#if !defined(VMD_DETAIL_MAIN_COMMON_HPP)
+#define VMD_DETAIL_MAIN_COMMON_HPP
+
+#include "vmd_detail_setup.hpp"
+
+#if BOOST_VMD_VARIADICS
+
+#define VMD_DETAIL_IS_TUPLE_BEGIN_EXPAND(...) \
+  1,1 \
+/**/
+
+#if BOOST_VMD_MSVC
+
+#define VMD_DETAIL_IS_EMPTY_GEN_ZERO(x) 0
+#define VMD_DETAIL_IS_EMPTY_PRIMITIVE_CAT(a, b) a ## b
+#define VMD_DETAIL_IS_EMPTY_IIF_0(t, b) b
+#define VMD_DETAIL_IS_EMPTY_IIF_1(t, b) t
+
+#else
+
+#define VMD_DETAIL_IS_EMPTY_CAT(a, ...) VMD_DETAIL_IS_EMPTY_PRIMITIVE_CAT(a,__VA_ARGS__)
+#define VMD_DETAIL_IS_EMPTY_PRIMITIVE_CAT(a, ...) a ## __VA_ARGS__
+#define VMD_DETAIL_IS_EMPTY_IIF_0(t, ...) __VA_ARGS__
+#define VMD_DETAIL_IS_EMPTY_IIF_1(t, ...) t
+#define VMD_DETAIL_IS_EMPTY_SPLIT(i, ...) \
+    VMD_DETAIL_IS_EMPTY_PRIMITIVE_CAT(VMD_DETAIL_IS_EMPTY_SPLIT_,i)(__VA_ARGS__) \
+/**/
+
+#define VMD_DETAIL_IS_EMPTY_SPLIT_0(a, ...) a
+#define VMD_DETAIL_IS_EMPTY_SPLIT_1(a, ...) __VA_ARGS__
+#define VMD_DETAIL_IS_EMPTY_IS_VARIADIC_C(...) 1
+#define VMD_DETAIL_IS_EMPTY_IS_VARIADIC_R_1 1,
+#define VMD_DETAIL_IS_EMPTY_IS_VARIADIC_R_VMD_DETAIL_IS_EMPTY_IS_VARIADIC_C 0,
+
+#endif /* BOOST_VMD_MSVC */
+
+#define VMD_DETAIL_IS_EMPTY_IIF(bit) \
+    VMD_DETAIL_IS_EMPTY_PRIMITIVE_CAT(VMD_DETAIL_IS_EMPTY_IIF_,bit) \
+/**/
+
+#define VMD_DETAIL_IS_EMPTY_NON_FUNCTION_C() ()
+
+#endif /* BOOST_VMD_VARIADICS */
+#endif /* VMD_DETAIL_MAIN_COMMON_HPP */
Added: sandbox/variadic_macro_data/boost/variadic_macro_data/detail/vmd_detail_main_native.hpp
==============================================================================
--- (empty file)
+++ sandbox/variadic_macro_data/boost/variadic_macro_data/detail/vmd_detail_main_native.hpp	2011-08-03 11:26:09 EDT (Wed, 03 Aug 2011)
@@ -0,0 +1,182 @@
+#if !defined(VMD_DETAIL_MAIN_NATIVE_HPP)
+#define VMD_DETAIL_MAIN_NATIVE_HPP
+
+#include "vmd_detail_setup.hpp"
+
+#if BOOST_VMD_VARIADICS
+
+#include <boost/preprocessor/facilities/identity.hpp>
+#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 BOOST_VMD_MSVC
+#include <boost/preprocessor/arithmetic/dec.hpp>
+#include <boost/preprocessor/facilities/empty.hpp>
+#if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MWCC()
+#define VMD_DETAIL_VD_CAT(a, b) VMD_DETAIL_VD_CAT_I(a, b)
+#else
+#define VMD_DETAIL_VD_CAT(a, b) VMD_DETAIL_VD_CAT_OO((a, b))
+#define VMD_DETAIL_VD_CAT_OO(par) VMD_DETAIL_VD_CAT_I ## par
+#endif
+#if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MSVC()
+#define VMD_DETAIL_VD_CAT_I(a, b) a ## b
+#else
+#define VMD_DETAIL_VD_CAT_I(a, b) VMD_DETAIL_VD_CAT_II(a ## b)
+#define VMD_DETAIL_VD_CAT_II(res) res
+#endif
+#endif // BOOST_VMD_MSVC
+
+#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,A64,N,...) N \
+/**/
+#define VMD_DETAIL_RSEQ_N() \
+  64,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 BOOST_VMD_MSVC
+#define VMD_DETAIL_DATA_SIZE(...) \
+  VMD_DETAIL_VD_CAT(VMD_DETAIL_APPLY(VMD_DETAIL_ARG_N, (__VA_ARGS__, VMD_DETAIL_RSEQ_N())),BOOST_PP_EMPTY()) \
+/**/
+#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 BOOST_VMD_MSVC
+#define VMD_DETAIL_DATA_ELEM(n,...) \
+  VMD_DETAIL_VD_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) \
+/**/
+#define VMD_DETAIL_REMOVE_PARENS(x) \
+  BOOST_PP_IDENTITY(VMD_DETAIL_PP_TUPLE_TO_DATA(x)) \
+/**/
+
+#endif // BOOST_VMD_VARIADICS
+#endif // VMD_DETAIL_MAIN_NATIVE_HPP
Added: sandbox/variadic_macro_data/boost/variadic_macro_data/detail/vmd_detail_main_pplib.hpp
==============================================================================
--- (empty file)
+++ sandbox/variadic_macro_data/boost/variadic_macro_data/detail/vmd_detail_main_pplib.hpp	2011-08-03 11:26:09 EDT (Wed, 03 Aug 2011)
@@ -0,0 +1,37 @@
+#if !defined(VMD_DETAIL_MAIN_PPLIB_HPP)
+#define VMD_DETAIL_MAIN_PPLIB_HPP
+
+#include "vmd_detail_setup.hpp"
+
+#if BOOST_VMD_VARIADICS
+
+#include <boost/preprocessor/facilities/identity.hpp>
+#include <boost/preprocessor/tuple/enum.hpp>
+
+#if BOOST_VMD_MSVC
+
+#include <boost/preprocessor/arithmetic/dec.hpp>
+#include <boost/preprocessor/variadic/size.hpp>
+
+#define VMD_DETAIL_IS_EMPTY_VSIZE(...) VMD_DETAIL_IS_EMPTY_VSIZE2(__VA_ARGS__)
+#define VMD_DETAIL_IS_EMPTY_VSIZE2(...) VMD_DETAIL_IS_EMPTY_VSIZE3(__VA_ARGS__)
+#define VMD_DETAIL_IS_EMPTY_VSIZE3(...) BOOST_PP_VARIADIC_SIZE(__VA_ARGS__)
+
+#define VMD_DETAIL_IS_EMPTY_TUPLE_BEGIN(param) \
+    BOOST_PP_DEC \
+      ( \
+      VMD_DETAIL_IS_EMPTY_VSIZE \
+        ( \
+        VMD_DETAIL_IS_TUPLE_BEGIN_EXPAND param \
+        ) \
+      ) \
+/**/
+
+#endif /* BOOST_VMD_MSVC */
+
+#define VMD_DETAIL_REMOVE_PARENS(x) \
+  BOOST_PP_IDENTITY(BOOST_PP_TUPLE_ENUM(x)) \
+/**/
+
+#endif // BOOST_VMD_VARIADICS
+#endif // VMD_DETAIL_MAIN_PPLIB_HPP
Modified: sandbox/variadic_macro_data/boost/variadic_macro_data/detail/vmd_detail_native.hpp
==============================================================================
--- sandbox/variadic_macro_data/boost/variadic_macro_data/detail/vmd_detail_native.hpp	(original)
+++ sandbox/variadic_macro_data/boost/variadic_macro_data/detail/vmd_detail_native.hpp	2011-08-03 11:26:09 EDT (Wed, 03 Aug 2011)
@@ -5,178 +5,7 @@
 
 #if BOOST_VMD_VARIADICS
 
-#include <boost/preprocessor/facilities/identity.hpp>
-#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 BOOST_VMD_MSVC
-#include <boost/preprocessor/arithmetic/dec.hpp>
-#include <boost/preprocessor/facilities/empty.hpp>
-#if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MWCC()
-#define VMD_DETAIL_VD_CAT(a, b) VMD_DETAIL_VD_CAT_I(a, b)
-#else
-#define VMD_DETAIL_VD_CAT(a, b) VMD_DETAIL_VD_CAT_OO((a, b))
-#define VMD_DETAIL_VD_CAT_OO(par) VMD_DETAIL_VD_CAT_I ## par
-#endif
-#if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MSVC()
-#define VMD_DETAIL_VD_CAT_I(a, b) a ## b
-#else
-#define VMD_DETAIL_VD_CAT_I(a, b) VMD_DETAIL_VD_CAT_II(a ## b)
-#define VMD_DETAIL_VD_CAT_II(res) res
-#endif
-#endif // BOOST_VMD_MSVC
-
-#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,A64,N,...) N \
-/**/
-#define VMD_DETAIL_RSEQ_N() \
-  64,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 BOOST_VMD_MSVC
-#define VMD_DETAIL_DATA_SIZE(...) \
-  VMD_DETAIL_VD_CAT(VMD_DETAIL_APPLY(VMD_DETAIL_ARG_N, (__VA_ARGS__, VMD_DETAIL_RSEQ_N())),BOOST_PP_EMPTY()) \
-/**/
-#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 BOOST_VMD_MSVC
-#define VMD_DETAIL_DATA_ELEM(n,...) \
-  VMD_DETAIL_VD_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) \
-/**/
-#define VMD_DETAIL_REMOVE_PARENS(x) \
-  BOOST_PP_IDENTITY(VMD_DETAIL_PP_TUPLE_TO_DATA(x)) \
-/**/
+#include "vmd_detail_main_native.hpp"
 
 #endif // BOOST_VMD_VARIADICS
 #endif // VMD_DETAIL_NATIVE_HPP
Modified: sandbox/variadic_macro_data/boost/variadic_macro_data/detail/vmd_detail_pplib.hpp
==============================================================================
--- sandbox/variadic_macro_data/boost/variadic_macro_data/detail/vmd_detail_pplib.hpp	(original)
+++ sandbox/variadic_macro_data/boost/variadic_macro_data/detail/vmd_detail_pplib.hpp	2011-08-03 11:26:09 EDT (Wed, 03 Aug 2011)
@@ -5,33 +5,7 @@
 
 #if BOOST_VMD_VARIADICS
 
-#include <boost/preprocessor/facilities/identity.hpp>
-#include <boost/preprocessor/tuple/enum.hpp>
-
-#if BOOST_VMD_MSVC
-
-#include <boost/preprocessor/arithmetic/dec.hpp>
-#include <boost/preprocessor/variadic/size.hpp>
-
-#define VMD_DETAIL_IS_EMPTY_VSIZE(...) VMD_DETAIL_IS_EMPTY_VSIZE2(__VA_ARGS__)
-#define VMD_DETAIL_IS_EMPTY_VSIZE2(...) VMD_DETAIL_IS_EMPTY_VSIZE3(__VA_ARGS__)
-#define VMD_DETAIL_IS_EMPTY_VSIZE3(...) BOOST_PP_VARIADIC_SIZE(__VA_ARGS__)
-
-#define VMD_DETAIL_IS_EMPTY_TUPLE_BEGIN(param) \
-    BOOST_PP_DEC \
-      ( \
-      VMD_DETAIL_IS_EMPTY_VSIZE \
-        ( \
-        VMD_DETAIL_IS_TUPLE_BEGIN_EXPAND param \
-        ) \
-      ) \
-/**/
-
-#endif /* BOOST_PP_VARIADICS_MSVC */
-
-#define VMD_DETAIL_REMOVE_PARENS(x) \
-  BOOST_PP_IDENTITY(BOOST_PP_TUPLE_ENUM(x)) \
-/**/
+#include "vmd_detail_main_pplib.hpp"
 
 #endif // BOOST_VMD_VARIADICS
 #endif // VMD_DETAIL_PPLIB_HPP
Modified: sandbox/variadic_macro_data/boost/variadic_macro_data/detail/vmd_detail_setup.hpp
==============================================================================
--- sandbox/variadic_macro_data/boost/variadic_macro_data/detail/vmd_detail_setup.hpp	(original)
+++ sandbox/variadic_macro_data/boost/variadic_macro_data/detail/vmd_detail_setup.hpp	2011-08-03 11:26:09 EDT (Wed, 03 Aug 2011)
@@ -24,9 +24,24 @@
 #else
 #define BOOST_VMD_MSVC 0
 #endif /* BOOST_MSVC */
+#if !defined(BOOST_VMD_ASSERT_DATA)
+#if defined(NDEBUG)
+#define BOOST_VMD_ASSERT_DATA 0
+#else
+#define BOOST_VMD_ASSERT_DATA 1
+#endif /* NDEBUG */
+#endif /* BOOST_PP_ASSERT_DATA */
 #else
 #define BOOST_VMD_VARIADICS 0
 #endif /* BOOST_NO_VARIADIC_MACROS */
+#elif BOOST_VMD_VARIADICS
+#if !defined(BOOST_VMD_ASSERT_DATA)
+#if defined(NDEBUG)
+#define BOOST_VMD_ASSERT_DATA 0
+#else
+#define BOOST_VMD_ASSERT_DATA 1
+#endif /* NDEBUG */
+#endif /* BOOST_PP_ASSERT_DATA */
 #endif /* BOOST_VMD_VARIADICS */
 
 #endif /* VMD_DETAIL_SETUP_HPP */
Modified: sandbox/variadic_macro_data/boost/variadic_macro_data/vmd.hpp
==============================================================================
--- sandbox/variadic_macro_data/boost/variadic_macro_data/vmd.hpp	(original)
+++ sandbox/variadic_macro_data/boost/variadic_macro_data/vmd.hpp	2011-08-03 11:26:09 EDT (Wed, 03 Aug 2011)
@@ -5,13 +5,7 @@
 
 #if BOOST_VMD_VARIADICS
 
-#if BOOST_VMD_PPLIB
-#include "vmd_pplib.hpp"
-#else
-#include "vmd_native.hpp"
-#endif /* BOOST_VMD_PPLIB */
-
-#include "vmd_common.hpp"
+#include "vmd_main.hpp"
 
 #endif /* BOOST_VMD_VARIADICS */
 #endif /* VARIADIC_MACRO_DATA_HPP */
Modified: sandbox/variadic_macro_data/boost/variadic_macro_data/vmd_common.hpp
==============================================================================
--- sandbox/variadic_macro_data/boost/variadic_macro_data/vmd_common.hpp	(original)
+++ sandbox/variadic_macro_data/boost/variadic_macro_data/vmd_common.hpp	2011-08-03 11:26:09 EDT (Wed, 03 Aug 2011)
@@ -5,73 +5,8 @@
 
 #if BOOST_VMD_VARIADICS
 
-#include <boost/preprocessor/facilities/identity.hpp>
+#include "vmd_main_common.hpp"
 
-#include "detail/vmd_detail.hpp"
+#endif /* BOOST_VMD_VARIADICS */
 
-/*
-
-  The succeeding comments in this file are in doxygen format.
-
-*/
-
-/** \file
-*/
-
-/// Removes the set of parens from the start of a parameter if it has any.
-/**
-
-    param = a macro parameter.
-
-    returns = the parameter with the beginning set of parens removed.
-              If the parameter has no beginning set of parameters, the
-              parameter is returned as is. If there are further sets of 
-              parens after the beginning set of parameters, they are not
-              removed.
-    
-*/
-# define BOOST_VMD_REMOVE_PARENS(param) \
-    BOOST_PP_IIF \
-      ( \
-      BOOST_VMD_IS_TUPLE_BEGIN(param), \
-      VMD_DETAIL_REMOVE_PARENS, \
-      BOOST_PP_IDENTITY \
-      ) \
-    (param)() \
-/**/
-
-#if !BOOST_VMD_MSVC
-
-# define BOOST_VMD_IS_TUPLE_BEGIN(...) \
-    VMD_DETAIL_IS_EMPTY_SPLIT \
-      ( \
-      0, \
-      VMD_DETAIL_IS_EMPTY_CAT \
-        ( \
-        VMD_DETAIL_IS_EMPTY_IS_VARIADIC_R_, \
-        VMD_DETAIL_IS_EMPTY_IS_VARIADIC_C __VA_ARGS__ \
-        ) \
-      ) \
-/**/
-
-#define BOOST_VMD_IS_EMPTY(...) \
-    VMD_DETAIL_IS_EMPTY_IIF \
-      ( \
-      BOOST_VMD_IS_TUPLE_BEGIN \
-        ( \
-        __VA_ARGS__ \
-        ) \
-      ) \
-      ( \
-      0, \
-      BOOST_VMD_IS_TUPLE_BEGIN \
-        ( \
-        VMD_DETAIL_IS_EMPTY_NON_FUNCTION_C __VA_ARGS__ () \
-        ) \
-      ) \
-/**/
-
-#endif /* BOOST_VMD_MSVC */
-
-#endif // BOOST_VMD_VARIADICS
-#endif // VMD_COMMON_HPP
+#endif /* VMD_COMMON_HPP */
Added: sandbox/variadic_macro_data/boost/variadic_macro_data/vmd_main.hpp
==============================================================================
--- (empty file)
+++ sandbox/variadic_macro_data/boost/variadic_macro_data/vmd_main.hpp	2011-08-03 11:26:09 EDT (Wed, 03 Aug 2011)
@@ -0,0 +1,17 @@
+#if !defined(VMD_MAIN_HPP)
+#define VMD_MAIN_HPP
+
+#include "detail/vmd_detail_setup.hpp"
+
+#if BOOST_VMD_VARIADICS
+
+#if BOOST_VMD_PPLIB
+#include "vmd_main_pplib.hpp"
+#else
+#include "vmd_main_native.hpp"
+#endif /* BOOST_VMD_PPLIB */
+
+#include "vmd_main_common.hpp"
+
+#endif /* BOOST_VMD_VARIADICS */
+#endif /* VMD_MAIN_HPP */
Added: sandbox/variadic_macro_data/boost/variadic_macro_data/vmd_main_common.hpp
==============================================================================
--- (empty file)
+++ sandbox/variadic_macro_data/boost/variadic_macro_data/vmd_main_common.hpp	2011-08-03 11:26:09 EDT (Wed, 03 Aug 2011)
@@ -0,0 +1,78 @@
+#if !defined(VMD_MAIN_COMMON_HPP)
+#define VMD_MAIN_COMMON_HPP
+
+#include "detail/vmd_detail_setup.hpp"
+
+#if BOOST_VMD_VARIADICS
+
+#include <boost/preprocessor/facilities/identity.hpp>
+
+#include "detail/vmd_detail_main.hpp"
+
+/*
+
+  The succeeding comments in this file are in doxygen format.
+
+*/
+
+/** \file
+*/
+
+/// Removes the set of parens from the start of a parameter if it has any.
+/**
+
+    param = a macro parameter.
+
+    returns = the parameter with the beginning set of parens removed.
+              If the parameter has no beginning set of parameters, the
+              parameter is returned as is. If there are further sets of 
+              parens after the beginning set of parameters, they are not
+              removed.
+    
+*/
+# define BOOST_VMD_REMOVE_PARENS(param) \
+    BOOST_PP_IIF \
+      ( \
+      BOOST_VMD_IS_TUPLE_BEGIN(param), \
+      VMD_DETAIL_REMOVE_PARENS, \
+      BOOST_PP_IDENTITY \
+      ) \
+    (param)() \
+/**/
+
+#if !BOOST_VMD_MSVC
+
+# define BOOST_VMD_IS_TUPLE_BEGIN(...) \
+    VMD_DETAIL_IS_EMPTY_SPLIT \
+      ( \
+      0, \
+      VMD_DETAIL_IS_EMPTY_CAT \
+        ( \
+        VMD_DETAIL_IS_EMPTY_IS_VARIADIC_R_, \
+        VMD_DETAIL_IS_EMPTY_IS_VARIADIC_C __VA_ARGS__ \
+        ) \
+      ) \
+/**/
+
+#define BOOST_VMD_IS_EMPTY(...) \
+    VMD_DETAIL_IS_EMPTY_IIF \
+      ( \
+      BOOST_VMD_IS_TUPLE_BEGIN \
+        ( \
+        __VA_ARGS__ \
+        ) \
+      ) \
+      ( \
+      0, \
+      BOOST_VMD_IS_TUPLE_BEGIN \
+        ( \
+        VMD_DETAIL_IS_EMPTY_NON_FUNCTION_C __VA_ARGS__ () \
+        ) \
+      ) \
+/**/
+
+#endif /* BOOST_VMD_MSVC */
+
+#endif /* BOOST_VMD_VARIADICS */
+
+#endif /* VMD_MAIN_COMMON_HPP */
Added: sandbox/variadic_macro_data/boost/variadic_macro_data/vmd_main_native.hpp
==============================================================================
--- (empty file)
+++ sandbox/variadic_macro_data/boost/variadic_macro_data/vmd_main_native.hpp	2011-08-03 11:26:09 EDT (Wed, 03 Aug 2011)
@@ -0,0 +1,376 @@
+#if !defined(VMD_MAIN_NATIVE_HPP)
+#define VMD_MAIN_NATIVE_HPP
+
+#include "detail/vmd_detail_setup.hpp"
+
+#if BOOST_VMD_VARIADICS
+
+#include <boost/preprocessor/arithmetic/dec.hpp>
+#include <boost/preprocessor/array/data.hpp>
+#include <boost/preprocessor/list/to_tuple.hpp>
+#include <boost/preprocessor/seq/to_tuple.hpp>
+
+#include "detail/vmd_detail_main.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 BOOST_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 BOOST_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 BOOST_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 BOOST_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 BOOST_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 BOOST_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 BOOST_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 BOOST_VMD_PP_TUPLE_ELEM(n,tuple) \
+  VMD_DETAIL_PP_TUPLE_ELEM(BOOST_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 BOOST_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 BOOST_VMD_PP_TUPLE_REM_CTOR(tuple) \
+  VMD_DETAIL_PP_TUPLE_REM_CTOR(BOOST_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 BOOST_VMD_PP_TUPLE_REVERSE(tuple) \
+  VMD_DETAIL_PP_TUPLE_REVERSE(BOOST_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 BOOST_VMD_PP_TUPLE_TO_LIST(tuple) \
+  VMD_DETAIL_PP_TUPLE_TO_LIST(BOOST_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 BOOST_VMD_PP_TUPLE_TO_SEQ(tuple) \
+  VMD_DETAIL_PP_TUPLE_TO_SEQ(BOOST_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 BOOST_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 BOOST_VMD_PP_ARRAY_TO_DATA(array) \
+  BOOST_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 BOOST_VMD_PP_LIST_TO_DATA(list) \
+  BOOST_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 BOOST_VMD_PP_SEQ_TO_DATA(seq) \
+  BOOST_VMD_PP_TUPLE_TO_DATA(BOOST_PP_SEQ_TO_TUPLE(seq)) \
+/**/
+
+#if BOOST_VMD_MSVC
+
+/// Tests whether its parameter begins with a tuple.
+/**
+
+    param = a macro parameter.
+
+    returns = 1 if the param begins with a tuple, else 0 if it does not.
+              If the param begins with a tuple, it may contain other 
+              tokens after it.
+              
+    There is no completely safe way to test whether the param is a tuple.
+    At best one can use BOOST_VMD_ASSERT_IS_TUPLE to cause a compiler error 
+    if the parameter is not a tuple.
+    
+*/
+#define BOOST_VMD_IS_TUPLE_BEGIN(param) \
+    BOOST_PP_DEC \
+      ( \
+      BOOST_VMD_DATA_SIZE \
+        ( \
+        VMD_DETAIL_IS_TUPLE_BEGIN_EXPAND param \
+        ) \
+      ) \
+/**/
+
+#define BOOST_VMD_IS_EMPTY(param) \
+    VMD_DETAIL_IS_EMPTY_IIF \
+      ( \
+      BOOST_PP_DEC \
+        ( \
+        BOOST_VMD_DATA_SIZE \
+          ( \
+          VMD_DETAIL_IS_TUPLE_BEGIN_EXPAND param \
+          ) \
+        ) \
+      ) \
+      ( \
+      VMD_DETAIL_IS_EMPTY_GEN_ZERO, \
+      BOOST_VMD_IS_TUPLE_BEGIN \
+      ) \
+    (VMD_DETAIL_IS_EMPTY_NON_FUNCTION_C param ()) \
+/**/
+
+#endif /* BOOST_VMD_MSVC */
+#endif /* BOOST_VMD_VARIADICS */
+#endif /* VMD_MAIN_NATIVE_HPP */
Added: sandbox/variadic_macro_data/boost/variadic_macro_data/vmd_main_pplib.hpp
==============================================================================
--- (empty file)
+++ sandbox/variadic_macro_data/boost/variadic_macro_data/vmd_main_pplib.hpp	2011-08-03 11:26:09 EDT (Wed, 03 Aug 2011)
@@ -0,0 +1,390 @@
+#if !defined(VMD_MAIN_PPLIB_HPP)
+#define VMD_MAIN_PPLIB_HPP
+
+#include "detail/vmd_detail_setup.hpp"
+
+#if BOOST_VMD_VARIADICS
+
+#include <boost/preprocessor/arithmetic/dec.hpp>
+#include <boost/preprocessor/array/enum.hpp>
+#include <boost/preprocessor/list/enum.hpp>
+#include <boost/preprocessor/seq/enum.hpp>
+#include <boost/preprocessor/tuple/elem.hpp>
+#include <boost/preprocessor/tuple/enum.hpp>
+#include <boost/preprocessor/tuple/rem.hpp>
+#include <boost/preprocessor/tuple/reverse.hpp>
+#include <boost/preprocessor/tuple/size.hpp>
+#include <boost/preprocessor/tuple/to_list.hpp>
+#include <boost/preprocessor/tuple/to_seq.hpp>
+#include <boost/preprocessor/variadic/elem.hpp>
+#include <boost/preprocessor/variadic/size.hpp>
+#include <boost/preprocessor/variadic/to_array.hpp>
+#include <boost/preprocessor/variadic/to_list.hpp>
+#include <boost/preprocessor/variadic/to_seq.hpp>
+#include <boost/preprocessor/variadic/to_tuple.hpp>
+
+#include "detail/vmd_detail_main.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 BOOST_VMD_DATA_SIZE(...) \
+  BOOST_PP_VARIADIC_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 BOOST_VMD_DATA_ELEM(n,...) \
+  BOOST_PP_VARIADIC_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 BOOST_VMD_DATA_TO_PP_TUPLE(...) \
+  BOOST_PP_VARIADIC_TO_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 BOOST_VMD_DATA_TO_PP_ARRAY(...) \
+  BOOST_PP_VARIADIC_TO_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 BOOST_VMD_DATA_TO_PP_LIST(...) \
+  BOOST_PP_VARIADIC_TO_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 BOOST_VMD_DATA_TO_PP_SEQ(...) \
+  BOOST_PP_VARIADIC_TO_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 BOOST_VMD_PP_TUPLE_SIZE(tuple) \
+  BOOST_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 BOOST_VMD_PP_TUPLE_ELEM(n,tuple) \
+  BOOST_PP_TUPLE_ELEM(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 BOOST_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 BOOST_VMD_PP_TUPLE_REM_CTOR(tuple) \
+  BOOST_PP_TUPLE_REM_CTOR(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 BOOST_VMD_PP_TUPLE_REVERSE(tuple) \
+  BOOST_PP_TUPLE_REVERSE(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 BOOST_VMD_PP_TUPLE_TO_LIST(tuple) \
+  BOOST_PP_TUPLE_TO_LIST(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 BOOST_VMD_PP_TUPLE_TO_SEQ(tuple) \
+  BOOST_PP_TUPLE_TO_SEQ(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 BOOST_VMD_PP_TUPLE_TO_DATA(tuple) \
+  BOOST_PP_TUPLE_ENUM(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 BOOST_VMD_PP_ARRAY_TO_DATA(array) \
+  BOOST_PP_ARRAY_ENUM(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 BOOST_VMD_PP_LIST_TO_DATA(list) \
+  BOOST_PP_LIST_ENUM(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 BOOST_VMD_PP_SEQ_TO_DATA(seq) \
+  BOOST_PP_SEQ_ENUM(seq) \
+/**/
+
+#if BOOST_VMD_MSVC
+
+/// Tests whether its parameter begins with a tuple.
+/**
+
+    param = a macro parameter.
+
+    returns = 1 if the param begins with a tuple, else 0 if it does not.
+              If the param begins with a tuple, it may contain other 
+              tokens after it.
+              
+    There is no completely safe way to test whether the param is a tuple.
+    At best one can use BOOST_VMD_ASSERT_IS_TUPLE to cause a compiler error 
+    if the parameter is not a tuple.
+              
+    
+*/
+#define BOOST_VMD_IS_TUPLE_BEGIN(param) \
+    BOOST_PP_DEC \
+      ( \
+      BOOST_PP_VARIADIC_SIZE \
+        ( \
+        VMD_DETAIL_IS_TUPLE_BEGIN_EXPAND param \
+        ) \
+      ) \
+/**/
+
+#define BOOST_VMD_IS_EMPTY(param) \
+    VMD_DETAIL_IS_EMPTY_IIF \
+      ( \
+      BOOST_PP_DEC \
+        ( \
+        BOOST_PP_VARIADIC_SIZE \
+          ( \
+          VMD_DETAIL_IS_TUPLE_BEGIN_EXPAND param \
+          ) \
+        ) \
+      ) \
+      ( \
+      VMD_DETAIL_IS_EMPTY_GEN_ZERO, \
+      VMD_DETAIL_IS_EMPTY_TUPLE_BEGIN \
+      ) \
+    (VMD_DETAIL_IS_EMPTY_NON_FUNCTION_C param ()) \
+/**/
+
+#endif /* BOOST_VMD_MSVC */
+#endif /* BOOST_VMD_VARIADICS */
+#endif /* VMD_MAIN_PPLIB_HPP */
Modified: sandbox/variadic_macro_data/boost/variadic_macro_data/vmd_native.hpp
==============================================================================
--- sandbox/variadic_macro_data/boost/variadic_macro_data/vmd_native.hpp	(original)
+++ sandbox/variadic_macro_data/boost/variadic_macro_data/vmd_native.hpp	2011-08-03 11:26:09 EDT (Wed, 03 Aug 2011)
@@ -5,372 +5,8 @@
 
 #if BOOST_VMD_VARIADICS
 
-#include <boost/preprocessor/arithmetic/dec.hpp>
-#include <boost/preprocessor/array/data.hpp>
-#include <boost/preprocessor/list/to_tuple.hpp>
-#include <boost/preprocessor/seq/to_tuple.hpp>
-#include "detail/vmd_detail.hpp"
+#include "vmd_main_native.hpp"
 
-/*
+#endif /* BOOST_VMD_VARIADICS */
 
-  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 BOOST_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 BOOST_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 BOOST_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 BOOST_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 BOOST_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 BOOST_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 BOOST_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 BOOST_VMD_PP_TUPLE_ELEM(n,tuple) \
-  VMD_DETAIL_PP_TUPLE_ELEM(BOOST_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 BOOST_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 BOOST_VMD_PP_TUPLE_REM_CTOR(tuple) \
-  VMD_DETAIL_PP_TUPLE_REM_CTOR(BOOST_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 BOOST_VMD_PP_TUPLE_REVERSE(tuple) \
-  VMD_DETAIL_PP_TUPLE_REVERSE(BOOST_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 BOOST_VMD_PP_TUPLE_TO_LIST(tuple) \
-  VMD_DETAIL_PP_TUPLE_TO_LIST(BOOST_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 BOOST_VMD_PP_TUPLE_TO_SEQ(tuple) \
-  VMD_DETAIL_PP_TUPLE_TO_SEQ(BOOST_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 BOOST_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 BOOST_VMD_PP_ARRAY_TO_DATA(array) \
-  BOOST_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 BOOST_VMD_PP_LIST_TO_DATA(list) \
-  BOOST_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 BOOST_VMD_PP_SEQ_TO_DATA(seq) \
-  BOOST_VMD_PP_TUPLE_TO_DATA(BOOST_PP_SEQ_TO_TUPLE(seq)) \
-/**/
-
-#if BOOST_VMD_MSVC
-
-/// Tests whether its parameter begins with a tuple.
-/**
-
-    param = a macro parameter.
-
-    returns = 1 if the param begins with a tuple, else 0 if it does not.
-              If the param begins with a tuple, it may contain other 
-              tokens after it.
-              
-    There is no completely safe way to test whether the param is a tuple.
-    At best one can use BOOST_VMD_ASSERT_IS_TUPLE to cause a compiler error 
-    if the parameter is not a tuple.
-    
-*/
-#define BOOST_VMD_IS_TUPLE_BEGIN(param) \
-    BOOST_PP_DEC \
-      ( \
-      BOOST_VMD_DATA_SIZE \
-        ( \
-        VMD_DETAIL_IS_TUPLE_BEGIN_EXPAND param \
-        ) \
-      ) \
-/**/
-
-#define BOOST_VMD_IS_EMPTY(param) \
-    VMD_DETAIL_IS_EMPTY_IIF \
-      ( \
-      BOOST_PP_DEC \
-        ( \
-        BOOST_VMD_DATA_SIZE \
-          ( \
-          VMD_DETAIL_IS_TUPLE_BEGIN_EXPAND param \
-          ) \
-        ) \
-      ) \
-      ( \
-      VMD_DETAIL_IS_EMPTY_GEN_ZERO, \
-      BOOST_VMD_IS_TUPLE_BEGIN \
-      ) \
-    (VMD_DETAIL_IS_EMPTY_NON_FUNCTION_C param ()) \
-/**/
-
-#endif /* BOOST_VMD_MSVC */
-
-#endif // BOOST_VMD_VARIADICS
-#endif // VMD_NATIVE_HPP
+#endif /* VMD_NATIVE_HPP */
Modified: sandbox/variadic_macro_data/boost/variadic_macro_data/vmd_pplib.hpp
==============================================================================
--- sandbox/variadic_macro_data/boost/variadic_macro_data/vmd_pplib.hpp	(original)
+++ sandbox/variadic_macro_data/boost/variadic_macro_data/vmd_pplib.hpp	2011-08-03 11:26:09 EDT (Wed, 03 Aug 2011)
@@ -5,387 +5,8 @@
 
 #if BOOST_VMD_VARIADICS
 
-#include <boost/preprocessor/arithmetic/dec.hpp>
-#include <boost/preprocessor/array/enum.hpp>
-#include <boost/preprocessor/list/enum.hpp>
-#include <boost/preprocessor/seq/enum.hpp>
-#include <boost/preprocessor/tuple/elem.hpp>
-#include <boost/preprocessor/tuple/enum.hpp>
-#include <boost/preprocessor/tuple/rem.hpp>
-#include <boost/preprocessor/tuple/reverse.hpp>
-#include <boost/preprocessor/tuple/size.hpp>
-#include <boost/preprocessor/tuple/to_list.hpp>
-#include <boost/preprocessor/tuple/to_seq.hpp>
-#include <boost/preprocessor/variadic/elem.hpp>
-#include <boost/preprocessor/variadic/size.hpp>
-#include <boost/preprocessor/variadic/to_array.hpp>
-#include <boost/preprocessor/variadic/to_list.hpp>
-#include <boost/preprocessor/variadic/to_seq.hpp>
-#include <boost/preprocessor/variadic/to_tuple.hpp>
+#include "vmd_main_pplib.hpp"
 
-#include "detail/vmd_detail.hpp"
+#endif /* BOOST_VMD_VARIADICS */
 
-/*
-
-  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 BOOST_VMD_DATA_SIZE(...) \
-  BOOST_PP_VARIADIC_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 BOOST_VMD_DATA_ELEM(n,...) \
-  BOOST_PP_VARIADIC_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 BOOST_VMD_DATA_TO_PP_TUPLE(...) \
-  BOOST_PP_VARIADIC_TO_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 BOOST_VMD_DATA_TO_PP_ARRAY(...) \
-  BOOST_PP_VARIADIC_TO_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 BOOST_VMD_DATA_TO_PP_LIST(...) \
-  BOOST_PP_VARIADIC_TO_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 BOOST_VMD_DATA_TO_PP_SEQ(...) \
-  BOOST_PP_VARIADIC_TO_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 BOOST_VMD_PP_TUPLE_SIZE(tuple) \
-  BOOST_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 BOOST_VMD_PP_TUPLE_ELEM(n,tuple) \
-  BOOST_PP_TUPLE_ELEM(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 BOOST_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 BOOST_VMD_PP_TUPLE_REM_CTOR(tuple) \
-  BOOST_PP_TUPLE_REM_CTOR(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 BOOST_VMD_PP_TUPLE_REVERSE(tuple) \
-  BOOST_PP_TUPLE_REVERSE(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 BOOST_VMD_PP_TUPLE_TO_LIST(tuple) \
-  BOOST_PP_TUPLE_TO_LIST(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 BOOST_VMD_PP_TUPLE_TO_SEQ(tuple) \
-  BOOST_PP_TUPLE_TO_SEQ(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 BOOST_VMD_PP_TUPLE_TO_DATA(tuple) \
-  BOOST_PP_TUPLE_ENUM(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 BOOST_VMD_PP_ARRAY_TO_DATA(array) \
-  BOOST_PP_ARRAY_ENUM(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 BOOST_VMD_PP_LIST_TO_DATA(list) \
-  BOOST_PP_LIST_ENUM(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 BOOST_VMD_PP_SEQ_TO_DATA(seq) \
-  BOOST_PP_SEQ_ENUM(seq) \
-/**/
-
-#if BOOST_VMD_MSVC
-
-/// Tests whether its parameter begins with a tuple.
-/**
-
-    param = a macro parameter.
-
-    returns = 1 if the param begins with a tuple, else 0 if it does not.
-              If the param begins with a tuple, it may contain other 
-              tokens after it.
-              
-    There is no completely safe way to test whether the param is a tuple.
-    At best one can use BOOST_VMD_ASSERT_IS_TUPLE to cause a compiler error 
-    if the parameter is not a tuple.
-              
-    
-*/
-#define BOOST_VMD_IS_TUPLE_BEGIN(param) \
-    BOOST_PP_DEC \
-      ( \
-      BOOST_PP_VARIADIC_SIZE \
-        ( \
-        VMD_DETAIL_IS_TUPLE_BEGIN_EXPAND param \
-        ) \
-      ) \
-/**/
-
-#define BOOST_VMD_IS_EMPTY(param) \
-    VMD_DETAIL_IS_EMPTY_IIF \
-      ( \
-      BOOST_PP_DEC \
-        ( \
-        BOOST_PP_VARIADIC_SIZE \
-          ( \
-          VMD_DETAIL_IS_TUPLE_BEGIN_EXPAND param \
-          ) \
-        ) \
-      ) \
-      ( \
-      VMD_DETAIL_IS_EMPTY_GEN_ZERO, \
-      VMD_DETAIL_IS_EMPTY_TUPLE_BEGIN \
-      ) \
-    (VMD_DETAIL_IS_EMPTY_NON_FUNCTION_C param ()) \
-/**/
-
-#endif /* BOOST_VMD_MSVC */
-
-#endif // BOOST_VMD_VARIADICS
-#endif // VMD_PPLIB_HPP
+#endif /* VMD_PPLIB_HPP */
Modified: sandbox/variadic_macro_data/libs/variadic_macro_data/doc/index.idx
==============================================================================
--- sandbox/variadic_macro_data/libs/variadic_macro_data/doc/index.idx	(original)
+++ sandbox/variadic_macro_data/libs/variadic_macro_data/doc/index.idx	2011-08-03 11:26:09 EDT (Wed, 03 Aug 2011)
@@ -1,2 +1,2 @@
-!scan boost/variadic_macro_data/vmd_native.hpp
-!scan boost/variadic_macro_data/vmd_common.hpp
+!scan boost/variadic_macro_data/vmd_main_native.hpp
+!scan boost/variadic_macro_data/vmd_main_common.hpp
Modified: sandbox/variadic_macro_data/libs/variadic_macro_data/doc/jamfile.v2
==============================================================================
--- sandbox/variadic_macro_data/libs/variadic_macro_data/doc/jamfile.v2	(original)
+++ sandbox/variadic_macro_data/libs/variadic_macro_data/doc/jamfile.v2	2011-08-03 11:26:09 EDT (Wed, 03 Aug 2011)
@@ -35,8 +35,8 @@
 
 doxygen vmd_reference
   :
-    $(here)/../../../boost/variadic_macro_data/vmd_native.hpp
-    $(here)/../../../boost/variadic_macro_data/vmd_common.hpp
+    $(here)/../../../boost/variadic_macro_data/vmd_main_native.hpp
+    $(here)/../../../boost/variadic_macro_data/vmd_main_common.hpp
   : 
     <doxygen:param>PROJECT_NAME="VMD"
     <doxygen:param>PROJECT_NUMBER=1