Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008 #ifndef BASE64READER_H_
00009 #define BASE64READER_H_
00010
00011 #include "ibrcommon/data/Base64.h"
00012 #include <iostream>
00013 #include <string.h>
00014 #include <stdint.h>
00015
00016 namespace ibrcommon
00017 {
00018 class Base64Reader : public std::basic_streambuf<char, std::char_traits<char> >, public std::istream
00019 {
00020 public:
00021 Base64Reader(std::istream &stream, const size_t limit = 0, const size_t buffer = 2048);
00022 virtual ~Base64Reader();
00023
00024 protected:
00025 virtual std::char_traits<char>::int_type underflow();
00026
00027 private:
00028 void set_b64(char val);
00029
00030 std::istream &_stream;
00031
00032
00033 char *data_buf_;
00034
00035
00036 size_t data_size_;
00037
00038 uint8_t _base64_state;
00039
00040 Base64::Group _group;
00041 char _base64_padding;
00042
00043 size_t _byte_read;
00044 size_t _byte_limit;
00045 };
00046 }
00047
00048 #endif