/** @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_INSTREAM
#define R_KINO_INSTREAM 1

#include "KinoSearch/Store/InStream.h"

#define KINO_INSTREAM_BOILERPLATE

typedef kino_InStream*
(*kino_InStream_clone_t)(kino_InStream *self);

typedef void
(*kino_InStream_destroy_t)(kino_InStream *self);

typedef void
(*kino_InStream_sseek_t)(kino_InStream *self, chy_u64_t target);

typedef chy_u64_t
(*kino_InStream_stell_t)(kino_InStream *self);

typedef char
(*kino_InStream_read_byte_t)(kino_InStream *self);

typedef void
(*kino_InStream_read_bytes_t)(kino_InStream *self, char *buf, size_t len);

typedef void
(*kino_InStream_read_byteso_t)(kino_InStream *self, char *buf, size_t start, 
                          size_t len);

typedef chy_u32_t
(*kino_InStream_read_int_t)(kino_InStream *self);

typedef chy_u64_t
(*kino_InStream_read_long_t)(kino_InStream *self);

typedef chy_u32_t
(*kino_InStream_read_vint_t)(kino_InStream *self);

typedef chy_u64_t
(*kino_InStream_read_vlong_t)(kino_InStream *self);

typedef int
(*kino_InStream_read_raw_vlong_t)(kino_InStream *self, char *buf);

typedef chy_u64_t
(*kino_InStream_slength_t)(kino_InStream *self);

typedef kino_InStream*
(*kino_InStream_reopen_t)(kino_InStream *self, 
                     const struct kino_ByteBuf *filename, 
                     chy_u64_t offset, chy_u64_t len);

typedef void
(*kino_InStream_sclose_t)(kino_InStream *self);

#define Kino_InStream_Clone(self) \
    kino_InStream_clone((kino_InStream*)self)

#define Kino_InStream_Destroy(self) \
    kino_InStream_destroy((kino_InStream*)self)

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

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

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

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

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

#define Kino_InStream_SSeek(self, target) \
    kino_InStream_sseek((kino_InStream*)self, target)

#define Kino_InStream_STell(self) \
    kino_InStream_stell((kino_InStream*)self)

#define Kino_InStream_Read_Byte(self) \
    kino_InStream_read_byte((kino_InStream*)self)

#define Kino_InStream_Read_Bytes(self, buf, len) \
    kino_InStream_read_bytes((kino_InStream*)self, buf, len)

#define Kino_InStream_Read_BytesO(self, buf, start, len) \
    kino_InStream_read_byteso((kino_InStream*)self, buf, start, len)

#define Kino_InStream_Read_Int(self) \
    kino_InStream_read_int((kino_InStream*)self)

#define Kino_InStream_Read_Long(self) \
    kino_InStream_read_long((kino_InStream*)self)

#define Kino_InStream_Read_VInt(self) \
    kino_InStream_read_vint((kino_InStream*)self)

#define Kino_InStream_Read_VLong(self) \
    kino_InStream_read_vlong((kino_InStream*)self)

#define Kino_InStream_Read_Raw_VLong(self, buf) \
    kino_InStream_read_raw_vlong((kino_InStream*)self, buf)

#define Kino_InStream_SLength(self) \
    kino_InStream_slength((kino_InStream*)self)

#define Kino_InStream_Reopen(self, filename, offset, len) \
    kino_InStream_reopen((kino_InStream*)self, filename, offset, len)

#define Kino_InStream_SClose(self) \
    kino_InStream_sclose((kino_InStream*)self)

struct KINO_INSTREAM_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_InStream_sseek_t sseek;
    kino_InStream_stell_t stell;
    kino_InStream_read_byte_t read_byte;
    kino_InStream_read_bytes_t read_bytes;
    kino_InStream_read_byteso_t read_byteso;
    kino_InStream_read_int_t read_int;
    kino_InStream_read_long_t read_long;
    kino_InStream_read_vint_t read_vint;
    kino_InStream_read_vlong_t read_vlong;
    kino_InStream_read_raw_vlong_t read_raw_vlong;
    kino_InStream_slength_t slength;
    kino_InStream_reopen_t reopen;
    kino_InStream_sclose_t sclose;
};

extern KINO_INSTREAM_VTABLE KINO_INSTREAM;

#ifdef KINO_USE_SHORT_NAMES
  #define InStream kino_InStream
  #define INSTREAM KINO_INSTREAM
  #define InStream_new kino_InStream_new
  #define InStream_clone_t kino_InStream_clone_t
  #define InStream_clone kino_InStream_clone
  #define InStream_destroy_t kino_InStream_destroy_t
  #define InStream_destroy kino_InStream_destroy
  #define InStream_sseek_t kino_InStream_sseek_t
  #define InStream_sseek kino_InStream_sseek
  #define InStream_stell_t kino_InStream_stell_t
  #define InStream_stell kino_InStream_stell
  #define InStream_read_byte_t kino_InStream_read_byte_t
  #define InStream_read_byte kino_InStream_read_byte
  #define InStream_read_bytes_t kino_InStream_read_bytes_t
  #define InStream_read_bytes kino_InStream_read_bytes
  #define InStream_read_byteso_t kino_InStream_read_byteso_t
  #define InStream_read_byteso kino_InStream_read_byteso
  #define InStream_read_int_t kino_InStream_read_int_t
  #define InStream_read_int kino_InStream_read_int
  #define InStream_read_long_t kino_InStream_read_long_t
  #define InStream_read_long kino_InStream_read_long
  #define InStream_read_vint_t kino_InStream_read_vint_t
  #define InStream_read_vint kino_InStream_read_vint
  #define InStream_read_vlong_t kino_InStream_read_vlong_t
  #define InStream_read_vlong kino_InStream_read_vlong
  #define InStream_read_raw_vlong_t kino_InStream_read_raw_vlong_t
  #define InStream_read_raw_vlong kino_InStream_read_raw_vlong
  #define InStream_slength_t kino_InStream_slength_t
  #define InStream_slength kino_InStream_slength
  #define InStream_reopen_t kino_InStream_reopen_t
  #define InStream_reopen kino_InStream_reopen
  #define InStream_sclose_t kino_InStream_sclose_t
  #define InStream_sclose kino_InStream_sclose
  #define InStream_Clone Kino_InStream_Clone
  #define InStream_Destroy Kino_InStream_Destroy
  #define InStream_Equals Kino_InStream_Equals
  #define InStream_Hash_Code Kino_InStream_Hash_Code
  #define InStream_Is_A Kino_InStream_Is_A
  #define InStream_To_String Kino_InStream_To_String
  #define InStream_Serialize Kino_InStream_Serialize
  #define InStream_SSeek Kino_InStream_SSeek
  #define InStream_STell Kino_InStream_STell
  #define InStream_Read_Byte Kino_InStream_Read_Byte
  #define InStream_Read_Bytes Kino_InStream_Read_Bytes
  #define InStream_Read_BytesO Kino_InStream_Read_BytesO
  #define InStream_Read_Int Kino_InStream_Read_Int
  #define InStream_Read_Long Kino_InStream_Read_Long
  #define InStream_Read_VInt Kino_InStream_Read_VInt
  #define InStream_Read_VLong Kino_InStream_Read_VLong
  #define InStream_Read_Raw_VLong Kino_InStream_Read_Raw_VLong
  #define InStream_SLength Kino_InStream_SLength
  #define InStream_Reopen Kino_InStream_Reopen
  #define InStream_SClose Kino_InStream_SClose
#endif /* KINO_USE_SHORT_NAMES */

