Compare commits

..

No commits in common. "b15e039d61a4c9ad34411b6b184d3c6f3c2bd845" and "150ad7b9acbe8c5290eb129594f308918f32594e" have entirely different histories.

2 changed files with 8 additions and 21 deletions

View File

@ -77,7 +77,7 @@ def extract_array_count(value, name=''):
return count
return None
def get_type_info(types, typename, serverbound=None):
def get_type_info(types, typename):
name = extract_array_type(typename)
if not name in types:
@ -86,25 +86,14 @@ def get_type_info(types, typename, serverbound=None):
type: name
}
tp = types[name].copy()
# apply serverbound or clientbound specific info, if relevant (serverbound=None means don't care)
if serverbound and 'severbound' in tp:
sbdata = tp['serverbound']
for key in sbdata:
tp[key] = sbdata[key]
elif serverbound == False and 'clientbound' in tp:
cbdata = tp['clientbound']
for key in cbdata:
tp[key] = cbdata[key]
tp = types[name]
if 'alias' in tp:
alias = tp['alias']
enum = tp['enum'] if 'enum' in tp else False
realtype = get_type_info(types, tp['alias'], serverbound)
tp = tp.copy()
realtype = get_type_info(types, tp['alias'])
# copy certain properties from real type
if 'generic' in realtype: tp['generic'] = realtype['generic']
if 'method' in realtype: tp['method'] = realtype['method']
@ -143,14 +132,14 @@ def resolve_name(types, name, value, decl=False):
return name
def resolve_type(types, value, serverbound=None):
def resolve_type(types, value):
if isinstance(value, dict):
warn('WARNING: Attempted to call resolve_type on object type')
return ""
typename = value
tp = get_type_info(types, typename, serverbound)
tp = get_type_info(types, typename)
if 'type' in tp:
return tp['type']
else:
@ -389,7 +378,7 @@ def print_definition(types, name, value, serverbound):
unindent()
add_text('}} {};', resolved_name)
else:
resolved_type = resolve_type(types, value, serverbound)
resolved_type = resolve_type(types, value)
add_text('{} {};', resolved_type, resolved_name)

View File

@ -20,9 +20,7 @@
}
string: {
type: std::string
clientbound: {type: 'const std::string&'}
type: std::string_view
method: String
// requires count: e.g. string[256]
// generated C type will not be an array