void vmsDataFile::SaveToFile(vmsFile &file, vmsDataFileItem &item)
{
	
	file.WriteString (item.strName);

	

	
	int iDT = (int)item.vt.type ();
	file.Write (&iDT, sizeof (iDT));

	
	switch (item.vt.type ())
	{
	case VVT_EMPTY: break;
	case VVT_INT: file.WriteInt (item.vt); break;
	case VVT_DOUBLE: file.WriteDouble (item.vt); break;
	case VVT_INT64: file.WriteInt64 (item.vt); break;
	case VVT_ASTRING: file.WriteString (item.vt); break;
	case VVT_LPBYTE: 
		file.WriteInt (item.vt.bytebuffersize ());
		file.Write ((LPBYTE)item.vt, item.vt.bytebuffersize ()); 
		break;
	default: ASSERT (false); 
	}
}
void vmsDataFile::LoadFromFile(vmsFile &file, vmsDataFileItem &item)
{
	
	file.ReadString (item.strName);

	

	
	int enType;
	file.ReadInt (enType);

	int i; double f; __int64 i64; fsString str; 
	LPBYTE pb; int nSize;

	
	switch (enType)
	{
	case VVT_EMPTY: break;
	case VVT_INT: file.ReadInt (i); item.vt = i; break;
	case VVT_DOUBLE: file.ReadDouble (f); item.vt = f; break;
	case VVT_INT64: file.ReadInt64 (i64); item.vt = i64; break;
	case VVT_ASTRING: file.ReadString (str); item.vt = str; break;
	case VVT_LPBYTE: 
		file.ReadInt (nSize);
		pb = new BYTE [nSize];
		file.Read (pb, nSize);
		item.vt.set (pb, nSize);
		delete [] pb;
		break;
	default: ASSERT (false); 
	}
}
Exemple #3
0
void vmsFileUtil::ReadString(vmsFile &file, fsString &str)
{
	int l = 0;
	file.Read (&l, sizeof (l));

	if (l > 100 * 1024 * 1024)	
		throw ERROR_BAD_FORMAT;

	char* psz = new char [l+1];
	try {
		file.Read (psz, l);
		psz [l] = 0;
	} catch (DWORD dw) {
		delete [] psz;
		throw dw;
	}

	str = psz;
	delete [] psz;
}
void vmsDataFile::SaveToFile(vmsFile &file, LPDATAFILETREE ptRoot)
{
	ASSERT (ptRoot != NULL);

	SaveToFile (file, ptRoot->GetData ());

	if (ptRoot->GetData ().vt.empty () == false)
		return;

	file.WriteInt (ptRoot->GetLeafCount ());

	for (int i = 0; i < ptRoot->GetLeafCount (); i++)
		SaveToFile (file, ptRoot->GetLeaf (i));
}
void vmsDataFile::LoadFromFile(vmsFile &file, LPDATAFILETREE ptRoot)
{
	ASSERT (ptRoot != NULL);

	LoadFromFile (file, ptRoot->GetData ());

	if (ptRoot->GetData ().vt.empty () == false)
		return;	

	int cLeafs;
	file.ReadInt (cLeafs);

	for (int i = 0; i < cLeafs; i++)
		LoadFromFile (file, ptRoot->AddLeaf (vmsDataFileItem ()));
}
Exemple #6
0
void vmsFileUtil::WriteString(vmsFile &file, LPCSTR psz)
{
	int l = lstrlen (psz);
	file.Write (&l, sizeof (l));
	file.Write (psz, l);
}
Exemple #7
0
void vmsFileUtil::ReadHeader(vmsFile& file, fsString& strDesc, WORD &wVersion)
{
	ReadString (file, strDesc);
	file.Read (&wVersion, sizeof (WORD));
}
Exemple #8
0
void vmsFileUtil::WriteHeader(vmsFile& file, LPCSTR pszDesc, WORD wVersion)
{
	WriteString (file, pszDesc);
	file.Write (&wVersion, sizeof (WORD));
}