py_loxi: support/resolve enum members of structs
diff --git a/py_gen/oftype.py b/py_gen/oftype.py
index 2399266..a6620ab 100644
--- a/py_gen/oftype.py
+++ b/py_gen/oftype.py
@@ -27,6 +27,9 @@
from collections import namedtuple
+import loxi_utils.loxi_utils as loxi_utils
+import of_g
+
OFTypeData = namedtuple("OFTypeData", ["init", "pack", "unpack"])
# Map from LOXI type name to an object with templates for init, pack, and unpack
@@ -206,9 +209,12 @@
## Public interface
+def lookup_type_data(oftype, version):
+ return type_data_map.get(loxi_utils.lookup_ir_wiretype(oftype, version))
+
# Return an initializer expression for the given oftype
-def gen_init_expr(oftype):
- type_data = type_data_map.get(oftype)
+def gen_init_expr(oftype, version):
+ type_data = lookup_type_data(oftype, version)
if type_data and type_data.init:
return type_data.init
else:
@@ -218,8 +224,8 @@
#
# 'value_expr' is a string of Python code which will evaluate to
# the value to be packed.
-def gen_pack_expr(oftype, value_expr):
- type_data = type_data_map.get(oftype)
+def gen_pack_expr(oftype, value_expr, version):
+ type_data = lookup_type_data(oftype, version)
if type_data and type_data.pack:
return type_data.pack % value_expr
else:
@@ -229,8 +235,8 @@
#
# 'reader_expr' is a string of Python code which will evaluate to
# the OFReader instance used for deserialization.
-def gen_unpack_expr(oftype, reader_expr):
- type_data = type_data_map.get(oftype)
+def gen_unpack_expr(oftype, reader_expr, version):
+ type_data = lookup_type_data(oftype, version)
if type_data and type_data.unpack:
return type_data.unpack % reader_expr
else: