/** @file */
/***********************************************

 !!!! DO NOT EDIT THIS FILE !!!!

 All content has been auto-generated by 
 the boilerplater.pl utility.

 See boilerplater's documentation for details.

 ***********************************************/



#ifndef R_KINO_SEGINFO
#define R_KINO_SEGINFO 1

#include "KinoSearch/Index/SegInfo.h"

#define KINO_SEGINFO_BOILERPLATE

typedef void
(*kino_SegInfo_destroy_t)(kino_SegInfo *self);

typedef void
(*kino_SegInfo_add_field_t)(kino_SegInfo *self, 
                       const struct kino_ByteBuf *field_name);

typedef void
(*kino_SegInfo_add_metadata_t)(kino_SegInfo *self, const char *key, size_t key_len,
                          kino_Obj *value);

typedef struct kino_Hash*
(*kino_SegInfo_get_metadata_t)(kino_SegInfo *self);

typedef kino_Obj*
(*kino_SegInfo_extract_metadata_t)(kino_SegInfo *self, const char *key, 
                              size_t key_len);

typedef struct kino_ByteBuf*
(*kino_SegInfo_field_name_t)(kino_SegInfo *self, chy_i32_t field_num);

typedef chy_i32_t
(*kino_SegInfo_field_num_t)(kino_SegInfo *self, 
                       const struct kino_ByteBuf *field_name);

#define Kino_SegInfo_Clone(self) \
    kino_Obj_clone((kino_Obj*)self)

#define Kino_SegInfo_Destroy(self) \
    kino_SegInfo_destroy((kino_SegInfo*)self)

#define Kino_SegInfo_Equals(self, other) \
    kino_Obj_equals((kino_Obj*)self, other)

#define Kino_SegInfo_Hash_Code(self) \
    kino_Obj_hash_code((kino_Obj*)self)

#define Kino_SegInfo_Is_A(self, target_vtable) \
    kino_Obj_is_a((kino_Obj*)self, target_vtable)

#define Kino_SegInfo_To_String(self) \
    kino_Obj_to_string((kino_Obj*)self)

#define Kino_SegInfo_Serialize(self, target) \
    kino_Obj_serialize((kino_Obj*)self, target)

#define Kino_SegInfo_Add_Field(self, field_name) \
    kino_SegInfo_add_field((kino_SegInfo*)self, field_name)

#define Kino_SegInfo_Add_Metadata(self, key, key_len, value) \
    kino_SegInfo_add_metadata((kino_SegInfo*)self, key, key_len, value)

#define Kino_SegInfo_Get_Metadata(self) \
    kino_SegInfo_get_metadata((kino_SegInfo*)self)

#define Kino_SegInfo_Extract_Metadata(self, key, key_len) \
    kino_SegInfo_extract_metadata((kino_SegInfo*)self, key, key_len)

#define Kino_SegInfo_Field_Name(self, field_num) \
    kino_SegInfo_field_name((kino_SegInfo*)self, field_num)

#define Kino_SegInfo_Field_Num(self, field_name) \
    kino_SegInfo_field_num((kino_SegInfo*)self, field_name)

struct KINO_SEGINFO_VTABLE {
    KINO_OBJ_VTABLE *_;
    chy_u32_t refcount;
    KINO_OBJ_VTABLE *parent;
    const char *class_name;
    kino_Obj_clone_t clone;
    kino_Obj_destroy_t destroy;
    kino_Obj_equals_t equals;
    kino_Obj_hash_code_t hash_code;
    kino_Obj_is_a_t is_a;
    kino_Obj_to_string_t to_string;
    kino_Obj_serialize_t serialize;
    kino_SegInfo_add_field_t add_field;
    kino_SegInfo_add_metadata_t add_metadata;
    kino_SegInfo_get_metadata_t get_metadata;
    kino_SegInfo_extract_metadata_t extract_metadata;
    kino_SegInfo_field_name_t field_name;
    kino_SegInfo_field_num_t field_num;
};

extern KINO_SEGINFO_VTABLE KINO_SEGINFO;

