logger = logging.getLogger(__name__)
-class BaseTypes():
+class BaseTypes(object):
def __init__(self, type, elements=0):
base_types = {'u8': '>B',
'u16': '>H',
return None
-class FixedList_u8():
+class FixedList_u8(object):
def __init__(self, name, field_type, num):
self.name = name
self.num = num
self.packer = BaseTypes(field_type, num)
self.size = self.packer.size
- def pack(self, list, kwargs):
+ def pack(self, list, kwargs = None):
"""Packs a fixed length bytestring. Left-pads with zeros
if input data is too short."""
if not list:
return self.packer.unpack(data, offset)
-class FixedList():
+class FixedList(object):
def __init__(self, name, field_type, num):
self.num = num
self.packer = types[field_type]
return result, total
-class VLAList():
+class VLAList(object):
def __init__(self, name, field_type, len_field_name, index):
self.name = name
self.index = index
return r, total
-class VPPEnumType():
+class VPPEnumType(object):
def __init__(self, name, msgdef):
self.size = types['u32'].size
e_hash = {}
return self.enum(x), size
-class VPPUnionType():
+class VPPUnionType(object):
def __init__(self, name, msgdef):
self.name = name
self.size = 0
return self.tuple._make(r), maxsize
-class VPPType():
+def VPPTypeAlias(name, msgdef):
+ t = vpp_get_type(msgdef['type'])
+ if not t:
+ raise ValueError()
+ if 'length' in msgdef:
+ if msgdef['length'] == 0:
+ raise ValueError()
+ types[name] = FixedList(name, msgdef['type'], msgdef['length'])
+ else:
+ types[name] = t
+
+
+class VPPType(object):
# Set everything up to be able to pack / unpack
def __init__(self, name, msgdef):
self.name = name