pub struct ArrayInfo {
pub symbol: SymbolId,
pub name: String,
pub elem_ty: Ty,
pub rand: bool,
pub elem_domain: Option<Vec<BigUint>>,
pub assoc: bool,
pub nested: bool,
pub template_of: Option<ArrayId>,
pub inner_fixed: u32,
pub row_depth: u32,
pub window: Option<Window>,
}Expand description
A dynamic array or queue the constraints reach.
Fields§
§symbol: SymbolIdThe property’s key.
name: StringIts declared name.
elem_ty: TyThe element type (a 4-state element is solved as 2-state).
rand: boolWhether the property is rand: its size and elements are then random
variables of the program (an inactive rand_mode is decided at run
time). A non-rand array a constraint reads is state.
elem_domain: Option<Vec<BigUint>>For an array of an enum type, the named constants every element takes (LRM 6.19.3, 18.3).
assoc: boolAn associative array (only ever rand, and only its existing values
are drawn: no constraint can name it, 18.4).
nested: boolAn array of dynamic arrays or queues (rand int a[][], 18.4): its
elements are rows, and Self::elem_ty / Self::elem_domain describe
the leaf elements of the rows.
template_of: Option<ArrayId>For the row template of an array of arrays (ArrayNode::RowScope):
that array. A template is not a property; it is how a constraint names
“the row a[i] selects”.
inner_fixed: u32For an array of fixed-size rows (rand int b[][4]): the row length N;
every row is pinned to N elements by an implicit constraint and stored
inline in its outer element. Zero for dynamic rows.
row_depth: u32How many levels of rows lie below this array: 0 for a plain dynamic
array or queue, 1 for int a[][] / int b[][4], 2 for int a[][][].
Zero exactly when Self::nested is false. A row template has one
level fewer than the array it is the template of.
window: Option<Window>Where the array’s handle sits in its property when it is a leaf of an
aggregate (a row of rand int a[3][], a queue member of a struct).
Trait Implementations§
impl Eq for ArrayInfo
impl StructuralPartialEq for ArrayInfo
Auto Trait Implementations§
impl Freeze for ArrayInfo
impl RefUnwindSafe for ArrayInfo
impl Send for ArrayInfo
impl Sync for ArrayInfo
impl Unpin for ArrayInfo
impl UnsafeUnpin for ArrayInfo
impl UnwindSafe for ArrayInfo
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key and return true if they are equal.