huff_code.h File Reference

Huffman code and bitstream implementation. More...

`#include <stdio.h>`
`#include <sphinxbase/sphinxbase_export.h>`
`#include <sphinxbase/prim_type.h>`
`#include <sphinxbase/cmd_ln.h>`

Go to the source code of this file.

## Typedefs

typedef struct huff_code_s | huff_code_t

## Functions

SPHINXBASE_EXPORT huff_code_t * | huff_code_build_int (int32 const *values, int32 const *frequencies, int nvals)
| Create a codebook from 32-bit integer data.
SPHINXBASE_EXPORT huff_code_t * | huff_code_build_str (char *const *values, int32 const *frequencies, int nvals)
| Create a codebook from string data.
SPHINXBASE_EXPORT huff_code_t * | huff_code_read (FILE *infh)
| Read a codebook from a file.
SPHINXBASE_EXPORT int | huff_code_write (huff_code_t *hc, FILE *outfh)
| Write a codebook to a file.
SPHINXBASE_EXPORT int | huff_code_dump (huff_code_t *hc, FILE *dumpfh)
| Print a codebook to a file as text (for debugging)
SPHINXBASE_EXPORT huff_code_t * | huff_code_retain (huff_code_t *hc)
| Retain a pointer to a Huffman codec object.
SPHINXBASE_EXPORT int | huff_code_free (huff_code_t *hc)
| Release a pointer to a Huffman codec object.
SPHINXBASE_EXPORT FILE * | huff_code_attach (huff_code_t *hc, FILE *fh, char const *mode)
| Attach a Huffman codec to a file handle for input/output.
SPHINXBASE_EXPORT FILE * | huff_code_detach (huff_code_t *hc)
| Detach a Huffman codec from its file handle.
SPHINXBASE_EXPORT int | huff_code_encode_int (huff_code_t *hc, int32 sym, uint32 *outcw)
| Encode an integer, writing it to the file handle, if any.
SPHINXBASE_EXPORT int | huff_code_encode_str (huff_code_t *hc, char const *sym, uint32 *outcw)
| Encode a string, writing it to the file handle, if any.
SPHINXBASE_EXPORT int | huff_code_decode_int (huff_code_t *hc, int *outval, char const **inout_data, size_t *inout_data_len, int *inout_offset)
| Decode an integer, reading it from the file if no data given.
SPHINXBASE_EXPORT char const * | huff_code_decode_str (huff_code_t *hc, char const **inout_data, size_t *inout_data_len, int *inout_offset)
| Decode a string, reading it from the file if no data given.

## Detailed Description

Huffman code and bitstream implementation.

This interface supports building canonical Huffman codes from string and integer values. It also provides support for encoding and decoding from strings and files, and for reading and writing codebooks from files.

Definition in file huff_code.h.

## Typedef Documentation

## huff_code_t

typedef struct huff_code_s huff_code_t

Definition at line 57 of file huff_code.h.

## Function Documentation

## huff_code_attach()

SPHINXBASE_EXPORT FILE * huff_code_attach | ( | huff_code_t * | hc,
|  | FILE * | fh,
|  | char const * | mode
| ) |  |

Attach a Huffman codec to a file handle for input/output.

Definition at line 475 of file huff_code.c.

References bit_encode_attach(), huff_code_attach(), and huff_code_detach().

Referenced by huff_code_attach().

## huff_code_build_int()

SPHINXBASE_EXPORT huff_code_t * huff_code_build_int | ( | int32 const * | values,
|  | int32 const * | frequencies,
|  | int | nvals
| ) |  |

Create a codebook from 32-bit integer data.

Definition at line 229 of file huff_code.c.

References ckd_calloc, E_ERROR, heap_destroy(), heap_insert(), heap_new(), huff_code_build_int(), and huff_code_free().

Referenced by huff_code_build_int().

## huff_code_build_str()

SPHINXBASE_EXPORT huff_code_t * huff_code_build_str | ( | char *const * | values,
|  | int32 const * | frequencies,
|  | int | nvals
| ) |  |

