Files
chaos/Chaos/Cipher/Block/Decryptor.hpp
hashlag d194fef1af
All checks were successful
Chaos Ci / test-and-benchmark (push) Successful in 1m42s
Mark all Block::Decryptor<> methods const.
This allows for convenient usage of const Decryptor<Impl> &.
2026-02-01 00:24:50 +03:00

46 lines
843 B
C++

#ifndef CHAOS_CIPHER_BLOCK_DECRYPTOR_HPP
#define CHAOS_CIPHER_BLOCK_DECRYPTOR_HPP
namespace Chaos::Cipher::Block
{
template<typename T>
class Decryptor
{
public:
template<typename OutputIt, typename InputIt>
void DecryptBlock(OutputIt out, InputIt inBegin, InputIt inEnd) const
{
Impl().DecryptBlock(out, inBegin, inEnd);
}
template<typename Block>
auto DecryptBlock(Block block) const
{
return Impl().DecryptBlock(block);
}
auto GetBlockSize() const
{
return Impl().GetBlockSize();
}
protected:
Decryptor() = default;
private:
const T & Impl() const
{
return static_cast<const T &>(*this);
}
T & Impl()
{
return static_cast<T &>(*this);
}
};
} // namespace Chaos::Cipher::Block
#endif // CHAOS_CIPHER_BLOCK_DECRYPTOR_HPP