aboutsummaryrefslogtreecommitdiff
path: root/icing/query/advanced_query_parser/query-visitor.cc
diff options
context:
space:
mode:
Diffstat (limited to 'icing/query/advanced_query_parser/query-visitor.cc')
-rw-r--r--icing/query/advanced_query_parser/query-visitor.cc18
1 files changed, 18 insertions, 0 deletions
diff --git a/icing/query/advanced_query_parser/query-visitor.cc b/icing/query/advanced_query_parser/query-visitor.cc
index 910d722..fbd4504 100644
--- a/icing/query/advanced_query_parser/query-visitor.cc
+++ b/icing/query/advanced_query_parser/query-visitor.cc
@@ -366,5 +366,23 @@ void QueryVisitor::VisitNaryOperator(const NaryOperatorNode* node) {
pending_values_.push(std::move(pending_value));
}
+libtextclassifier3::StatusOr<QueryResults> QueryVisitor::ConsumeResults() && {
+ if (has_pending_error()) {
+ return std::move(pending_error_);
+ }
+ if (pending_values_.size() != 1) {
+ return absl_ports::InvalidArgumentError(
+ "Visitor does not contain a single root iterator.");
+ }
+ auto iterator_or = RetrieveIterator();
+ if (!iterator_or.ok()) {
+ return std::move(iterator_or).status();
+ }
+ QueryResults results;
+ results.root_iterator = std::move(iterator_or).ValueOrDie();
+ results.features_in_use = std::move(features_);
+ return results;
+}
+
} // namespace lib
} // namespace icing