diff --git a/GlosSIConfig/VDFParser.h b/GlosSIConfig/VDFParser.h index 3bdaec6..4300611 100644 --- a/GlosSIConfig/VDFParser.h +++ b/GlosSIConfig/VDFParser.h @@ -87,12 +87,40 @@ namespace VDFParser const uint8_t type_id = _TID; const char* const key = _KEY; type value; + VDFKeyPair(const VDFKeyPair& other) + { + value = other.value; + }; + VDFKeyPair(VDFKeyPair&& other) + { + value = std::move(other.value); + }; + VDFKeyPair& operator=(const VDFKeyPair& other) + { + value = other.value; + return *this; + } + VDFKeyPair& operator=(VDFKeyPair&& other) + { + value = std::move(other.value); + return *this; + } }; template struct VDFIdx { VDFIdx() {}; + VDFIdx(const VDFIdx& other) + { + data[0] = other.data[0]; + data[1] = other.data[1]; + }; + VDFIdx(VDFIdx&& other) + { + data[0] = std::move(other.data[0]); + data[1] = std::move(other.data[1]); + }; VDFIdx(int idx) { if (idx > 99) @@ -120,18 +148,50 @@ namespace VDFParser return res; } int res = 0; - data[0] -= initialByte; - std::from_chars(&data[0], &data[1], res); - data[0] += initialByte; + char copy[2] = { data[0] - initialByte, data[1]}; + std::from_chars(©[0], ©[1], res); return res; } + + VDFIdx& operator=(const VDFIdx& other) + { + data[0] = other.data[0]; + data[1] = other.data[1]; + return *this; + } + VDFIdx& operator=(VDFIdx&& other) + { + data[0] = std::move(other.data[0]); + data[1] = std::move(other.data[1]); + return *this; + } }; struct ShortcutTag { + ShortcutTag() {}; + ShortcutTag(const ShortcutTag& other) + { + value = other.value; + }; + ShortcutTag(ShortcutTag&& other) + { + value = std::move(other.value); + }; VDFIdx<0x01> idx; // I Hope this is how it works... See VDFIdx std::string value; const uint16_t end_marker = 0x0808; + + ShortcutTag& operator=(const ShortcutTag& other) + { + value = other.value; + return *this; + } + ShortcutTag& operator=(ShortcutTag&& other) + { + value = std::move(other.value); + return *this; + } }; struct Shortcut @@ -153,14 +213,55 @@ namespace VDFParser VDFKeyPair DevkitOverrideAppID{ 0 }; // VDFKeyPair LastPlayTime{ 0 }; // VDFKeyPair, VDFTypeId::StringList> tags{ }; + Shortcut& operator=(const Shortcut& other) + { + idx = other.idx; + appId = other.appId; + appName = other.appName; + exe = other.exe; + StartDir = other.StartDir; + icon = other.icon; + ShortcutPath = other.ShortcutPath; + LaunchOptions = other.LaunchOptions; + LaunchOptions = other.LaunchOptions; + IsHidden = other.IsHidden; + AllowDesktopConfig = other.AllowDesktopConfig; + AllowOverlay = other.AllowOverlay; + openvr = other.openvr; + Devkit = other.Devkit; + DevkitGameID = other.DevkitGameID; + DevkitOverrideAppID = other.DevkitOverrideAppID; + LastPlayTime = other.LastPlayTime; + tags = other.tags; + return *this; + } }; struct VDFFile { + VDFFile(){}; + VDFFile(const VDFFile& other) + { + shortcuts = other.shortcuts; + }; + VDFFile(VDFFile&& other) + { + shortcuts = std::move(other.shortcuts); + }; const uint8_t first_byte = 0x00; const std::string identifier = "shortcuts"; std::vector shortcuts; const uint16_t end_marker = 0x0808; + VDFFile& operator=(const VDFFile& other) + { + shortcuts = other.shortcuts; + return *this; + } + VDFFile& operator=(VDFFile&& other) + { + shortcuts = std::move(other.shortcuts); + return *this; + } }; class Parser