libfly  6.2.2
C++20 utility library for Linux, macOS, and Windows
base64_coder.hpp
1 #pragma once
2 
3 #include "fly/coders/coder.hpp"
4 
5 #include <array>
6 #include <istream>
7 #include <ostream>
8 
9 namespace fly::coders {
10 
17 class Base64Coder : public Encoder, public Decoder
18 {
19 protected:
28  bool encode_internal(std::istream &decoded, std::ostream &encoded) override;
29 
38  bool decode_internal(std::istream &encoded, std::ostream &decoded) override;
39 
40 private:
41  static constexpr const std::size_t s_decoded_chunk_size = 3;
42  static constexpr const std::size_t s_encoded_chunk_size = 4;
43 
44  std::array<std::ios::char_type, (64 * s_decoded_chunk_size) << 10> m_decoded;
45  std::array<std::ios::char_type, (64 * s_encoded_chunk_size) << 10> m_encoded;
46 };
47 
48 } // namespace fly::coders
Definition: base64_coder.hpp:18
bool encode_internal(std::istream &decoded, std::ostream &encoded) override
Definition: base64_coder.cpp:126
bool decode_internal(std::istream &encoded, std::ostream &decoded) override
Definition: base64_coder.cpp:163
Definition: coder.hpp:94
Definition: coder.hpp:23