lzw.h
上传用户:hepax88
上传日期:2007-01-03
资源大小:1101k
文件大小:2k
源码类别:

TCP/IP协议栈

开发平台:

Visual C++

  1. #ifndef _LZW_H
  2. #define _LZW_H
  3. /* a string entry */
  4. struct zentry {
  5. uint16 code; /* codeword of the prefix string */
  6. char data; /* character to add to the prefix string */
  7. };
  8. struct zfast { /* fast version of string entry */
  9. uint16 owncode; /* own codeword */
  10. uint16 code; /* codeword of prefix string */
  11. char data; /* character to add to prefix string */
  12. };
  13. #define ZCC 256 /* clear code table codeword */
  14. #define ZFLUSH 257 /* codeword that signals a break in coding */
  15. struct lzw {
  16. uint16 codebits; /* significant bits in each codeword */
  17. int maxbits; /* maximum number of bits per codeword */
  18. #define LZWBITS 9 /* initial number of bits in each codeword */
  19. int32 prefix; /* last processed codeword */
  20. char mode; /* Compact or fast compression mode */
  21. #define LZWCOMPACT 0
  22. #define LZWFAST 1
  23. union {
  24. struct zentry **tbl; /* compact table */
  25. #define LZWBLK 130 /* size of entry arrays to allocate */
  26. struct mbuf **bpp; /* mbuf version of table */
  27. #define ZHASH 256 /* hash table size */
  28. void *p; /* generic table pointer */
  29. } tu; /* table of entries */
  30. int nextbit; /* next bit to process in code stream */
  31. int version; /* version number of sender */
  32. #define ZVERSION 3 /* version number */
  33. int32 cnt; /* count of processed bytes */
  34. int32 code; /* temporary storage for coding in progress */
  35. int32 next; /* next code to be added to the table */
  36. int flushbit; /* next bit of the ZFLUSH codeword to send */
  37. /* the following is used by the decoder only */
  38. struct mbuf *buf; /* decoded buffer */
  39. };
  40. struct usock; /* To please Turbo C++ */
  41. void lzwencode(int s,char c);
  42. void lzwinit(int s,int bits,int mode);
  43. void lzwfree(struct usock *up);
  44. void lzwflush(struct usock *up);
  45. int lzwdecode(struct usock *up);
  46. #endif  /* _LZW_H */