protocol.hjson: Remove local aliases feature.

Will be replaced with local types
This commit is contained in:
DankParrot 2020-08-18 19:49:39 -07:00
parent c4da1c4fad
commit b02bdfc90b
1 changed files with 14 additions and 36 deletions

View File

@ -38,14 +38,9 @@ def extract_array_count(type):
return int(type[type.find('[')+1:type.rfind(']')])
return None
def get_type_info(types, typename, aliases={}):
def get_type_info(types, typename):
name = extract_array_type(typename)
alias_name = None
if aliases and name in aliases:
alias_name = name
name = aliases[name]
if not name in types:
warn('WARNING: Type name "{}" is not a known type or alias.'.format(name))
return {
@ -62,29 +57,24 @@ def get_type_info(types, typename, aliases={}):
# primitive types are always generic
if generic or not 'method' in tp:
tp['type'] = name
if alias_name:
tp = tp.copy()
tp['alias'] = name
tp['type'] = alias_name
# types without a 'type' value use their own name (e.g. double, float)
if not 'type' in tp:
tp['type'] = name
return tp
def resolve_type(types, typename, aliases={}):
tp = get_type_info(types, typename, aliases)
def resolve_type(types, typename):
tp = get_type_info(types, typename)
if 'type' in tp:
return tp['type']
else:
return typename
def get_type_size(types, typename, aliases={}):
def get_type_size(types, typename):
global varint_max_size
tp = get_type_info(types, typename, aliases)
tp = get_type_info(types, typename)
if not 'size' in tp:
if 'alias' in tp:
@ -107,12 +97,12 @@ def get_type_size(types, typename, aliases={}):
return int(size)
def get_rw_func(types, typename, read, aliases={}):
def get_rw_func(types, typename, read):
method = 'Read' if read else 'Write'
#print("{}: ({}, {})".format(method, typename, read))
tp = get_type_info(types, typename, aliases)
tp = get_type_info(types, typename)
if 'method' in tp:
method += tp['method']
@ -162,23 +152,16 @@ def print_messages(list, globalTypes):
# global and local types
types = globalTypes.copy()
# add any local aliases
aliases = {}
if 'aliases' in message:
for alias in message['aliases']:
aliases[alias] = message['aliases'][alias]
# add enums to local types
if 'enums' in message:
for enum in message['enums']:
if not enum in aliases:
types[enum] = {'alias': get_enum_type(message['enums'][enum])}
types[enum] = {'alias': get_enum_type(message['enums'][enum])}
global varint_max_size
size = varint_max_size # Packet Length
size += varint_max_size # Packet Id
for name, typename in message['vars'].items():
size += get_type_size(types, typename, aliases)
size += get_type_size(types, typename)
struct_name = '{}{}'.format(direction.capitalize(), message_name)
add_text('struct {}', struct_name)
@ -191,12 +174,7 @@ def print_messages(list, globalTypes):
newline()
if 'enums' in message:
for enum in message['enums']:
if enum in aliases:
# lookup enum primitive type from aliases
prim = resolve_type(types, aliases[enum])
print_enum(enum, message['enums'][enum], types, prim)
else:
print_enum(enum, message['enums'][enum], types)
print_enum(enum, message['enums'][enum], types)
newline()
if serverbound:
add_text('{}(PacketReader& reader)', struct_name)
@ -205,7 +183,7 @@ def print_messages(list, globalTypes):
for name, typename in message['vars'].items():
add_text('{} = reader.{}();',
name,
get_rw_func(types, typename, True, aliases)
get_rw_func(types, typename, True)
)
unindent()
add_text('}}')
@ -218,7 +196,7 @@ def print_messages(list, globalTypes):
add_text('msg.WriteVarInt(PacketId);')
for name, typename in message['vars'].items():
add_text('msg.{}({});',
get_rw_func(types, typename, False, aliases),
get_rw_func(types, typename, False),
name
)
add_text('msg.Finalize();')
@ -227,7 +205,7 @@ def print_messages(list, globalTypes):
add_text('}}')
for name, typename in message['vars'].items():
resolved_type = resolve_type(types, extract_array_type(typename), aliases)
resolved_type = resolve_type(types, extract_array_type(typename))
if not serverbound and resolved_type == 'std::string':
add_text('const {}& {};', resolved_type, name)
else: