1 // Copyright (C) 2019 Google LLC 2 // 3 // Licensed under the Apache License, Version 2.0 (the "License"); 4 // you may not use this file except in compliance with the License. 5 // You may obtain a copy of the License at 6 // 7 // http://www.apache.org/licenses/LICENSE-2.0 8 // 9 // Unless required by applicable law or agreed to in writing, software 10 // distributed under the License is distributed on an "AS IS" BASIS, 11 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 // See the License for the specific language governing permissions and 13 // limitations under the License. 14 15 #include "icing/index/iterator/doc-hit-info-iterator-all-document-id.h" 16 17 #include "icing/text_classifier/lib3/utils/base/status.h" 18 #include "icing/absl_ports/canonical_errors.h" 19 #include "icing/index/hit/doc-hit-info.h" 20 #include "icing/index/iterator/doc-hit-info-iterator.h" 21 #include "icing/store/document-id.h" 22 23 namespace icing { 24 namespace lib { 25 DocHitInfoIteratorAllDocumentId(const DocumentId document_id_limit)26DocHitInfoIteratorAllDocumentId::DocHitInfoIteratorAllDocumentId( 27 const DocumentId document_id_limit) 28 : document_id_limit_(document_id_limit), 29 current_document_id_(document_id_limit) {} 30 Advance()31libtextclassifier3::Status DocHitInfoIteratorAllDocumentId::Advance() { 32 if (!IsDocumentIdValid(current_document_id_)) { 33 // Reached the end, set these to invalid values and return 34 doc_hit_info_ = DocHitInfo(kInvalidDocumentId); 35 hit_intersect_section_ids_mask_ = kSectionIdMaskNone; 36 return absl_ports::ResourceExhaustedError( 37 "No more DocHitInfos in iterator"); 38 } 39 doc_hit_info_.set_document_id(current_document_id_--); 40 return libtextclassifier3::Status::OK; 41 } 42 43 libtextclassifier3::StatusOr<DocHitInfoIterator::TrimmedNode> TrimRightMostNode()44DocHitInfoIteratorAllDocumentId::TrimRightMostNode() && { 45 // The all document id node should be trimmed. 46 TrimmedNode node = {nullptr, /*term=*/"", /*term_start_index_=*/0, 47 /*unnormalized_term_length_=*/0}; 48 return node; 49 } 50 } // namespace lib 51 } // namespace icing 52