#ifndef H_KINO_INDEXFILENAMES
#define H_KINO_INDEXFILENAMES 1
#include "charmony.h"
struct kino_ByteBuf;
struct kino_VArray;
/* Format constants for each sub-section of the InvIndex file format. A
* reader should be able to read anything up to and including the current
* format.
*/
#define KINO_IXINFOS_FORMAT 1
#define KINO_SEG_INFOS_FORMAT 1
#define KINO_COMPOUND_FILE_FORMAT 1
#define KINO_DOC_STORAGE_FORMAT 1
#define KINO_LEXICON_FORMAT 1
#define KINO_POSTING_LIST_FORMAT 1
#define KINO_DELDOCS_FORMAT 1
/* Constants related to locking.
*/
#define KINO_READ_LOCK_TIMEOUT 1000
#define KINO_WRITE_LOCK_NAME "write"
#define KINO_WRITE_LOCK_TIMEOUT 1000
#define KINO_COMMIT_LOCK_NAME "commit"
#define KINO_COMMIT_LOCK_TIMEOUT 5000
#ifdef KINO_USE_SHORT_NAMES
#define IXINFOS_FORMAT KINO_IXINFOS_FORMAT
#define SEG_INFOS_FORMAT KINO_SEG_INFOS_FORMAT
#define COMPOUND_FILE_FORMAT KINO_COMPOUND_FILE_FORMAT
#define DOC_STORAGE_FORMAT KINO_DOC_STORAGE_FORMAT
#define LEXICON_FORMAT KINO_LEXICON_FORMAT
#define POSTING_LIST_FORMAT KINO_POSTING_LIST_FORMAT
#define DELDOCS_FORMAT KINO_DELDOCS_FORMAT
#endif
/* Choose the latest generation filename matching [base] and [ext] from
* amongst the supplied list of files.
*/
struct kino_ByteBuf*
kino_IxFileNames_latest_gen(struct kino_VArray *list,
const struct kino_ByteBuf *base,
const struct kino_ByteBuf *ext);
/* Create a filename by encoding [gen] as base 36, then concatenating [base],
* [gen], and [ext].
*/
struct kino_ByteBuf*
kino_IxFileNames_filename_from_gen(const struct kino_ByteBuf *base,
chy_i32_t gen,
const struct kino_ByteBuf *ext);
#ifdef KINO_USE_SHORT_NAMES
#define IxFileNames_latest_gen kino_IxFileNames_latest_gen
#define IxFileNames_filename_from_gen kino_IxFileNames_filename_from_gen
#endif
#endif /* H_KINO_INDEXFILENAMES */
/* Copyright 2006-2007 Marvin Humphrey
*
* This program is free software; you can redistribute it and/or modify
* under the same terms as Perl itself.
*/