Boost logo

Boost-Commit :

Subject: [Boost-commit] svn:boost r68948 - in sandbox/local/libs/local/params_name/boost: . detail detail/preprocessor detail/preprocessor/keyword detail/preprocessor/keyword/utility local local/aux_ local/aux_/function local/aux_/function/code_ local/aux_/preprocessor local/aux_/preprocessor/keyword local/aux_/preprocessor/sign local/aux_/preprocessor/sign/parse_params_ local/aux_/preprocessor/sign/parse_params_/seq_validate_ local/aux_/preprocessor/sign/parsed_params_ local/aux_/preprocessor/sign/parsed_params_/validate_ local/aux_/preprocessor/va local/aux_/scope_exit local/aux_/scope_exit/typeof local/aux_/scope_exit/typeof/msvc local/aux_/type_traits utility utility/aux_
From: lorcaminiti_at_[hidden]
Date: 2011-02-16 11:13:45


Author: lcaminiti
Date: 2011-02-16 11:13:35 EST (Wed, 16 Feb 2011)
New Revision: 68948
URL: http://svn.boost.org/trac/boost/changeset/68948

Log:
Moved all files under param_name working dir.
Added:
   sandbox/local/libs/local/params_name/boost/
   sandbox/local/libs/local/params_name/boost/detail/
   sandbox/local/libs/local/params_name/boost/detail/preprocessor/
   sandbox/local/libs/local/params_name/boost/detail/preprocessor/keyword/
   sandbox/local/libs/local/params_name/boost/detail/preprocessor/keyword/auto.hpp (contents, props changed)
   sandbox/local/libs/local/params_name/boost/detail/preprocessor/keyword/const.hpp (contents, props changed)
   sandbox/local/libs/local/params_name/boost/detail/preprocessor/keyword/default.hpp (contents, props changed)
   sandbox/local/libs/local/params_name/boost/detail/preprocessor/keyword/register.hpp (contents, props changed)
   sandbox/local/libs/local/params_name/boost/detail/preprocessor/keyword/this.hpp (contents, props changed)
   sandbox/local/libs/local/params_name/boost/detail/preprocessor/keyword/utility/
   sandbox/local/libs/local/params_name/boost/detail/preprocessor/keyword/utility/add.hpp (contents, props changed)
   sandbox/local/libs/local/params_name/boost/detail/preprocessor/keyword/utility/is.hpp (contents, props changed)
   sandbox/local/libs/local/params_name/boost/detail/preprocessor/keyword/utility/remove.hpp (contents, props changed)
   sandbox/local/libs/local/params_name/boost/detail/preprocessor/keyword/void.hpp (contents, props changed)
   sandbox/local/libs/local/params_name/boost/detail/preprocessor/nilseq.hpp (contents, props changed)
   sandbox/local/libs/local/params_name/boost/local/
   sandbox/local/libs/local/params_name/boost/local/aux_/
   sandbox/local/libs/local/params_name/boost/local/aux_/function/
   sandbox/local/libs/local/params_name/boost/local/aux_/function/code_/
   sandbox/local/libs/local/params_name/boost/local/aux_/function/code_/binding.hpp (contents, props changed)
   sandbox/local/libs/local/params_name/boost/local/aux_/function/code_/functor.hpp (contents, props changed)
   sandbox/local/libs/local/params_name/boost/local/aux_/function/code_/param.hpp (contents, props changed)
   sandbox/local/libs/local/params_name/boost/local/aux_/function/params.hpp (contents, props changed)
   sandbox/local/libs/local/params_name/boost/local/aux_/preprocessor/
   sandbox/local/libs/local/params_name/boost/local/aux_/preprocessor/keyword/
   sandbox/local/libs/local/params_name/boost/local/aux_/preprocessor/keyword/bind.hpp (contents, props changed)
   sandbox/local/libs/local/params_name/boost/local/aux_/preprocessor/keyword/const_bind.hpp (contents, props changed)
   sandbox/local/libs/local/params_name/boost/local/aux_/preprocessor/sign/
   sandbox/local/libs/local/params_name/boost/local/aux_/preprocessor/sign/params_any_bind.hpp (contents, props changed)
   sandbox/local/libs/local/params_name/boost/local/aux_/preprocessor/sign/params_bind.hpp (contents, props changed)
   sandbox/local/libs/local/params_name/boost/local/aux_/preprocessor/sign/params_const_bind.hpp (contents, props changed)
   sandbox/local/libs/local/params_name/boost/local/aux_/preprocessor/sign/params_error.hpp (contents, props changed)
   sandbox/local/libs/local/params_name/boost/local/aux_/preprocessor/sign/params_unbind.hpp (contents, props changed)
   sandbox/local/libs/local/params_name/boost/local/aux_/preprocessor/sign/parse_params.hpp (contents, props changed)
   sandbox/local/libs/local/params_name/boost/local/aux_/preprocessor/sign/parse_params_/
   sandbox/local/libs/local/params_name/boost/local/aux_/preprocessor/sign/parse_params_/is_void.hpp (contents, props changed)
   sandbox/local/libs/local/params_name/boost/local/aux_/preprocessor/sign/parse_params_/seq.hpp (contents, props changed)
   sandbox/local/libs/local/params_name/boost/local/aux_/preprocessor/sign/parse_params_/seq_valid.hpp (contents, props changed)
   sandbox/local/libs/local/params_name/boost/local/aux_/preprocessor/sign/parse_params_/seq_validate.hpp (contents, props changed)
   sandbox/local/libs/local/params_name/boost/local/aux_/preprocessor/sign/parse_params_/seq_validate_/
   sandbox/local/libs/local/params_name/boost/local/aux_/preprocessor/sign/parse_params_/seq_validate_/defaults.hpp (contents, props changed)
   sandbox/local/libs/local/params_name/boost/local/aux_/preprocessor/sign/parsed_params_/
   sandbox/local/libs/local/params_name/boost/local/aux_/preprocessor/sign/parsed_params_/append_bind.hpp (contents, props changed)
   sandbox/local/libs/local/params_name/boost/local/aux_/preprocessor/sign/parsed_params_/append_const_bind.hpp (contents, props changed)
   sandbox/local/libs/local/params_name/boost/local/aux_/preprocessor/sign/parsed_params_/append_unbind.hpp (contents, props changed)
   sandbox/local/libs/local/params_name/boost/local/aux_/preprocessor/sign/parsed_params_/append_unbind_default.hpp (contents, props changed)
   sandbox/local/libs/local/params_name/boost/local/aux_/preprocessor/sign/parsed_params_/inc_bind_this_count.hpp (contents, props changed)
   sandbox/local/libs/local/params_name/boost/local/aux_/preprocessor/sign/parsed_params_/inc_const_bind_this_count.hpp (contents, props changed)
   sandbox/local/libs/local/params_name/boost/local/aux_/preprocessor/sign/parsed_params_/index.hpp (contents, props changed)
   sandbox/local/libs/local/params_name/boost/local/aux_/preprocessor/sign/parsed_params_/nil.hpp (contents, props changed)
   sandbox/local/libs/local/params_name/boost/local/aux_/preprocessor/sign/parsed_params_/set_error.hpp (contents, props changed)
   sandbox/local/libs/local/params_name/boost/local/aux_/preprocessor/sign/parsed_params_/validate.hpp (contents, props changed)
   sandbox/local/libs/local/params_name/boost/local/aux_/preprocessor/sign/parsed_params_/validate_/
   sandbox/local/libs/local/params_name/boost/local/aux_/preprocessor/sign/parsed_params_/validate_/this_count.hpp (contents, props changed)
   sandbox/local/libs/local/params_name/boost/local/aux_/preprocessor/va/
   sandbox/local/libs/local/params_name/boost/local/aux_/preprocessor/va/to_seq.hpp (contents, props changed)
   sandbox/local/libs/local/params_name/boost/local/aux_/scope_exit/
   sandbox/local/libs/local/params_name/boost/local/aux_/scope_exit/scope_exit.hpp (contents, props changed)
   sandbox/local/libs/local/params_name/boost/local/aux_/scope_exit/typeof/
   sandbox/local/libs/local/params_name/boost/local/aux_/scope_exit/typeof/msvc/
   sandbox/local/libs/local/params_name/boost/local/aux_/scope_exit/typeof/msvc/typeof_impl.hpp (contents, props changed)
   sandbox/local/libs/local/params_name/boost/local/aux_/scope_exit/typeof/typeof.hpp (contents, props changed)
   sandbox/local/libs/local/params_name/boost/local/aux_/symbol.hpp (contents, props changed)
   sandbox/local/libs/local/params_name/boost/local/aux_/type_traits/
   sandbox/local/libs/local/params_name/boost/local/aux_/type_traits/add_pointed_const.hpp (contents, props changed)
   sandbox/local/libs/local/params_name/boost/local/config.hpp (contents, props changed)
   sandbox/local/libs/local/params_name/boost/local/function.hpp (contents, props changed)
   sandbox/local/libs/local/params_name/boost/utility/
   sandbox/local/libs/local/params_name/boost/utility/aux_/
   sandbox/local/libs/local/params_name/boost/utility/aux_/identity.hpp (contents, props changed)
   sandbox/local/libs/local/params_name/boost/utility/identity.hpp (contents, props changed)

Added: sandbox/local/libs/local/params_name/boost/detail/preprocessor/keyword/auto.hpp
==============================================================================
--- (empty file)
+++ sandbox/local/libs/local/params_name/boost/detail/preprocessor/keyword/auto.hpp 2011-02-16 11:13:35 EST (Wed, 16 Feb 2011)
@@ -0,0 +1,56 @@
+
+// Copyright (C) 2009-2011 Lorenzo Caminiti
+// Use, modification, and distribution is subject to the
+// Boost Software License, Version 1.0
+// (see accompanying file LICENSE_1_0.txt or a copy at
+// http://www.boost.org/LICENSE_1_0.txt).
+
+#ifndef BOOST_DETAIL_PP_KEYWORD_AUTO_HPP_
+#define BOOST_DETAIL_PP_KEYWORD_AUTO_HPP_
+
+#include "utility/is.hpp"
+#include "utility/add.hpp"
+#include "utility/remove.hpp"
+
+// These are not local macros -- DO NOT #UNDEF.
+#define BOOST_DETAIL_PP_KEYWORD_AUTO_IS_auto (1) /* unary */
+#define auto_BOOST_DETAIL_PP_KEYWORD_AUTO_IS (1) /* unary */
+#define BOOST_DETAIL_PP_KEYWORD_AUTO_REMOVE_auto /* nothing */
+#define auto_BOOST_DETAIL_PP_KEYWORD_AUTO_REMOVE /* nothing */
+
+// Is.
+
+#define BOOST_DETAIL_PP_KEYWORD_IS_AUTO_FRONT(tokens) \
+ BOOST_DETAIL_PP_KEYWORD_UTILITY_IS_FRONT(tokens, \
+ BOOST_DETAIL_PP_KEYWORD_AUTO_IS_)
+
+#define BOOST_DETAIL_PP_KEYWORD_IS_AUTO_BACK(token) \
+ BOOST_DETAIL_PP_KEYWORD_UTILITY_IS_BACK(token, \
+ _BOOST_DETAIL_PP_KEYWORD_AUTO_IS)
+
+// Rremove.
+
+#define BOOST_DETAIL_PP_KEYWORD_AUTO_REMOVE_FRONT(tokens) \
+ BOOST_DETAIL_PP_KEYWORD_UTILITY_REMOVE_FRONT(tokens, \
+ BOOST_DETAIL_PP_KEYWORD_IS_AUTO_FRONT, \
+ BOOST_DETAIL_PP_KEYWORD_AUTO_REMOVE_)
+
+#define BOOST_DETAIL_PP_KEYWORD_AUTO_REMOVE_BACK(tokens) \
+ BOOST_DETAIL_PP_KEYWORD_UTILITY_REMOVE_BACK(tokens, \
+ BOOST_DETAIL_PP_KEYWORD_IS_AUTO_BACK, \
+ _BOOST_DETAIL_PP_KEYWORD_AUTO_REMOVE)
+
+// Add.
+
+#define BOOST_DETAIL_PP_KEYWORD_AUTO_ADD_FRONT(tokens) \
+ BOOST_DETAIL_PP_KEYWORD_UTILITY_ADD_FRONT(tokens, \
+ BOOST_DETAIL_PP_KEYWORD_IS_AUTO_FRONT, \
+ auto)
+
+#define BOOST_DETAIL_PP_KEYWORD_AUTO_ADD_BACK(tokens) \
+ BOOST_DETAIL_PP_KEYWORD_UTILITY_ADD_BACK(tokens, \
+ BOOST_DETAIL_PP_KEYWORD_IS_AUTO_BACK, \
+ auto)
+
+#endif // #include guard
+

Added: sandbox/local/libs/local/params_name/boost/detail/preprocessor/keyword/const.hpp
==============================================================================
--- (empty file)
+++ sandbox/local/libs/local/params_name/boost/detail/preprocessor/keyword/const.hpp 2011-02-16 11:13:35 EST (Wed, 16 Feb 2011)
@@ -0,0 +1,56 @@
+
+// Copyright (C) 2009-2011 Lorenzo Caminiti
+// Use, modification, and distribution is subject to the
+// Boost Software License, Version 1.0
+// (see accompanying file LICENSE_1_0.txt or a copy at
+// http://www.boost.org/LICENSE_1_0.txt).
+
+#ifndef BOOST_DETAIL_PP_KEYWORD_CONST_HPP_
+#define BOOST_DETAIL_PP_KEYWORD_CONST_HPP_
+
+#include "utility/is.hpp"
+#include "utility/add.hpp"
+#include "utility/remove.hpp"
+
+// These are not local macros -- DO NOT #UNDEF.
+#define BOOST_DETAIL_PP_KEYWORD_CONST_IS_const (1) /* unary */
+#define const_BOOST_DETAIL_PP_KEYWORD_CONST_IS (1) /* unary */
+#define BOOST_DETAIL_PP_KEYWORD_CONST_REMOVE_const /* nothing */
+#define const_BOOST_DETAIL_PP_KEYWORD_CONST_REMOVE /* nothing */
+
+// Is.
+
+#define BOOST_DETAIL_PP_KEYWORD_IS_CONST_FRONT(tokens) \
+ BOOST_DETAIL_PP_KEYWORD_UTILITY_IS_FRONT(tokens, \
+ BOOST_DETAIL_PP_KEYWORD_CONST_IS_)
+
+#define BOOST_DETAIL_PP_KEYWORD_IS_CONST_BACK(token) \
+ BOOST_DETAIL_PP_KEYWORD_UTILITY_IS_BACK(token, \
+ _BOOST_DETAIL_PP_KEYWORD_CONST_IS)
+
+// Rremove.
+
+#define BOOST_DETAIL_PP_KEYWORD_CONST_REMOVE_FRONT(tokens) \
+ BOOST_DETAIL_PP_KEYWORD_UTILITY_REMOVE_FRONT(tokens, \
+ BOOST_DETAIL_PP_KEYWORD_IS_CONST_FRONT, \
+ BOOST_DETAIL_PP_KEYWORD_CONST_REMOVE_)
+
+#define BOOST_DETAIL_PP_KEYWORD_CONST_REMOVE_BACK(tokens) \
+ BOOST_DETAIL_PP_KEYWORD_UTILITY_REMOVE_BACK(tokens, \
+ BOOST_DETAIL_PP_KEYWORD_IS_CONST_BACK, \
+ _BOOST_DETAIL_PP_KEYWORD_CONST_REMOVE)
+
+// Add.
+
+#define BOOST_DETAIL_PP_KEYWORD_CONST_ADD_FRONT(tokens) \
+ BOOST_DETAIL_PP_KEYWORD_UTILITY_ADD_FRONT(tokens, \
+ BOOST_DETAIL_PP_KEYWORD_IS_CONST_FRONT, \
+ const)
+
+#define BOOST_DETAIL_PP_KEYWORD_CONST_ADD_BACK(tokens) \
+ BOOST_DETAIL_PP_KEYWORD_UTILITY_ADD_BACK(tokens, \
+ BOOST_DETAIL_PP_KEYWORD_IS_CONST_BACK, \
+ const)
+
+#endif // #include guard
+

Added: sandbox/local/libs/local/params_name/boost/detail/preprocessor/keyword/default.hpp
==============================================================================
--- (empty file)
+++ sandbox/local/libs/local/params_name/boost/detail/preprocessor/keyword/default.hpp 2011-02-16 11:13:35 EST (Wed, 16 Feb 2011)
@@ -0,0 +1,56 @@
+
+// Copyright (C) 2009-2011 Lorenzo Caminiti
+// Use, modification, and distribution is subject to the
+// Boost Software License, Version 1.0
+// (see accompanying file LICENSE_1_0.txt or a copy at
+// http://www.boost.org/LICENSE_1_0.txt).
+
+#ifndef BOOST_DETAIL_PP_KEYWORD_DEFAULT_HPP_
+#define BOOST_DETAIL_PP_KEYWORD_DEFAULT_HPP_
+
+#include "utility/is.hpp"
+#include "utility/add.hpp"
+#include "utility/remove.hpp"
+
+// These are not local macros -- DO NOT #UNDEF.
+#define BOOST_DETAIL_PP_KEYWORD_DEFAULT_IS_default (1) /* unary */
+#define default_BOOST_DETAIL_PP_KEYWORD_DEFAULT_IS (1) /* unary */
+#define BOOST_DETAIL_PP_KEYWORD_DEFAULT_REMOVE_default /* nothing */
+#define default_BOOST_DETAIL_PP_KEYWORD_DEFAULT_REMOVE /* nothing */
+
+// Is.
+
+#define BOOST_DETAIL_PP_KEYWORD_IS_DEFAULT_FRONT(tokens) \
+ BOOST_DETAIL_PP_KEYWORD_UTILITY_IS_FRONT(tokens, \
+ BOOST_DETAIL_PP_KEYWORD_DEFAULT_IS_)
+
+#define BOOST_DETAIL_PP_KEYWORD_IS_DEFAULT_BACK(token) \
+ BOOST_DETAIL_PP_KEYWORD_UTILITY_IS_BACK(token, \
+ _BOOST_DETAIL_PP_KEYWORD_DEFAULT_IS)
+
+// Rremove.
+
+#define BOOST_DETAIL_PP_KEYWORD_DEFAULT_REMOVE_FRONT(tokens) \
+ BOOST_DETAIL_PP_KEYWORD_UTILITY_REMOVE_FRONT(tokens, \
+ BOOST_DETAIL_PP_KEYWORD_IS_DEFAULT_FRONT, \
+ BOOST_DETAIL_PP_KEYWORD_DEFAULT_REMOVE_)
+
+#define BOOST_DETAIL_PP_KEYWORD_DEFAULT_REMOVE_BACK(tokens) \
+ BOOST_DETAIL_PP_KEYWORD_UTILITY_REMOVE_BACK(tokens, \
+ BOOST_DETAIL_PP_KEYWORD_IS_DEFAULT_BACK, \
+ _BOOST_DETAIL_PP_KEYWORD_DEFAULT_REMOVE)
+
+// Add.
+
+#define BOOST_DETAIL_PP_KEYWORD_DEFAULT_ADD_FRONT(tokens) \
+ BOOST_DETAIL_PP_KEYWORD_UTILITY_ADD_FRONT(tokens, \
+ BOOST_DETAIL_PP_KEYWORD_IS_DEFAULT_FRONT, \
+ default)
+
+#define BOOST_DETAIL_PP_KEYWORD_DEFAULT_ADD_BACK(tokens) \
+ BOOST_DETAIL_PP_KEYWORD_UTILITY_ADD_BACK(tokens, \
+ BOOST_DETAIL_PP_KEYWORD_IS_DEFAULT_BACK, \
+ default)
+
+#endif // #include guard
+

Added: sandbox/local/libs/local/params_name/boost/detail/preprocessor/keyword/register.hpp
==============================================================================
--- (empty file)
+++ sandbox/local/libs/local/params_name/boost/detail/preprocessor/keyword/register.hpp 2011-02-16 11:13:35 EST (Wed, 16 Feb 2011)
@@ -0,0 +1,56 @@
+
+// Copyright (C) 2009-2011 Lorenzo Caminiti
+// Use, modification, and distribution is subject to the
+// Boost Software License, Version 1.0
+// (see accompanying file LICENSE_1_0.txt or a copy at
+// http://www.boost.org/LICENSE_1_0.txt).
+
+#ifndef BOOST_DETAIL_PP_KEYWORD_REGISTER_HPP_
+#define BOOST_DETAIL_PP_KEYWORD_REGISTER_HPP_
+
+#include "utility/is.hpp"
+#include "utility/add.hpp"
+#include "utility/remove.hpp"
+
+// These are not local macros -- DO NOT #UNDEF.
+#define BOOST_DETAIL_PP_KEYWORD_REGISTER_IS_register (1) /* unary */
+#define register_BOOST_DETAIL_PP_KEYWORD_REGISTER_IS (1) /* unary */
+#define BOOST_DETAIL_PP_KEYWORD_REGISTER_REMOVE_register /* nothing */
+#define register_BOOST_DETAIL_PP_KEYWORD_REGISTER_REMOVE /* nothing */
+
+// Is.
+
+#define BOOST_DETAIL_PP_KEYWORD_IS_REGISTER_FRONT(tokens) \
+ BOOST_DETAIL_PP_KEYWORD_UTILITY_IS_FRONT(tokens, \
+ BOOST_DETAIL_PP_KEYWORD_REGISTER_IS_)
+
+#define BOOST_DETAIL_PP_KEYWORD_IS_REGISTER_BACK(token) \
+ BOOST_DETAIL_PP_KEYWORD_UTILITY_IS_BACK(token, \
+ _BOOST_DETAIL_PP_KEYWORD_REGISTER_IS)
+
+// Rremove.
+
+#define BOOST_DETAIL_PP_KEYWORD_REGISTER_REMOVE_FRONT(tokens) \
+ BOOST_DETAIL_PP_KEYWORD_UTILITY_REMOVE_FRONT(tokens, \
+ BOOST_DETAIL_PP_KEYWORD_IS_REGISTER_FRONT, \
+ BOOST_DETAIL_PP_KEYWORD_REGISTER_REMOVE_)
+
+#define BOOST_DETAIL_PP_KEYWORD_REGISTER_REMOVE_BACK(tokens) \
+ BOOST_DETAIL_PP_KEYWORD_UTILITY_REMOVE_BACK(tokens, \
+ BOOST_DETAIL_PP_KEYWORD_IS_REGISTER_BACK, \
+ _BOOST_DETAIL_PP_KEYWORD_REGISTER_REMOVE)
+
+// Add.
+
+#define BOOST_DETAIL_PP_KEYWORD_REGISTER_ADD_FRONT(tokens) \
+ BOOST_DETAIL_PP_KEYWORD_UTILITY_ADD_FRONT(tokens, \
+ BOOST_DETAIL_PP_KEYWORD_IS_REGISTER_FRONT, \
+ register)
+
+#define BOOST_DETAIL_PP_KEYWORD_REGISTER_ADD_BACK(tokens) \
+ BOOST_DETAIL_PP_KEYWORD_UTILITY_ADD_BACK(tokens, \
+ BOOST_DETAIL_PP_KEYWORD_IS_REGISTER_BACK, \
+ register)
+
+#endif // #include guard
+

Added: sandbox/local/libs/local/params_name/boost/detail/preprocessor/keyword/this.hpp
==============================================================================
--- (empty file)
+++ sandbox/local/libs/local/params_name/boost/detail/preprocessor/keyword/this.hpp 2011-02-16 11:13:35 EST (Wed, 16 Feb 2011)
@@ -0,0 +1,56 @@
+
+// Copyright (C) 2009-2011 Lorenzo Caminiti
+// Use, modification, and distribution is subject to the
+// Boost Software License, Version 1.0
+// (see accompanying file LICENSE_1_0.txt or a copy at
+// http://www.boost.org/LICENSE_1_0.txt).
+
+#ifndef BOOST_DETAIL_PP_KEYWORD_THIS_HPP_
+#define BOOST_DETAIL_PP_KEYWORD_THIS_HPP_
+
+#include "utility/is.hpp"
+#include "utility/add.hpp"
+#include "utility/remove.hpp"
+
+// These are not local macros -- DO NOT #UNDEF.
+#define BOOST_DETAIL_PP_KEYWORD_THIS_IS_this (1) /* unary */
+#define this_BOOST_DETAIL_PP_KEYWORD_THIS_IS (1) /* unary */
+#define BOOST_DETAIL_PP_KEYWORD_THIS_REMOVE_this /* nothing */
+#define this_BOOST_DETAIL_PP_KEYWORD_THIS_REMOVE /* nothing */
+
+// Is.
+
+#define BOOST_DETAIL_PP_KEYWORD_IS_THIS_FRONT(tokens) \
+ BOOST_DETAIL_PP_KEYWORD_UTILITY_IS_FRONT(tokens, \
+ BOOST_DETAIL_PP_KEYWORD_THIS_IS_)
+
+#define BOOST_DETAIL_PP_KEYWORD_IS_THIS_BACK(token) \
+ BOOST_DETAIL_PP_KEYWORD_UTILITY_IS_BACK(token, \
+ _BOOST_DETAIL_PP_KEYWORD_THIS_IS)
+
+// Rremove.
+
+#define BOOST_DETAIL_PP_KEYWORD_THIS_REMOVE_FRONT(tokens) \
+ BOOST_DETAIL_PP_KEYWORD_UTILITY_REMOVE_FRONT(tokens, \
+ BOOST_DETAIL_PP_KEYWORD_IS_THIS_FRONT, \
+ BOOST_DETAIL_PP_KEYWORD_THIS_REMOVE_)
+
+#define BOOST_DETAIL_PP_KEYWORD_THIS_REMOVE_BACK(tokens) \
+ BOOST_DETAIL_PP_KEYWORD_UTILITY_REMOVE_BACK(tokens, \
+ BOOST_DETAIL_PP_KEYWORD_IS_THIS_BACK, \
+ _BOOST_DETAIL_PP_KEYWORD_THIS_REMOVE)
+
+// Add.
+
+#define BOOST_DETAIL_PP_KEYWORD_THIS_ADD_FRONT(tokens) \
+ BOOST_DETAIL_PP_KEYWORD_UTILITY_ADD_FRONT(tokens, \
+ BOOST_DETAIL_PP_KEYWORD_IS_THIS_FRONT, \
+ this)
+
+#define BOOST_DETAIL_PP_KEYWORD_THIS_ADD_BACK(tokens) \
+ BOOST_DETAIL_PP_KEYWORD_UTILITY_ADD_BACK(tokens, \
+ BOOST_DETAIL_PP_KEYWORD_IS_THIS_BACK, \
+ this)
+
+#endif // #include guard
+

