ClangFrontend.CMethod_transMethods for creating a procdesc from a method or function declaration and for resolving a method call and finding the right callee
When the methoc call is MCStatic, means that it is a class method. When it is MCVirtual, it means that it is an instance method and that the method to be called will be determined at runtime. If it is MCNoVirtual it means that it is an instance method but that the method to be called will be determined at compile time
val compare_method_call_type : method_call_type -> method_call_type -> intval equal_method_call_type : method_call_type -> method_call_type -> boolval should_create_procdesc :
IR.Cfg.t ->
IR.Procname.t ->
defined:bool ->
set_objc_accessor_attr:bool ->
boolReturn if a procdesc should be added or not. It returns false when the same name of procdesc was added previously. defined represents if the function body is non-empty. set_objc_accessor_attr represents if the function is a getter/setter in Obj-C.
val create_local_procdesc :
?loc_instantiated:IBase.Location.t ->
?set_objc_accessor_attr:bool ->
?record_lambda_captured:bool ->
?is_cpp_lambda_call_operator:bool ->
CFrontend_config.translation_unit_context ->
IR.Cfg.t ->
IR.Tenv.t ->
CMethodSignature.t ->
ATDGenerated.Clang_ast_t.stmt list ->
(IR.Pvar.t * IR.Typ.t * IR.CapturedVar.capture_mode) list ->
boolval create_attributes :
?loc_instantiated:IBase.Location.t ->
?set_objc_accessor_attr:bool ->
CFrontend_config.translation_unit_context ->
IR.Tenv.t ->
CMethodSignature.t ->
ATDGenerated.Clang_ast_t.stmt list ->
(IR.Pvar.t * IR.Typ.t * IR.CapturedVar.capture_mode) list ->
IR.ProcAttributes.tval create_external_procdesc :
CFrontend_config.translation_unit_context ->
IR.Cfg.t ->
IR.Procname.t ->
IR.ClangMethodKind.t ->
(IR.Typ.t * IR.Typ.t list) option ->
unitval get_objc_method_data :
ATDGenerated.Clang_ast_t.obj_c_message_expr_info ->
string * method_call_typeval get_class_name_method_call_from_receiver_kind :
CContext.t ->
ATDGenerated.Clang_ast_t.obj_c_message_expr_info ->
(IR.Exp.t * IR.Typ.t) list ->
IR.Typ.Name.tval get_class_name_method_call_from_clang :
IR.Tenv.t ->
ATDGenerated.Clang_ast_t.obj_c_message_expr_info ->
IR.Typ.Name.t optionval method_signature_of_pointer :
IR.Tenv.t ->
ATDGenerated.Clang_ast_t.pointer ->
CMethodSignature.t optionval get_method_name_from_clang :
CMethodSignature.t option ->
IR.Procname.t optionval create_procdesc_with_pointer :
?is_cpp_lambda_call_operator:bool ->
?captured_vars:(IR.Pvar.t * IR.Typ.t * IR.CapturedVar.capture_mode) list ->
CContext.t ->
ATDGenerated.Clang_ast_t.pointer ->
IR.Typ.Name.t option ->
string ->
IR.Procname.tval get_procname_from_cpp_lambda :
CContext.t ->
ATDGenerated.Clang_ast_t.decl ->
(IR.Pvar.t * IR.Typ.t * IR.CapturedVar.capture_mode) list ->
IR.Procname.tval get_captures_from_cpp_lambda :
ATDGenerated.Clang_ast_t.decl ->
ATDGenerated.Clang_ast_t.lambda_capture_info list