code: def cmd_capi(
      filenames=None,
      *,
      levels=None,
      kinds=None,
      groupby="kind",
      format="table",
      showempty=None,
      ignored=None,
      track_progress=None,
      verbosity=VERBOSITY,
      **kwargs,
  ):
      render = _capi.get_renderer(format)
  
      filenames = _files.iter_header_files(filenames, levels=levels)
      # filenames = (file for file, _ in main_for_filenames(filenames))
      if track_progress:
          filenames = track_progress(filenames)
      items = _capi.iter_capi(filenames)
      if levels:
          items = (item for item in items if item.level in levels)
      if kinds:
          items = (item for item in items if item.kind in kinds)
  
      filter = _capi.resolve_filter(ignored)
      if filter:
          items = (
              item
              for item in items
              if filter(item, log=lambda msg: logger.log(1, msg))
          )
  
      lines = render(
          items,
          groupby=groupby,
          showempty=showempty,
          verbose=verbosity > VERBOSITY,
      )
      print()
      for line in lines:
          print(line)
  
imports: import logging
  import sys
  import textwrap
  from c_common.scriptutil import VERBOSITY, add_verbosity_cli, add_traceback_cli, add_commands_cli, add_kind_filtering_cli, add_files_cli, add_progress_cli, process_args_by_key, configure_logger, get_prog
  from c_parser.info import KIND
  import c_parser.__main__
  import c_analyzer.__main__
  import c_analyzer
  from c_analyzer.info import UNKNOWN
  from .None import _analyzer, _builtin_types, _capi, _files, _parser, REPO_ROOT
label_desc: Use image node_id 11 for calling a global function with example usage: cmd_capi(filenames) without return types