sig
  module Vars :
    sig
      val find : Cil_types.varinfo -> Cil_types.initinfo
      val find_from_astinfo :
        string -> Cil_types.localisation -> Cil_types.varinfo
      val get_astinfo : Cil_types.varinfo -> string * Cil_types.localisation
      val iter : (Cil_types.varinfo -> Cil_types.initinfo -> unit) -> unit
      val fold :
        (Cil_types.varinfo -> Cil_types.initinfo -> '-> 'a) -> '-> 'a
      val iter_in_file_order :
        (Cil_types.varinfo -> Cil_types.initinfo -> unit) -> unit
      val fold_in_file_order :
        (Cil_types.varinfo -> Cil_types.initinfo -> '-> 'a) -> '-> 'a
      val iter_in_file_rev_order :
        (Cil_types.varinfo -> Cil_types.initinfo -> unit) -> unit
      val fold_in_file_rev_order :
        (Cil_types.varinfo -> Cil_types.initinfo -> '-> 'a) -> '-> 'a
      exception AlreadyExists of Cil_types.varinfo * Cil_types.initinfo
      val add : Cil_types.varinfo -> Cil_types.initinfo -> unit
      val remove : Cil_types.varinfo -> unit
      val add_decl : Cil_types.varinfo -> unit
      val self : State.t
    end
  module Functions :
    sig
      val self : State.t
      val get : Cil_types.varinfo -> Cil_types.kernel_function
      val get_params : Cil_types.kernel_function -> Cil_types.varinfo list
      val get_vi : Cil_types.kernel_function -> Cil_types.varinfo
      val find_by_name : string -> Cil_types.kernel_function
      val find_def_by_name : string -> Cil_types.kernel_function
      val find_decl_by_name : string -> Cil_types.kernel_function
      val iter : (Cil_types.kernel_function -> unit) -> unit
      val fold : (Cil_types.kernel_function -> '-> 'a) -> '-> 'a
      val iter_on_fundecs : (Cil_types.fundec -> unit) -> unit
      val add : Cil_types.cil_function -> unit
      val remove : Cil_types.varinfo -> unit
      val replace_by_declaration :
        Cil_types.funspec -> Cil_types.varinfo -> Cil_types.location -> unit
      val replace_by_definition :
        Cil_types.funspec -> Cil_types.fundec -> Cil_types.location -> unit
      val register : Cil_types.kernel_function -> unit
    end
  module FileIndex :
    sig
      val self : State.t
      val get_symbols : Datatype.Filepath.t -> Cil_types.global list
      val find :
        Datatype.Filepath.t -> Datatype.Filepath.t * Cil_types.global list
      val get_files : unit -> Datatype.Filepath.t list
      val get_globals :
        Datatype.Filepath.t -> (Cil_types.varinfo * Cil_types.initinfo) list
      val get_global_annotations :
        Datatype.Filepath.t -> Cil_types.global_annotation list
      val get_functions :
        ?declarations:bool ->
        Datatype.Filepath.t -> Cil_types.kernel_function list
      val kernel_function_of_local_var_or_param_varinfo :
        Cil_types.varinfo -> Cil_types.kernel_function * bool
      val remove_global_annotations : Cil_types.global_annotation -> unit
    end
  module Syntactic_search :
    sig
      val self : State.t
      val find_in_scope :
        string -> Cil_types.syntactic_scope -> Cil_types.varinfo option
    end
  module Types :
    sig
      val find_enum_tag : string -> Cil_types.exp * Cil_types.typ
      val find_type : Logic_typing.type_namespace -> string -> Cil_types.typ
      val iter_types :
        (string -> Cil_types.typ -> Logic_typing.type_namespace -> unit) ->
        unit
      val global : Logic_typing.type_namespace -> string -> Cil_types.global
    end
  exception No_such_entry_point of string
  val entry_point : unit -> Cil_types.kernel_function * bool
  val set_entry_point : string -> bool -> unit
  val get_comments_global : Cil_types.global -> string list
  val get_comments_stmt : Cil_types.stmt -> string list
  val find_first_stmt :
    (Cil_types.kernel_function -> Cil_types.stmt) Stdlib.ref
  val find_enclosing_block : (Cil_types.stmt -> Cil_types.block) Stdlib.ref
  val find_all_enclosing_blocks :
    (Cil_types.stmt -> Cil_types.block list) Stdlib.ref
  val find_englobing_kf :
    (Cil_types.stmt -> Cil_types.kernel_function) Stdlib.ref
end