diff options
author | RĂ©mi Verschelde <rverschelde@gmail.com> | 2020-11-11 00:25:41 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-11-11 00:25:41 +0100 |
commit | 88d463cabcfe2bf2b0f14e4ad34cb2741b8da686 (patch) | |
tree | e07e6e9a4d22cce046f03b36d06af28a73fea362 /core/variant/variant.h | |
parent | a80ec80b57f419d84d196fb46dcb5f194c880001 (diff) | |
parent | 5288ff538d75d2ddab257a9e1e40050c9b8fa1cb (diff) |
Merge pull request #43446 from reduz/create-variant-builtin-funcs
Create Variant built-in functions.
Diffstat (limited to 'core/variant/variant.h')
-rw-r--r-- | core/variant/variant.h | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/core/variant/variant.h b/core/variant/variant.h index ee08373b27..d3e2f84357 100644 --- a/core/variant/variant.h +++ b/core/variant/variant.h @@ -267,6 +267,8 @@ private: static void _unregister_variant_setters_getters(); static void _register_variant_constructors(); static void _unregister_variant_constructors(); + static void _register_variant_builtin_funcs(); + static void _unregister_variant_builtin_funcs(); public: _FORCE_INLINE_ Type get_type() const { @@ -523,6 +525,7 @@ public: Variant call(const StringName &p_method, const Variant **p_args, int p_argcount, Callable::CallError &r_error); Variant call(const StringName &p_method, const Variant &p_arg1 = Variant(), const Variant &p_arg2 = Variant(), const Variant &p_arg3 = Variant(), const Variant &p_arg4 = Variant(), const Variant &p_arg5 = Variant()); + static String get_call_error_text(const StringName &p_method, const Variant **p_argptrs, int p_argcount, const Callable::CallError &ce); static String get_call_error_text(Object *p_base, const StringName &p_method, const Variant **p_argptrs, int p_argcount, const Callable::CallError &ce); static String get_callable_error_text(const Callable &p_callable, const Variant **p_argptrs, int p_argcount, const Callable::CallError &ce); @@ -619,6 +622,32 @@ public: void get_property_list(List<PropertyInfo> *p_list) const; + static void call_builtin_func(const StringName &p_name, Variant *r_ret, const Variant **p_args, int p_argcount, Callable::CallError &r_error); + static bool has_builtin_func(const StringName &p_name); + + typedef void (*BuiltinFunctionValidatedCall)(Variant *r_ret, const Variant **p_args, int p_argcount); + typedef void (*BuiltinFunctionPTRCall)(void *r_ret, const void **p_args, int p_argcount); + + static BuiltinFunctionValidatedCall get_builtin_validated_caller(const StringName &p_name); + static BuiltinFunctionPTRCall get_builtin_ptr_caller(const StringName &p_name); + + enum BuiltInFunctionType { + BUILTIN_FUNC_TYPE_MATH, + BUILTIN_FUNC_TYPE_RANDOM, + BUILTIN_FUNC_TYPE_UTILITY, + }; + + static BuiltInFunctionType get_builtin_func_type(const StringName &p_name); + + static int get_builtin_func_argument_count(const StringName &p_name); + static Variant::Type get_builtin_func_argument_type(const StringName &p_name, int p_arg); + static String get_builtin_func_argument_name(const StringName &p_name, int p_arg); + static bool has_builtin_func_return_value(const StringName &p_name); + static Variant::Type get_builtin_func_return_type(const StringName &p_name); + static bool is_builtin_func_vararg(const StringName &p_name); + + static void get_builtin_function_list(List<StringName> *r_functions); + //argsVariant call() bool operator==(const Variant &p_variant) const; |