Module PulseAttribute.Attributes

include IStdlib.PrettyPrintable.PPUniqRankSet with type elt = t
type t
include Ppx_compare_lib.Comparable.S with type t := t
val compare : t Base__Ppx_compare_lib.compare
include Ppx_compare_lib.Equal.S with type t := t
val equal : t Base__Ppx_compare_lib.equal
type rank
type elt = t
val add : t -> elt -> t
val empty : t
val find_rank : t -> rank -> elt option
val fold : t -> init:'accum -> f:('accum -> elt -> 'accum) -> 'accum
val fold_map : t -> init:'accum -> f:('accum -> elt -> 'accum * elt) -> 'accum * t
val for_all : f:(elt -> bool) -> t -> bool
val is_empty : t -> bool
val is_singleton : t -> bool
val is_subset : t -> of_:t -> bool
val map : t -> f:(elt -> elt) -> t
val singleton : elt -> t
val elements : t -> elt list
val remove : elt -> t -> t
val remove_by_rank : rank -> t -> t
val mem : elt -> t -> bool
val update : elt -> t -> t
val union_prefer_left : t -> t -> t

in case an element with the same rank is present both in lhs and rhs, keep the one from lhs in union_prefer_left lhs rhs

val filter : t -> f:(elt -> bool) -> t
val filter_map : t -> f:(elt -> elt option) -> t
val pp : ?print_rank:bool -> IStdlib.PrettyPrintable.F.formatter -> t -> unit
val get_address_of_stack_variable : t -> (IR.Var.t * IBase.Location.t * ValueHistory.t) option
val get_closure_proc_name : t -> IR.Procname.t option
val get_config_usage : t -> ConfigUsage.t option
val get_used_as_branch_cond : t -> (IR.Procname.t * IBase.Location.t * Trace.t) option
val get_copied_into : t -> CopiedInto.t option
val get_copied_return : t -> (AbstractValue.t * bool * CopyOrigin.t * IBase.Location.t) option
val remove_copied_return : t -> t
val get_source_origin_of_copy : t -> (PulseAbstractValue.t * bool) option
val get_allocation : t -> (allocator * Trace.t) option
val remove_allocation : t -> t
val get_unknown_effect : t -> (CallEvent.t * ValueHistory.t) option
val remove_dict_contain_const_keys : t -> t
val is_dict_contain_const_keys : t -> bool
val get_dict_read_const_keys : t -> ConstKeys.t option
val get_static_type : t -> IR.Typ.Name.t option
val is_java_resource_released : t -> bool
val is_csharp_resource_released : t -> bool
val is_end_of_collection : t -> bool
val get_invalid : t -> (Invalidation.t * Trace.t) option
val get_tainted : t -> TaintedSet.t
val remove_tainted : t -> t
val remove_must_not_be_tainted : ?kinds:TaintConfig.Kind.Set.t -> t -> t
val get_propagate_taint_from : t -> (taint_propagation_reason * taint_in list) option
val remove_propagate_taint_from : t -> t
val get_returned_from_unknown : t -> AbstractValue.t list option
val get_taint_sanitized : t -> TaintSanitizedSet.t
val remove_taint_sanitized : t -> t
val get_must_be_valid : t -> (Timestamp.t * Trace.t * Invalidation.must_be_valid_reason option) option
val remove_must_be_valid : t -> t
val get_must_not_be_tainted : t -> TaintSink.t TaintSinkMap.t
val get_written_to : t -> (Timestamp.t * Trace.t) option
val is_always_reachable : t -> bool
val is_in_reported_retain_cycle : t -> bool
val is_modified : t -> bool
val is_std_moved : t -> bool
val is_std_vector_reserved : t -> bool
val get_last_lookup : t -> AbstractValue.t option
val get_uninitialized : t -> UninitializedTyp.t option
val remove_uninitialized : t -> t
val get_must_be_initialized : t -> (Timestamp.t * Trace.t) option
val get_unreachable_at : t -> IBase.Location.t option
val get_allocated_not_freed : t -> (allocator * Trace.t) option
val make_suitable_for_pre_summary : t -> t
val make_suitable_for_post_summary : t -> t