// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. #pragma once #include "operation.h" #include #include #include namespace vespalib { class ObjectVisitor; namespace eval { enum class Aggr; struct TensorFunction; namespace visit { using map_fun_t = vespalib::eval::operation::op1_t; using join_fun_t = vespalib::eval::operation::op2_t; struct DimList { const std::vector &list; DimList(const std::vector &list_in) : list(list_in) {} }; struct FromTo { const std::vector &from; const std::vector &to; FromTo(const std::vector &from_in, const std::vector &to_in) : from(from_in), to(to_in) {} }; } // namespace vespalib::eval::visit } // namespace vespalib::eval } // namespace vespalib void visit(vespalib::ObjectVisitor &visitor, const vespalib::string &name, const vespalib::eval::TensorFunction &value); void visit(vespalib::ObjectVisitor &visitor, const vespalib::string &name, vespalib::eval::visit::map_fun_t value); void visit(vespalib::ObjectVisitor &visitor, const vespalib::string &name, vespalib::eval::visit::join_fun_t value); void visit(vespalib::ObjectVisitor &visitor, const vespalib::string &name, const vespalib::eval::Aggr &value); void visit(vespalib::ObjectVisitor &visitor, const vespalib::string &name, const vespalib::eval::visit::DimList &value); void visit(vespalib::ObjectVisitor &visitor, const vespalib::string &name, const vespalib::eval::visit::FromTo &value);