/*
* db_rw.h
*/
#ifndef __MMDB_H__
#define __MMDB_H__
#include "copyright.h"
struct mmdb_t {
void *base;
void *ppos;
void *end;
int length;
int fd;
};
struct mmdb_t *mmdb_open_read(char *filename);
struct mmdb_t *mmdb_open_write(char *filename);
void mmdb_resize(struct mmdb_t *, int length);
void mmdb_close(struct mmdb_t *);
void *mmdb_read(struct mmdb_t *, void *dest, int length);
void mmdb_write(struct mmdb_t *, void *data, int length);
void mmdb_write_opaque(struct mmdb_t *, void *data, int length);
void mmdb_read_opaque(struct mmdb_t *, void *dest, int max);
void mmdb_write_string(struct mmdb_t *, char *data);
char *mmdb_read_string(struct mmdb_t *);
void mmdb_write_uint(struct mmdb_t *, unsigned int); /* Deprecated */
unsigned int mmdb_read_uint(struct mmdb_t *); /* Deprecated */
#define mmdb_write_uint8(db,val) mmdb_write_uint32(db, (uint32_t)val);
#define mmdb_read_uint8(db) (uint8_t)mmdb_read_uint32(db);
#define mmdb_write_uint16(db,val) mmdb_write_uint32(db, (uint32_t)val);
#define mmdb_read_uint16(db) (uint8_t)mmdb_read_uint32(db);
void mmdb_write_uint32(struct mmdb_t *, uint32_t);
uint32_t mmdb_read_uint32(struct mmdb_t *);
void mmdb_write_uint64(struct mmdb_t *, uint64_t);
uint64_t mmdb_read_uint64(struct mmdb_t *);
void mmdb_write_single(struct mmdb_t *, float);
float mmdb_read_single(struct mmdb_t *);
void mmdb_write_double(struct mmdb_t *, double);
double mmdb_read_double(struct mmdb_t *);
#endif