OSDN Git Service

imported the ar002.
[lha/olha.git] / ar.h
1 /***********************************************************\r
2         ar.h\r
3 ***********************************************************/\r
4 #include <stdio.h>\r
5 #include <limits.h>\r
6 typedef unsigned char  uchar;   /*  8 bits or more */\r
7 typedef unsigned int   uint;    /* 16 bits or more */\r
8 typedef unsigned short ushort;  /* 16 bits or more */\r
9 typedef unsigned long  ulong;   /* 32 bits or more */\r
10 \r
11 /* ar.c */\r
12 \r
13 extern int unpackable;\r
14 extern ulong origsize, compsize;\r
15 \r
16 /* io.c */\r
17 \r
18 #define INIT_CRC  0  /* CCITT: 0xFFFF */\r
19 extern FILE *arcfile, *infile, *outfile;\r
20 extern uint crc, bitbuf;\r
21 #define BITBUFSIZ (CHAR_BIT * sizeof bitbuf)\r
22 \r
23 void error(char *fmt, ...);\r
24 void make_crctable(void);\r
25 void fillbuf(int n);\r
26 uint getbits(int n);\r
27 /* void putbit(int bit); */\r
28 void putbits(int n, uint x);\r
29 int fread_crc(uchar *p, int n, FILE *f);\r
30 void fwrite_crc(uchar *p, int n, FILE *f);\r
31 void init_getbits(void);\r
32 void init_putbits(void);\r
33 \r
34 /* encode.c and decode.c */\r
35 \r
36 #define DICBIT    13    /* 12(-lh4-) or 13(-lh5-) */\r
37 #define DICSIZ (1U << DICBIT)\r
38 #define MATCHBIT   8    /* bits for MAXMATCH - THRESHOLD */\r
39 #define MAXMATCH 256    /* formerly F (not more than UCHAR_MAX + 1) */\r
40 #define THRESHOLD  3    /* choose optimal value */\r
41 #define PERC_FLAG 0x8000U\r
42 \r
43 void encode(void);\r
44 void decode_start(void);\r
45 void decode(uint count, uchar text[]);\r
46 \r
47 /* huf.c */\r
48 \r
49 #define NC (UCHAR_MAX + MAXMATCH + 2 - THRESHOLD)\r
50         /* alphabet = {0, 1, 2, ..., NC - 1} */\r
51 #define CBIT 9  /* $\lfloor \log_2 NC \rfloor + 1$ */\r
52 #define CODE_BIT  16  /* codeword length */\r
53 \r
54 extern ushort left[], right[];\r
55 \r
56 void huf_encode_start(void);\r
57 void huf_decode_start(void);\r
58 uint decode_c(void);\r
59 uint decode_p(void);\r
60 void output(uint c, uint p);\r
61 void huf_encode_end(void);\r
62 \r
63 /* maketbl.c */\r
64 \r
65 void make_table(int nchar, uchar bitlen[],\r
66                                 int tablebits, ushort table[]);\r
67 \r
68 /* maketree.c */\r
69 \r
70 int make_tree(int nparm, ushort freqparm[],\r
71                                 uchar lenparm[], ushort codeparm[]);\r