'manual_endian': 'MANUAL_ENDIAN',
'dont_trace': 'DONT_TRACE',
'autoreply': 'AUTOREPLY',
+ 'autoendian': 'AUTOENDIAN',
'option': 'OPTION',
'u8': 'U8',
'u16': 'U16',
self.manual_print = False
self.manual_endian = False
self.autoreply = False
- self.singular = False
+ self.autoendian = 0
self.options = {}
for f in flags:
if f == 'dont_trace':
self.manual_endian = True
elif f == 'autoreply':
self.autoreply = True
+ elif f == 'autoendian':
+ self.autoendian = 1
remove = []
for b in block:
if isinstance(b, Option):
- if b[1] == 'singular' and b[2] == 'true':
- self.singular = True
- else:
- self.options[b.option] = b.value
+ self.options[b.option] = b.value
remove.append(b)
block = [x for x in block if x not in remove]
'''counter_elements : counter_element
| counter_elements counter_element'''
if len(p) == 2:
- p[0] = p[1]
+ p[0] = [p[1]]
else:
if type(p[1]) is dict:
p[0] = [p[1], p[2]]
p[0] = EnumFlag(p[2], p[4])
def p_enumflag_type(self, p):
- ''' enumflag : ENUMFLAG ID ':' enum_size '{' enum_statements '}' ';' ''' # noqa : E502
+ ''' enumflag : ENUMFLAG ID ':' enumflag_size '{' enum_statements '}' ';' ''' # noqa : E502
if len(p) == 9:
p[0] = EnumFlag(p[2], p[6], enumtype=p[4])
else:
def p_enum_size(self, p):
''' enum_size : U8
| U16
- | U32 '''
+ | U32
+ | I8
+ | I16
+ | I32 '''
+ p[0] = p[1]
+
+ def p_enumflag_size(self, p):
+ ''' enumflag_size : U8
+ | U16
+ | U32 '''
p[0] = p[1]
def p_define(self, p):
| MANUAL_ENDIAN
| DONT_TRACE
| TYPEONLY
+ | AUTOENDIAN
| AUTOREPLY'''
if len(p) == 1:
return
for d in msgs:
if d in seen_services:
continue
- if msgs[d].singular is True:
- continue
if d.endswith('_reply'):
if d[:-6] in svcs:
continue