diff --git a/include/chaiscript/chaiscript_threading.hpp b/include/chaiscript/chaiscript_threading.hpp index ce63df63..00db825e 100644 --- a/include/chaiscript/chaiscript_threading.hpp +++ b/include/chaiscript/chaiscript_threading.hpp @@ -17,6 +17,7 @@ #ifndef CHAISCRIPT_NO_THREADS #include #include +#include #else #ifndef CHAISCRIPT_NO_THREADS_WARNING #pragma message ("ChaiScript is compiling without thread safety.") @@ -49,13 +50,13 @@ namespace chaiscript using unique_lock = std::unique_lock; template - using shared_lock = std::unique_lock; + using shared_lock = std::shared_lock; template using lock_guard = std::lock_guard; - using shared_mutex = std::mutex; + using std::shared_mutex; using std::mutex; diff --git a/include/chaiscript/dispatchkit/any.hpp b/include/chaiscript/dispatchkit/any.hpp index 32ccdf89..823679eb 100644 --- a/include/chaiscript/dispatchkit/any.hpp +++ b/include/chaiscript/dispatchkit/any.hpp @@ -86,21 +86,15 @@ namespace chaiscript { Any(Any &&) = default; Any &operator=(Any &&t_any) = default; - Any(const Any &t_any) - { - if (!t_any.empty()) - { - m_data = t_any.m_data->clone(); - } else { - m_data.reset(); - } + Any(const Any &t_any) + : m_data(t_any.empty() ? nullptr : t_any.m_data->clone()) + { } - template::type>::value>::type> + typename = std::enable_if_t>>> explicit Any(ValueType &&t_value) - : m_data(std::unique_ptr(new Data_Impl::type>(std::forward(t_value)))) + : m_data(std::unique_ptr(new Data_Impl>(std::forward(t_value)))) { } diff --git a/include/chaiscript/dispatchkit/dispatchkit.hpp b/include/chaiscript/dispatchkit/dispatchkit.hpp index 6ff2accb..5b25127b 100644 --- a/include/chaiscript/dispatchkit/dispatchkit.hpp +++ b/include/chaiscript/dispatchkit/dispatchkit.hpp @@ -1049,7 +1049,7 @@ namespace chaiscript if (!functions.empty()) { try { if (is_no_param) { - std::vector tmp_params(params); + auto tmp_params(params); tmp_params.insert(tmp_params.begin() + 1, var(t_name)); return do_attribute_call(2, tmp_params, functions, t_conversions); } else { @@ -1080,10 +1080,9 @@ namespace chaiscript const Type_Conversions_State &t_conversions) const { uint_fast32_t loc = t_loc; - const auto funs = get_function(t_name, loc); - if (funs.first != loc) { t_loc = uint_fast32_t(funs.first); -} - return dispatch::dispatch(*funs.second, params, t_conversions); + const auto [func_loc, func] = get_function(t_name, loc); + if (func_loc != loc) { t_loc = uint_fast32_t(func_loc); } + return dispatch::dispatch(*func, params, t_conversions); } @@ -1102,12 +1101,12 @@ namespace chaiscript /// Dump function to stdout void dump_function(const std::pair &f) const { - std::vector params = f.second->get_param_types(); + const auto params = f.second->get_param_types(); dump_type(params.front()); std::cout << " " << f.first << "("; - for (std::vector::const_iterator itr = params.begin() + 1; + for (auto itr = params.begin() + 1; itr != params.end(); ) { @@ -1132,7 +1131,7 @@ namespace chaiscript throw chaiscript::exception::arity_error(static_cast(params.size()), 1); } - const Const_Proxy_Function &f = this->boxed_cast(params[0]); + const auto &f = this->boxed_cast(params[0]); const Type_Conversions_State convs(m_conversions, m_conversions.conversion_saves()); return const_var(f->call_match(std::vector(params.begin() + 1, params.end()), convs)); @@ -1142,25 +1141,17 @@ namespace chaiscript void dump_system() const { std::cout << "Registered Types: \n"; - std::vector > types = get_types(); - for (std::vector >::const_iterator itr = types.begin(); - itr != types.end(); - ++itr) + for (const auto &[type_name, type] : get_types() ) { - std::cout << itr->first << ": "; - std::cout << itr->second.bare_name(); - std::cout << '\n'; + std::cout << type_name << ": " << type.bare_name() << '\n'; } std::cout << '\n'; - std::vector > funcs = get_functions(); std::cout << "Functions: \n"; - for (std::vector >::const_iterator itr = funcs.begin(); - itr != funcs.end(); - ++itr) + for (const auto &func : get_functions()) { - dump_function(*itr); + dump_function(func); } std::cout << '\n'; } diff --git a/include/chaiscript/dispatchkit/exception_specification.hpp b/include/chaiscript/dispatchkit/exception_specification.hpp index 79607fe2..0eeecdc4 100644 --- a/include/chaiscript/dispatchkit/exception_specification.hpp +++ b/include/chaiscript/dispatchkit/exception_specification.hpp @@ -46,7 +46,7 @@ namespace chaiscript { void handle(const Boxed_Value &bv, const Dispatch_Engine &t_engine) override { - (void)std::initializer_list{(throw_type(bv, t_engine), 0)...}; + (throw_type(bv, t_engine), ...); } }; } diff --git a/include/chaiscript/dispatchkit/proxy_functions_detail.hpp b/include/chaiscript/dispatchkit/proxy_functions_detail.hpp index e24ebc92..ed71663f 100644 --- a/include/chaiscript/dispatchkit/proxy_functions_detail.hpp +++ b/include/chaiscript/dispatchkit/proxy_functions_detail.hpp @@ -92,9 +92,9 @@ namespace chaiscript template Ret call_func(Ret (*)(Params...), std::index_sequence, const Callable &f, - const std::vector ¶ms, const Type_Conversions_State &t_conversions) + [[maybe_unused]] const std::vector ¶ms, + [[maybe_unused]] const Type_Conversions_State &t_conversions) { - (void)params; (void)t_conversions; return f(boxed_cast(params[I], &t_conversions)...); } diff --git a/include/chaiscript/language/chaiscript_engine.hpp b/include/chaiscript/language/chaiscript_engine.hpp index 11506f58..cfdffc0e 100644 --- a/include/chaiscript/language/chaiscript_engine.hpp +++ b/include/chaiscript/language/chaiscript_engine.hpp @@ -557,7 +557,6 @@ explicit ChaiScript_Basic(std::unique_ptr &&pars std::string load_module(const std::string &t_module_name) { #ifdef CHAISCRIPT_NO_DYNLOAD - (void)t_module_name; // -Wunused-parameter throw chaiscript::exception::load_module_error("Loadable module support was disabled (CHAISCRIPT_NO_DYNLOAD)"); #else std::vector errors; diff --git a/include/chaiscript/language/chaiscript_optimizer.hpp b/include/chaiscript/language/chaiscript_optimizer.hpp index 3df867f1..74fa3803 100644 --- a/include/chaiscript/language/chaiscript_optimizer.hpp +++ b/include/chaiscript/language/chaiscript_optimizer.hpp @@ -24,7 +24,7 @@ namespace chaiscript { template auto optimize(eval::AST_Node_Impl_Ptr p) { - (void)std::initializer_list{ (p = static_cast(*this).optimize(std::move(p)), 0)... }; + ( (p = static_cast(*this).optimize(std::move(p))), ... ); return p; } }; diff --git a/include/chaiscript/language/chaiscript_tracer.hpp b/include/chaiscript/language/chaiscript_tracer.hpp index 3774826b..a60db66d 100644 --- a/include/chaiscript/language/chaiscript_tracer.hpp +++ b/include/chaiscript/language/chaiscript_tracer.hpp @@ -29,7 +29,7 @@ namespace chaiscript { } void do_trace(const chaiscript::detail::Dispatch_State &ds, const AST_Node_Impl> *node) { - (void)std::initializer_list{ (static_cast(*this).trace(ds, node), 0)... }; + (static_cast(*this).trace(ds, node), ... ); } static void trace(const chaiscript::detail::Dispatch_State &ds, const AST_Node_Impl> *node) {