// Copyright (C) 2006 Davis E. King ([email protected]) | |
// License: Boost Software License See LICENSE.txt for the full license. | |
namespace dlib | |
{ | |
class base64 | |
{ | |
/*! | |
INITIAL VALUE | |
- bad_value == 100 | |
- encode_table == a pointer to an array of 64 chars | |
- where x is a 6 bit value the following is true: | |
- encode_table[x] == the base64 encoding of x | |
- decode_table == a pointer to an array of UCHAR_MAX chars | |
- where x is any char value: | |
- if (x is a valid character in the base64 coding scheme) then | |
- decode_table[x] == the 6 bit value that x encodes | |
- else | |
- decode_table[x] == bad_value | |
CONVENTION | |
- The state of this object never changes so just refer to its | |
initial value. | |
!*/ | |
public: | |
// this is here for backwards compatibility with older versions of dlib. | |
typedef base64 kernel_1a; | |
class decode_error : public dlib::error { public: | |
decode_error( const std::string& e) : error(e) {}}; | |
base64 ( | |
); | |
virtual ~base64 ( | |
); | |
enum line_ending_type | |
{ | |
CR, // i.e. "\r" | |
LF, // i.e. "\n" | |
CRLF // i.e. "\r\n" | |
}; | |
line_ending_type line_ending ( | |
) const; | |
void set_line_ending ( | |
line_ending_type eol_style_ | |
); | |
void encode ( | |
std::istream& in, | |
std::ostream& out | |
) const; | |
void decode ( | |
std::istream& in, | |
std::ostream& out | |
) const; | |
private: | |
char* encode_table; | |
unsigned char* decode_table; | |
const unsigned char bad_value; | |
line_ending_type eol_style; | |
// restricted functions | |
base64(base64&); // copy constructor | |
base64& operator=(base64&); // assignment operator | |
}; | |
} | |