/* Definitions and external declarations */ EXTERN char debug; /* Boolean flag */ /* *** Stuff for first translation module *** */ EXTERN int likect; /*count of consecutive identical chars */ EXTERN int lastchar, newchar; EXTERN char state; /* states */ #define NOHIST 0 /*don't consider previous input*/ #define SENTCHAR 1 /*lastchar set, no lookahead yet */ #define SENDNEWC 2 /*newchar set, previous sequence done */ #define SENDCNT 3 /*newchar set, DLE sent, send count next */ /* *** Stuff for second translation module *** */ #define NOCHILD -1 /* indicates end of path through tree */ #define NUMNODES (NUMVALS + NUMVALS - 1) /* nbr of nodes */ #define MAXCOUNT 0xFFFF /* biggest unsigned integer */ /* The following array of structures are the nodes of the * binary trees. The first NUMVALS nodes becomethe leaves of the * final tree and represent the values of the data bytes being * encoded and the special endfile, SPEOF. * The remaining nodes become the internal nodes of the final tree. */ EXTERN struct nd { unsigned int weight; /* number of appearances */ char tdepth; /* length on longest path in tre*/ int lchild, rchild; /* indexes to next level */ } node[NUMNODES]; EXTERN int dctreehd; /*index to head node of final tree */ /* This is the encoding table: * The bit strings have first bit in low bit. * Note that counts were scaled so code fits unsigned integer */ EXTERN char codelen[NUMVALS]; /* number of bits in code */ EXTERN unsigned int code[NUMVALS]; /* code itself, right adjusted */ EXTERN unsigned int tcode; /* temporary code value */ /* Variables used by encoding process */ EXTERN int curin; /* Value currently being encoded */ EXTERN char cbitsrem; /* Number of code string bits remaining */ EXTERN unsigned int ccode; /* Current code shifted so next code bit is at right */