Clingo
|
Gather aggregate elements. More...
#include <body_aggregate.hh>
Public Member Functions | |
StmBdAggrElem (StateBdAggr &state, Location loc_weight, UTermVec tuple, ULitVec body, size_t num_cond, size_t priority) | |
Construct the statement. | |
StmBdAggrElem (StmBdAggrElem const &other) | |
Copy constructor. | |
StmBdAggrElem (StmBdAggrElem &&other) noexcept=default | |
Move constructor. | |
auto | operator= (StmBdAggrElem const &other) -> StmBdAggrElem &=default |
Copy assignment. | |
auto | operator= (StmBdAggrElem &&other) noexcept -> StmBdAggrElem &=default |
Move assignment. | |
![]() | |
auto | body () const -> ULitVec const & |
Get the body of the statement. | |
auto | important () const -> VariableSet |
Get the important variables in the statement. | |
![]() | |
virtual | ~InstanceCallback ()=default |
Destroy the callback. | |
void | init (size_t gen) |
Notify a statement that instantiation starts. | |
auto | report (EvalContext const &ctx) -> bool |
Report an assignment giving rise to an instance for a statement. | |
void | propagate (SymbolStore &store, OutputStm &out, Queue &queue) |
Notify a statement that instantiation has finished. | |
auto | priority () const -> size_t |
The priority of the callback. | |
void | print_head (std::ostream &out) const |
Print representation for debugging. | |
auto | is_important (size_t index) const -> bool |
Check if the literal with the given index is important. | |
Friends | |
class | StateBdAggr |
class | StateBdAggr::ElementKey |
Gather aggregate elements.
This class can also be used to derive empty aggregates. A tuple with a neutral element has to be used, which is 0/#sum/#sup depending on the type of the aggregate. Count aggregates have to be translated to sum+ aggregates beforehand.
|
inline |
Construct the statement.
The first num_cond literals of the body must form the aggregate element's condition. The following literals are just used for grounding binding global variables of the aggregate and ensuring safety.