ArrayDomain.StrAbstract domains representing strings a.k.a. null-terminated char arrays.
include S0include Lattice.Sinclude Lattice.POtype idx = PreValueDomain.IndexDomain.tThe abstract domain used to index on arrays.
Returns a new abstract value, where the given index is replaced with the * given element.
val make :
?varAttr:GoblintCil.Cil.attributes ->
?typAttr:GoblintCil.Cil.attributes ->
SizeDomain.t ->
value ->
tmake l e creates an abstract representation of an array of length l * containing the element e.
val length : t -> SizeDomain.t optionreturns length of array if known
val update_length : SizeDomain.t -> t -> tval get : VDQ.t -> t -> (Basetype.CilExp.t option * idx) -> retval to_null_byte_domain : string -> tval to_string_length : t -> SizeDomain.tReturns length of string represented by input abstract value
string_copy dest src n returns an abstract value representing the copy of string src * into array dest, taking at most n bytes of src if present
string_concat s1 s2 n returns a new abstract value representing the string * concatenation of the input abstract values s1 and s2, taking at most n bytes of * s2 if present
substring_extraction haystack needle returns IsNotSubstr if the string represented by * the abstract value needle surely isn't a substring of haystack, IsSubstrAtIndex0 if * needle is the empty string, else IsMaybeSubstr
val string_comparison : t -> t -> int option -> PreValueDomain.ID.tstring_comparison s1 s2 n returns a negative / positive integer if the string * represented by s1 is less / greater than the one by s2 or zero if they are equal; * only compares the first n bytes if present