The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
/* 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;

/** Access search results.
 *
 * Hits objects are iterators used to access the results of a search.
 */
public class Lucy::Search::Hits inherits Clownfish::Obj {

    Searcher   *searcher;
    TopDocs    *top_docs;
    Vector     *match_docs;
    uint32_t    offset;

    inert incremented Hits*
    new(Searcher *searcher, TopDocs *top_docs, uint32_t offset = 0);

    inert Hits*
    init(Hits *self, Searcher *searcher, TopDocs *top_docs,
         uint32_t offset = 0);

    /** Return the next hit, or [](cfish:@null) when the iterator is exhausted.
     */
    public incremented nullable HitDoc*
    Next(Hits *self);

    /** Return the total number of documents which matched the Query used to
     * produce the Hits object.  Note that this is the total number of
     * matches, not just the number of matches represented by the Hits
     * iterator.
     */
    public uint32_t
    Total_Hits(Hits *self);

    public void
    Destroy(Hits *self);
}