From 68ebcd50bfb9eee419b3efabfde3411550160d03 Mon Sep 17 00:00:00 2001 From: Ole Troan Date: Mon, 10 Aug 2020 17:06:44 +0200 Subject: vppapigen: add support for empty options Type: improvement Signed-off-by: Ole Troan Change-Id: I59323447bee7bb4f0563251a5df80cbefb9bd89e Signed-off-by: Ole Troan --- src/tools/vppapigen/test_vppapigen.py | 10 ++++++++++ src/tools/vppapigen/vppapigen.py | 10 +++++++--- 2 files changed, 17 insertions(+), 3 deletions(-) (limited to 'src/tools') diff --git a/src/tools/vppapigen/test_vppapigen.py b/src/tools/vppapigen/test_vppapigen.py index a8e52637d48..999addfccd2 100755 --- a/src/tools/vppapigen/test_vppapigen.py +++ b/src/tools/vppapigen/test_vppapigen.py @@ -124,6 +124,16 @@ class TestDefine(unittest.TestCase): with self.assertRaises(ParseError): self.parser.parse_string(test_string) + def test_options(self): + test_string = ''' + define foo { option deprecated; u8 foo; }; + define foo_reply {u32 context; i32 retval; }; + ''' + r = self.parser.parse_string(test_string) + self.assertIsNotNone(r) + s = self.parser.process(r) + self.assertIsNotNone(s) + class TestService(unittest.TestCase): @classmethod diff --git a/src/tools/vppapigen/vppapigen.py b/src/tools/vppapigen/vppapigen.py index 8b6297e728d..e571f26a5ac 100755 --- a/src/tools/vppapigen/vppapigen.py +++ b/src/tools/vppapigen/vppapigen.py @@ -350,7 +350,7 @@ class Import(): class Option(): - def __init__(self, option, value): + def __init__(self, option, value=None): self.type = 'Option' self.option = option self.value = value @@ -686,8 +686,12 @@ class VPPAPIParser(object): p[0] = Array(p[1], p[2], p[4]) def p_option(self, p): - '''option : OPTION ID '=' assignee ';' ''' - p[0] = Option(p[2], p[4]) + '''option : OPTION ID '=' assignee ';' + | OPTION ID ';' ''' + if len(p) == 4: + p[0] = Option(p[2]) + else: + p[0] = Option(p[2], p[4]) def p_assignee(self, p): '''assignee : NUM -- cgit 1.2.3-korg