1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#[derive(Clone, PartialEq, Eq, Debug)]
pub enum ParameterVal {
    /// The parameter can have any value whatsoever. (The analysis will
    /// effectively consider all possible values.)
    Unconstrained,
    /// The parameter will have this exact value.
    ExactValue(u64),
    /// The parameter can have any value in this range (inclusive).
    Range(u64, u64),
    /// The parameter will have a non-null value, but otherwise be completely
    /// unconstrained (could point anywhere or alias anything).
    /// This can only be used for pointer-type parameters.
    NonNullPointer,
    /// The parameter will point to allocated memory, with the given allocation
    /// size in bytes. It will not be NULL and will not alias any other allocated
    /// memory.
    /// This can only be used for pointer-type parameters.
    PointerToAllocated(u64),
}

impl Default for ParameterVal {
    fn default() -> Self {
        Self::Unconstrained
    }
}