#ifndef LIBSOLV_REPOPAGE_H
#define LIBSOLV_REPOPAGE_H
#define REPOPAGE_BLOBBITS 15
#define REPOPAGE_BLOBSIZE (1 << REPOPAGE_BLOBBITS)
typedef struct s_Attrblobpage
{
unsigned int page_offset;
unsigned int page_size;
} Attrblobpage;
typedef struct s_Repopagestore {
int pagefd;
long file_offset;
unsigned char *blob_store;
unsigned int num_pages;
unsigned int *mapped_at;
Attrblobpage *file_pages;
unsigned int *mapped;
unsigned int nmapped;
unsigned int rr_counter;
} Repopagestore;
#ifdef __cplusplus
extern "C" {
#endif
void repopagestore_init(Repopagestore *store);
void repopagestore_free(Repopagestore *store);
unsigned char *repopagestore_load_page_range(Repopagestore *store, unsigned int pstart, unsigned int pend);
unsigned int repopagestore_compress_page(unsigned char *page, unsigned int len, unsigned char *cpage, unsigned int max);
unsigned int repopagestore_decompress_page(const unsigned char *cpage, unsigned int len, unsigned char *page, unsigned int max);
int repopagestore_read_or_setup_pages(Repopagestore *store, FILE *fp, unsigned int pagesz, unsigned int blobsz);
void repopagestore_disable_paging(Repopagestore *store);
#ifdef __cplusplus
}
#endif
#endif