Move from boost::bind to std::bind

This commit is contained in:
Jason Turner
2011-09-10 10:19:55 -06:00
parent c842bf14c1
commit 53108463df
18 changed files with 27 additions and 53 deletions

View File

@@ -13,8 +13,6 @@
#ifndef CHAISCRIPT_BIND_FIRST_HPP_ #ifndef CHAISCRIPT_BIND_FIRST_HPP_
#define CHAISCRIPT_BIND_FIRST_HPP_ #define CHAISCRIPT_BIND_FIRST_HPP_
#include <boost/function.hpp>
#include <boost/bind.hpp>
#include <boost/ref.hpp> #include <boost/ref.hpp>
#define BOOST_PP_ITERATION_LIMITS ( 0, 8 ) #define BOOST_PP_ITERATION_LIMITS ( 0, 8 )
@@ -42,7 +40,7 @@ namespace chaiscript
std::function<Ret (BOOST_PP_ENUM_PARAMS(n, Param))> std::function<Ret (BOOST_PP_ENUM_PARAMS(n, Param))>
bind_first(Ret (Class::*f)(BOOST_PP_ENUM_PARAMS(n, Param)), const O &o) bind_first(Ret (Class::*f)(BOOST_PP_ENUM_PARAMS(n, Param)), const O &o)
{ {
return boost::bind(boost::mem_fn(f), o BOOST_PP_COMMA_IF(n) BOOST_PP_ENUM(n, param, _)); return std::bind(boost::mem_fn(f), o BOOST_PP_COMMA_IF(n) BOOST_PP_ENUM(n, param, std::placeholders::_));
} }
/// \brief Helper function for binding the first parameter of a const class method pointer. Used in chaiscript::fun overloads /// \brief Helper function for binding the first parameter of a const class method pointer. Used in chaiscript::fun overloads
@@ -55,7 +53,7 @@ namespace chaiscript
std::function<Ret (BOOST_PP_ENUM_PARAMS(n, Param))> std::function<Ret (BOOST_PP_ENUM_PARAMS(n, Param))>
bind_first(Ret (Class::*f)(BOOST_PP_ENUM_PARAMS(n, Param)) const, const O &o) bind_first(Ret (Class::*f)(BOOST_PP_ENUM_PARAMS(n, Param)) const, const O &o)
{ {
return boost::bind(boost::mem_fn(f), o BOOST_PP_COMMA_IF(n) BOOST_PP_ENUM(n, param, _)); return std::bind(boost::mem_fn(f), o BOOST_PP_COMMA_IF(n) BOOST_PP_ENUM(n, param, std::placeholders::_));
} }
/// \brief Helper function for binding the first parameter of a function pointer. Used in chaiscript::fun overloads /// \brief Helper function for binding the first parameter of a function pointer. Used in chaiscript::fun overloads
@@ -68,7 +66,7 @@ namespace chaiscript
std::function<Ret (BOOST_PP_ENUM(n, param, Param))> std::function<Ret (BOOST_PP_ENUM(n, param, Param))>
bind_first(Ret (*f)(BOOST_PP_ENUM_PARAMS(m, Param)), const O &o) bind_first(Ret (*f)(BOOST_PP_ENUM_PARAMS(m, Param)), const O &o)
{ {
return boost::bind(f, o BOOST_PP_COMMA_IF(n) BOOST_PP_ENUM(n, param, _)); return std::bind(f, o BOOST_PP_COMMA_IF(n) BOOST_PP_ENUM(n, param, std::placeholders::_));
} }
/// \brief Helper function for binding the first parameter of a std::function object. Used in chaiscript::fun overloads /// \brief Helper function for binding the first parameter of a std::function object. Used in chaiscript::fun overloads
@@ -81,7 +79,7 @@ namespace chaiscript
std::function<Ret (BOOST_PP_ENUM(n, param, Param))> std::function<Ret (BOOST_PP_ENUM(n, param, Param))>
bind_first(const std::function<Ret (BOOST_PP_ENUM_PARAMS(m, Param))> &f, const O &o) bind_first(const std::function<Ret (BOOST_PP_ENUM_PARAMS(m, Param))> &f, const O &o)
{ {
return boost::bind(f, o BOOST_PP_COMMA_IF(n) BOOST_PP_ENUM(n, param, _)); return std::bind(f, o BOOST_PP_COMMA_IF(n) BOOST_PP_ENUM(n, param, std::placeholders::_));
} }
} }

