Skip to content

Commit f8dedf6

Browse files
committed
Merge pull request godotengine#105254 from Ivorforce/no-get-internal-ptr
Delete `VariantGetInternalPtr` and `VariantImplicitConvert`, replace with `VariantInternalAccessor`
2 parents 3dbb193 + 406b22d commit f8dedf6

File tree

11 files changed

+955
-1474
lines changed

11 files changed

+955
-1474
lines changed

core/variant/binder_common.h

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -531,27 +531,27 @@ void call_with_ptr_args_static_method(void (*p_method)(P...), const void **p_arg
531531

532532
template <typename T, typename... P>
533533
void call_with_validated_variant_args(Variant *base, void (T::*p_method)(P...), const Variant **p_args) {
534-
call_with_validated_variant_args_helper<T, P...>(VariantGetInternalPtr<T>::get_ptr(base), p_method, p_args, BuildIndexSequence<sizeof...(P)>{});
534+
call_with_validated_variant_args_helper<T, P...>(&VariantInternalAccessor<T>::get(base), p_method, p_args, BuildIndexSequence<sizeof...(P)>{});
535535
}
536536

537537
template <typename T, typename R, typename... P>
538538
void call_with_validated_variant_args_ret(Variant *base, R (T::*p_method)(P...), const Variant **p_args, Variant *r_ret) {
539-
call_with_validated_variant_args_ret_helper<T, R, P...>(VariantGetInternalPtr<T>::get_ptr(base), p_method, p_args, r_ret, BuildIndexSequence<sizeof...(P)>{});
539+
call_with_validated_variant_args_ret_helper<T, R, P...>(&VariantInternalAccessor<T>::get(base), p_method, p_args, r_ret, BuildIndexSequence<sizeof...(P)>{});
540540
}
541541

542542
template <typename T, typename R, typename... P>
543543
void call_with_validated_variant_args_retc(Variant *base, R (T::*p_method)(P...) const, const Variant **p_args, Variant *r_ret) {
544-
call_with_validated_variant_args_retc_helper<T, R, P...>(VariantGetInternalPtr<T>::get_ptr(base), p_method, p_args, r_ret, BuildIndexSequence<sizeof...(P)>{});
544+
call_with_validated_variant_args_retc_helper<T, R, P...>(&VariantInternalAccessor<T>::get(base), p_method, p_args, r_ret, BuildIndexSequence<sizeof...(P)>{});
545545
}
546546

547547
template <typename T, typename... P>
548548
void call_with_validated_variant_args_static(Variant *base, void (*p_method)(T *, P...), const Variant **p_args) {
549-
call_with_validated_variant_args_static_helper<T, P...>(VariantGetInternalPtr<T>::get_ptr(base), p_method, p_args, BuildIndexSequence<sizeof...(P)>{});
549+
call_with_validated_variant_args_static_helper<T, P...>(&VariantInternalAccessor<T>::get(base), p_method, p_args, BuildIndexSequence<sizeof...(P)>{});
550550
}
551551

552552
template <typename T, typename R, typename... P>
553553
void call_with_validated_variant_args_static_retc(Variant *base, R (*p_method)(T *, P...), const Variant **p_args, Variant *r_ret) {
554-
call_with_validated_variant_args_static_retc_helper<T, R, P...>(VariantGetInternalPtr<T>::get_ptr(base), p_method, p_args, r_ret, BuildIndexSequence<sizeof...(P)>{});
554+
call_with_validated_variant_args_static_retc_helper<T, R, P...>(&VariantInternalAccessor<T>::get(base), p_method, p_args, r_ret, BuildIndexSequence<sizeof...(P)>{});
555555
}
556556

557557
template <typename... P>

core/variant/variant.h

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -173,6 +173,12 @@ class Variant {
173173

174174
friend struct _VariantCall;
175175
friend class VariantInternal;
176+
template <typename>
177+
friend struct _VariantInternalAccessorLocal;
178+
template <typename>
179+
friend struct _VariantInternalAccessorElsewhere;
180+
template <typename>
181+
friend struct _VariantInternalAccessorPackedArrayRef;
176182
// Variant takes 24 bytes when real_t is float, and 40 bytes if double.
177183
// It only allocates extra memory for AABB/Transform2D (24, 48 if double),
178184
// Basis/Transform3D (48, 96 if double), Projection (64, 128 if double),

core/variant/variant_call.cpp

Lines changed: 20 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -54,58 +54,58 @@ static _FORCE_INLINE_ void vc_static_method_call(void (*method)(P...), const Var
5454

5555
template <typename R, typename T, typename... P>
5656
static _FORCE_INLINE_ void vc_method_call(R (T::*method)(P...), Variant *base, const Variant **p_args, int p_argcount, Variant &r_ret, const Vector<Variant> &p_defvals, Callable::CallError &r_error) {
57-
call_with_variant_args_ret_dv(VariantGetInternalPtr<T>::get_ptr(base), method, p_args, p_argcount, r_ret, r_error, p_defvals);
57+
call_with_variant_args_ret_dv(&VariantInternalAccessor<T>::get(base), method, p_args, p_argcount, r_ret, r_error, p_defvals);
5858
}
5959

6060
template <typename R, typename T, typename... P>
6161
static _FORCE_INLINE_ void vc_method_call(R (T::*method)(P...) const, Variant *base, const Variant **p_args, int p_argcount, Variant &r_ret, const Vector<Variant> &p_defvals, Callable::CallError &r_error) {
62-
call_with_variant_args_retc_dv(VariantGetInternalPtr<T>::get_ptr(base), method, p_args, p_argcount, r_ret, r_error, p_defvals);
62+
call_with_variant_args_retc_dv(&VariantInternalAccessor<T>::get(base), method, p_args, p_argcount, r_ret, r_error, p_defvals);
6363
}
6464

6565
template <typename T, typename... P>
6666
static _FORCE_INLINE_ void vc_method_call(void (T::*method)(P...), Variant *base, const Variant **p_args, int p_argcount, Variant &r_ret, const Vector<Variant> &p_defvals, Callable::CallError &r_error) {
6767
VariantInternal::clear(&r_ret);
68-
call_with_variant_args_dv(VariantGetInternalPtr<T>::get_ptr(base), method, p_args, p_argcount, r_error, p_defvals);
68+
call_with_variant_args_dv(&VariantInternalAccessor<T>::get(base), method, p_args, p_argcount, r_error, p_defvals);
6969
}
7070

7171
template <typename T, typename... P>
7272
static _FORCE_INLINE_ void vc_method_call(void (T::*method)(P...) const, Variant *base, const Variant **p_args, int p_argcount, Variant &r_ret, const Vector<Variant> &p_defvals, Callable::CallError &r_error) {
7373
VariantInternal::clear(&r_ret);
74-
call_with_variant_argsc_dv(VariantGetInternalPtr<T>::get_ptr(base), method, p_args, p_argcount, r_error, p_defvals);
74+
call_with_variant_argsc_dv(&VariantInternalAccessor<T>::get(base), method, p_args, p_argcount, r_error, p_defvals);
7575
}
7676

7777
template <typename From, typename R, typename T, typename... P>
7878
static _FORCE_INLINE_ void vc_convert_method_call(R (T::*method)(P...), Variant *base, const Variant **p_args, int p_argcount, Variant &r_ret, const Vector<Variant> &p_defvals, Callable::CallError &r_error) {
79-
T converted(static_cast<T>(*VariantGetInternalPtr<From>::get_ptr(base)));
79+
T converted(static_cast<T>(VariantInternalAccessor<From>::get(base)));
8080
call_with_variant_args_ret_dv(&converted, method, p_args, p_argcount, r_ret, r_error, p_defvals);
8181
}
8282

8383
template <typename From, typename R, typename T, typename... P>
8484
static _FORCE_INLINE_ void vc_convert_method_call(R (T::*method)(P...) const, Variant *base, const Variant **p_args, int p_argcount, Variant &r_ret, const Vector<Variant> &p_defvals, Callable::CallError &r_error) {
85-
T converted(static_cast<T>(*VariantGetInternalPtr<From>::get_ptr(base)));
85+
T converted(static_cast<T>(VariantInternalAccessor<From>::get(base)));
8686
call_with_variant_args_retc_dv(&converted, method, p_args, p_argcount, r_ret, r_error, p_defvals);
8787
}
8888

8989
template <typename From, typename T, typename... P>
9090
static _FORCE_INLINE_ void vc_convert_method_call(void (T::*method)(P...), Variant *base, const Variant **p_args, int p_argcount, Variant &r_ret, const Vector<Variant> &p_defvals, Callable::CallError &r_error) {
91-
T converted(static_cast<T>(*VariantGetInternalPtr<From>::get_ptr(base)));
91+
T converted(static_cast<T>(VariantInternalAccessor<From>::get(base)));
9292
call_with_variant_args_dv(&converted, method, p_args, p_argcount, r_error, p_defvals);
9393
}
9494

9595
template <typename From, typename T, typename... P>
9696
static _FORCE_INLINE_ void vc_convert_method_call(void (T::*method)(P...) const, Variant *base, const Variant **p_args, int p_argcount, Variant &r_ret, const Vector<Variant> &p_defvals, Callable::CallError &r_error) {
97-
T converted(static_cast<T>(*VariantGetInternalPtr<From>::get_ptr(base)));
97+
T converted(static_cast<T>(VariantInternalAccessor<From>::get(base)));
9898
call_with_variant_argsc_dv(&converted, method, p_args, p_argcount, r_error, p_defvals);
9999
}
100100

101101
template <typename R, typename T, typename... P>
102102
static _FORCE_INLINE_ void vc_method_call_static(R (*method)(T *, P...), Variant *base, const Variant **p_args, int p_argcount, Variant &r_ret, const Vector<Variant> &p_defvals, Callable::CallError &r_error) {
103-
call_with_variant_args_retc_static_helper_dv(VariantGetInternalPtr<T>::get_ptr(base), method, p_args, p_argcount, r_ret, p_defvals, r_error);
103+
call_with_variant_args_retc_static_helper_dv(&VariantInternalAccessor<T>::get(base), method, p_args, p_argcount, r_ret, p_defvals, r_error);
104104
}
105105

106106
template <typename T, typename... P>
107107
static _FORCE_INLINE_ void vc_method_call_static(void (*method)(T *, P...), Variant *base, const Variant **p_args, int p_argcount, Variant &r_ret, const Vector<Variant> &p_defvals, Callable::CallError &r_error) {
108-
call_with_variant_args_static_helper_dv(VariantGetInternalPtr<T>::get_ptr(base), method, p_args, p_argcount, p_defvals, r_error);
108+
call_with_variant_args_static_helper_dv(&VariantInternalAccessor<T>::get(base), method, p_args, p_argcount, p_defvals, r_error);
109109
}
110110

111111
template <typename R, typename T, typename... P>
@@ -129,24 +129,24 @@ static _FORCE_INLINE_ void vc_validated_call(void (T::*method)(P...) const, Vari
129129

130130
template <typename From, typename R, typename T, typename... P>
131131
static _FORCE_INLINE_ void vc_convert_validated_call(R (T::*method)(P...), Variant *base, const Variant **p_args, Variant *r_ret) {
132-
T converted(static_cast<T>(*VariantGetInternalPtr<From>::get_ptr(base)));
132+
T converted(static_cast<T>(VariantInternalAccessor<From>::get(base)));
133133
call_with_validated_variant_args_ret_helper<T, R, P...>(&converted, method, p_args, r_ret, BuildIndexSequence<sizeof...(P)>{});
134134
}
135135

136136
template <typename From, typename R, typename T, typename... P>
137137
static _FORCE_INLINE_ void vc_convert_validated_call(R (T::*method)(P...) const, Variant *base, const Variant **p_args, Variant *r_ret) {
138-
T converted(static_cast<T>(*VariantGetInternalPtr<From>::get_ptr(base)));
138+
T converted(static_cast<T>(VariantInternalAccessor<From>::get(base)));
139139
call_with_validated_variant_args_retc_helper<T, R, P...>(&converted, method, p_args, r_ret, BuildIndexSequence<sizeof...(P)>{});
140140
}
141141
template <typename From, typename T, typename... P>
142142
static _FORCE_INLINE_ void vc_convert_validated_call(void (T::*method)(P...), Variant *base, const Variant **p_args, Variant *r_ret) {
143-
T converted(static_cast<T>(*VariantGetInternalPtr<From>::get_ptr(base)));
143+
T converted(static_cast<T>(VariantInternalAccessor<From>::get(base)));
144144
call_with_validated_variant_args_helper<T, P...>(&converted, method, p_args, r_ret, BuildIndexSequence<sizeof...(P)>{});
145145
}
146146

147147
template <typename From, typename T, typename... P>
148148
static _FORCE_INLINE_ void vc_convert_validated_call(void (T::*method)(P...) const, Variant *base, const Variant **p_args, Variant *r_ret) {
149-
T converted(static_cast<T>(*VariantGetInternalPtr<From>::get_ptr(base)));
149+
T converted(static_cast<T>(VariantInternalAccessor<From>::get(base)));
150150
call_with_validated_variant_argsc_helper<T, P...>(&converted, method, p_args, r_ret, BuildIndexSequence<sizeof...(P)>{});
151151
}
152152

@@ -1168,17 +1168,17 @@ struct _VariantCall {
11681168
}
11691169

11701170
static void func_Callable_call(Variant *v, const Variant **p_args, int p_argcount, Variant &r_ret, Callable::CallError &r_error) {
1171-
Callable *callable = VariantGetInternalPtr<Callable>::get_ptr(v);
1171+
Callable *callable = &VariantInternalAccessor<Callable>::get(v);
11721172
callable->callp(p_args, p_argcount, r_ret, r_error);
11731173
}
11741174

11751175
static void func_Callable_call_deferred(Variant *v, const Variant **p_args, int p_argcount, Variant &r_ret, Callable::CallError &r_error) {
1176-
Callable *callable = VariantGetInternalPtr<Callable>::get_ptr(v);
1176+
Callable *callable = &VariantInternalAccessor<Callable>::get(v);
11771177
callable->call_deferredp(p_args, p_argcount);
11781178
}
11791179

11801180
static void func_Callable_rpc(Variant *v, const Variant **p_args, int p_argcount, Variant &r_ret, Callable::CallError &r_error) {
1181-
Callable *callable = VariantGetInternalPtr<Callable>::get_ptr(v);
1181+
Callable *callable = &VariantInternalAccessor<Callable>::get(v);
11821182
callable->rpcp(0, p_args, p_argcount, r_error);
11831183
}
11841184

@@ -1191,13 +1191,13 @@ struct _VariantCall {
11911191
r_error.argument = 0;
11921192
r_error.expected = Variant::INT;
11931193
} else {
1194-
Callable *callable = VariantGetInternalPtr<Callable>::get_ptr(v);
1194+
Callable *callable = &VariantInternalAccessor<Callable>::get(v);
11951195
callable->rpcp(*p_args[0], &p_args[1], p_argcount - 1, r_error);
11961196
}
11971197
}
11981198

11991199
static void func_Callable_bind(Variant *v, const Variant **p_args, int p_argcount, Variant &r_ret, Callable::CallError &r_error) {
1200-
Callable *callable = VariantGetInternalPtr<Callable>::get_ptr(v);
1200+
Callable *callable = &VariantInternalAccessor<Callable>::get(v);
12011201
r_ret = callable->bindp(p_args, p_argcount);
12021202
}
12031203

@@ -1206,7 +1206,7 @@ struct _VariantCall {
12061206
}
12071207

12081208
static void func_Signal_emit(Variant *v, const Variant **p_args, int p_argcount, Variant &r_ret, Callable::CallError &r_error) {
1209-
Signal *signal = VariantGetInternalPtr<Signal>::get_ptr(v);
1209+
Signal *signal = &VariantInternalAccessor<Signal>::get(v);
12101210
signal->emit(p_args, p_argcount);
12111211
}
12121212

core/variant/variant_construct.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -125,8 +125,8 @@ void Variant::_register_variant_constructors() {
125125

126126
add_constructor<VariantConstructNoArgs<Transform2D>>(sarray());
127127
add_constructor<VariantConstructor<Transform2D, Transform2D>>(sarray("from"));
128-
add_constructor<VariantConstructor<Transform2D, float, Vector2>>(sarray("rotation", "position"));
129-
add_constructor<VariantConstructor<Transform2D, float, Size2, float, Vector2>>(sarray("rotation", "scale", "skew", "position"));
128+
add_constructor<VariantConstructor<Transform2D, double, Vector2>>(sarray("rotation", "position"));
129+
add_constructor<VariantConstructor<Transform2D, double, Size2, double, Vector2>>(sarray("rotation", "scale", "skew", "position"));
130130
add_constructor<VariantConstructor<Transform2D, Vector2, Vector2, Vector2>>(sarray("x_axis", "y_axis", "origin"));
131131

132132
add_constructor<VariantConstructNoArgs<Plane>>(sarray());

0 commit comments

Comments
 (0)