www.pudn.com > ZJMailer > TextBuffer.h


// TextBuffer.h: interface for the CTextBuffer class. 
// 
////////////////////////////////////////////////////////////////////// 
 
#if !defined(AFX_TEXTBUFFER_H__59994FFA_0312_4A4A_9986_244CDAC6C748__INCLUDED_) 
#define AFX_TEXTBUFFER_H__59994FFA_0312_4A4A_9986_244CDAC6C748__INCLUDED_ 
 
#if _MSC_VER > 1000 
#pragma once 
#endif // _MSC_VER > 1000 
 
#ifndef __AFXPRIV_H__ 
#pragma message("SMTP classes requires afxpriv.h in your PCH") 
#endif 
 
//=========================================================== 
// class name: CTextBuffer 
// 
// 功能: 
//		CBase64Buffer 基类,处理基本的数据操作。 
// 自动管理缓冲区,包括自动分配,自动释放。 
class CTextBuffer   
{ 
public: 
	// 获取缓冲区字符长度 
	int GetBufferLength() const; 
 
	// 分配缓冲区 
	bool AllocBuffer(int size); 
 
	// 获取缓冲区地址 
	char * GetBuffer(); 
 
	// 释放缓冲区 
	void ReleaseBuffer(); 
	 
	// 设置缓冲区字符 
	bool SetBuffer(TCHAR * text); 
 
	// 构造/析构 
	CTextBuffer(TCHAR * text); 
 
	CTextBuffer(); 
	virtual ~CTextBuffer(); 
 
	// 纯虚函数,加码/解码 接口 
	// 由派生类实现 
	virtual bool Encode() = 0; 
	virtual bool Decode() = 0; 
 
protected: 
	// 缓冲区长度 
	int m_innerLength; 
 
	// 缓冲区指针 
	char * m_innerBuffer; 
}; 
 
 
//============================================================= 
// class name: CBase64Buffer 
// 
// 功能: 
//		由 CTextBuffer 基类派生,实现了接口 Decode/Encode 
// 用来实现 Base64 编码 
class CBase64Buffer : public CTextBuffer   
{ 
public: 
	virtual bool Encode(); 
	virtual bool Decode(); 
 
	CBase64Buffer(TCHAR * text); 
	CBase64Buffer(); 
	virtual ~CBase64Buffer(); 
 
protected: 
	BYTE FindTab(char ch); 
	BYTE EncodeChar(int idx, int subIdx); 
}; 
 
#endif // !defined(AFX_TEXTBUFFER_H__59994FFA_0312_4A4A_9986_244CDAC6C748__INCLUDED_)