You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
62 lines
2.0 KiB
62 lines
2.0 KiB
(*
|
|
* Copyright (c) 2013 - Facebook.
|
|
* All rights reserved.
|
|
*)
|
|
|
|
(** Process properties by creating their getters and setters in the case that they need to be syntethized *)
|
|
(** or in the case of dynamic. *)
|
|
|
|
type prop_getter_setter = string * (Clang_ast_t.decl * bool) option
|
|
|
|
(** For each property, we save the getter and the setter method declarations (no implementation). *)
|
|
(** A property type is a tuple: *)
|
|
(** (qual_type, property attributes, decl_info, (getter_name, getter), (setter_name, setter), ivar name ) *)
|
|
type property_type = Clang_ast_t.qual_type * Clang_ast_t.property_attribute list *
|
|
Clang_ast_t.decl_info * prop_getter_setter * prop_getter_setter * string option
|
|
|
|
val prepare_dynamic_property : CContext.curr_class -> Clang_ast_t.decl_info ->
|
|
Clang_ast_t.obj_c_property_impl_decl_info -> Clang_ast_t.decl list
|
|
|
|
val get_methods : CContext.curr_class -> Clang_ast_t.decl list -> Procname.t list
|
|
|
|
val make_getter_setter : Cfg.cfg -> CContext.curr_class -> Clang_ast_t.decl_info -> Clang_ast_t.obj_c_property_impl_decl_info ->
|
|
Clang_ast_t.decl list
|
|
|
|
val reset_property_table : unit -> unit
|
|
|
|
val print_property_table : unit -> unit
|
|
|
|
val is_property_read_only : Clang_ast_t.property_attribute list -> bool
|
|
|
|
val find_properties_class : CContext.curr_class -> (string * property_type) list
|
|
|
|
|
|
module type PropertySig =
|
|
sig
|
|
|
|
type t
|
|
|
|
type property_key = (CContext.curr_class * string)
|
|
|
|
val property_key_to_string : property_key -> string
|
|
|
|
val reset_property_table: unit -> unit
|
|
|
|
val find_property : CContext.curr_class -> string -> property_type
|
|
|
|
val find_properties_class : CContext.curr_class -> (string * property_type) list
|
|
|
|
val is_mem_property : property_key -> bool
|
|
|
|
val replace_property : property_key -> property_type -> unit
|
|
|
|
val add_property : property_key -> Clang_ast_t.qual_type ->
|
|
Clang_ast_t.property_attribute list -> Clang_ast_t.decl_info -> unit
|
|
|
|
val print_property_table : unit -> unit
|
|
|
|
val find_property_name_from_ivar : CContext.curr_class -> string -> string option
|
|
end
|
|
|
|
module Property: PropertySig
|