2 Copyright (C) 2008, Francisco Claude, all rights reserved.
4 Wrapper for huff written by Gonzalo Navarro
6 This library is free software; you can redistribute it and/or
7 modify it under the terms of the GNU Lesser General Public
8 License as published by the Free Software Foundation; either
9 version 2.1 of the License, or (at your option) any later version.
11 This library is distributed in the hope that it will be useful,
12 but WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 Lesser General Public License for more details.
16 You should have received a copy of the GNU Lesser General Public
17 License along with this library; if not, write to the Free Software
18 Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
22 #ifndef HUFFMAN_CODES_H
23 #define HUFFMAN_CODES_H
28 /** Wrapper for the canonical huffman implementation of Gonzalo Navarro.
30 * @author Francisco Claude
35 /** Creates the codes for the sequence seq of length n */
36 huffman_codes(uint * seq, uint n);
37 huffman_codes(uchar * seq, uint n);
40 /** Encodes symb into stream at bit-position pos, return the ending position (bits) */
41 ulong encode(uint symb, uint * stream, ulong pos);
43 /** decodes into symb from stream at bit-position pos, returns the new position */
44 ulong decode(uint * symb, uint * stream, ulong pos);
46 /** Returns the maximum length of a code */
49 /** Returns the size of the table */
52 /** Saves the coder to a file */
55 /** Loads a coder from a file */
56 static huffman_codes * load(FILE *fp);