// CBase64Coder.h: interface for the CBase64Coder class. // ////////////////////////////////////////////////////////////////////// #if !defined(AFX_BASE64CODER_H__B2E45717_0625_11D2_A80A_00C04FB6794C__INCLUDED_) #define AFX_BASE64CODER_H__B2E45717_0625_11D2_A80A_00C04FB6794C__INCLUDED_ #if _MSC_VER >= 1000 #pragma once #endif // _MSC_VER >= 1000 // Valik - WINVER needs defined for VC 7.1 will complain and define it to 0x0501 (Windows XP #ifndef WINVER #define WINVER 0x0400 // Windows 95 #endif // WINVER #ifdef _AFXDLL #include typedef CString String; #else #include #include typedef std::string String; #endif class AFX_EXT_CLASS CBase64Coder { // Internal bucket class. class TempBucket { public: BYTE nData[4]; BYTE nSize; void Clear() { ::ZeroMemory(nData, 4); nSize = 0; }; }; PBYTE m_pDBuffer; PBYTE m_pEBuffer; DWORD m_nDBufLen; DWORD m_nEBufLen; DWORD m_nDDataLen; DWORD m_nEDataLen; public: CBase64Coder(); virtual ~CBase64Coder(); public: virtual void Encode(const PBYTE, DWORD); virtual void Decode(const PBYTE, DWORD); virtual void Encode(LPCTSTR sMessage); virtual void Decode(LPCTSTR sMessage); virtual LPCTSTR DecodedMessage() const; virtual LPCTSTR EncodedMessage() const; virtual PBYTE EncodedMessage(DWORD& nLenMessage) const; virtual PBYTE DecodedMessage(DWORD& nLenMessage) const; PBYTE MoveDecodeMessage(DWORD& nLenMessage); virtual void AllocEncode(DWORD); virtual void AllocDecode(DWORD); virtual void SetEncodeBuffer(const PBYTE pBuffer, DWORD nBufLen); virtual void SetDecodeBuffer(const PBYTE pBuffer, DWORD nBufLen); protected: virtual void _EncodeToBuffer(const TempBucket &Decode, PBYTE pBuffer); virtual ULONG _DecodeToBuffer(const TempBucket &Decode, PBYTE pBuffer); virtual void _EncodeRaw(TempBucket &, const TempBucket &); virtual void _DecodeRaw(TempBucket &, const TempBucket &); virtual BOOL _IsBadMimeChar(BYTE); static char m_DecodeTable[256]; static BOOL m_Init; void _Init(); }; #endif // !defined(AFX_BASE64CODER_H__B2E45717_0625_11D2_A80A_00C04FB6794C__INCLUDED_)