Added: sandbox/local/libs/local/params_name/boost/detail/preprocessor/keyword/utility/add.hpp
==============================================================================
--- (empty file)
+++ sandbox/local/libs/local/params_name/boost/detail/preprocessor/keyword/utility/add.hpp 2011-02-16 11:13:35 EST (Wed, 16 Feb 2011)
@@ -0,0 +1,25 @@
+
+// Copyright (C) 2009-2011 Lorenzo Caminiti
+// Use, modification, and distribution is subject to the
+// Boost Software License, Version 1.0
+// (see accompanying file LICENSE_1_0.txt or a copy at
+// http://www.boost.org/LICENSE_1_0.txt).
+
+#ifndef BOOST_DETAIL_PP_KEYWORD_UTILITY_ADD_HPP_
+#define BOOST_DETAIL_PP_KEYWORD_UTILITY_ADD_HPP_
+
+#include <boost/preprocessor/control/expr_iif.hpp>
+#include <boost/preprocessor/logical/not.hpp>
+
+// `is_front_macro(tokens)` is 1 iff `tokens` start with `keyword` to add.
+#define BOOST_DETAIL_PP_KEYWORD_UTILITY_ADD_FRONT( \
+ tokens, is_front_macro, keyword) \
+ BOOST_PP_EXPR_IIF(BOOST_PP_NOT(is_front_macro(tokens)), keyword) tokens
+
+// `is_back_macro(tokens)` is 1 iff `tokens` end with `keyword` to add.
+#define BOOST_DETAIL_PP_KEYWORD_UTILITY_ADD_BACK(tokens, \
+ is_back_macro, keyword) \
+ tokens BOOST_PP_EXPR_IIF(BOOST_PP_NOT(is_back_macro(tokens)), keyword)
+
+#endif // #include guard
+

Added: sandbox/local/libs/local/params_name/boost/detail/preprocessor/keyword/utility/is.hpp
==============================================================================
--- (empty file)
+++ sandbox/local/libs/local/params_name/boost/detail/preprocessor/keyword/utility/is.hpp 2011-02-16 11:13:35 EST (Wed, 16 Feb 2011)
@@ -0,0 +1,33 @@
+
+// Copyright (C) 2009-2011 Lorenzo Caminiti
+// Use, modification, and distribution is subject to the
+// Boost Software License, Version 1.0
+// (see accompanying file LICENSE_1_0.txt or a copy at
+// http://www.boost.org/LICENSE_1_0.txt).
+
+#ifndef BOOST_DETAIL_PP_KEYWORD_UTILITY_IS_HPP_
+#define BOOST_DETAIL_PP_KEYWORD_UTILITY_IS_HPP_
+
+// Boost.Preprocessor author P. Mensodines confirmed on an Boost email thread
+// (subject ``check if a token is a keyword (was "BOOST_PP_IS_UNARY()")'')
+// that it is OK to used `PP_IS_UNARY()` to check if tokens match predefined
+// "keyword" as it is done by the macros below (even if `PP_IS_UNARY()` is
+// technically only part of Boost.Preprocessor private API).
+#include <boost/preprocessor/detail/is_unary.hpp>
+#include <boost/preprocessor/cat.hpp>
+
+// `chekcing_prefix ## tokens` expand to unary (e.g., `(1)`) iff `tokens` start
+// with keyword to check.
+#define BOOST_DETAIL_PP_KEYWORD_UTILITY_IS_FRONT(tokens, checking_prefix) \
+ BOOST_PP_IS_UNARY(BOOST_PP_CAT(checking_prefix, tokens))
+
+// `token ## chekcing_postfix` expand to unary (e.g., `(1)`) iff `token` is the
+// keyword to check. This check only works if `token` is a single token, it
+// will always expand to 0 if token is multiple tokens (e.g., `const *this`).
+// This check will expand to 0 with no error if `token` starts with a
+// non-alphanumeric symbol (e.g., `*this`).
+#define BOOST_DETAIL_PP_KEYWORD_UTILITY_IS_BACK(token, checking_postfix) \
+ BOOST_PP_IS_UNARY(BOOST_PP_CAT(token, checking_postfix))
+
+#endif // #include guard
+

Added: sandbox/local/libs/local/params_name/boost/detail/preprocessor/keyword/utility/remove.hpp
==============================================================================
--- (empty file)
+++ sandbox/local/libs/local/params_name/boost/detail/preprocessor/keyword/utility/remove.hpp 2011-02-16 11:13:35 EST (Wed, 16 Feb 2011)
@@ -0,0 +1,38 @@
+
+// Copyright (C) 2009-2011 Lorenzo Caminiti
+// Use, modification, and distribution is subject to the
+// Boost Software License, Version 1.0
+// (see accompanying file LICENSE_1_0.txt or a copy at
+// http://www.boost.org/LICENSE_1_0.txt).
+
+#ifndef BOOST_DETAIL_PP_KEYWORD_UTILITY_REMOVE_HPP_
+#define BOOST_DETAIL_PP_KEYWORD_UTILITY_REMOVE_HPP_
+
+#include <boost/preprocessor/control/iif.hpp>
+#include <boost/preprocessor/tuple/eat.hpp>
+#include <boost/preprocessor/cat.hpp>
+
+// `is_front_macro(tokens)` is 1 iff `tokens` start with keyword to remove.
+// `removing_prefix ## <keyword-to-remove>` must expand to nothing.
+#define BOOST_DETAIL_PP_KEYWORD_UTILITY_REMOVE_FRONT( \
+ tokens, is_front_macro, removing_prefix) \
+ BOOST_PP_EXPAND( /* without EXPAND doesn't expand on MSVC */ \
+ BOOST_PP_IIF(is_front_macro(tokens), \
+ BOOST_PP_CAT \
+ , \
+ tokens BOOST_PP_TUPLE_EAT(2) \
+ )(removing_prefix, tokens) \
+ )
+
+// `is_back_macro(tokens)` is 1 iff `tokens` end with keyword to remove.
+// `<keyword-to-remove> ## removing_postfix` must expand to nothing.
+#define BOOST_DETAIL_PP_KEYWORD_UTILITY_REMOVE_BACK( \
+ tokens, is_back_macro, removing_prefix) \
+ BOOST_PP_IIF(is_back_macro(tokens), \
+ BOOST_PP_CAT \
+ , \
+ tokens BOOST_PP_TUPLE_EAT(2) \
+ )(tokens, removing_postfix)
+
+#endif // #include guard
+

Added: sandbox/local/libs/local/params_name/boost/detail/preprocessor/keyword/void.hpp
==============================================================================
--- (empty file)
+++ sandbox/local/libs/local/params_name/boost/detail/preprocessor/keyword/void.hpp 2011-02-16 11:13:35 EST (Wed, 16 Feb 2011)
@@ -0,0 +1,56 @@
+
+// Copyright (C) 2009-2011 Lorenzo Caminiti
+// Use, modification, and distribution is subject to the
+// Boost Software License, Version 1.0
+// (see accompanying file LICENSE_1_0.txt or a copy at
+// http://www.boost.org/LICENSE_1_0.txt).
+
+#ifndef BOOST_DETAIL_PP_KEYWORD_VOID_HPP_
+#define BOOST_DETAIL_PP_KEYWORD_VOID_HPP_
+
+#include "utility/is.hpp"
+#include "utility/add.hpp"
+#include "utility/remove.hpp"
+
+// These are not local macros -- DO NOT #UNDEF.
+#define BOOST_DETAIL_PP_KEYWORD_VOID_IS_void (1) /* unary */
+#define void_BOOST_DETAIL_PP_KEYWORD_VOID_IS (1) /* unary */
+#define BOOST_DETAIL_PP_KEYWORD_VOID_REMOVE_void /* nothing */
+#define void_BOOST_DETAIL_PP_KEYWORD_VOID_REMOVE /* nothing */
+
+// Is.
+
+#define BOOST_DETAIL_PP_KEYWORD_IS_VOID_FRONT(tokens) \
+ BOOST_DETAIL_PP_KEYWORD_UTILITY_IS_FRONT(tokens, \
+ BOOST_DETAIL_PP_KEYWORD_VOID_IS_)
+
+#define BOOST_DETAIL_PP_KEYWORD_IS_VOID_BACK(token) \
+ BOOST_DETAIL_PP_KEYWORD_UTILITY_IS_BACK(token, \
+ _BOOST_DETAIL_PP_KEYWORD_VOID_IS)
+
+// Rremove.
+
+#define BOOST_DETAIL_PP_KEYWORD_VOID_REMOVE_FRONT(tokens) \
+ BOOST_DETAIL_PP_KEYWORD_UTILITY_REMOVE_FRONT(tokens, \
+ BOOST_DETAIL_PP_KEYWORD_IS_VOID_FRONT, \
+ BOOST_DETAIL_PP_KEYWORD_VOID_REMOVE_)
+
+#define BOOST_DETAIL_PP_KEYWORD_VOID_REMOVE_BACK(tokens) \
+ BOOST_DETAIL_PP_KEYWORD_UTILITY_REMOVE_BACK(tokens, \
+ BOOST_DETAIL_PP_KEYWORD_IS_VOID_BACK, \
+ _BOOST_DETAIL_PP_KEYWORD_VOID_REMOVE)
+
+// Add.
+
+#define BOOST_DETAIL_PP_KEYWORD_VOID_ADD_FRONT(tokens) \
+ BOOST_DETAIL_PP_KEYWORD_UTILITY_ADD_FRONT(tokens, \
+ BOOST_DETAIL_PP_KEYWORD_IS_VOID_FRONT, \
+ void)
+
+#define BOOST_DETAIL_PP_KEYWORD_VOID_ADD_BACK(tokens) \
+ BOOST_DETAIL_PP_KEYWORD_UTILITY_ADD_BACK(tokens, \
+ BOOST_DETAIL_PP_KEYWORD_IS_VOID_BACK, \
+ void)
+
+#endif // #include guard
+

Added: sandbox/local/libs/local/params_name/boost/detail/preprocessor/nilseq.hpp
==============================================================================
--- (empty file)
+++ sandbox/local/libs/local/params_name/boost/detail/preprocessor/nilseq.hpp 2011-02-16 11:13:35 EST (Wed, 16 Feb 2011)
@@ -0,0 +1,52 @@
+
+// Copyright (C) 2009-2011 Lorenzo Caminiti
+// Use, modification, and distribution is subject to the
+// Boost Software License, Version 1.0
+// (see accompanying file LICENSE_1_0.txt or a copy at
+// http://www.boost.org/LICENSE_1_0.txt).
+
+#ifndef BOOST_DETAIL_PP_NILSEQ_HPP_
+#define BOOST_DETAIL_PP_NILSEQ_HPP_
+
+#include <boost/preprocessor/seq.hpp>
+#include <boost/preprocessor/arithmetic/dec.hpp>
+#include <boost/preprocessor/comparison/equal.hpp>
+#include <boost/preprocessor/control/iif.hpp>
+#include <boost/preprocessor/tuple/eat.hpp>
+
+// Utilities to handle sequences starting with `(NIL)` (to support empty seq):
+// nilseq := (BOOST_PP_NIL) [(elem0) (elem1) ...]
+
+// NOTE: `BOOST_PP_LIST` serves a similar purpose but it could not be used in
+// order to reuse signature parsing code. For example, parsed parameters are
+// represented as NILSEQ so parsers code used to parse sign sequence (wich
+// operate on SEQ) can be reused. Similarly, for initializers, concepts, etc.
+
+#define BOOST_DETAIL_PP_NILSEQ_SIZE(nilseq) \
+ BOOST_PP_DEC(BOOST_PP_SEQ_SIZE(nilseq)) /* DEC for leading `(NIL)` */
+
+#define BOOST_DETAIL_PP_NILSEQ_IS_NIL(nilseq) \
+ BOOST_PP_EQUAL(BOOST_DETAIL_PP_NILSEQ_SIZE(nilseq), 0)
+
+// Assume nilseq is not NIL and removes leading `(NIL)`.
+#define BOOST_DETAIL_PP_NILSEQ_TO_SEQ(nilseq) \
+ BOOST_PP_SEQ_TAIL(nilseq)
+
+#define BOOST_DETAIL_PP_NILSEQ_ELEM(n, nilseq) \
+ BOOST_PP_SEQ_ELEM(BOOST_PP_INC(n), nilseq) /* INC for leading `(NIL)` */
+
+// FOR_EACH_I //
+
+#define BOOST_DETAIL_PP_NILSEQ_FOR_EACH_I_(op, data, nilseq) \
+ /* got here iif nilseq size not nil, TAIL removes leading `(NIL)` */ \
+ BOOST_PP_SEQ_FOR_EACH_I(op, data, BOOST_DETAIL_PP_NILSEQ_TO_SEQ(nilseq))
+
+#define BOOST_DETAIL_PP_NILSEQ_FOR_EACH_I(op, data, nilseq) \
+ BOOST_PP_IIF(BOOST_DETAIL_PP_NILSEQ_IS_NIL(nilseq), \
+ BOOST_PP_TUPLE_EAT(3) \
+ , \
+ BOOST_DETAIL_PP_NILSEQ_FOR_EACH_I_ \
+ )(op, data, nilseq)
+
+#endif // #include guard
+

Added: sandbox/local/libs/local/params_name/boost/local/aux_/function/code_/binding.hpp
==============================================================================
--- (empty file)
+++ sandbox/local/libs/local/params_name/boost/local/aux_/function/code_/binding.hpp 2011-02-16 11:13:35 EST (Wed, 16 Feb 2011)
@@ -0,0 +1,100 @@
+
+// Copyright (C) 2009-2011 Lorenzo Caminiti
+// Use, modification, and distribution is subject to the
+// Boost Software License, Version 1.0
+// (see accompanying file LICENSE_1_0.txt or a copy at
+// http://www.boost.org/LICENSE_1_0.txt).
+
+#ifndef BOOST_LOCAL_AUX_FUNCTION_CODE_BINDING_HPP_
+#define BOOST_LOCAL_AUX_FUNCTION_CODE_BINDING_HPP_
+
+#include "param.hpp"
+#include "../../symbol.hpp"
+#include "../../scope_exit/scope_exit.hpp" // Use this lib's ScopeExit impl.
+#include "../../preprocessor/sign/params_any_bind.hpp"
+#include <boost/detail/preprocessor/nilseq.hpp>
+#include <boost/preprocessor/control/iif.hpp>
+#include <boost/preprocessor/control/expr_iif.hpp>
+#include <boost/preprocessor/seq/for_each_i.hpp>
+#include <boost/preprocessor/cat.hpp>
+
+// Undefine local function bound args global variable. Actual declaration of
+// this variable is made using SFINAE mechanisms by each local function macro.
+extern boost::scope_exit::aux::undeclared
+ BOOST_LOCAL_AUX_SYMBOL_ARGS_VARIABLE_NAME;
+
+// PRIVATE //
+
+// Adapted from `BOOST_SCOPE_EXIT_AUX_IMPL()`.
+#define BOOST_LOCAL_AUX_FUNCTION_CODE_BINDING_WITH_TAGS_SEQ_( \
+ all_bind_nilseq, has_any_bind_this, id, typename_keyword) \
+ /* binding tags */ \
+ BOOST_PP_EXPR_IIF(has_any_bind_this, \
+ BOOST_SCOPE_EXIT_TYPEDEF_TYPEOF_THIS() \
+ BOOST_LOCAL_AUX_FUNCTION_CODE_PARAM_THIS_TYPE(id); \
+ ) \
+ BOOST_DETAIL_PP_NILSEQ_FOR_EACH_I( \
+ BOOST_LOCAL_AUX_FUNCTION_CODE_PARAM_TAG_DECL, \
+ id, all_bind_nilseq) \
+ BOOST_DETAIL_PP_NILSEQ_FOR_EACH_I(BOOST_SCOPE_EXIT_AUX_CAPTURE_DECL, \
+ (id, typename_keyword), all_bind_nilseq) \
+ /* binding class */ \
+ struct BOOST_SCOPE_EXIT_AUX_PARAMS_T(id) { \
+ BOOST_PP_EXPR_IIF(has_any_bind_this, \
+ BOOST_LOCAL_AUX_FUNCTION_CODE_PARAM_THIS_TYPE(id) \
+ BOOST_LOCAL_AUX_FUNCTION_CODE_PARAM_THIS_NAME; \
+ ) \
+ BOOST_DETAIL_PP_NILSEQ_FOR_EACH_I(BOOST_SCOPE_EXIT_AUX_PARAM_DECL, \
+ (id, typename_keyword), all_bind_nilseq) \
+ BOOST_DETAIL_PP_NILSEQ_FOR_EACH_I(BOOST_SCOPE_EXIT_AUX_MEMBER, \
+ id, all_bind_nilseq) \
+ } BOOST_LOCAL_AUX_SYMBOL_PARAMS_LOCAL_VARIABLE_NAME(id) = { \
+ /* initialize the struct with param values to bind */ \
+ BOOST_PP_EXPR_IIF(has_any_bind_this, this) \
+ BOOST_PP_COMMA_IF(BOOST_PP_BITAND(has_any_bind_this, BOOST_PP_NOT( \
+ BOOST_DETAIL_PP_NILSEQ_IS_NIL(all_bind_nilseq)))) \
+ BOOST_DETAIL_PP_NILSEQ_FOR_EACH_I( \
+ BOOST_SCOPE_EXIT_AUX_PARAM_INIT, id, all_bind_nilseq) \
+ };
+
+// Assume has some bind param.
+#define BOOST_LOCAL_AUX_FUNCTION_CODE_BINDING_( \
+ sign_params, id, typename_keyword) \
+ /* has some bind param then all bind names is never empty nil-seq */ \
+ BOOST_LOCAL_AUX_FUNCTION_CODE_BINDING_WITH_TAGS_SEQ_( \
+ BOOST_LOCAL_AUX_PP_SIGN_PARAMS_ALL_BIND(sign_params), \
+ BOOST_LOCAL_AUX_PP_SIGN_PARAMS_HAS_ANY_BIND_THIS(sign_params), \
+ id, typename_keyword)
+
+// PUBLIC //
+
+#define BOOST_LOCAL_AUX_FUNCTION_CODE_BINDING( \
+ sign_params, id, typename_keyword) \
+ /* deduce bound type and stores their values/references */ \
+ BOOST_PP_IIF(BOOST_PP_EXPAND( /* expand needed on MSVC */ \
+ BOOST_LOCAL_AUX_PP_SIGN_PARAMS_HAS_ANY_BIND(sign_params)), \
+ BOOST_LOCAL_AUX_FUNCTION_CODE_BINDING_ \
+ , \
+ BOOST_PP_TUPLE_EAT(3) \
+ )(sign_params, id, typename_keyword) \
+ /* this `declared<>` must be present also when no bind param specified */ \
+ /* because `...args.value` is ued by `NAME` macro (to constructor */ \
+ /* functor) without knowing if binds were specified or not */ \
+ boost::scope_exit::aux::declared< boost::scope_exit::aux::resolve< \
+ /* cannot prefix with `::` as in `sizeof(:: ...` because the name */ \
+ /* must refer to the local variable name to allow multiple local */ \
+ /* functions (and exits) within the same scope (however this */ \
+ /* does not allow for nesting because local variables cannot be */ \
+ /* used in nested code blocks) */ \
+ sizeof(BOOST_LOCAL_AUX_SYMBOL_ARGS_VARIABLE_NAME) \
+ >::cmp1<0>::cmp2 > BOOST_LOCAL_AUX_SYMBOL_ARGS_VARIABLE_NAME; \
+ /* stores bound types/values into `...args` variable (args variable */ \
+ /* can be accessed by `NAME` macro because doesn't use __LINE__ id) */ \
+ BOOST_PP_EXPR_IIF(BOOST_PP_EXPAND( /* expand needed on MSVC */ \
+ BOOST_LOCAL_AUX_PP_SIGN_PARAMS_HAS_ANY_BIND(sign_params)), \
+ BOOST_LOCAL_AUX_SYMBOL_ARGS_VARIABLE_NAME.value = \
+ &BOOST_LOCAL_AUX_SYMBOL_PARAMS_LOCAL_VARIABLE_NAME(id); \
+ )
+
+#endif // #include guard
+

Added: sandbox/local/libs/local/params_name/boost/local/aux_/function/code_/functor.hpp
==============================================================================
--- (empty file)
+++ sandbox/local/libs/local/params_name/boost/local/aux_/function/code_/functor.hpp 2011-02-16 11:13:35 EST (Wed, 16 Feb 2011)
@@ -0,0 +1,286 @@
+
+// Copyright (C) 2009-2011 Lorenzo Caminiti
+// Use, modification, and distribution is subject to the
+// Boost Software License, Version 1.0
+// (see accompanying file LICENSE_1_0.txt or a copy at
+// http://www.boost.org/LICENSE_1_0.txt).
+
+#ifndef BOOST_LOCAL_AUX_FUNCTION_CODE_FUNCTOR_HPP_
+#define BOOST_LOCAL_AUX_FUNCTION_CODE_FUNCTOR_HPP_
+
+#include "param.hpp"
+#include "../base.hpp"
+#include "../../symbol.hpp"
+#include "../../preprocessor/sign/params/unbind.hpp"
+#include "../../preprocessor/sign/params/const_bind_names.hpp"
+#include "../../preprocessor/sign/params/bind_names.hpp"
+#include "../../preprocessor/sign/params/has_unbind.hpp"
+#include "../../preprocessor/sign/params/has_const_bind.hpp"
+#include "../../preprocessor/sign/params/has_bind.hpp"
+#include "../../preprocessor/sign/params/has_any_bind.hpp"
+#include "../../preprocessor/sign/params/this.hpp"
+#include "../../scope_exit/scope_exit.hpp" // Use Boost.ScopeExit internal impl.
+#include "../../../config.hpp"
+#include "../../../function_ref.hpp"
+#include <boost/detail/preprocessor/sign/name.hpp>
+#include <boost/detail/preprocessor/sign/result_type.hpp>
+#include <boost/detail/preprocessor/sign/inline.hpp>
+#include <boost/detail/preprocessor/sign/params/fold_left.hpp>
+#include <boost/detail/preprocessor/sign/params/enum.hpp>
+#include <boost/detail/preprocessor/sign/params/first_n.hpp>
+#include <boost/detail/preprocessor/nilseq.hpp>
+#include <boost/preprocessor/punctuation/comma_if.hpp>
+#include <boost/preprocessor/logical/bitand.hpp>
+#include <boost/preprocessor/logical/and.hpp>
+#include <boost/preprocessor/logical/bitor.hpp>
+#include <boost/preprocessor/logical/or.hpp>
+#include <boost/preprocessor/arithmetic/inc.hpp>
+#include <boost/preprocessor/facilities/empty.hpp>
+#include <boost/preprocessor/control/iif.hpp>
+#include <boost/preprocessor/control/expr_if.hpp>
+#include <boost/preprocessor/tuple/eat.hpp>
+#include <boost/type_traits.hpp>
+
+#define BOOST_LOCAL_AUX_FUNCTION_CODE_FUNCTOR_DEFAULTS_COUNT_OP_( \
+ s, defaults_count, param) \
+ BOOST_PP_IIF(BOOST_DETAIL_PP_SIGN_PARAM_HAS_DEFAULT(param), \
+ BOOST_PP_INC(defaults_count) \
+ , \
+ defaults_count \
+ )
+
+#define BOOST_LOCAL_AUX_FUNCTION_CODE_FUNCTOR_DEFAULTS_COUNT_( \
+ params) \
+ BOOST_DETAIL_PP_SIGN_PARAMS_FOLD_LEFT( \
+ BOOST_LOCAL_AUX_FUNCTION_CODE_FUNCTOR_DEFAULTS_COUNT_OP_, \
+ 0 /* start with defaults_count to 0 */, params)
+
+// Expand to the function type `R (A1, ...)`.
+#define BOOST_LOCAL_AUX_FUNCTION_CODE_FUNCTOR_F_(sign) \
+ BOOST_DETAIL_PP_SIGN_RESULT_TYPE(sign) \
+ ( \
+ BOOST_DETAIL_PP_SIGN_PARAMS_ENUM( \
+ BOOST_LOCAL_AUX_FUNCTION_CODE_PARAM_UNBIND_TYPE, ~, \
+ BOOST_LOCAL_AUX_PP_SIGN_PARAMS_UNBIND( \
+ BOOST_DETAIL_PP_SIGN_PARAMS(sign))) \
+ )
+
+#define BOOST_LOCAL_AUX_FUNCTION_CODE_FUNCTOR_CALL_( \
+ z, \
+ sign, \
+ unbind_params, \
+ const_bind_names, has_const_bind_this, \
+ bind_names, has_bind_this, \
+ id) \
+ BOOST_DETAIL_PP_SIGN_INLINE(sign) \
+ BOOST_DETAIL_PP_SIGN_RESULT_TYPE(sign) operator()( \
+ BOOST_DETAIL_PP_SIGN_PARAMS_ENUM_Z(z, \
+ BOOST_LOCAL_AUX_FUNCTION_CODE_PARAM_UNBIND_DECL, \
+ ~, unbind_params) \
+ ) { \
+ /* just forward call to member function with local func name */ \
+ return BOOST_LOCAL_AUX_SYMBOL_BODY_FUNCTION_NAME( \
+ /* this local functor reference (for recursion) */ \
+ *this \
+ /* pass const binds */ \
+ BOOST_PP_COMMA_IF(BOOST_PP_NOT( \
+ BOOST_DETAIL_PP_NILSEQ_IS_NIL(const_bind_names))) \
+ BOOST_DETAIL_PP_NILSEQ_FOR_EACH_I( \
+ BOOST_LOCAL_AUX_FUNCTION_CODE_PARAM_MAYBECONST_BIND, \
+ (id, 0 /* no offset */), \
+ const_bind_names) \
+ /* pass plain binds */ \
+ BOOST_PP_COMMA_IF(BOOST_PP_NOT( \
+ BOOST_DETAIL_PP_NILSEQ_IS_NIL(bind_names))) \
+ BOOST_DETAIL_PP_NILSEQ_FOR_EACH_I( \
+ BOOST_LOCAL_AUX_FUNCTION_CODE_PARAM_MAYBECONST_BIND, \
+ (id \
+ /* offset param index of # of preceeding */ \
+ /* const-bind params (could be 0)*/ \
+ , BOOST_DETAIL_PP_NILSEQ_SIZE(const_bind_names) \
+ ), \
+ bind_names) \
+ /* pass bind `this` */ \
+ BOOST_PP_COMMA_IF(BOOST_PP_BITOR( \
+ has_const_bind_this, has_bind_this)) \
+ BOOST_PP_EXPR_IIF( \
+ BOOST_PP_BITOR(has_const_bind_this, has_bind_this), \
+ BOOST_LOCAL_AUX_SYMBOL_PARAMS_VARIABLE_NAME-> \
+ BOOST_LOCAL_AUX_FUNCTION_CODE_PARAM_THIS_NAME_ \
+ ) \
+ /* pass unbind params */ \
+ BOOST_PP_COMMA_IF(BOOST_DETAIL_PP_SIGN_PARAMS_SIZE( \
+ unbind_params)) \
+ BOOST_DETAIL_PP_SIGN_PARAMS_ENUM_Z(z, \
+ BOOST_LOCAL_AUX_FUNCTION_CODE_PARAM_UNBIND_NAME, \
+ ~, unbind_params) \
+ ); \
+ }
+
+// Return unbind params but without last (default) params specified by count.
+#define BOOST_LOCAL_AUX_FUNCTION_CODE_FUNCTOR_CALL_UNBIND_WITHOUT_DEFAULT_( \
+ defaults_count, unbind_params) \
+ BOOST_DETAIL_PP_SIGN_PARAMS_FIRST_N( \
+ BOOST_PP_SUB(BOOST_DETAIL_PP_SIGN_PARAMS_SIZE( \
+ unbind_params), defaults_count), \
+ unbind_params)
+
+#define BOOST_LOCAL_AUX_FUNCTION_CODE_FUNCTOR_CALL_DEFAULTS_( \
+ z, n, sign_unbind_constbind_hasconstthis_bind_hasthis_id) \
+ BOOST_LOCAL_AUX_FUNCTION_CODE_FUNCTOR_CALL_(z \
+ , BOOST_PP_TUPLE_ELEM(7, 0, \
+ sign_unbind_constbind_hasconstthis_bind_hasthis_id) \
+ , BOOST_LOCAL_AUX_FUNCTION_CODE_FUNCTOR_CALL_UNBIND_WITHOUT_DEFAULT_( \
+ n \
+ , BOOST_PP_TUPLE_ELEM(7, 1, \
+ sign_unbind_constbind_hasconstthis_bind_hasthis_id) \
+ ) \
+ , BOOST_PP_TUPLE_ELEM(7, 2, \
+ sign_unbind_constbind_hasconstthis_bind_hasthis_id) \
+ , BOOST_PP_TUPLE_ELEM(7, 3, \
+ sign_unbind_constbind_hasconstthis_bind_hasthis_id) \
+ , BOOST_PP_TUPLE_ELEM(7, 4, \
+ sign_unbind_constbind_hasconstthis_bind_hasthis_id) \
+ , BOOST_PP_TUPLE_ELEM(7, 5, \
+ sign_unbind_constbind_hasconstthis_bind_hasthis_id) \
+ , BOOST_PP_TUPLE_ELEM(7, 6, \
+ sign_unbind_constbind_hasconstthis_bind_hasthis_id) \
+ )
+
+#define BOOST_LOCAL_AUX_FUNCTION_CODE_FUNCTOR_HAS_ANY_BIND_( \
+ const_bind_names, has_const_bind_this, bind_names, has_bind_this) \
+ BOOST_PP_BITOR( \
+ BOOST_PP_NOT(BOOST_DETAIL_PP_NILSEQ_IS_NIL(const_bind_names)) \
+ , BOOST_PP_BITOR( \
+ BOOST_PP_NOT(BOOST_DETAIL_PP_NILSEQ_IS_NIL(bind_names)) \
+ , BOOST_PP_BITOR( \
+ has_const_bind_this \
+ , has_bind_this \
+ ) \
+ ) \
+ )
+
+// Adapted from `BOOST_SCOPE_EXIT_AUX_IMPL()`.
+#define BOOST_LOCAL_AUX_FUNCTION_CODE_FUNCTOR_( \
+ sign, \
+ unbind_params, defaults_count, \
+ const_bind_names, has_const_bind_this, \
+ bind_names, has_bind_this, \
+ id, typename_keyword) \
+ /* typedef outside struct so END doesn't need typename (no END_TPL) */ \
+ typedef ::boost::local::function_ref< \
+ BOOST_LOCAL_AUX_FUNCTION_CODE_FUNCTOR_F_(sign) \
+ , defaults_count \
+ > BOOST_LOCAL_AUX_SYMBOL_FUNCTION_REF_NAME( \
+ BOOST_DETAIL_PP_SIGN_NAME(sign)); \
+ struct BOOST_LOCAL_AUX_SYMBOL_FUNCTOR_CLASS_NAME( \
+ BOOST_DETAIL_PP_SIGN_NAME(sign)) \
+ : ::boost::local::aux::function_base< \
+ BOOST_LOCAL_AUX_FUNCTION_CODE_FUNCTOR_F_(sign), \
+ defaults_count> \
+ { \
+ /* constructor */ \
+ explicit BOOST_LOCAL_AUX_SYMBOL_FUNCTOR_CLASS_NAME( \
+ BOOST_DETAIL_PP_SIGN_NAME(sign))(void* bind_params) \
+ BOOST_PP_EXPR_IIF( \
+ BOOST_LOCAL_AUX_FUNCTION_CODE_FUNCTOR_HAS_ANY_BIND_( \
+ const_bind_names, has_const_bind_this, \
+ bind_names, has_bind_this), \
+ : BOOST_LOCAL_AUX_SYMBOL_PARAMS_VARIABLE_NAME( \
+ (BOOST_SCOPE_EXIT_AUX_PARAMS_T(id)*) /*type-cast*/ \
+ bind_params) \
+ ) \
+ {} \
+ /* implement base functor `operator()` (and for all default params) */ \
+ BOOST_PP_REPEAT(BOOST_PP_INC( /* PP_INC to handle also no defaults */ \
+ defaults_count), \
+ BOOST_LOCAL_AUX_FUNCTION_CODE_FUNCTOR_CALL_DEFAULTS_,\
+ (sign, unbind_params, const_bind_names, has_const_bind_this, \
+ bind_names, has_bind_this, id) \
+ ) \
+ private: \
+ /* bind params member variable (note -- signle bind param cannot */ \
+ /* be represented as single member variables because their names */ \
+ /* might be prefixed by `&` so they are not know to pp) */ \
+ BOOST_PP_EXPR_IIF( \
+ BOOST_LOCAL_AUX_FUNCTION_CODE_FUNCTOR_HAS_ANY_BIND_( \
+ const_bind_names, has_const_bind_this, \
+ bind_names, has_bind_this), \
+ BOOST_SCOPE_EXIT_AUX_PARAMS_T(id)* \
+ BOOST_LOCAL_AUX_SYMBOL_PARAMS_VARIABLE_NAME; \
+ ) \
+ BOOST_DETAIL_PP_SIGN_INLINE(sign) \
+ static /* static so `this` cannot be mistaken for `this_` */ \
+ BOOST_DETAIL_PP_SIGN_RESULT_TYPE(sign) \
+ BOOST_LOCAL_AUX_SYMBOL_BODY_FUNCTION_NAME( \
+ /* a ref to this local functor for recursion */ \
+ BOOST_LOCAL_AUX_SYMBOL_FUNCTOR_CLASS_NAME( \
+ BOOST_DETAIL_PP_SIGN_NAME(sign))& \
+ BOOST_DETAIL_PP_SIGN_NAME(sign) \
+ /* const binds */ \
+ BOOST_PP_COMMA_IF(BOOST_PP_NOT( \
+ BOOST_DETAIL_PP_NILSEQ_IS_NIL(const_bind_names))) \
+ BOOST_DETAIL_PP_NILSEQ_FOR_EACH_I( \
+ BOOST_LOCAL_AUX_FUNCTION_CODE_PARAM_CONST_BIND_DECL, \
+ (id, typename_keyword, 0 /* no offset */), \
+ const_bind_names) \
+ /* plain binds */ \
+ BOOST_PP_COMMA_IF(BOOST_PP_NOT( \
+ BOOST_DETAIL_PP_NILSEQ_IS_NIL(bind_names))) \
+ BOOST_DETAIL_PP_NILSEQ_FOR_EACH_I( \
+ BOOST_LOCAL_AUX_FUNCTION_CODE_PARAM_BIND_DECL, \
+ (id, typename_keyword \
+ /* offset param index of # of preceeding */ \
+ /* const-bindparams (could be 0)*/ \
+ , BOOST_DETAIL_PP_NILSEQ_SIZE(const_bind_names) \
+ ), \
+ bind_names) \
+ /* `this` bind */ \
+ BOOST_PP_COMMA_IF(BOOST_PP_BITOR( \
+ has_const_bind_this, has_bind_this)) \
+ BOOST_PP_EXPR_IIF(has_const_bind_this, \
+ typename_keyword ::contract::detail::add_pointed_const< \
+ BOOST_LOCAL_AUX_FUNCTION_CODE_PARAM_THIS_TYPE_(id) \
+ >::type \
+ BOOST_LOCAL_CONFIG_THIS_PARAM_NAME \
+ ) \
+ BOOST_PP_EXPR_IIF(has_bind_this, \
+ BOOST_LOCAL_AUX_FUNCTION_CODE_PARAM_THIS_TYPE_( \
+ id) \
+ BOOST_LOCAL_CONFIG_THIS_PARAM_NAME \
+ ) \
+ /* unbind params (last because they can have defaults) */ \
+ BOOST_PP_COMMA_IF(BOOST_DETAIL_PP_SIGN_PARAMS_SIZE( \
+ unbind_params)) \
+ BOOST_DETAIL_PP_SIGN_PARAMS_ENUM( \
+ BOOST_LOCAL_AUX_FUNCTION_CODE_PARAM_UNBIND_DECL_WITH_DEFAULT, \
+ ~, unbind_params) \
+ ) /* end body function params */ \
+ /* user local function definition `{ ... }` will follow here */ \
+ /* `END()` macro will close function class decl `};` here */
+
+// Public API.
+
+#define BOOST_LOCAL_AUX_FUNCTION_CODE_FUNCTOR( \
+ sign, params, id, typename_keyword) \
+ BOOST_LOCAL_AUX_FUNCTION_CODE_FUNCTOR_( \
+ sign, \
+ /* unbind params (may have defaults) */ \
+ BOOST_LOCAL_AUX_PP_SIGN_PARAMS_UNBIND(params), \
+ BOOST_LOCAL_AUX_FUNCTION_CODE_FUNCTOR_DEFAULTS_COUNT_( \
+ params), \
+ /* const bind param names (may have `this`) */ \
+ BOOST_LOCAL_AUX_PP_SIGN_PARAMS_THIS_NAME_REMOVE( \
+ BOOST_LOCAL_AUX_PP_SIGN_PARAMS_CONST_BIND_NAMES( \
+ params)), \
+ BOOST_LOCAL_AUX_PP_SIGN_PARAMS_HAS_CONST_BIND_THIS( \
+ params), \
+ /* (non-const) bind param names (may have `this`) */ \
+ BOOST_LOCAL_AUX_PP_SIGN_PARAMS_THIS_NAME_REMOVE( \
+ BOOST_LOCAL_AUX_PP_SIGN_PARAMS_BIND_NAMES( \
+ params)), \
+ BOOST_LOCAL_AUX_PP_SIGN_PARAMS_HAS_BIND_THIS(params), \
+ id, typename_keyword)
+
+#endif // #include guard
+

Added: sandbox/local/libs/local/params_name/boost/local/aux_/function/code_/param.hpp
==============================================================================
--- (empty file)
+++ sandbox/local/libs/local/params_name/boost/local/aux_/function/code_/param.hpp 2011-02-16 11:13:35 EST (Wed, 16 Feb 2011)
@@ -0,0 +1,132 @@
+
+// Copyright (C) 2009-2011 Lorenzo Caminiti
+// Use, modification, and distribution is subject to the
+// Boost Software License, Version 1.0
+// (see accompanying file LICENSE_1_0.txt or a copy at
+// http://www.boost.org/LICENSE_1_0.txt).
+
+#ifndef BOOST_LOCAL_AUX_FUNCTION_CODE_PARAM_HPP_
+#define BOOST_LOCAL_AUX_FUNCTION_CODE_PARAM_HPP_
+
+#include "../../symbol.hpp"
+#include "../../scope_exit/scope_exit.hpp" // Use this lib's ScopeExit impl.
+#include "../../type_traits/add_pointed_const.hpp"
+#include <boost/detail/preprocessor/keyword/this.hpp>
+#include <boost/detail/preprocessor/keyword/auto.hpp>
+#include <boost/detail/preprocessor/keyword/register.hpp>
+#include <boost/local/aux_/preprocessor/sign/params_unbind.hpp>
+#include <boost/type_traits.hpp>
+#include <boost/preprocessor/punctuation/comma_if.hpp>
+#include <boost/preprocessor/control/expr_if.hpp>
+#include <boost/preprocessor/control/iif.hpp>
+#include <boost/preprocessor/arithmetic/add.hpp>
+#include <boost/preprocessor/tuple/elem.hpp>
+#include <boost/preprocessor/tuple/eat.hpp>
+#include <boost/preprocessor/cat.hpp>
+
+// Param named `this`.
+
+#define BOOST_LOCAL_AUX_FUNCTION_CODE_PARAM_THIS_TYPE(id) \
+ BOOST_PP_CAT(se_this_type, id) // Using ScopeExit prefix `se_...`.
+
+#define BOOST_LOCAL_AUX_FUNCTION_CODE_PARAM_THIS_NAME \
+ se_this // Using ScopeExit prefix `se_...`.
+
+#define BOOST_LOCAL_AUX_FUNCTION_CODE_PARAM_RENAME_THIS_(param_name) \
+ /* can't use `PP_KEYWORD_IS_THIS_FRONT()` because some `param_name` */ \
+ /* might start with non-alphanumeric symbol `&` (but never for `this`) */ \
+ BOOST_PP_IIF(BOOST_DETAIL_PP_KEYWORD_IS_THIS_BACK(param_name), \
+ BOOST_LOCAL_AUX_SYMBOL_THIS_PARAM_NAME \
+ , \
+ param_name \
+ )
+
+// Tag param.
+
+// Adapted from `BOOST_SCOPE_EXIT_AUX_TAG_DECL()`.
+#define BOOST_LOCAL_AUX_FUNCTION_CODE_PARAM_TAG_DECL(r, id, i, var) \
+ typedef void (*BOOST_SCOPE_EXIT_AUX_TAG(id,i))(int \
+ BOOST_LOCAL_AUX_FUNCTION_CODE_PARAM_RENAME_THIS_(var) );
+
+// Bound param (const and non-const).
+
+#define BOOST_LOCAL_AUX_FUNCTION_CODE_PARAM_MAYBECONST_BIND_TYPE( \
+ id_typename_offset, i, var) \
+ BOOST_SCOPE_EXIT_AUX_PARAMS_T( \
+ BOOST_PP_TUPLE_ELEM(3, 0, id_typename_offset)):: \
+ BOOST_SCOPE_EXIT_AUX_PARAM_T( \
+ BOOST_PP_TUPLE_ELEM(3, 0, id_typename_offset), \
+ BOOST_PP_ADD(i, BOOST_PP_TUPLE_ELEM(3, 2, id_typename_offset)),\
+ var)
+
+#define BOOST_LOCAL_AUX_FUNCTION_CODE_PARAM_MAYBECONST_BIND_VALUE( \
+ id_offset, i, var) \
+ BOOST_LOCAL_AUX_SYMBOL_PARAMS_VARIABLE_NAME-> \
+ BOOST_SCOPE_EXIT_AUX_PARAM( \
+ BOOST_PP_TUPLE_ELEM(2, 0, id_offset), \
+ BOOST_PP_ADD(i, BOOST_PP_TUPLE_ELEM(2, 1, id_offset)), \
+ var).value
+
+// Adapted from `BOOST_SCOPE_EXIT_AUX_ARG_DECL()`.
+#define BOOST_LOCAL_AUX_FUNCTION_CODE_PARAM_MAYBECONST_BIND_DECL_( \
+ r, id_typename_offset, i, var, const01) \
+ BOOST_PP_COMMA_IF(i) \
+ BOOST_PP_TUPLE_ELEM(3, 1, id_typename_offset) /* eventual typename */ \
+ BOOST_PP_EXPR_IF(const01, \
+ BOOST_PP_IIF( \
+ BOOST_DETAIL_PP_KEYWORD_IS_TRAILING_THIS(var), \
+ ::boost::local::aux::add_pointed_const< /* pointed obj const */ \
+ , \
+ ::boost::add_const< /* outer type const */ \
+ ) \
+ BOOST_PP_TUPLE_ELEM(3, 1, id_typename_offset) /* eventual typename */ \
+ ) \
+ BOOST_LOCAL_AUX_FUNCTION_CODE_PARAM_MAYBECONST_BIND_TYPE( \
+ id_typename_offset, i, var) \
+ BOOST_PP_EXPR_IF(const01, >::type) \
+ BOOST_LOCAL_AUX_FUNCTION_CODE_PARAM_RENAME_THIS_(var)
+
+#define BOOST_LOCAL_AUX_FUNCTION_CODE_PARAM_CONST_BIND_DECL( \
+ r, id_typename_offset, i, var) \
+ BOOST_LOCAL_AUX_FUNCTION_CODE_PARAM_MAYBECONST_BIND_DECL_( \
+ r, id_typename_offset, i, var, 1 /* force const */)
+
+#define BOOST_LOCAL_AUX_FUNCTION_CODE_PARAM_BIND_DECL( \
+ r, id_typename_offset, i, var) \
+ BOOST_LOCAL_AUX_FUNCTION_CODE_PARAM_MAYBECONST_BIND_DECL_( \
+ r, id_typename_offset, i, var, 0 /* do not force const */)
+
+// Adapted from `BOOST_SCOPE_EXIT_AUX_ARG()`.
+#define BOOST_LOCAL_AUX_FUNCTION_CODE_PARAM_MAYBECONST_BIND( \
+ r, id_offset, i, var) \
+ BOOST_PP_COMMA_IF(i) \
+ BOOST_LOCAL_AUX_FUNCTION_CODE_PARAM_MAYBECONST_BIND_VALUE( \
+ id_offset, i, var)
+
+// Unbind param.
+
+#define BOOST_LOCAL_AUX_FUNCTION_CODE_PARAM_UNBIND_DECL( \
+ z, param, unused) \
+ BOOST_LOCAL_AUX_PP_SIGN_PARAMS_UNBIND_PARAM_DECL(param)
+
+#define BOOST_LOCAL_AUX_FUNCTION_CODE_PARAM_UNBIND_DECL_WITH_DEFAULT( \
+ z, param, unused) \
+ BOOST_LOCAL_AUX_FUNCTION_CODE_PARAM_UNBIND_DECL( \
+ z, param, unused) \
+ BOOST_PP_IIF(BOOST_LOCAL_AUX_PP_SIGN_PARAMS_UNBIND_PARAM_HAS_DEFAULT( \
+ param), \
+ = BOOST_LOCAL_AUX_PP_SIGN_PARAMS_UNBIND_PARAM_DEFAULT \
+ , \
+ BOOST_PP_TUPLE_EAT(1) \
+ )(param)
+
+#define BOOST_LOCAL_AUX_FUNCTION_CODE_PARAM_UNBIND_TYPE_AND_NAME( \
+ z, param, unused) \
+ BOOST_DETAIL_PP_KEYWORD_AUTO_REMOVE( \
+ BOOST_DETAIL_PP_KEYWORD_REGISTER_REMOVE( \
+ BOOST_LOCAL_AUX_PP_SIGN_PARAMS_UNBIND_PARAM_DECL(param) \
+ ) \
+ )
+
+#endif // #include guard
+

Added: sandbox/local/libs/local/params_name/boost/local/aux_/function/params.hpp
==============================================================================
--- (empty file)
+++ sandbox/local/libs/local/params_name/boost/local/aux_/function/params.hpp 2011-02-16 11:13:35 EST (Wed, 16 Feb 2011)
@@ -0,0 +1,45 @@
+
+#ifndef BOOST_LOCAL_AUX_FUNCTION_PARAMS_HPP_
+#define BOOST_LOCAL_AUX_FUNCTION_PARAMS_HPP_
+
+#include "code_/binding.hpp"
+#include "../preprocessor/sign/parse_params.hpp"
+#include "../preprocessor/sign/params_error.hpp"
+#include <boost/mpl/assert.hpp>
+#include <boost/preprocessor/control/iif.hpp>
+
+// PRIVATE //
+
+#define BOOST_LOCAL_AUX_FUNCTION_PARAMS_CODE_( \
+ sign_params, id, typename_keyword) \
+ BOOST_LOCAL_AUX_FUNCTION_CODE_BINDING(sign_params, id, typename_keyword)
+
+#define BOOST_LOCAL_AUX_FUNCTION_PARAMS_OK_(sign_params, typename_keyword) \
+ BOOST_LOCAL_AUX_FUNCTION_PARAMS_CODE_( \
+ sign_params, __LINE__, typename_keyword)
+
+#define BOOST_LOCAL_AUX_FUNCTION_PARAMS_ERROR_(sign_params, typename_keyword) \
+ ; /* close eventual previous statements, otherwise it has no effect */ \
+ BOOST_MPL_ASSERT_MSG(false, /* always fails (there's an error) */ \
+ BOOST_LOCAL_AUX_PP_SIGN_PARAMS_ERROR_MSG(sign_params), ()) \
+ ; /* must close ASSERT macro for eventual use within class scope */
+
+// sign_params: parsed parenthesized params.
+#define BOOST_LOCAL_AUX_FUNCTION_PARAMS_(sign_params, typename_keyword) \
+ BOOST_PP_IIF(BOOST_LOCAL_AUX_PP_SIGN_PARAMS_HAVE_ERROR(sign_params), \
+ BOOST_LOCAL_AUX_FUNCTION_PARAMS_ERROR_ \
+ , \
+ BOOST_LOCAL_AUX_FUNCTION_PARAMS_OK_ \
+ )(sign_params, typename_keyword)
+
+// PUBLIC //
+
+// typename_keyword: `typename` in type depended context (i.e., templates),
+// `EMPTY()` otherwise.
+#define BOOST_LOCAL_AUX_FUNCTION_PARAMS( \
+ parenthesized_params, typename_keyword) \
+ BOOST_LOCAL_AUX_FUNCTION_PARAMS_(BOOST_LOCAL_AUX_PP_SIGN_PARSE_PARAMS( \
+ parenthesized_params), typename_keyword)
+
+#endif // #include guard
+

