#pragma once #include #include #include "SVN.h" #include "SerializeUtils.h" class CUrlInfo { public: CUrlInfo(void); ~CUrlInfo(void); wstring username; wstring password; wstring url; wstring name; __time64_t lastchecked; svn_revnum_t lastcheckedrev; int minutesinterval; bool fetchdiffs; map logentries; bool Save(HANDLE hFile) const { if (!CSerializeUtils::SaveString(hFile, username)) return false; if (!CSerializeUtils::SaveString(hFile, password)) return false; if (!CSerializeUtils::SaveString(hFile, name)) return false; if (!CSerializeUtils::SaveNumber(hFile, lastchecked)) return false; if (!CSerializeUtils::SaveNumber(hFile, lastcheckedrev)) return false; if (!CSerializeUtils::SaveNumber(hFile, minutesinterval)) return false; if (!CSerializeUtils::SaveNumber(hFile, fetchdiffs)) return false; if (!CSerializeUtils::SaveNumber(hFile, CSerializeUtils::SerializeType_Map)) return false; if (!CSerializeUtils::SaveNumber(hFile, logentries.size())) return false; for (map::const_iterator it = logentries.begin(); it != logentries.end(); ++it) { if (!CSerializeUtils::SaveNumber(hFile, it->first)) return false; if (!it->second.Save(hFile)) return false; } return true; } bool Load(HANDLE hFile) { unsigned __int64 value = 0; if (!CSerializeUtils::LoadString(hFile, username)) return false; if (!CSerializeUtils::LoadString(hFile, password)) return false; if (!CSerializeUtils::LoadString(hFile, name)) return false; if (!CSerializeUtils::LoadNumber(hFile, value)) return false; lastchecked = value; if (!CSerializeUtils::LoadNumber(hFile, value)) return false; lastcheckedrev = (svn_revnum_t)value; if (!CSerializeUtils::LoadNumber(hFile, value)) return false; minutesinterval = (int)value; if (!CSerializeUtils::LoadNumber(hFile, value)) return false; fetchdiffs = !!value; logentries.clear(); if (!CSerializeUtils::LoadNumber(hFile, value)) return false; if (CSerializeUtils::SerializeType_Map == value) { if (CSerializeUtils::LoadNumber(hFile, value)) { for (unsigned __int64 i=0; i infos; bool Save(HANDLE hFile) const { // first save the size of the map if (!CSerializeUtils::SaveNumber(hFile, CSerializeUtils::SerializeType_Map)) return false; if (!CSerializeUtils::SaveNumber(hFile, infos.size())) return false; for (map::const_iterator it = infos.begin(); it != infos.end(); ++it) { if (!CSerializeUtils::SaveString(hFile, it->first)) return false; if (!it->second.Save(hFile)) return false; } return true; } bool Load(HANDLE hFile) { infos.clear(); unsigned __int64 value = 0; if (!CSerializeUtils::LoadNumber(hFile, value)) return false; if (CSerializeUtils::SerializeType_Map == value) { if (CSerializeUtils::LoadNumber(hFile, value)) { for (unsigned __int64 i=0; i