#include "convbase.h" class CInccHzGbIn : public CINetCodeConverter { private: BOOL (CInccHzGbIn::*m_pfnConv)(UCHAR tc); BOOL (CInccHzGbIn::*m_pfnCleanUp)(); BOOL m_fGBMode; UCHAR m_tcLeadByte; UINT m_nESCBytes; /* # bytes of ESC sequence */ public: CInccHzGbIn(); CInccHzGbIn(UINT uCodePage, int nCodeSet); ~CInccHzGbIn() {} virtual HRESULT ConvertChar(UCHAR tc, int cchSrc=-1); virtual BOOL CleanUp(); virtual int GetUnconvertBytes(); virtual DWORD GetConvertMode(); virtual void SetConvertMode(DWORD mode); private: void Reset(); BOOL ConvMain(UCHAR tc); BOOL CleanUpMain(); BOOL ConvTilde(UCHAR tc); BOOL CleanUpTilde(); BOOL ConvDoubleByte(UCHAR tc); BOOL CleanUpDoubleByte(); }; class CInccHzGbOut : public CINetCodeConverter { private: BOOL m_fDoubleByte; UCHAR m_tcLeadByte; BOOL m_fGBMode; DWORD _dwFlag; WCHAR *_lpFallBack; public: CInccHzGbOut(UINT uCodePage, int nCodeSet, DWORD dwFlag, WCHAR *lpFallBack); ~CInccHzGbOut() {} virtual HRESULT ConvertChar(UCHAR tc, int cchSrc=-1); virtual BOOL CleanUp(); virtual int GetUnconvertBytes(); virtual DWORD GetConvertMode(); virtual void SetConvertMode(DWORD mode); private: void Reset(); };