Huffman to trash
git-svn-id: svn://db.shs.com.ru/pip@107 12ceb7fc-bf1f-11e4-8940-5bc7170c53b5
This commit is contained in:
@@ -106,39 +106,6 @@ const char PIByteArray::base64InvTable[256] = {
|
||||
#pragma pack(pop)
|
||||
|
||||
|
||||
int PIHuffman::nodeCompare(const void * f, const void * s) {
|
||||
return (reinterpret_cast<node * >(const_cast<void * >(s))->freq -
|
||||
reinterpret_cast<node * >(const_cast<void * >(f))->freq);
|
||||
}
|
||||
|
||||
|
||||
PIDeque<uchar> PIHuffman::compress(const PIDeque<uchar> & src) {
|
||||
calcFrequencies(src);
|
||||
return src;
|
||||
}
|
||||
|
||||
|
||||
void PIHuffman::calcFrequencies(const PIDeque<uchar> & src) {
|
||||
nodes.resize(256);
|
||||
for (int i = 0; i < 256; ++i) {
|
||||
nodes[i].parent = nodes[i].right = nodes[i].left = 0;
|
||||
nodes[i].freq = 0;
|
||||
nodes[i].word.resize(1);
|
||||
nodes[i].word[0] = static_cast<uchar>(i);
|
||||
}
|
||||
for (int i = 0; i < src.size_s(); ++i)
|
||||
nodes[src[i]].freq++;
|
||||
std::qsort(nodes.data(), 256, sizeof(node), nodeCompare);
|
||||
for (int i = 255; i >= 0; --i)
|
||||
if (nodes[i].freq > 0 && i < 255)
|
||||
{nodes.remove(i + 1, 255 - i); break;}
|
||||
for (int i = 0; i < nodes.size_s(); ++i)
|
||||
std::cout << std::string((char*)nodes[i].word.data(), 1) << ": " << nodes[i].freq << std::endl;
|
||||
}
|
||||
|
||||
|
||||
PIHuffman PIByteArray::huffman;
|
||||
|
||||
PIByteArray & PIByteArray::convertToBase64() {
|
||||
base64HelpStruct hs;
|
||||
PIByteArray t;
|
||||
|
||||
Reference in New Issue
Block a user