* Copyright (c) Huawei Technologies Co., Ltd. 2021-2021. All rights reserved.
* Description: print expression tree visitor for expressions
*/
#ifndef __OMNI_RUNTIME_EXPRESSION_PRINTER_H__
#define __OMNI_RUNTIME_EXPRESSION_PRINTER_H__
#include "expr_visitor.h"
#include "util/type_util.h"
class ExprPrinter : public ExprVisitor {
public:
void Visit(const omniruntime::expressions::LiteralExpr &e) override;
void Visit(const omniruntime::expressions::FieldExpr &e) override;
void Visit(const omniruntime::expressions::UnaryExpr &e) override;
void Visit(const omniruntime::expressions::BinaryExpr &e) override;
void Visit(const omniruntime::expressions::InExpr &e) override;
void Visit(const omniruntime::expressions::BetweenExpr &e) override;
void Visit(const omniruntime::expressions::IfExpr &e) override;
void Visit(const omniruntime::expressions::CoalesceExpr &e) override;
void Visit(const omniruntime::expressions::IsNullExpr &e) override;
void Visit(const omniruntime::expressions::FuncExpr &e) override;
void Visit(const omniruntime::expressions::SwitchExpr &e) override;
private:
std::string BinaryExprPrinterHelper(const omniruntime::expressions::Operator &op,
const omniruntime::type::DataType &type) const;
std::string GenerateIndentation() const;
int indentationDepth = 0;
};
#endif