55 lines
1.6 KiB
C
55 lines
1.6 KiB
C
/**********************************************************************
|
|
*
|
|
* Text Compression Public Header File
|
|
*
|
|
**********************************************************************/
|
|
|
|
// Phrase table information, used for compression and decompression.
|
|
|
|
// Size of header information in PHR struct below.
|
|
|
|
#define CB_PHR_HEADER (sizeof(INT16) + sizeof(WORD) + sizeof(DWORD))
|
|
|
|
// 3.0 ver file does not have the cbPhrases field & is not zeck compressed:
|
|
|
|
#define CB_PHR_HEADER3_0 (sizeof(INT16) + sizeof(WORD))
|
|
|
|
typedef struct {
|
|
/*
|
|
* These first three fields are stored in the filesystem. Their length
|
|
* is represented by CB_PHR_HEADER above.
|
|
*/
|
|
|
|
INT16 cPhrases; // Number of phrases in table.
|
|
WORD wBaseToken; // Base token to map to.
|
|
DWORD cbPhrases; // uncompressed size of phrases (not including
|
|
// offset table or header).
|
|
|
|
/*
|
|
* These fields are fixed up when the phrase table is allocated or
|
|
* reloaded.
|
|
*/
|
|
|
|
HFS hfs; // Filesystem handle to restore phrases from.
|
|
|
|
// REVIEW: hrgcb is obsolete, and should be removed once forage
|
|
// code gets rid of its dependency on this
|
|
|
|
GH hrgcb; /* Handle to the array of offsets to phrases,
|
|
* and to the phrases themselves. The array is
|
|
* of size cPhrases+1, so that the length of any
|
|
* phrase is easily computed. Offsets are
|
|
* relative to the start of this array.
|
|
*/
|
|
INT16* qcb; // Pointer to array, must be 16 bits
|
|
} PHR, * QPHR;
|
|
|
|
|
|
// Returned on OOM in HphrLoadTableHfs
|
|
|
|
#define hphrOOM ((HPHR) -1)
|
|
|
|
RC_TYPE STDCALL RcCreatePhraseTableFm(FM, HFS, UINT);
|
|
QPHR STDCALL HphrLoadTableHfs(HFS, int);
|
|
UINT STDCALL CbCompressQch(PSTR, QPHR);
|