View File

@@ -357,7 +357,7 @@ namespace chaiscript
template<typename Function> template<typename Function>
static std::function<std::vector<Boxed_Value> (const dispatch::Proxy_Function_Base*)> return_boxed_value_vector(const Function &f) static std::function<std::vector<Boxed_Value> (const dispatch::Proxy_Function_Base*)> return_boxed_value_vector(const Function &f)
{ {
return boost::bind(&do_return_boxed_value_vector<Function>, f, _1); return std::bind(&do_return_boxed_value_vector<Function>, f, std::placeholders::_1);
} }
public: public:
@@ -462,14 +462,14 @@ namespace chaiscript
m->add(fun(&print), "print_string"); m->add(fun(&print), "print_string");
m->add(fun(&println), "println_string"); m->add(fun(&println), "println_string");
m->add(Proxy_Function(new dispatch::Dynamic_Proxy_Function(boost::bind(&bind_function, _1))), m->add(Proxy_Function(new dispatch::Dynamic_Proxy_Function(std::bind(&bind_function, std::placeholders::_1))),
"bind"); "bind");
m->add(fun(&shared_ptr_unconst_clone<dispatch::Proxy_Function_Base>), "clone"); m->add(fun(&shared_ptr_unconst_clone<dispatch::Proxy_Function_Base>), "clone");
m->add(fun(&ptr_assign<boost::remove_const<dispatch::Proxy_Function_Base>::type>), "="); m->add(fun(&ptr_assign<boost::remove_const<dispatch::Proxy_Function_Base>::type>), "=");
m->add(fun(&ptr_assign<boost::add_const<dispatch::Proxy_Function_Base>::type>), "="); m->add(fun(&ptr_assign<boost::add_const<dispatch::Proxy_Function_Base>::type>), "=");
m->add(Proxy_Function(new dispatch::Dynamic_Proxy_Function(boost::bind(&call_exists, _1))), m->add(Proxy_Function(new dispatch::Dynamic_Proxy_Function(std::bind(&call_exists, std::placeholders::_1))),
"call_exists"); "call_exists");
m->add(fun(&type_match), "type_match"); m->add(fun(&type_match), "type_match");

View File

@@ -4,8 +4,8 @@
// and Jason Turner (jason@emptycrate.com) // and Jason Turner (jason@emptycrate.com)
// http://www.chaiscript.com // http://www.chaiscript.com
#ifndef __boxed_cast_hpp__ #ifndef CHAISCRIPT_BOXED_CAST_HPP_
#define __boxed_cast_hpp__ #define CHAISCRIPT_BOXED_CAST_HPP_
#include "type_info.hpp" #include "type_info.hpp"
#include "boxed_value.hpp" #include "boxed_value.hpp"
@@ -13,9 +13,7 @@
#include "dynamic_cast_conversion.hpp" #include "dynamic_cast_conversion.hpp"
#include "../chaiscript_threading.hpp" #include "../chaiscript_threading.hpp"
#include <boost/shared_ptr.hpp>
#include <boost/any.hpp> #include <boost/any.hpp>
#include <boost/function.hpp>
#include <boost/ref.hpp> #include <boost/ref.hpp>
#include <boost/cstdint.hpp> #include <boost/cstdint.hpp>
#include <boost/type_traits/add_const.hpp> #include <boost/type_traits/add_const.hpp>

View File

@@ -10,7 +10,6 @@
#include "type_info.hpp" #include "type_info.hpp"
#include "boxed_value.hpp" #include "boxed_value.hpp"
#include <boost/shared_ptr.hpp>
#include <boost/any.hpp> #include <boost/any.hpp>
#include <boost/ref.hpp> #include <boost/ref.hpp>
#include <boost/type_traits/add_const.hpp> #include <boost/type_traits/add_const.hpp>

