ArrayDomain.StrAbstract domains representing strings a.k.a. null-terminated char arrays.
include S0include Lattice.Sinclude Lattice.POReturns a new abstract value, where the given index is replaced with the * given element.
val get : VDQ.t -> t -> (Basetype.CilExp.t option * idx) -> retval to_null_byte_domain : string -> tstring_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