@@ -20,21 +20,22 @@ #import "OFInvalidFormatException.h" OF_ASSUME_NONNULL_BEGIN -struct of_huffman_tree { - struct of_huffman_tree *_Nullable leaves[2]; +typedef struct _OFHuffmanTree { + struct _OFHuffmanTree *_Nullable leaves[2]; uint16_t value; -}; +} *OFHuffmanTree; +/* Inlined for performance. */ static OF_INLINE bool -of_huffman_tree_walk(id _Nullable stream, +OFHuffmanTreeWalk(id _Nullable stream, bool (*bitReader)(id _Nullable, uint16_t *_Nonnull, uint8_t), - struct of_huffman_tree *_Nonnull *_Nonnull tree, uint16_t *_Nonnull value) + OFHuffmanTree _Nonnull *_Nonnull tree, uint16_t *_Nonnull value) { - struct of_huffman_tree *iter = *tree; + OFHuffmanTree iter = *tree; uint16_t bits; while (iter->value == 0xFFFF) { if OF_UNLIKELY (!bitReader(stream, &bits, 1)) { *tree = iter; @@ -52,15 +53,14 @@ } #ifdef __cplusplus extern "C" { #endif -extern struct of_huffman_tree *_Nonnull of_huffman_tree_construct( - uint8_t lengths[_Nonnull], uint16_t count); -extern struct of_huffman_tree *_Nonnull of_huffman_tree_construct_single( - uint16_t value); -extern void of_huffman_tree_release(struct of_huffman_tree *_Nonnull tree); +extern OFHuffmanTree _Nonnull OFHuffmanTreeNew(uint8_t lengths[_Nonnull], + uint16_t count); +extern OFHuffmanTree _Nonnull OFHuffmanTreeNewSingle(uint16_t value); +extern void OFHuffmanTreeFree(OFHuffmanTree _Nonnull tree); #ifdef __cplusplus } #endif OF_ASSUME_NONNULL_END