@@ -16,30 +16,29 @@ #include "config.h" #include #include -#import "huffman_tree.h" +#import "OFHuffmanTree.h" #import "OFInvalidFormatException.h" #import "OFOutOfMemoryException.h" -static struct of_huffman_tree * +static OFHuffmanTree newTree(void) { - struct of_huffman_tree *tree; + OFHuffmanTree tree; - tree = of_alloc(1, sizeof(*tree)); + tree = OFAllocMemory(1, sizeof(*tree)); tree->leaves[0] = tree->leaves[1] = NULL; tree->value = 0xFFFF; return tree; } static void -insertTree(struct of_huffman_tree *tree, uint16_t code, uint8_t length, - uint16_t value) +treeInsert(OFHuffmanTree tree, uint16_t code, uint8_t length, uint16_t value) { while (length > 0) { uint8_t bit; length--; @@ -52,26 +51,26 @@ } tree->value = value; } -struct of_huffman_tree * -of_huffman_tree_construct(uint8_t lengths[], uint16_t count) +OFHuffmanTree +OFHuffmanTreeNew(uint8_t lengths[], uint16_t count) { - struct of_huffman_tree *tree; + OFHuffmanTree tree; uint16_t *lengthCount = NULL; uint16_t code, maxCode = 0, *nextCode = NULL; uint_fast8_t maxBit = 0; @try { for (uint16_t i = 0; i < count; i++) { uint_fast8_t length = lengths[i]; if OF_UNLIKELY (length > maxBit) { - lengthCount = of_realloc(lengthCount, + lengthCount = OFResizeMemory(lengthCount, length + 1, sizeof(uint16_t)); - nextCode = of_realloc(nextCode, + nextCode = OFResizeMemory(nextCode, length + 1, sizeof(uint16_t)); for (uint_fast8_t j = maxBit + 1; j <= length; j++) { lengthCount[j] = 0; @@ -97,34 +96,34 @@ for (uint16_t i = 0; i <= maxCode; i++) { uint8_t length = lengths[i]; if (length > 0) - insertTree(tree, nextCode[length]++, length, i); + treeInsert(tree, nextCode[length]++, length, i); } } @finally { - free(lengthCount); - free(nextCode); + OFFreeMemory(lengthCount); + OFFreeMemory(nextCode); } return tree; } -struct of_huffman_tree * -of_huffman_tree_construct_single(uint16_t value) +OFHuffmanTree +OFHuffmanTreeNewSingle(uint16_t value) { - struct of_huffman_tree *tree = newTree(); + OFHuffmanTree tree = newTree(); tree->value = value; return tree; } void -of_huffman_tree_release(struct of_huffman_tree *tree) +OFHuffmanTreeFree(OFHuffmanTree tree) { for (uint_fast8_t i = 0; i < 2; i++) if OF_LIKELY (tree->leaves[i] != NULL) - of_huffman_tree_release(tree->leaves[i]); + OFHuffmanTreeFree(tree->leaves[i]); - free(tree); + OFFreeMemory(tree); }