#ifndef __DCL_TRANSFER_ENCODING_H__
#define __DCL_TRANSFER_ENCODING_H__     1

#ifndef __DCL_CONFIG_H__
#include <dcl/_Config.h>
#endif
#ifndef __DCL_STRING_H__
#include <dcl/core/String.h>
#endif

/*
    References
        http://www.faqs.org/rfcs/rfc1521.html
        Multipurpose Internet Mail Extensions 
            (MIME) Part One:
            Format of Internet Message Bodies

        RFC 2045, 1590, 1522, 1521
*/

__DCL_BEGIN_NAMESPACE

// 5.1.   Quoted-Printable Content-Transfer-Encoding
class DCLNAPI QuotedPrintableEncoder
{
public:
    // convert 8bit string to quoted-printable string
    static String encode(const String& str);
};

class DCLNAPI QuotedPrintableDecoder
{
public:
    // convert quoted-printable string to 8bit string
    static String decode(const String& str);
};

// 5.2.   Base64 Content-Transfer-Encoding
class DCLNAPI Base64Encoder
{
public:
    // binary to base64 string
    static String encode(const String& str);
};

class DCLNAPI Base64Decoder
{
    // base64 string to binary
    // RETURN s.cstr(), s.length()
    static String decode(const String& str);
};


__DCL_END_NAMESPACE

#endif  // __DCL_TRANSFER_ENCODING_H__