diff --git a/src/openrct2/FileClassifier.cpp b/src/openrct2/FileClassifier.cpp index 7760afa296..788e6ea97a 100644 --- a/src/openrct2/FileClassifier.cpp +++ b/src/openrct2/FileClassifier.cpp @@ -12,6 +12,7 @@ #include "Diagnostic.h" #include "core/Console.hpp" #include "core/FileStream.h" +#include "core/Memory.hpp" #include "core/Path.hpp" #include "core/String.hpp" #include "park/ParkFile.h" diff --git a/src/openrct2/core/Crypt.CNG.cpp b/src/openrct2/core/Crypt.CNG.cpp index 6befecd7e1..139d830fa9 100644 --- a/src/openrct2/core/Crypt.CNG.cpp +++ b/src/openrct2/core/Crypt.CNG.cpp @@ -14,7 +14,10 @@ # include "../platform/Platform.h" # include "IStream.hpp" +# include +# include # include +# include # include # include # include diff --git a/src/openrct2/core/IStream.cpp b/src/openrct2/core/IStream.cpp index 86d2c6c8fb..da0b8c8a27 100644 --- a/src/openrct2/core/IStream.cpp +++ b/src/openrct2/core/IStream.cpp @@ -9,30 +9,12 @@ #include "IStream.hpp" -#include "../object/Object.h" -#include "Memory.hpp" #include "String.hpp" #include namespace OpenRCT2 { - utf8* IStream::ReadString() - { - std::vector result; - - uint8_t ch; - while ((ch = ReadValue()) != 0) - { - result.push_back(ch); - } - result.push_back(0); - - utf8* resultString = Memory::AllocateArray(result.size()); - std::copy(result.begin(), result.end(), resultString); - return resultString; - } - std::string IStream::ReadStdString() { std::string result; diff --git a/src/openrct2/core/IStream.hpp b/src/openrct2/core/IStream.hpp index 3db2a154e4..bd99afc0ca 100644 --- a/src/openrct2/core/IStream.hpp +++ b/src/openrct2/core/IStream.hpp @@ -9,8 +9,7 @@ #pragma once -#include "../object/Object.h" -#include "Memory.hpp" +#include "StringTypes.h" #include #include @@ -204,7 +203,6 @@ namespace OpenRCT2 Write(buffer, sizeof(T) * count); } - utf8* ReadString(); std::string ReadStdString(); void WriteString(const utf8* str); void WriteString(const std::string_view string); diff --git a/src/openrct2/core/MemoryStream.h b/src/openrct2/core/MemoryStream.h index 33363a52fe..014a58ab29 100644 --- a/src/openrct2/core/MemoryStream.h +++ b/src/openrct2/core/MemoryStream.h @@ -11,6 +11,7 @@ #include "IStream.hpp" +#include #include namespace OpenRCT2 diff --git a/src/openrct2/core/OrcaStream.hpp b/src/openrct2/core/OrcaStream.hpp index c29435c53d..87250bcdfe 100644 --- a/src/openrct2/core/OrcaStream.hpp +++ b/src/openrct2/core/OrcaStream.hpp @@ -9,6 +9,7 @@ #pragma once +#include "../util/Util.h" #include "../world/Location.hpp" #include "Crypt.h" #include "FileStream.h" diff --git a/src/openrct2/core/ZipAndroid.cpp b/src/openrct2/core/ZipAndroid.cpp index cfd17ca736..a57d34293d 100644 --- a/src/openrct2/core/ZipAndroid.cpp +++ b/src/openrct2/core/ZipAndroid.cpp @@ -12,6 +12,7 @@ # include "../Diagnostic.h" # include "../platform/Platform.h" # include "IStream.hpp" +# include "Memory.hpp" # include "MemoryStream.h" # include "Zip.h" diff --git a/src/openrct2/drawing/Drawing.Sprite.cpp b/src/openrct2/drawing/Drawing.Sprite.cpp index 0c57839d34..3449239987 100644 --- a/src/openrct2/drawing/Drawing.Sprite.cpp +++ b/src/openrct2/drawing/Drawing.Sprite.cpp @@ -15,6 +15,7 @@ #include "../PlatformEnvironment.h" #include "../config/Config.h" #include "../core/FileStream.h" +#include "../core/Guard.hpp" #include "../core/MemoryStream.h" #include "../core/Path.hpp" #include "../platform/Platform.h" diff --git a/src/openrct2/network/NetworkKey.cpp b/src/openrct2/network/NetworkKey.cpp index 6f0f715675..2ead9e479d 100644 --- a/src/openrct2/network/NetworkKey.cpp +++ b/src/openrct2/network/NetworkKey.cpp @@ -13,6 +13,7 @@ # include "../Diagnostic.h" # include "../core/Crypt.h" +# include "../core/Guard.hpp" # include "../core/IStream.hpp" # include "../core/String.hpp" diff --git a/src/openrct2/object/AudioObject.cpp b/src/openrct2/object/AudioObject.cpp index a9af658a3b..ae9658cf04 100644 --- a/src/openrct2/object/AudioObject.cpp +++ b/src/openrct2/object/AudioObject.cpp @@ -13,6 +13,7 @@ #include "../Context.h" #include "../PlatformEnvironment.h" #include "../audio/AudioContext.h" +#include "../core/Guard.hpp" #include "../core/Json.hpp" #include "../core/Path.hpp" diff --git a/src/openrct2/object/BannerObject.cpp b/src/openrct2/object/BannerObject.cpp index 96c16b047c..917ccc6c20 100644 --- a/src/openrct2/object/BannerObject.cpp +++ b/src/openrct2/object/BannerObject.cpp @@ -9,6 +9,7 @@ #include "BannerObject.h" +#include "../core/Guard.hpp" #include "../core/IStream.hpp" #include "../core/Json.hpp" #include "../drawing/Drawing.h" diff --git a/src/openrct2/object/EntranceObject.cpp b/src/openrct2/object/EntranceObject.cpp index d527b8b2f7..f1a9d1a4e0 100644 --- a/src/openrct2/object/EntranceObject.cpp +++ b/src/openrct2/object/EntranceObject.cpp @@ -9,6 +9,7 @@ #include "EntranceObject.h" +#include "../core/Guard.hpp" #include "../core/IStream.hpp" #include "../core/Json.hpp" #include "../core/String.hpp" diff --git a/src/openrct2/object/FootpathRailingsObject.cpp b/src/openrct2/object/FootpathRailingsObject.cpp index f739bd6218..50ee2b6d30 100644 --- a/src/openrct2/object/FootpathRailingsObject.cpp +++ b/src/openrct2/object/FootpathRailingsObject.cpp @@ -9,6 +9,7 @@ #include "FootpathRailingsObject.h" +#include "../core/Guard.hpp" #include "../core/IStream.hpp" #include "../core/Json.hpp" diff --git a/src/openrct2/object/FootpathSurfaceObject.cpp b/src/openrct2/object/FootpathSurfaceObject.cpp index 80c808f0e5..6b855eec4c 100644 --- a/src/openrct2/object/FootpathSurfaceObject.cpp +++ b/src/openrct2/object/FootpathSurfaceObject.cpp @@ -9,6 +9,7 @@ #include "FootpathSurfaceObject.h" +#include "../core/Guard.hpp" #include "../core/IStream.hpp" #include "../core/Json.hpp" #include "../drawing/Image.h" diff --git a/src/openrct2/object/ImageTable.cpp b/src/openrct2/object/ImageTable.cpp index b32a167692..184a18b96f 100644 --- a/src/openrct2/object/ImageTable.cpp +++ b/src/openrct2/object/ImageTable.cpp @@ -15,6 +15,7 @@ #include "../PlatformEnvironment.h" #include "../core/File.h" #include "../core/FileScanner.h" +#include "../core/Guard.hpp" #include "../core/IStream.hpp" #include "../core/Json.hpp" #include "../core/Path.hpp" diff --git a/src/openrct2/object/PathAdditionObject.cpp b/src/openrct2/object/PathAdditionObject.cpp index 59f225b6d3..a4697c8aa8 100644 --- a/src/openrct2/object/PathAdditionObject.cpp +++ b/src/openrct2/object/PathAdditionObject.cpp @@ -9,6 +9,7 @@ #include "PathAdditionObject.h" +#include "../core/Guard.hpp" #include "../core/IStream.hpp" #include "../core/Json.hpp" #include "../drawing/Drawing.h" diff --git a/src/openrct2/object/PeepNamesObject.cpp b/src/openrct2/object/PeepNamesObject.cpp index 16efcb49b7..415c39c562 100644 --- a/src/openrct2/object/PeepNamesObject.cpp +++ b/src/openrct2/object/PeepNamesObject.cpp @@ -11,6 +11,7 @@ #include "../Context.h" #include "../PlatformEnvironment.h" +#include "../core/Guard.hpp" #include "../core/Json.hpp" using namespace OpenRCT2; diff --git a/src/openrct2/object/StationObject.cpp b/src/openrct2/object/StationObject.cpp index c2cde52a1b..fc7dddbad0 100644 --- a/src/openrct2/object/StationObject.cpp +++ b/src/openrct2/object/StationObject.cpp @@ -9,6 +9,7 @@ #include "StationObject.h" +#include "../core/Guard.hpp" #include "../core/IStream.hpp" #include "../core/Json.hpp" #include "../core/String.hpp" diff --git a/src/openrct2/object/StringTable.cpp b/src/openrct2/object/StringTable.cpp index 66d3e3a5ca..13eb669c22 100644 --- a/src/openrct2/object/StringTable.cpp +++ b/src/openrct2/object/StringTable.cpp @@ -10,6 +10,7 @@ #include "StringTable.h" #include "../Context.h" +#include "../core/Guard.hpp" #include "../core/IStream.hpp" #include "../core/Json.hpp" #include "../core/String.hpp" diff --git a/src/openrct2/object/TerrainEdgeObject.cpp b/src/openrct2/object/TerrainEdgeObject.cpp index 5f34ad5849..e3b0d67d03 100644 --- a/src/openrct2/object/TerrainEdgeObject.cpp +++ b/src/openrct2/object/TerrainEdgeObject.cpp @@ -10,6 +10,7 @@ #include "TerrainEdgeObject.h" #include "../Context.h" +#include "../core/Guard.hpp" #include "../core/IStream.hpp" #include "../core/Json.hpp" #include "../core/String.hpp" diff --git a/src/openrct2/object/WallObject.cpp b/src/openrct2/object/WallObject.cpp index 16a0f8a790..43e7e5141f 100644 --- a/src/openrct2/object/WallObject.cpp +++ b/src/openrct2/object/WallObject.cpp @@ -9,6 +9,7 @@ #include "WallObject.h" +#include "../core/Guard.hpp" #include "../core/IStream.hpp" #include "../core/Json.hpp" #include "../core/String.hpp" diff --git a/test/tests/IniWriterTest.cpp b/test/tests/IniWriterTest.cpp index 3bc732f2ed..606424c505 100644 --- a/test/tests/IniWriterTest.cpp +++ b/test/tests/IniWriterTest.cpp @@ -47,9 +47,8 @@ TEST_F(IniWriterTest, create_one_section) ASSERT_LE(ms.GetPosition(), 13); // Accommodate for varying-sized newline (Windows) ASSERT_EQ(ms.GetLength(), ms.GetPosition()); ms.SetPosition(0); - const char* ini = reinterpret_cast(ms.ReadString()); - ASSERT_STREQ(ini, "[OpenRCT2]" PLATFORM_NEWLINE); - Memory::Free(ini); + auto ini = ms.ReadStdString(); + ASSERT_STREQ(ini.c_str(), "[OpenRCT2]" PLATFORM_NEWLINE); } TEST_F(IniWriterTest, create_multiple_sections) @@ -67,12 +66,11 @@ TEST_F(IniWriterTest, create_multiple_sections) ASSERT_LE(ms.GetPosition(), 55); // Accommodate for varying-sized newline (Windows) ASSERT_EQ(ms.GetLength(), ms.GetPosition()); ms.SetPosition(0); - const char* ini = reinterpret_cast(ms.ReadString()); + auto ini = ms.ReadStdString(); ASSERT_STREQ( - ini, + ini.c_str(), "[OpenRCT1]" PLATFORM_NEWLINE PLATFORM_NEWLINE "[OpenRCT2]" PLATFORM_NEWLINE PLATFORM_NEWLINE "[OpenRCT3]" PLATFORM_NEWLINE PLATFORM_NEWLINE "[OpenRCT4]" PLATFORM_NEWLINE); - Memory::Free(ini); } TEST_F(IniWriterTest, create_loose_bool_entry) @@ -87,9 +85,8 @@ TEST_F(IniWriterTest, create_loose_bool_entry) ASSERT_LE(ms.GetPosition(), 17); // Accommodate for varying-sized newline (Windows) ASSERT_EQ(ms.GetLength(), ms.GetPosition()); ms.SetPosition(0); - const char* ini = reinterpret_cast(ms.ReadString()); - ASSERT_STREQ(ini, "boolval = true" PLATFORM_NEWLINE); - Memory::Free(ini); + auto ini = ms.ReadStdString(); + ASSERT_STREQ(ini.c_str(), "boolval = true" PLATFORM_NEWLINE); } TEST_F(IniWriterTest, create_loose_enum_entry) @@ -105,9 +102,8 @@ TEST_F(IniWriterTest, create_loose_enum_entry) ASSERT_LE(ms.GetPosition(), 37); // Accommodate for varying-sized newline (Windows) ASSERT_EQ(ms.GetLength(), ms.GetPosition()); ms.SetPosition(0); - const char* ini = reinterpret_cast(ms.ReadString()); - ASSERT_STREQ(ini, "by_string = stringval" PLATFORM_NEWLINE "int32_t = 0" PLATFORM_NEWLINE); - Memory::Free(ini); + auto ini = ms.ReadStdString(); + ASSERT_STREQ(ini.c_str(), "by_string = stringval" PLATFORM_NEWLINE "int32_t = 0" PLATFORM_NEWLINE); } TEST_F(IniWriterTest, create_loose_float_entry) @@ -122,10 +118,9 @@ TEST_F(IniWriterTest, create_loose_float_entry) ASSERT_LE(ms.GetPosition(), 17); // Accommodate for varying-sized newline (Windows) ASSERT_EQ(ms.GetLength(), ms.GetPosition()); ms.SetPosition(0); - const char* ini = reinterpret_cast(ms.ReadString()); + auto ini = ms.ReadStdString(); // This will be non-fatal due to float. - EXPECT_STREQ(ini, "one = 1.000000" PLATFORM_NEWLINE); - Memory::Free(ini); + EXPECT_STREQ(ini.c_str(), "one = 1.000000" PLATFORM_NEWLINE); } TEST_F(IniWriterTest, create_loose_int32_t_entry) @@ -144,12 +139,11 @@ TEST_F(IniWriterTest, create_loose_int32_t_entry) ASSERT_LE(ms.GetPosition(), 78); // Accommodate for varying-sized newline (Windows) ASSERT_EQ(ms.GetLength(), ms.GetPosition()); ms.SetPosition(0); - const char* ini = reinterpret_cast(ms.ReadString()); + auto ini = ms.ReadStdString(); ASSERT_STREQ( - ini, + ini.c_str(), "one = 1" PLATFORM_NEWLINE "zero = 0" PLATFORM_NEWLINE "minusone = -1" PLATFORM_NEWLINE "intmin = -2147483648" PLATFORM_NEWLINE "intmax = 2147483647" PLATFORM_NEWLINE); - Memory::Free(ini); } TEST_F(IniWriterTest, create_loose_string_entry) @@ -164,9 +158,9 @@ TEST_F(IniWriterTest, create_loose_string_entry) ASSERT_LE(ms.GetPosition(), 44); // Accommodate for varying-sized newline (Windows) ASSERT_EQ(ms.GetLength(), ms.GetPosition()); ms.SetPosition(0); - const char* ini = reinterpret_cast(ms.ReadString()); - ASSERT_STREQ(ini, "path = \"C:'\\\\some/dir\\\\here/\xE7\xA5\x9E\xE9\xB7\xB9\xE6\x9A\xA2\xE9\x81\x8A\"" PLATFORM_NEWLINE); - Memory::Free(ini); + auto ini = ms.ReadStdString(); + ASSERT_STREQ( + ini.c_str(), "path = \"C:'\\\\some/dir\\\\here/\xE7\xA5\x9E\xE9\xB7\xB9\xE6\x9A\xA2\xE9\x81\x8A\"" PLATFORM_NEWLINE); } TEST_F(IniWriterTest, create_multiple_section_with_values) @@ -187,13 +181,12 @@ TEST_F(IniWriterTest, create_multiple_section_with_values) ASSERT_LE(ms.GetPosition(), 108); // Accommodate for varying-sized newline (Windows) ASSERT_EQ(ms.GetLength(), ms.GetPosition()); ms.SetPosition(0); - const char* ini = reinterpret_cast(ms.ReadString()); + auto ini = ms.ReadStdString(); ASSERT_STREQ( - ini, + ini.c_str(), "[bool]" PLATFORM_NEWLINE "boolval = true" PLATFORM_NEWLINE PLATFORM_NEWLINE "[int]" PLATFORM_NEWLINE "one = 1" PLATFORM_NEWLINE "zero = 0" PLATFORM_NEWLINE PLATFORM_NEWLINE "[string]" PLATFORM_NEWLINE "path = " "\"C:'\\\\some/dir\\\\here/\xE7\xA5\x9E\xE9\xB7\xB9\xE6\x9A\xA2\xE9\x81\x8A\"" PLATFORM_NEWLINE); - Memory::Free(ini); } TEST_F(IniWriterTest, create_duplicate_sections) @@ -210,10 +203,9 @@ TEST_F(IniWriterTest, create_duplicate_sections) ASSERT_LE(ms.GetPosition(), 43); // Accommodate for varying-sized newline (Windows) ASSERT_EQ(ms.GetLength(), ms.GetPosition()); ms.SetPosition(0); - const char* ini = reinterpret_cast(ms.ReadString()); + auto ini = ms.ReadStdString(); ASSERT_STREQ( - ini, + ini.c_str(), "[section]" PLATFORM_NEWLINE PLATFORM_NEWLINE "[section]" PLATFORM_NEWLINE PLATFORM_NEWLINE "[section]" PLATFORM_NEWLINE); - Memory::Free(ini); }