1 /* Copyright (C) 1994 artofcode LLC. All rights reserved. 2 3 This program is free software; you can redistribute it and/or modify it 4 under the terms of the GNU General Public License as published by the 5 Free Software Foundation; either version 2 of the License, or (at your 6 option) any later version. 7 8 This program is distributed in the hope that it will be useful, but 9 WITHOUT ANY WARRANTY; without even the implied warranty of 10 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 11 General Public License for more details. 12 13 You should have received a copy of the GNU General Public License along 14 with this program; if not, write to the Free Software Foundation, Inc., 15 59 Temple Place, Suite 330, Boston, MA, 02111-1307. 16 17 */ 18 19 /*$Id: shcgen.h,v 1.2.6.1.2.1 2003/01/17 00:49:05 giles Exp $ */ 20 /* Interface for Huffman code generation */ 21 /* Requires shc.h */ 22 23 #ifndef shcgen_INCLUDED 24 # define shcgen_INCLUDED 25 26 /* Compute an optimal Huffman code from an input data set. */ 27 /* The client must have set all the elements of *def. */ 28 /* The definition is guaranteed to be well-behaved. */ 29 int hc_compute(P3(hc_definition * def, const long *freqs, gs_memory_t * mem)); 30 31 /* Convert a definition to a byte string. */ 32 /* The caller must provide the byte string, of length def->num_values. */ 33 /* Assume (do not check) that the definition is well-behaved. */ 34 /* Return the actual length of the string. */ 35 int hc_bytes_from_definition(P2(byte * dbytes, const hc_definition * def)); 36 37 /* Extract num_counts and num_values from a byte string. */ 38 void hc_sizes_from_bytes(P3(hc_definition * def, const byte * dbytes, int num_bytes)); 39 40 /* Convert a byte string back to a definition. */ 41 /* The caller must initialize *def, including allocating counts and values. */ 42 void hc_definition_from_bytes(P2(hc_definition * def, const byte * dbytes)); 43 44 /* Generate the encoding table from the definition. */ 45 /* The size of the encode array is def->num_values. */ 46 void hc_make_encoding(P2(hce_code * encode, const hc_definition * def)); 47 48 /* Calculate the size of the decoding table. */ 49 uint hc_sizeof_decoding(P2(const hc_definition * def, int initial_bits)); 50 51 /* Generate the decoding tables. */ 52 void hc_make_decoding(P3(hcd_code * decode, const hc_definition * def, 53 int initial_bits)); 54 55 #endif /* shcgen_INCLUDED */ 56