#ifndef H_KINO_MATCHFIELDSCORER
#define H_KINO_MATCHFIELDSCORER 1

#include "KinoSearch/Search/Scorer.r"

typedef struct kino_MatchFieldScorer kino_MatchFieldScorer;
typedef struct KINO_MATCHFIELDSCORER_VTABLE KINO_MATCHFIELDSCORER_VTABLE;

struct kino_Tally;
struct kino_Lexicon;
struct kino_HitCollector;
struct kino_Native;

KINO_CLASS("KinoSearch::Search::MatchFieldScorer", "MatchFieldScorer", 
    "KinoSearch::Search::Scorer");

struct kino_MatchFieldScorer {
    KINO_MATCHFIELDSCORER_VTABLE *_;
    KINO_SCORER_MEMBER_VARS;
    struct kino_Tally    *tally;
    struct kino_IntMap   *sort_cache;
    chy_i32_t             doc_num;
    struct kino_Native   *weight;
};

/* Constructor. 
 */
kino_MatchFieldScorer*
kino_MatchFieldScorer_new(struct kino_Similarity *sim, 
                          struct kino_IntMap *sort_cache,
                          void *weight);

void
kino_MatchFieldScorer_destroy(kino_MatchFieldScorer *self);
KINO_METHOD("Kino_MatchFieldScorer_Destroy");

chy_bool_t
kino_MatchFieldScorer_next(kino_MatchFieldScorer* self);
KINO_METHOD("Kino_MatchFieldScorer_Next");

struct kino_Tally*
kino_MatchFieldScorer_tally(kino_MatchFieldScorer* self);
KINO_METHOD("Kino_MatchFieldScorer_Tally");

chy_u32_t 
kino_MatchFieldScorer_doc(kino_MatchFieldScorer* self);
KINO_METHOD("Kino_MatchFieldScorer_Doc");

KINO_END_CLASS

#endif /* H_KINO_MATCHFIELDSCORER */

/* Copyright 2006-2007 Marvin Humphrey
 *
 * This program is free software; you can redistribute it and/or modify
 * under the same terms as Perl itself.
 */