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); } }
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 ())); }
void vmsFileUtil::WriteString(vmsFile &file, LPCSTR psz) { int l = lstrlen (psz); file.Write (&l, sizeof (l)); file.Write (psz, l); }
void vmsFileUtil::ReadHeader(vmsFile& file, fsString& strDesc, WORD &wVersion) { ReadString (file, strDesc); file.Read (&wVersion, sizeof (WORD)); }
void vmsFileUtil::WriteHeader(vmsFile& file, LPCSTR pszDesc, WORD wVersion) { WriteString (file, pszDesc); file.Write (&wVersion, sizeof (WORD)); }