code: def parse(self, filename):
          
          index = Index.create()
          self.tu = index.parse(filename, self.flags, options=self.tu_options)
          if not self.tu:
              log.warning("unable to load input")
              return
          if len(self.tu.diagnostics) > 0:
              for x in self.tu.diagnostics:
                  log.warning(x.spelling)
                  if x.severity > 2:
                      log.warning("Source code has some error. Please fix.")
                      log.warning(x.spelling)
                      # code.interact(local=locals())
                      break
          root = self.tu.cursor
          for node in root.get_children():
              self.startElement(node)
          return
docs: . reads 1 file
          . if there is a compilation error, print a warning
          . get root cursor and recurse
          . for each STRUCT_DECL, register a new struct type
          . for each UNION_DECL, register a new union type
          . for each TYPEDEF_DECL, register a new alias/typdef to the underlying type
              - underlying type is cursor.type.get_declaration() for Record
          . for each VAR_DECL, register a Variable
          . for each TYPEREF ??