|
@@ -153,11 +153,14 @@ public:
|
|
class VariantConstructorObject {
|
|
class VariantConstructorObject {
|
|
public:
|
|
public:
|
|
static void construct(Variant &r_ret, const Variant **p_args, Callable::CallError &r_error) {
|
|
static void construct(Variant &r_ret, const Variant **p_args, Callable::CallError &r_error) {
|
|
- VariantInternal::clear(&r_ret);
|
|
|
|
if (p_args[0]->get_type() == Variant::NIL) {
|
|
if (p_args[0]->get_type() == Variant::NIL) {
|
|
|
|
+ VariantInternal::clear(&r_ret);
|
|
|
|
+ VariantTypeChanger<Object *>::change(&r_ret);
|
|
VariantInternal::object_assign_null(&r_ret);
|
|
VariantInternal::object_assign_null(&r_ret);
|
|
r_error.error = Callable::CallError::CALL_OK;
|
|
r_error.error = Callable::CallError::CALL_OK;
|
|
} else if (p_args[0]->get_type() == Variant::OBJECT) {
|
|
} else if (p_args[0]->get_type() == Variant::OBJECT) {
|
|
|
|
+ VariantInternal::clear(&r_ret);
|
|
|
|
+ VariantTypeChanger<Object *>::change(&r_ret);
|
|
VariantInternal::object_assign(&r_ret, p_args[0]);
|
|
VariantInternal::object_assign(&r_ret, p_args[0]);
|
|
r_error.error = Callable::CallError::CALL_OK;
|
|
r_error.error = Callable::CallError::CALL_OK;
|
|
} else {
|
|
} else {
|
|
@@ -169,6 +172,7 @@ public:
|
|
|
|
|
|
static inline void validated_construct(Variant *r_ret, const Variant **p_args) {
|
|
static inline void validated_construct(Variant *r_ret, const Variant **p_args) {
|
|
VariantInternal::clear(r_ret);
|
|
VariantInternal::clear(r_ret);
|
|
|
|
+ VariantTypeChanger<Object *>::change(r_ret);
|
|
VariantInternal::object_assign(r_ret, p_args[0]);
|
|
VariantInternal::object_assign(r_ret, p_args[0]);
|
|
}
|
|
}
|
|
static void ptr_construct(void *base, const void **p_args) {
|
|
static void ptr_construct(void *base, const void **p_args) {
|
|
@@ -198,11 +202,13 @@ public:
|
|
}
|
|
}
|
|
|
|
|
|
VariantInternal::clear(&r_ret);
|
|
VariantInternal::clear(&r_ret);
|
|
|
|
+ VariantTypeChanger<Object *>::change(&r_ret);
|
|
VariantInternal::object_assign_null(&r_ret);
|
|
VariantInternal::object_assign_null(&r_ret);
|
|
}
|
|
}
|
|
|
|
|
|
static inline void validated_construct(Variant *r_ret, const Variant **p_args) {
|
|
static inline void validated_construct(Variant *r_ret, const Variant **p_args) {
|
|
VariantInternal::clear(r_ret);
|
|
VariantInternal::clear(r_ret);
|
|
|
|
+ VariantTypeChanger<Object *>::change(r_ret);
|
|
VariantInternal::object_assign_null(r_ret);
|
|
VariantInternal::object_assign_null(r_ret);
|
|
}
|
|
}
|
|
static void ptr_construct(void *base, const void **p_args) {
|
|
static void ptr_construct(void *base, const void **p_args) {
|