/** @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_FOLDER
#define R_KINO_FOLDER 1

#include "KinoSearch/Store/Folder.h"

#define KINO_FOLDER_BOILERPLATE

typedef struct kino_OutStream*
(*kino_Folder_open_outstream_t)(kino_Folder *self,  
                           const struct kino_ByteBuf *filename);

typedef struct kino_OutStream*
(*kino_Folder_safe_open_outstream_t)(kino_Folder *self,  
                                const struct kino_ByteBuf *filename);

typedef struct kino_InStream*
(*kino_Folder_open_instream_t)(kino_Folder *self,  
                          const struct kino_ByteBuf *filename);

typedef struct kino_VArray*
(*kino_Folder_list_t)(kino_Folder *self);

typedef chy_bool_t
(*kino_Folder_file_exists_t)(kino_Folder *self, 
                        const struct kino_ByteBuf *filename);

typedef void
(*kino_Folder_rename_file_t)(kino_Folder *self, 
                        const struct kino_ByteBuf *from,
                        const struct kino_ByteBuf *to);

typedef void
(*kino_Folder_delete_file_t)(kino_Folder *self, 
                        const struct kino_ByteBuf *filename);

typedef struct kino_ByteBuf*
(*kino_Folder_slurp_file_t)(kino_Folder *self, 
                       const struct kino_ByteBuf *filename);

typedef struct kino_ByteBuf*
(*kino_Folder_latest_gen_t)(kino_Folder *self, 
                       const struct kino_ByteBuf *base, 
                       const struct kino_ByteBuf *ext);

typedef void
(*kino_Folder_close_f_t)(kino_Folder *self);

#define Kino_Folder_Clone(self) \
    (self)->_->clone((kino_Obj*)self)

#define Kino_Folder_Destroy(self) \
    (self)->_->destroy((kino_Obj*)self)

#define Kino_Folder_Equals(self, other) \
    (self)->_->equals((kino_Obj*)self, other)

#define Kino_Folder_Hash_Code(self) \
    (self)->_->hash_code((kino_Obj*)self)

#define Kino_Folder_Is_A(self, target_vtable) \
    (self)->_->is_a((kino_Obj*)self, target_vtable)

#define Kino_Folder_To_String(self) \
    (self)->_->to_string((kino_Obj*)self)

#define Kino_Folder_Serialize(self, target) \
    (self)->_->serialize((kino_Obj*)self, target)

#define Kino_Folder_Open_OutStream(self, filename) \
    (self)->_->open_outstream((kino_Folder*)self, filename)

#define Kino_Folder_Safe_Open_OutStream(self, filename) \
    (self)->_->safe_open_outstream((kino_Folder*)self, filename)

#define Kino_Folder_Open_InStream(self, filename) \
    (self)->_->open_instream((kino_Folder*)self, filename)

#define Kino_Folder_List(self) \
    (self)->_->list((kino_Folder*)self)

#define Kino_Folder_File_Exists(self, filename) \
    (self)->_->file_exists((kino_Folder*)self, filename)

#define Kino_Folder_Rename_File(self, from, to) \
    (self)->_->rename_file((kino_Folder*)self, from, to)

#define Kino_Folder_Delete_File(self, filename) \
    (self)->_->delete_file((kino_Folder*)self, filename)

#define Kino_Folder_Slurp_File(self, filename) \
    (self)->_->slurp_file((kino_Folder*)self, filename)

#define Kino_Folder_Latest_Gen(self, base, ext) \
    (self)->_->latest_gen((kino_Folder*)self, base, ext)

#define Kino_Folder_Close_F(self) \
    (self)->_->close_f((kino_Folder*)self)

struct KINO_FOLDER_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_Folder_open_outstream_t open_outstream;
    kino_Folder_safe_open_outstream_t safe_open_outstream;
    kino_Folder_open_instream_t open_instream;
    kino_Folder_list_t list;
    kino_Folder_file_exists_t file_exists;
    kino_Folder_rename_file_t rename_file;
    kino_Folder_delete_file_t delete_file;
    kino_Folder_slurp_file_t slurp_file;
    kino_Folder_latest_gen_t latest_gen;
    kino_Folder_close_f_t close_f;
};

extern KINO_FOLDER_VTABLE KINO_FOLDER;

#ifdef KINO_USE_SHORT_NAMES
  #define Folder kino_Folder
  #define FOLDER KINO_FOLDER
  #define Folder_open_outstream_t kino_Folder_open_outstream_t
  #define Folder_open_outstream kino_Folder_open_outstream
  #define Folder_safe_open_outstream_t kino_Folder_safe_open_outstream_t
  #define Folder_safe_open_outstream kino_Folder_safe_open_outstream
  #define Folder_open_instream_t kino_Folder_open_instream_t
  #define Folder_open_instream kino_Folder_open_instream
  #define Folder_list_t kino_Folder_list_t
  #define Folder_list kino_Folder_list
  #define Folder_file_exists_t kino_Folder_file_exists_t
  #define Folder_file_exists kino_Folder_file_exists
  #define Folder_rename_file_t kino_Folder_rename_file_t
  #define Folder_rename_file kino_Folder_rename_file
  #define Folder_delete_file_t kino_Folder_delete_file_t
  #define Folder_delete_file kino_Folder_delete_file
  #define Folder_slurp_file_t kino_Folder_slurp_file_t
  #define Folder_slurp_file kino_Folder_slurp_file
  #define Folder_latest_gen_t kino_Folder_latest_gen_t
  #define Folder_latest_gen kino_Folder_latest_gen
  #define Folder_close_f_t kino_Folder_close_f_t
  #define Folder_close_f kino_Folder_close_f
  #define Folder_Clone Kino_Folder_Clone
  #define Folder_Destroy Kino_Folder_Destroy
  #define Folder_Equals Kino_Folder_Equals
  #define Folder_Hash_Code Kino_Folder_Hash_Code
  #define Folder_Is_A Kino_Folder_Is_A
  #define Folder_To_String Kino_Folder_To_String
  #define Folder_Serialize Kino_Folder_Serialize
  #define Folder_Open_OutStream Kino_Folder_Open_OutStream
  #define Folder_Safe_Open_OutStream Kino_Folder_Safe_Open_OutStream
  #define Folder_Open_InStream Kino_Folder_Open_InStream
  #define Folder_List Kino_Folder_List
  #define Folder_File_Exists Kino_Folder_File_Exists
  #define Folder_Rename_File Kino_Folder_Rename_File
  #define Folder_Delete_File Kino_Folder_Delete_File
  #define Folder_Slurp_File Kino_Folder_Slurp_File
  #define Folder_Latest_Gen Kino_Folder_Latest_Gen
  #define Folder_Close_F Kino_Folder_Close_F
#endif /* KINO_USE_SHORT_NAMES */

