VAPI: Ensure type definitions are generated in same order as .api file. 86/10986/2
authorOle Troan <ot@cisco.com>
Tue, 6 Mar 2018 16:45:32 +0000 (17:45 +0100)
committerNeale Ranns <nranns@cisco.com>
Wed, 7 Mar 2018 10:37:49 +0000 (10:37 +0000)
The previous use of a dictionary instead of a list led to typedefs being generated in wrong order.

Change-Id: Iee6ff73f920883ce6e599180c1b47fe997c1702e
Signed-off-by: Ole Troan <ot@cisco.com>
src/vpp-api/vapi/vapi_c_gen.py
src/vpp-api/vapi/vapi_json_parser.py

index 60c54e4..eaa22c5 100755 (executable)
@@ -586,7 +586,7 @@ def gen_json_unified_header(parser, logger, j, io, name):
     ]))
     print("")
     print("")
-    for t in parser.types_by_json[j].values():
+    for t in parser.types_by_json[j]:
         try:
             print("%s" % t.get_c_def())
             print("")
@@ -598,7 +598,7 @@ def gen_json_unified_header(parser, logger, j, io, name):
 
     print("")
     function_attrs = "static inline "
-    for t in parser.types_by_json[j].values():
+    for t in parser.types_by_json[j]:
         print("#ifndef defined_inline_%s" % t.get_c_name())
         print("#define defined_inline_%s" % t.get_c_name())
         print("%s%s" % (function_attrs, t.get_swap_to_be_func_def()))
index 3c9bff1..b52b95b 100644 (file)
@@ -276,7 +276,7 @@ class JsonParser(object):
     def parse_json_file(self, path):
         self.logger.info("Parsing json api file: `%s'" % path)
         self.json_files.append(path)
-        self.types_by_json[path] = {}
+        self.types_by_json[path] = []
         self.messages_by_json[path] = {}
         with open(path) as f:
             j = json.load(f)
@@ -290,7 +290,7 @@ class JsonParser(object):
                     self.exceptions.append(e)
                     continue
                 self.types[type_.name] = type_
-                self.types_by_json[path][type_.name] = type_
+                self.types_by_json[path].append(type_)
                 self.logger.debug("Parsed type: %s" % type_)
             for m in j['messages']:
                 try: