Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
att
GitHub Repository: att/ast
Path: blob/master/src/cmd/codexlib/zip/huff.h
1810 views
1
#pragma prototyped
2
3
/*
4
* zip huffman codeing interface
5
*/
6
7
#ifndef _HUFF_H
8
#define _HUFF_H 1
9
10
#include "zip.h"
11
12
#include <vmalloc.h>
13
14
/* Huffman code lookup table entry--this entry is four bytes for machines
15
that have 16-bit pointers (e.g. PC's in the small or medium model).
16
Valid extra bits are 0..13. e == 15 is EOB (end of block), e == 16
17
means that v is a literal, 16 < e < 32 means that v is a pointer to
18
the next table, which codes e - 16 bits, and lastly e == 99 indicates
19
an unused code. If a code with e == 99 is looked up, this implies an
20
error in the data. */
21
22
struct Huff_s; typedef struct Huff_s Huff_t;
23
24
struct Huff_s
25
{
26
uch e; /* number of extra bits or operation */
27
uch b; /* number of bits in this code or subcode */
28
union
29
{
30
ush n; /* literal, length base, or distance base */
31
Huff_t* t; /* pointer to next level of table */
32
} v;
33
};
34
35
extern int huff(ulg*, ulg, ulg, ush*, ush*, Huff_t**, int*, Vmalloc_t*);
36
37
#endif
38
39