View File

@@ -12,11 +12,8 @@
#include "../chaiscript_threading.hpp" #include "../chaiscript_threading.hpp"
#include <map> #include <map>
#include <boost/shared_ptr.hpp>
#include <boost/any.hpp> #include <boost/any.hpp>
#include <boost/function.hpp>
#include <boost/ref.hpp> #include <boost/ref.hpp>
#include <boost/bind.hpp>
#include <boost/cstdint.hpp> #include <boost/cstdint.hpp>
#include <boost/type_traits/add_const.hpp> #include <boost/type_traits/add_const.hpp>
#include <boost/integer_traits.hpp> #include <boost/integer_traits.hpp>

View File

@@ -11,7 +11,6 @@
#include <string> #include <string>
#include <map> #include <map>
#include <set> #include <set>
#include <boost/shared_ptr.hpp>
#include <boost/lexical_cast.hpp> #include <boost/lexical_cast.hpp>
#include <boost/tuple/tuple.hpp> #include <boost/tuple/tuple.hpp>
#include <stdexcept> #include <stdexcept>

View File

@@ -7,9 +7,6 @@
#ifndef CHAISCRIPT_FUNCTION_CALL_HPP_ #ifndef CHAISCRIPT_FUNCTION_CALL_HPP_
#define CHAISCRIPT_FUNCTION_CALL_HPP_ #define CHAISCRIPT_FUNCTION_CALL_HPP_
#include <boost/shared_ptr.hpp>
#include <boost/bind.hpp>
#include <boost/function.hpp>
#include <string> #include <string>
#include <vector> #include <vector>
#include "proxy_functions.hpp" #include "proxy_functions.hpp"

View File

@@ -7,16 +7,13 @@
#include <boost/preprocessor.hpp> #include <boost/preprocessor.hpp>
#define addparam(z,n,text) params.push_back((boost::is_reference<Param ## n>::value&&!(boost::is_same<chaiscript::Boxed_Value, typename boost::remove_const<typename boost::remove_reference<Param ## n>::type>::type>::value))?Boxed_Value(boost::ref(BOOST_PP_CAT(p, n))):Boxed_Value(BOOST_PP_CAT(p, n) )); #define addparam(z,n,text) params.push_back((boost::is_reference<Param ## n>::value&&!(boost::is_same<chaiscript::Boxed_Value, typename boost::remove_const<typename boost::remove_reference<Param ## n>::type>::type>::value))?Boxed_Value(boost::ref(BOOST_PP_CAT(p, n))):Boxed_Value(BOOST_PP_CAT(p, n) ));
#define curry(z,n,text) BOOST_PP_CAT(_, BOOST_PP_INC(n)) #define curry(z,n,text) BOOST_PP_CAT(std::placeholders::_, BOOST_PP_INC(n))
#ifndef BOOST_PP_IS_ITERATING #ifndef BOOST_PP_IS_ITERATING
#ifndef CHAISCRIPT_FUNCTION_CALL_DETAIL_HPP_ #ifndef CHAISCRIPT_FUNCTION_CALL_DETAIL_HPP_
#define CHAISCRIPT_FUNCTION_CALL_DETAIL_HPP_ #define CHAISCRIPT_FUNCTION_CALL_DETAIL_HPP_
#include <boost/shared_ptr.hpp>
#include <boost/bind.hpp>
#include <boost/function.hpp>
#include <string> #include <string>
#include <vector> #include <vector>
#include "proxy_functions.hpp" #include "proxy_functions.hpp"
@@ -107,7 +104,7 @@ namespace chaiscript
// we cannot make any other guesses or assumptions really, so continuing // we cannot make any other guesses or assumptions really, so continuing
} }
return boost::bind(&function_caller<Ret BOOST_PP_COMMA_IF(n) BOOST_PP_ENUM_PARAMS(n, Param)>, funcs return std::bind(&function_caller<Ret BOOST_PP_COMMA_IF(n) BOOST_PP_ENUM_PARAMS(n, Param)>, funcs
BOOST_PP_ENUM_TRAILING(n, curry, ~)); BOOST_PP_ENUM_TRAILING(n, curry, ~));
} }
} }

