frontend: support specifying type member values in the input file
diff --git a/utest/test_frontend.py b/utest/test_frontend.py
index 2119363..1f284b0 100755
--- a/utest/test_frontend.py
+++ b/utest/test_frontend.py
@@ -52,7 +52,7 @@
struct of_echo_reply {
uint8_t version;
- uint8_t type;
+ uint8_t type == 3;
uint16_t length;
uint32_t xid;
of_octets_t data;
@@ -86,7 +86,7 @@
['metadata', 'version', '2'],
['struct', 'of_echo_reply', [
['data', 'uint8_t', 'version'],
- ['data', 'uint8_t', 'type'],
+ ['type', 'uint8_t', 'type', 3],
['data', 'uint16_t', 'length'],
['data', 'uint32_t', 'xid'],
['data', 'of_octets_t', 'data']]],
@@ -107,7 +107,7 @@
expected_classes = [
OFClass('of_echo_reply', [
OFDataMember('version', 'uint8_t'), # XXX
- OFDataMember('type', 'uint8_t'), # XXX
+ OFTypeMember('type', 'uint8_t', 3),
OFLengthMember('length', 'uint16_t'),
OFDataMember('xid', 'uint32_t'),
OFDataMember('data', 'of_octets_t')]),
diff --git a/utest/test_parser.py b/utest/test_parser.py
index a4a0e63..cb22a9c 100755
--- a/utest/test_parser.py
+++ b/utest/test_parser.py
@@ -83,7 +83,7 @@
self.assertEquals(ast,
[['struct', 'foo', [['data', 'list(of_action_t)', 'bar']]]])
- def test_pad_type(self):
+ def test_pad_member(self):
src = """\
struct foo {
pad(1);
@@ -93,6 +93,16 @@
self.assertEquals(ast,
[['struct', 'foo', [['pad', 1]]]])
+ def test_type_member(self):
+ src = """\
+struct foo {
+ uint16_t foo == 0x10;
+};
+"""
+ ast = parser.parse(src)
+ self.assertEquals(ast,
+ [['struct', 'foo', [['type', 'uint16_t', 'foo', 0x10]]]])
+
class EnumTests(unittest.TestCase):
def test_empty(self):
src = """\