Added: sandbox/local/libs/local/params_name/boost/local/aux_/preprocessor/keyword/bind.hpp
==============================================================================
--- (empty file)
+++ sandbox/local/libs/local/params_name/boost/local/aux_/preprocessor/keyword/bind.hpp 2011-02-16 11:13:35 EST (Wed, 16 Feb 2011)
@@ -0,0 +1,56 @@
+
+// Copyright (C) 2009-2011 Lorenzo Caminiti
+// Use, modification, and distribution is subject to the
+// Boost Software License, Version 1.0
+// (see accompanying file LICENSE_1_0.txt or a copy at
+// http://www.boost.org/LICENSE_1_0.txt).
+
+#ifndef BOOST_LOCAL_AUX_PP_KEYWORD_BIND_HPP_
+#define BOOST_LOCAL_AUX_PP_KEYWORD_BIND_HPP_
+
+#include <boost/detail/preprocessor/keyword/utility/is.hpp>
+#include <boost/detail/preprocessor/keyword/utility/add.hpp>
+#include <boost/detail/preprocessor/keyword/utility/remove.hpp>
+
+// These are not local macros -- DO NOT #UNDEF.
+#define BOOST_LOCAL_AUX_PP_KEYWORD_BIND_IS_bind (1) /* unary */
+#define bind_BOOST_LOCAL_AUX_PP_KEYWORD_BIND_IS (1) /* unary */
+#define BOOST_LOCAL_AUX_PP_KEYWORD_BIND_REMOVE_bind /* nothing */
+#define bind_BOOST_LOCAL_AUX_PP_KEYWORD_BIND_REMOVE /* nothing */
+
+// Is.
+
+#define BOOST_LOCAL_AUX_PP_KEYWORD_IS_BIND_FRONT(tokens) \
+ BOOST_DETAIL_PP_KEYWORD_UTILITY_IS_FRONT(tokens, \
+ BOOST_LOCAL_AUX_PP_KEYWORD_BIND_IS_)
+
+#define BOOST_LOCAL_AUX_PP_KEYWORD_IS_BIND_BACK(tokens) \
+ BOOST_DETAIL_PP_KEYWORD_UTILITY_IS_BACK(tokens, \
+ _BOOST_LOCAL_AUX_PP_KEYWORD_BIND_IS)
+
+// Rremove.
+
+#define BOOST_LOCAL_AUX_PP_KEYWORD_BIND_REMOVE_FRONT(tokens) \
+ BOOST_DETAIL_PP_KEYWORD_UTILITY_REMOVE_FRONT(tokens, \
+ BOOST_LOCAL_AUX_PP_KEYWORD_IS_BIND_FRONT, \
+ BOOST_LOCAL_AUX_PP_KEYWORD_BIND_REMOVE_)
+
+#define BOOST_LOCAL_AUX_PP_KEYWORD_BIND_REMOVE_BACK(tokens) \
+ BOOST_DETAIL_PP_KEYWORD_UTILITY_REMOVE_BACK(tokens, \
+ BOOST_LOCAL_AUX_PP_KEYWORD_IS_BIND_BACK, \
+ _BOOST_LOCAL_AUX_PP_KEYWORD_BIND_REMOVE)
+
+// Add.
+
+#define BOOST_LOCAL_AUX_PP_KEYWORD_BIND_ADD_FRONT(tokens) \
+ BOOST_DETAIL_PP_KEYWORD_UTILITY_ADD_FRONT(tokens, \
+ BOOST_LOCAL_AUX_PP_KEYWORD_IS_BIND_FRONT, \
+ bind)
+
+#define BOOST_LOCAL_AUX_PP_KEYWORD_BIND_ADD_BACK(tokens) \
+ BOOST_DETAIL_PP_KEYWORD_UTILITY_ADD_BACK(tokens, \
+ BOOST_LOCAL_AUX_PP_KEYWORD_IS_BIND_BACK, \
+ bind)
+
+#endif // #include guard
+

Added: sandbox/local/libs/local/params_name/boost/local/aux_/preprocessor/keyword/const_bind.hpp
==============================================================================
--- (empty file)
+++ sandbox/local/libs/local/params_name/boost/local/aux_/preprocessor/keyword/const_bind.hpp 2011-02-16 11:13:35 EST (Wed, 16 Feb 2011)
@@ -0,0 +1,70 @@
+
+// Copyright (C) 2009-2011 Lorenzo Caminiti
+// Use, modification, and distribution is subject to the
+// Boost Software License, Version 1.0
+// (see accompanying file LICENSE_1_0.txt or a copy at
+// http://www.boost.org/LICENSE_1_0.txt).
+
+#ifndef BOOST_LOCAL_AUX_PP_KEYWORD_CONST_BIND_HPP_
+#define BOOST_LOCAL_AUX_PP_KEYWORD_CONST_BIND_HPP_
+
+#include "bind.hpp"
+#include <boost/detail/preprocessor/keyword/const.hpp>
+#include <boost/detail/preprocessor/keyword/utility/add.hpp>
+#include <boost/preprocessor/control/iif.hpp>
+#include <boost/preprocessor/tuple/eat.hpp>
+
+// These are not local macros -- DO NOT #UNDEF.
+#define BOOST_LOCAL_AUX_PP_KEYWORD_BIND_IS_bind (1) /* unary */
+#define bind_BOOST_LOCAL_AUX_PP_KEYWORD_BIND_IS (1) /* unary */
+#define BOOST_LOCAL_AUX_PP_KEYWORD_BIND_REMOVE_bind /* nothing */
+#define bind_BOOST_LOCAL_AUX_PP_KEYWORD_BIND_REMOVE /* nothing */
+
+// Is.
+
+#define BOOST_LOCAL_AUX_PP_KEYWORD_IS_CONST_BIND_FRONT_(tokens) \
+ BOOST_LOCAL_AUX_PP_KEYWORD_IS_BIND_FRONT( \
+ BOOST_DETAIL_PP_KEYWORD_CONST_REMOVE_FRONT(tokens))
+
+#define BOOST_LOCAL_AUX_PP_KEYWORD_IS_CONST_BIND_FRONT(tokens) \
+ BOOST_PP_IIF(BOOST_DETAIL_PP_KEYWORD_IS_CONST_FRONT(tokens), \
+ BOOST_LOCAL_AUX_PP_KEYWORD_IS_CONST_BIND_FRONT_ \
+ , \
+ 0 BOOST_PP_TUPLE_EAT(1) \
+ )(tokens)
+
+#define BOOST_LOCAL_AUX_PP_KEYWORD_IS_CONST_BIND_BACK_(tokens) \
+ BOOST_DETAIL_PP_KEYWORD_IS_CONST_BACK( \
+ BOOST_LOCAL_AUX_PP_KEYWORD_BIND_REMOVE_BACK(tokens))
+
+#define BOOST_LOCAL_AUX_PP_KEYWORD_IS_CONDT_BIND_BACK(tokens) \
+ BOOST_PP_IIF(BOOST_LOCAL_AUX_PP_KEYWORD_IS_BIND_BACK(tokens) \
+ BOOST_LOCAL_AUX_PP_KEYWORD_IS_CONST_BIND_BACK_ \
+ , \
+ 0 BOOST_PP_TUPLE_EAT(1) \
+ )(tokens)
+
+// Rremove.
+
+#define BOOST_LOCAL_AUX_PP_KEYWORD_CONST_BIND_REMOVE_FRONT(tokens) \
+ BOOST_LOCAL_AUX_PP_KEYWORD_BIND_REMOVE_FRONT( \
+ BOOST_DETAIL_PP_KEYWORD_CONST_REMOVE_FRONT(tokens))
+
+#define BOOST_LOCAL_AUX_PP_KEYWORD_CONST_BIND_REMOVE_BACK(tokens) \
+ BOOST_DETAIL_PP_KEYWORD_CONST_REMOVE_BACK( \
+ BOOST_LOCAL_AUX_PP_KEYWORD_BIND_REMOVE_BACK(tokens))
+
+// Add.
+
+#define BOOST_LOCAL_AUX_PP_KEYWORD_CONST_BIND_ADD_FRONT(tokens) \
+ BOOST_DETAIL_PP_KEYWORD_UTILITY_ADD_FRONT(tokens, \
+ BOOST_LOCAL_AUX_PP_KEYWORD_IS_CONST_BIND_FRONT, \
+ const bind)
+
+#define BOOST_LOCAL_AUX_PP_KEYWORD_CONST_BIND_ADD_BACK(tokens) \
+ BOOST_DETAIL_PP_KEYWORD_UTILITY_ADD_BACK(tokens, \
+ BOOST_LOCAL_AUX_PP_KEYWORD_IS_CONST_BIND_BACK, \
+ const bind)
+
+#endif // #include guard
+

Added: sandbox/local/libs/local/params_name/boost/local/aux_/preprocessor/sign/params_any_bind.hpp
==============================================================================
--- (empty file)
+++ sandbox/local/libs/local/params_name/boost/local/aux_/preprocessor/sign/params_any_bind.hpp 2011-02-16 11:13:35 EST (Wed, 16 Feb 2011)
@@ -0,0 +1,67 @@
+
+#ifndef BOOST_LOCAL_AUX_PP_SIGN_ANY_BIND_HPP_
+#define BOOST_LOCAL_AUX_PP_SIGN_ANY_BIND_HPP_
+
+#include "params_const_bind.hpp"
+#include "params_bind.hpp"
+#include <boost/preprocessor/logical/bitor.hpp>
+#include <boost/preprocessor/seq.hpp> // For `PP_SEQ_TAIL`.
+#include <boost/preprocessor/control/iif.hpp>
+#include <boost/preprocessor/control/expr_iif.hpp>
+#include <boost/preprocessor/tuple/eat.hpp>
+
+// Private //
+
+// Return nil-seq with any bind (const or not) but not unbind.
+#define BOOST_LOCAL_AUX_PP_SIGN_PARAMS_ALL_BIND_SEQ_TAIL_(params, seq_macro) \
+ BOOST_PP_SEQ_TAIL(seq_macro(params))
+
+// Public //
+
+// Expand to 1 iff `this` is bound (const or not).
+#define BOOST_LOCAL_AUX_PP_SIGN_PARAMS_HAS_ANY_BIND_THIS(params) \
+ /* can't use PP_BITOR/PP_OR because don't expand on MSVC */ \
+ BOOST_PP_IIF(BOOST_LOCAL_AUX_PP_SIGN_PARAMS_HAS_CONST_BIND_THIS(params), \
+ 1 \
+ , BOOST_PP_IIF(BOOST_LOCAL_AUX_PP_SIGN_PARAMS_HAS_BIND_THIS(params), \
+ 1 \
+ , \
+ 0 \
+ ))
+
+// Expand to 1 iff has one or more bound including `this` (const or not).
+#define BOOST_LOCAL_AUX_PP_SIGN_PARAMS_HAS_ANY_BIND(params) \
+ /* can't use PP_BITOR/PP_OR because don't expand on MSVC */ \
+ BOOST_PP_IIF(BOOST_LOCAL_AUX_PP_SIGN_PARAMS_HAS_CONST_BIND(params), \
+ 1 \
+ , BOOST_PP_IIF(BOOST_LOCAL_AUX_PP_SIGN_PARAMS_HAS_CONST_BIND_THIS(params), \
+ 1 \
+ , BOOST_PP_IIF(BOOST_LOCAL_AUX_PP_SIGN_PARAMS_HAS_BIND(params), \
+ 1 \
+ , BOOST_PP_IIF(BOOST_LOCAL_AUX_PP_SIGN_PARAMS_HAS_BIND_THIS(params), \
+ 1 \
+ , \
+ 0 \
+ ))))
+
+// Expand to nil-seq `(NIL) ([&]var) ...` with all bound (const or not) and
+// including `this` if bound (const or not).
+#define BOOST_LOCAL_AUX_PP_SIGN_PARAMS_ALL_BIND(params) \
+ (BOOST_PP_NIL) \
+ BOOST_PP_EXPR_IIF(BOOST_LOCAL_AUX_PP_SIGN_PARAMS_HAS_ANY_BIND_THIS( \
+ params), \
+ (this) /* never by reference because `&this` is not valid in C++ */ \
+ ) \
+ BOOST_PP_IIF(BOOST_LOCAL_AUX_PP_SIGN_PARAMS_HAS_CONST_BIND(params), \
+ BOOST_LOCAL_AUX_PP_SIGN_PARAMS_ALL_BIND_SEQ_TAIL_ \
+ , \
+ BOOST_PP_TUPLE_EAT(2) \
+ )(params, BOOST_LOCAL_AUX_PP_SIGN_PARAMS_CONST_BIND) \
+ BOOST_PP_IIF(BOOST_LOCAL_AUX_PP_SIGN_PARAMS_HAS_BIND(params), \
+ BOOST_LOCAL_AUX_PP_SIGN_PARAMS_ALL_BIND_SEQ_TAIL_ \
+ , \
+ BOOST_PP_TUPLE_EAT(2) \
+ )(params, BOOST_LOCAL_AUX_PP_SIGN_PARAMS_BIND)
+
+#endif // #include guard
+

Added: sandbox/local/libs/local/params_name/boost/local/aux_/preprocessor/sign/params_bind.hpp
==============================================================================
--- (empty file)
+++ sandbox/local/libs/local/params_name/boost/local/aux_/preprocessor/sign/params_bind.hpp 2011-02-16 11:13:35 EST (Wed, 16 Feb 2011)
@@ -0,0 +1,27 @@
+
+#ifndef BOOST_LOCAL_AUX_PP_SIGN_PARAMS_BIND_HPP_
+#define BOOST_LOCAL_AUX_PP_SIGN_PARAMS_BIND_HPP_
+
+#include "parsed_params_/index.hpp"
+#include <boost/preprocessor/tuple/elem.hpp>
+
+#define BOOST_LOCAL_AUX_PP_SIGN_PARAMS_BIND(params) \
+ BOOST_PP_TUPLE_ELEM(BOOST_LOCAL_AUX_PP_SIGN_PARSED_PARAMS_INDEX_MAX, \
+ BOOST_LOCAL_AUX_PP_SIGN_PARSED_PARAMS_INDEX_BIND, \
+ params)
+
+#define BOOST_LOCAL_AUX_PP_SIGN_PARAMS_HAS_BIND(params) \
+ BOOST_PP_GREATER(BOOST_PP_SEQ_SIZE( /* size > 1 because nil-seq */ \
+ BOOST_LOCAL_AUX_PP_SIGN_PARAMS_BIND(params)), 1)
+
+#define BOOST_LOCAL_AUX_PP_SIGN_PARAMS_BIND_THIS_COUNT(params) \
+ BOOST_PP_TUPLE_ELEM(BOOST_LOCAL_AUX_PP_SIGN_PARSED_PARAMS_INDEX_MAX, \
+ BOOST_LOCAL_AUX_PP_SIGN_PARSED_PARAMS_INDEX_BIND_THIS_COUNT, \
+ params)
+
+#define BOOST_LOCAL_AUX_PP_SIGN_PARAMS_HAS_BIND_THIS(params) \
+ BOOST_PP_GREATER(BOOST_LOCAL_AUX_PP_SIGN_PARAMS_BIND_THIS_COUNT( \
+ params), 0)
+
+#endif // #include guard
+

Added: sandbox/local/libs/local/params_name/boost/local/aux_/preprocessor/sign/params_const_bind.hpp
==============================================================================
--- (empty file)
+++ sandbox/local/libs/local/params_name/boost/local/aux_/preprocessor/sign/params_const_bind.hpp 2011-02-16 11:13:35 EST (Wed, 16 Feb 2011)
@@ -0,0 +1,29 @@
+
+#ifndef BOOST_LOCAL_AUX_PP_SIGN_PARAMS_CONST_BIND_HPP_
+#define BOOST_LOCAL_AUX_PP_SIGN_PARAMS_CONST_BIND_HPP_
+
+#include "parsed_params_/index.hpp"
+#include <boost/preprocessor/tuple/elem.hpp>
+#include <boost/preprocessor/seq/size.hpp>
+#include <boost/preprocessor/comparison/greater.hpp>
+
+#define BOOST_LOCAL_AUX_PP_SIGN_PARAMS_CONST_BIND(params) \
+ BOOST_PP_TUPLE_ELEM(BOOST_LOCAL_AUX_PP_SIGN_PARSED_PARAMS_INDEX_MAX, \
+ BOOST_LOCAL_AUX_PP_SIGN_PARSED_PARAMS_INDEX_CONST_BIND, \
+ params)
+
+#define BOOST_LOCAL_AUX_PP_SIGN_PARAMS_HAS_CONST_BIND(params) \
+ BOOST_PP_GREATER(BOOST_PP_SEQ_SIZE( /* size > 1 because nil-seq */ \
+ BOOST_LOCAL_AUX_PP_SIGN_PARAMS_CONST_BIND(params)), 1)
+
+#define BOOST_LOCAL_AUX_PP_SIGN_PARAMS_CONST_BIND_THIS_COUNT(params) \
+ BOOST_PP_TUPLE_ELEM(BOOST_LOCAL_AUX_PP_SIGN_PARSED_PARAMS_INDEX_MAX, \
+ BOOST_LOCAL_AUX_PP_SIGN_PARSED_PARAMS_INDEX_CONST_BIND_THIS_COUNT, \
+ params)
+
+#define BOOST_LOCAL_AUX_PP_SIGN_PARAMS_HAS_CONST_BIND_THIS(params) \
+ BOOST_PP_GREATER(BOOST_LOCAL_AUX_PP_SIGN_PARAMS_CONST_BIND_THIS_COUNT( \
+ params), 0)
+
+#endif // #include guard
+

Added: sandbox/local/libs/local/params_name/boost/local/aux_/preprocessor/sign/params_error.hpp
==============================================================================
--- (empty file)
+++ sandbox/local/libs/local/params_name/boost/local/aux_/preprocessor/sign/params_error.hpp 2011-02-16 11:13:35 EST (Wed, 16 Feb 2011)
@@ -0,0 +1,24 @@
+
+#ifndef BOOST_LOCAL_AUX_PP_SIGN_PARAMS_ERROR_HPP_
+#define BOOST_LOCAL_AUX_PP_SIGN_PARAMS_ERROR_HPP_
+
+#include "parsed_params_/index.hpp"
+#include <boost/preprocessor/tuple/elem.hpp>
+#include <boost/preprocessor/facilities/is_empty.hpp>
+#include <boost/preprocessor/logical/not.hpp>
+
+// Expand to `EMPTY` if no error, to `ERROR_message_text EMPTY` otherwise.
+#define BOOST_LOCAL_AUX_PP_SIGN_PARAMS_ERROR(params) \
+ BOOST_PP_TUPLE_ELEM(BOOST_LOCAL_AUX_PP_SIGN_PARSED_PARAMS_INDEX_MAX, \
+ BOOST_LOCAL_AUX_PP_SIGN_PARSED_PARAMS_INDEX_ERROR, \
+ params)
+
+#define BOOST_LOCAL_AUX_PP_SIGN_PARAMS_ERROR_MSG(params) \
+ BOOST_LOCAL_AUX_PP_SIGN_PARAMS_ERROR(params)(/* expand empty */)
+
+#define BOOST_LOCAL_AUX_PP_SIGN_PARAMS_HAVE_ERROR(params) \
+ BOOST_PP_NOT(BOOST_PP_IS_EMPTY(BOOST_LOCAL_AUX_PP_SIGN_PARAMS_ERROR_MSG( \
+ params)))
+
+#endif // #include guard
+

Added: sandbox/local/libs/local/params_name/boost/local/aux_/preprocessor/sign/params_unbind.hpp
==============================================================================
--- (empty file)
+++ sandbox/local/libs/local/params_name/boost/local/aux_/preprocessor/sign/params_unbind.hpp 2011-02-16 11:13:35 EST (Wed, 16 Feb 2011)
@@ -0,0 +1,40 @@
+
+#ifndef BOOST_LOCAL_AUX_PP_SIGN_PARAMS_UNBIND_HPP_
+#define BOOST_LOCAL_AUX_PP_SIGN_PARAMS_UNBIND_HPP_
+
+#include "parsed_params_/index.hpp"
+#include <boost/preprocessor/tuple/elem.hpp>
+
+// Private API.
+
+// Param 2-tuple `([auto | register] type name, default_value)`.
+#define BOOST_LOCAL_AUX_PP_SIGN_PARAMS_UNBIND_PARAM_INDEX_DECL_ 0
+#define BOOST_LOCAL_AUX_PP_SIGN_PARAMS_UNBIND_PARAM_INDEX_DEFAULT_ 1
+#define BOOST_LOCAL_AUX_PP_SIGN_PARAMS_UNBIND_PARAM_INDEX_MAX_ 2
+
+// Public API.
+
+// Expand to param declaration: [auto | register] type name.
+#define BOOST_LOCAL_AUX_PP_SIGN_PARAMS_UNBIND_PARAM_DECL(param) \
+ BOOST_PP_TUPLE_ELEM( \
+ BOOST_LOCAL_AUX_PP_SIGN_PARAMS_UNBIND_PARAM_INDEX_MAX_, \
+ BOOST_LOCAL_AUX_PP_SIGN_PARAMS_UNBIND_PARAM_INDEX_DECL_, param)
+
+// Expand to param default value (empty if none).
+#define BOOST_LOCAL_AUX_PP_SIGN_PARAMS_UNBIND_PARAM_DEFAULT(param) \
+ BOOST_PP_TUPLE_ELEM( \
+ BOOST_LOCAL_AUX_PP_SIGN_PARAMS_UNBIND_PARAM_INDEX_MAX_, \
+ BOOST_LOCAL_AUX_PP_SIGN_PARAMS_UNBIND_PARAM_INDEX_DEFAULT_, param)
+
+// Expand to 1 if param has default value, 0 otherwise.
+#define BOOST_LOCAL_AUX_PP_SIGN_PARAMS_UNBIND_PARAM_HAS_DEFAULT(param) \
+ BOOST_PP_IF_EMPTY(BOOST_LOCAL_AUX_PP_SIGN_PARAMS_UNBIND_PARAM_DEFAULT( \
+ param) (/* expand empty */) )
+
+// Expand to nil-seq of ALL unbind params.
+#define BOOST_LOCAL_AUX_PP_SIGN_PARAMS_UNBIND(params) \
+ BOOST_PP_TUPLE_ELEM(BOOST_LOCAL_AUX_PP_SIGN_PARSED_PARAMS_INDEX_MAX, \
+ BOOST_LOCAL_AUX_PP_SIGN_PARSED_PARAMS_INDEX_UNBIND, params)
+
+#endif // #include guard
+

Added: sandbox/local/libs/local/params_name/boost/local/aux_/preprocessor/sign/parse_params.hpp
==============================================================================
--- (empty file)
+++ sandbox/local/libs/local/params_name/boost/local/aux_/preprocessor/sign/parse_params.hpp 2011-02-16 11:13:35 EST (Wed, 16 Feb 2011)
@@ -0,0 +1,30 @@
+
+#ifndef BOOST_LOCAL_AUX_PP_SIGN_PARSE_PARAMS_HPP_
+#define BOOST_LOCAL_AUX_PP_SIGN_PARSE_PARAMS_HPP_
+
+#include "parse_params_/is_void.hpp"
+#include "parse_params_/seq.hpp"
+#include "parsed_params_/nil.hpp"
+#include <boost/preprocessor/control/iif.hpp>
+
+// Private API.
+
+#define BOOST_LOCAL_AUX_PP_SIGN_PARSE_PARAMS_NONE_(unused) \
+ BOOST_LOCAL_AUX_PP_SIGN_PARSED_PARAMS_NIL
+
+// Public API.
+
+// parenthesized_params: Empty ``, or `void`, or `(void)` for no params
+// Or, `{([auto | register] param_type param_name)[(default default_value)]
+// | ([const] bind [&] bind_name}+` where `bind_name` can be `this` (but not
+// `&this` as usual in C++).
+#define BOOST_LOCAL_AUX_PP_SIGN_PARSE_PARAMS(parenthesized_params) \
+ BOOST_PP_IIF(BOOST_LOCAL_AUX_PP_SIGN_PARSE_PARAMS_IS_VOID( \
+ parenthesized_params), \
+ BOOST_LOCAL_AUX_PP_SIGN_PARSE_PARAMS_NONE_ \
+ , \
+ BOOST_LOCAL_AUX_PP_SIGN_PARSE_PARAMS_SEQ \
+ )(parenthesized_params)
+
+#endif // #include guard
+

Added: sandbox/local/libs/local/params_name/boost/local/aux_/preprocessor/sign/parse_params_/is_void.hpp
==============================================================================
--- (empty file)
+++ sandbox/local/libs/local/params_name/boost/local/aux_/preprocessor/sign/parse_params_/is_void.hpp 2011-02-16 11:13:35 EST (Wed, 16 Feb 2011)
@@ -0,0 +1,40 @@
+
+#ifndef BOOST_LOCAL_AUX_PP_SIGN_PARSE_PARAMS_IS_VOID_HPP_
+#define BOOST_LOCAL_AUX_PP_SIGN_PARSE_PARAMS_IS_VOID_HPP_
+
+#include <boost/detail/preprocessor/keyword/void.hpp>
+#include <boost/preprocessor/detail/is_unary.hpp>
+#include <boost/preprocessor/control/iif.hpp>
+#include <boost/preprocessor/facilities/is_empty.hpp>
+#include <boost/preprocessor/facilities/empty.hpp>
+#include <boost/preprocessor/seq.hpp> // For `SEQ_HEAD`.
+
+// Private API.
+
+#define BOOST_LOCAL_AUX_PP_SIGN_PARSE_PARAMS_IS_VOID_TOKEN_(token) \
+ BOOST_PP_IIF(BOOST_PP_IS_EMPTY(token), \
+ 1 /* handles empty params `()` as no params (C99 only) */ \
+ BOOST_PP_EMPTY \
+ , \
+ BOOST_DETAIL_PP_KEYWORD_IS_VOID_FRONT \
+ )(token)
+
+#define BOOST_LOCLAL_AUX_PP_SIGN_PARSE_PARAMS_IS_VOID_SEQ_(params_seq) \
+ BOOST_LOCAL_AUX_PP_SIGN_PARSE_PARAMS_IS_VOID_TOKEN_( \
+ BOOST_PP_SEQ_HEAD(params_seq))
+
+// Public API.
+
+// Check is specified parenthesized params are empty (or void) list.
+// Expand to 1 iff params_seq is empty (C99 only), or `void` (supported also
+// for C++ but similar to unparenthesized paramter syntax for C99), or `(void)`
+// (parenthesized parameter syntax for C++).
+#define BOOST_LOCAL_AUX_PP_SIGN_PARSE_PARAMS_IS_VOID(parenthesized_params) \
+ BOOST_PP_IIF(BOOST_PP_IS_UNARY(parenthesized_params), \
+ BOOST_LOCLAL_AUX_PP_SIGN_PARSE_PARAMS_IS_VOID_SEQ_ \
+ , /* else, it's a sequence */ \
+ BOOST_LOCAL_AUX_PP_SIGN_PARSE_PARAMS_IS_VOID_TOKEN_ \
+ )(parenthesized_params)
+
+#endif // #include guard
+

