diff options
Diffstat (limited to 'ml/dlib/dlib/base64')
-rw-r--r-- | ml/dlib/dlib/base64/base64_kernel_1.cpp | 403 | ||||
-rw-r--r-- | ml/dlib/dlib/base64/base64_kernel_1.h | 92 | ||||
-rw-r--r-- | ml/dlib/dlib/base64/base64_kernel_abstract.h | 121 |
3 files changed, 0 insertions, 616 deletions
diff --git a/ml/dlib/dlib/base64/base64_kernel_1.cpp b/ml/dlib/dlib/base64/base64_kernel_1.cpp deleted file mode 100644 index 5b48c789e..000000000 --- a/ml/dlib/dlib/base64/base64_kernel_1.cpp +++ /dev/null @@ -1,403 +0,0 @@ -// Copyright (C) 2006 Davis E. King (davis@dlib.net) -// License: Boost Software License See LICENSE.txt for the full license. -#ifndef DLIB_BASE64_KERNEL_1_CPp_ -#define DLIB_BASE64_KERNEL_1_CPp_ - -#include "base64_kernel_1.h" -#include <iostream> -#include <sstream> -#include <climits> - -namespace dlib -{ - -// ---------------------------------------------------------------------------------------- - - base64::line_ending_type base64:: - line_ending ( - ) const - { - return eol_style; - } - -// ---------------------------------------------------------------------------------------- - - void base64:: - set_line_ending ( - line_ending_type eol_style_ - ) - { - eol_style = eol_style_; - } - -// ---------------------------------------------------------------------------------------- - - base64:: - base64 ( - ) : - encode_table(0), - decode_table(0), - bad_value(100), - eol_style(LF) - { - try - { - encode_table = new char[64]; - decode_table = new unsigned char[UCHAR_MAX]; - } - catch (...) - { - if (encode_table) delete [] encode_table; - if (decode_table) delete [] decode_table; - throw; - } - - // now set up the tables with the right stuff - encode_table[0] = 'A'; - encode_table[17] = 'R'; - encode_table[34] = 'i'; - encode_table[51] = 'z'; - - encode_table[1] = 'B'; - encode_table[18] = 'S'; - encode_table[35] = 'j'; - encode_table[52] = '0'; - - encode_table[2] = 'C'; - encode_table[19] = 'T'; - encode_table[36] = 'k'; - encode_table[53] = '1'; - - encode_table[3] = 'D'; - encode_table[20] = 'U'; - encode_table[37] = 'l'; - encode_table[54] = '2'; - - encode_table[4] = 'E'; - encode_table[21] = 'V'; - encode_table[38] = 'm'; - encode_table[55] = '3'; - - encode_table[5] = 'F'; - encode_table[22] = 'W'; - encode_table[39] = 'n'; - encode_table[56] = '4'; - - encode_table[6] = 'G'; - encode_table[23] = 'X'; - encode_table[40] = 'o'; - encode_table[57] = '5'; - - encode_table[7] = 'H'; - encode_table[24] = 'Y'; - encode_table[41] = 'p'; - encode_table[58] = '6'; - - encode_table[8] = 'I'; - encode_table[25] = 'Z'; - encode_table[42] = 'q'; - encode_table[59] = '7'; - - encode_table[9] = 'J'; - encode_table[26] = 'a'; - encode_table[43] = 'r'; - encode_table[60] = '8'; - - encode_table[10] = 'K'; - encode_table[27] = 'b'; - encode_table[44] = 's'; - encode_table[61] = '9'; - - encode_table[11] = 'L'; - encode_table[28] = 'c'; - encode_table[45] = 't'; - encode_table[62] = '+'; - - encode_table[12] = 'M'; - encode_table[29] = 'd'; - encode_table[46] = 'u'; - encode_table[63] = '/'; - - encode_table[13] = 'N'; - encode_table[30] = 'e'; - encode_table[47] = 'v'; - - encode_table[14] = 'O'; - encode_table[31] = 'f'; - encode_table[48] = 'w'; - - encode_table[15] = 'P'; - encode_table[32] = 'g'; - encode_table[49] = 'x'; - - encode_table[16] = 'Q'; - encode_table[33] = 'h'; - encode_table[50] = 'y'; - - - - // we can now fill out the decode_table by using the encode_table - for (int i = 0; i < UCHAR_MAX; ++i) - { - decode_table[i] = bad_value; - } - for (unsigned char i = 0; i < 64; ++i) - { - decode_table[(unsigned char)encode_table[i]] = i; - } - } - -// ---------------------------------------------------------------------------------------- - - base64:: - ~base64 ( - ) - { - delete [] encode_table; - delete [] decode_table; - } - -// ---------------------------------------------------------------------------------------- - - void base64:: - encode ( - std::istream& in_, - std::ostream& out_ - ) const - { - using namespace std; - streambuf& in = *in_.rdbuf(); - streambuf& out = *out_.rdbuf(); - - unsigned char inbuf[3]; - unsigned char outbuf[4]; - streamsize status = in.sgetn(reinterpret_cast<char*>(&inbuf),3); - - unsigned char c1, c2, c3, c4, c5, c6; - - int counter = 19; - - // while we haven't hit the end of the input stream - while (status != 0) - { - if (counter == 0) - { - counter = 19; - // write a newline - char ch; - switch (eol_style) - { - case CR: - ch = '\r'; - if (out.sputn(&ch,1)!=1) - throw std::ios_base::failure("error occurred in the base64 object"); - break; - case LF: - ch = '\n'; - if (out.sputn(&ch,1)!=1) - throw std::ios_base::failure("error occurred in the base64 object"); - break; - case CRLF: - ch = '\r'; - if (out.sputn(&ch,1)!=1) - throw std::ios_base::failure("error occurred in the base64 object"); - ch = '\n'; - if (out.sputn(&ch,1)!=1) - throw std::ios_base::failure("error occurred in the base64 object"); - break; - default: - DLIB_CASSERT(false,"this should never happen"); - } - } - --counter; - - if (status == 3) - { - // encode the bytes in inbuf to base64 and write them to the output stream - c1 = inbuf[0]&0xfc; - c2 = inbuf[0]&0x03; - c3 = inbuf[1]&0xf0; - c4 = inbuf[1]&0x0f; - c5 = inbuf[2]&0xc0; - c6 = inbuf[2]&0x3f; - - outbuf[0] = c1>>2; - outbuf[1] = (c2<<4)|(c3>>4); - outbuf[2] = (c4<<2)|(c5>>6); - outbuf[3] = c6; - - - outbuf[0] = encode_table[outbuf[0]]; - outbuf[1] = encode_table[outbuf[1]]; - outbuf[2] = encode_table[outbuf[2]]; - outbuf[3] = encode_table[outbuf[3]]; - - // write the encoded bytes to the output stream - if (out.sputn(reinterpret_cast<char*>(&outbuf),4)!=4) - { - throw std::ios_base::failure("error occurred in the base64 object"); - } - - // get 3 more input bytes - status = in.sgetn(reinterpret_cast<char*>(&inbuf),3); - continue; - } - else if (status == 2) - { - // we are at the end of the input stream and need to add some padding - - // encode the bytes in inbuf to base64 and write them to the output stream - c1 = inbuf[0]&0xfc; - c2 = inbuf[0]&0x03; - c3 = inbuf[1]&0xf0; - c4 = inbuf[1]&0x0f; - c5 = 0; - - outbuf[0] = c1>>2; - outbuf[1] = (c2<<4)|(c3>>4); - outbuf[2] = (c4<<2)|(c5>>6); - outbuf[3] = '='; - - outbuf[0] = encode_table[outbuf[0]]; - outbuf[1] = encode_table[outbuf[1]]; - outbuf[2] = encode_table[outbuf[2]]; - - // write the encoded bytes to the output stream - if (out.sputn(reinterpret_cast<char*>(&outbuf),4)!=4) - { - throw std::ios_base::failure("error occurred in the base64 object"); - } - - - break; - } - else // in this case status must be 1 - { - // we are at the end of the input stream and need to add some padding - - // encode the bytes in inbuf to base64 and write them to the output stream - c1 = inbuf[0]&0xfc; - c2 = inbuf[0]&0x03; - c3 = 0; - - outbuf[0] = c1>>2; - outbuf[1] = (c2<<4)|(c3>>4); - outbuf[2] = '='; - outbuf[3] = '='; - - outbuf[0] = encode_table[outbuf[0]]; - outbuf[1] = encode_table[outbuf[1]]; - - - // write the encoded bytes to the output stream - if (out.sputn(reinterpret_cast<char*>(&outbuf),4)!=4) - { - throw std::ios_base::failure("error occurred in the base64 object"); - } - - break; - } - } // while (status != 0) - - - // make sure the stream buffer flushes to its I/O channel - out.pubsync(); - } - -// ---------------------------------------------------------------------------------------- - - void base64:: - decode ( - std::istream& in_, - std::ostream& out_ - ) const - { - using namespace std; - streambuf& in = *in_.rdbuf(); - streambuf& out = *out_.rdbuf(); - - unsigned char inbuf[4]; - unsigned char outbuf[3]; - int inbuf_pos = 0; - streamsize status = in.sgetn(reinterpret_cast<char*>(inbuf),1); - - // only count this character if it isn't some kind of filler - if (status == 1 && decode_table[inbuf[0]] != bad_value ) - ++inbuf_pos; - - unsigned char c1, c2, c3, c4, c5, c6; - streamsize outsize; - - // while we haven't hit the end of the input stream - while (status != 0) - { - // if we have 4 valid characters - if (inbuf_pos == 4) - { - inbuf_pos = 0; - - // this might be the end of the encoded data so we need to figure out if - // there was any padding applied. - outsize = 3; - if (inbuf[3] == '=') - { - if (inbuf[2] == '=') - outsize = 1; - else - outsize = 2; - } - - // decode the incoming characters - inbuf[0] = decode_table[inbuf[0]]; - inbuf[1] = decode_table[inbuf[1]]; - inbuf[2] = decode_table[inbuf[2]]; - inbuf[3] = decode_table[inbuf[3]]; - - - // now pack these guys into bytes rather than 6 bit chunks - c1 = inbuf[0]<<2; - c2 = inbuf[1]>>4; - c3 = inbuf[1]<<4; - c4 = inbuf[2]>>2; - c5 = inbuf[2]<<6; - c6 = inbuf[3]; - - outbuf[0] = c1|c2; - outbuf[1] = c3|c4; - outbuf[2] = c5|c6; - - - // write the encoded bytes to the output stream - if (out.sputn(reinterpret_cast<char*>(&outbuf),outsize)!=outsize) - { - throw std::ios_base::failure("error occurred in the base64 object"); - } - } - - // get more input characters - status = in.sgetn(reinterpret_cast<char*>(inbuf + inbuf_pos),1); - // only count this character if it isn't some kind of filler - if ((decode_table[inbuf[inbuf_pos]] != bad_value || inbuf[inbuf_pos] == '=') && - status != 0) - ++inbuf_pos; - } // while (status != 0) - - if (inbuf_pos != 0) - { - ostringstream sout; - sout << inbuf_pos << " extra characters were found at the end of the encoded data." - << " This may indicate that the data stream has been truncated."; - // this happens if we hit EOF in the middle of decoding a 24bit block. - throw decode_error(sout.str()); - } - - // make sure the stream buffer flushes to its I/O channel - out.pubsync(); - } - -// ---------------------------------------------------------------------------------------- - -} - -#endif // DLIB_BASE64_KERNEL_1_CPp_ - diff --git a/ml/dlib/dlib/base64/base64_kernel_1.h b/ml/dlib/dlib/base64/base64_kernel_1.h deleted file mode 100644 index d8f49b1b8..000000000 --- a/ml/dlib/dlib/base64/base64_kernel_1.h +++ /dev/null @@ -1,92 +0,0 @@ -// Copyright (C) 2006 Davis E. King (davis@dlib.net) -// License: Boost Software License See LICENSE.txt for the full license. -#ifndef DLIB_BASE64_KERNEl_1_ -#define DLIB_BASE64_KERNEl_1_ - -#include "../algs.h" -#include "base64_kernel_abstract.h" -#include <iosfwd> - -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 - - }; - -} - -#ifdef NO_MAKEFILE -#include "base64_kernel_1.cpp" -#endif - -#endif // DLIB_BASE64_KERNEl_1_ - diff --git a/ml/dlib/dlib/base64/base64_kernel_abstract.h b/ml/dlib/dlib/base64/base64_kernel_abstract.h deleted file mode 100644 index 0a63d3b87..000000000 --- a/ml/dlib/dlib/base64/base64_kernel_abstract.h +++ /dev/null @@ -1,121 +0,0 @@ -// Copyright (C) 2006 Davis E. King (davis@dlib.net) -// License: Boost Software License See LICENSE.txt for the full license. -#undef DLIB_BASE64_KERNEl_ABSTRACT_ -#ifdef DLIB_BASE64_KERNEl_ABSTRACT_ - -#include "../algs.h" -#include <iosfwd> - -namespace dlib -{ - - class base64 - { - /*! - INITIAL VALUE - - line_ending() == LF - - WHAT THIS OBJECT REPRESENTS - This object consists of the two functions encode and decode. - These functions allow you to encode and decode data to and from - the Base64 Content-Transfer-Encoding defined in section 6.8 of - rfc2045. - !*/ - - public: - - class decode_error : public dlib::error {}; - - base64 ( - ); - /*! - ensures - - #*this is properly initialized - throws - - std::bad_alloc - !*/ - - virtual ~base64 ( - ); - /*! - ensures - - all memory associated with *this has been released - !*/ - - enum line_ending_type - { - CR, // i.e. "\r" - LF, // i.e. "\n" - CRLF // i.e. "\r\n" - }; - - line_ending_type line_ending ( - ) const; - /*! - ensures - - returns the type of end of line bytes the encoder - will use when encoding data to base64 blocks. Note that - the ostream object you use might apply some sort of transform - to line endings as well. For example, C++ ofstream objects - usually convert '\n' into whatever a normal newline is for - your platform unless you open a file in binary mode. But - aside from file streams the ostream objects usually don't - modify the data you pass to them. - !*/ - - void set_line_ending ( - line_ending_type eol_style - ); - /*! - ensures - - #line_ending() == eol_style - !*/ - - void encode ( - std::istream& in, - std::ostream& out - ) const; - /*! - ensures - - reads all data from in (until EOF is reached) and encodes it - and writes it to out - throws - - std::ios_base::failure - if there was a problem writing to out then this exception will - be thrown. - - any other exception - this exception may be thrown if there is any other problem - !*/ - - void decode ( - std::istream& in, - std::ostream& out - ) const; - /*! - ensures - - reads data from in (until EOF is reached), decodes it, - and writes it to out. - throws - - std::ios_base::failure - if there was a problem writing to out then this exception will - be thrown. - - decode_error - if an error was detected in the encoded data that prevented - it from being correctly decoded then this exception is - thrown. - - any other exception - this exception may be thrown if there is any other problem - !*/ - - private: - - // restricted functions - base64(base64&); // copy constructor - base64& operator=(base64&); // assignment operator - - }; - -} - -#endif // DLIB_BASE64_KERNEl_ABSTRACT_ - |