Skip to content

Commit ca5af3c

Browse files
committed
Cleaned up the MethodBind class
1 parent 08fd033 commit ca5af3c

File tree

2 files changed

+67
-63
lines changed

2 files changed

+67
-63
lines changed

include/godot_cpp/core/method_bind.hpp

Lines changed: 54 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -47,35 +47,35 @@
4747
namespace godot {
4848

4949
class MethodBind {
50+
uint32_t hint_flags = METHOD_FLAGS_DEFAULT;
5051
StringName name;
5152
StringName instance_class;
5253
int argument_count = 0;
53-
uint32_t hint_flags = METHOD_FLAGS_DEFAULT;
5454

5555
bool _static = false;
56-
bool _is_const = false;
57-
bool _has_return = false;
56+
bool _const = false;
57+
bool _returns = false;
5858
bool _vararg = false;
5959

6060
std::vector<StringName> argument_names;
6161
GDExtensionVariantType *argument_types = nullptr;
6262
std::vector<Variant> default_arguments;
6363

6464
protected:
65+
void _set_const(bool p_const);
66+
void _set_static(bool p_static);
67+
void _set_returns(bool p_returns);
68+
void _set_vararg(bool p_vararg);
6569
virtual GDExtensionVariantType gen_argument_type(int p_arg) const = 0;
6670
virtual PropertyInfo gen_argument_type_info(int p_arg) const = 0;
67-
void generate_argument_types(int p_count);
68-
void set_const(bool p_const);
69-
void set_return(bool p_return);
70-
void set_static(bool p_static);
71-
void set_vararg(bool p_vararg);
72-
void set_argument_count(int p_count);
71+
void _generate_argument_types(int p_count);
72+
73+
void set_argument_count(int p_count) { argument_count = p_count; }
7374

7475
public:
75-
StringName get_name() const;
76-
void set_name(const StringName &p_name);
77-
_FORCE_INLINE_ int get_default_argument_count() const { return (int)default_arguments.size(); }
7876
_FORCE_INLINE_ const std::vector<Variant> &get_default_arguments() const { return default_arguments; }
77+
_FORCE_INLINE_ int get_default_argument_count() const { return (int)default_arguments.size(); }
78+
7979
_FORCE_INLINE_ Variant has_default_argument(int p_arg) const {
8080
const int num_default_args = (int)(default_arguments.size());
8181
const int idx = p_arg - (argument_count - num_default_args);
@@ -96,27 +96,13 @@ class MethodBind {
9696
return default_arguments[idx];
9797
}
9898
}
99-
_FORCE_INLINE_ StringName get_instance_class() const { return instance_class; }
100-
_FORCE_INLINE_ void set_instance_class(StringName p_class) { instance_class = p_class; }
101-
102-
_FORCE_INLINE_ int get_argument_count() const { return argument_count; }
103-
_FORCE_INLINE_ bool is_const() const { return _is_const; }
104-
_FORCE_INLINE_ bool is_static() const { return _static; }
105-
_FORCE_INLINE_ bool is_vararg() const { return _vararg; }
106-
_FORCE_INLINE_ bool has_return() const { return _has_return; }
107-
_FORCE_INLINE_ uint32_t get_hint_flags() const { return hint_flags | (is_const() ? GDEXTENSION_METHOD_FLAG_CONST : 0) | (is_vararg() ? GDEXTENSION_METHOD_FLAG_VARARG : 0) | (is_static() ? GDEXTENSION_METHOD_FLAG_STATIC : 0); }
108-
_FORCE_INLINE_ void set_hint_flags(uint32_t p_hint_flags) { hint_flags = p_hint_flags; }
109-
void set_argument_names(const std::vector<StringName> &p_names);
110-
std::vector<StringName> get_argument_names() const;
111-
void set_default_arguments(const std::vector<Variant> &p_default_arguments) { default_arguments = p_default_arguments; }
11299

113100
_FORCE_INLINE_ GDExtensionVariantType get_argument_type(int p_argument) const {
114101
ERR_FAIL_COND_V(p_argument < -1 || p_argument > argument_count, GDEXTENSION_VARIANT_TYPE_NIL);
115102
return argument_types[p_argument + 1];
116103
}
117104

118105
PropertyInfo get_argument_info(int p_argument) const;
119-
virtual GDExtensionClassMethodArgumentMetadata get_argument_metadata(int p_argument) const = 0;
120106

121107
std::vector<PropertyInfo> get_arguments_info_list() const {
122108
std::vector<PropertyInfo> vec;
@@ -127,6 +113,31 @@ class MethodBind {
127113
}
128114
return vec;
129115
}
116+
117+
void set_argument_names(const std::vector<StringName> &p_names);
118+
std::vector<StringName> get_argument_names() const;
119+
120+
virtual GDExtensionClassMethodArgumentMetadata get_argument_metadata(int p_argument) const = 0;
121+
122+
_FORCE_INLINE_ void set_hint_flags(uint32_t p_hint_flags) { hint_flags = p_hint_flags; }
123+
_FORCE_INLINE_ uint32_t get_hint_flags() const { return hint_flags | (is_const() ? GDEXTENSION_METHOD_FLAG_CONST : 0) | (is_vararg() ? GDEXTENSION_METHOD_FLAG_VARARG : 0) | (is_static() ? GDEXTENSION_METHOD_FLAG_STATIC : 0); }
124+
_FORCE_INLINE_ StringName get_instance_class() const { return instance_class; }
125+
_FORCE_INLINE_ void set_instance_class(StringName p_class) { instance_class = p_class; }
126+
127+
_FORCE_INLINE_ int get_argument_count() const { return argument_count; }
128+
129+
virtual Variant call(GDExtensionClassInstancePtr p_instance, const GDExtensionConstVariantPtr *p_args, GDExtensionInt p_argument_count, GDExtensionCallError &r_error) const = 0;
130+
virtual void ptrcall(GDExtensionClassInstancePtr p_instance, const GDExtensionConstTypePtr *p_args, GDExtensionTypePtr r_return) const = 0;
131+
132+
StringName get_name() const;
133+
void set_name(const StringName &p_name);
134+
_FORCE_INLINE_ bool is_const() const { return _const; }
135+
_FORCE_INLINE_ bool is_static() const { return _static; }
136+
_FORCE_INLINE_ bool is_vararg() const { return _vararg; }
137+
_FORCE_INLINE_ bool has_return() const { return _returns; }
138+
139+
void set_default_arguments(const std::vector<Variant> &p_default_arguments) { default_arguments = p_default_arguments; }
140+
130141
std::vector<GDExtensionClassMethodArgumentMetadata> get_arguments_metadata_list() const {
131142
std::vector<GDExtensionClassMethodArgumentMetadata> vec;
132143
// First element is return value
@@ -137,9 +148,6 @@ class MethodBind {
137148
return vec;
138149
}
139150

140-
virtual Variant call(GDExtensionClassInstancePtr p_instance, const GDExtensionConstVariantPtr *p_args, GDExtensionInt p_argument_count, GDExtensionCallError &r_error) const = 0;
141-
virtual void ptrcall(GDExtensionClassInstancePtr p_instance, const GDExtensionConstTypePtr *p_args, GDExtensionTypePtr r_return) const = 0;
142-
143151
static void bind_call(void *p_method_userdata, GDExtensionClassInstancePtr p_instance, const GDExtensionConstVariantPtr *p_args, GDExtensionInt p_argument_count, GDExtensionVariantPtr r_return, GDExtensionCallError *r_error);
144152
static void bind_ptrcall(void *p_method_userdata, GDExtensionClassInstancePtr p_instance, const GDExtensionConstTypePtr *p_args, GDExtensionTypePtr r_return);
145153

@@ -181,8 +189,8 @@ class MethodBindVarArgBase : public MethodBind {
181189
const MethodInfo &p_method_info,
182190
bool p_return_nil_is_variant) :
183191
method(p_method) {
184-
set_vararg(true);
185-
set_const(true);
192+
_set_vararg(true);
193+
_set_const(true);
186194
set_argument_count(p_method_info.arguments.size());
187195
if (p_method_info.arguments.size()) {
188196
arguments = p_method_info.arguments;
@@ -195,8 +203,8 @@ class MethodBindVarArgBase : public MethodBind {
195203
set_argument_names(names);
196204
}
197205

198-
generate_argument_types((int)p_method_info.arguments.size());
199-
set_return(should_returns);
206+
_generate_argument_types((int)p_method_info.arguments.size());
207+
_set_returns(should_returns);
200208
}
201209

202210
~MethodBindVarArgBase() {}
@@ -333,7 +341,7 @@ class MethodBindT : public MethodBind {
333341

334342
MethodBindT(void (MB_T::*p_method)(P...)) {
335343
method = p_method;
336-
generate_argument_types(sizeof...(P));
344+
_generate_argument_types(sizeof...(P));
337345
set_argument_count(sizeof...(P));
338346
}
339347
};
@@ -409,9 +417,9 @@ class MethodBindTC : public MethodBind {
409417

410418
MethodBindTC(void (MB_T::*p_method)(P...) const) {
411419
method = p_method;
412-
generate_argument_types(sizeof...(P));
420+
_generate_argument_types(sizeof...(P));
413421
set_argument_count(sizeof...(P));
414-
set_const(true);
422+
_set_const(true);
415423
}
416424
};
417425

@@ -492,9 +500,9 @@ class MethodBindTR : public MethodBind {
492500

493501
MethodBindTR(R (MB_T::*p_method)(P...)) {
494502
method = p_method;
495-
generate_argument_types(sizeof...(P));
503+
_generate_argument_types(sizeof...(P));
496504
set_argument_count(sizeof...(P));
497-
set_return(true);
505+
_set_returns(true);
498506
}
499507
};
500508

@@ -575,10 +583,10 @@ class MethodBindTRC : public MethodBind {
575583

576584
MethodBindTRC(R (MB_T::*p_method)(P...) const) {
577585
method = p_method;
578-
generate_argument_types(sizeof...(P));
586+
_generate_argument_types(sizeof...(P));
579587
set_argument_count(sizeof...(P));
580-
set_return(true);
581-
set_const(true);
588+
_set_returns(true);
589+
_set_const(true);
582590
}
583591
};
584592

@@ -647,9 +655,9 @@ class MethodBindTS : public MethodBind {
647655

648656
MethodBindTS(void (*p_function)(P...)) {
649657
function = p_function;
650-
generate_argument_types(sizeof...(P));
658+
_generate_argument_types(sizeof...(P));
651659
set_argument_count(sizeof...(P));
652-
set_static(true);
660+
_set_static(true);
653661
}
654662
};
655663

@@ -716,10 +724,10 @@ class MethodBindTRS : public MethodBind {
716724

717725
MethodBindTRS(R (*p_function)(P...)) {
718726
function = p_function;
719-
generate_argument_types(sizeof...(P));
727+
_generate_argument_types(sizeof...(P));
720728
set_argument_count(sizeof...(P));
721-
set_static(true);
722-
set_return(true);
729+
_set_static(true);
730+
_set_returns(true);
723731
}
724732
};
725733

src/core/method_bind.cpp

Lines changed: 13 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -32,32 +32,28 @@
3232

3333
namespace godot {
3434

35-
StringName MethodBind::get_name() const {
36-
return name;
35+
void MethodBind::_set_const(bool p_const) {
36+
_const = p_const;
3737
}
3838

39-
void MethodBind::set_name(const StringName &p_name) {
40-
name = p_name;
41-
}
42-
43-
void MethodBind::set_argument_count(int p_count) {
44-
argument_count = p_count;
39+
void MethodBind::_set_static(bool p_static) {
40+
_static = p_static;
4541
}
4642

47-
void MethodBind::set_const(bool p_const) {
48-
_is_const = p_const;
43+
void MethodBind::_set_returns(bool p_returns) {
44+
_returns = p_returns;
4945
}
5046

51-
void MethodBind::set_return(bool p_return) {
52-
_has_return = p_return;
47+
void MethodBind::_set_vararg(bool p_vararg) {
48+
_vararg = p_vararg;
5349
}
5450

55-
void MethodBind::set_static(bool p_static) {
56-
_static = p_static;
51+
StringName MethodBind::get_name() const {
52+
return name;
5753
}
5854

59-
void MethodBind::set_vararg(bool p_vararg) {
60-
_vararg = p_vararg;
55+
void MethodBind::set_name(const StringName &p_name) {
56+
name = p_name;
6157
}
6258

6359
void MethodBind::set_argument_names(const std::vector<StringName> &p_names) {
@@ -68,7 +64,7 @@ std::vector<StringName> MethodBind::get_argument_names() const {
6864
return argument_names;
6965
}
7066

71-
void MethodBind::generate_argument_types(int p_count) {
67+
void MethodBind::_generate_argument_types(int p_count) {
7268
set_argument_count(p_count);
7369

7470
if (argument_types != nullptr) {

0 commit comments

Comments
 (0)