Exemplo n.º 1
0
void CWordArray::Serialize(CArchive& ar)
{
	UINT_PTR nWORDsLeft;
	UINT nWORDsToWrite;
	UINT nWORDsToRead;
	LPWORD pwData;

	ASSERT_VALID(this);

	CObject::Serialize(ar);

	if (ar.IsStoring())
	{
		ar.WriteCount(m_nSize);
		nWORDsLeft = m_nSize;
		pwData = m_pData;
		while(nWORDsLeft > 0)
		{
			nWORDsToWrite = UINT(min(nWORDsLeft, INT_MAX/sizeof(WORD)));
			ar.Write(pwData, nWORDsToWrite*sizeof(WORD));
			nWORDsLeft -= nWORDsToWrite;
			pwData += nWORDsToWrite;
		}		
	}
	else
	{
		DWORD_PTR nOldSize = ar.ReadCount();
		SetSize(nOldSize);
		nWORDsLeft = m_nSize;
		pwData = m_pData;
		while(nWORDsLeft > 0)
		{
			nWORDsToRead = UINT(min( nWORDsLeft, INT_MAX/sizeof(WORD)));
			ar.EnsureRead(pwData, nWORDsToRead*sizeof(WORD));
			nWORDsLeft -= nWORDsToRead;
			pwData += nWORDsToRead;
		}
	}
}