Added: sandbox/local/libs/local/params_name/boost/local/aux_/preprocessor/sign/parse_params_/seq.hpp
==============================================================================
--- (empty file)
+++ sandbox/local/libs/local/params_name/boost/local/aux_/preprocessor/sign/parse_params_/seq.hpp 2011-02-16 11:13:35 EST (Wed, 16 Feb 2011)
@@ -0,0 +1,38 @@
+
+#ifndef BOOST_LOCAL_AUX_PP_SIGN_PARSE_PARAMS_SEQ_HPP_
+#define BOOST_LOCAL_AUX_PP_SIGN_PARSE_PARAMS_SEQ_HPP_
+
+#include "seq_validate.hpp"
+#include "seq_valid.hpp"
+#include "../parsed_params_/nil.hpp"
+#include "../parsed_params_/set_error.hpp"
+#include "../parsed_params_/validate.hpp"
+#include <boost/preprocessor/control/iif.hpp>
+#include <boost/preprocessor/facilities/is_empty.hpp>
+
+// Private API.
+
+#define BOOST_LOCAL_AUX_PP_SIGN_PARSE_PARAMS_SEQ_YES_(params_seq, unused) \
+ BOOST_LOCAL_AUX_PP_SIGN_PARSED_PARAMS_VALIDATE( \
+ BOOST_LOCAL_AUX_PP_SIGN_PARSE_PARAMS_SEQ_VALID(params_seq))
+
+#define BOOST_LOCAL_AUX_PP_SIGN_PARSE_PARAMS_SEQ_NO_(unused, error) \
+ BOOST_LOCAL_AUX_PP_SIGN_PARSED_PARAMS_SET_ERROR( \
+ BOOST_LOCAL_AUX_PP_SIGN_PARSED_PARAMS_NIL, error)
+
+#define BOOST_LOCAL_AUX_PP_SIGN_PARSE_PARAMS_SEQ_( \
+ params_seq, defaults_error) \
+ BOOST_PP_IIF(BOOST_PP_IS_EMPTY(defaults_error (/* expand empty */)), \
+ BOOST_LOCAL_AUX_PP_SIGN_PARSE_PARAMS_SEQ_YES_ \
+ , \
+ BOOST_LOCAL_AUX_PP_SIGN_PARSE_PARAMS_SEQ_NO_ \
+ )(params_seq, defaults_error)
+
+// Public API.
+
+#define BOOST_LOCAL_AUX_PP_SIGN_PARSE_PARAMS_SEQ(params_seq) \
+ BOOST_LOCAL_AUX_PP_SIGN_PARSE_PARAMS_SEQ_(params_seq, \
+ BOOST_LOCAL_AUX_PP_SIGN_PARSE_PARAMS_SEQ_VALIDATE(params_seq))
+
+#endif // #include guard
+

Added: sandbox/local/libs/local/params_name/boost/local/aux_/preprocessor/sign/parse_params_/seq_valid.hpp
==============================================================================
--- (empty file)
+++ sandbox/local/libs/local/params_name/boost/local/aux_/preprocessor/sign/parse_params_/seq_valid.hpp 2011-02-16 11:13:35 EST (Wed, 16 Feb 2011)
@@ -0,0 +1,92 @@
+
+#ifndef BOOST_LOCAL_AUX_PP_SIGN_PARSE_PARAMS_SEQ_VALID_HPP_
+#define BOOST_LOCAL_AUX_PP_SIGN_PARSE_PARAMS_SEQ_VALID_HPP_
+
+#include "../parsed_params_/nil.hpp"
+#include "../parsed_params_/append_unbind.hpp"
+#include "../parsed_params_/append_unbind_default.hpp"
+#include "../parsed_params_/append_const_bind.hpp"
+#include "../parsed_params_/inc_const_bind_this_count.hpp"
+#include "../parsed_params_/append_bind.hpp"
+#include "../parsed_params_/inc_bind_this_count.hpp"
+#include "../../keyword/const_bind.hpp"
+#include "../../keyword/bind.hpp"
+#include <boost/detail/preprocessor/keyword/default.hpp>
+#include <boost/detail/preprocessor/keyword/this.hpp>
+#include <boost/preprocessor/control/iif.hpp>
+
+// Private: Unbound.
+
+#define BOOST_LOCAL_AUX_PP_SIGN_PARSE_PARAMS_SEQ_VALID_UNBIND_DEFAULT_( \
+ params, elem) \
+ BOOST_LOCAL_AUX_PP_SIGN_PARSED_PARAMS_APPEND_UNBIND_DEFAULT(params, \
+ BOOST_DETAIL_PP_KEYWORD_DEFAULT_REMOVE_FRONT(elem))
+
+#define BOOST_LOCAL_AUX_PP_SIGN_PARSE_PARAMS_SEQ_VALID_UNBIND_(params, elem) \
+ BOOST_LOCAL_AUX_PP_SIGN_PARSED_PARAMS_APPEND_UNBIND(params, elem)
+
+// Private: Parse const binds.
+
+#define BOOST_LOCAL_AUX_PP_SIGN_PARSE_PARAMS_SEQ_VALID_CONST_BIND_THIS_( \
+ params, elem) \
+ BOOST_LOCAL_AUX_PP_SIGN_PARSED_PARAMS_INC_CONST_BIND_THIS_COUNT(params)
+
+#define BOOST_LOCAL_AUX_PP_SIGN_PARSE_PARAMS_SEQ_VALID_CONST_BIND_VAR_( \
+ params, elem) \
+ BOOST_LOCAL_AUX_PP_SIGN_PARSED_PARAMS_APPEND_CONST_BIND(params, \
+ BOOST_LOCAL_AUX_PP_KEYWORD_CONST_BIND_REMOVE_FRONT(elem))
+
+#define BOOST_LOCAL_AUX_PP_SIGN_PARSE_PARAMS_SEQ_VALID_CONST_BIND_( \
+ params, elem) \
+ /* check from back because non `this` bounds might have `&` in front */ \
+ BOOST_PP_IIF(BOOST_DETAIL_PP_KEYWORD_IS_THIS_BACK( \
+ BOOST_LOCAL_AUX_PP_KEYWORD_CONST_BIND_REMOVE_FRONT(elem)), \
+ BOOST_LOCAL_AUX_PP_SIGN_PARSE_PARAMS_SEQ_VALID_CONST_BIND_THIS_ \
+ , \
+ BOOST_LOCAL_AUX_PP_SIGN_PARSE_PARAMS_SEQ_VALID_CONST_BIND_VAR_ \
+ )(params, elem)
+
+// Private: Parse binds.
+
+#define BOOST_LOCAL_AUX_PP_SIGN_PARSE_PARAMS_SEQ_VALID_BIND_VAR_(params, elem) \
+ BOOST_LOCAL_AUX_PP_SIGN_PARSED_PARAMS_APPEND_BIND(params, \
+ BOOST_LOCAL_AUX_PP_KEYWORD_BIND_REMOVE_FRONT(elem))
+
+#define BOOST_LOCAL_AUX_PP_SIGN_PARSE_PARAMS_SEQ_VALID_BIND_THIS_( \
+ params, elem) \
+ BOOST_LOCAL_AUX_PP_SIGN_PARSED_PARAMS_INC_BIND_THIS_COUNT(params)
+
+#define BOOST_LOCAL_AUX_PP_SIGN_PARSE_PARAMS_SEQ_VALID_BIND_(params, elem) \
+ /* check from back because non `this` bounds might have `&` in front */ \
+ BOOST_PP_IIF(BOOST_DETAIL_PP_KEYWORD_IS_THIS_BACK( \
+ BOOST_LOCAL_AUX_PP_KEYWORD_BIND_REMOVE_FRONT(elem)), \
+ BOOST_LOCAL_AUX_PP_SIGN_PARSE_PARAMS_SEQ_VALID_BIND_THIS_ \
+ , \
+ BOOST_LOCAL_AUX_PP_SIGN_PARSE_PARAMS_SEQ_VALID_BIND_VAR_ \
+ )(params, elem)
+
+// Private: Parse all elements.
+
+#define BOOST_LOCAL_AUX_PP_SIGN_PARSE_PARAMS_SEQ_VALID_(s, params, elem) \
+ BOOST_PP_IIF(BOOST_LOCAL_AUX_PP_KEYWORD_IS_BIND_FRONT(elem), \
+ BOOST_LOCAL_AUX_PP_SIGN_PARSE_PARAMS_SEQ_VALID_BIND_ \
+ , BOOST_PP_IIF(BOOST_LOCAL_AUX_PP_KEYWORD_IS_CONST_BIND_FRONT(elem), \
+ BOOST_LOCAL_AUX_PP_SIGN_PARSE_PARAMS_SEQ_VALID_CONST_BIND_ \
+ , BOOST_PP_IIF(BOOST_DETAIL_PP_KEYWORD_IS_DEFAULT_FRONT(elem), \
+ BOOST_LOCAL_AUX_PP_SIGN_PARSE_PARAMS_SEQ_VALID_UNBIND_DEFAULT_ \
+ , \
+ BOOST_LOCAL_AUX_PP_SIGN_PARSE_PARAMS_SEQ_VALID_UNBIND_ \
+ )))(params, elem)
+
+// Public API.
+
+// Parse param seq after following precondition has been validated by caller.
+// Precondition: If seq contains a default param value `... (default ...) ...`,
+// the default value element is never 1st (it always has a previous elem) and
+// its previous element is a unbind param (no const-bind and no bind).
+#define BOOST_LOCAL_AUX_PP_SIGN_PARSE_PARAMS_SEQ_VALID(params_seq) \
+ BOOST_PP_SEQ_FOLD_LEFT(BOOST_LOCAL_AUX_PP_SIGN_PARSE_PARAMS_SEQ_VALID_, \
+ BOOST_LOCAL_AUX_PP_SIGN_PARSED_PARAMS_NIL, params_seq)
+
+#endif // #include guard
+

Added: sandbox/local/libs/local/params_name/boost/local/aux_/preprocessor/sign/parse_params_/seq_validate.hpp
==============================================================================
--- (empty file)
+++ sandbox/local/libs/local/params_name/boost/local/aux_/preprocessor/sign/parse_params_/seq_validate.hpp 2011-02-16 11:13:35 EST (Wed, 16 Feb 2011)
@@ -0,0 +1,12 @@
+
+#ifndef BOOST_LOCAL_AUX_PP_PARSE_PARAMS_SEQ_VALIDATE_HPP_
+#define BOOST_LOCAL_AUX_PP_PARSE_PARAMS_SEQ_VALIDATE_HPP_
+
+#include "seq_validate_/defaults.hpp"
+
+// Validate params seq before starting to parse it.
+#define BOOST_LOCAL_AUX_PP_SIGN_PARSE_PARAMS_SEQ_VALIDATE(params_seq) \
+ BOOST_LOCAL_AUX_PP_SIGN_PARSE_PARAMS_SEQ_VALIDATE_DEFAULTS(params_seq)
+
+#endif // #include guard
+

Added: sandbox/local/libs/local/params_name/boost/local/aux_/preprocessor/sign/parse_params_/seq_validate_/defaults.hpp
==============================================================================
--- (empty file)
+++ sandbox/local/libs/local/params_name/boost/local/aux_/preprocessor/sign/parse_params_/seq_validate_/defaults.hpp 2011-02-16 11:13:35 EST (Wed, 16 Feb 2011)
@@ -0,0 +1,116 @@
+
+#ifndef BOOST_LOCAL_AUX_PP_PARSE_PARAMS_SEQ_VALIDATE_DEFAULTS_HPP_
+#define BOOST_LOCAL_AUX_PP_PARSE_PARAMS_SEQ_VALIDATE_DEFAULTS_HPP_
+
+#include "../../../keyword/const_bind.hpp"
+#include "../../../keyword/bind.hpp"
+#include <boost/detail/preprocessor/keyword/default.hpp>
+#include <boost/preprocessor/tuple/elem.hpp>
+#include <boost/preprocessor/control/while.hpp>
+#include <boost/preprocessor/control/iif.hpp>
+#include <boost/preprocessor/control/if.hpp>
+#include <boost/preprocessor/facilities/empty.hpp>
+#include <boost/preprocessor/facilities/is_empty.hpp>
+#include <boost/preprocessor/logical/bitand.hpp>
+#include <boost/preprocessor/logical/bitor.hpp>
+#include <boost/preprocessor/logical/not.hpp>
+#include <boost/preprocessor/comparison/less.hpp>
+#include <boost/preprocessor/arithmetic/inc.hpp>
+#include <boost/preprocessor/arithmetic/dec.hpp>
+#include <boost/preprocessor/seq/size.hpp>
+#include <boost/preprocessor/seq/elem.hpp>
+#include <boost/preprocessor/tuple/eat.hpp>
+#include <boost/preprocessor/cat.hpp>
+#include <boost/preprocessor/facilities/expand.hpp>
+
+// Private API.
+
+#define BOOST_LOCAL_AUX_PP_SIGN_PARSE_PARAMS_SEQ_VALIDATE_DEFAULTS_IS_UNBIND_( \
+ elem) \
+ /* PP_OR/PP_BITOR (instead of IIF) don't expand on MSVC */ \
+ BOOST_PP_IIF(BOOST_DETAIL_PP_KEYWORD_IS_DEFAULT_FRONT(elem), \
+ 0 \
+ , BOOST_PP_IIF(BOOST_LOCAL_AUX_PP_KEYWORD_IS_CONST_BIND_FRONT(elem), \
+ 0 \
+ , BOOST_PP_IIF(BOOST_LOCAL_AUX_PP_KEYWORD_IS_BIND_FRONT(elem), \
+ 0 \
+ , \
+ 1 \
+ )))
+
+#define BOOST_LOCAL_AUX_PP_SIGN_PARSE_PARAMS_SEQ_VALIDATE_DEFAULTS_PREV_( \
+ params_seq, index, error) \
+ BOOST_PP_IIF( \
+ BOOST_LOCAL_AUX_PP_SIGN_PARSE_PARAMS_SEQ_VALIDATE_DEFAULTS_IS_UNBIND_( \
+ BOOST_PP_SEQ_ELEM(BOOST_PP_DEC(index), params_seq)), \
+ error /* no err, fwd existing one if any */ \
+ , \
+ BOOST_PP_CAT(BOOST_PP_CAT(ERROR_default_value_at_element_, \
+ BOOST_PP_INC(index)), _must_follow_an_unbound_parameter) \
+ BOOST_PP_EMPTY /* because error might not be present */ \
+ )
+
+#define BOOST_LOCAL_AUX_PP_SIGN_PARSE_PARAMS_SEQ_VALIDATE_DEFAULTS_INDEX_( \
+ params_seq, index, error) \
+ BOOST_PP_IF(index, /* can't use IIF because index can be any number */ \
+ BOOST_LOCAL_AUX_PP_SIGN_PARSE_PARAMS_SEQ_VALIDATE_DEFAULTS_PREV_ \
+ , \
+ ERROR_default_value_cannot_be_specified_as_the_first_element \
+ BOOST_PP_EMPTY /* because error might not be present */ \
+ BOOST_PP_TUPLE_EAT(3) \
+ )(params_seq, index, error)
+
+// Private: While's operation.
+
+#define BOOST_LOCAL_AUX_PP_SIGN_PARSE_PARAMS_SEQ_VALIDATE_DEFAULTS_OP_DATA_( \
+ params_seq, index, error) \
+ ( \
+ params_seq \
+ , \
+ BOOST_PP_INC(index) \
+ , \
+ BOOST_PP_IIF(BOOST_DETAIL_PP_KEYWORD_IS_DEFAULT_FRONT( \
+ BOOST_PP_SEQ_ELEM(index, params_seq)), \
+ BOOST_LOCAL_AUX_PP_SIGN_PARSE_PARAMS_SEQ_VALIDATE_DEFAULTS_INDEX_ \
+ , \
+ error BOOST_PP_TUPLE_EAT(3) /* no err, fwd existing one if any */\
+ )(params_seq, index, error) \
+ )
+
+#define BOOST_LOCAL_AUX_PP_SIGN_PARSE_PARAMS_SEQ_VALIDATE_DEFAULTS_OP_(d, \
+ params_index_error) \
+ BOOST_LOCAL_AUX_PP_SIGN_PARSE_PARAMS_SEQ_VALIDATE_DEFAULTS_OP_DATA_( \
+ BOOST_PP_TUPLE_ELEM(3, 0, params_index_error), \
+ BOOST_PP_TUPLE_ELEM(3, 1, params_index_error), \
+ BOOST_PP_TUPLE_ELEM(3, 2, params_index_error))
+
+// Private: While's predicate.
+
+#define BOOST_LOCAL_AUX_PP_SIGN_PARSE_PARAMS_SEQ_VALIDATE_DEFAULTS_PRED_DATA_( \
+ params_seq, index, error) \
+ BOOST_PP_BITAND( \
+ BOOST_PP_IS_EMPTY(error (/* expand empty */) ) \
+ , BOOST_PP_LESS(index, BOOST_PP_SEQ_SIZE(params_seq)) \
+ )
+
+#define BOOST_LOCAL_AUX_PP_SIGN_PARSE_PARAMS_SEQ_VALIDATE_DEFAULTS_PRED_(d, \
+ params_index_error) \
+ BOOST_LOCAL_AUX_PP_SIGN_PARSE_PARAMS_SEQ_VALIDATE_DEFAULTS_PRED_DATA_( \
+ BOOST_PP_TUPLE_ELEM(3, 0, params_index_error), \
+ BOOST_PP_TUPLE_ELEM(3, 1, params_index_error), \
+ BOOST_PP_TUPLE_ELEM(3, 2, params_index_error))
+
+// Public API.
+
+// Validate parameter sequence's default values: `default ...` cannot be 1st
+// element and it must follow an unbind param.
+// Expand to `EMPTY` if no error, or `ERROR_message EMPTY` if error.
+#define BOOST_LOCAL_AUX_PP_SIGN_PARSE_PARAMS_SEQ_VALIDATE_DEFAULTS( \
+ params_seq) \
+ BOOST_PP_TUPLE_ELEM(3, 2, BOOST_PP_WHILE( \
+ BOOST_LOCAL_AUX_PP_SIGN_PARSE_PARAMS_SEQ_VALIDATE_DEFAULTS_PRED_, \
+ BOOST_LOCAL_AUX_PP_SIGN_PARSE_PARAMS_SEQ_VALIDATE_DEFAULTS_OP_, \
+ (params_seq, 0, BOOST_PP_EMPTY)))
+
+#endif // #include guard
+

Added: sandbox/local/libs/local/params_name/boost/local/aux_/preprocessor/sign/parsed_params_/append_bind.hpp
==============================================================================
--- (empty file)
+++ sandbox/local/libs/local/params_name/boost/local/aux_/preprocessor/sign/parsed_params_/append_bind.hpp 2011-02-16 11:13:35 EST (Wed, 16 Feb 2011)
@@ -0,0 +1,28 @@
+
+#ifndef BOOST_LOCAL_AUX_PP_SIGN_PARSED_PARAMS_APPEND_BIND_HPP_
+#define BOOST_LOCAL_AUX_PP_SIGN_PARSED_PARAMS_APPEND_BIND_HPP_
+
+#include "../params_unbind.hpp"
+#include "../params_bind.hpp"
+#include "../params_const_bind.hpp"
+
+// bind_qualified_name: [&] name
+#define BOOST_LOCAL_AUX_PP_SIGN_PARSED_PARAMS_APPEND_BIND( \
+ params, bind_qualified_name) \
+ ( /* unbind params and defaults */ \
+ BOOST_LOCAL_AUX_PP_SIGN_PARAMS_UNBIND(params) \
+ , /* const-bind names */ \
+ BOOST_LOCAL_AUX_PP_SIGN_PARAMS_CONST_BIND(params) \
+ , /* const-bind `this` count */ \
+ BOOST_LOCAL_AUX_PP_SIGN_PARAMS_CONST_BIND_THIS_COUNT(params) \
+ , /* bind names */ \
+ BOOST_LOCAL_AUX_PP_SIGN_PARAMS_BIND(params) \
+ (bind_qualified_name) /* append */ \
+ , /* bind `this` count */ \
+ BOOST_LOCAL_AUX_PP_SIGN_PARAMS_BIND_THIS_COUNT(params) \
+ , /* error message (if any) */ \
+ BOOST_LOCAL_AUX_PP_SIGN_PARAMS_ERROR(params) \
+ )
+
+#endif // #include guard
+

Added: sandbox/local/libs/local/params_name/boost/local/aux_/preprocessor/sign/parsed_params_/append_const_bind.hpp
==============================================================================
--- (empty file)
+++ sandbox/local/libs/local/params_name/boost/local/aux_/preprocessor/sign/parsed_params_/append_const_bind.hpp 2011-02-16 11:13:35 EST (Wed, 16 Feb 2011)
@@ -0,0 +1,28 @@
+
+#ifndef BOOST_LOCAL_AUX_PP_SIGN_PARSED_PARAMS_APPEND_CONST_BIND_HPP_
+#define BOOST_LOCAL_AUX_PP_SIGN_PARSED_PARAMS_APPEND_CONST_BIND_HPP_
+
+#include "../params_unbind.hpp"
+#include "../params_bind.hpp"
+#include "../params_const_bind.hpp"
+
+// const_bind_qualified_name: [&] name (with name != `this`)
+#define BOOST_LOCAL_AUX_PP_SIGN_PARSED_PARAMS_APPEND_CONST_BIND( \
+ params, const_bind_qualified_name) \
+ ( /* unbind params and defaults */ \
+ BOOST_LOCAL_AUX_PP_SIGN_PARAMS_UNBIND(params) \
+ , /* const-bind names */ \
+ BOOST_LOCAL_AUX_PP_SIGN_PARAMS_CONST_BIND(params) \
+ (const_bind_qualified_name) /* append */ \
+ , /* const-bind `this` count */ \
+ BOOST_LOCAL_AUX_PP_SIGN_PARAMS_CONST_BIND_THIS_COUNT(params) \
+ , /* bind names */ \
+ BOOST_LOCAL_AUX_PP_SIGN_PARAMS_BIND(params) \
+ , /* bind `this` count */ \
+ BOOST_LOCAL_AUX_PP_SIGN_PARAMS_BIND_THIS_COUNT(params) \
+ , /* error message (if any) */ \
+ BOOST_LOCAL_AUX_PP_SIGN_PARAMS_ERROR(params) \
+ )
+
+#endif // #include guard
+

Added: sandbox/local/libs/local/params_name/boost/local/aux_/preprocessor/sign/parsed_params_/append_unbind.hpp
==============================================================================
--- (empty file)
+++ sandbox/local/libs/local/params_name/boost/local/aux_/preprocessor/sign/parsed_params_/append_unbind.hpp 2011-02-16 11:13:35 EST (Wed, 16 Feb 2011)
@@ -0,0 +1,30 @@
+
+#ifndef BOOST_LOCAL_AUX_PP_SIGN_PARSED_APPEND_UNBIND_HPP_
+#define BOOST_LOCAL_AUX_PP_SIGN_PARSED_APPEND_UNBIND_HPP_
+
+#include "../params_unbind.hpp"
+#include "../params_bind.hpp"
+#include "../params_const_bind.hpp"
+#include <boost/preprocessor/facilities/empty.hpp>
+
+// unbind_classified_type_and_name: [auto | register] type name
+#define BOOST_LOCAL_AUX_PP_SIGN_PARSED_PARAMS_APPEND_UNBIND( \
+ params, unbind_classified_type_and_name) \
+ ( /* unbind params and defaults */ \
+ BOOST_LOCAL_AUX_PP_SIGN_PARAMS_UNBIND(params) \
+ /* append param (with no default -- EMPTY) */ \
+ ((unbind_classified_type_and_name, BOOST_PP_EMPTY)) \
+ , /* const-bind names */ \
+ BOOST_LOCAL_AUX_PP_SIGN_PARAMS_CONST_BIND(params) \
+ , /* const-bind `this` count */ \
+ BOOST_LOCAL_AUX_PP_SIGN_PARAMS_CONST_BIND_THIS_COUNT(params) \
+ , /* bind names */ \
+ BOOST_LOCAL_AUX_PP_SIGN_PARAMS_BIND(params) \
+ , /* bind `this` count */ \
+ BOOST_LOCAL_AUX_PP_SIGN_PARAMS_BIND_THIS_COUNT(params) \
+ , /* error message (if any) */ \
+ BOOST_LOCAL_AUX_PP_SIGN_PARAMS_ERROR(params) \
+ )
+
+#endif // #include guard
+

Added: sandbox/local/libs/local/params_name/boost/local/aux_/preprocessor/sign/parsed_params_/append_unbind_default.hpp
==============================================================================
--- (empty file)
+++ sandbox/local/libs/local/params_name/boost/local/aux_/preprocessor/sign/parsed_params_/append_unbind_default.hpp 2011-02-16 11:13:35 EST (Wed, 16 Feb 2011)
@@ -0,0 +1,51 @@
+
+#ifndef BOOST_LOCAL_AUX_PP_SIGN_PARSED_APPEND_UNBIND_DEFAULT_HPP_
+#define BOOST_LOCAL_AUX_PP_SIGN_PARSED_APPEND_UNBIND_DEFAULT_HPP_
+
+#include "../params_unbind.hpp"
+#include "../params_bind.hpp"
+#include "../params_const_bind.hpp"
+#include <boost/preprocessor/facilities/empty.hpp>
+#include <boost/preprocessor/seq/pop_back.hpp>
+#include <boost/preprocessor/seq/elem.hpp>
+#include <boost/preprocessor/seq/size.hpp>
+
+// Private API.
+
+#define BOOST_LOCAL_AUX_PP_SIGN_PARSED_PARAMS_APPEND_UNBIND_DEFAULT_( \
+ unbind_nilseq, default_value) \
+ BOOST_PP_SEQ_POP_BACK(unbind_nilseq) \
+ (( /* seq of 2-tuple params */ \
+ /* last appended classifier type and name */ \
+ BOOST_LOCAL_AUX_PP_SIGN_PARAMS_UNBIND_PARAM_DECL(BOOST_PP_SEQ_ELEM( \
+ /* nil-seq so can always safely decrement size */ \
+ BOOST_PP_DEC(BOOST_PP_SEQ_SIZE(unbind_nilseq)), \
+ unbind_nilseq)) \
+ , \
+ /* trailing EMPTY because defaults are optional */ \
+ default_value BOOST_PP_EMPTY \
+ ))
+
+// Public API.
+
+// default_value: a valid parameter default value (`-1`, etc)
+#define BOOST_LOCAL_AUX_PP_SIGN_PARSED_PARAMS_APPEND_UNBIND_DEFAULT( \
+ params, default_value) \
+ ( /* unbind params and defaults */ \
+ BOOST_LOCAL_AUX_PP_SIGN_PARSED_PARAMS_APPEND_UNBIND_DEFAULT_( \
+ BOOST_LOCAL_AUX_PP_SIGN_PARAMS_UNBIND(params), \
+ default_value) /* append default to last added param */ \
+ , /* const-bind names */ \
+ BOOST_LOCAL_AUX_PP_SIGN_PARAMS_CONST_BIND(params) \
+ , /* const-bind `this` count */ \
+ BOOST_LOCAL_AUX_PP_SIGN_PARAMS_CONST_BIND_THIS_COUNT(params) \
+ , /* bind names */ \
+ BOOST_LOCAL_AUX_PP_SIGN_PARAMS_BIND(params) \
+ , /* bind `this` count */ \
+ BOOST_LOCAL_AUX_PP_SIGN_PARAMS_BIND_THIS_COUNT(params) \
+ , /* error message (if any) */ \
+ BOOST_LOCAL_AUX_PP_SIGN_PARAMS_ERROR(params) \
+ )
+
+#endif // #include guard
+

