/**
 * @class KinoSearch::Posting::RichPosting  RichPosting.r
 */
#ifndef H_KINO_RICHPOSTING
#define H_KINO_RICHPOSTING 1

#include "KinoSearch/Posting/ScorePosting.r"

struct kino_RichPostingScorer;

typedef struct kino_RichPosting kino_RichPosting;
typedef struct KINO_RICHPOSTING_VTABLE KINO_RICHPOSTING_VTABLE;

KINO_CLASS("KinoSearch::Posting::RichPosting", "RichPost", 
    "KinoSearch::Posting::ScorePosting");

struct kino_RichPosting {
    KINO_RICHPOSTING_VTABLE *_;
    KINO_SCOREPOSTING_MEMBER_VARS;
    float            *prox_boosts;
};

/* Constructor.
 */
kino_RichPosting*
kino_RichPost_new(struct kino_Similarity *sim);

void
kino_RichPost_destroy(kino_RichPosting *self);
KINO_METHOD("Kino_RichPost_Destroy");

kino_RichPosting*
kino_RichPost_clone(kino_RichPosting *self);
KINO_METHOD("Kino_RichPost_Clone");

kino_RichPosting*
kino_RichPost_dupe(kino_RichPosting *self, struct kino_Similarity *sim);
KINO_METHOD("Kino_RichPost_Dupe");

void
kino_RichPost_read_record(kino_RichPosting *self, 
                          struct kino_InStream *instream);
KINO_METHOD("Kino_RichPost_Read_Record");

struct kino_RawPosting*
kino_RichPost_read_raw(kino_RichPosting *self, 
                       struct kino_InStream *instream,
                       chy_u32_t last_doc_num, 
                       struct kino_ByteBuf *term_text, 
                       struct kino_MemoryPool *mem_pool);
KINO_METHOD("Kino_RichPost_Read_Raw");

void
kino_RichPost_add_batch_to_pool(kino_RichPosting *self, 
                                struct kino_PostingPool *post_pool, 
                                struct kino_TokenBatch *batch, 
                                struct kino_FieldSpec *fspec, 
                                chy_u32_t doc_num, float doc_boost, 
                                float length_norm);
KINO_METHOD("Kino_RichPost_Add_Batch_To_Pool");

struct kino_RichPostingScorer*
kino_RichPost_make_scorer(kino_RichPosting *self, 
                          struct kino_Similarity *sim,
                          struct kino_PostingList *plist, 
                          void *weight, float weight_val);
KINO_METHOD("Kino_RichPost_Make_Scorer");

KINO_END_CLASS

#endif /* H_KINO_RICHPOSTING */

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