#pragma once #include "AbstractChecksumCalculator.h" #include class BitStream; class AbstractEncoder { public: AbstractEncoder(BitStream* inputStream, BitStream* outputStream) : mInputStream(inputStream), mOutputStream(outputStream) { } virtual ~AbstractEncoder() = default; void addChecksumCalculator(AbstractChecksumCalculator* calculator) { mChecksumCalculators.push_back(calculator); } virtual bool encode() = 0; virtual bool decode() = 0; protected: std::vector mChecksumCalculators; BitStream* mInputStream{nullptr}; BitStream* mOutputStream{nullptr}; };