Added: sandbox/local/libs/local/params_name/boost/local/aux_/preprocessor/sign/parsed_params_/inc_bind_this_count.hpp
==============================================================================
--- (empty file)
+++ sandbox/local/libs/local/params_name/boost/local/aux_/preprocessor/sign/parsed_params_/inc_bind_this_count.hpp 2011-02-16 11:13:35 EST (Wed, 16 Feb 2011)
@@ -0,0 +1,27 @@
+
+#ifndef BOOST_LOCAL_AUX_PP_SIGN_PARSED_PARAMS_INC_BIND_THIS_COUNT_HPP_
+#define BOOST_LOCAL_AUX_PP_SIGN_PARSED_PARAMS_INC_BIND_THIS_COUNT_HPP_
+
+#include "../params_unbind.hpp"
+#include "../params_bind.hpp"
+#include "../params_const_bind.hpp"
+#include <boost/preprocessor/arithmetic/inc.hpp>
+
+#define BOOST_LOCAL_AUX_PP_SIGN_PARSED_PARAMS_INC_BIND_THIS_COUNT(params) \
+ ( /* unbind params and defaults */ \
+ BOOST_LOCAL_AUX_PP_SIGN_PARAMS_UNBIND(params) \
+ , /* const-bind names */ \
+ BOOST_LOCAL_AUX_PP_SIGN_PARAMS_CONST_BIND(params) \
+ , /* const-bind `this` count */ \
+ BOOST_LOCAL_AUX_PP_SIGN_PARAMS_CONST_BIND_THIS_COUNT(params) \
+ , /* bind names */ \
+ BOOST_LOCAL_AUX_PP_SIGN_PARAMS_BIND(params) \
+ , /* bind `this` count */ \
+ BOOST_PP_INC(BOOST_LOCAL_AUX_PP_SIGN_PARAMS_BIND_THIS_COUNT( \
+ params)) /* increment */ \
+ , /* error message (if any) */ \
+ BOOST_LOCAL_AUX_PP_SIGN_PARAMS_ERROR(params) \
+ )
+
+#endif // #include guard
+

Added: sandbox/local/libs/local/params_name/boost/local/aux_/preprocessor/sign/parsed_params_/inc_const_bind_this_count.hpp
==============================================================================
--- (empty file)
+++ sandbox/local/libs/local/params_name/boost/local/aux_/preprocessor/sign/parsed_params_/inc_const_bind_this_count.hpp 2011-02-16 11:13:35 EST (Wed, 16 Feb 2011)
@@ -0,0 +1,29 @@
+
+
+#ifndef BOOST_LOCAL_AUX_PP_SIGN_PARSED_PARAMS_INC_CONST_BIND_THIS_COUNT_HPP_
+#define BOOST_LOCAL_AUX_PP_SIGN_PARSED_PARAMS_INC_CONST_BIND_THIS_COUNT_HPP_
+
+#include "../params_unbind.hpp"
+#include "../params_bind.hpp"
+#include "../params_const_bind.hpp"
+#include <boost/preprocessor/arithmetic/inc.hpp>
+
+#define BOOST_LOCAL_AUX_PP_SIGN_PARSED_PARAMS_INC_CONST_BIND_THIS_COUNT( \
+ params) \
+ ( /* unbind params and defaults */ \
+ BOOST_LOCAL_AUX_PP_SIGN_PARAMS_UNBIND(params) \
+ , /* const-bind names */ \
+ BOOST_LOCAL_AUX_PP_SIGN_PARAMS_CONST_BIND(params) \
+ , /* const-bind `this` count */ \
+ BOOST_PP_INC(BOOST_LOCAL_AUX_PP_SIGN_PARAMS_CONST_BIND_THIS_COUNT( \
+ params)) /* increment */ \
+ , /* bind names */ \
+ BOOST_LOCAL_AUX_PP_SIGN_PARAMS_BIND(params) \
+ , /* bind `this` count */ \
+ BOOST_LOCAL_AUX_PP_SIGN_PARAMS_BIND_THIS_COUNT(params) \
+ , /* error message (if any) */ \
+ BOOST_LOCAL_AUX_PP_SIGN_PARAMS_ERROR(params) \
+ )
+
+#endif // #include guard
+

Added: sandbox/local/libs/local/params_name/boost/local/aux_/preprocessor/sign/parsed_params_/index.hpp
==============================================================================
--- (empty file)
+++ sandbox/local/libs/local/params_name/boost/local/aux_/preprocessor/sign/parsed_params_/index.hpp 2011-02-16 11:13:35 EST (Wed, 16 Feb 2011)
@@ -0,0 +1,28 @@
+
+#ifndef BOOST_LOCAL_AUX_PP_SIGN_PARSED_PARAMS_INDEX_HPP_
+#define BOOST_LOCAL_AUX_PP_SIGN_PARSED_PARAMS_INDEX_HPP_
+
+// Parameter (unbound, const-bound, and bound) tuple internal representation:
+//
+// ( // Unbound params tuple.
+// ((NIL, NIL EMPTY)) (([auto | register] ptype pname, pdflt EMPTY)) ...
+// , (NIL) ([&] var) ... // Const bound params.
+// , const_bind_this_count // Number of const bound `this`.
+// , (NIL) ([&] var) ... // Bound params (not const).
+// , bind_this_count // Number of bound `this` (not const).
+//
+// )
+//
+// ptype, pname, pdflt: Parameter types, names, and default values.
+// var: Name of a variable in scope.
+
+#define BOOST_LOCAL_AUX_PP_SIGN_PARSED_PARAMS_INDEX_UNBIND 0
+#define BOOST_LOCAL_AUX_PP_SIGN_PARSED_PARAMS_INDEX_CONST_BIND 1
+#define BOOST_LOCAL_AUX_PP_SIGN_PARSED_PARAMS_INDEX_CONST_BIND_THIS_COUNT 2
+#define BOOST_LOCAL_AUX_PP_SIGN_PARSED_PARAMS_INDEX_BIND 3
+#define BOOST_LOCAL_AUX_PP_SIGN_PARSED_PARAMS_INDEX_BIND_THIS_COUNT 4
+#define BOOST_LOCAL_AUX_PP_SIGN_PARSED_PARAMS_INDEX_ERROR 5
+#define BOOST_LOCAL_AUX_PP_SIGN_PARSED_PARAMS_INDEX_MAX 6
+
+#endif // #include guard
+

Added: sandbox/local/libs/local/params_name/boost/local/aux_/preprocessor/sign/parsed_params_/nil.hpp
==============================================================================
--- (empty file)
+++ sandbox/local/libs/local/params_name/boost/local/aux_/preprocessor/sign/parsed_params_/nil.hpp 2011-02-16 11:13:35 EST (Wed, 16 Feb 2011)
@@ -0,0 +1,28 @@
+
+#ifndef BOOST_LOCAL_AUX_PP_SIGN_PARSED_PARAMS_NIL_HPP_
+#define BOOST_LOCAL_AUX_PP_SIGN_PARSED_PARAMS_NIL_HPP_
+
+#include <boost/preprocessor/facilities/empty.hpp>
+
+// See "index_.hpp".
+#define BOOST_LOCAL_AUX_PP_SIGN_PARSED_PARAMS_NIL \
+ ( \
+ /* unbound params: nil-seq of 2-tuples */ \
+ /* `((NIL, NIL)) ((classifier_type_name, default)) ...` */ \
+ ( (BOOST_PP_NIL, BOOST_PP_NIL BOOST_PP_EMPTY) ) \
+ , \
+ /* const-binds: nil-seq of 1-tuple `(NIL) (ref_name) ...` */ \
+ (BOOST_PP_NIL) \
+ , \
+ 0 /* number of const-bind `this` */ \
+ , \
+ /* binds: nil-seq of 1-tuple `(NIL) (ref_name) ...` */ \
+ (BOOST_PP_NIL) \
+ , \
+ 0 /* number of bind `this` */ \
+ , \
+ BOOST_PP_EMPTY /* no error */ \
+ )
+
+#endif // #include guard
+

Added: sandbox/local/libs/local/params_name/boost/local/aux_/preprocessor/sign/parsed_params_/set_error.hpp
==============================================================================
--- (empty file)
+++ sandbox/local/libs/local/params_name/boost/local/aux_/preprocessor/sign/parsed_params_/set_error.hpp 2011-02-16 11:13:35 EST (Wed, 16 Feb 2011)
@@ -0,0 +1,26 @@
+
+#ifndef BOOST_LOCAL_AUX_PP_SIGN_PARSED_PARAMS_SET_ERROR_HPP_
+#define BOOST_LOCAL_AUX_PP_SIGN_PARSED_PARAMS_SET_ERROR_HPP_
+
+#include "../params_unbind.hpp"
+#include "../params_bind.hpp"
+#include "../params_const_bind.hpp"
+
+// error: `EMPTY` if no error, `ERROR_message_text EMPTY` if error.
+#define BOOST_LOCAL_AUX_PP_SIGN_PARSED_PARAMS_SET_ERROR(params, error) \
+ ( /* unbind params and defaults */ \
+ BOOST_LOCAL_AUX_PP_SIGN_PARAMS_UNBIND(params) \
+ , /* const-bind names */ \
+ BOOST_LOCAL_AUX_PP_SIGN_PARAMS_CONST_BIND(params) \
+ , /* const-bind `this` count */ \
+ BOOST_LOCAL_AUX_PP_SIGN_PARAMS_CONST_BIND_THIS_COUNT(params) \
+ , /* bind names */ \
+ BOOST_LOCAL_AUX_PP_SIGN_PARAMS_BIND(params) \
+ , /* bind `this` count */ \
+ BOOST_LOCAL_AUX_PP_SIGN_PARAMS_BIND_THIS_COUNT(params) \
+ , /* error message (if any) */ \
+ error \
+ )
+
+#endif // #include guard
+

Added: sandbox/local/libs/local/params_name/boost/local/aux_/preprocessor/sign/parsed_params_/validate.hpp
==============================================================================
--- (empty file)
+++ sandbox/local/libs/local/params_name/boost/local/aux_/preprocessor/sign/parsed_params_/validate.hpp 2011-02-16 11:13:35 EST (Wed, 16 Feb 2011)
@@ -0,0 +1,12 @@
+
+#ifndef BOOST_LOCAL_AUX_PP_SIGN_PARSED_PARAMS_VALIDATE_HPP_
+#define BOOST_LOCAL_AUX_PP_SIGN_PARSED_PARAMS_VALIDATE_HPP_
+
+#include "validate_/this_count.hpp"
+
+// Validate params after they have been parsed.
+#define BOOST_LOCAL_AUX_PP_SIGN_PARSED_PARAMS_VALIDATE(params) \
+ BOOST_LOCAL_AUX_PP_SIGN_PARSED_PARAMS_VALIDATE_THIS_COUNT(params)
+
+#endif // #include guard
+

Added: sandbox/local/libs/local/params_name/boost/local/aux_/preprocessor/sign/parsed_params_/validate_/this_count.hpp
==============================================================================
--- (empty file)
+++ sandbox/local/libs/local/params_name/boost/local/aux_/preprocessor/sign/parsed_params_/validate_/this_count.hpp 2011-02-16 11:13:35 EST (Wed, 16 Feb 2011)
@@ -0,0 +1,37 @@
+
+#ifndef BOOST_LOCAL_AUX_PP_SIGN_PARSED_PARAMS_VALIDATE_THIS_COUNT_HPP_
+#define BOOST_LOCAL_AUX_PP_SIGN_PARSED_PARAMS_VALIDATE_THIS_COUNT_HPP_
+
+#include "../set_error.hpp"
+#include "../../params_error.hpp"
+#include "../../params_const_bind.hpp"
+#include "../../params_bind.hpp"
+#include <boost/preprocessor/control/iif.hpp>
+#include <boost/preprocessor/facilities/is_empty.hpp>
+#include <boost/preprocessor/tuple/eat.hpp>
+#include <boost/preprocessor/comparison/greater.hpp>
+#include <boost/preprocessor/arithmetic/add.hpp>
+
+// Private API.
+
+#define BOOST_LOCAL_AUX_PP_SIGN_PARSED_PARAMS_VALIDATE_THIS_COUNT_(params) \
+ BOOST_PP_IIF(BOOST_PP_GREATER(BOOST_PP_ADD( \
+ BOOST_LOCAL_AUX_PP_SIGN_PARAMS_CONST_BIND_THIS_COUNT(params), \
+ BOOST_LOCAL_AUX_PP_SIGN_PARAMS_BIND_THIS_COUNT(params)), 1), \
+ BOOST_LOCAL_AUX_PP_SIGN_PARSED_PARAMS_SET_ERROR \
+ , \
+ params BOOST_PP_TUPLE_EAT(2) \
+ )(params, /* trailing `EMPTY` because error might not be present */ \
+ ERROR_object_this_cannot_be_bound_multiple_times BOOST_PP_EMPTY)
+
+// Public API.
+
+#define BOOST_LOCAL_AUX_PP_SIGN_PARSED_PARAMS_VALIDATE_THIS_COUNT(params) \
+ BOOST_PP_IIF(BOOST_LOCAL_AUX_PP_SIGN_PARAMS_HAVE_ERROR(params), \
+ params BOOST_PP_TUPLE_EAT(1) /* fwd existing error */ \
+ , \
+ BOOST_LOCAL_AUX_PP_SIGN_PARSED_PARAMS_VALIDATE_THIS_COUNT_ \
+ )(params)
+
+#endif // #include guard
+

Added: sandbox/local/libs/local/params_name/boost/local/aux_/preprocessor/va/to_seq.hpp
==============================================================================
--- (empty file)
+++ sandbox/local/libs/local/params_name/boost/local/aux_/preprocessor/va/to_seq.hpp 2011-02-16 11:13:35 EST (Wed, 16 Feb 2011)
@@ -0,0 +1,49 @@
+
+#ifndef BOOST_LOCAL_AUX_PP_VA_TO_SEQ_HPP_
+#define BOOST_LOCAL_AUX_PP_VA_TO_SEQ_HPP_
+
+#include <boost/config.hpp>
+
+#if !defined(BOOST_NO_VARIADIC_MACROS) // If no variadics then no macros.
+
+/** @todo Move used files from VMD library into local/aux_/pp/va/vmd/... */
+#include <boost/variadic_macro_data/VariadicMacroData.hpp> // Proposed lib.
+#include <boost/preprocessor/logical/not.hpp>
+#include <boost/preprocessor/comparison/greater.hpp>
+#include <boost/preprocessor/control/iif.hpp>
+#include <boost/preprocessor/control/if.hpp>
+
+// Private API.
+
+// Interface to proposed Boost.VariadicMacroData.
+#define BOOST_LOCAL_AUX_PP_VA_SIZE_(...) VMD_DATA_SIZE(__VA_ARGS__)
+#define BOOST_LOCAL_AUX_PP_VA_TO_SEQ_(...) VMD_DATA_TO_PP_SEQ(__VA_ARGS__)
+
+#define BOOST_LOCAL_AUX_PP_VA_SAME_(...) __VA_ARGS__
+
+#define BOOST_LOCAL_AUX_PP_VA_EAT_(...) /* must expand to nothing */
+
+#define BOOST_LOCAL_AUX_PP_VA_IS_NOT_UNARY_(...) \
+ BOOST_PP_NOT(BOOST_PP_IS_UNARY(__VA_ARGS__))
+
+#define BOOST_LOCAL_AUX_PP_IS_VA_(...) \
+ BOOST_PP_IF(BOOST_PP_GREATER( /* IIF does not expand on MSVC */ \
+ BOOST_LOCAL_AUX_PP_VA_SIZE_(__VA_ARGS__), 1), \
+ 1 BOOST_LOCAL_AUX_PP_VA_EAT_ \
+ , \
+ BOOST_LOCAL_AUX_PP_VA_IS_NOT_UNARY_ \
+ )(__VA_ARGS__)
+
+// Public API.
+
+#define BOOST_LOCAL_AUX_PP_VA_TO_SEQ(...) \
+ BOOST_PP_IIF(BOOST_LOCAL_AUX_PP_IS_VA_(__VA_ARGS__), \
+ BOOST_LOCAL_AUX_PP_VA_TO_SEQ_ \
+ , \
+ BOOST_LOCAL_AUX_PP_VA_SAME_ \
+ )(__VA_ARGS__)
+
+#endif // BOOST_NO_VARIADIC_MACROS
+
+#endif // #include guard
+

