sig
  module KF_Datatype :
    sig
      type t = Db_types.kernel_function
      val rehash : t -> t
      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) -> ?physical_hash:(t -> int) -> unit -> unit
      val is_comparable_set : unit -> bool
      val hash : t -> int
      val physical_hash : t -> int
      val equal : t -> t -> bool
      val compare : t -> t -> int
      val contain_project : (Project.project -> t -> bool) option ref
    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