00001
00002
00003
00004 #ifndef __MMDB_H__
00005 #define __MMDB_H__
00006 #include "copyright.h"
00007
00008 struct mmdb_t {
00009 void *base;
00010 void *ppos;
00011 void *end;
00012 int length;
00013 int fd;
00014 };
00015
00016 struct mmdb_t *mmdb_open_read(char *filename);
00017 struct mmdb_t *mmdb_open_write(char *filename);
00018 void mmdb_resize(struct mmdb_t *, int length);
00019 void mmdb_close(struct mmdb_t *);
00020 void *mmdb_read(struct mmdb_t *, void *dest, int length);
00021 void mmdb_write(struct mmdb_t *, void *data, int length);
00022
00023 void mmdb_write_opaque(struct mmdb_t *, void *data, int length);
00024 void mmdb_read_opaque(struct mmdb_t *, void *dest, int max);
00025 void mmdb_write_string(struct mmdb_t *, char *data);
00026 char *mmdb_read_string(struct mmdb_t *);
00027
00028 void mmdb_write_uint(struct mmdb_t *, unsigned int);
00029 unsigned int mmdb_read_uint(struct mmdb_t *);
00030
00031 #define mmdb_write_uint8(db,val) mmdb_write_uint32(db, (uint32_t)val);
00032 #define mmdb_read_uint8(db) (uint8_t)mmdb_read_uint32(db);
00033 #define mmdb_write_uint16(db,val) mmdb_write_uint32(db, (uint32_t)val);
00034 #define mmdb_read_uint16(db) (uint8_t)mmdb_read_uint32(db);
00035
00036 void mmdb_write_uint32(struct mmdb_t *, uint32_t);
00037 uint32_t mmdb_read_uint32(struct mmdb_t *);
00038 void mmdb_write_uint64(struct mmdb_t *, uint64_t);
00039 uint64_t mmdb_read_uint64(struct mmdb_t *);
00040
00041 void mmdb_write_single(struct mmdb_t *, float);
00042 float mmdb_read_single(struct mmdb_t *);
00043 void mmdb_write_double(struct mmdb_t *, double);
00044 double mmdb_read_double(struct mmdb_t *);
00045
00046
00047 #endif