|
iceberg-cpp
|
#include <concepts>#include <memory>#include <typeinfo>#include "iceberg/expression/aggregate.h"#include "iceberg/expression/expression.h"#include "iceberg/expression/literal.h"#include "iceberg/expression/predicate.h"#include "iceberg/expression/term.h"#include "iceberg/iceberg_export.h"#include "iceberg/result.h"#include "iceberg/util/checked_cast.h"#include "iceberg/util/macros.h"Go to the source code of this file.
Classes | |
| class | iceberg::ExpressionVisitor< R > |
| Base visitor for traversing expression trees. More... | |
| class | iceberg::BoundVisitor< R > |
| Visitor for bound expressions. More... | |
Functions | |
| template<typename R , typename V > requires std::derived_from<V, ExpressionVisitor<R>> | |
| Result< R > | iceberg::Visit (const std::shared_ptr< Expression > &expr, V &visitor) |
| Traverse an expression tree with a visitor. | |
Visitor pattern implementation for traversing Iceberg expression trees.
| Result< R > iceberg::Visit | ( | const std::shared_ptr< Expression > & | expr, |
| V & | visitor | ||
| ) |
Traverse an expression tree with a visitor.
This function traverses the given expression tree in postorder traversal and calls appropriate visitor methods for each node. Results from child nodes are passed to parent nodes.
| R | The return type produced by the visitor |
| V | The visitor type (must derive from ExpressionVisitor<R>) |
| expr | The expression to traverse |
| visitor | The visitor to use for traversal |