View File

@@ -10,9 +10,6 @@
#ifndef CHAISCRIPT_PROXY_CONSTRUCTORS_HPP_ #ifndef CHAISCRIPT_PROXY_CONSTRUCTORS_HPP_
#define CHAISCRIPT_PROXY_CONSTRUCTORS_HPP_ #define CHAISCRIPT_PROXY_CONSTRUCTORS_HPP_
#include <boost/shared_ptr.hpp>
#include <boost/bind.hpp>
#include <boost/function.hpp>
#define BOOST_PP_ITERATION_LIMITS ( 0, 10 ) #define BOOST_PP_ITERATION_LIMITS ( 0, 10 )

View File

@@ -12,7 +12,6 @@
#include "boxed_value.hpp" #include "boxed_value.hpp"
#include "type_info.hpp" #include "type_info.hpp"
#include <string> #include <string>
#include <boost/function.hpp>
#include <boost/type_traits/add_reference.hpp> #include <boost/type_traits/add_reference.hpp>
#include <stdexcept> #include <stdexcept>
#include <vector> #include <vector>

View File

@@ -19,8 +19,6 @@
#include "type_info.hpp" #include "type_info.hpp"
#include "handle_return.hpp" #include "handle_return.hpp"
#include <string> #include <string>
#include <boost/function.hpp>
#include <boost/bind.hpp>
#include <boost/lexical_cast.hpp> #include <boost/lexical_cast.hpp>
#include <stdexcept> #include <stdexcept>

View File

@@ -9,8 +9,6 @@
#include "dispatchkit.hpp" #include "dispatchkit.hpp"
#include "bind_first.hpp" #include "bind_first.hpp"
#include <boost/function.hpp>
#include <boost/bind.hpp>
#include <boost/function_types/components.hpp> #include <boost/function_types/components.hpp>
#include <boost/function_types/function_type.hpp> #include <boost/function_types/function_type.hpp>
#include <boost/function_types/is_member_object_pointer.hpp> #include <boost/function_types/is_member_object_pointer.hpp>

View File

@@ -9,7 +9,7 @@
#include <string> #include <string>
#include <typeinfo> #include <typeinfo>
#include <boost/shared_ptr.hpp> #include <memory>
#include <boost/type_traits/is_const.hpp> #include <boost/type_traits/is_const.hpp>
#include <boost/type_traits/is_void.hpp> #include <boost/type_traits/is_void.hpp>
#include <boost/type_traits/is_reference.hpp> #include <boost/type_traits/is_reference.hpp>

View File

