sig
  module Vars :
    sig
      val find : Cil_types.varinfo -> Cil_types.initinfo
      val find_from_astinfo :
        string -> Db_types.localisation -> Cil_types.varinfo
      val get_astinfo : Cil_types.varinfo -> string * Db_types.localisation
      val iter : (Cil_types.varinfo -> Cil_types.initinfo -> unit) -> unit
      val fold :
        (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 add_decl : Cil_types.varinfo -> unit
      val self : Project.Computation.t
    end
  module Functions :
    sig
      module KF_Datatype :
        sig
          type t = Db_types.kernel_function
          val descr : Unmarshal.t
          val copy : t -> t
          val name : string
          val register_comparable :
            ?compare:(t -> t -> int) ->
            ?equal:(t -> t -> bool) -> ?hash:(t -> int) -> unit -> unit
          val is_comparable_set : unit -> bool
          val hash : t -> int
          val equal : t -> t -> bool
          val compare : t -> t -> int
          val mem_project :
            ((Project.project -> bool) -> t -> bool) option ref
          val pretty : Format.formatter -> Db_types.kernel_function -> unit
          val id : t -> int
        end
      val self : Project.Computation.t
      val get : Cil_types.varinfo -> Db_types.kernel_function
      val get_params : Db_types.kernel_function -> Cil_types.varinfo list
      val get_vi : Db_types.kernel_function -> Cil_types.varinfo
      val get_glob_init :
        ?main_name:string -> Cil_types.file -> Db_types.kernel_function
      val find_by_name : string -> Db_types.kernel_function
      val find_def_by_name : string -> Db_types.kernel_function
      val find_englobing_kf :
        Cil_types.kinstr -> Db_types.kernel_function option
      val iter : (Db_types.kernel_function -> unit) -> unit
      val fold : (Db_types.kernel_function -> '-> 'a) -> '-> 'a
      val iter_on_fundecs : (Cil_types.fundec -> unit) -> unit
      val add : Db_types.cil_function -> 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
    end
  module Annotations :
    sig
      val self : Project.Computation.t
      val get_all : unit -> (Cil_types.global_annotation * bool) list
      val iter : (Cil_types.global_annotation -> bool -> unit) -> unit
      val add_user : Cil_types.global_annotation -> unit
      val add_generated : Cil_types.global_annotation -> unit
      val replace_all :
        (Cil_types.global_annotation ->
         bool -> Cil_types.global_annotation * bool) ->
        unit
    end
  module FileIndex :
    sig
      val self : Project.Computation.t
      val get_symbols : filename:string -> Cil_types.global list
      val find : filename:string -> string * Cil_types.global list
      val get_files : unit -> string list
      val get_globals :
        filename:string -> (Cil_types.varinfo * Cil_types.initinfo) list
      val get_functions : filename:string -> Db_types.kernel_function list
      val kernel_function_of_local_var_or_param_varinfo :
        Cil_types.varinfo -> Db_types.kernel_function * bool
    end
  exception No_such_entry_point of string
  val entry_point : unit -> Db_types.kernel_function * bool
  val set_entry_point : string -> bool -> unit
  val has_entry_point : unit -> bool
end