mirror of
https://codeberg.org/sunder/sunder.git
synced 2026-07-14 21:44:36 +00:00
upgrade gut
This commit is contained in:
parent
6e724f67fe
commit
82aeebfd35
201 changed files with 8547 additions and 3871 deletions
|
|
@ -1,11 +1,18 @@
|
|||
class CallParameters:
|
||||
var p_name = null
|
||||
var default = null
|
||||
var vararg = false
|
||||
|
||||
func _init(n,d):
|
||||
p_name = n
|
||||
default = d
|
||||
|
||||
func get_signature():
|
||||
if(vararg):
|
||||
return "...args: Array"
|
||||
else:
|
||||
return str(p_name, "=", default)
|
||||
|
||||
|
||||
# ------------------------------------------------------------------------------
|
||||
# This class will generate method declaration lines based on method meta
|
||||
|
|
@ -27,7 +34,6 @@ class CallParameters:
|
|||
# default_args []
|
||||
|
||||
var _lgr = GutUtils.get_logger()
|
||||
var default_vararg_arg_count = 10
|
||||
const PARAM_PREFIX = 'p_'
|
||||
|
||||
# ------------------------------------------------------
|
||||
|
|
@ -103,6 +109,7 @@ func _init():
|
|||
_supported_defaults[TYPE_PACKED_FLOAT32_ARRAY] = 'PackedFloat32Array'
|
||||
_supported_defaults[TYPE_PACKED_STRING_ARRAY] = 'PackedStringArray'
|
||||
|
||||
|
||||
# ###############
|
||||
# Private
|
||||
# ###############
|
||||
|
|
@ -117,7 +124,7 @@ func _make_stub_default(method, index):
|
|||
return str('__gutdbl.default_val("', method, '",', index, ')')
|
||||
|
||||
|
||||
func _make_arg_array(method_meta, override_size):
|
||||
func _make_arg_array(method_meta):
|
||||
var to_return = []
|
||||
|
||||
var has_unsupported_defaults = false
|
||||
|
|
@ -127,17 +134,10 @@ func _make_arg_array(method_meta, override_size):
|
|||
var dflt_text = _make_stub_default(method_meta.name, i)
|
||||
to_return.append(CallParameters.new(PARAM_PREFIX + pname, dflt_text))
|
||||
|
||||
var extra_params = GutUtils.nvl(override_size, 0)
|
||||
if(extra_params == 0):
|
||||
if(method_meta.flags & METHOD_FLAG_VARARG):
|
||||
extra_params = default_vararg_arg_count
|
||||
|
||||
# Add in extra parameters from stub settings.
|
||||
if(extra_params > 0):
|
||||
for i in range(method_meta.args.size(), extra_params):
|
||||
var pname = str(PARAM_PREFIX, 'arg', i)
|
||||
var dflt_text = _make_stub_default(method_meta.name, i)
|
||||
to_return.append(CallParameters.new(pname, dflt_text))
|
||||
if(method_meta.flags & METHOD_FLAG_VARARG):
|
||||
var cp = CallParameters.new("args", "")
|
||||
cp.vararg = true
|
||||
to_return.append(cp)
|
||||
|
||||
return [has_unsupported_defaults, to_return];
|
||||
|
||||
|
|
@ -152,7 +152,7 @@ func _get_arg_text(arg_array):
|
|||
var text = ''
|
||||
|
||||
for i in range(arg_array.size()):
|
||||
text += str(arg_array[i].p_name, '=', arg_array[i].default)
|
||||
text += arg_array[i].get_signature()
|
||||
if(i != arg_array.size() -1):
|
||||
text += ', '
|
||||
|
||||
|
|
@ -160,14 +160,20 @@ func _get_arg_text(arg_array):
|
|||
|
||||
|
||||
# creates a call to the function in meta in the super's class.
|
||||
func _get_super_call_text(method_name, args):
|
||||
func _get_super_call_text(meta, args, singleton):
|
||||
if meta.flags & MethodFlags.METHOD_FLAG_VIRTUAL_REQUIRED != 0:
|
||||
return '__gutdbl.gut_ref.get_ref().get_logger().error("Cannot call super() because method %s is abstract."); return null' \
|
||||
% meta.name
|
||||
|
||||
var params = ''
|
||||
for i in range(args.size()):
|
||||
params += args[i].p_name
|
||||
if(i != args.size() -1):
|
||||
params += ', '
|
||||
|
||||
return str('await super(', params, ')')
|
||||
if(singleton != null):
|
||||
return str('return await __gutdbl.get_singleton().', meta.name, '(', params, ')')
|
||||
else:
|
||||
return str('return await super(', params, ')')
|
||||
|
||||
|
||||
func _get_spy_call_parameters_text(args):
|
||||
|
|
@ -213,13 +219,12 @@ func _get_init_text(meta, args, method_params, param_array):
|
|||
# types whose defaults are supported will have their values. If a datatype
|
||||
# is not supported and the parameter has a default, a warning message will be
|
||||
# printed and the declaration will return null.
|
||||
func get_function_text(meta, override_size=null):
|
||||
func get_function_text(meta, singleton=null):
|
||||
var method_params = ''
|
||||
var text = null
|
||||
var result = _make_arg_array(meta, override_size)
|
||||
var result = _make_arg_array(meta)
|
||||
var has_unsupported = result[0]
|
||||
var args = result[1]
|
||||
var vararg_warning = ""
|
||||
|
||||
var param_array = _get_spy_call_parameters_text(args)
|
||||
if(has_unsupported):
|
||||
|
|
@ -233,20 +238,16 @@ func get_function_text(meta, override_size=null):
|
|||
if(param_array == 'null'):
|
||||
param_array = '[]'
|
||||
|
||||
if(meta.flags & METHOD_FLAG_VARARG and override_size == null):
|
||||
vararg_warning = "__gutdbl.vararg_warning()\n\t"
|
||||
|
||||
if(method_params != null):
|
||||
if(meta.name == '_init'):
|
||||
text = _get_init_text(meta, args, method_params, param_array)
|
||||
else:
|
||||
var decleration = str('func ', meta.name, '(', method_params, '):')
|
||||
text = _func_text.format({
|
||||
"func_decleration":decleration,
|
||||
"method_name":meta.name,
|
||||
"param_array":param_array,
|
||||
"super_call":_get_super_call_text(meta.name, args),
|
||||
"vararg_warning":vararg_warning,
|
||||
"func_decleration": decleration,
|
||||
"method_name": meta.name,
|
||||
"param_array": param_array,
|
||||
"super_call": _get_super_call_text(meta, args, singleton),
|
||||
})
|
||||
|
||||
return text
|
||||
|
|
@ -258,3 +259,8 @@ func get_logger():
|
|||
|
||||
func set_logger(logger):
|
||||
_lgr = logger
|
||||
|
||||
|
||||
func get_arg_text(meta):
|
||||
var parsed = _make_arg_array(meta)
|
||||
return _get_arg_text(parsed[1])
|
||||
Loading…
Add table
Add a link
Reference in a new issue