#define KINO_FOLDER_MEMBER_VARS \
    chy_u32_t  refcount; \
    struct kino_ByteBuf * path

#ifdef KINO_WANT_FOLDER_VTABLE
KINO_FOLDER_VTABLE KINO_FOLDER = {
    (KINO_OBJ_VTABLE*)&KINO_VIRTUALTABLE,
    1,
    (KINO_OBJ_VTABLE*)&KINO_OBJ,
    "KinoSearch::Store::Folder",
    (kino_Obj_clone_t)kino_Obj_clone,
    (kino_Obj_destroy_t)kino_Obj_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_Folder_open_outstream_t)kino_Folder_open_outstream,
    (kino_Folder_safe_open_outstream_t)kino_Folder_safe_open_outstream,
    (kino_Folder_open_instream_t)kino_Folder_open_instream,
    (kino_Folder_list_t)kino_Folder_list,
    (kino_Folder_file_exists_t)kino_Folder_file_exists,
    (kino_Folder_rename_file_t)kino_Folder_rename_file,
    (kino_Folder_delete_file_t)kino_Folder_delete_file,
    (kino_Folder_slurp_file_t)kino_Folder_slurp_file,
    (kino_Folder_latest_gen_t)kino_Folder_latest_gen,
    (kino_Folder_close_f_t)kino_Folder_close_f
};
#endif /* KINO_WANT_FOLDER_VTABLE */

#undef KINO_FOLDER_BOILERPLATE


#endif /* R_KINO_FOLDER */


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