#ifdef KINO_USE_SHORT_NAMES
  #define SegInfo kino_SegInfo
  #define SEGINFO KINO_SEGINFO
  #define SegInfo_new kino_SegInfo_new
  #define SegInfo_destroy_t kino_SegInfo_destroy_t
  #define SegInfo_destroy kino_SegInfo_destroy
  #define SegInfo_add_field_t kino_SegInfo_add_field_t
  #define SegInfo_add_field kino_SegInfo_add_field
  #define SegInfo_add_metadata_t kino_SegInfo_add_metadata_t
  #define SegInfo_add_metadata kino_SegInfo_add_metadata
  #define SegInfo_get_metadata_t kino_SegInfo_get_metadata_t
  #define SegInfo_get_metadata kino_SegInfo_get_metadata
  #define SegInfo_extract_metadata_t kino_SegInfo_extract_metadata_t
  #define SegInfo_extract_metadata kino_SegInfo_extract_metadata
  #define SegInfo_field_name_t kino_SegInfo_field_name_t
  #define SegInfo_field_name kino_SegInfo_field_name
  #define SegInfo_field_num_t kino_SegInfo_field_num_t
  #define SegInfo_field_num kino_SegInfo_field_num
  #define SegInfo_Clone Kino_SegInfo_Clone
  #define SegInfo_Destroy Kino_SegInfo_Destroy
  #define SegInfo_Equals Kino_SegInfo_Equals
  #define SegInfo_Hash_Code Kino_SegInfo_Hash_Code
  #define SegInfo_Is_A Kino_SegInfo_Is_A
  #define SegInfo_To_String Kino_SegInfo_To_String
  #define SegInfo_Serialize Kino_SegInfo_Serialize
  #define SegInfo_Add_Field Kino_SegInfo_Add_Field
  #define SegInfo_Add_Metadata Kino_SegInfo_Add_Metadata
  #define SegInfo_Get_Metadata Kino_SegInfo_Get_Metadata
  #define SegInfo_Extract_Metadata Kino_SegInfo_Extract_Metadata
  #define SegInfo_Field_Name Kino_SegInfo_Field_Name
  #define SegInfo_Field_Num Kino_SegInfo_Field_Num
#endif /* KINO_USE_SHORT_NAMES */

#define KINO_SEGINFO_MEMBER_VARS \
    chy_u32_t  refcount; \
    struct kino_ByteBuf * seg_name; \
    chy_u32_t  doc_count; \
    struct kino_Hash * by_name; \
    struct kino_VArray * by_num; \
    struct kino_Hash * metadata

#ifdef KINO_WANT_SEGINFO_VTABLE
KINO_SEGINFO_VTABLE KINO_SEGINFO = {
    (KINO_OBJ_VTABLE*)&KINO_VIRTUALTABLE,
    1,
    (KINO_OBJ_VTABLE*)&KINO_OBJ,
    "KinoSearch::Index::SegInfo",
    (kino_Obj_clone_t)kino_Obj_clone,
    (kino_Obj_destroy_t)kino_SegInfo_destroy,
    (kino_Obj_equals_t)kino_Obj_equals,
    (kino_Obj_hash_code_t)kino_Obj_hash_code,
    (kino_Obj_is_a_t)kino_Obj_is_a,
    (kino_Obj_to_string_t)kino_Obj_to_string,
    (kino_Obj_serialize_t)kino_Obj_serialize,
    (kino_SegInfo_add_field_t)kino_SegInfo_add_field,
    (kino_SegInfo_add_metadata_t)kino_SegInfo_add_metadata,
    (kino_SegInfo_get_metadata_t)kino_SegInfo_get_metadata,
    (kino_SegInfo_extract_metadata_t)kino_SegInfo_extract_metadata,
    (kino_SegInfo_field_name_t)kino_SegInfo_field_name,
    (kino_SegInfo_field_num_t)kino_SegInfo_field_num
};
#endif /* KINO_WANT_SEGINFO_VTABLE */

#undef KINO_SEGINFO_BOILERPLATE


#endif /* R_KINO_SEGINFO */


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