Clingo
Loading...
Searching...
No Matches
CppClingo::Ground::StateAssignAggr Class Reference

State storing all necessary information to ground assignment aggregates. More...

#include <assignment_aggregate.hh>

Inheritance diagram for CppClingo::Ground::StateAssignAggr:
CppClingo::Ground::State

Classes

class  ElementKey
 Keys for aggregate elements storing their tuple and their aggregate atom index. More...
 

Public Types

using AtomMap = BaseAssignAggr::AtomMap
 A map from global variables to the aggregate representation.
 
using ElementMap = Util::ordered_map< ElementKey *, Util::small_vector< size_t > >
 A map from tuples to their conditions.
 

Public Member Functions

 StateAssignAggr (std::pmr::monotonic_buffer_resource &mbr, VariableVec global, UTerm term, AggregateFunction fun, size_t index, bool domain_elems, bool single_pass_elems)
 Initialize an aggregate state.
 
auto global () const -> VariableVec const &
 Get the global variables in the aggregate.
 
auto symbols () -> SymbolVec &
 Get a buffer to store values for global variables.
 
auto term () const -> Term const &
 Get the target term to assign values to.
 
auto fun () const -> AggregateFunction
 Get the aggregate function.
 
auto domain_elems () const -> bool
 Indicates that the elements are domain.
 
auto single_pass_elems () const -> bool
 Indicates that all necessary elements can be grounded in a single pass.
 
auto index () const -> size_t
 Get the update index.
 
auto propagate (SymbolStore &store) -> bool
 Propagate enqueued aggregates.
 
auto insert_atom (EvalContext const &ctx) -> std::pair< AtomMap::iterator, bool >
 Insert an aggregate atom (stemming from an aggregate element).
 
void insert_elem (EvalContext const &ctx, AtomMap::iterator it, StmAssignAggrElem &elem)
 Insert an aggregate element.
 
auto atom_index (AtomMap::iterator it) -> size_t
 Get the index of an aggregate atom.
 
void print (std::ostream &out, bool print_index)
 Print a non-ground representation of the aggregate.
 
auto base () -> BaseAssignAggr &
 Get the underlying atom base.
 
void output (Logger &log, SymbolStore &store, OutputStm &out) override
 Output all previously grounded aggregates.
 
- Public Member Functions inherited from CppClingo::Ground::State
virtual ~State ()=default
 Destructor.
 

Detailed Description

State storing all necessary information to ground assignment aggregates.

Member Typedef Documentation

◆ ElementMap

A map from tuples to their conditions.

Each value in the map represents an aggregate element.

Member Function Documentation

◆ domain_elems()

auto CppClingo::Ground::StateAssignAggr::domain_elems ( ) const -> bool

Indicates that the elements are domain.

This does not take into account the body prefix of elements.

◆ global()

auto CppClingo::Ground::StateAssignAggr::global ( ) const -> VariableVec const &

Get the global variables in the aggregate.

This does not include the variables of the guard.

◆ insert_atom()

auto CppClingo::Ground::StateAssignAggr::insert_atom ( EvalContext const &  ctx) -> std::pair< AtomMap::iterator, bool >

Insert an aggregate atom (stemming from an aggregate element).

This function also enqueues freshly inserted atoms to cover the case that the aggregate matches the empty element set.

◆ output()

void CppClingo::Ground::StateAssignAggr::output ( Logger log,
SymbolStore store,
OutputStm out 
)
overridevirtual

Output all previously grounded aggregates.

Implements CppClingo::Ground::State.

◆ single_pass_elems()

auto CppClingo::Ground::StateAssignAggr::single_pass_elems ( ) const -> bool

Indicates that all necessary elements can be grounded in a single pass.

This does not take into account the body prefix of elements.


The documentation for this class was generated from the following file: