/* Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ parcel Lucy; /** Multi-segment Lexicon. * * Interleaves the output of multiple SegLexicons. */ class Lucy::Index::PolyLexicon cnick PolyLex inherits Lucy::Index::Lexicon { Obj *term; SegLexQueue *lex_q; VArray *seg_lexicons; int32_t size; inert incremented PolyLexicon* new(const CharBuf *field, VArray *sub_readers); inert PolyLexicon* init(PolyLexicon *self, const CharBuf *field, VArray *sub_readers); public void Seek(PolyLexicon *self, Obj *target = NULL); public bool_t Next(PolyLexicon *self); public void Reset(PolyLexicon *self); public nullable Obj* Get_Term(PolyLexicon *self); uint32_t Get_Num_Seg_Lexicons(PolyLexicon *self); public void Destroy(PolyLexicon *self); } class Lucy::Index::SegLexQueue cnick SegLexQ inherits Lucy::Util::PriorityQueue { inert incremented SegLexQueue* new(uint32_t max_size); bool_t Less_Than(SegLexQueue *self, Obj *a, Obj *b); }