00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025 #ifndef ZSTR_H
00026 #define ZSTR_H
00027
00028 #include <filemgr.h>
00029
00030 #include <defs.h>
00031
00032 class SWCompress;
00033 class EntriesBlock;
00034
00035 class SWDLLEXPORT zStr {
00036
00037 private:
00038 static int instance;
00039 EntriesBlock *cacheBlock;
00040 long cacheBlockIndex;
00041 bool cacheDirty;
00042 char *path;
00043 long lastoff;
00044 long blockCount;
00045 SWCompress *compressor;
00046
00047 protected:
00048 FileDesc *idxfd;
00049 FileDesc *datfd;
00050 FileDesc *zdxfd;
00051 FileDesc *zdtfd;
00052 static const int IDXENTRYSIZE;
00053 static const int ZDXENTRYSIZE;
00054
00055 void getCompressedText(long block, long entry, char **buf);
00056 void flushCache();
00057 void prepText(char *buf);
00058 void getKeyFromDatOffset(long ioffset, char **buf);
00059 void getKeyFromIdxOffset(long ioffset, char **buf);
00060
00061 public:
00062 char nl;
00063 zStr(const char *ipath, int fileMode = -1, long blockCount = 100, SWCompress *icomp = 0);
00064 virtual ~zStr();
00065 signed char findKeyIndex(const char *ikey, long *idxoff, long away = 0);
00066 void getText(long index, char **idxbuf, char **buf);
00067 void setText(const char *ikey, const char *buf, long len = 0);
00068 void linkEntry(const char *destkey, const char *srckey);
00069 static signed char createModule (const char *path);
00070 };
00071
00072 #endif