@@ -8,7 +8,6 @@
#define CHAISCRIPT_ALGEBRAIC_HPP_ #define CHAISCRIPT_ALGEBRAIC_HPP_
#include <chaiscript/dispatchkit/dispatchkit.hpp> #include <chaiscript/dispatchkit/dispatchkit.hpp>
#include <boost/enable_shared_from_this.hpp>
namespace chaiscript namespace chaiscript
{ {

View File

@@ -8,7 +8,6 @@
#define CHAISCRIPT_COMMON_HPP_ #define CHAISCRIPT_COMMON_HPP_
#include <chaiscript/dispatchkit/dispatchkit.hpp> #include <chaiscript/dispatchkit/dispatchkit.hpp>
#include <boost/enable_shared_from_this.hpp>
namespace chaiscript namespace chaiscript
{ {

View File

@@ -556,7 +556,7 @@ namespace chaiscript
} }
return Boxed_Value(Proxy_Function(new dispatch::Dynamic_Proxy_Function return Boxed_Value(Proxy_Function(new dispatch::Dynamic_Proxy_Function
(boost::bind(chaiscript::eval::detail::eval_function, boost::ref(t_ss), this->children.back(), t_param_names, _1), (std::bind(chaiscript::eval::detail::eval_function, boost::ref(t_ss), this->children.back(), t_param_names, std::placeholders::_1),
static_cast<int>(numparams), this->children.back()))); static_cast<int>(numparams), this->children.back())));
} }
@@ -623,18 +623,18 @@ namespace chaiscript
std::shared_ptr<dispatch::Dynamic_Proxy_Function> guard; std::shared_ptr<dispatch::Dynamic_Proxy_Function> guard;
if (guardnode) { if (guardnode) {
guard = std::shared_ptr<dispatch::Dynamic_Proxy_Function> guard = std::shared_ptr<dispatch::Dynamic_Proxy_Function>
(new dispatch::Dynamic_Proxy_Function(boost::bind(chaiscript::eval::detail::eval_function, (new dispatch::Dynamic_Proxy_Function(std::bind(chaiscript::eval::detail::eval_function,
boost::ref(t_ss), guardnode, boost::ref(t_ss), guardnode,
t_param_names, _1), static_cast<int>(numparams), guardnode)); t_param_names, std::placeholders::_1), static_cast<int>(numparams), guardnode));
} }
try { try {
const std::string & l_function_name = this->children[0]->text; const std::string & l_function_name = this->children[0]->text;
const std::string & l_annotation = this->annotation?this->annotation->text:""; const std::string & l_annotation = this->annotation?this->annotation->text:"";
t_ss.add(Proxy_Function t_ss.add(Proxy_Function
(new dispatch::Dynamic_Proxy_Function(boost::bind(chaiscript::eval::detail::eval_function, (new dispatch::Dynamic_Proxy_Function(std::bind(chaiscript::eval::detail::eval_function,
boost::ref(t_ss), this->children.back(), boost::ref(t_ss), this->children.back(),
t_param_names, _1), static_cast<int>(numparams), this->children.back(), t_param_names, std::placeholders::_1), static_cast<int>(numparams), this->children.back(),
l_annotation, guard)), l_function_name); l_annotation, guard)), l_function_name);
} }
catch (const exception::reserved_word_error &e) { catch (const exception::reserved_word_error &e) {
@@ -1098,9 +1098,9 @@ namespace chaiscript
std::shared_ptr<dispatch::Dynamic_Proxy_Function> guard; std::shared_ptr<dispatch::Dynamic_Proxy_Function> guard;
if (guardnode) { if (guardnode) {
guard = std::shared_ptr<dispatch::Dynamic_Proxy_Function> guard = std::shared_ptr<dispatch::Dynamic_Proxy_Function>
(new dispatch::Dynamic_Proxy_Function(boost::bind(chaiscript::eval::detail::eval_function, (new dispatch::Dynamic_Proxy_Function(std::bind(chaiscript::eval::detail::eval_function,
boost::ref(t_ss), guardnode, boost::ref(t_ss), guardnode,
t_param_names, _1), static_cast<int>(numparams), guardnode)); t_param_names, std::placeholders::_1), static_cast<int>(numparams), guardnode));
} }
try { try {
@@ -1110,9 +1110,9 @@ namespace chaiscript
if (function_name == class_name) { if (function_name == class_name) {
t_ss.add(Proxy_Function t_ss.add(Proxy_Function
(new dispatch::detail::Dynamic_Object_Constructor(class_name, Proxy_Function (new dispatch::detail::Dynamic_Object_Constructor(class_name, Proxy_Function
(new dispatch::Dynamic_Proxy_Function(boost::bind(chaiscript::eval::detail::eval_function, (new dispatch::Dynamic_Proxy_Function(std::bind(chaiscript::eval::detail::eval_function,
boost::ref(t_ss), this->children.back(), boost::ref(t_ss), this->children.back(),
t_param_names, _1), static_cast<int>(numparams), this->children.back(), t_param_names, std::placeholders::_1), static_cast<int>(numparams), this->children.back(),
l_annotation, guard)))), function_name); l_annotation, guard)))), function_name);
} }
@@ -1125,9 +1125,9 @@ namespace chaiscript
} }
t_ss.add(Proxy_Function t_ss.add(Proxy_Function
(new dispatch::detail::Dynamic_Object_Function(class_name, Proxy_Function (new dispatch::detail::Dynamic_Object_Function(class_name, Proxy_Function
(new dispatch::Dynamic_Proxy_Function(boost::bind(chaiscript::eval::detail::eval_function, (new dispatch::Dynamic_Proxy_Function(std::bind(chaiscript::eval::detail::eval_function,
boost::ref(t_ss), this->children.back(), boost::ref(t_ss), this->children.back(),
t_param_names, _1), static_cast<int>(numparams), this->children.back(), t_param_names, std::placeholders::_1), static_cast<int>(numparams), this->children.back(),
l_annotation, guard)), ti)), function_name); l_annotation, guard)), ti)), function_name);
} }
@@ -1147,8 +1147,8 @@ namespace chaiscript
virtual ~Attr_Decl_AST_Node() {} virtual ~Attr_Decl_AST_Node() {}
virtual Boxed_Value eval_internal(chaiscript::detail::Dispatch_Engine &t_ss){ virtual Boxed_Value eval_internal(chaiscript::detail::Dispatch_Engine &t_ss){
try { try {
t_ss.add(fun(std::function<Boxed_Value (dispatch::Dynamic_Object &)>(boost::bind(&dispatch::detail::Dynamic_Object_Attribute::func, this->children[0]->text, t_ss.add(fun(std::function<Boxed_Value (dispatch::Dynamic_Object &)>(std::bind(&dispatch::detail::Dynamic_Object_Attribute::func, this->children[0]->text,
this->children[1]->text, _1))), this->children[1]->text); this->children[1]->text, std::placeholders::_1))), this->children[1]->text);
} }
catch (const exception::reserved_word_error &) { catch (const exception::reserved_word_error &) {

View File

@@ -8,7 +8,6 @@
#include <chaiscript/chaiscript.hpp> #include <chaiscript/chaiscript.hpp>
#include <chaiscript/dispatchkit/function_call.hpp> #include <chaiscript/dispatchkit/function_call.hpp>
#include <boost/function.hpp>
#include <boost/date_time/posix_time/posix_time.hpp> #include <boost/date_time/posix_time/posix_time.hpp>
#include <boost/regex.hpp> #include <boost/regex.hpp>
@@ -165,7 +164,7 @@ int main(int /*argc*/, char * /*argv*/[]) {
//Dynamic objects test //Dynamic objects test
chai.add(chaiscript::Proxy_Function(new dispatch::detail::Dynamic_Object_Function("TestType", fun(&hello_world))), "hello_world"); chai.add(chaiscript::Proxy_Function(new dispatch::detail::Dynamic_Object_Function("TestType", fun(&hello_world))), "hello_world");
chai.add(chaiscript::Proxy_Function(new dispatch::detail::Dynamic_Object_Constructor("TestType", fun(&hello_constructor))), "TestType"); chai.add(chaiscript::Proxy_Function(new dispatch::detail::Dynamic_Object_Constructor("TestType", fun(&hello_constructor))), "TestType");
chai.add(fun(std::function<Boxed_Value (dispatch::Dynamic_Object &)>(boost::bind(&dispatch::detail::Dynamic_Object_Attribute::func, "TestType", "attr", _1))), "attr"); chai.add(fun(std::function<Boxed_Value (dispatch::Dynamic_Object &)>(std::bind(&dispatch::detail::Dynamic_Object_Attribute::func, "TestType", "attr", std::placeholders::_1))), "attr");
chai.eval("var x = TestType()"); chai.eval("var x = TestType()");
// chai.eval("x.attr = \"hi\""); // chai.eval("x.attr = \"hi\"");

View File

@@ -29,7 +29,7 @@ int main(int argc, char *argv[]) {
for (int i = 0; i < argc - 1; ++i) for (int i = 0; i < argc - 1; ++i)
{ {
threads.push_back(std::shared_ptr<boost::thread>(new boost::thread(boost::bind(do_work, boost::ref(chai))))); threads.push_back(std::shared_ptr<boost::thread>(new boost::thread(std::bind(do_work, boost::ref(chai)))));
} }
for (int i = 0; i < argc - 1; ++i) for (int i = 0; i < argc - 1; ++i)