handle anonymous unions to fix #1080
authorPatrick Eibl <paeibl@microsoft.com>
Thu, 21 Nov 2019 19:10:34 +0000 (14:10 -0500)
committerPatrick Eibl <paeibl@microsoft.com>
Thu, 21 Nov 2019 19:10:34 +0000 (14:10 -0500)
misc/py_wrap_generator.py

index c58c3f66a93193d6337f2d11d24e6ac212792b80..9b4e644c029acb334416350b30da15a5b71e661a 100644 (file)
@@ -1935,6 +1935,19 @@ def parse_header(source):
                line = source_text[i].replace("YOSYS_NAMESPACE_BEGIN", "                    namespace YOSYS_NAMESPACE{").replace("YOSYS_NAMESPACE_END","                    }")
                ugly_line = unpretty_string(line)
 
+               # for anonymous unions, ignore union enclosure by skipping start line and replacing end line with new line
+               if 'union {' in line:
+                       j = i+1
+                       while j < len(source_text):
+                               union_line = source_text[j]
+                               if '};' in union_line:
+                                       source_text[j] = '\n'
+                                       break
+                               j += 1
+                       if j != len(source_text):
+                               i += 1
+                               continue
+
                if str.startswith(ugly_line, "namespace "):# and ugly_line.find("std") == -1 and ugly_line.find("__") == -1:
                        namespace_name = ugly_line[10:].replace("{","").strip()
                        namespaces.append((namespace_name, ugly_line.count("{")))