MeVisLabToolboxReference
MeVisLab/Standard/Sources/ML/MLParser/mlXMLParser/base64/Base64Coder.h
Go to the documentation of this file.
00001 // **InsertLicense** code
00002 //--------------------------------------------------------------------------------------
00006 
00009 //--------------------------------------------------------------------------------------
00010 
00011 
00012 #if !defined(AFX_BASE64CODER_H__B2E45717_0625_11D2_A80A_00C04FB6794C__INCLUDED_)
00013 #define AFX_BASE64CODER_H__B2E45717_0625_11D2_A80A_00C04FB6794C__INCLUDED_
00014 
00015 
00016 // needs <string>
00017 #include "../mlXMLParserSystem.h"
00018 
00020 class Base64Coder
00021 {
00023   class TempBucket
00024   {
00025   public:
00026     unsigned char   nData[4];
00027     unsigned char   nSize;
00028     void    Clear() { memset(nData,0,4); nSize = 0; };
00029   };
00030 
00031   unsigned char*        m_pDBuffer;
00032   unsigned char*        m_pEBuffer;
00033   unsigned long         m_nDBufLen;
00034   unsigned long         m_nEBufLen;
00035   unsigned long         m_nDDataLen;
00036   unsigned long         m_nEDataLen;
00037 
00038 public:
00039   Base64Coder();
00040   virtual ~Base64Coder();
00041 
00042 public:
00043   virtual void    Encode(const unsigned char*, unsigned long);
00044   virtual void    Decode(const unsigned char*, unsigned long);
00045   virtual void    Encode(const char* sMessage);
00046   virtual void    Decode(const char* sMessage);
00047 
00048   virtual unsigned long   DecodedMessageSize() const;
00049   virtual unsigned long   EncodedMessageSize() const;
00050 
00051   virtual const char* DecodedMessage() const;
00052   virtual const char* EncodedMessage() const;
00053 
00054   virtual const char* AdoptDecodedMessage();
00055   virtual const char* AdoptEncodedMessage();
00056 
00057   virtual void    AllocEncode(unsigned long);
00058   virtual void    AllocDecode(unsigned long);
00059   virtual void    SetEncodeBuffer(const unsigned char* pBuffer, unsigned long nBufLen);
00060   virtual void    SetDecodeBuffer(const unsigned char* pBuffer, unsigned long nBufLen);
00061 
00062 protected:
00063   virtual void    _EncodeToBuffer(const TempBucket &Decode, unsigned char* pBuffer);
00064   virtual unsigned long   _DecodeToBuffer(const TempBucket &Decode, unsigned char* pBuffer);
00065   virtual void    _EncodeRaw(TempBucket &, const TempBucket &);
00066   virtual void    _DecodeRaw(TempBucket &, const TempBucket &);
00067   virtual bool    _IsBadMimeChar(unsigned char);
00068 
00069   static  char    m_DecodeTable[256];
00070   static  bool    m_Init;
00071   void           _Init();
00072 };
00073 
00074 #endif // !defined(AFX_BASE64CODER_H__B2E45717_0625_11D2_A80A_00C04FB6794C__INCLUDED_)