54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
|
tree = tree->leaves[bit];
}
tree->value = value;
}
OFHuffmanTree
OFHuffmanTreeNew(uint8_t lengths[], uint16_t count)
{
OFHuffmanTree tree;
uint16_t *lengthCount = NULL;
uint16_t code, maxCode = 0, *nextCode = NULL;
uint_fast8_t maxBit = 0;
@try {
|
|
|
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
|
tree = tree->leaves[bit];
}
tree->value = value;
}
OFHuffmanTree
_OFHuffmanTreeNew(uint8_t lengths[], uint16_t count)
{
OFHuffmanTree tree;
uint16_t *lengthCount = NULL;
uint16_t code, maxCode = 0, *nextCode = NULL;
uint_fast8_t maxBit = 0;
@try {
|
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
|
OFFreeMemory(nextCode);
}
return tree;
}
OFHuffmanTree
OFHuffmanTreeNewSingle(uint16_t value)
{
OFHuffmanTree tree = newTree();
tree->value = value;
return tree;
}
void
OFHuffmanTreeFree(OFHuffmanTree tree)
{
for (uint_fast8_t i = 0; i < 2; i++)
if OF_LIKELY (tree->leaves[i] != NULL)
OFHuffmanTreeFree(tree->leaves[i]);
OFFreeMemory(tree);
}
|
|
|
|
|
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
|
OFFreeMemory(nextCode);
}
return tree;
}
OFHuffmanTree
_OFHuffmanTreeNewSingle(uint16_t value)
{
OFHuffmanTree tree = newTree();
tree->value = value;
return tree;
}
void
_OFHuffmanTreeFree(OFHuffmanTree tree)
{
for (uint_fast8_t i = 0; i < 2; i++)
if OF_LIKELY (tree->leaves[i] != NULL)
_OFHuffmanTreeFree(tree->leaves[i]);
OFFreeMemory(tree);
}
|