//===----------------------------------------------------------------------===// // DuckDB // // duckdb/planner/expression_iterator.hpp // // //===----------------------------------------------------------------------===// #pragma once #include "duckdb/common/common.hpp" #include "duckdb/planner/expression.hpp" #include namespace duckdb { class BoundQueryNode; class BoundTableRef; class ExpressionIterator { public: static void EnumerateChildren(const Expression &expression, const std::function &callback); static void EnumerateChildren(Expression &expression, const std::function &callback); static void EnumerateChildren(Expression &expression, const std::function &child)> &callback); static void EnumerateExpression(unique_ptr &expr, const std::function &callback); static void EnumerateTableRefChildren(BoundTableRef &ref, const std::function &callback); static void EnumerateQueryNodeChildren(BoundQueryNode &node, const std::function &callback); }; } // namespace duckdb