Module InferModules__CContext
Contains current class and current method to be translated as well as local variables, and the cfg, and tenv corresponding to the current file.
module StmtMap = InferModules.ClangPointers.Map
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;
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
temporary_names : (InferGenerated.Clang_ast_t.pointer, InferIR.Pvar.t * InferIR.Typ.t) InferStdlib.IStd.Caml.Hashtbl.t;
}
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 is_objc_class_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 -> 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 get_outer_procname : t -> InferIR.Typ.Procname.t