Serialize ArchiveManager and other code review actions

This commit is contained in:
Hamish Milne
2020-03-29 18:56:25 +01:00
parent 04aa351c40
commit 6760ea18b6
43 changed files with 102 additions and 67 deletions

View File

@@ -65,7 +65,7 @@ private:
LowPathType type;
std::vector<u8> binary;
std::string string;
std::u16string u16str{};
std::u16string u16str;
template <class Archive>
void serialize(Archive& ar, const unsigned int) {
@@ -77,18 +77,16 @@ private:
case LowPathType::Char:
ar& string;
break;
#ifdef _WIN32
case LowPathType::Wchar:
static_assert(sizeof(wchar_t) == sizeof(char16_t));
{
std::wstring wstring(reinterpret_cast<wchar_t*>(u16str.data()));
ar& wstring;
if (!Archive::is_saving::value) {
u16str = std::u16string(reinterpret_cast<char16_t*>(wstring.data()));
}
case LowPathType::Wchar: {
std::vector<char16_t> data;
if (Archive::is_saving::value) {
std::copy(u16str.begin(), u16str.end(), std::back_inserter(data));
}
break;
#endif
ar& data;
if (Archive::is_loading::value) {
u16str = std::u16string(data.data(), data.size());
}
} break;
default:
break;
}