You've already forked godot
mirror of
https://github.com/godotengine/godot.git
synced 2025-11-04 12:00:25 +00:00
Remove VARIANT_ARG* macros
* Very old macros from the time Godot was created. * Limited arguments to 5 (then later changed to 8) in many places. * They were replaced by C++11 Variadic Templates. * Renamed methods that take argument pointers to have a "p" suffix. This was used in some places and not in others, so made it standard. * Also added a dereference check for Variant*. Helped catch a couple of bugs.
This commit is contained in:
@@ -679,7 +679,7 @@ Variant Object::_call_bind(const Variant **p_args, int p_argcount, Callable::Cal
|
||||
|
||||
StringName method = *p_args[0];
|
||||
|
||||
return call(method, &p_args[1], p_argcount - 1, r_error);
|
||||
return callp(method, &p_args[1], p_argcount - 1, r_error);
|
||||
}
|
||||
|
||||
Variant Object::_call_deferred_bind(const Variant **p_args, int p_argcount, Callable::CallError &r_error) {
|
||||
@@ -700,7 +700,7 @@ Variant Object::_call_deferred_bind(const Variant **p_args, int p_argcount, Call
|
||||
|
||||
StringName method = *p_args[0];
|
||||
|
||||
MessageQueue::get_singleton()->push_call(get_instance_id(), method, &p_args[1], p_argcount - 1, true);
|
||||
MessageQueue::get_singleton()->push_callp(get_instance_id(), method, &p_args[1], p_argcount - 1, true);
|
||||
|
||||
return Variant();
|
||||
}
|
||||
@@ -750,31 +750,14 @@ Variant Object::callv(const StringName &p_method, const Array &p_args) {
|
||||
}
|
||||
|
||||
Callable::CallError ce;
|
||||
Variant ret = call(p_method, argptrs, p_args.size(), ce);
|
||||
Variant ret = callp(p_method, argptrs, p_args.size(), ce);
|
||||
if (ce.error != Callable::CallError::CALL_OK) {
|
||||
ERR_FAIL_V_MSG(Variant(), "Error calling method from 'callv': " + Variant::get_call_error_text(this, p_method, argptrs, p_args.size(), ce) + ".");
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
Variant Object::call(const StringName &p_name, VARIANT_ARG_DECLARE) {
|
||||
VARIANT_ARGPTRS;
|
||||
|
||||
int argc = 0;
|
||||
for (int i = 0; i < VARIANT_ARG_MAX; i++) {
|
||||
if (argptr[i]->get_type() == Variant::NIL) {
|
||||
break;
|
||||
}
|
||||
argc++;
|
||||
}
|
||||
|
||||
Callable::CallError error;
|
||||
|
||||
Variant ret = call(p_name, argptr, argc, error);
|
||||
return ret;
|
||||
}
|
||||
|
||||
Variant Object::call(const StringName &p_method, const Variant **p_args, int p_argcount, Callable::CallError &r_error) {
|
||||
Variant Object::callp(const StringName &p_method, const Variant **p_args, int p_argcount, Callable::CallError &r_error) {
|
||||
r_error.error = Callable::CallError::CALL_OK;
|
||||
|
||||
if (p_method == CoreStringNames::get_singleton()->_free) {
|
||||
@@ -808,7 +791,7 @@ Variant Object::call(const StringName &p_method, const Variant **p_args, int p_a
|
||||
OBJ_DEBUG_LOCK
|
||||
|
||||
if (script_instance) {
|
||||
ret = script_instance->call(p_method, p_args, p_argcount, r_error);
|
||||
ret = script_instance->callp(p_method, p_args, p_argcount, r_error);
|
||||
//force jumptable
|
||||
switch (r_error.error) {
|
||||
case Callable::CallError::CALL_OK:
|
||||
@@ -1027,12 +1010,12 @@ Variant Object::_emit_signal(const Variant **p_args, int p_argcount, Callable::C
|
||||
args = &p_args[1];
|
||||
}
|
||||
|
||||
emit_signal(signal, args, argc);
|
||||
emit_signalp(signal, args, argc);
|
||||
|
||||
return Variant();
|
||||
}
|
||||
|
||||
Error Object::emit_signal(const StringName &p_name, const Variant **p_args, int p_argcount) {
|
||||
Error Object::emit_signalp(const StringName &p_name, const Variant **p_args, int p_argcount) {
|
||||
if (_block_signals) {
|
||||
return ERR_CANT_ACQUIRE_RESOURCE; //no emit, signals blocked
|
||||
}
|
||||
@@ -1091,7 +1074,7 @@ Error Object::emit_signal(const StringName &p_name, const Variant **p_args, int
|
||||
}
|
||||
|
||||
if (c.flags & CONNECT_DEFERRED) {
|
||||
MessageQueue::get_singleton()->push_callable(c.callable, args, argc, true);
|
||||
MessageQueue::get_singleton()->push_callablep(c.callable, args, argc, true);
|
||||
} else {
|
||||
Callable::CallError ce;
|
||||
_emitting = true;
|
||||
@@ -1139,21 +1122,6 @@ Error Object::emit_signal(const StringName &p_name, const Variant **p_args, int
|
||||
return err;
|
||||
}
|
||||
|
||||
Error Object::emit_signal(const StringName &p_name, VARIANT_ARG_DECLARE) {
|
||||
VARIANT_ARGPTRS;
|
||||
|
||||
int argc = 0;
|
||||
|
||||
for (int i = 0; i < VARIANT_ARG_MAX; i++) {
|
||||
if (argptr[i]->get_type() == Variant::NIL) {
|
||||
break;
|
||||
}
|
||||
argc++;
|
||||
}
|
||||
|
||||
return emit_signal(p_name, argptr, argc);
|
||||
}
|
||||
|
||||
void Object::_add_user_signal(const String &p_name, const Array &p_args) {
|
||||
// this version of add_user_signal is meant to be used from scripts or external apis
|
||||
// without access to ADD_SIGNAL in bind_methods
|
||||
@@ -1648,10 +1616,6 @@ void Object::_bind_methods() {
|
||||
BIND_ENUM_CONSTANT(CONNECT_REFERENCE_COUNTED);
|
||||
}
|
||||
|
||||
void Object::call_deferred(const StringName &p_method, VARIANT_ARG_DECLARE) {
|
||||
MessageQueue::get_singleton()->push_call(this, p_method, VARIANT_ARG_PASS);
|
||||
}
|
||||
|
||||
void Object::set_deferred(const StringName &p_property, const Variant &p_value) {
|
||||
MessageQueue::get_singleton()->push_set(this, p_property, p_value);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user