1 /********************* */
2 /*! \file tuple_project_op.h
4 ** Top contributors (to current version):
6 ** This file is part of the CVC4 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.\endverbatim
12 ** \brief a class for TupleProjectOp operator
15 #include "cvc4_public.h"
17 #ifndef CVC4__PROJECT_OP_H
18 #define CVC4__PROJECT_OP_H
28 * The class is an operator for kind project used to project elements in a tuple
29 * It stores the indices of projected elements
34 explicit TupleProjectOp(std::vector
<uint32_t> indices
);
35 TupleProjectOp(const TupleProjectOp
& op
) = default;
37 /** return the indices of the projection */
38 const std::vector
<uint32_t>& getIndices() const;
40 bool operator==(const TupleProjectOp
& op
) const;
43 std::vector
<uint32_t> d_indices
;
44 }; /* class TupleProjectOp */
46 std::ostream
& operator<<(std::ostream
& out
, const TupleProjectOp
& op
);
49 * Hash function for the TupleProjectOpHashFunction objects.
51 struct CVC4_PUBLIC TupleProjectOpHashFunction
53 size_t operator()(const TupleProjectOp
& op
) const;
54 }; /* struct TupleProjectOpHashFunction */
58 #endif /* CVC4__PROJECT_OP_H */