64 lines
1.5 KiB
C
64 lines
1.5 KiB
C
|
// MLSWalk.h : Declaration of the CMLStrWalkW and CMLStrWalkA
|
||
|
|
||
|
#ifndef __MLSWALK_H_
|
||
|
#define __MLSWALK_H_
|
||
|
|
||
|
/////////////////////////////////////////////////////////////////////////////
|
||
|
// CMLStrWalkW
|
||
|
|
||
|
class CMLStrWalkW
|
||
|
{
|
||
|
public:
|
||
|
inline CMLStrWalkW(IMLangStringWStr* pMLStrW, long lPos, long lLen, long lFlags = MLSTR_READ, BOOL fCanStopAtMiddle = FALSE);
|
||
|
BOOL Lock(HRESULT& rhr);
|
||
|
void Unlock(HRESULT& rhr, long lActualLen = 0);
|
||
|
inline WCHAR* GetStr(void);
|
||
|
inline long GetCCh(void) const;
|
||
|
long GetPos(void) const {return m_lPos + m_lDoneLen;}
|
||
|
long GetLen(void) const {return m_lLen - m_lDoneLen;}
|
||
|
long GetDoneLen(void) const {return m_lDoneLen;}
|
||
|
|
||
|
protected:
|
||
|
IMLangStringWStr* m_pMLStr;
|
||
|
BOOL m_fCanStopAtMiddle;
|
||
|
long m_lPos;
|
||
|
long m_lLen;
|
||
|
long m_lFlags;
|
||
|
long m_lDoneLen;
|
||
|
WCHAR* m_pszBuf;
|
||
|
long m_cchBuf;
|
||
|
long m_lLockLen;
|
||
|
};
|
||
|
|
||
|
/////////////////////////////////////////////////////////////////////////////
|
||
|
// CMLStrWalkW inline functions
|
||
|
|
||
|
CMLStrWalkW::CMLStrWalkW(IMLangStringWStr* pMLStr, long lPos, long lLen, long lFlags, BOOL fCanStopAtMiddle) :
|
||
|
m_pMLStr(pMLStr),
|
||
|
m_fCanStopAtMiddle(fCanStopAtMiddle)
|
||
|
{
|
||
|
m_lPos = lPos;
|
||
|
m_lLen = lLen;
|
||
|
m_lFlags = lFlags;
|
||
|
m_lDoneLen = 0;
|
||
|
|
||
|
m_pszBuf = NULL; // Mark as it's not locked
|
||
|
}
|
||
|
|
||
|
WCHAR* CMLStrWalkW::GetStr(void)
|
||
|
{
|
||
|
ASSERT(m_pszBuf); // Not locked
|
||
|
return m_pszBuf;
|
||
|
}
|
||
|
|
||
|
long CMLStrWalkW::GetCCh(void) const
|
||
|
{
|
||
|
ASSERT(m_pszBuf); // Not locked
|
||
|
if (m_pszBuf)
|
||
|
return m_cchBuf;
|
||
|
else
|
||
|
return 0;
|
||
|
}
|
||
|
|
||
|
#endif //__MLSWALK_H_
|