#ifndef HUFF_H #define HUFF_H union HuffNode; struct HuffData { unsigned value:31; unsigned isLeaf:1; }; struct HuffLeaf { struct HuffData header; unsigned char key; }; struct HuffBranch { struct HuffData header; union HuffNode * left; union HuffNode * right; }; union HuffNode { struct HuffData header; struct HuffLeaf leaf; struct HuffBranch branch; }; typedef union HuffNode HuffNode_t; struct BitEncoding { unsigned long long nbits:6; unsigned long long bitstring:58; }; unsigned char * HuffCompress(unsigned char * buffer, int srcSize, int * compressedSize_p, int bitDepth); unsigned char * HuffDecompress(unsigned char * buffer, int srcSize, int * uncompressedSize_p); #endif //HUFF_H