2
1
mirror of https://github.com/qpdf/qpdf.git synced 2024-06-18 18:02:21 +00:00
qpdf/libqpdf/qpdf/Pl_Base64.hh
Jay Berkenbilt 3d9bac43da Add internal Pl_Base64
Bidirectional base64; will be used by JSON v2.
2022-05-03 18:31:22 -04:00

31 lines
689 B
C++

#ifndef PL_BASE64_HH
#define PL_BASE64_HH
#include <qpdf/Pipeline.hh>
class Pl_Base64: public Pipeline
{
public:
enum action_e { a_encode, a_decode };
Pl_Base64(char const* identifier, Pipeline* next, action_e);
virtual ~Pl_Base64() = default;
virtual void write(unsigned char* buf, size_t len) override;
virtual void finish() override;
private:
void decode(unsigned char* buf, size_t len);
void encode(unsigned char* buf, size_t len);
void flush();
void flush_decode();
void flush_encode();
void reset();
action_e action;
unsigned char buf[4];
size_t pos;
bool end_of_data;
bool finished;
};
#endif // PL_BASE64_HH