1*f88b2170SEd Tanous #pragma once
2*f88b2170SEd Tanous 
3*f88b2170SEd Tanous #include "filter_expr_parser_ast.hpp"
4*f88b2170SEd Tanous 
5*f88b2170SEd Tanous #include <memory>
6*f88b2170SEd Tanous #include <optional>
7*f88b2170SEd Tanous #include <string_view>
8*f88b2170SEd Tanous 
9*f88b2170SEd Tanous namespace redfish
10*f88b2170SEd Tanous {
11*f88b2170SEd Tanous struct FilterExpressionPrinter
12*f88b2170SEd Tanous {
13*f88b2170SEd Tanous     using result_type = std::string;
14*f88b2170SEd Tanous     std::string operator()(double x) const;
15*f88b2170SEd Tanous     std::string operator()(int64_t x) const;
16*f88b2170SEd Tanous     std::string operator()(const filter_ast::QuotedString& x) const;
17*f88b2170SEd Tanous     std::string operator()(const filter_ast::UnquotedString& x) const;
18*f88b2170SEd Tanous     std::string operator()(const filter_ast::LogicalNot& x) const;
19*f88b2170SEd Tanous     std::string operator()(const filter_ast::LogicalOr& x) const;
20*f88b2170SEd Tanous     std::string operator()(const filter_ast::LogicalAnd& x) const;
21*f88b2170SEd Tanous     std::string operator()(const filter_ast::Comparison& x) const;
22*f88b2170SEd Tanous     std::string operator()(const filter_ast::BooleanOp& operation) const;
23*f88b2170SEd Tanous };
24*f88b2170SEd Tanous 
25*f88b2170SEd Tanous std::optional<filter_ast::LogicalAnd> parseFilter(std::string_view expr);
26*f88b2170SEd Tanous } // namespace redfish
27