casa  $Rev:20696$
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines
Base64.h
Go to the documentation of this file.
00001 
00005 /*
00006 Copyright (C) 2004,2005  Anders Hedstrom
00007 
00008 This library is made available under the terms of the GNU GPL.
00009 
00010 If you would like to use this library in a closed-source application,
00011 a separate license agreement is available. For information about 
00012 the closed-source license agreement for the C++ sockets library,
00013 please visit http://www.alhem.net/Sockets/license.html and/or
00014 email license@alhem.net.
00015 
00016 This program is free software; you can redistribute it and/or
00017 modify it under the terms of the GNU General Public License
00018 as published by the Free Software Foundation; either version 2
00019 of the License, or (at your option) any later version.
00020 
00021 This program is distributed in the hope that it will be useful,
00022 but WITHOUT ANY WARRANTY; without even the implied warranty of
00023 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00024 GNU General Public License for more details.
00025 
00026 You should have received a copy of the GNU General Public License
00027 along with this program; if not, write to the Free Software
00028 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
00029 */
00030 #ifndef _BASE64_H
00031 #define _BASE64_H
00032 
00033 #ifdef _WIN32
00034 #pragma warning(disable:4514)
00035 #endif
00036 
00037 #include <stdio.h>
00038 #include <string>
00039 
00040 #ifdef SOCKETS_NAMESPACE
00041 namespace SOCKETS_NAMESPACE {
00042 #endif
00043 
00048 class Base64
00049 {
00050 public:
00051         Base64();
00052 
00053         void encode(FILE *, std::string& , bool add_crlf = true);
00054         void encode(const std::string&, std::string& , bool add_crlf = true);
00055         void encode(const char *, size_t, std::string& , bool add_crlf = true);
00056         void encode(unsigned char *, size_t, std::string& , bool add_crlf = true);
00057 
00058         void decode(const std::string&, std::string& );
00059         void decode(const std::string&, unsigned char *, size_t&);
00060 
00061         size_t decode_length(const std::string& );
00062 
00063 private:
00064         Base64(const Base64& ) {}
00065         Base64& operator=(const Base64& ) { return *this; }
00066 static  char *bstr;
00067 static  char rstr[128];
00068 };
00069 
00070 
00071 #ifdef SOCKETS_NAMESPACE
00072 }
00073 #endif
00074 
00075 #endif // _BASE64_H