iceberg-cpp
Loading...
Searching...
No Matches
Classes | Functions
expression_visitor.h File Reference
#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.
 

Detailed Description

Visitor pattern implementation for traversing Iceberg expression trees.

Function Documentation

◆ Visit()

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.

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.

Template Parameters
RThe return type produced by the visitor
VThe visitor type (must derive from ExpressionVisitor<R>)
Parameters
exprThe expression to traverse
visitorThe visitor to use for traversal
Returns
The result produced by the visitor for the root expression node