From beec40f178f3eb324d96378a5a9b18ebe407f171 Mon Sep 17 00:00:00 2001 From: Lioncash Date: Fri, 24 Feb 2017 22:56:33 -0500 Subject: [PATCH] IniFile: Handle s64/u64 values --- Source/Android/jni/ButtonManager.cpp | 3 + Source/Core/Common/IniFile.cpp | 63 ++++++++++++++++++- Source/Core/Common/IniFile.h | 27 +++----- Source/Core/Common/StringUtil.cpp | 19 ++++++ Source/Core/Common/StringUtil.h | 1 + Source/Core/Core/BootManager.cpp | 6 +- Source/Core/Core/HW/EXI/EXI_DeviceAGP.cpp | 1 + Source/Core/Core/HW/GCMemcardRaw.cpp | 1 + Source/Core/Core/HotkeyManager.cpp | 1 + Source/Core/Core/NetPlayClient.cpp | 1 + Source/Core/Core/WiiRoot.cpp | 4 +- .../DolphinWX/Config/GameCubeConfigPane.cpp | 1 + .../DolphinWX/Config/InterfaceConfigPane.cpp | 4 +- Source/Core/DolphinWX/Frame.cpp | 23 +++---- .../Core/DolphinWX/Input/InputConfigDiag.cpp | 1 + Source/Core/DolphinWX/NetPlay/NetWindow.cpp | 1 + Source/Core/DolphinWX/X11Utils.cpp | 11 ++-- Source/Core/DolphinWX/X11Utils.h | 3 + Source/Core/VideoCommon/AVIDump.cpp | 2 + 19 files changed, 133 insertions(+), 40 deletions(-) diff --git a/Source/Android/jni/ButtonManager.cpp b/Source/Android/jni/ButtonManager.cpp index 36d21684ce..6f6b812494 100644 --- a/Source/Android/jni/ButtonManager.cpp +++ b/Source/Android/jni/ButtonManager.cpp @@ -2,7 +2,10 @@ // Licensed under GPLv2+ // Refer to the license.txt file included. +#include +#include #include +#include #include "Common/FileUtil.h" #include "Common/IniFile.h" diff --git a/Source/Core/Common/IniFile.cpp b/Source/Core/Common/IniFile.cpp index e45ae15729..4285af64bc 100644 --- a/Source/Core/Common/IniFile.cpp +++ b/Source/Core/Common/IniFile.cpp @@ -2,9 +2,10 @@ // Licensed under GPLv2+ // Refer to the license.txt file included. -// see IniFile.h +#include "Common/IniFile.h" #include +#include #include #include #include @@ -15,7 +16,6 @@ #include "Common/CommonTypes.h" #include "Common/FileUtil.h" -#include "Common/IniFile.h" #include "Common/StringUtil.h" void IniFile::ParseLine(const std::string& line, std::string* keyOut, std::string* valueOut) @@ -73,6 +73,41 @@ void IniFile::Section::Set(const std::string& key, const std::vector void Set(const std::string& key, T newValue, const T defaultValue) { @@ -69,7 +58,9 @@ public: bool Get(const std::string& key, std::string* value, const std::string& defaultValue = NULL_STRING) const; bool Get(const std::string& key, int* value, int defaultValue = 0) const; + bool Get(const std::string& key, s64* value, s64 default_value = 0) const; bool Get(const std::string& key, u32* value, u32 defaultValue = 0) const; + bool Get(const std::string& key, u64* value, u64 default_value = 0) const; bool Get(const std::string& key, bool* value, bool defaultValue = false) const; bool Get(const std::string& key, float* value, float defaultValue = 0.0f) const; bool Get(const std::string& key, double* value, double defaultValue = 0.0) const; diff --git a/Source/Core/Common/StringUtil.cpp b/Source/Core/Common/StringUtil.cpp index 67f88be160..d08e98b7ff 100644 --- a/Source/Core/Common/StringUtil.cpp +++ b/Source/Core/Common/StringUtil.cpp @@ -247,6 +247,25 @@ bool TryParse(const std::string& str, u32* const output) return true; } +bool TryParse(const std::string& str, u64* const output) +{ + char* end_ptr = nullptr; + + // Set errno to a clean slate + errno = 0; + + u64 value = strtoull(str.c_str(), &end_ptr, 0); + + if (end_ptr == nullptr || *end_ptr != '\0') + return false; + + if (errno == ERANGE) + return false; + + *output = value; + return true; +} + bool TryParse(const std::string& str, bool* const output) { float value; diff --git a/Source/Core/Common/StringUtil.h b/Source/Core/Common/StringUtil.h index 4f8f602933..bb123cd864 100644 --- a/Source/Core/Common/StringUtil.h +++ b/Source/Core/Common/StringUtil.h @@ -61,6 +61,7 @@ std::string StringFromBool(bool value); bool TryParse(const std::string& str, bool* output); bool TryParse(const std::string& str, u32* output); +bool TryParse(const std::string& str, u64* output); template static bool TryParse(const std::string& str, N* const output) diff --git a/Source/Core/Core/BootManager.cpp b/Source/Core/Core/BootManager.cpp index 57c9311632..ec894b285c 100644 --- a/Source/Core/Core/BootManager.cpp +++ b/Source/Core/Core/BootManager.cpp @@ -16,8 +16,8 @@ // Boot.cpp CBoot::BootUp() // CBoot::EmulatedBS2_Wii() / GC() or Load_BS2() -// Includes -// ---------------- +#include "Core/BootManager.h" + #include #include #include @@ -28,8 +28,8 @@ #include "Common/IniFile.h" #include "Common/Logging/Log.h" #include "Common/MsgHandler.h" +#include "Common/StringUtil.h" -#include "Core/BootManager.h" #include "Core/ConfigManager.h" #include "Core/Core.h" #include "Core/HW/EXI/EXI.h" diff --git a/Source/Core/Core/HW/EXI/EXI_DeviceAGP.cpp b/Source/Core/Core/HW/EXI/EXI_DeviceAGP.cpp index 124ab0df4e..a991b49df3 100644 --- a/Source/Core/Core/HW/EXI/EXI_DeviceAGP.cpp +++ b/Source/Core/Core/HW/EXI/EXI_DeviceAGP.cpp @@ -11,6 +11,7 @@ #include "Common/CommonTypes.h" #include "Common/FileUtil.h" #include "Common/Logging/Log.h" +#include "Common/StringUtil.h" #include "Core/ConfigManager.h" CEXIAgp::CEXIAgp(int index) diff --git a/Source/Core/Core/HW/GCMemcardRaw.cpp b/Source/Core/Core/HW/GCMemcardRaw.cpp index ccb1566ee1..344964b7cb 100644 --- a/Source/Core/Core/HW/GCMemcardRaw.cpp +++ b/Source/Core/Core/HW/GCMemcardRaw.cpp @@ -11,6 +11,7 @@ #include "Common/CommonTypes.h" #include "Common/FileUtil.h" #include "Common/Logging/Log.h" +#include "Common/StringUtil.h" #include "Common/Thread.h" #include "Core/ConfigManager.h" #include "Core/Core.h" diff --git a/Source/Core/Core/HotkeyManager.cpp b/Source/Core/Core/HotkeyManager.cpp index 07a34bf4b5..cf95c3fdc6 100644 --- a/Source/Core/Core/HotkeyManager.cpp +++ b/Source/Core/Core/HotkeyManager.cpp @@ -9,6 +9,7 @@ #include "Common/Common.h" #include "Common/CommonTypes.h" +#include "Common/StringUtil.h" #include "InputCommon/ControllerEmu/Control/Input.h" #include "InputCommon/ControllerEmu/ControlGroup/Buttons.h" diff --git a/Source/Core/Core/NetPlayClient.cpp b/Source/Core/Core/NetPlayClient.cpp index 0c6cb246af..d3f253fb74 100644 --- a/Source/Core/Core/NetPlayClient.cpp +++ b/Source/Core/Core/NetPlayClient.cpp @@ -14,6 +14,7 @@ #include "Common/ENetUtil.h" #include "Common/MD5.h" #include "Common/MsgHandler.h" +#include "Common/StringUtil.h" #include "Common/Timer.h" #include "Core/ConfigManager.h" #include "Core/HW/EXI/EXI_DeviceIPL.h" diff --git a/Source/Core/Core/WiiRoot.cpp b/Source/Core/Core/WiiRoot.cpp index aac148e2cb..c2cddfee18 100644 --- a/Source/Core/Core/WiiRoot.cpp +++ b/Source/Core/Core/WiiRoot.cpp @@ -2,17 +2,19 @@ // Licensed under GPLv2+ // Refer to the license.txt file included. +#include "Core/WiiRoot.h" + #include #include "Common/CommonPaths.h" #include "Common/FileUtil.h" #include "Common/Logging/Log.h" #include "Common/NandPaths.h" +#include "Common/StringUtil.h" #include "Common/SysConf.h" #include "Core/ConfigManager.h" #include "Core/Movie.h" #include "Core/NetPlayClient.h" -#include "Core/WiiRoot.h" #ifdef _WIN32 #include diff --git a/Source/Core/DolphinWX/Config/GameCubeConfigPane.cpp b/Source/Core/DolphinWX/Config/GameCubeConfigPane.cpp index 761956fd5d..cfd580934c 100644 --- a/Source/Core/DolphinWX/Config/GameCubeConfigPane.cpp +++ b/Source/Core/DolphinWX/Config/GameCubeConfigPane.cpp @@ -19,6 +19,7 @@ #include "Common/Common.h" #include "Common/CommonPaths.h" #include "Common/FileUtil.h" +#include "Common/StringUtil.h" #include "Core/ConfigManager.h" #include "Core/Core.h" #include "Core/HW/EXI/EXI.h" diff --git a/Source/Core/DolphinWX/Config/InterfaceConfigPane.cpp b/Source/Core/DolphinWX/Config/InterfaceConfigPane.cpp index c78b0b811a..aaed813d4d 100644 --- a/Source/Core/DolphinWX/Config/InterfaceConfigPane.cpp +++ b/Source/Core/DolphinWX/Config/InterfaceConfigPane.cpp @@ -2,6 +2,8 @@ // Licensed under GPLv2+ // Refer to the license.txt file included. +#include "DolphinWX/Config/InterfaceConfigPane.h" + #include #include #include @@ -20,9 +22,9 @@ #include "Common/FileSearch.h" #include "Common/FileUtil.h" #include "Common/MsgHandler.h" +#include "Common/StringUtil.h" #include "Core/ConfigManager.h" #include "Core/HotkeyManager.h" -#include "DolphinWX/Config/InterfaceConfigPane.h" #include "DolphinWX/Frame.h" #include "DolphinWX/Input/InputConfigDiag.h" #include "DolphinWX/WxUtils.h" diff --git a/Source/Core/DolphinWX/Frame.cpp b/Source/Core/DolphinWX/Frame.cpp index f35e964706..90020c9005 100644 --- a/Source/Core/DolphinWX/Frame.cpp +++ b/Source/Core/DolphinWX/Frame.cpp @@ -25,17 +25,6 @@ #include #include -#include "DolphinWX/Config/ConfigMain.h" -#include "DolphinWX/Debugger/BreakpointDlg.h" -#include "DolphinWX/Debugger/CodeWindow.h" -#include "DolphinWX/Debugger/MemoryCheckDlg.h" -#include "DolphinWX/GameListCtrl.h" -#include "DolphinWX/Globals.h" -#include "DolphinWX/LogWindow.h" -#include "DolphinWX/Main.h" -#include "DolphinWX/TASInputDlg.h" -#include "DolphinWX/WxUtils.h" - #if defined(__unix__) || defined(__unix) || defined(__APPLE__) #include #endif @@ -49,6 +38,7 @@ #include "Common/FileUtil.h" #include "Common/Flag.h" #include "Common/Logging/ConsoleListener.h" +#include "Common/StringUtil.h" #include "Common/Thread.h" #include "Core/ConfigManager.h" @@ -63,6 +53,17 @@ #include "Core/Movie.h" #include "Core/State.h" +#include "DolphinWX/Config/ConfigMain.h" +#include "DolphinWX/Debugger/BreakpointDlg.h" +#include "DolphinWX/Debugger/CodeWindow.h" +#include "DolphinWX/Debugger/MemoryCheckDlg.h" +#include "DolphinWX/GameListCtrl.h" +#include "DolphinWX/Globals.h" +#include "DolphinWX/LogWindow.h" +#include "DolphinWX/Main.h" +#include "DolphinWX/TASInputDlg.h" +#include "DolphinWX/WxUtils.h" + #include "InputCommon/GCPadStatus.h" #include "VideoCommon/OnScreenDisplay.h" diff --git a/Source/Core/DolphinWX/Input/InputConfigDiag.cpp b/Source/Core/DolphinWX/Input/InputConfigDiag.cpp index 06b95e8f49..dacddb51e5 100644 --- a/Source/Core/DolphinWX/Input/InputConfigDiag.cpp +++ b/Source/Core/DolphinWX/Input/InputConfigDiag.cpp @@ -40,6 +40,7 @@ #include "Common/FileUtil.h" #include "Common/IniFile.h" #include "Common/MsgHandler.h" +#include "Common/StringUtil.h" #include "Core/Core.h" #include "Core/HW/GCKeyboard.h" diff --git a/Source/Core/DolphinWX/NetPlay/NetWindow.cpp b/Source/Core/DolphinWX/NetPlay/NetWindow.cpp index 7d55efbee1..25c015877c 100644 --- a/Source/Core/DolphinWX/NetPlay/NetWindow.cpp +++ b/Source/Core/DolphinWX/NetPlay/NetWindow.cpp @@ -35,6 +35,7 @@ #include "Common/FileUtil.h" #include "Common/IniFile.h" #include "Common/MsgHandler.h" +#include "Common/StringUtil.h" #include "Core/ConfigManager.h" #include "Core/HW/EXI/EXI_Device.h" diff --git a/Source/Core/DolphinWX/X11Utils.cpp b/Source/Core/DolphinWX/X11Utils.cpp index 7093e12492..76a78df48c 100644 --- a/Source/Core/DolphinWX/X11Utils.cpp +++ b/Source/Core/DolphinWX/X11Utils.cpp @@ -2,20 +2,23 @@ // Licensed under GPLv2+ // Refer to the license.txt file included. +#include "DolphinWX/X11Utils.h" + +#include +#include +#include #include +#include #include #include #include "Common/Logging/Log.h" +#include "Common/StringUtil.h" #include "Core/ConfigManager.h" #include "Core/Core.h" -#include "DolphinWX/X11Utils.h" extern char** environ; -#include -#include - namespace X11Utils { bool ToggleFullscreen(Display* dpy, Window win) diff --git a/Source/Core/DolphinWX/X11Utils.h b/Source/Core/DolphinWX/X11Utils.h index e87e032c03..ea3e53fce5 100644 --- a/Source/Core/DolphinWX/X11Utils.h +++ b/Source/Core/DolphinWX/X11Utils.h @@ -4,6 +4,9 @@ #pragma once +#include +#include + #if defined(HAVE_XRANDR) && HAVE_XRANDR #include #endif diff --git a/Source/Core/VideoCommon/AVIDump.cpp b/Source/Core/VideoCommon/AVIDump.cpp index d82de483fb..dd517930c3 100644 --- a/Source/Core/VideoCommon/AVIDump.cpp +++ b/Source/Core/VideoCommon/AVIDump.cpp @@ -6,6 +6,7 @@ #define __STDC_CONSTANT_MACROS 1 #endif +#include #include extern "C" { @@ -18,6 +19,7 @@ extern "C" { #include "Common/FileUtil.h" #include "Common/Logging/Log.h" #include "Common/MsgHandler.h" +#include "Common/StringUtil.h" #include "Core/ConfigManager.h" #include "Core/HW/SystemTimers.h"