Clingo
Loading...
Searching...
No Matches

Data structures and functions to match symbols and expressions. More...

Concepts

concept  CppClingo::Ground::IsBase
 Concept for atom bases.
 
concept  CppClingo::Ground::IsMatch
 Concept for matchable expressions.
 
concept  CppClingo::Ground::IsEval
 Concept for evaluable expressions.
 

Classes

class  CppClingo::Ground::OnceMatcher
 A matcher that matches only provides one match. More...
 

Functions

auto CppClingo::Ground::make_once_matcher () -> UMatcher
 Construct a matcher matching only once.
 
auto CppClingo::Ground::make_interval_matcher (std::vector< bool > const &bound, Term const &lhs, Term const &lower, Term const &upper) -> UMatcher
 Construct an interval matcher.
 
auto CppClingo::Ground::make_comp_matcher (std::vector< bool > const &bound, Term const &lhs, Relation rel, Term const &rhs) -> UMatcher
 Construct a matcher for comparisons.
 
template<IsEval Expr>
auto CppClingo::Ground::make_once_matcher (Expr const &expr, typename Expr::Key &target) -> UMatcher
 Construct a once matcher that also evaluates an expression.
 
template<IsBase Base, IsMatch Match>
auto CppClingo::Ground::make_non_fact_matcher (Base &base, Match const &match, typename Match::Key &target) -> UMatcher
 Construct a matcher for facts.
 
template<IsBase Base, IsMatch Match>
auto CppClingo::Ground::make_atom_matcher (std::pmr::monotonic_buffer_resource &mbr, std::vector< bool > const &bound, Base &base, Match const &atom, MatcherType type, size_t &offset) -> UMatcher
 Construct a matcher for an atom.
 

Detailed Description

Data structures and functions to match symbols and expressions.

Function Documentation

◆ make_atom_matcher()

template<IsBase Base, IsMatch Match>
auto CppClingo::Ground::make_atom_matcher ( std::pmr::monotonic_buffer_resource &  mbr,
std::vector< bool > const &  bound,
Base base,
Match const &  atom,
MatcherType  type,
size_t &  offset 
) -> UMatcher

Construct a matcher for an atom.

A base and an atom implementing the IsBase and IsMatch concepts must be given.

◆ make_comp_matcher()

auto CppClingo::Ground::make_comp_matcher ( std::vector< bool > const &  bound,
Term const &  lhs,
Relation  rel,
Term const &  rhs 
) -> UMatcher

Construct a matcher for comparisons.

It matches if lhs rel rhs holds. All variables in lhs and rhs must be bound.

◆ make_interval_matcher()

auto CppClingo::Ground::make_interval_matcher ( std::vector< bool > const &  bound,
Term const &  lhs,
Term const &  lower,
Term const &  upper 
) -> UMatcher

Construct an interval matcher.

It matches [lhs] with all values from the interval [lower, upper]. All variables in lower and upper must be bound.

◆ make_non_fact_matcher()

template<IsBase Base, IsMatch Match>
auto CppClingo::Ground::make_non_fact_matcher ( Base base,
Match const &  match,
typename Match::Key &  target 
) -> UMatcher

Construct a matcher for facts.

A matcher for anything that is not a fact. The evaluated match is stored in the given reference.

◆ make_once_matcher()

template<IsEval Expr>
auto CppClingo::Ground::make_once_matcher ( Expr const &  expr,
typename Expr::Key &  target 
) -> UMatcher

Construct a once matcher that also evaluates an expression.

The evaluated match is stored in the given reference.