Clingo
|
Extensible ground representation of assignment aggregates. More...
#include <assignment_aggregate.hh>
Public Types | |
using | Values = std::variant< Util::small_vector< Number >, Util::small_vector< Symbol > > |
The possible values an assignment aggregate can take. | |
Public Member Functions | |
AtomAssignAggr (AggregateFunction fun) | |
Initialize for the given aggregate function. | |
void | accumulate (AggregateFunction fun, SymbolSpan tup, bool fact) |
Accumulate a tuple. | |
auto | is_fact () const |
Check if the aggregate in its current state is a fact. | |
auto | todo_values () -> std::variant< NumberSpan, SymbolSpan > |
Get the values to propagate. | |
void | add_elem (size_t idx) |
Add a new element. | |
auto | elems () const -> std::span< size_t const > |
Get the aggregate elements. | |
auto | enqueue () -> bool |
Enqueue aggregate to propagate its elements. | |
void | dequeue () |
Dequeue an aggregate whose elements have been propagated. | |
auto | todo () -> std::span< size_t const > |
Get the elements that have to be propagated. | |
Extensible ground representation of assignment aggregates.
using CppClingo::Ground::AtomAssignAggr::Values = std::variant<Util::small_vector<Number>, Util::small_vector<Symbol> > |
The possible values an assignment aggregate can take.
Aggregates operating on numbers do not use symbols to avoid storing unnecessary intermediate symbols.