#ifndef B6024EEC_47B1_43D8_A5E2_7E0CE27C1E65 #define B6024EEC_47B1_43D8_A5E2_7E0CE27C1E65 #include "lzw.h" // Data Structures typedef struct DecodeEntry { int prefix; unsigned char character; } DecodeEntry; typedef struct Stack { unsigned char *data; int top; int max_size; } Stack; // Decoder void decode(void); // String Table DecodeEntry *initDecodeTable(int table_size); int pruneDecodeTable(DecodeEntry **table, int table_size); // Stack Stack *initStack(int stack_size); void push(Stack *stack, unsigned char value); unsigned char pop(Stack *stack); int isStackEmpty(Stack *stack); // Bit Unpacking int bitUnpacker(unsigned char byte); // Debugging void dumpDecodeTable(struct DecodeEntry *table, int nextCode, int table_size); #endif /* B6024EEC_47B1_43D8_A5E2_7E0CE27C1E65 */