From 964342bff30890597661e26de9f44aa78bbda175 Mon Sep 17 00:00:00 2001 From: Jason Turner Date: Wed, 7 Nov 2012 14:13:08 -0700 Subject: [PATCH 1/2] Prevent leaking macros #76 --- include/chaiscript/dispatchkit/bind_first.hpp | 1 + include/chaiscript/dispatchkit/boxed_cast.hpp | 4 ++-- include/chaiscript/dispatchkit/function_call_detail.hpp | 2 ++ include/chaiscript/dispatchkit/proxy_functions_detail.hpp | 4 ++++ 4 files changed, 9 insertions(+), 2 deletions(-) diff --git a/include/chaiscript/dispatchkit/bind_first.hpp b/include/chaiscript/dispatchkit/bind_first.hpp index e00a53c..953344d 100644 --- a/include/chaiscript/dispatchkit/bind_first.hpp +++ b/include/chaiscript/dispatchkit/bind_first.hpp @@ -89,5 +89,6 @@ namespace chaiscript #undef n #undef m +#undef param #endif diff --git a/include/chaiscript/dispatchkit/boxed_cast.hpp b/include/chaiscript/dispatchkit/boxed_cast.hpp index 4344095..43a3f19 100644 --- a/include/chaiscript/dispatchkit/boxed_cast.hpp +++ b/include/chaiscript/dispatchkit/boxed_cast.hpp @@ -4,8 +4,8 @@ // and Jason Turner (jason@emptycrate.com) // http://www.chaiscript.com -#ifndef __boxed_cast_hpp__ -#define __boxed_cast_hpp__ +#ifndef CHAISCRIPT_BOXED_CAST_HPP_ +#define CHAISCRIPT_BOXED_CAST_HPP_ #include "type_info.hpp" #include "boxed_value.hpp" diff --git a/include/chaiscript/dispatchkit/function_call_detail.hpp b/include/chaiscript/dispatchkit/function_call_detail.hpp index 1ec79af..d9c7160 100644 --- a/include/chaiscript/dispatchkit/function_call_detail.hpp +++ b/include/chaiscript/dispatchkit/function_call_detail.hpp @@ -114,6 +114,8 @@ namespace chaiscript } } #undef n +#undef addparam +#undef curry #endif diff --git a/include/chaiscript/dispatchkit/proxy_functions_detail.hpp b/include/chaiscript/dispatchkit/proxy_functions_detail.hpp index f364cc6..a853e1d 100644 --- a/include/chaiscript/dispatchkit/proxy_functions_detail.hpp +++ b/include/chaiscript/dispatchkit/proxy_functions_detail.hpp @@ -120,6 +120,10 @@ namespace chaiscript } #undef n +#undef gettypeinfo +#undef casthelper +#undef trycast + #endif From 923369a4f4391b39f340a51bbe3df26edef422fe Mon Sep 17 00:00:00 2001 From: Jason Turner Date: Wed, 7 Nov 2012 15:48:25 -0700 Subject: [PATCH 2/2] Add support for string::substr #75 Also add forgotten missing test for number suffixes --- include/chaiscript/dispatchkit/bootstrap_stl.hpp | 5 +++++ unittests/number_suffixes.chai | 11 +++++++++++ unittests/string_substr.chai | 1 + 3 files changed, 17 insertions(+) create mode 100644 unittests/number_suffixes.chai create mode 100644 unittests/string_substr.chai diff --git a/include/chaiscript/dispatchkit/bootstrap_stl.hpp b/include/chaiscript/dispatchkit/bootstrap_stl.hpp index 88fed35..ff5cbf1 100644 --- a/include/chaiscript/dispatchkit/bootstrap_stl.hpp +++ b/include/chaiscript/dispatchkit/bootstrap_stl.hpp @@ -625,6 +625,9 @@ namespace chaiscript typedef typename String::size_type (String::*find_func_ptr)(const String &, typename String::size_type) const; typedef boost::function find_func; + typedef String (String::*substr_ptr)(typename String::size_type, typename String::size_type) const; + typedef boost::function substr_func; + m->add(fun(find_func(detail::return_int(static_cast(&String::find)))), "find"); m->add(fun(find_func(detail::return_int(static_cast(&String::rfind)))), "rfind"); m->add(fun(find_func(detail::return_int(static_cast(&String::find_first_of)))), "find_first_of"); @@ -632,6 +635,8 @@ namespace chaiscript m->add(fun(find_func(detail::return_int(static_cast(&String::find_first_not_of)))), "find_first_not_of"); m->add(fun(find_func(detail::return_int(static_cast(&String::find_last_not_of)))), "find_last_not_of"); + m->add(fun(substr_func(static_cast(&String::substr))), "substr"); + m->add(fun(&String::c_str), "c_str"); m->add(fun(&String::data), "data"); diff --git a/unittests/number_suffixes.chai b/unittests/number_suffixes.chai new file mode 100644 index 0000000..99ac03f --- /dev/null +++ b/unittests/number_suffixes.chai @@ -0,0 +1,11 @@ +assert_equal(true, int_type.bare_equal(1.get_type_info())) +assert_equal(true, unsigned_int_type.bare_equal(1u.get_type_info())) +assert_equal(true, unsigned_long_type.bare_equal(1lu.get_type_info())) +assert_equal(true, long_type.bare_equal(1l.get_type_info())) +assert_equal(true, int64_t_type.bare_equal(1ll.get_type_info())) +assert_equal(true, uint64_t_type.bare_equal(1ull.get_type_info())) + +assert_equal(true, double_type.bare_equal(1.6.get_type_info())) +assert_equal(true, float_type.bare_equal(1.6f.get_type_info())) +assert_equal(true, long_double_type.bare_equal(1.6l.get_type_info())) + diff --git a/unittests/string_substr.chai b/unittests/string_substr.chai new file mode 100644 index 0000000..19128bc --- /dev/null +++ b/unittests/string_substr.chai @@ -0,0 +1 @@ +assert_equal("3ab", "123abab".substr(2,3))