Module that contains constants and global state used in the frontend

`type clang_lang````=`

`|` `C`
`|` `CPP`
`|` `ObjC`
`|` `ObjCPP`

``
`include sig ... end`
`val compare_clang_lang : clang_lang ‑> clang_lang ‑> int`
`val string_of_clang_lang : clang_lang ‑> string`
`val equal_clang_lang : clang_lang ‑> clang_lang ‑> bool`
`type exception_details````=` `{`

`msg : string;`
`position : InferBase.Logging.ocaml_pos;`
`source_range : InferGenerated.Clang_ast_t.source_range;`
`ast_node : string option;`

`}```
`exception` `Unimplemented of exception_details`
`val unimplemented : InferBase.Logging.ocaml_pos ‑> InferGenerated.Clang_ast_t.source_range ‑> ?⁠ast_node:string ‑> ('a, Format.formatter, unit, _) InferStdlib.IStd.format4 ‑> 'a`

Raise Unimplemented. This is caught at the level of translating a method and makes the frontend give up on that method.

`exception` `IncorrectAssumption of exception_details`
`val incorrect_assumption : InferBase.Logging.ocaml_pos ‑> InferGenerated.Clang_ast_t.source_range ‑> ?⁠ast_node:string ‑> ('a, Format.formatter, unit, _) InferStdlib.IStd.format4 ‑> 'a`

Used to mark places in the frontend that incorrectly assume something to be impossible. TODO(t21762295) get rid of all instances of this.

`type translation_unit_context````=` `{`

`lang : clang_lang;`
`source_file : InferBase.SourceFile.t;`

`}```
`exception` `Invalid_declaration`

Constants

`val alloc : string`
`val array_with_objects_count_m : string`
`val assert_fail : string`
`val assert_rtn : string`
`val biniou_buffer_size : int`
`val builtin_expect : string`
`val builtin_memset_chk : string`
`val builtin_object_size : string`
`val ckcomponent_cl : string`
`val ckcomponentcontroller_cl : string`
`val clang_bin : string ‑> string`

Script to run our own clang. The argument is expected to be either "" or "++".

`val class_method : string`
`val fbAssertWithSignalAndLogFunctionHelper : string`
`val google_LogMessageFatal : string`
`val google_MakeCheckOpString : string`
`val handleFailureInFunction : string`
`val handleFailureInMethod : string`
`val id_cl : string`
`val infer : string`
`val infer_skip_fun : string`
`val infer_skip_gcc_asm_stmt : string`
`val infer_generic_selection_expr : string`
`val init : string`
`val is_kind_of_class : string`
`val malloc : string`
`val new_str : string`
`val next_object : string`
`val nsproxy_cl : string`
`val nsobject_cl : string`
`val nsstring_cl : string`
`val objc_class : string`
`val objc_object : string`
`val return_param : string`
`val self : string`
`val std_addressof : InferIR.QualifiedCppName.Match.quals_matcher`
`val string_with_utf8_m : string`
`val this : string`
`val replace_with_deref_first_arg_attr : string`
`val modeled_function_attributes : string list`

Global state

`val enum_map : (InferGenerated.Clang_ast_t.pointer option * InferIR.Exp.t option) InferModules.ClangPointers.Map.t InferStdlib.IStd.ref`

Map from enum constants pointers to their predecesor and their sil value

`val global_translation_unit_decls : InferGenerated.Clang_ast_t.decl list InferStdlib.IStd.ref`
`val sil_types_map : InferIR.Typ.desc InferModules.Clang_ast_extend.TypePointerMap.t InferStdlib.IStd.ref`

Map from type pointers (clang pointers and types created later by frontend) to sil types Populated during frontend execution when new type is found

`val procedures_attempted : int InferStdlib.IStd.ref`
`val procedures_failed : int InferStdlib.IStd.ref`
`val get_fresh_block_index : unit ‑> int`
`val reset_block_counter : unit ‑> unit`
`val reset_global_state : unit ‑> unit`
`val tableaux_evaluation : bool`