|
iceberg-cpp
|
Base visitor for traversing expression trees. More...
#include <expression_visitor.h>
Public Member Functions | |
| virtual Result< R > | AlwaysTrue ()=0 |
| Visit a True expression (always evaluates to true). | |
| virtual Result< R > | AlwaysFalse ()=0 |
| Visit a False expression (always evaluates to false). | |
| virtual Result< R > | Not (ParamType child_result)=0 |
| Visit a Not expression. | |
| virtual Result< R > | And (ParamType left_result, ParamType right_result)=0 |
| Visit an And expression. | |
| virtual Result< R > | Or (ParamType left_result, ParamType right_result)=0 |
| Visit an Or expression. | |
| virtual Result< R > | Predicate (const std::shared_ptr< BoundPredicate > &pred)=0 |
| Visit a bound predicate. | |
| virtual Result< R > | Predicate (const std::shared_ptr< UnboundPredicate > &pred)=0 |
| Visit an unbound predicate. | |
| virtual Result< R > | Aggregate (const std::shared_ptr< BoundAggregate > &aggregate) |
| Visit a bound aggregate. | |
| virtual Result< R > | Aggregate (const std::shared_ptr< UnboundAggregate > &aggregate) |
| Visit an unbound aggregate. | |
Base visitor for traversing expression trees.
This visitor traverses expression trees in postorder traversal and calls appropriate visitor methods for each node. Subclasses can override specific methods to implement custom behavior.
| R | The return type produced by visitor methods |
|
inlinevirtual |
Visit a bound aggregate.
| aggregate | The bound aggregate to visit. |
Reimplemented in iceberg::Binder, iceberg::IsBoundVisitor, and iceberg::ReferenceVisitor.
|
inlinevirtual |
Visit an unbound aggregate.
| aggregate | The unbound aggregate to visit. |
Reimplemented in iceberg::Binder, iceberg::IsBoundVisitor, and iceberg::ReferenceVisitor.
|
pure virtual |
Visit a False expression (always evaluates to false).
Implemented in iceberg::Binder, iceberg::IsBoundVisitor, iceberg::ReferenceVisitor, iceberg::EvalVisitor, iceberg::InclusiveMetricsVisitor, iceberg::ManifestEvalVisitor, iceberg::ProjectionVisitor, iceberg::RewriteNot, and iceberg::StrictMetricsVisitor.
|
pure virtual |
Visit a True expression (always evaluates to true).
Implemented in iceberg::Binder, iceberg::IsBoundVisitor, iceberg::ReferenceVisitor, iceberg::EvalVisitor, iceberg::InclusiveMetricsVisitor, iceberg::ManifestEvalVisitor, iceberg::ProjectionVisitor, iceberg::RewriteNot, and iceberg::StrictMetricsVisitor.
|
pure virtual |
Visit an And expression.
| left_result | The result from visiting the left child |
| right_result | The result from visiting the right child |
|
pure virtual |
Visit a Not expression.
| child_result | The result from visiting the child expression |
|
pure virtual |
Visit an Or expression.
| left_result | The result from visiting the left child |
| right_result | The result from visiting the right child |
|
pure virtual |
Visit a bound predicate.
| pred | The bound predicate to visit |
Implemented in iceberg::Binder, iceberg::IsBoundVisitor, iceberg::ReferenceVisitor, iceberg::BoundVisitor< R >, iceberg::BoundVisitor< bool >, iceberg::ProjectionVisitor, iceberg::InclusiveProjectionVisitor, iceberg::StrictProjectionVisitor, and iceberg::RewriteNot.
|
pure virtual |
Visit an unbound predicate.
| pred | The unbound predicate to visit |
Implemented in iceberg::Binder, iceberg::IsBoundVisitor, iceberg::ReferenceVisitor, iceberg::BoundVisitor< R >, iceberg::BoundVisitor< bool >, iceberg::ProjectionVisitor, and iceberg::RewriteNot.