mirror of https://github.com/OpenRCT2/OpenRCT2.git
Create std::unique_ptr<ILanguagePack>instead of raw pointer
This commit is contained in:
parent
cef26400cf
commit
be4159f9ac
|
@ -20,6 +20,7 @@
|
|||
#include "Localisation.h"
|
||||
|
||||
#include <algorithm>
|
||||
#include <memory>
|
||||
#include <string>
|
||||
#include <vector>
|
||||
|
||||
|
@ -62,7 +63,7 @@ private:
|
|||
ScenarioOverride* _currentScenarioOverride = nullptr;
|
||||
|
||||
public:
|
||||
static LanguagePack* FromFile(uint16_t id, const utf8* path)
|
||||
static std::unique_ptr<LanguagePack> FromFile(uint16_t id, const utf8* path)
|
||||
{
|
||||
Guard::ArgumentNotNull(path);
|
||||
|
||||
|
@ -90,15 +91,15 @@ public:
|
|||
}
|
||||
|
||||
// Parse the memory as text
|
||||
LanguagePack* result = FromText(id, fileData);
|
||||
auto result = FromText(id, fileData);
|
||||
|
||||
Memory::Free(fileData);
|
||||
return result;
|
||||
}
|
||||
|
||||
static LanguagePack* FromText(uint16_t id, const utf8* text)
|
||||
static std::unique_ptr<LanguagePack> FromText(uint16_t id, const utf8* text)
|
||||
{
|
||||
return new LanguagePack(id, text);
|
||||
return std::make_unique<LanguagePack>(id, text);
|
||||
}
|
||||
|
||||
LanguagePack(uint16_t id, const utf8* text)
|
||||
|
@ -579,13 +580,13 @@ private:
|
|||
|
||||
namespace LanguagePackFactory
|
||||
{
|
||||
ILanguagePack* FromFile(uint16_t id, const utf8* path)
|
||||
std::unique_ptr<ILanguagePack> FromFile(uint16_t id, const utf8* path)
|
||||
{
|
||||
auto languagePack = LanguagePack::FromFile(id, path);
|
||||
return languagePack;
|
||||
}
|
||||
|
||||
ILanguagePack* FromText(uint16_t id, const utf8* text)
|
||||
std::unique_ptr<ILanguagePack> FromText(uint16_t id, const utf8* text)
|
||||
{
|
||||
auto languagePack = LanguagePack::FromText(id, text);
|
||||
return languagePack;
|
||||
|
|
|
@ -11,6 +11,7 @@
|
|||
|
||||
#include "../common.h"
|
||||
|
||||
#include <memory>
|
||||
#include <string>
|
||||
#include <string_view>
|
||||
|
||||
|
@ -30,6 +31,6 @@ struct ILanguagePack
|
|||
|
||||
namespace LanguagePackFactory
|
||||
{
|
||||
ILanguagePack* FromFile(uint16_t id, const utf8* path);
|
||||
ILanguagePack* FromText(uint16_t id, const utf8* text);
|
||||
std::unique_ptr<ILanguagePack> FromFile(uint16_t id, const utf8* path);
|
||||
std::unique_ptr<ILanguagePack> FromText(uint16_t id, const utf8* text);
|
||||
} // namespace LanguagePackFactory
|
||||
|
|
|
@ -86,12 +86,11 @@ void LocalisationService::OpenLanguage(int32_t id)
|
|||
if (id != LANGUAGE_ENGLISH_UK)
|
||||
{
|
||||
filename = GetLanguagePath(LANGUAGE_ENGLISH_UK);
|
||||
_languageFallback = std::unique_ptr<ILanguagePack>(
|
||||
LanguagePackFactory::FromFile(LANGUAGE_ENGLISH_UK, filename.c_str()));
|
||||
_languageFallback = LanguagePackFactory::FromFile(LANGUAGE_ENGLISH_UK, filename.c_str());
|
||||
}
|
||||
|
||||
filename = GetLanguagePath(id);
|
||||
_languageCurrent = std::unique_ptr<ILanguagePack>(LanguagePackFactory::FromFile(id, filename.c_str()));
|
||||
_languageCurrent = LanguagePackFactory::FromFile(id, filename.c_str());
|
||||
if (_languageCurrent != nullptr)
|
||||
{
|
||||
_currentLanguage = id;
|
||||
|
|
|
@ -23,27 +23,25 @@ protected:
|
|||
|
||||
TEST_F(LanguagePackTest, create_empty)
|
||||
{
|
||||
ILanguagePack* empty = LanguagePackFactory::FromText(0, "");
|
||||
auto empty = LanguagePackFactory::FromText(0, "");
|
||||
ASSERT_EQ(empty->GetId(), 0);
|
||||
ASSERT_EQ(empty->GetCount(), 0U);
|
||||
delete empty;
|
||||
}
|
||||
|
||||
TEST_F(LanguagePackTest, create_mutable_id_1)
|
||||
{
|
||||
ILanguagePack* lang = LanguagePackFactory::FromText(1, "STR_0000:\n");
|
||||
auto lang = LanguagePackFactory::FromText(1, "STR_0000:\n");
|
||||
ASSERT_EQ(lang->GetId(), 1);
|
||||
ASSERT_EQ(lang->GetCount(), 1U);
|
||||
ASSERT_STREQ(lang->GetString(0), nullptr);
|
||||
lang->SetString(0, "xx");
|
||||
ASSERT_EQ(lang->GetCount(), 1U);
|
||||
ASSERT_STREQ(lang->GetString(0), "xx");
|
||||
delete lang;
|
||||
}
|
||||
|
||||
TEST_F(LanguagePackTest, language_pack_simple)
|
||||
{
|
||||
ILanguagePack* lang = LanguagePackFactory::FromText(0, LanguageEnGB);
|
||||
auto lang = LanguagePackFactory::FromText(0, LanguageEnGB);
|
||||
ASSERT_EQ(lang->GetId(), 0);
|
||||
ASSERT_EQ(lang->GetCount(), 4U);
|
||||
ASSERT_STREQ(lang->GetString(2), "Spiral Roller Coaster");
|
||||
|
@ -55,12 +53,11 @@ TEST_F(LanguagePackTest, language_pack_simple)
|
|||
ASSERT_EQ(lang->GetString(1000), nullptr);
|
||||
ASSERT_EQ(lang->GetScenarioOverrideStringId("No such park", 0), STR_NONE);
|
||||
ASSERT_EQ(lang->GetObjectOverrideStringId(" ", 0), STR_NONE);
|
||||
delete lang;
|
||||
}
|
||||
|
||||
TEST_F(LanguagePackTest, language_pack_multibyte)
|
||||
{
|
||||
ILanguagePack* lang = LanguagePackFactory::FromText(0, (const utf8*)LanguageZhTW);
|
||||
auto lang = LanguagePackFactory::FromText(0, (const utf8*)LanguageZhTW);
|
||||
ASSERT_EQ(lang->GetId(), 0);
|
||||
ASSERT_EQ(lang->GetCount(), 4U);
|
||||
ASSERT_STREQ(lang->GetString(2), u8"懸吊式雲霄飛車");
|
||||
|
@ -70,7 +67,6 @@ TEST_F(LanguagePackTest, language_pack_multibyte)
|
|||
ASSERT_STREQ(lang->GetString(0x7002), u8"在隱藏於森林深處的清空範圍中, 建造一個很受歡迎的樂園");
|
||||
ASSERT_EQ(lang->GetObjectOverrideStringId("CONDORRD", 0), 0x6000);
|
||||
ASSERT_STREQ(lang->GetString(0x6000), u8"神鷹暢遊");
|
||||
delete lang;
|
||||
}
|
||||
|
||||
const utf8* LanguagePackTest::LanguageEnGB = "# STR_XXXX part is read and XXXX becomes the string id number.\n"
|
||||
|
|
Loading…
Reference in New Issue