1 /******************************************************************************
2 * Top contributors (to current version):
3 * Tim King, Andres Noetzli, Mathias Preiner
5 * This file is part of the cvc5 project.
7 * Copyright (c) 2009-2021 by the authors listed in the file AUTHORS
8 * in the top-level source directory and their institutional affiliations.
9 * All rights reserved. See the file COPYING in the top-level source
10 * directory for licensing information.
11 * ****************************************************************************
13 * Representation of a constant array (an array in which the element is the
14 * same for all indices).
17 #include "cvc5_public.h"
19 #ifndef CVC5__ARRAY_STORE_ALL_H
20 #define CVC5__ARRAY_STORE_ALL_H
27 template <bool ref_count
>
29 typedef NodeTemplate
<true> Node
;
36 * @throws IllegalArgumentException if `type` is not an array or if `expr` is
37 * not a constant of type `type`.
39 ArrayStoreAll(const TypeNode
& type
, const Node
& value
);
42 ArrayStoreAll(const ArrayStoreAll
& other
);
43 ArrayStoreAll
& operator=(const ArrayStoreAll
& other
);
45 const TypeNode
& getType() const;
46 const Node
& getValue() const;
48 bool operator==(const ArrayStoreAll
& asa
) const;
49 bool operator!=(const ArrayStoreAll
& asa
) const;
50 bool operator<(const ArrayStoreAll
& asa
) const;
51 bool operator<=(const ArrayStoreAll
& asa
) const;
52 bool operator>(const ArrayStoreAll
& asa
) const;
53 bool operator>=(const ArrayStoreAll
& asa
) const;
56 std::unique_ptr
<TypeNode
> d_type
;
57 std::unique_ptr
<Node
> d_value
;
58 }; /* class ArrayStoreAll */
60 std::ostream
& operator<<(std::ostream
& out
, const ArrayStoreAll
& asa
);
63 * Hash function for the ArrayStoreAll constants.
65 struct ArrayStoreAllHashFunction
67 size_t operator()(const ArrayStoreAll
& asa
) const;
68 }; /* struct ArrayStoreAllHashFunction */
72 #endif /* CVC5__ARRAY_STORE_ALL_H */