// Copyright Vespa.ai. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. #pragma once #include "querynodes.h" #include "viewresolver.h" #include #include namespace proton::matching { class ResolveViewVisitor : public search::query::TemplateTermVisitor { const ViewResolver &_resolver; const search::fef::IIndexEnvironment &_indexEnv; public: ResolveViewVisitor(const matching::ViewResolver &resolver, const search::fef::IIndexEnvironment &indexEnv) : _resolver(resolver), _indexEnv(indexEnv) {} template void visitTerm(TermNode &n) { n.resolve(_resolver, _indexEnv); } void visit(ProtonLocationTerm &n) override; void visit(ProtonNodeTypes::Equiv &n) override { visitChildren(n); n.resolveFromChildren(n.getChildren()); } void visit(ProtonNodeTypes::SameElement &n) override { visitChildren(n); visitTerm(n); } }; }