Added: sandbox/local/libs/local/params_name/boost/local/aux_/scope_exit/scope_exit.hpp
==============================================================================
--- (empty file)
+++ sandbox/local/libs/local/params_name/boost/local/aux_/scope_exit/scope_exit.hpp 2011-02-16 11:13:35 EST (Wed, 16 Feb 2011)
@@ -0,0 +1,423 @@
+
+// Copyright (C) 2009-2011 Lorenzo Caminiti
+// Use, modification, and distribution is subject to the
+// Boost Software License, Version 1.0
+// (see accompanying file LICENSE_1_0.txt or a copy at
+// http://www.boost.org/LICENSE_1_0.txt).
+
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef FILE_boost_scope_exit_hpp_INCLUDED
+#define FILE_boost_scope_exit_hpp_INCLUDED
+
+#include <boost/config.hpp>
+
+#include <boost/detail/workaround.hpp>
+#include <boost/preprocessor/cat.hpp>
+#include <boost/preprocessor/facilities/empty.hpp>
+#include <boost/preprocessor/punctuation/comma_if.hpp>
+#include <boost/preprocessor/seq/cat.hpp>
+#include <boost/preprocessor/seq/for_each_i.hpp>
+#include <boost/preprocessor/tuple/elem.hpp>
+#include <boost/preprocessor/facilities/identity.hpp>
+#include "typeof/typeof.hpp" // Local typeof with `this` MSVC workaround.
+
+#if defined(__GNUC__) && !defined(BOOST_INTEL)
+# define BOOST_SCOPE_EXIT_AUX_GCC (__GNUC__ * 100 + __GNUC_MINOR__)
+#else
+# define BOOST_SCOPE_EXIT_AUX_GCC 0
+#endif
+
+#if BOOST_WORKAROUND(BOOST_SCOPE_EXIT_AUX_GCC, BOOST_TESTED_AT(413))
+#define BOOST_SCOPE_EXIT_AUX_TPL_WORKAROUND
+#endif
+
+// Steven Watanabe's trick with a modification suggested by Kim Barrett
+namespace boost { namespace scope_exit { namespace aux {
+
+ // Type of a local boost_scope_exit_args variable.
+ // First use in a local scope will declare the boost_scope_exit_args
+ // variable, subsequent uses will be resolved as two comparisons
+ // (cmp1 with 0 and cmp2 with boost_scope_exit_args).
+ template<int Dummy = 0>
+ struct declared
+ {
+ void* value;
+ static int const cmp2 = 0;
+ friend void operator>(int, declared const&) {}
+ };
+
+ struct undeclared { declared<> dummy[2]; };
+
+ template<int> struct resolve;
+
+ template<>
+ struct resolve<sizeof(declared<>)>
+ {
+ static const int cmp1 = 0;
+ };
+
+ template<>
+ struct resolve<sizeof(undeclared)>
+ {
+ template<int>
+ struct cmp1
+ {
+ static int const cmp2 = 0;
+ };
+ };
+} } }
+
+extern boost::scope_exit::aux::undeclared boost_scope_exit_args; // undefined
+
+
+namespace boost { namespace scope_exit { namespace aux {
+
+typedef void (*ref_tag)(int&);
+typedef void (*val_tag)(int );
+
+template<class T, class Tag> struct member;
+
+template<class T>
+struct member<T,ref_tag>
+{
+ T& value;
+#ifndef BOOST_SCOPE_EXIT_AUX_TPL_WORKAROUND
+ member(T& ref) : value(ref) {}
+#endif
+};
+
+template<class T>
+struct member<T,val_tag>
+{
+ T value;
+#ifndef BOOST_SCOPE_EXIT_AUX_TPL_WORKAROUND
+ member(T& val) : value(val) {}
+#endif
+};
+
+template<class T> inline T& deref(T* p, ref_tag) { return *p; }
+template<class T> inline T& deref(T& r, val_tag) { return r; }
+
+template<class T>
+struct wrapper
+{
+ typedef T type;
+};
+
+template<class T> wrapper<T> wrap(T&);
+
+} } }
+
+#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
+BOOST_TYPEOF_REGISTER_TEMPLATE(boost::scope_exit::aux::wrapper, 1)
+
+#define BOOST_SCOPE_EXIT_AUX_GUARD(id) BOOST_PP_CAT(boost_se_guard_, id)
+#define BOOST_SCOPE_EXIT_AUX_GUARD_T(id) BOOST_PP_CAT(boost_se_guard_t_, id)
+#define BOOST_SCOPE_EXIT_AUX_PARAMS(id) BOOST_PP_CAT(boost_se_params_, id)
+#define BOOST_SCOPE_EXIT_AUX_PARAMS_T(id) BOOST_PP_CAT(boost_se_params_t_, id)
+
+#define BOOST_SCOPE_EXIT_AUX_TAG(id, i) \
+ BOOST_PP_SEQ_CAT( (boost_se_tag_)(i)(_)(id) )
+
+#define BOOST_SCOPE_EXIT_AUX_PARAM(id, i, var) \
+ BOOST_PP_SEQ_CAT( (boost_se_param_)(i)(_)(id) )
+
+#define BOOST_SCOPE_EXIT_AUX_PARAM_T(id, i, var) \
+ BOOST_PP_SEQ_CAT( (boost_se_param_t_)(i)(_)(id) )
+
+#define BOOST_SCOPE_EXIT_AUX_CAPTURE_T(id, i, var) \
+ BOOST_PP_SEQ_CAT( (boost_se_capture_t_)(i)(_)(id) )
+
+#define BOOST_SCOPE_EXIT_AUX_WRAPPED(id, i) \
+ BOOST_PP_SEQ_CAT( (boost_se_wrapped_t_)(i)(_)(id) )
+
+#define BOOST_SCOPE_EXIT_AUX_DEREF(id, i, var) \
+ boost::scope_exit::aux::deref(var, (BOOST_SCOPE_EXIT_AUX_TAG(id,i))0)
+
+#define BOOST_SCOPE_EXIT_AUX_MEMBER(r, id, i, var) \
+ boost::scope_exit::aux::member< \
+ BOOST_SCOPE_EXIT_AUX_PARAM_T(id,i,var), \
+ BOOST_SCOPE_EXIT_AUX_TAG(id,i) \
+ > BOOST_SCOPE_EXIT_AUX_PARAM(id,i,var);
+
+// idty is (id,typename) or (id,BOOST_PP_EMPTY())
+#define BOOST_SCOPE_EXIT_AUX_ARG_DECL(r, idty, i, var) \
+ BOOST_PP_COMMA_IF(i) BOOST_PP_TUPLE_ELEM(2,1,idty) \
+ BOOST_SCOPE_EXIT_AUX_PARAMS_T(BOOST_PP_TUPLE_ELEM(2,0,idty)):: \
+ BOOST_SCOPE_EXIT_AUX_PARAM_T(BOOST_PP_TUPLE_ELEM(2,0,idty), i, var) var
+
+#define BOOST_SCOPE_EXIT_AUX_ARG(r, id, i, var) BOOST_PP_COMMA_IF(i) \
+ boost_se_params_->BOOST_SCOPE_EXIT_AUX_PARAM(id,i,var).value
+
+#define BOOST_SCOPE_EXIT_AUX_TAG_DECL(r, id, i, var) \
+ typedef void (*BOOST_SCOPE_EXIT_AUX_TAG(id,i))(int var);
+
+
+//----begin-'this-capture'-detection-and-selection-mechanics----
+
+#if BOOST_WORKAROUND(BOOST_MSVC,>=1300)
+ // Boost.Typeof for VC71's typeid-based workaround does not work
+ // to determine the type of 'this' due to error C2355 being
+ // incorrectly reported (a compiler bug that's present in 8 and 9
+ // also). The typical avoidance strategy to evade this error is
+ // to make an indirect compile-time constant by assignment through
+ // enum, then use that as a type-index. This cannot happen with
+ // the typeid() approach, only with a sizeof() approach.
+ //
+ // The implementation below is the more general, type-index
+ // sizeof()-based approach implemented in Boost.Typeof which
+ // appears to work fine for typeof(this) provided the reference to
+ // 'this' is not present in the template argument list (i.e. the
+ // type-index is captured into a local enumerator before being
+ // used as a template argument).
+ //
+ // Inline documentation is removed and conditional compilation
+ // applied.
+ //
+ namespace boost { namespace scope_exit { namespace msvc_typeof_this
+ {
+ template<int ID>
+ struct msvc_typeid_wrapper {
+ typedef typename boost::type_of::msvc_extract_type<mpl::int_<ID> >::id2type id2type;
+ typedef typename id2type::type type;
+ };
+ template<>
+ struct msvc_typeid_wrapper<4> {
+ typedef msvc_typeid_wrapper<4> type;
+ };
+ template<typename T>
+ struct encode_type
+ {
+ BOOST_STATIC_CONSTANT(unsigned,value=BOOST_TYPEOF_INDEX(T));
+ typedef typename boost::type_of::msvc_register_type<T,mpl::int_<value> >::id2type type;
+ BOOST_STATIC_CONSTANT(unsigned,next=value+1);
+ BOOST_TYPEOF_NEXT_INDEX(next);
+ };
+ template<class T>
+ struct sizer
+ {
+ typedef char(*type)[encode_type<T>::value];
+ };
+ template<typename T> typename disable_if<
+ typename is_function<T>::type,
+ typename sizer<T>::type>::type encode_start(T const&);
+ template<typename T> typename enable_if<
+ typename is_function<T>::type,
+ typename sizer<T>::type>::type encode_start(T&);
+ template<typename Organizer, typename T>
+ boost::type_of::msvc_register_type<T,Organizer> typeof_register_type(const T&,Organizer* =0);
+
+ }}}
+
+# define BOOST_SCOPE_EXIT_TYPEDEF_TYPEOF_THIS() \
+ enum { BOOST_PP_CAT(boost_se_thistype_index_,__LINE__) = sizeof(*boost::scope_exit::msvc_typeof_this::encode_start(this)) }; \
+ typedef boost::scope_exit::msvc_typeof_this::msvc_typeid_wrapper<BOOST_PP_CAT(boost_se_thistype_index_,__LINE__)>::type
+
+#else // other Boost.Typeof 'this' appear to be okay
+# define BOOST_SCOPE_EXIT_TYPEDEF_TYPEOF_THIS() typedef BOOST_TYPEOF(this)
+#endif
+
+// 'this-capture' function-macros for when (*this) is requested
+//
+#define BOOST_SCOPE_EXIT_REALTHIS_COMMA_IF_this(seq) this BOOST_PP_COMMA_IF(BOOST_PP_SEQ_SIZE(seq))
+#define BOOST_SCOPE_EXIT_THISPARAM_COMMA_IF_this(id,seq) BOOST_PP_CAT(se_this_type,id) se_this BOOST_PP_COMMA_IF(BOOST_PP_SEQ_SIZE(seq))
+#define BOOST_SCOPE_EXIT_THISINIT_COMMA_IF_this(seq) se_this(se_this) BOOST_PP_COMMA_IF(BOOST_PP_SEQ_SIZE(seq))
+#define BOOST_SCOPE_EXIT_THISINIT_BEGIN_PARAM_T_INITLIST_this(seq) :
+#define BOOST_SCOPE_EXIT_HASARGS_this(seq) 1
+
+#define BOOST_SCOPE_EXIT_TYPEDEF_THISTYPE_this(id) BOOST_SCOPE_EXIT_TYPEDEF_TYPEOF_THIS() BOOST_PP_CAT(se_this_type,id);
+#define BOOST_SCOPE_EXIT_DEFINE_THISMEMBER_this(id) BOOST_PP_CAT(se_this_type,id) se_this;
+#define BOOST_SCOPE_EXIT_DEFINE_THIS_ACCESSOR_this(id) \
+ inline BOOST_PP_CAT(se_this_type,id) operator->() { return boost_se_params_->se_this; } \
+ inline BOOST_PP_CAT(se_this_type,id) operator*() { return boost_se_params_->se_this; } \
+ inline operator BOOST_PP_CAT(se_this_type,id)() { return boost_se_params_->se_this; } \
+
+// 'this-capture' function-macros for when (*this) is not requested
+//
+#define BOOST_SCOPE_EXIT_REALTHIS_COMMA_IF_nothis(seq)
+#define BOOST_SCOPE_EXIT_THISPARAM_COMMA_IF_nothis(id,seq)
+#define BOOST_SCOPE_EXIT_THISINIT_COMMA_IF_nothis(seq)
+#define BOOST_SCOPE_EXIT_THISINIT_BEGIN_PARAM_T_INITLIST_nothis(seq) BOOST_PP_IF(BOOST_PP_SEQ_SIZE(seq),BOOST_PP_IDENTITY(:),BOOST_PP_EMPTY)()
+#define BOOST_SCOPE_EXIT_HASARGS_nothis(seq) BOOST_PP_SEQ_SIZE(seq)
+
+#define BOOST_SCOPE_EXIT_TYPEDEF_THISTYPE_nothis(id)
+#define BOOST_SCOPE_EXIT_DEFINE_THISMEMBER_nothis(id)
+#define BOOST_SCOPE_EXIT_DEFINE_THIS_ACCESSOR_nothis(id)
+
+// Expand to 1 if the first sequence element is 'this'
+// or 0 otherwise.
+//
+// Mechanics: [given that 'this(x)' --> '(this(x))']
+//
+// head = front(seq) --> 'this' or 'somearg'
+// funcexp = head(_) --> '(this(_))' or 'somearg(_)'
+// size_and_possible_tokens = seq_size(funcexp)
+// yields either
+// 0 somearg(_)
+// or 1
+// expansion of 'cat(X,size_and_possible_tokens _) )'
+// yields either
+// X0 _ ) --> zero( _ ) --> 0
+// or X1 tokens _ ) --> one( tokens _ ) --> 1
+//
+// where X0 is BOOST_SCOPE_EXIT_HAS_THIS_CONSUME_0
+// X1 is BOOST_SCOPE_EXIT_HAS_THIS_CONSUME_1
+// zero() is BOOST_SCOPE_EXIT_HAS_THIS_FALSE()
+// one() is BOOST_SCOPE_EXIT_HAS_THIS_TRUE()
+//
+#define BOOST_SCOPE_EXIT_HAS_THIS(seq) \
+ BOOST_PP_CAT(BOOST_SCOPE_EXIT_HAS_THIS_CONSUME_, \
+ BOOST_PP_SEQ_SIZE(BOOST_PP_SEQ_HEAD(seq)(_)) _) ) \
+
+#define BOOST_SCOPE_EXIT_HAS_THIS_CONSUME_0 BOOST_SCOPE_EXIT_HAS_THIS_FALSE(
+#define BOOST_SCOPE_EXIT_HAS_THIS_CONSUME_1 BOOST_SCOPE_EXIT_HAS_THIS_TRUE(
+
+#define BOOST_SCOPE_EXIT_HAS_THIS_FALSE(x) 0
+#define BOOST_SCOPE_EXIT_HAS_THIS_TRUE(x) 1
+
+// Forwarding front-end to determine whether 'this' is the first
+// element of the sequence and adapt the invocation of the detail
+// accordingly. The dummy is passed to allow for an empty sequence.
+#define BOOST_SCOPE_EXIT_AUX_IMPL_FE(id, seq, ty) \
+ BOOST_SCOPE_EXIT_AUX_IMPL_FE2(id, seq, ty, BOOST_SCOPE_EXIT_HAS_THIS(seq (dummy))) \
+
+#define BOOST_SCOPE_EXIT_AUX_IMPL_FE2(id, seq, ty, has_this) \
+ BOOST_SCOPE_EXIT_AUX_IMPL(id, BOOST_PP_IF(has_this, BOOST_PP_SEQ_TAIL(seq),seq), \
+ ty, BOOST_PP_IF(has_this, this,nothis) ) \
+
+//----end-'this-capture'-detection-and-selection-mechanics----
+
+#ifdef BOOST_SCOPE_EXIT_AUX_TPL_WORKAROUND
+
+#define BOOST_SCOPE_EXIT_AUX_PARAMS_T_CTOR(id, seq, this)
+
+#define BOOST_SCOPE_EXIT_AUX_PARAM_INIT(r, id, i, var) \
+ BOOST_PP_COMMA_IF(i) { BOOST_SCOPE_EXIT_AUX_DEREF(id,i,var) }
+
+#define BOOST_SCOPE_EXIT_AUX_PARAMS_INIT(id, seq, this) \
+ = { BOOST_PP_CAT(BOOST_SCOPE_EXIT_REALTHIS_COMMA_IF_,this)(seq) \
+ BOOST_PP_SEQ_FOR_EACH_I(BOOST_SCOPE_EXIT_AUX_PARAM_INIT, id, seq) };
+
+#else
+
+#define BOOST_SCOPE_EXIT_AUX_CTOR_ARG(r, id, i, var) BOOST_PP_COMMA_IF(i) \
+ BOOST_SCOPE_EXIT_AUX_PARAM_T(id,i,var) & BOOST_PP_CAT(a,i)
+
+#define BOOST_SCOPE_EXIT_AUX_MEMBER_INIT(r, id, i, var) BOOST_PP_COMMA_IF(i) \
+ BOOST_SCOPE_EXIT_AUX_PARAM(id,i,var) ( BOOST_PP_CAT(a,i) )
+
+#define BOOST_SCOPE_EXIT_AUX_PARAMS_T_CTOR(id, seq, this) \
+ BOOST_SCOPE_EXIT_AUX_PARAMS_T(id)( \
+ BOOST_PP_CAT(BOOST_SCOPE_EXIT_THISPARAM_COMMA_IF_,this)(id,seq) \
+ BOOST_PP_SEQ_FOR_EACH_I(BOOST_SCOPE_EXIT_AUX_CTOR_ARG, id, seq ) ) \
+ BOOST_PP_CAT(BOOST_SCOPE_EXIT_THISINIT_BEGIN_PARAM_T_INITLIST_,this)(seq)\
+ BOOST_PP_CAT(BOOST_SCOPE_EXIT_THISINIT_COMMA_IF_,this)(seq) \
+ BOOST_PP_SEQ_FOR_EACH_I(BOOST_SCOPE_EXIT_AUX_MEMBER_INIT, id, seq) {}
+
+#define BOOST_SCOPE_EXIT_AUX_PARAM_INIT(r, id, i, var) \
+ BOOST_PP_COMMA_IF(i) BOOST_SCOPE_EXIT_AUX_DEREF(id,i,var)
+
+#define BOOST_SCOPE_EXIT_AUX_PARAMS_INIT(id, seq, this) \
+ BOOST_PP_IF(BOOST_PP_CAT(BOOST_SCOPE_EXIT_HASARGS_,this)(seq), \
+ BOOST_PP_IDENTITY( \
+ ( BOOST_PP_CAT(BOOST_SCOPE_EXIT_REALTHIS_COMMA_IF_,this)(seq) \
+ BOOST_PP_SEQ_FOR_EACH_I(BOOST_SCOPE_EXIT_AUX_PARAM_INIT, id, seq) ) \
+ ),BOOST_PP_EMPTY)(); \
+
+#endif
+
+#if defined(BOOST_TYPEOF_EMULATION)
+
+#define BOOST_SCOPE_EXIT_AUX_CAPTURE_DECL(r, idty, i, var) \
+ struct BOOST_SCOPE_EXIT_AUX_WRAPPED(BOOST_PP_TUPLE_ELEM(2,0,idty), i) \
+ : BOOST_TYPEOF(boost::scope_exit::aux::wrap( \
+ BOOST_SCOPE_EXIT_AUX_DEREF(BOOST_PP_TUPLE_ELEM(2,0,idty), i, var))) \
+ {}; typedef BOOST_PP_TUPLE_ELEM(2,1,idty) \
+ BOOST_SCOPE_EXIT_AUX_WRAPPED(BOOST_PP_TUPLE_ELEM(2,0,idty), i)::type \
+ BOOST_SCOPE_EXIT_AUX_CAPTURE_T(BOOST_PP_TUPLE_ELEM(2,0,idty), i, var);
+
+#elif defined(BOOST_INTEL)
+
+#define BOOST_SCOPE_EXIT_AUX_CAPTURE_DECL(r, idty, i, var) \
+ typedef BOOST_TYPEOF_KEYWORD( \
+ BOOST_SCOPE_EXIT_AUX_DEREF(BOOST_PP_TUPLE_ELEM(2,0,idty), i, var)) \
+ BOOST_SCOPE_EXIT_AUX_CAPTURE_T(BOOST_PP_TUPLE_ELEM(2,0,idty), i, var);
+
+#else
+
+#define BOOST_SCOPE_EXIT_AUX_CAPTURE_DECL(r, idty, i, var) \
+ typedef BOOST_TYPEOF(boost::scope_exit::aux::wrap( \
+ BOOST_SCOPE_EXIT_AUX_DEREF(BOOST_PP_TUPLE_ELEM(2,0,idty), i, var))) \
+ BOOST_SCOPE_EXIT_AUX_WRAPPED(BOOST_PP_TUPLE_ELEM(2,0,idty), i); \
+ typedef BOOST_PP_TUPLE_ELEM(2,1,idty) \
+ BOOST_SCOPE_EXIT_AUX_WRAPPED(BOOST_PP_TUPLE_ELEM(2,0,idty), i)::type \
+ BOOST_SCOPE_EXIT_AUX_CAPTURE_T(BOOST_PP_TUPLE_ELEM(2,0,idty), i, var);
+
+#endif
+
+#define BOOST_SCOPE_EXIT_AUX_PARAM_DECL(r, idty, i, var) \
+ typedef BOOST_SCOPE_EXIT_AUX_CAPTURE_T( \
+ BOOST_PP_TUPLE_ELEM(2,0,idty), i, var) \
+ BOOST_SCOPE_EXIT_AUX_PARAM_T(BOOST_PP_TUPLE_ELEM(2,0,idty), i, var);
+
+
+#define BOOST_SCOPE_EXIT_AUX_IMPL(id, seq, ty, this) \
+ BOOST_PP_SEQ_FOR_EACH_I(BOOST_SCOPE_EXIT_AUX_TAG_DECL, id, seq) \
+ BOOST_PP_SEQ_FOR_EACH_I(BOOST_SCOPE_EXIT_AUX_CAPTURE_DECL, (id,ty), seq) \
+ BOOST_PP_CAT(BOOST_SCOPE_EXIT_TYPEDEF_THISTYPE_,this)(id) \
+ struct BOOST_SCOPE_EXIT_AUX_PARAMS_T(id) { \
+ BOOST_PP_CAT(BOOST_SCOPE_EXIT_DEFINE_THISMEMBER_,this)(id) \
+ BOOST_PP_SEQ_FOR_EACH_I(BOOST_SCOPE_EXIT_AUX_PARAM_DECL, (id,ty), seq) \
+ BOOST_PP_SEQ_FOR_EACH_I(BOOST_SCOPE_EXIT_AUX_MEMBER, id, seq) \
+ BOOST_SCOPE_EXIT_AUX_PARAMS_T_CTOR(id, seq, this) \
+ } BOOST_SCOPE_EXIT_AUX_PARAMS(id) BOOST_SCOPE_EXIT_AUX_PARAMS_INIT(id, seq, this)\
+ boost::scope_exit::aux::declared< boost::scope_exit::aux::resolve< \
+ sizeof(boost_scope_exit_args)>::cmp1<0>::cmp2 > boost_scope_exit_args; \
+ boost_scope_exit_args.value = &BOOST_SCOPE_EXIT_AUX_PARAMS(id); \
+ struct BOOST_SCOPE_EXIT_AUX_GUARD_T(id) { \
+ BOOST_SCOPE_EXIT_AUX_PARAMS_T(id)* boost_se_params_; \
+ BOOST_SCOPE_EXIT_AUX_GUARD_T(id) (void* boost_se_params) \
+ : boost_se_params_( \
+ (BOOST_SCOPE_EXIT_AUX_PARAMS_T(id)*)boost_se_params) \
+ {} \
+ BOOST_PP_CAT(BOOST_SCOPE_EXIT_DEFINE_THIS_ACCESSOR_,this)(id) \
+ ~BOOST_SCOPE_EXIT_AUX_GUARD_T(id)() { boost_se_body( \
+ BOOST_PP_SEQ_FOR_EACH_I(BOOST_SCOPE_EXIT_AUX_ARG, id, seq) ); } \
+ void boost_se_body(BOOST_PP_SEQ_FOR_EACH_I( \
+ BOOST_SCOPE_EXIT_AUX_ARG_DECL, (id,ty), seq) )
+
+#if defined(BOOST_MSVC)
+
+#ifndef BOOST_SCOPE_EXIT_DONT_DISABLE_C4003
+#pragma warning(disable:4003)
+#endif
+
+#define BOOST_SCOPE_EXIT_END } BOOST_SCOPE_EXIT_AUX_GUARD(__COUNTER__) ( \
+ boost_scope_exit_args.value);
+
+#define BOOST_SCOPE_EXIT(seq) \
+ BOOST_SCOPE_EXIT_AUX_IMPL_FE(__COUNTER__, seq, BOOST_PP_EMPTY())
+
+#else
+
+#define BOOST_SCOPE_EXIT_END } BOOST_SCOPE_EXIT_AUX_GUARD(__LINE__) ( \
+ boost_scope_exit_args.value);
+
+#define BOOST_SCOPE_EXIT(seq) \
+ BOOST_SCOPE_EXIT_AUX_IMPL_FE(__LINE__, seq, BOOST_PP_EMPTY())
+
+#endif
+
+#ifdef BOOST_SCOPE_EXIT_AUX_TPL_WORKAROUND
+#define BOOST_SCOPE_EXIT_TPL(seq) \
+ BOOST_SCOPE_EXIT_AUX_IMPL_FE(__LINE__, seq, typename)
+#else
+#define BOOST_SCOPE_EXIT_TPL(seq) BOOST_SCOPE_EXIT(seq)
+#endif
+
+#endif // #ifndef FILE_boost_scope_exit_hpp_INCLUDED
+

Added: sandbox/local/libs/local/params_name/boost/local/aux_/scope_exit/typeof/msvc/typeof_impl.hpp
==============================================================================
--- (empty file)
+++ sandbox/local/libs/local/params_name/boost/local/aux_/scope_exit/typeof/msvc/typeof_impl.hpp 2011-02-16 11:13:35 EST (Wed, 16 Feb 2011)
@@ -0,0 +1,280 @@
+
+// Copyright (C) 2009-2011 Lorenzo Caminiti
+// Use, modification, and distribution is subject to the
+// Boost Software License, Version 1.0
+// (see accompanying file LICENSE_1_0.txt or a copy at
+// http://www.boost.org/LICENSE_1_0.txt).
+
+#ifndef BOOST_TYPEOF_MSVC_TYPEOF_IMPL_HPP_INCLUDED
+# define BOOST_TYPEOF_MSVC_TYPEOF_IMPL_HPP_INCLUDED
+
+# include <boost/config.hpp>
+# include <boost/detail/workaround.hpp>
+# include <boost/mpl/int.hpp>
+# include <boost/type_traits/is_function.hpp>
+# include <boost/utility/enable_if.hpp>
+
+# if BOOST_WORKAROUND(BOOST_MSVC,>=1310)
+# include <typeinfo>
+# endif
+
+namespace boost
+{
+ namespace type_of
+ {
+
+ //Compile time constant code
+# if BOOST_WORKAROUND(BOOST_MSVC,>=1300) && defined(_MSC_EXTENSIONS)
+ template<int N> struct the_counter;
+
+ template<typename T,int N = 5/*for similarity*/>
+ struct encode_counter
+ {
+ __if_exists(the_counter<N + 256>)
+ {
+ BOOST_STATIC_CONSTANT(unsigned,count=(encode_counter<T,N + 257>::count));
+ }
+ __if_not_exists(the_counter<N + 256>)
+ {
+ __if_exists(the_counter<N + 64>)
+ {
+ BOOST_STATIC_CONSTANT(unsigned,count=(encode_counter<T,N + 65>::count));
+ }
+ __if_not_exists(the_counter<N + 64>)
+ {
+ __if_exists(the_counter<N + 16>)
+ {
+ BOOST_STATIC_CONSTANT(unsigned,count=(encode_counter<T,N + 17>::count));
+ }
+ __if_not_exists(the_counter<N + 16>)
+ {
+ __if_exists(the_counter<N + 4>)
+ {
+ BOOST_STATIC_CONSTANT(unsigned,count=(encode_counter<T,N + 5>::count));
+ }
+ __if_not_exists(the_counter<N + 4>)
+ {
+ __if_exists(the_counter<N>)
+ {
+ BOOST_STATIC_CONSTANT(unsigned,count=(encode_counter<T,N + 1>::count));
+ }
+ __if_not_exists(the_counter<N>)
+ {
+ BOOST_STATIC_CONSTANT(unsigned,count=N);
+ typedef the_counter<N> type;
+ }
+ }
+ }
+ }
+ }
+ };
+
+# define BOOST_TYPEOF_INDEX(T) (boost::type_of::encode_counter<T>::count)
+# define BOOST_TYPEOF_NEXT_INDEX(next)
+# else
+ template<int N> struct encode_counter : encode_counter<N - 1> {};
+ template<> struct encode_counter<0> {};
+
+ //Need to default to a larger value than 4, as due to MSVC's ETI errors. (sizeof(int)==4)
+ char (*encode_index(...))[5];
+
+# define BOOST_TYPEOF_INDEX(T) (sizeof(*boost::type_of::encode_index((boost::type_of::encode_counter<1005>*)0)))
+# define BOOST_TYPEOF_NEXT_INDEX(next) friend char (*boost::type_of::encode_index(encode_counter<next>*))[next];
+# endif
+
+ //Typeof code
+
+# if BOOST_WORKAROUND(BOOST_MSVC,==1300)
+ template<typename ID>
+ struct msvc_extract_type
+ {
+ template<bool>
+ struct id2type_impl;
+
+ typedef id2type_impl<true> id2type;
+ };
+
+ template<typename T, typename ID>
+ struct msvc_register_type : msvc_extract_type<ID>
+ {
+ template<>
+ struct id2type_impl<true> //VC7.0 specific bugfeature
+ {
+ typedef T type;
+ };
+ };
+#elif BOOST_WORKAROUND(BOOST_MSVC,>=1400)
+ struct msvc_extract_type_default_param {};
+
+ template<typename ID, typename T = msvc_extract_type_default_param>
+ struct msvc_extract_type;
+
+ template<typename ID>
+ struct msvc_extract_type<ID, msvc_extract_type_default_param> {
+ template<bool>
+ struct id2type_impl;
+
+ typedef id2type_impl<true> id2type;
+ };
+
+ template<typename ID, typename T>
+ struct msvc_extract_type : msvc_extract_type<ID,msvc_extract_type_default_param>
+ {
+ template<>
+ struct id2type_impl<true> //VC8.0 specific bugfeature
+ {
+ typedef T type;
+ };
+ template<bool>
+ struct id2type_impl;
+
+ typedef id2type_impl<true> id2type;
+ };
+
+ template<typename T, typename ID>
+ struct msvc_register_type : msvc_extract_type<ID, T>
+ {
+ };
+# else
+ template<typename ID>
+ struct msvc_extract_type
+ {
+ struct id2type;
+ };
+
+ template<typename T, typename ID>
+ struct msvc_register_type : msvc_extract_type<ID>
+ {
+ typedef msvc_extract_type<ID> base_type;
+ struct base_type::id2type // This uses nice VC6.5 and VC7.1 bugfeature
+ {
+ typedef T type;
+ };
+ };
+# endif
+# if BOOST_WORKAROUND(BOOST_MSVC,==1310)
+ template<const std::type_info& ref_type_info>
+ struct msvc_typeid_wrapper {
+ typedef typename msvc_extract_type<msvc_typeid_wrapper>::id2type id2type;
+ typedef typename id2type::type wrapped_type;
+ typedef typename wrapped_type::type type;
+ };
+ //This class is used for registering the type T. encode_type<T> is mapped against typeid(encode_type<T>).
+ //msvc_typeid_wrapper<typeid(encode_type<T>)> will now have a type typedef that equals encode_type<T>.
+ template<typename T>
+ struct encode_type
+ {
+ typedef encode_type<T> input_type;
+ //Invoke registration of encode_type<T>. typeid(encode_type<T>) is now mapped to encode_type<T>. Do not use registered_type for anything.
+ //The reason for registering encode_type<T> rather than T, is that VC handles typeid(function reference) poorly. By adding another
+ //level of indirection, we solve this problem.
+ typedef typename msvc_register_type<input_type,msvc_typeid_wrapper<typeid(input_type)> >::id2type registered_type;
+ typedef T type;
+ };
+
+ template<typename T> typename disable_if<
+ typename is_function<T>::type,
+ typename encode_type<T>::input_type>::type encode_start(T const&);
+
+ template<typename T> typename enable_if<
+ typename is_function<T>::type,
+ typename encode_type<T>::input_type>::type encode_start(T&);
+
+ template<typename Organizer, typename T>
+ msvc_register_type<T,Organizer> typeof_register_type(const T&);
+
+
+# define BOOST_TYPEOF(expr) \
+ boost::type_of::msvc_typeid_wrapper<typeid(boost::type_of::encode_start(expr))>::type
+
+# define BOOST_TYPEOF_TPL(expr) typename BOOST_TYPEOF(expr)
+
+# define BOOST_TYPEOF_NESTED_TYPEDEF_TPL(name,expr) \
+struct name {\
+ enum {_typeof_register_value=sizeof(typeid(boost::type_of::typeof_register_type<name>(expr)))};\
+ typedef typename boost::type_of::msvc_extract_type<name>::id2type id2type;\
+ typedef typename id2type::type type;\
+};
+
+# define BOOST_TYPEOF_NESTED_TYPEDEF(name,expr) \
+struct name {\
+ enum {_typeof_register_value=sizeof(typeid(boost::type_of::typeof_register_type<name>(expr)))};\
+ typedef boost::type_of::msvc_extract_type<name>::id2type id2type;\
+ typedef id2type::type type;\
+};
+
+# else
+ template<int ID>
+ struct msvc_typeid_wrapper {
+ typedef typename msvc_extract_type<mpl::int_<ID> >::id2type id2type;
+ typedef typename id2type::type type;
+ };
+ //Workaround for ETI-bug for VC6 and VC7
+ template<>
+ struct msvc_typeid_wrapper<1> {
+ typedef msvc_typeid_wrapper<1> type;
+ };
+ //Workaround for ETI-bug for VC7.1
+ template<>
+ struct msvc_typeid_wrapper<4> {
+ typedef msvc_typeid_wrapper<4> type;
+ };
+
+ //Tie it all together
+ template<typename T>
+ struct encode_type
+ {
+ //Get the next available compile time constants index
+ BOOST_STATIC_CONSTANT(unsigned,value=BOOST_TYPEOF_INDEX(T));
+ //Instantiate the template
+ typedef typename msvc_register_type<T,mpl::int_<value> >::id2type type;
+ //Set the next compile time constants index
+ BOOST_STATIC_CONSTANT(unsigned,next=value+1);
+ //Increment the compile time constant (only needed when extensions are not active
+ BOOST_TYPEOF_NEXT_INDEX(next);
+ };
+
+ template<class T>
+ struct sizer
+ {
+ typedef char(*type)[encode_type<T>::value];
+ };
+# if BOOST_WORKAROUND(BOOST_MSVC,>=1310)
+ template<typename T> typename disable_if<
+ typename is_function<T>::type,
+ typename sizer<T>::type>::type encode_start(T const&);
+
+ template<typename T> typename enable_if<
+ typename is_function<T>::type,
+ typename sizer<T>::type>::type encode_start(T&);
+# else
+ template<typename T>
+ typename sizer<T>::type encode_start(T const&);
+# endif
+ template<typename Organizer, typename T>
+ msvc_register_type<T,Organizer> typeof_register_type(const T&,Organizer* =0);
+
+# define BOOST_TYPEOF(expr) \
+ boost::type_of::msvc_typeid_wrapper<sizeof(*boost::type_of::encode_start(expr))>::type
+
+# define BOOST_TYPEOF_TPL(expr) typename BOOST_TYPEOF(expr)
+
+# define BOOST_TYPEOF_NESTED_TYPEDEF_TPL(name,expr) \
+ struct name {\
+ BOOST_STATIC_CONSTANT(int,_typeof_register_value=sizeof(boost::type_of::typeof_register_type<name>(expr)));\
+ typedef typename boost::type_of::msvc_extract_type<name>::id2type id2type;\
+ typedef typename id2type::type type;\
+ };
+
+# define BOOST_TYPEOF_NESTED_TYPEDEF(name,expr) \
+ struct name {\
+ BOOST_STATIC_CONSTANT(int,_typeof_register_value=sizeof(boost::type_of::typeof_register_type<name>(expr)));\
+ typedef boost::type_of::msvc_extract_type<name>::id2type id2type;\
+ typedef id2type::type type;\
+ };
+
+#endif
+ }
+}
+
+#endif//BOOST_TYPEOF_MSVC_TYPEOF_IMPL_HPP_INCLUDED

