www.pudn.com > mime.rar > CMimeString.cpp


#include "stdafx.h"
#include "CMimeString.h"



#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif


#include "CBase64Algo.h"


//-------------------------------------------------------------
//con de

CMimeString::CMimeString(PROCESSTYPE inProcessType, ENCODETYPE inEncodeType, CString &amt; inStr)
{

Init(inProcessType, inEncodeType,
(unsigned char *)(inStr.operator LPCTSTR()),
inStr.GetLength() );
}

CMimeString::CMimeString(PROCESSTYPE inProcessType, ENCODETYPE inEncodeType, unsigned char * inBuf, int inBufLen)
{
Init(inProcessType, inEncodeType, inBuf, inBufLen);
}


CMimeString::~CMimeString()
{
if( mBuf )
{
delete [] mBuf;
mBuf = 0;
}
mBufLen = 0;
}




//-------------------------------------------------------------
//interface
unsigned char * CMimeString::GetBuf(void)
{
return mBuf;
}

int CMimeString::GetBufLen(void)
{
return mBufLen;
}

CMimeString::operator LPCTSTR() const
{
return (LPCTSTR)mBuf;
}

unsigned char * CMimeString::GetFirstPart(int inPartLen)
{
mPartLen = inPartLen;

mNextPart = 0;
return GetNextPart();
}

unsigned char * CMimeString::GetNextPart(void)
{
if( ( mBufLen - mNextPart * mPartLen ) > 0 )
{
if( mNextPart != 0)
{
mBuf[mNextPart * mPartLen] = mSaveCut;//
}
unsigned char * p = mBuf + mPartLen * mNextPart;
mNextPart ++;
if( ( mBufLen - mNextPart * mPartLen ) > 0 )
{
mSaveCut = mBuf[mPartLen * mNextPart];//
mBuf[mPartLen * mNextPart] = '\0';//
}
return p;
}
else
{
return 0;
}
}

//-------------------------------------------------------------
//helper

void CMimeString::Init(PROCESSTYPE inProcessType, ENCODETYPE inEncodeType, unsigned char * inBuf, int inBufLen)
{
mBuf = 0;
mBufLen = 0;

if( inEncodeType == WYMIME )
{
mAlgo = new CMimeAlgo();
}
else if( inEncodeType == BASE64 )
{
mAlgo = new CBase64Algo();
}

if( inProcessType == ENCODING )
{
mAlgo->Encode(&amt;mBuf, mBufLen, inBuf, inBufLen);
}
else if( inProcessType == DECODING )
{
mAlgo->Decode(&amt;mBuf, mBufLen, inBuf, inBufLen);
}
}

//-------------------------------------------------------------