(* * Copyright (c) 2016 - present Facebook, Inc. * All rights reserved. * * This source code is licensed under the BSD style license found in the * LICENSE file in the root directory of this source tree. An additional grant * of patent rights can be found in the PATENTS file in the same directory. *) type t [@@deriving compare] (** equality of source files *) val equal : t -> t -> bool (** Maps from source_file *) module Map : Map.S with type key = t (** Set of source files *) module Set : Set.S with type elt = t (** compute line count of a source file *) val line_count : t -> int (** empty source file *) val empty : t (** create source file from absolute path *) val from_abs_path : string -> t (** string encoding of a source file (including path) as a single filename *) val encoding : t -> string (** convert a source file to a string WARNING: result may not be valid file path, do not use this function to perform operations on filenames *) val to_string : t -> string (** pretty print t *) val pp : Format.formatter -> t -> unit (** get the full path of a source file *) val to_abs_path : t -> string (** get the relative path of a source file *) val to_rel_path : t -> string val is_infer_model : t -> bool (** Returns true if the file is a C++ model *) val is_cpp_model : t -> bool (** Returns true if the file is in project root *) val is_under_project_root : t -> bool (** Return approximate source file corresponding to the parameter if it's header file and file exists. returns None otherwise *) val of_header : t -> t option (** Set of files read from --changed-files-index file, None if option not specified NOTE: it may include extra source_files if --changed-files-index contains paths to header files *) val changed_files_set : Set.t option (** Append a crc to the string, using string_crc_hex32. Cut the string if it exceeds the cutoff limit. Use an optional key to compute the crc. *) val append_crc_cutoff : ?key:string -> string -> string (** Strip any crc attached to any string generated by string_append_crc_cutoff *) val strip_crc : string -> string module UNSAFE : sig (** Create a SourceFile from any path. This is unchecked and should not be used when the existence of source files is a requirement. Furthermore, absolute paths won't be made relative to project root.*) val from_string : string -> t end