sig
  type cpp_opt_kind = Gnu | Not_gnu | Unknown
  type file =
      NeedCPP of Filepath.Normalized.t * string * File.cpp_opt_kind
    | NoCPP of Filepath.Normalized.t
    | External of Filepath.Normalized.t * string
  type t = file
  val ty : t Type.t
  val name : string
  val descr : t Descr.t
  val packed_descr : Structural_descr.pack
  val reprs : t list
  val equal : t -> t -> bool
  val compare : t -> t -> int
  val hash : t -> int
  val pretty_code : Format.formatter -> t -> unit
  val internal_pretty_code : Type.precedence -> Format.formatter -> t -> unit
  val pretty : Format.formatter -> t -> unit
  val varname : t -> string
  val mem_project : (Project_skeleton.t -> bool) -> t -> bool
  val copy : t -> t
  val new_file_type :
    string -> (string -> Cil_types.file * Cabs.file) -> unit
  val new_machdep : string -> Cil_types.mach -> unit
  val machdep_macro : string -> string
  val list_available_machdeps : unit -> string list
  type code_transformation_category
  val register_code_transformation_category :
    string -> File.code_transformation_category
  val add_code_transformation_before_cleanup :
    ?deps:(module Parameter_sig.S) list ->
    ?before:File.code_transformation_category list ->
    ?after:File.code_transformation_category list ->
    File.code_transformation_category -> (Cil_types.file -> unit) -> unit
  val add_code_transformation_after_cleanup :
    ?deps:(module Parameter_sig.S) list ->
    ?before:File.code_transformation_category list ->
    ?after:File.code_transformation_category list ->
    File.code_transformation_category -> (Cil_types.file -> unit) -> unit
  val constfold : File.code_transformation_category
  val must_recompute_cfg : Cil_types.fundec -> unit
  val get_suffixes : unit -> string list
  val get_name : t -> string
  val get_preprocessor_command : unit -> string * File.cpp_opt_kind
  val pre_register : t -> unit
  val get_all : unit -> t list
  val from_filename : ?cpp:string -> Datatype.Filepath.t -> t
  val prepare_from_c_files : unit -> unit
  val init_from_c_files : t list -> unit
  val init_project_from_cil_file : Project.t -> Cil_types.file -> unit
  val init_project_from_visitor :
    ?reorder:bool -> Project.t -> Visitor.frama_c_visitor -> unit
  val create_project_from_visitor :
    ?reorder:bool ->
    ?last:bool ->
    string -> (Project.t -> Visitor.frama_c_visitor) -> Project.t
  val create_rebuilt_project_from_visitor :
    ?reorder:bool ->
    ?last:bool ->
    ?preprocess:bool ->
    string -> (Project.t -> Visitor.frama_c_visitor) -> Project.t
  val prepare_cil_file : Cil_types.file -> unit
  val files_pre_register_state : State.t
  val init_from_cmdline : unit -> unit
  val reorder_ast : unit -> unit
  val reorder_custom_ast : Cil_types.file -> unit
  val pretty_machdep :
    ?fmt:Stdlib.Format.formatter -> ?machdep:Cil_types.mach -> unit -> unit
  val pretty_ast :
    ?prj:Project.t -> ?fmt:Stdlib.Format.formatter -> unit -> unit
end