From 214920da44bca5303f1b7a3ae94f915a54f526bf Mon Sep 17 00:00:00 2001 From: BlackMATov Date: Fri, 10 Feb 2023 16:29:24 +0700 Subject: [PATCH] replace some throws to asserts --- develop/singles/headers/meta.hpp/meta_all.hpp | 62 +++++++++---------- headers/meta.hpp/meta_base/exceptions.hpp | 4 +- headers/meta.hpp/meta_base/fixed_function.hpp | 2 +- headers/meta.hpp/meta_binds/class_bind.hpp | 40 ++++++------ headers/meta.hpp/meta_binds/scope_bind.hpp | 16 ++--- 5 files changed, 62 insertions(+), 62 deletions(-) diff --git a/develop/singles/headers/meta.hpp/meta_all.hpp b/develop/singles/headers/meta.hpp/meta_all.hpp index 56365a5..0832091 100644 --- a/develop/singles/headers/meta.hpp/meta_all.hpp +++ b/develop/singles/headers/meta.hpp/meta_all.hpp @@ -304,8 +304,8 @@ namespace meta_hpp::detail #else # define META_HPP_TRY if ( true ) # define META_HPP_CATCH(...) if ( false ) -# define META_HPP_RETHROW() std::terminate() -# define META_HPP_THROW(...) std::terminate() +# define META_HPP_RETHROW() std::abort() +# define META_HPP_THROW(...) std::abort() #endif #define META_HPP_THROW_IF(yesno, ...) \ @@ -381,7 +381,7 @@ namespace meta_hpp::detail } R operator()(Args... args) const { - META_HPP_THROW_IF(!vtable_, "bad function call"); + META_HPP_ASSERT(vtable_ && "bad function call"); return vtable_->call(*this, std::forward(args)...); } @@ -4413,12 +4413,12 @@ namespace meta_hpp { auto state = detail::constructor_state::make(std::move(opts.metadata)); - META_HPP_THROW_IF( // - opts.arguments.size() > state->arguments.size(), - "provided argument names don't match constructor argument count" + META_HPP_ASSERT( // + opts.arguments.size() <= state->arguments.size() // + && "provided argument names don't match constructor argument count" ); - for ( std::size_t i = 0; i < opts.arguments.size(); ++i ) { + for ( std::size_t i{}, e{std::min(opts.arguments.size(), state->arguments.size())}; i < e; ++i ) { argument& arg = state->arguments[i]; detail::state_access(arg)->name = std::move(opts.arguments[i].name); detail::state_access(arg)->metadata = std::move(opts.arguments[i].metadata); @@ -4463,12 +4463,12 @@ namespace meta_hpp class_bind& class_bind::function_(std::string name, Function function_ptr, function_opts opts, Policy) { auto state = detail::function_state::make(std::move(name), function_ptr, std::move(opts.metadata)); - META_HPP_THROW_IF( // - opts.arguments.size() > state->arguments.size(), - "provided arguments don't match function argument count" + META_HPP_ASSERT( // + opts.arguments.size() <= state->arguments.size() // + && "provided arguments don't match function argument count" ); - for ( std::size_t i = 0; i < opts.arguments.size(); ++i ) { + for ( std::size_t i{}, e{std::min(opts.arguments.size(), state->arguments.size())}; i < e; ++i ) { argument& arg = state->arguments[i]; detail::state_access(arg)->name = std::move(opts.arguments[i].name); detail::state_access(arg)->metadata = std::move(opts.arguments[i].metadata); @@ -4483,12 +4483,12 @@ namespace meta_hpp class_bind& class_bind::function_(std::string name, Function function_ptr, string_ilist arguments, Policy) { auto state = detail::function_state::make(std::move(name), function_ptr, {}); - META_HPP_THROW_IF( // - arguments.size() > state->arguments.size(), - "provided argument names don't match function argument count" + META_HPP_ASSERT( + arguments.size() <= state->arguments.size() // + && "provided argument names don't match function argument count" ); - for ( std::size_t i = 0; i < arguments.size(); ++i ) { + for ( std::size_t i{}, e{std::min(arguments.size(), state->arguments.size())}; i < e; ++i ) { argument& arg = state->arguments[i]; // NOLINTNEXTLINE(*-pointer-arithmetic) detail::state_access(arg)->name = std::data(arguments)[i]; @@ -4535,12 +4535,12 @@ namespace meta_hpp class_bind& class_bind::method_(std::string name, Method method_ptr, method_opts opts, Policy) { auto state = detail::method_state::make(std::move(name), method_ptr, std::move(opts.metadata)); - META_HPP_THROW_IF( // - opts.arguments.size() > state->arguments.size(), - "provided arguments don't match method argument count" + META_HPP_ASSERT( // + opts.arguments.size() <= state->arguments.size() // + && "provided arguments don't match method argument count" ); - for ( std::size_t i = 0; i < opts.arguments.size(); ++i ) { + for ( std::size_t i{}, e{std::min(opts.arguments.size(), state->arguments.size())}; i < e; ++i ) { argument& arg = state->arguments[i]; detail::state_access(arg)->name = std::move(opts.arguments[i].name); detail::state_access(arg)->metadata = std::move(opts.arguments[i].metadata); @@ -4556,12 +4556,12 @@ namespace meta_hpp class_bind& class_bind::method_(std::string name, Method method_ptr, string_ilist arguments, Policy) { auto state = detail::method_state::make(std::move(name), method_ptr, {}); - META_HPP_THROW_IF( // - arguments.size() > state->arguments.size(), - "provided argument names don't match method argument count" + META_HPP_ASSERT( // + arguments.size() <= state->arguments.size() // + && "provided argument names don't match method argument count" ); - for ( std::size_t i = 0; i < arguments.size(); ++i ) { + for ( std::size_t i{}, e{std::min(arguments.size(), state->arguments.size())}; i < e; ++i ) { argument& arg = state->arguments[i]; // NOLINTNEXTLINE(*-pointer-arithmetic) detail::state_access(arg)->name = std::data(arguments)[i]; @@ -4687,12 +4687,12 @@ namespace meta_hpp scope_bind& scope_bind::function_(std::string name, Function function_ptr, function_opts opts, Policy) { auto state = detail::function_state::make(std::move(name), function_ptr, std::move(opts.metadata)); - META_HPP_THROW_IF( // - opts.arguments.size() > state->arguments.size(), - "provided arguments don't match function argument count" + META_HPP_ASSERT( // + opts.arguments.size() <= state->arguments.size() // + && "provided arguments don't match function argument count" ); - for ( std::size_t i = 0; i < opts.arguments.size(); ++i ) { + for ( std::size_t i{}, e{std::min(opts.arguments.size(), state->arguments.size())}; i < e; ++i ) { argument& arg = state->arguments[i]; detail::state_access(arg)->name = std::move(opts.arguments[i].name); detail::state_access(arg)->metadata = std::move(opts.arguments[i].metadata); @@ -4706,12 +4706,12 @@ namespace meta_hpp scope_bind& scope_bind::function_(std::string name, Function function_ptr, string_ilist arguments, Policy) { auto state = detail::function_state::make(std::move(name), function_ptr, {}); - META_HPP_THROW_IF( // - arguments.size() > state->arguments.size(), - "provided argument names don't match function argument count" + META_HPP_ASSERT( // + arguments.size() <= state->arguments.size() // + && "provided argument names don't match function argument count" ); - for ( std::size_t i = 0; i < arguments.size(); ++i ) { + for ( std::size_t i{}, e{std::min(arguments.size(), state->arguments.size())}; i < e; ++i ) { argument& arg = state->arguments[i]; // NOLINTNEXTLINE(*-pointer-arithmetic) detail::state_access(arg)->name = std::data(arguments)[i]; diff --git a/headers/meta.hpp/meta_base/exceptions.hpp b/headers/meta.hpp/meta_base/exceptions.hpp index 705bdc5..b76e826 100644 --- a/headers/meta.hpp/meta_base/exceptions.hpp +++ b/headers/meta.hpp/meta_base/exceptions.hpp @@ -16,8 +16,8 @@ #else # define META_HPP_TRY if ( true ) # define META_HPP_CATCH(...) if ( false ) -# define META_HPP_RETHROW() std::terminate() -# define META_HPP_THROW(...) std::terminate() +# define META_HPP_RETHROW() std::abort() +# define META_HPP_THROW(...) std::abort() #endif #define META_HPP_THROW_IF(yesno, ...) \ diff --git a/headers/meta.hpp/meta_base/fixed_function.hpp b/headers/meta.hpp/meta_base/fixed_function.hpp index a3951e8..1e26c8e 100644 --- a/headers/meta.hpp/meta_base/fixed_function.hpp +++ b/headers/meta.hpp/meta_base/fixed_function.hpp @@ -64,7 +64,7 @@ namespace meta_hpp::detail } R operator()(Args... args) const { - META_HPP_THROW_IF(!vtable_, "bad function call"); + META_HPP_ASSERT(vtable_ && "bad function call"); return vtable_->call(*this, std::forward(args)...); } diff --git a/headers/meta.hpp/meta_binds/class_bind.hpp b/headers/meta.hpp/meta_binds/class_bind.hpp index b68ee5d..70e9113 100644 --- a/headers/meta.hpp/meta_binds/class_bind.hpp +++ b/headers/meta.hpp/meta_binds/class_bind.hpp @@ -72,12 +72,12 @@ namespace meta_hpp { auto state = detail::constructor_state::make(std::move(opts.metadata)); - META_HPP_THROW_IF( // - opts.arguments.size() > state->arguments.size(), - "provided argument names don't match constructor argument count" + META_HPP_ASSERT( // + opts.arguments.size() <= state->arguments.size() // + && "provided argument names don't match constructor argument count" ); - for ( std::size_t i = 0; i < opts.arguments.size(); ++i ) { + for ( std::size_t i{}, e{std::min(opts.arguments.size(), state->arguments.size())}; i < e; ++i ) { argument& arg = state->arguments[i]; detail::state_access(arg)->name = std::move(opts.arguments[i].name); detail::state_access(arg)->metadata = std::move(opts.arguments[i].metadata); @@ -122,12 +122,12 @@ namespace meta_hpp class_bind& class_bind::function_(std::string name, Function function_ptr, function_opts opts, Policy) { auto state = detail::function_state::make(std::move(name), function_ptr, std::move(opts.metadata)); - META_HPP_THROW_IF( // - opts.arguments.size() > state->arguments.size(), - "provided arguments don't match function argument count" + META_HPP_ASSERT( // + opts.arguments.size() <= state->arguments.size() // + && "provided arguments don't match function argument count" ); - for ( std::size_t i = 0; i < opts.arguments.size(); ++i ) { + for ( std::size_t i{}, e{std::min(opts.arguments.size(), state->arguments.size())}; i < e; ++i ) { argument& arg = state->arguments[i]; detail::state_access(arg)->name = std::move(opts.arguments[i].name); detail::state_access(arg)->metadata = std::move(opts.arguments[i].metadata); @@ -142,12 +142,12 @@ namespace meta_hpp class_bind& class_bind::function_(std::string name, Function function_ptr, string_ilist arguments, Policy) { auto state = detail::function_state::make(std::move(name), function_ptr, {}); - META_HPP_THROW_IF( // - arguments.size() > state->arguments.size(), - "provided argument names don't match function argument count" + META_HPP_ASSERT( + arguments.size() <= state->arguments.size() // + && "provided argument names don't match function argument count" ); - for ( std::size_t i = 0; i < arguments.size(); ++i ) { + for ( std::size_t i{}, e{std::min(arguments.size(), state->arguments.size())}; i < e; ++i ) { argument& arg = state->arguments[i]; // NOLINTNEXTLINE(*-pointer-arithmetic) detail::state_access(arg)->name = std::data(arguments)[i]; @@ -194,12 +194,12 @@ namespace meta_hpp class_bind& class_bind::method_(std::string name, Method method_ptr, method_opts opts, Policy) { auto state = detail::method_state::make(std::move(name), method_ptr, std::move(opts.metadata)); - META_HPP_THROW_IF( // - opts.arguments.size() > state->arguments.size(), - "provided arguments don't match method argument count" + META_HPP_ASSERT( // + opts.arguments.size() <= state->arguments.size() // + && "provided arguments don't match method argument count" ); - for ( std::size_t i = 0; i < opts.arguments.size(); ++i ) { + for ( std::size_t i{}, e{std::min(opts.arguments.size(), state->arguments.size())}; i < e; ++i ) { argument& arg = state->arguments[i]; detail::state_access(arg)->name = std::move(opts.arguments[i].name); detail::state_access(arg)->metadata = std::move(opts.arguments[i].metadata); @@ -215,12 +215,12 @@ namespace meta_hpp class_bind& class_bind::method_(std::string name, Method method_ptr, string_ilist arguments, Policy) { auto state = detail::method_state::make(std::move(name), method_ptr, {}); - META_HPP_THROW_IF( // - arguments.size() > state->arguments.size(), - "provided argument names don't match method argument count" + META_HPP_ASSERT( // + arguments.size() <= state->arguments.size() // + && "provided argument names don't match method argument count" ); - for ( std::size_t i = 0; i < arguments.size(); ++i ) { + for ( std::size_t i{}, e{std::min(arguments.size(), state->arguments.size())}; i < e; ++i ) { argument& arg = state->arguments[i]; // NOLINTNEXTLINE(*-pointer-arithmetic) detail::state_access(arg)->name = std::data(arguments)[i]; diff --git a/headers/meta.hpp/meta_binds/scope_bind.hpp b/headers/meta.hpp/meta_binds/scope_bind.hpp index 78e3d5c..d62cb9f 100644 --- a/headers/meta.hpp/meta_binds/scope_bind.hpp +++ b/headers/meta.hpp/meta_binds/scope_bind.hpp @@ -28,12 +28,12 @@ namespace meta_hpp scope_bind& scope_bind::function_(std::string name, Function function_ptr, function_opts opts, Policy) { auto state = detail::function_state::make(std::move(name), function_ptr, std::move(opts.metadata)); - META_HPP_THROW_IF( // - opts.arguments.size() > state->arguments.size(), - "provided arguments don't match function argument count" + META_HPP_ASSERT( // + opts.arguments.size() <= state->arguments.size() // + && "provided arguments don't match function argument count" ); - for ( std::size_t i = 0; i < opts.arguments.size(); ++i ) { + for ( std::size_t i{}, e{std::min(opts.arguments.size(), state->arguments.size())}; i < e; ++i ) { argument& arg = state->arguments[i]; detail::state_access(arg)->name = std::move(opts.arguments[i].name); detail::state_access(arg)->metadata = std::move(opts.arguments[i].metadata); @@ -47,12 +47,12 @@ namespace meta_hpp scope_bind& scope_bind::function_(std::string name, Function function_ptr, string_ilist arguments, Policy) { auto state = detail::function_state::make(std::move(name), function_ptr, {}); - META_HPP_THROW_IF( // - arguments.size() > state->arguments.size(), - "provided argument names don't match function argument count" + META_HPP_ASSERT( // + arguments.size() <= state->arguments.size() // + && "provided argument names don't match function argument count" ); - for ( std::size_t i = 0; i < arguments.size(); ++i ) { + for ( std::size_t i{}, e{std::min(arguments.size(), state->arguments.size())}; i < e; ++i ) { argument& arg = state->arguments[i]; // NOLINTNEXTLINE(*-pointer-arithmetic) detail::state_access(arg)->name = std::data(arguments)[i];