#ifndef AB1D5576_F986_4B13_AE08_ABCF50CDF907 #define AB1D5576_F986_4B13_AE08_ABCF50CDF907 #define HASH_SIZE 2048 #include "lzw.h" // Data Structures typedef struct EncodeEntry { struct EncodeEntry *next; int code; int prefix; unsigned char character; } EncodeEntry; // Encoder void encode(int pruning, int maxBits); // String Table void initEncodeTable(EncodeEntry **hashTable, EncodeEntry **codeToEntry, int table_size); void freeTable(EncodeEntry **hashTable, EncodeEntry **codeToEntry); int pruneEncodeTable(EncodeEntry ***hashTable, EncodeEntry ***codeToEntry, int table_size); // Hash unsigned int hash(int prefix, unsigned char c); void hashInsert(EncodeEntry **hashTable, EncodeEntry **codeToEntry, EncodeEntry *t); EncodeEntry *hashFind(EncodeEntry **hashTable, int prefix, unsigned char c); // Bit Packing void bitPacker(int code); void flushRemBits(); // Debugging void printEncodeEntry(EncodeEntry* entry); void dumpEncodeTable(EncodeEntry **hashTable, EncodeEntry **codeToEntry, int table_size); #endif /* AB1D5576_F986_4B13_AE08_ABCF50CDF907 */