summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTobias Markmann <tm@ayena.de>2014-10-19 20:22:58 (GMT)
committerTobias Markmann <tm@ayena.de>2014-10-20 13:49:33 (GMT)
commit6b22dfcf59474dd016a0355a3102a1dd3692d92c (patch)
tree2b1fd33be433a91e81fee84fdc2bf1b52575d934 /3rdParty/Boost/src/boost/tti/has_member_function.hpp
parent38b0cb785fea8eae5e48fae56440695fdfd10ee1 (diff)
downloadswift-6b22dfcf59474dd016a0355a3102a1dd3692d92c.zip
swift-6b22dfcf59474dd016a0355a3102a1dd3692d92c.tar.bz2
Update Boost in 3rdParty to version 1.56.0.
This updates Boost in our 3rdParty directory to version 1.56.0. Updated our update.sh script to stop on error. Changed error reporting in SwiftTools/CrashReporter.cpp to SWIFT_LOG due to missing include of <iostream> with newer Boost. Change-Id: I4b35c77de951333979a524097f35f5f83d325edc
Diffstat (limited to '3rdParty/Boost/src/boost/tti/has_member_function.hpp')
-rw-r--r--3rdParty/Boost/src/boost/tti/has_member_function.hpp119
1 files changed, 119 insertions, 0 deletions
diff --git a/3rdParty/Boost/src/boost/tti/has_member_function.hpp b/3rdParty/Boost/src/boost/tti/has_member_function.hpp
new file mode 100644
index 0000000..3aa2476
--- /dev/null
+++ b/3rdParty/Boost/src/boost/tti/has_member_function.hpp
@@ -0,0 +1,119 @@
+
+// (C) Copyright Edward Diener 2011,2012,2013
+// Use, modification and distribution are subject to 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).
+
+#if !defined(BOOST_TTI_HAS_MEMBER_FUNCTION_HPP)
+#define BOOST_TTI_HAS_MEMBER_FUNCTION_HPP
+
+#include <boost/config.hpp>
+#include <boost/function_types/property_tags.hpp>
+#include <boost/mpl/vector.hpp>
+#include <boost/preprocessor/cat.hpp>
+#include <boost/tti/detail/ddeftype.hpp>
+#include <boost/tti/detail/dmem_fun.hpp>
+#include <boost/tti/gen/has_member_function_gen.hpp>
+#include <boost/tti/gen/namespace_gen.hpp>
+
+/*
+
+ The succeeding comments in this file are in doxygen format.
+
+*/
+
+/** \file
+*/
+
+/// Expands to a metafunction which tests whether a member function with a particular name and signature exists.
+/**
+
+ trait = the name of the metafunction within the tti namespace.
+
+ name = the name of the inner member.
+
+ generates a metafunction called "trait" where 'trait' is the macro parameter.<br />
+
+ template<class BOOST_TTI_TP_T,class BOOST_TTI_R,class BOOST_TTI_FS,class BOOST_TTI_TAG>
+ struct trait
+ {
+ static const value = unspecified;
+ typedef mpl::bool_<true-or-false> type;
+ };
+
+ The metafunction types and return:
+
+ BOOST_TTI_TP_T = the enclosing type in which to look for our 'name'
+ OR
+ a pointer to member function as a single type.
+
+ BOOST_TTI_TP_R = (optional) the return type of the member function
+ if the first parameter is the enclosing type.
+
+ BOOST_TTI_TP_FS = (optional) the parameters of the member function as a boost::mpl forward sequence
+ if the first parameter is the enclosing type and the member function parameters
+ are not empty.
+
+ BOOST_TTI_TP_TAG = (optional) a boost::function_types tag to apply to the member function
+ if the first parameter is the enclosing type and a tag is needed.
+
+ returns = 'value' is true if the 'name' exists,
+ with the appropriate member function type,
+ otherwise 'value' is false.
+
+*/
+#define BOOST_TTI_TRAIT_HAS_MEMBER_FUNCTION(trait,name) \
+ BOOST_TTI_DETAIL_TRAIT_HAS_MEMBER_FUNCTION(trait,name) \
+ template<class BOOST_TTI_TP_T,class BOOST_TTI_TP_R = BOOST_TTI_NAMESPACE::detail::deftype,class BOOST_TTI_TP_FS = boost::mpl::vector<>,class BOOST_TTI_TP_TAG = boost::function_types::null_tag> \
+ struct trait \
+ { \
+ typedef typename \
+ BOOST_PP_CAT(trait,_detail_hmf)<BOOST_TTI_TP_T,BOOST_TTI_TP_R,BOOST_TTI_TP_FS,BOOST_TTI_TP_TAG>::type type; \
+ BOOST_STATIC_CONSTANT(bool,value=type::value); \
+ }; \
+/**/
+
+/// Expands to a metafunction which tests whether a member function with a particular name and signature exists.
+/**
+
+ name = the name of the inner member.
+
+ generates a metafunction called "has_member_function_name" where 'name' is the macro parameter.
+
+ template<class BOOST_TTI_TP_T,class BOOST_TTI_TP_R,class BOOST_TTI_TP_FS,class BOOST_TTI_TP_TAG>
+ struct has_member_function_name
+ {
+ static const value = unspecified;
+ typedef mpl::bool_<true-or-false> type;
+ };
+
+ The metafunction types and return:
+
+ BOOST_TTI_TP_T = the enclosing type in which to look for our 'name'
+ OR
+ a pointer to member function as a single type.
+
+ BOOST_TTI_TP_R = (optional) the return type of the member function
+ if the first parameter is the enclosing type.
+
+ BOOST_TTI_TP_FS = (optional) the parameters of the member function as a boost::mpl forward sequence
+ if the first parameter is the enclosing type and the member function parameters
+ are not empty.
+
+ BOOST_TTI_TP_TAG = (optional) a boost::function_types tag to apply to the member function
+ if the first parameter is the enclosing type and a tag is needed.
+
+ returns = 'value' is true if the 'name' exists,
+ with the appropriate member function type,
+ otherwise 'value' is false.
+
+*/
+#define BOOST_TTI_HAS_MEMBER_FUNCTION(name) \
+ BOOST_TTI_TRAIT_HAS_MEMBER_FUNCTION \
+ ( \
+ BOOST_TTI_HAS_MEMBER_FUNCTION_GEN(name), \
+ name \
+ ) \
+/**/
+
+#endif // BOOST_TTI_HAS_MEMBER_FUNCTION_HPP