helper: Update header parser

The generated version of vulkan.h does not include structure
names on enums or structures. This was throwing off our parser.
This patch adds support to handle that.
diff --git a/vk_helper.py b/vk_helper.py
index 82ee68c..430de12 100755
--- a/vk_helper.py
+++ b/vk_helper.py
@@ -127,6 +127,8 @@
                         block_comment = False
                     continue
                 if '/*' in line:
+                    if '*/' in line: # single line block comment
+                        continue
                     block_comment = True
                 elif 0 == len(line.split()):
                     #print("Skipping empty line")
@@ -137,19 +139,23 @@
                 elif 'typedef enum' in line:
                     (ty_txt, en_txt, base_type) = line.strip().split(None, 2)
                     #print("Found ENUM type %s" % base_type)
+                    if '{' == base_type:
+                        base_type = 'tmp_enum'
                     parse_enum = True
                     default_enum_val = 0
                     self.types_dict[base_type] = 'enum'
-                elif 'typedef struct' in line:
+                elif 'typedef struct' in line or 'typedef union' in line:
                     (ty_txt, st_txt, base_type) = line.strip().split(None, 2)
                     #print("Found STRUCT type: %s" % base_type)
+                    if '{' == base_type:
+                        base_type = 'tmp_struct'
                     parse_struct = True
                     self.types_dict[base_type] = 'struct'
-                elif 'typedef union' in line:
-                    (ty_txt, st_txt, base_type) = line.strip().split(None, 2)
-                    #print("Found UNION type: %s" % base_type)
-                    parse_struct = True
-                    self.types_dict[base_type] = 'struct'
+#                elif 'typedef union' in line:
+#                    (ty_txt, st_txt, base_type) = line.strip().split(None, 2)
+#                    print("Found UNION type: %s" % base_type)
+#                    parse_struct = True
+#                    self.types_dict[base_type] = 'struct'
                 elif '}' in line and (parse_enum or parse_struct):
                     if len(line.split()) > 1: # deals with embedded union in one struct
                         parse_enum = False
@@ -157,12 +163,31 @@
                         self.last_struct_count_name = ''
                         member_num = 0
                         (cur_char, targ_type) = line.strip().split(None, 1)
+                        if 'tmp_struct' == base_type:
+                            base_type = targ_type.strip(';')
+                            #print("Found Actual Struct type %s" % base_type)
+                            self.struct_dict[base_type] = self.struct_dict['tmp_struct']
+                            self.struct_dict.pop('tmp_struct', 0)
+                            self.types_dict[base_type] = 'struct'
+                            self.types_dict.pop('tmp_struct', 0)
+                        elif 'tmp_enum' == base_type:
+                            base_type = targ_type.strip(';')
+                            #print("Found Actual ENUM type %s" % base_type)
+                            for n in self.enum_val_dict:
+                                if 'tmp_enum' == self.enum_val_dict[n]['type']:
+                                    self.enum_val_dict[n]['type'] = base_type
+#                            self.enum_val_dict[base_type] = self.enum_val_dict['tmp_enum']
+#                            self.enum_val_dict.pop('tmp_enum', 0)
+                            self.enum_type_dict[base_type] = self.enum_type_dict['tmp_enum']
+                            self.enum_type_dict.pop('tmp_enum', 0)
+                            self.types_dict[base_type] = 'enum'
+                            self.types_dict.pop('tmp_enum', 0)
                         self.typedef_fwd_dict[base_type] = targ_type.strip(';')
                         self.typedef_rev_dict[targ_type.strip(';')] = base_type
                         #print("fwd_dict: %s = %s" % (base_type, targ_type))
                 elif parse_enum:
                     #if 'VK_MAX_ENUM' not in line and '{' not in line:
-                    if True not in [ens in line for ens in ['{', 'VK_MAX_ENUM', '_RANGE']]:
+                    if True not in [ens in line for ens in ['{', '_MAX_ENUM', '_BEGIN_RANGE', '_END_RANGE', '_NUM = ', '_ENUM_RANGE']]:
                         self._add_enum(line, base_type, default_enum_val)
                         default_enum_val += 1
                 elif parse_struct:
@@ -223,6 +248,8 @@
     # TODO : Handle ":" bitfield, "**" ptr->ptr and "const type*const*"
     def _add_struct(self, line_txt, struct_type, num):
         #print("Parsing struct line %s" % line_txt)
+        if '{' == struct_type:
+            print("Parsing struct '{' w/ line %s" % line_txt)
         if not struct_type in self.struct_dict:
             self.struct_dict[struct_type] = {}
         members = line_txt.strip().split(';', 1)[0] # first strip semicolon & comments
@@ -767,7 +794,9 @@
             # This pre-pass flags embedded structs and pNext
             for m in sorted(self.struct_dict[s]):
                 if 'pNext' == self.struct_dict[s][m]['name'] or is_type(self.struct_dict[s][m]['type'], 'struct') or self.struct_dict[s][m]['array']:
-                    stp_list.append(self.struct_dict[s][m])
+                    # TODO: This is a tmp workaround
+                    if 'ppActiveLayerNames' not in self.struct_dict[s][m]['name']:
+                        stp_list.append(self.struct_dict[s][m])
             sh_funcs.append('%s' % lineinfo.get())
             sh_funcs.append('string %s(const %s* pStruct, const string prefix)\n{' % (self._get_sh_func_name(s), typedef_fwd_dict[s]))
             sh_funcs.append('%s' % lineinfo.get())