Windows NT 4.0 source code leak
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

98 lines
1.7 KiB

/************************************************************************
* *
* HALL.H *
* *
* Copyright (C) Microsoft Corporation 1994 *
* All Rights reserved. *
* *
************************************************************************/
// HALL.h -- CCompressTable class definition
#ifndef __HALL_H__
#define __HALL_H__
typedef void *PVOID;
#define NDX_LOW_CLASS 0x00
#define NDX_MEDIUM_CLASS 0x01
#define LITERAL_CLASS 0x02
#define SPACES_CLASS 0x03
#define NULL_CLASS 0x04
#define SPACE_TOKEN_LIMIT 17
#define SYMBOL_CHAR 1
typedef struct _ENCODE // JOHN
{
BYTE fClass;
BYTE abCode[3];
} ENCODE;
typedef ENCODE *PENCODE;
typedef struct _WEIGHT // JOHN
{
BOOL bSymbol;
int cb;
PSTR pb;
} WEIGHT;
typedef WEIGHT FAR *PWEIGHTS;
typedef struct _JIndexHdr
{
DWORD cBits : 5;
DWORD cCount : 19;
DWORD Magic : 8;
} JBITHDR;
#define ENCODE_LIMIT 1024
#ifdef _DEBUG
extern int iNumLiterals;
extern int iNumLiteralBytes;
#endif
class CCompressTable
{
public:
static CCompressTable* STDCALL NewCompressTable(PBYTE pbImage, LONG cbImage, PBYTE pbIndex, LONG cbIndex);
~CCompressTable();
int STDCALL DeCompressString(PSTR pbComp, PSTR pbDecomp, int cbComp); // JOHN
private:
PWEIGHTS m_pWeights; // JOHN
PBYTE m_pTableImage;
};
#define BITS_AVAIL (sizeof(DWORD) * 8)
class CJCode
{
public:
CJCode(int base, int cCount, PSTR pv);
int GetNextDelta(void);
BOOL IsSymbol();
void NextFlagBits();
private:
int GetBits(void);
DWORD *m_pData;
DWORD *m_pDataCurrent;
int m_cCount;
int m_cCurrent;
int m_base;
DWORD m_fBasisMask;
int m_iLeft;
};
#endif __HALL_H__