Contains current class and current method to be translated as well as local variables,

and the cg, cfg, and tenv corresponding to the current file.

`module StmtMap = InferModules.ClangPointers.Map`
`type curr_class````=`

`|` `ContextClsDeclPtr of int`
`|` `ContextNoCls`

``
`include sig ... end`
`val compare_curr_class : curr_class ‑> curr_class ‑> int`
`type str_node_map``= (string, InferIR.Procdesc.Node.t) InferStdlib.IStd.Caml.Hashtbl.t```
`type t````=` `{`

`translation_unit_context : InferModules.CFrontend_config.translation_unit_context;`
`tenv : InferIR.Tenv.t;`
`cfg : InferIR.Cfg.t;`
`procdesc : InferIR.Procdesc.t;`
`is_immediate_objc_method : bool;`
`immediate_curr_class : curr_class;`
`return_param_typ : InferIR.Typ.t option;`
`outer_context : t option;` | (** in case of objc blocks, the context of the method containing the block *)
`mutable blocks_static_vars : (InferIR.Pvar.t * InferIR.Typ.t) list InferIR.Typ.Procname.Map.t;`
`label_map : str_node_map;`
`vars_to_destroy : InferGenerated.Clang_ast_t.decl list StmtMap.t;` | (** mapping from a statement to a list of variables, that go out of scope after the end of the statement *)

`}```
`val get_curr_class : t ‑> curr_class`
`val get_curr_class_typename : InferGenerated.Clang_ast_t.stmt_info ‑> t ‑> InferIR.Typ.Name.t`
`val get_curr_class_decl_ptr : InferGenerated.Clang_ast_t.stmt_info ‑> curr_class ‑> InferGenerated.Clang_ast_t.pointer`
`val is_objc_method : t ‑> bool`
`val create_context : InferModules.CFrontend_config.translation_unit_context ‑> InferIR.Tenv.t ‑> InferIR.Cfg.t ‑> InferIR.Procdesc.t ‑> curr_class ‑> InferIR.Typ.t option ‑> bool ‑> t option ‑> InferGenerated.Clang_ast_t.decl list StmtMap.t ‑> t`
`val add_block_static_var : t ‑> InferIR.Typ.Procname.t ‑> (InferIR.Pvar.t * InferIR.Typ.t) ‑> unit`
`val is_objc_instance : t ‑> bool`
`val get_outer_procname : t ‑> InferIR.Typ.Procname.t`