callable_mp: Fix non-debug branch
Was missed in #36393 because no `callable_mp()` calls were actually compiled with `tools=no` in that PR. Also work around GCC warning that also affects the `call_with_variant_args_ret_helper` variant.
This commit is contained in:
parent
65429f11a6
commit
220c8e8344
1 changed files with 15 additions and 2 deletions
|
@ -134,7 +134,7 @@ void call_with_variant_args_helper(T *p_instance, void (T::*p_method)(P...), con
|
||||||
#ifdef DEBUG_METHODS_ENABLED
|
#ifdef DEBUG_METHODS_ENABLED
|
||||||
(p_instance->*p_method)(VariantCasterAndValidate<P>::cast(p_args, Is, r_error)...);
|
(p_instance->*p_method)(VariantCasterAndValidate<P>::cast(p_args, Is, r_error)...);
|
||||||
#else
|
#else
|
||||||
(p_instance->*p_method)(VariantCaster<P...>::cast(p_args[Is])...);
|
(p_instance->*p_method)(VariantCaster<P>::cast(p_args[Is])...);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -201,6 +201,15 @@ Callable create_custom_callable_function_pointer(T *p_instance,
|
||||||
|
|
||||||
// VERSION WITH RETURN
|
// VERSION WITH RETURN
|
||||||
|
|
||||||
|
// GCC 8 raises "parameter 'p_args' set but not used" here, probably using a
|
||||||
|
// template version that does not have arguments and thus sees it unused, but
|
||||||
|
// obviously the template can be used for functions with and without them, and
|
||||||
|
// the optimizer will get rid of it anyway.
|
||||||
|
#if defined(DEBUG_METHODS_ENABLED) && defined(__GNUC__) && !defined(__clang__)
|
||||||
|
#pragma GCC diagnostic push
|
||||||
|
#pragma GCC diagnostic ignored "-Wunused-but-set-parameter"
|
||||||
|
#endif
|
||||||
|
|
||||||
template <class T, class R, class... P, size_t... Is>
|
template <class T, class R, class... P, size_t... Is>
|
||||||
void call_with_variant_args_ret_helper(T *p_instance, R (T::*p_method)(P...), const Variant **p_args, Variant &r_ret, Callable::CallError &r_error, IndexSequence<Is...>) {
|
void call_with_variant_args_ret_helper(T *p_instance, R (T::*p_method)(P...), const Variant **p_args, Variant &r_ret, Callable::CallError &r_error, IndexSequence<Is...>) {
|
||||||
r_error.error = Callable::CallError::CALL_OK;
|
r_error.error = Callable::CallError::CALL_OK;
|
||||||
|
@ -208,10 +217,14 @@ void call_with_variant_args_ret_helper(T *p_instance, R (T::*p_method)(P...), co
|
||||||
#ifdef DEBUG_METHODS_ENABLED
|
#ifdef DEBUG_METHODS_ENABLED
|
||||||
r_ret = (p_instance->*p_method)(VariantCasterAndValidate<P>::cast(p_args, Is, r_error)...);
|
r_ret = (p_instance->*p_method)(VariantCasterAndValidate<P>::cast(p_args, Is, r_error)...);
|
||||||
#else
|
#else
|
||||||
(p_instance->*p_method)(VariantCaster<P...>::cast(p_args[Is])...);
|
(p_instance->*p_method)(VariantCaster<P>::cast(p_args[Is])...);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if defined(DEBUG_METHODS_ENABLED) && defined(__GNUC__) && !defined(__clang__)
|
||||||
|
#pragma GCC diagnostic pop
|
||||||
|
#endif
|
||||||
|
|
||||||
template <class T, class R, class... P>
|
template <class T, class R, class... P>
|
||||||
void call_with_variant_args_ret(T *p_instance, R (T::*p_method)(P...), const Variant **p_args, int p_argcount, Variant &r_ret, Callable::CallError &r_error) {
|
void call_with_variant_args_ret(T *p_instance, R (T::*p_method)(P...), const Variant **p_args, int p_argcount, Variant &r_ret, Callable::CallError &r_error) {
|
||||||
#ifdef DEBUG_METHODS_ENABLED
|
#ifdef DEBUG_METHODS_ENABLED
|
||||||
|
|
Loading…
Reference in a new issue