Added: sandbox/local/libs/local/params_name/boost/local/aux_/scope_exit/typeof/typeof.hpp
==============================================================================
--- (empty file)
+++ sandbox/local/libs/local/params_name/boost/local/aux_/scope_exit/typeof/typeof.hpp 2011-02-16 11:13:35 EST (Wed, 16 Feb 2011)
@@ -0,0 +1,192 @@
+
+// Copyright (C) 2009-2011 Lorenzo Caminiti
+// Use, modification, and distribution is subject to the
+// Boost Software License, Version 1.0
+// (see accompanying file LICENSE_1_0.txt or a copy at
+// http://www.boost.org/LICENSE_1_0.txt).
+
+#ifndef BOOST_TYPEOF_TYPEOF_HPP_INCLUDED
+#define BOOST_TYPEOF_TYPEOF_HPP_INCLUDED
+
+#if defined(BOOST_TYPEOF_COMPLIANT)
+# define BOOST_TYPEOF_EMULATION
+#endif
+
+#if defined(BOOST_TYPEOF_EMULATION) && defined(BOOST_TYPEOF_NATIVE)
+# error both typeof emulation and native mode requested
+#endif
+
+#if defined(__COMO__)
+# ifdef __GNUG__
+# ifndef(BOOST_TYPEOF_EMULATION)
+# ifndef BOOST_TYPEOF_NATIVE
+# define BOOST_TYPEOF_NATIVE
+# endif
+# define BOOST_TYPEOF_KEYWORD typeof
+# endif
+# else
+# ifndef BOOST_TYPEOF_NATIVE
+# ifndef BOOST_TYPEOF_EMULATION
+# define BOOST_TYPEOF_EMULATION
+# endif
+# else
+# error native typeof is not supported
+# endif
+# endif
+
+#elif defined(__INTEL_COMPILER) || defined(__ICL) || defined(__ICC) || defined(__ECC)
+# ifdef __GNUC__
+# ifndef BOOST_TYPEOF_EMULATION
+# ifndef BOOST_TYPEOF_NATIVE
+# define BOOST_TYPEOF_NATIVE
+# endif
+# define BOOST_TYPEOF_KEYWORD __typeof__
+# endif
+# else
+# ifndef BOOST_TYPEOF_NATIVE
+# ifndef BOOST_TYPEOF_EMULATION
+# define BOOST_TYPEOF_EMULATION
+# endif
+# else
+# error native typeof is not supported
+# endif
+# endif
+
+#elif defined(__GNUC__)
+# ifndef BOOST_TYPEOF_EMULATION
+# ifndef BOOST_TYPEOF_NATIVE
+# define BOOST_TYPEOF_NATIVE
+# endif
+# define BOOST_TYPEOF_KEYWORD __typeof__
+# endif
+
+#elif defined(__MWERKS__)
+# if(__MWERKS__ <= 0x3003) // 8.x
+# ifndef BOOST_TYPEOF_EMULATION
+# ifndef BOOST_TYPEOF_NATIVE
+# define BOOST_TYPEOF_NATIVE
+# endif
+# define BOOST_TYPEOF_KEYWORD __typeof__
+# else
+# error typeof emulation is not supported
+# endif
+# else // 9.x
+# ifndef BOOST_TYPEOF_EMULATION
+# ifndef BOOST_TYPEOF_NATIVE
+# define BOOST_TYPEOF_NATIVE
+# endif
+# define BOOST_TYPEOF_KEYWORD __typeof__
+# endif
+# endif
+
+#elif defined __DMC__
+# ifndef BOOST_TYPEOF_EMULATION
+# ifndef BOOST_TYPEOF_NATIVE
+# define BOOST_TYPEOF_NATIVE
+# endif
+# include <boost/typeof/dmc/typeof_impl.hpp>
+# define MSVC_TYPEOF_HACK
+# endif
+#elif defined(_MSC_VER)
+# if (_MSC_VER <= 1300) // 6.5, 7.0
+# ifndef BOOST_TYPEOF_EMULATION
+# ifndef BOOST_TYPEOF_NATIVE
+# define BOOST_TYPEOF_NATIVE
+# endif
+# include "msvc/typeof_impl.hpp"
+# define MSVC_TYPEOF_HACK
+# else
+# error typeof emulation is not supported
+# endif
+# elif (_MSC_VER >= 1310) // 7.1, 8.0
+# ifndef BOOST_TYPEOF_EMULATION
+# ifndef BOOST_TYPEOF_NATIVE
+# define BOOST_TYPEOF_NATIVE
+# endif
+# include "msvc/typeof_impl.hpp"
+# define MSVC_TYPEOF_HACK
+# endif
+/*# else // 8.0
+# ifndef BOOST_TYPEOF_NATIVE
+# ifndef BOOST_TYPEOF_EMULATION
+# define BOOST_TYPEOF_EMULATION
+# endif
+# else
+# error native typeof is not supported
+# endif*/
+# endif
+
+#elif defined(__HP_aCC)
+# ifndef BOOST_TYPEOF_NATIVE
+# ifndef BOOST_TYPEOF_EMULATION
+# define BOOST_TYPEOF_EMULATION
+# endif
+# else
+# error native typeof is not supported
+# endif
+
+#elif defined(__DECCXX)
+# ifndef BOOST_TYPEOF_NATIVE
+# ifndef BOOST_TYPEOF_EMULATION
+# define BOOST_TYPEOF_EMULATION
+# endif
+# else
+# error native typeof is not supported
+# endif
+
+#elif defined(__BORLANDC__)
+# if (__BORLANDC__ < 0x590)
+# define BOOST_TYPEOF_NO_FUNCTION_TYPES
+# define BOOST_TYPEOF_NO_MEMBER_FUNCTION_TYPES
+# endif
+# ifndef BOOST_TYPEOF_NATIVE
+# ifndef BOOST_TYPEOF_EMULATION
+# define BOOST_TYPEOF_EMULATION
+# endif
+# else
+# error native typeof is not supported
+# endif
+
+#else //unknown compiler
+# ifndef BOOST_TYPEOF_NATIVE
+# ifndef BOOST_TYPEOF_EMULATION
+# define BOOST_TYPEOF_EMULATION
+# endif
+# else
+# ifndef BOOST_TYPEOF_KEYWORD
+# define BOOST_TYPEOF_KEYWORD typeof
+# endif
+# endif
+
+#endif
+
+#define BOOST_TYPEOF_UNIQUE_ID()\
+ BOOST_TYPEOF_REGISTRATION_GROUP * 0x10000 + __LINE__
+
+#define BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()\
+ <boost/typeof/incr_registration_group.hpp>
+
+#ifdef BOOST_TYPEOF_EMULATION
+# define BOOST_TYPEOF_TEXT "using typeof emulation"
+# include <boost/typeof/message.hpp>
+# include <boost/typeof/typeof_impl.hpp>
+# include <boost/typeof/type_encoding.hpp>
+# include <boost/typeof/template_encoding.hpp>
+# include <boost/typeof/modifiers.hpp>
+# include <boost/typeof/pointers_data_members.hpp>
+# include <boost/typeof/register_functions.hpp>
+# include <boost/typeof/register_fundamental.hpp>
+
+#elif defined(BOOST_TYPEOF_NATIVE)
+# define BOOST_TYPEOF_TEXT "using native typeof"
+# include <boost/typeof/message.hpp>
+# include <boost/typeof/native.hpp>
+#else
+# error typeof configuration error
+#endif
+
+// auto
+#define BOOST_AUTO(Var, Expr) BOOST_TYPEOF(Expr) Var = Expr
+#define BOOST_AUTO_TPL(Var, Expr) BOOST_TYPEOF_TPL(Expr) Var = Expr
+
+#endif//BOOST_TYPEOF_TYPEOF_HPP_INCLUDED

Added: sandbox/local/libs/local/params_name/boost/local/aux_/symbol.hpp
==============================================================================
--- (empty file)
+++ sandbox/local/libs/local/params_name/boost/local/aux_/symbol.hpp 2011-02-16 11:13:35 EST (Wed, 16 Feb 2011)
@@ -0,0 +1,75 @@
+
+// Copyright (C) 2009-2011 Lorenzo Caminiti
+// Use, modification, and distribution is subject to the
+// Boost Software License, Version 1.0
+// (see accompanying file LICENSE_1_0.txt or a copy at
+// http://www.boost.org/LICENSE_1_0.txt).
+
+#ifndef BOOST_LOCAL_AUX_SYMBOL_HPP_
+#define BOOST_LOCAL_AUX_SYMBOL_HPP_
+
+#include "../config.hpp"
+#include <boost/preprocessor/cat.hpp>
+
+// INFIX is used to separate symbols concatenamed together. Some of these
+// symbols are user defined so they can be anything. Because they can contain
+// underscore `_` and/or start with capital letters, it is NOT safe for the
+// INFIX to be the underscore `_` character as that could lead to library
+// defined symbols containing double underscores `__` which are reserved.
+// C++ standard: (1) "each name that contains a double underscore (_ _) or
+// begins with an underscore followed by an uppercase letter is reserved to
+// the implementation" and (2) "each name that begins with an underscore is
+// reserved to the implementation for use as a name in the global namespace".
+#define BOOST_LOCAL_AUX_SYMBOL_INFIX X // `X` used as separator.
+
+#define BOOST_LOCAL_AUX_SYMBOL_PREFIX \
+
+// Expand to `contract...<name>`.
+#define BOOST_LOCAL_AUX_SYMBOL(name) \
+ BOOST_PP_CAT(BOOST_PP_CAT(boost_local, \
+ BOOST_LOCAL_AUX_SYMBOL_INFIX), name)
+
+// Expand to `contract...aux...<name>` (internal).
+#define BOOST_LOCAL_AUX_INTERNAL_SYMBOL(name) \
+ BOOST_PP_CAT(BOOST_PP_CAT(boost_local_aux, \
+ BOOST_LOCAL_AUX_SYMBOL_INFIX), name)
+
+// Names (functions, variables, etc) //
+
+#define BOOST_LOCAL_AUX_SYMBOL_THIS_PARAM_NAME \
+ BOOST_LOCAL_CONFIG_THIS_PARAM_NAME
+
+#define BOOST_LOCAL_AUX_SYMBOL_ARGS_VARIABLE_NAME \
+ BOOST_LOCAL_AUX_INTERNAL_SYMBOL(args)
+
+#define BOOST_LOCAL_AUX_SYMBOL_PARAMS_LOCAL_VARIABLE_NAME(id) \
+ BOOST_LOCAL_AUX_INTERNAL_SYMBOL(BOOST_PP_CAT(params_, id))
+
+#define BOOST_LOCAL_AUX_SYMBOL_PARAMS_VARIABLE_NAME \
+ BOOST_LOCAL_AUX_INTERNAL_SYMBOL(params)
+
+#define BOOST_LOCAL_AUX_SYMBOL_FUNCTOR_CLASS_NAME( \
+ local_function_name) \
+ BOOST_LOCAL_AUX_INTERNAL_SYMBOL(BOOST_PP_CAT(BOOST_PP_CAT( \
+ functor, BOOST_LOCAL_AUX_SYMBOL_INFIX), \
+ local_function_name))
+
+#define BOOST_LOCAL_AUX_SYMBOL_FUNCTOR_OBJECT_NAME( \
+ local_function_name) \
+ BOOST_LOCAL_AUX_INTERNAL_SYMBOL(BOOST_PP_CAT(BOOST_PP_CAT( \
+ object, BOOST_LOCAL_AUX_SYMBOL_INFIX), \
+ local_function_name))
+
+#define BOOST_LOCAL_AUX_SYMBOL_FUNCTION_REF_NAME( \
+ local_function_name) \
+ BOOST_LOCAL_AUX_INTERNAL_SYMBOL(BOOST_PP_CAT(BOOST_PP_CAT( \
+ local_function_name, BOOST_LOCAL_AUX_SYMBOL_INFIX), ref))
+
+#define BOOST_LOCAL_AUX_SYMBOL_BODY_FUNCTION_NAME \
+ BOOST_LOCAL_AUX_INTERNAL_SYMBOL(body)
+
+#define BOOST_LOCAL_AUX_SYMBOL_BLOCK_FUNCTION_NAME \
+ BOOST_LOCAL_AUX_INTERNAL_SYMBOL(block_function)
+
+#endif // #include guard
+

Added: sandbox/local/libs/local/params_name/boost/local/aux_/type_traits/add_pointed_const.hpp
==============================================================================
--- (empty file)
+++ sandbox/local/libs/local/params_name/boost/local/aux_/type_traits/add_pointed_const.hpp 2011-02-16 11:13:35 EST (Wed, 16 Feb 2011)
@@ -0,0 +1,34 @@
+
+// Copyright (C) 2009-2011 Lorenzo Caminiti
+// Use, modification, and distribution is subject to the
+// Boost Software License, Version 1.0
+// (see accompanying file LICENSE_1_0.txt or a copy at
+// http://www.boost.org/LICENSE_1_0.txt).
+
+#ifndef BOOST_LOCAL_AUX_TYPE_TRAITS_POINTED_CONST_HPP_
+#define BOOST_LOCAL_AUX_TYPE_TRAITS_POINTED_CONST_HPP_
+
+namespace boost { namespace local { namespace aux {
+
+// Metafunction to add const to pointed type `T` (i.e. converts
+// `T* [const]` to `T const* [const]`).
+// NOTE: `boost::add_const<>` cannot be used instead because only adds outer
+// const.
+
+template<typename T> struct add_pointed_const { typedef T type; };
+
+template<typename T> struct add_pointed_const<T*> { typedef T const* type; };
+
+template<typename T> struct add_pointed_const<T const*>
+ { typedef T const* type; };
+
+template<typename T> struct add_pointed_const<T* const>
+ { typedef T const* const type; };
+
+template<typename T> struct add_pointed_const<T const* const>
+ { typedef T const* const type; };
+
+}}} // namespace
+
+#endif //#include guard
+

Added: sandbox/local/libs/local/params_name/boost/local/config.hpp
==============================================================================
--- (empty file)
+++ sandbox/local/libs/local/params_name/boost/local/config.hpp 2011-02-16 11:13:35 EST (Wed, 16 Feb 2011)
@@ -0,0 +1,55 @@
+
+// Copyright (C) 2009-2011 Lorenzo Caminiti
+// Use, modification, and distribution is subject to the
+// Boost Software License, Version 1.0
+// (see accompanying file LICENSE_1_0.txt or a copy at
+// http://www.boost.org/LICENSE_1_0.txt).
+
+/** @file
+ * @brief Configuration macros allow to change the behaviour of this library
+ * at compile-time.
+ */
+
+#ifndef BOOST_LOCAL_CONFIG_HPP_
+#define BOOST_LOCAL_CONFIG_HPP_
+
+/**
+ * @brief Maximum number of function parameters supported for the local
+ * functions.
+ *
+ * @Note If programmers leave this macro #undefined, its default value is
+ * <c>5</c>.
+ *
+ * This only refers to the number of local function parameters and not to the
+ * number of bound variables in scope (the limit on the number of bound
+ * variables is instead the maximum size allowed for a Boost.Preprocessor
+ * sequences).
+ *
+ * @Warning Increasing this number will increase compilation time.
+ *
+ * @See @RefSect{Starting} section.
+ */
+#ifndef BOOST_LOCAL_CONFIG_FUNCTION_ARITY_MAX
+#define BOOST_LOCAL_CONFIG_FUNCTION_ARITY_MAX 5
+#endif
+
+/**
+ * @brief The name of the special symbol used to access the bound object
+ * <c>this</c>.
+ *
+ * @Note If programmers leave this macro #undefined, the default symbol used is
+ * <c>this_</c>.
+ *
+ * @Warning Programmers should not #define this macro unless it is absolutely
+ * necessary (e.g., to avoid name clashes with another library which cannot be
+ * changed). Changing the symbol <c>this_</c> effectively changes the public
+ * API of this library.
+ *
+ * @See @RefSect{Starting} section.
+ */
+#ifndef BOOST_LOCAL_CONFIG_THIS_PARAM_NAME
+#define BOOST_LOCAL_CONFIG_THIS_PARAM_NAME this_
+#endif
+
+#endif // #include guard
+

Added: sandbox/local/libs/local/params_name/boost/local/function.hpp
==============================================================================
--- (empty file)
+++ sandbox/local/libs/local/params_name/boost/local/function.hpp 2011-02-16 11:13:35 EST (Wed, 16 Feb 2011)
@@ -0,0 +1,24 @@
+
+#ifndef BOOST_LOCAL_FUNCTION_HPP_
+#define BOOST_LOCAL_FUNCTION_HPP_
+
+#include "aux_/function/params.hpp"
+#include <boost/preprocessor/facilities/empty.hpp>
+#include <boost/config.hpp> // Handle variadic macros.
+
+// Params.
+
+// Pass a parenthesized params seq `()()...` on C++ but if variadics (C99
+// preprocessor only) you can also pass a variable length tuple `..., ...`.
+#if defined(BOOST_NO_VARIADIC_MACROS)
+# define BOOST_LOCAL_FUNCTION_PARAMS(parenthesized_params) \
+ BOOST_LOCAL_AUX_FUNCTION_PARAMS(parenthesized_params, BOOST_PP_EMPTY())
+#else
+# include "aux_/preprocessor/va/to_seq.hpp"
+# define BOOST_LOCAL_FUNCTION_PARAMS(...) \
+ BOOST_LOCAL_AUX_FUNCTION_PARAMS( \
+ BOOST_LOCAL_AUX_PP_VA_TO_SEQ(__VA_ARGS__), BOOST_PP_EMPTY())
+#endif
+
+#endif // #include guard
+

Added: sandbox/local/libs/local/params_name/boost/utility/aux_/identity.hpp
==============================================================================
--- (empty file)
+++ sandbox/local/libs/local/params_name/boost/utility/aux_/identity.hpp 2011-02-16 11:13:35 EST (Wed, 16 Feb 2011)
@@ -0,0 +1,24 @@
+
+// Copyright (C) 2009-2011 Lorenzo Caminiti
+// Use, modification, and distribution is subject to the
+// Boost Software License, Version 1.0
+// (see accompanying file LICENSE_1_0.txt or a copy at
+// http://www.boost.org/LICENSE_1_0.txt).
+
+#ifndef BOOST_AUX_IDENTITY_HPP_
+#define BOOST_AUX_IDENTITY_HPP_
+
+namespace boost { namespace aux {
+
+// Identity for type expressions.
+template<typename F> struct identity_type {}; // Empty so cannot be used.
+template<typename T> struct identity_type< void (T) > { typedef T type; };
+
+// Identity for value expressions (call overhead should be optimized away).
+template<typename T> inline T const& identity_value(T const& value)
+ { return value; }
+
+}} // namespace boost::aux
+
+#endif // #include guard
+

Added: sandbox/local/libs/local/params_name/boost/utility/identity.hpp
==============================================================================
--- (empty file)
+++ sandbox/local/libs/local/params_name/boost/utility/identity.hpp 2011-02-16 11:13:35 EST (Wed, 16 Feb 2011)
@@ -0,0 +1,85 @@
+
+// Copyright (C) 2009-2011 Lorenzo Caminiti
+// Use, modification, and distribution is subject to the
+// Boost Software License, Version 1.0
+// (see accompanying file LICENSE_1_0.txt or a copy at
+// http://www.boost.org/LICENSE_1_0.txt).
+
+/** @file
+ * @brief Identity macros are used to pass expressions with commas (not already
+ * wrapped within round parenthesis) as macros parameters.
+ *
+ * @Note The only way (at least as far as the authors know) to pass an
+ * arbitrary number of commas within macro parameters without explicitly
+ * indicating the number of commas is to wrap the parameter within round
+ * parenthesis that are not replaced by macro expansion and then to remove the
+ * extra parenthesis at compile-time (for type expressions) or at run-time
+ * (for value expressions).
+ * This is what these macros do.
+ */
+
+#ifndef BOOST_IDENTITY_HPP_
+#define BOOST_IDENTITY_HPP_
+
+#include "aux_/identity.hpp"
+
+/**
+ * @brief This macro wraps the specified type expression within extra
+ * parenthesis so the type can be passed as a single macro parameter even if
+ * it contains commas.
+ *
+ * This macro expands to an expression that can be passed as a single macro
+ * parameter even if it contains commas and that evaluates to the specified
+ * type at compile-time (see the @RefSect{Advanced} section).
+ *
+ * For example <c>BOOST_IDENTITY_TYPE((std::map<int, double>))</c> can be
+ * passed as a single macro parameter when instead
+ * <c>std::map<int, double></c> cannot (because it contains a comma not wrapped
+ * by round parenthesis so it will be interpreted as two separate macro
+ * parameters by the preprocessor).
+ *
+ * @Params
+ * @Param{parenthesized_type,
+ * The type expression to be passed as macro parameter wrapped by a single set
+ * of round parenthesis <c>(...)</c>.
+ * This type expression can contain an arbitrary number of commas.
+ * }
+ * @EndParams
+ *
+ * @See @RefSect{Advanced} section.
+ */
+#define BOOST_IDENTITY_TYPE(parenthesized_type) \
+ /* must NOT prefix this with `::` to work with parenthesized syntax */ \
+ boost::aux::identity_type< void parenthesized_type >::type
+
+/**
+ * @brief This macro wraps the specified value expression within extra
+ * parenthesis so the value can be passed as a single macro parameter even if
+ * it contains commas.
+ *
+ * This macro expands to an expression that can be passed as a single macro
+ * parameter even if it contains commas and that evaluates to the specified
+ * value at run-time (see the @RefSect{Advanced} section).
+ *
+ * For example <c>BOOST_IDENTITY_VALUE((key_size<int, double>::value))</c>
+ * can be passed as a single macro parameter when instead
+ * <c>key_size<int, double>::value</c> cannot (because it contains a comma not
+ * wrapped by round parenthesis so it will be interpreted as two separate macro
+ * parameters by the preprocessor).
+ *
+ * @Params
+ * @Param{parenthesize_value,
+ * The value expression to be passed as macro parameter wrapped by a single
+ * set of round parenthesis <c>(...)</c>.
+ * This value expression can contain an arbitrary number of commas.
+ * }
+ * @EndParams
+ *
+ * @See @RefSect{Advanced} section.
+ */
+#define BOOST_IDENTITY_VALUE(parenthesized_value) \
+ /* must NOT prefix this with `::` to work with parenthesized syntax */ \
+ boost::aux::identity_value parenthesized_value
+
+#endif // #include guard
+


Boost-Commit list run by bdawes at acm.org, david.abrahams at rcn.com, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk