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