mirror of
https://github.com/ZDoom/gzdoom.git
synced 2024-11-30 07:41:22 +00:00
db86385cf6
The only reason this even existed was that ZDoom's original VC projects used __fastcall. The CMake generated project do not, they stick to __cdecl. Since no performance gain can be seen by using __fastcall the best course of action is to just remove all traces of it from the source and forget that it ever existed.
50 lines
No EOL
1.4 KiB
C++
50 lines
No EOL
1.4 KiB
C++
#include "files.h"
|
|
#include "doomerrors.h"
|
|
|
|
class FZipExploder
|
|
{
|
|
unsigned int Hold, Bits;
|
|
FileReader *In;
|
|
unsigned int InLeft;
|
|
|
|
/****************************************************************
|
|
Shannon-Fano tree structures, variables and related routines
|
|
****************************************************************/
|
|
|
|
struct HuffNode
|
|
{
|
|
unsigned char Value;
|
|
unsigned char Length;
|
|
unsigned short ChildTable;
|
|
};
|
|
|
|
struct TableBuilder
|
|
{
|
|
unsigned char Value;
|
|
unsigned char Length;
|
|
unsigned short Code;
|
|
};
|
|
|
|
TArray<HuffNode> LiteralDecoder;
|
|
TArray<HuffNode> DistanceDecoder;
|
|
TArray<HuffNode> LengthDecoder;
|
|
unsigned char ReadBuf[256];
|
|
unsigned int bs, be;
|
|
|
|
static int buildercmp(const void *a, const void *b);
|
|
void InsertCode(TArray<HuffNode> &decoder, unsigned int pos, int bits, unsigned short code, int len, unsigned char value);
|
|
unsigned int InitTable(TArray<HuffNode> &decoder, int numspots);
|
|
int BuildDecoder(TArray<HuffNode> &decoder, TableBuilder *values, int numvals);
|
|
int DecodeSFValue(const TArray<HuffNode> ¤tTree);
|
|
int DecodeSF(TArray<HuffNode> &decoder, int numvals);
|
|
public:
|
|
int Explode(unsigned char *out, unsigned int outsize, FileReader *in, unsigned int insize, int flags);
|
|
};
|
|
|
|
class CExplosionError : CRecoverableError
|
|
{
|
|
public:
|
|
CExplosionError(const char *message) : CRecoverableError(message) {}
|
|
};
|
|
|
|
int ShrinkLoop(unsigned char *out, unsigned int outsize, FileReader *in, unsigned int insize); |