--- /dev/null
+#ifndef __DICT_ZIP_LIB_H__
+#define __DICT_ZIP_LIB_H__
+
+#include <ctime>
+#include <string>
+#include <zlib.h>
+
+#include "mapfile.hpp"
+
+
+#define DICT_CACHE_SIZE 5
+
+struct dictCache
+{
+ int chunk;
+ char *inBuffer;
+ int stamp;
+ int count;
+};
+
+struct dictData
+{
+ dictData()
+ {}
+ bool open(const std::string& filename, int computeCRC);
+ void close();
+ void read(char *buffer, unsigned long start, unsigned long size);
+ ~dictData()
+ {
+ close();
+ }
+private:
+ const char *start; /* start of mmap'd area */
+ const char *end; /* end of mmap'd area */
+ unsigned long size; /* size of mmap */
+
+ int type;
+ z_stream zStream;
+ int initialized;
+
+ int headerLength;
+ int method;
+ int flags;
+ time_t mtime;
+ int extraFlags;
+ int os;
+ int version;
+ int chunkLength;
+ int chunkCount;
+ int *chunks;
+ unsigned long *offsets; /* Sum-scan of chunks. */
+ std::string origFilename;
+ std::string comment;
+ unsigned long crc;
+ unsigned long length;
+ unsigned long compressedLength;
+ dictCache cache[DICT_CACHE_SIZE];
+ MapFile mapfile;
+
+ int read_header(const std::string &filename, int computeCRC);
+};
+
+#endif//!__DICT_ZIP_LIB_H__