#define KINO_INSTREAM_MEMBER_VARS \
    chy_u32_t  refcount; \
    chy_u64_t  offset; \
    chy_u64_t  len; \
    char * buf; \
    chy_u64_t  buf_start; \
    chy_u32_t  buf_len; \
    chy_u32_t  buf_pos; \
    struct kino_ByteBuf * filename; \
    struct kino_FileDes * file_des

#ifdef KINO_WANT_INSTREAM_VTABLE
KINO_INSTREAM_VTABLE KINO_INSTREAM = {
    (KINO_OBJ_VTABLE*)&KINO_VIRTUALTABLE,
    1,
    (KINO_OBJ_VTABLE*)&KINO_OBJ,
    "KinoSearch::Store::InStream",
    (kino_Obj_clone_t)kino_InStream_clone,
    (kino_Obj_destroy_t)kino_InStream_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_InStream_sseek_t)kino_InStream_sseek,
    (kino_InStream_stell_t)kino_InStream_stell,
    (kino_InStream_read_byte_t)kino_InStream_read_byte,
    (kino_InStream_read_bytes_t)kino_InStream_read_bytes,
    (kino_InStream_read_byteso_t)kino_InStream_read_byteso,
    (kino_InStream_read_int_t)kino_InStream_read_int,
    (kino_InStream_read_long_t)kino_InStream_read_long,
    (kino_InStream_read_vint_t)kino_InStream_read_vint,
    (kino_InStream_read_vlong_t)kino_InStream_read_vlong,
    (kino_InStream_read_raw_vlong_t)kino_InStream_read_raw_vlong,
    (kino_InStream_slength_t)kino_InStream_slength,
    (kino_InStream_reopen_t)kino_InStream_reopen,
    (kino_InStream_sclose_t)kino_InStream_sclose
};
#endif /* KINO_WANT_INSTREAM_VTABLE */

#undef KINO_INSTREAM_BOILERPLATE


#endif /* R_KINO_INSTREAM */


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