Merge pull request #58436 from piiertho/feature/typed-vararg-method-bind
This commit is contained in:
+3
-4
@@ -1162,24 +1162,23 @@ Size2 TreeItem::get_minimum_size(int p_column) {
|
||||
return cell.cached_minimum_size;
|
||||
}
|
||||
|
||||
Variant TreeItem::_call_recursive_bind(const Variant **p_args, int p_argcount, Callable::CallError &r_error) {
|
||||
void TreeItem::_call_recursive_bind(const Variant **p_args, int p_argcount, Callable::CallError &r_error) {
|
||||
if (p_argcount < 1) {
|
||||
r_error.error = Callable::CallError::CALL_ERROR_TOO_FEW_ARGUMENTS;
|
||||
r_error.argument = 0;
|
||||
return Variant();
|
||||
return;
|
||||
}
|
||||
|
||||
if (p_args[0]->get_type() != Variant::STRING && p_args[0]->get_type() != Variant::STRING_NAME) {
|
||||
r_error.error = Callable::CallError::CALL_ERROR_INVALID_ARGUMENT;
|
||||
r_error.argument = 0;
|
||||
r_error.expected = Variant::STRING_NAME;
|
||||
return Variant();
|
||||
return;
|
||||
}
|
||||
|
||||
StringName method = *p_args[0];
|
||||
|
||||
call_recursive(method, &p_args[1], p_argcount - 1, r_error);
|
||||
return Variant();
|
||||
}
|
||||
|
||||
void recursive_call_aux(TreeItem *p_item, const StringName &p_method, const Variant **p_args, int p_argcount, Callable::CallError &r_error) {
|
||||
|
||||
+1
-1
@@ -189,7 +189,7 @@ protected:
|
||||
return d;
|
||||
}
|
||||
|
||||
Variant _call_recursive_bind(const Variant **p_args, int p_argcount, Callable::CallError &r_error);
|
||||
void _call_recursive_bind(const Variant **p_args, int p_argcount, Callable::CallError &r_error);
|
||||
|
||||
public:
|
||||
/* cell mode */
|
||||
|
||||
+7
-9
@@ -582,11 +582,11 @@ uint16_t Node::rpc_config(const StringName &p_method, Multiplayer::RPCMode p_rpc
|
||||
|
||||
/***** RPC FUNCTIONS ********/
|
||||
|
||||
Variant Node::_rpc_bind(const Variant **p_args, int p_argcount, Callable::CallError &r_error) {
|
||||
void Node::_rpc_bind(const Variant **p_args, int p_argcount, Callable::CallError &r_error) {
|
||||
if (p_argcount < 1) {
|
||||
r_error.error = Callable::CallError::CALL_ERROR_TOO_FEW_ARGUMENTS;
|
||||
r_error.argument = 1;
|
||||
return Variant();
|
||||
return;
|
||||
}
|
||||
|
||||
Variant::Type type = p_args[0]->get_type();
|
||||
@@ -594,7 +594,7 @@ Variant Node::_rpc_bind(const Variant **p_args, int p_argcount, Callable::CallEr
|
||||
r_error.error = Callable::CallError::CALL_ERROR_INVALID_ARGUMENT;
|
||||
r_error.argument = 0;
|
||||
r_error.expected = Variant::STRING_NAME;
|
||||
return Variant();
|
||||
return;
|
||||
}
|
||||
|
||||
StringName method = (*p_args[0]).operator StringName();
|
||||
@@ -602,21 +602,20 @@ Variant Node::_rpc_bind(const Variant **p_args, int p_argcount, Callable::CallEr
|
||||
rpcp(0, method, &p_args[1], p_argcount - 1);
|
||||
|
||||
r_error.error = Callable::CallError::CALL_OK;
|
||||
return Variant();
|
||||
}
|
||||
|
||||
Variant Node::_rpc_id_bind(const Variant **p_args, int p_argcount, Callable::CallError &r_error) {
|
||||
void Node::_rpc_id_bind(const Variant **p_args, int p_argcount, Callable::CallError &r_error) {
|
||||
if (p_argcount < 2) {
|
||||
r_error.error = Callable::CallError::CALL_ERROR_TOO_FEW_ARGUMENTS;
|
||||
r_error.argument = 2;
|
||||
return Variant();
|
||||
return;
|
||||
}
|
||||
|
||||
if (p_args[0]->get_type() != Variant::INT) {
|
||||
r_error.error = Callable::CallError::CALL_ERROR_INVALID_ARGUMENT;
|
||||
r_error.argument = 0;
|
||||
r_error.expected = Variant::INT;
|
||||
return Variant();
|
||||
return;
|
||||
}
|
||||
|
||||
Variant::Type type = p_args[1]->get_type();
|
||||
@@ -624,7 +623,7 @@ Variant Node::_rpc_id_bind(const Variant **p_args, int p_argcount, Callable::Cal
|
||||
r_error.error = Callable::CallError::CALL_ERROR_INVALID_ARGUMENT;
|
||||
r_error.argument = 1;
|
||||
r_error.expected = Variant::STRING_NAME;
|
||||
return Variant();
|
||||
return;
|
||||
}
|
||||
|
||||
int peer_id = *p_args[0];
|
||||
@@ -633,7 +632,6 @@ Variant Node::_rpc_id_bind(const Variant **p_args, int p_argcount, Callable::Cal
|
||||
rpcp(peer_id, method, &p_args[2], p_argcount - 2);
|
||||
|
||||
r_error.error = Callable::CallError::CALL_OK;
|
||||
return Variant();
|
||||
}
|
||||
|
||||
void Node::rpcp(int p_peer_id, const StringName &p_method, const Variant **p_arg, int p_argcount) {
|
||||
|
||||
+2
-2
@@ -178,8 +178,8 @@ private:
|
||||
TypedArray<Node> _get_children(bool p_include_internal = true) const;
|
||||
Array _get_groups() const;
|
||||
|
||||
Variant _rpc_bind(const Variant **p_args, int p_argcount, Callable::CallError &r_error);
|
||||
Variant _rpc_id_bind(const Variant **p_args, int p_argcount, Callable::CallError &r_error);
|
||||
void _rpc_bind(const Variant **p_args, int p_argcount, Callable::CallError &r_error);
|
||||
void _rpc_id_bind(const Variant **p_args, int p_argcount, Callable::CallError &r_error);
|
||||
|
||||
_FORCE_INLINE_ bool _is_internal_front() const { return data.parent && data.pos < data.parent->data.internal_children_front; }
|
||||
_FORCE_INLINE_ bool _is_internal_back() const { return data.parent && data.pos >= data.parent->data.children.size() - data.parent->data.internal_children_back; }
|
||||
|
||||
@@ -912,34 +912,32 @@ void SceneTree::_call_input_pause(const StringName &p_group, CallInputType p_cal
|
||||
}
|
||||
}
|
||||
|
||||
Variant SceneTree::_call_group_flags(const Variant **p_args, int p_argcount, Callable::CallError &r_error) {
|
||||
void SceneTree::_call_group_flags(const Variant **p_args, int p_argcount, Callable::CallError &r_error) {
|
||||
r_error.error = Callable::CallError::CALL_OK;
|
||||
|
||||
ERR_FAIL_COND_V(p_argcount < 3, Variant());
|
||||
ERR_FAIL_COND_V(!p_args[0]->is_num(), Variant());
|
||||
ERR_FAIL_COND_V(p_args[1]->get_type() != Variant::STRING_NAME && p_args[1]->get_type() != Variant::STRING, Variant());
|
||||
ERR_FAIL_COND_V(p_args[2]->get_type() != Variant::STRING_NAME && p_args[2]->get_type() != Variant::STRING, Variant());
|
||||
ERR_FAIL_COND(p_argcount < 3);
|
||||
ERR_FAIL_COND(!p_args[0]->is_num());
|
||||
ERR_FAIL_COND(p_args[1]->get_type() != Variant::STRING_NAME && p_args[1]->get_type() != Variant::STRING);
|
||||
ERR_FAIL_COND(p_args[2]->get_type() != Variant::STRING_NAME && p_args[2]->get_type() != Variant::STRING);
|
||||
|
||||
int flags = *p_args[0];
|
||||
StringName group = *p_args[1];
|
||||
StringName method = *p_args[2];
|
||||
|
||||
call_group_flagsp(flags, group, method, p_args + 3, p_argcount - 3);
|
||||
return Variant();
|
||||
}
|
||||
|
||||
Variant SceneTree::_call_group(const Variant **p_args, int p_argcount, Callable::CallError &r_error) {
|
||||
void SceneTree::_call_group(const Variant **p_args, int p_argcount, Callable::CallError &r_error) {
|
||||
r_error.error = Callable::CallError::CALL_OK;
|
||||
|
||||
ERR_FAIL_COND_V(p_argcount < 2, Variant());
|
||||
ERR_FAIL_COND_V(p_args[0]->get_type() != Variant::STRING_NAME && p_args[0]->get_type() != Variant::STRING, Variant());
|
||||
ERR_FAIL_COND_V(p_args[1]->get_type() != Variant::STRING_NAME && p_args[1]->get_type() != Variant::STRING, Variant());
|
||||
ERR_FAIL_COND(p_argcount < 2);
|
||||
ERR_FAIL_COND(p_args[0]->get_type() != Variant::STRING_NAME && p_args[0]->get_type() != Variant::STRING);
|
||||
ERR_FAIL_COND(p_args[1]->get_type() != Variant::STRING_NAME && p_args[1]->get_type() != Variant::STRING);
|
||||
|
||||
StringName group = *p_args[0];
|
||||
StringName method = *p_args[1];
|
||||
|
||||
call_group_flagsp(0, group, method, p_args + 2, p_argcount - 2);
|
||||
return Variant();
|
||||
}
|
||||
|
||||
int64_t SceneTree::get_frame() const {
|
||||
|
||||
@@ -175,8 +175,8 @@ private:
|
||||
void make_group_changed(const StringName &p_group);
|
||||
|
||||
void _notify_group_pause(const StringName &p_group, int p_notification);
|
||||
Variant _call_group_flags(const Variant **p_args, int p_argcount, Callable::CallError &r_error);
|
||||
Variant _call_group(const Variant **p_args, int p_argcount, Callable::CallError &r_error);
|
||||
void _call_group_flags(const Variant **p_args, int p_argcount, Callable::CallError &r_error);
|
||||
void _call_group(const Variant **p_args, int p_argcount, Callable::CallError &r_error);
|
||||
|
||||
void _flush_delete_queue();
|
||||
// Optimization.
|
||||
|
||||
Reference in New Issue
Block a user