vapi: add support for defaults in typedefs 20/26820/5
authorPaul Vinciguerra <pvinci@vinciconsulting.com>
Fri, 1 May 2020 14:09:58 +0000 (10:09 -0400)
committerOle Trøan <otroan@employees.org>
Mon, 4 May 2020 17:26:28 +0000 (17:26 +0000)
  refactored out of Neale's change:
    https://gerrit.fd.io/r/c/vpp/+/26276

Type: refactor

Change-Id: Ibb0c019856dc44640e94d6d80a5d119a6296d95c
Signed-off-by: Paul Vinciguerra <pvinci@vinciconsulting.com>
(cherry picked from commit a751d8d61fe5880f6d447e63b81e2df30561e9f9)

src/vpp-api/vapi/vapi_c_gen.py
src/vpp-api/vapi/vapi_json_parser.py

index 1fae5b3..f0a284c 100755 (executable)
@@ -19,13 +19,13 @@ class CField(Field):
             else:
                 return "vl_api_string_t %s;" % (self.name)
         else:
-            if self.len is not None:
+            if self.len is not None and type(self.len) != dict:
                 return "%s %s[%d];" % (self.type.get_c_name(), self.name, self.len)
             else:
                 return "%s %s;" % (self.type.get_c_name(), self.name)
 
     def get_swap_to_be_code(self, struct, var):
-        if self.len is not None:
+        if self.len is not None and type(self.len) != dict:
             if self.len > 0:
                 return "do { unsigned i; for (i = 0; i < %d; ++i) { %s } }"\
                     " while(0);" % (
@@ -46,7 +46,7 @@ class CField(Field):
         return self.type.get_swap_to_be_code(struct, "%s" % var)
 
     def get_swap_to_host_code(self, struct, var):
-        if self.len is not None:
+        if self.len is not None and type(self.len) != dict:
             if self.len > 0:
                 return "do { unsigned i; for (i = 0; i < %d; ++i) { %s } }"\
                     " while(0);" % (
index 2a03bd0..6d2db42 100644 (file)
@@ -29,6 +29,10 @@ class Field(object):
     def __str__(self):
         if self.len is None:
             return "Field(name: %s, type: %s)" % (self.name, self.type)
+        elif type(self.len) == dict:
+            return "Field(name: %s, type: %s, length: %s)" % (self.name,
+                                                              self.type,
+                                                              self.len)
         elif self.len > 0:
             return "Field(name: %s, type: %s, length: %s)" % (self.name,
                                                               self.type,