Change D_METHOD to variadic template
This commit is contained in:
parent
add5163224
commit
6f0b63f794
|
@ -39,190 +39,13 @@
|
|||
|
||||
#ifdef DEBUG_METHODS_ENABLED
|
||||
|
||||
MethodDefinition D_METHOD(const char *p_name) {
|
||||
MethodDefinition D_METHODP(const char *p_name, const char *const **p_args, uint32_t p_argcount) {
|
||||
MethodDefinition md;
|
||||
md.name = StaticCString::create(p_name);
|
||||
return md;
|
||||
md.args.resize(p_argcount);
|
||||
for (uint32_t i = 0; i < p_argcount; i++) {
|
||||
md.args.write[i] = StaticCString::create(*p_args[i]);
|
||||
}
|
||||
|
||||
MethodDefinition D_METHOD(const char *p_name, const char *p_arg1) {
|
||||
MethodDefinition md;
|
||||
md.name = StaticCString::create(p_name);
|
||||
md.args.push_back(StaticCString::create(p_arg1));
|
||||
return md;
|
||||
}
|
||||
|
||||
MethodDefinition D_METHOD(const char *p_name, const char *p_arg1, const char *p_arg2) {
|
||||
MethodDefinition md;
|
||||
md.name = StaticCString::create(p_name);
|
||||
md.args.resize(2);
|
||||
md.args.write[0] = StaticCString::create(p_arg1);
|
||||
md.args.write[1] = StaticCString::create(p_arg2);
|
||||
return md;
|
||||
}
|
||||
|
||||
MethodDefinition D_METHOD(const char *p_name, const char *p_arg1, const char *p_arg2, const char *p_arg3) {
|
||||
MethodDefinition md;
|
||||
md.name = StaticCString::create(p_name);
|
||||
md.args.resize(3);
|
||||
md.args.write[0] = StaticCString::create(p_arg1);
|
||||
md.args.write[1] = StaticCString::create(p_arg2);
|
||||
md.args.write[2] = StaticCString::create(p_arg3);
|
||||
return md;
|
||||
}
|
||||
|
||||
MethodDefinition D_METHOD(const char *p_name, const char *p_arg1, const char *p_arg2, const char *p_arg3, const char *p_arg4) {
|
||||
MethodDefinition md;
|
||||
md.name = StaticCString::create(p_name);
|
||||
md.args.resize(4);
|
||||
md.args.write[0] = StaticCString::create(p_arg1);
|
||||
md.args.write[1] = StaticCString::create(p_arg2);
|
||||
md.args.write[2] = StaticCString::create(p_arg3);
|
||||
md.args.write[3] = StaticCString::create(p_arg4);
|
||||
return md;
|
||||
}
|
||||
|
||||
MethodDefinition D_METHOD(const char *p_name, const char *p_arg1, const char *p_arg2, const char *p_arg3, const char *p_arg4, const char *p_arg5) {
|
||||
MethodDefinition md;
|
||||
md.name = StaticCString::create(p_name);
|
||||
md.args.resize(5);
|
||||
md.args.write[0] = StaticCString::create(p_arg1);
|
||||
md.args.write[1] = StaticCString::create(p_arg2);
|
||||
md.args.write[2] = StaticCString::create(p_arg3);
|
||||
md.args.write[3] = StaticCString::create(p_arg4);
|
||||
md.args.write[4] = StaticCString::create(p_arg5);
|
||||
return md;
|
||||
}
|
||||
|
||||
MethodDefinition D_METHOD(const char *p_name, const char *p_arg1, const char *p_arg2, const char *p_arg3, const char *p_arg4, const char *p_arg5, const char *p_arg6) {
|
||||
MethodDefinition md;
|
||||
md.name = StaticCString::create(p_name);
|
||||
md.args.resize(6);
|
||||
md.args.write[0] = StaticCString::create(p_arg1);
|
||||
md.args.write[1] = StaticCString::create(p_arg2);
|
||||
md.args.write[2] = StaticCString::create(p_arg3);
|
||||
md.args.write[3] = StaticCString::create(p_arg4);
|
||||
md.args.write[4] = StaticCString::create(p_arg5);
|
||||
md.args.write[5] = StaticCString::create(p_arg6);
|
||||
return md;
|
||||
}
|
||||
|
||||
MethodDefinition D_METHOD(const char *p_name, const char *p_arg1, const char *p_arg2, const char *p_arg3, const char *p_arg4, const char *p_arg5, const char *p_arg6, const char *p_arg7) {
|
||||
MethodDefinition md;
|
||||
md.name = StaticCString::create(p_name);
|
||||
md.args.resize(7);
|
||||
md.args.write[0] = StaticCString::create(p_arg1);
|
||||
md.args.write[1] = StaticCString::create(p_arg2);
|
||||
md.args.write[2] = StaticCString::create(p_arg3);
|
||||
md.args.write[3] = StaticCString::create(p_arg4);
|
||||
md.args.write[4] = StaticCString::create(p_arg5);
|
||||
md.args.write[5] = StaticCString::create(p_arg6);
|
||||
md.args.write[6] = StaticCString::create(p_arg7);
|
||||
return md;
|
||||
}
|
||||
|
||||
MethodDefinition D_METHOD(const char *p_name, const char *p_arg1, const char *p_arg2, const char *p_arg3, const char *p_arg4, const char *p_arg5, const char *p_arg6, const char *p_arg7, const char *p_arg8) {
|
||||
MethodDefinition md;
|
||||
md.name = StaticCString::create(p_name);
|
||||
md.args.resize(8);
|
||||
md.args.write[0] = StaticCString::create(p_arg1);
|
||||
md.args.write[1] = StaticCString::create(p_arg2);
|
||||
md.args.write[2] = StaticCString::create(p_arg3);
|
||||
md.args.write[3] = StaticCString::create(p_arg4);
|
||||
md.args.write[4] = StaticCString::create(p_arg5);
|
||||
md.args.write[5] = StaticCString::create(p_arg6);
|
||||
md.args.write[6] = StaticCString::create(p_arg7);
|
||||
md.args.write[7] = StaticCString::create(p_arg8);
|
||||
return md;
|
||||
}
|
||||
|
||||
MethodDefinition D_METHOD(const char *p_name, const char *p_arg1, const char *p_arg2, const char *p_arg3, const char *p_arg4, const char *p_arg5, const char *p_arg6, const char *p_arg7, const char *p_arg8, const char *p_arg9) {
|
||||
MethodDefinition md;
|
||||
md.name = StaticCString::create(p_name);
|
||||
md.args.resize(9);
|
||||
md.args.write[0] = StaticCString::create(p_arg1);
|
||||
md.args.write[1] = StaticCString::create(p_arg2);
|
||||
md.args.write[2] = StaticCString::create(p_arg3);
|
||||
md.args.write[3] = StaticCString::create(p_arg4);
|
||||
md.args.write[4] = StaticCString::create(p_arg5);
|
||||
md.args.write[5] = StaticCString::create(p_arg6);
|
||||
md.args.write[6] = StaticCString::create(p_arg7);
|
||||
md.args.write[7] = StaticCString::create(p_arg8);
|
||||
md.args.write[8] = StaticCString::create(p_arg9);
|
||||
return md;
|
||||
}
|
||||
|
||||
MethodDefinition D_METHOD(const char *p_name, const char *p_arg1, const char *p_arg2, const char *p_arg3, const char *p_arg4, const char *p_arg5, const char *p_arg6, const char *p_arg7, const char *p_arg8, const char *p_arg9, const char *p_arg10) {
|
||||
MethodDefinition md;
|
||||
md.name = StaticCString::create(p_name);
|
||||
md.args.resize(10);
|
||||
md.args.write[0] = StaticCString::create(p_arg1);
|
||||
md.args.write[1] = StaticCString::create(p_arg2);
|
||||
md.args.write[2] = StaticCString::create(p_arg3);
|
||||
md.args.write[3] = StaticCString::create(p_arg4);
|
||||
md.args.write[4] = StaticCString::create(p_arg5);
|
||||
md.args.write[5] = StaticCString::create(p_arg6);
|
||||
md.args.write[6] = StaticCString::create(p_arg7);
|
||||
md.args.write[7] = StaticCString::create(p_arg8);
|
||||
md.args.write[8] = StaticCString::create(p_arg9);
|
||||
md.args.write[9] = StaticCString::create(p_arg10);
|
||||
return md;
|
||||
}
|
||||
|
||||
MethodDefinition D_METHOD(const char *p_name, const char *p_arg1, const char *p_arg2, const char *p_arg3, const char *p_arg4, const char *p_arg5, const char *p_arg6, const char *p_arg7, const char *p_arg8, const char *p_arg9, const char *p_arg10, const char *p_arg11) {
|
||||
MethodDefinition md;
|
||||
md.name = StaticCString::create(p_name);
|
||||
md.args.resize(11);
|
||||
md.args.write[0] = StaticCString::create(p_arg1);
|
||||
md.args.write[1] = StaticCString::create(p_arg2);
|
||||
md.args.write[2] = StaticCString::create(p_arg3);
|
||||
md.args.write[3] = StaticCString::create(p_arg4);
|
||||
md.args.write[4] = StaticCString::create(p_arg5);
|
||||
md.args.write[5] = StaticCString::create(p_arg6);
|
||||
md.args.write[6] = StaticCString::create(p_arg7);
|
||||
md.args.write[7] = StaticCString::create(p_arg8);
|
||||
md.args.write[8] = StaticCString::create(p_arg9);
|
||||
md.args.write[9] = StaticCString::create(p_arg10);
|
||||
md.args.write[10] = StaticCString::create(p_arg11);
|
||||
return md;
|
||||
}
|
||||
|
||||
MethodDefinition D_METHOD(const char *p_name, const char *p_arg1, const char *p_arg2, const char *p_arg3, const char *p_arg4, const char *p_arg5, const char *p_arg6, const char *p_arg7, const char *p_arg8, const char *p_arg9, const char *p_arg10, const char *p_arg11, const char *p_arg12) {
|
||||
MethodDefinition md;
|
||||
md.name = StaticCString::create(p_name);
|
||||
md.args.resize(12);
|
||||
md.args.write[0] = StaticCString::create(p_arg1);
|
||||
md.args.write[1] = StaticCString::create(p_arg2);
|
||||
md.args.write[2] = StaticCString::create(p_arg3);
|
||||
md.args.write[3] = StaticCString::create(p_arg4);
|
||||
md.args.write[4] = StaticCString::create(p_arg5);
|
||||
md.args.write[5] = StaticCString::create(p_arg6);
|
||||
md.args.write[6] = StaticCString::create(p_arg7);
|
||||
md.args.write[7] = StaticCString::create(p_arg8);
|
||||
md.args.write[8] = StaticCString::create(p_arg9);
|
||||
md.args.write[9] = StaticCString::create(p_arg10);
|
||||
md.args.write[10] = StaticCString::create(p_arg11);
|
||||
md.args.write[11] = StaticCString::create(p_arg12);
|
||||
return md;
|
||||
}
|
||||
|
||||
MethodDefinition D_METHOD(const char *p_name, const char *p_arg1, const char *p_arg2, const char *p_arg3, const char *p_arg4, const char *p_arg5, const char *p_arg6, const char *p_arg7, const char *p_arg8, const char *p_arg9, const char *p_arg10, const char *p_arg11, const char *p_arg12, const char *p_arg13) {
|
||||
MethodDefinition md;
|
||||
md.name = StaticCString::create(p_name);
|
||||
md.args.resize(13);
|
||||
md.args.write[0] = StaticCString::create(p_arg1);
|
||||
md.args.write[1] = StaticCString::create(p_arg2);
|
||||
md.args.write[2] = StaticCString::create(p_arg3);
|
||||
md.args.write[3] = StaticCString::create(p_arg4);
|
||||
md.args.write[4] = StaticCString::create(p_arg5);
|
||||
md.args.write[5] = StaticCString::create(p_arg6);
|
||||
md.args.write[6] = StaticCString::create(p_arg7);
|
||||
md.args.write[7] = StaticCString::create(p_arg8);
|
||||
md.args.write[8] = StaticCString::create(p_arg9);
|
||||
md.args.write[9] = StaticCString::create(p_arg10);
|
||||
md.args.write[10] = StaticCString::create(p_arg11);
|
||||
md.args.write[11] = StaticCString::create(p_arg12);
|
||||
md.args.write[12] = StaticCString::create(p_arg13);
|
||||
return md;
|
||||
}
|
||||
|
||||
|
|
|
@ -35,10 +35,6 @@
|
|||
#include "core/object/object.h"
|
||||
#include "core/string/print_string.h"
|
||||
|
||||
/** To bind more then 6 parameters include this:
|
||||
*
|
||||
*/
|
||||
|
||||
// Makes callable_mp readily available in all classes connecting signals.
|
||||
// Needs to come after method_bind and object have been included.
|
||||
#include "core/object/callable_method_pointer.h"
|
||||
|
@ -57,20 +53,18 @@ struct MethodDefinition {
|
|||
name(p_name) {}
|
||||
};
|
||||
|
||||
MethodDefinition D_METHOD(const char *p_name);
|
||||
MethodDefinition D_METHOD(const char *p_name, const char *p_arg1);
|
||||
MethodDefinition D_METHOD(const char *p_name, const char *p_arg1, const char *p_arg2);
|
||||
MethodDefinition D_METHOD(const char *p_name, const char *p_arg1, const char *p_arg2, const char *p_arg3);
|
||||
MethodDefinition D_METHOD(const char *p_name, const char *p_arg1, const char *p_arg2, const char *p_arg3, const char *p_arg4);
|
||||
MethodDefinition D_METHOD(const char *p_name, const char *p_arg1, const char *p_arg2, const char *p_arg3, const char *p_arg4, const char *p_arg5);
|
||||
MethodDefinition D_METHOD(const char *p_name, const char *p_arg1, const char *p_arg2, const char *p_arg3, const char *p_arg4, const char *p_arg5, const char *p_arg6);
|
||||
MethodDefinition D_METHOD(const char *p_name, const char *p_arg1, const char *p_arg2, const char *p_arg3, const char *p_arg4, const char *p_arg5, const char *p_arg6, const char *p_arg7);
|
||||
MethodDefinition D_METHOD(const char *p_name, const char *p_arg1, const char *p_arg2, const char *p_arg3, const char *p_arg4, const char *p_arg5, const char *p_arg6, const char *p_arg7, const char *p_arg8);
|
||||
MethodDefinition D_METHOD(const char *p_name, const char *p_arg1, const char *p_arg2, const char *p_arg3, const char *p_arg4, const char *p_arg5, const char *p_arg6, const char *p_arg7, const char *p_arg8, const char *p_arg9);
|
||||
MethodDefinition D_METHOD(const char *p_name, const char *p_arg1, const char *p_arg2, const char *p_arg3, const char *p_arg4, const char *p_arg5, const char *p_arg6, const char *p_arg7, const char *p_arg8, const char *p_arg9, const char *p_arg10);
|
||||
MethodDefinition D_METHOD(const char *p_name, const char *p_arg1, const char *p_arg2, const char *p_arg3, const char *p_arg4, const char *p_arg5, const char *p_arg6, const char *p_arg7, const char *p_arg8, const char *p_arg9, const char *p_arg10, const char *p_arg11);
|
||||
MethodDefinition D_METHOD(const char *p_name, const char *p_arg1, const char *p_arg2, const char *p_arg3, const char *p_arg4, const char *p_arg5, const char *p_arg6, const char *p_arg7, const char *p_arg8, const char *p_arg9, const char *p_arg10, const char *p_arg11, const char *p_arg12);
|
||||
MethodDefinition D_METHOD(const char *p_name, const char *p_arg1, const char *p_arg2, const char *p_arg3, const char *p_arg4, const char *p_arg5, const char *p_arg6, const char *p_arg7, const char *p_arg8, const char *p_arg9, const char *p_arg10, const char *p_arg11, const char *p_arg12, const char *p_arg13);
|
||||
MethodDefinition D_METHODP(const char *p_name, const char *const **p_args, uint32_t p_argcount);
|
||||
|
||||
template <typename... VarArgs>
|
||||
MethodDefinition D_METHOD(const char *p_name, const VarArgs... p_args) {
|
||||
const char *args[sizeof...(p_args) + 1] = { p_args..., nullptr }; // +1 makes sure zero sized arrays are also supported.
|
||||
const char *const *argptrs[sizeof...(p_args) + 1];
|
||||
for (uint32_t i = 0; i < sizeof...(p_args); i++) {
|
||||
argptrs[i] = &args[i];
|
||||
}
|
||||
|
||||
return D_METHODP(p_name, sizeof...(p_args) == 0 ? nullptr : (const char *const **)argptrs, sizeof...(p_args));
|
||||
}
|
||||
|
||||
#else
|
||||
|
||||
|
|
Loading…
Reference in New Issue