Create a codebook from string data.

Definition at line 269 of file huff_code.c.

References ckd_calloc, E_ERROR, heap_destroy(), heap_insert(), heap_new(), huff_code_build_str(), and huff_code_free().

Referenced by huff_code_build_str().

## huff_code_decode_int()

SPHINXBASE_EXPORT int huff_code_decode_int | ( | huff_code_t * | hc,
|  | int * | outval,
|  | char const ** | inout_data,
|  | size_t * | inout_data_len,
|  | int * | inout_offset
| ) |  |

Decode an integer, reading it from the file if no data given.

Definition at line 612 of file huff_code.c.

References huff_code_decode_int().

Referenced by huff_code_decode_int().

## huff_code_decode_str()

SPHINXBASE_EXPORT char const * huff_code_decode_str | ( | huff_code_t * | hc,
|  | char const ** | inout_data,
|  | size_t * | inout_data_len,
|  | int * | inout_offset
| ) |  |

Decode a string, reading it from the file if no data given.

Definition at line 634 of file huff_code.c.

References huff_code_decode_str().

Referenced by huff_code_decode_str().

## huff_code_detach()

SPHINXBASE_EXPORT FILE * huff_code_detach | ( | huff_code_t * | hc | ) |

Detach a Huffman codec from its file handle.

Definition at line 486 of file huff_code.c.

References bit_encode_flush(), bit_encode_free(), and huff_code_detach().

Referenced by huff_code_attach(), and huff_code_detach().

## huff_code_dump()

SPHINXBASE_EXPORT int huff_code_dump | ( | huff_code_t * | hc,
|  | FILE * | dumpfh
| ) |  |

Print a codebook to a file as text (for debugging)

Definition at line 420 of file huff_code.c.

References huff_code_dump().

Referenced by huff_code_dump().

## huff_code_encode_int()

SPHINXBASE_EXPORT int huff_code_encode_int | ( | huff_code_t * | hc,
|  | int32 | sym,
|  | uint32 * | outcw
| ) |  |

Encode an integer, writing it to the file handle, if any.

Definition at line 500 of file huff_code.c.

References bit_encode_write_cw(), hash_table_lookup_bkey(), and huff_code_encode_int().

Referenced by huff_code_encode_int().

## huff_code_encode_str()

SPHINXBASE_EXPORT int huff_code_encode_str | ( | huff_code_t * | hc,
|  | char const * | sym,
|  | uint32 * | outcw
| ) |  |

Encode a string, writing it to the file handle, if any.

Definition at line 516 of file huff_code.c.

References bit_encode_write_cw(), hash_table_lookup(), and huff_code_encode_str().

Referenced by huff_code_encode_str().

## huff_code_free()

SPHINXBASE_EXPORT int huff_code_free | ( | huff_code_t * | hc | ) |

Release a pointer to a Huffman codec object.

Definition at line 450 of file huff_code.c.

References ckd_free(), hash_table_free(), and huff_code_free().

Referenced by huff_code_build_int(), huff_code_build_str(), huff_code_free(), and huff_code_read().

## huff_code_read()

SPHINXBASE_EXPORT huff_code_t * huff_code_read | ( | FILE * | infh | ) |

Read a codebook from a file.

Definition at line 309 of file huff_code.c.

References ckd_calloc, fread_line(), hash_table_enter(), hash_table_enter_bkey(), hash_table_new(), huff_code_free(), and huff_code_read().

Referenced by huff_code_read().

## huff_code_retain()

SPHINXBASE_EXPORT huff_code_t * huff_code_retain | ( | huff_code_t * | hc | ) |

Retain a pointer to a Huffman codec object.

Definition at line 443 of file huff_code.c.

References huff_code_retain().

Referenced by huff_code_retain().

## huff_code_write()

SPHINXBASE_EXPORT int huff_code_write | ( | huff_code_t * | hc,
|  | FILE * | outfh
| ) |  |

Write a codebook to a file.

Definition at line 368 of file huff_code.c.

References huff_code_write().

Referenced by huff_code_write().