docs: def parse(
          files,
          config=None,
          compilation_mode=COMPILATION_MODE.FILE_BY_FILE,
          cache=None):
      """
      Parse header files.
  
      :param files: The header files that should be parsed
      :type files: list of str
      :param config: Configuration object or None
      :type config: :class:`parser.xml_generator_configuration_t`
      :param compilation_mode: Determines whether the files are parsed
                               individually or as one single chunk
      :type compilation_mode: :class:`parser.COMPILATION_MODE`
      :param cache: Declaration cache (None=no cache)
      :type cache: :class:`parser.cache_base_t` or str
      :rtype: list of :class:`declarations.declaration_t`
      """
      if not config:
          config = xml_generator_configuration_t()
      parser = project_reader_t(config=config, cache=cache)
      declarations = parser.read_files(files, compilation_mode)
      config.xml_generator_from_xml_file = parser.xml_generator_from_xml_file
      return declarations