mirror of
https://github.com/godotengine/godot.git
synced 2024-11-27 09:16:35 +08:00
Merge pull request #91104 from RandomShaper/simple_type_cpp
Redefine `GetSimpleTypeT<>` in terms of `<type_traits>`
This commit is contained in:
commit
63ed5749ac
@ -208,7 +208,7 @@
|
||||
#define ARG(N) p##N
|
||||
#define PARAM(N) P##N p##N
|
||||
#define TYPE_PARAM(N) typename P##N
|
||||
#define PARAM_DECL(N) typename GetSimpleTypeT<P##N>::type_t p##N
|
||||
#define PARAM_DECL(N) GetSimpleTypeT<P##N> p##N
|
||||
|
||||
#define DECL_CMD(N) \
|
||||
template <typename T, typename M COMMA(N) COMMA_SEP_LIST(TYPE_PARAM, N)> \
|
||||
|
@ -31,26 +31,9 @@
|
||||
#ifndef SIMPLE_TYPE_H
|
||||
#define SIMPLE_TYPE_H
|
||||
|
||||
/* Batch of specializations to obtain the actual simple type */
|
||||
#include <type_traits>
|
||||
|
||||
template <typename T>
|
||||
struct GetSimpleTypeT {
|
||||
typedef T type_t;
|
||||
};
|
||||
|
||||
template <typename T>
|
||||
struct GetSimpleTypeT<T &> {
|
||||
typedef T type_t;
|
||||
};
|
||||
|
||||
template <typename T>
|
||||
struct GetSimpleTypeT<T const> {
|
||||
typedef T type_t;
|
||||
};
|
||||
|
||||
template <typename T>
|
||||
struct GetSimpleTypeT<T const &> {
|
||||
typedef T type_t;
|
||||
};
|
||||
using GetSimpleTypeT = typename std::remove_cv_t<std::remove_reference_t<T>>;
|
||||
|
||||
#endif // SIMPLE_TYPE_H
|
||||
|
@ -362,42 +362,42 @@ void call_with_ptr_args_static_method_helper(void (*p_method)(P...), const void
|
||||
|
||||
template <typename T, typename... P, size_t... Is>
|
||||
void call_with_validated_variant_args_helper(T *p_instance, void (T::*p_method)(P...), const Variant **p_args, IndexSequence<Is...>) {
|
||||
(p_instance->*p_method)((VariantInternalAccessor<typename GetSimpleTypeT<P>::type_t>::get(p_args[Is]))...);
|
||||
(p_instance->*p_method)((VariantInternalAccessor<GetSimpleTypeT<P>>::get(p_args[Is]))...);
|
||||
}
|
||||
|
||||
template <typename T, typename... P, size_t... Is>
|
||||
void call_with_validated_variant_argsc_helper(T *p_instance, void (T::*p_method)(P...) const, const Variant **p_args, IndexSequence<Is...>) {
|
||||
(p_instance->*p_method)((VariantInternalAccessor<typename GetSimpleTypeT<P>::type_t>::get(p_args[Is]))...);
|
||||
(p_instance->*p_method)((VariantInternalAccessor<GetSimpleTypeT<P>>::get(p_args[Is]))...);
|
||||
}
|
||||
|
||||
template <typename T, typename R, typename... P, size_t... Is>
|
||||
void call_with_validated_variant_args_ret_helper(T *p_instance, R (T::*p_method)(P...), const Variant **p_args, Variant *r_ret, IndexSequence<Is...>) {
|
||||
VariantInternalAccessor<typename GetSimpleTypeT<R>::type_t>::set(r_ret, (p_instance->*p_method)((VariantInternalAccessor<typename GetSimpleTypeT<P>::type_t>::get(p_args[Is]))...));
|
||||
VariantInternalAccessor<GetSimpleTypeT<R>>::set(r_ret, (p_instance->*p_method)((VariantInternalAccessor<GetSimpleTypeT<P>>::get(p_args[Is]))...));
|
||||
}
|
||||
|
||||
template <typename T, typename R, typename... P, size_t... Is>
|
||||
void call_with_validated_variant_args_retc_helper(T *p_instance, R (T::*p_method)(P...) const, const Variant **p_args, Variant *r_ret, IndexSequence<Is...>) {
|
||||
VariantInternalAccessor<typename GetSimpleTypeT<R>::type_t>::set(r_ret, (p_instance->*p_method)((VariantInternalAccessor<typename GetSimpleTypeT<P>::type_t>::get(p_args[Is]))...));
|
||||
VariantInternalAccessor<GetSimpleTypeT<R>>::set(r_ret, (p_instance->*p_method)((VariantInternalAccessor<GetSimpleTypeT<P>>::get(p_args[Is]))...));
|
||||
}
|
||||
|
||||
template <typename T, typename R, typename... P, size_t... Is>
|
||||
void call_with_validated_variant_args_static_retc_helper(T *p_instance, R (*p_method)(T *, P...), const Variant **p_args, Variant *r_ret, IndexSequence<Is...>) {
|
||||
VariantInternalAccessor<typename GetSimpleTypeT<R>::type_t>::set(r_ret, p_method(p_instance, (VariantInternalAccessor<typename GetSimpleTypeT<P>::type_t>::get(p_args[Is]))...));
|
||||
VariantInternalAccessor<GetSimpleTypeT<R>>::set(r_ret, p_method(p_instance, (VariantInternalAccessor<GetSimpleTypeT<P>>::get(p_args[Is]))...));
|
||||
}
|
||||
|
||||
template <typename T, typename... P, size_t... Is>
|
||||
void call_with_validated_variant_args_static_helper(T *p_instance, void (*p_method)(T *, P...), const Variant **p_args, IndexSequence<Is...>) {
|
||||
p_method(p_instance, (VariantInternalAccessor<typename GetSimpleTypeT<P>::type_t>::get(p_args[Is]))...);
|
||||
p_method(p_instance, (VariantInternalAccessor<GetSimpleTypeT<P>>::get(p_args[Is]))...);
|
||||
}
|
||||
|
||||
template <typename R, typename... P, size_t... Is>
|
||||
void call_with_validated_variant_args_static_method_ret_helper(R (*p_method)(P...), const Variant **p_args, Variant *r_ret, IndexSequence<Is...>) {
|
||||
VariantInternalAccessor<typename GetSimpleTypeT<R>::type_t>::set(r_ret, p_method((VariantInternalAccessor<typename GetSimpleTypeT<P>::type_t>::get(p_args[Is]))...));
|
||||
VariantInternalAccessor<GetSimpleTypeT<R>>::set(r_ret, p_method((VariantInternalAccessor<GetSimpleTypeT<P>>::get(p_args[Is]))...));
|
||||
}
|
||||
|
||||
template <typename... P, size_t... Is>
|
||||
void call_with_validated_variant_args_static_method_helper(void (*p_method)(P...), const Variant **p_args, IndexSequence<Is...>) {
|
||||
p_method((VariantInternalAccessor<typename GetSimpleTypeT<P>::type_t>::get(p_args[Is]))...);
|
||||
p_method((VariantInternalAccessor<GetSimpleTypeT<P>>::get(p_args[Is]))...);
|
||||
}
|
||||
|
||||
template <typename T, typename... P>
|
||||
|
@ -1546,7 +1546,7 @@ struct VariantTypeChanger {
|
||||
template <typename T>
|
||||
struct VariantTypeAdjust {
|
||||
_FORCE_INLINE_ static void adjust(Variant *r_ret) {
|
||||
VariantTypeChanger<typename GetSimpleTypeT<T>::type_t>::change(r_ret);
|
||||
VariantTypeChanger<GetSimpleTypeT<T>>::change(r_ret);
|
||||
}
|
||||
};
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user