#ifndef COMPRESS_H #define COMPRESS_H class Dictionary { public: static Dictionary* MakeDictionary(); static Dictionary* MakeDictionary(const char* filename); virtual ~Dictionary() { } virtual bool AddToDictionary(const char* from, const char* to) = 0; virtual bool RemoveFromDictionary(const char* from) = 0; }; class Compressor { public: static Compressor* MakeCompressor(bool removeWhitespace, bool removeVowels, const Dictionary* abbreviations); virtual ~Compressor() { } // Caller assumes ownership of output (for memory management) virtual bool CompressMessage(const char* input, char*& output) = 0; }; #endif