From 55d37a70714b40a17b26f897838e4bb9f9331dea Mon Sep 17 00:00:00 2001 From: ragnarok-clanker Date: Wed, 11 Nov 2026 15:11:07 +0000 Subject: [PATCH] Maintenance: Forced resubmit of 17189, rebased on 7ea84b3b3 (main had added 25 more copies of the same lines, now converted too). Sha Batch #17225 by ragnarok-clanker: forced by an admin (0 lower score(s), 1 changed function(s)); checked with 75 compiled unit(s), including every includer of Source/Utility/StdIntVectorCopy.h, Source/Utility/StdStringConcat.h, Source/Utility/StdStringCopy.h, Source/Utility/StdStringInsert.h, Source/Utility/StdStringMoveAssign.h, Source/Utility/StdStringVectorDestroy.h, Source/Utility/StdTraitsEqual.h, Source/Utility/StdTraitsFind.h, Source/Utility/StdWindowListEmplace.h. --- Source/Client/Session/Session.cpp | 2 +- Source/Contents/Actors/ActorNameDirectory.cpp | 2 +- Source/Contents/Actors/ActorPickNode.cpp | 2 +- Source/Contents/Actors/MercenaryAI.cpp | 2 +- Source/Contents/Actors/Resources/RobeResources.cpp | 2 +- Source/Contents/CashEmotion/CashEmotionMgr.cpp | 2 +- .../Contents/Effects/Particles/AnimatedEmitterEffect.cpp | 2 +- Source/Contents/Effects/Particles/Particle.cpp | 2 +- Source/Contents/Effects/Skills/MonsterSkillEffects.cpp | 2 +- Source/Contents/Emblems/EmblemCache.cpp | 2 +- Source/Contents/Emblems/GuildEmblemLookup.cpp | 2 +- Source/Contents/Hotkeys/EmotionHotkeys.cpp | 2 +- Source/Contents/Items/ItemInfo.cpp | 4 ++-- Source/Contents/Messenger/MessengerMember.cpp | 2 +- Source/Contents/Navigation/NavigationDestinations.cpp | 2 +- Source/Contents/Navigation/NavigationRequest.cpp | 2 +- Source/Contents/Navigation/NavigationRoute.cpp | 2 +- Source/Contents/Party/RegisterPartyAsyncWork.cpp | 2 +- Source/Contents/Repute/ReputeMgr.cpp | 2 +- Source/Contents/Sound/SoundMgr.cpp | 2 +- Source/Contents/Store/MCStoreInfoBackup.cpp | 2 +- Source/Contents/Time/ClientTiming.cpp | 2 +- Source/Contents/UserData/AccountLinkedUserDataMgr.cpp | 4 ++-- Source/Contents/UserData/CharacterConfigSave.cpp | 2 +- Source/File/DirectoryRemoval.cpp | 2 +- Source/Network/NIPAddr.cpp | 2 +- Source/Network/Packets/ActorNamePacket.cpp | 2 +- Source/Render/Text/EmbedFont.cpp | 2 +- Source/Render/Text/FontCache.cpp | 2 +- Source/Script/LuaScript.cpp | 2 +- Source/Security/NProtectGameGuardMgr.cpp | 2 +- Source/UI/Acceptance/UIExchangeAcceptWnd.cpp | 2 +- Source/UI/Achievement/UIAchWnd.cpp | 2 +- Source/UI/Buttons/UINaviLinkButton.cpp | 4 ++-- Source/UI/Buttons/UITextButton.cpp | 4 ++-- Source/UI/CashShop/UICashShopWnd.cpp | 2 +- Source/UI/Chat/UIChatRoomTitle.cpp | 2 +- Source/UI/Dialogs/UIMessageBox.cpp | 4 ++-- Source/UI/Dialogs/UINoteWnd.cpp | 2 +- Source/UI/Edit/UIEditCtrl3.cpp | 2 +- Source/UI/Edit/UIEditVariants.cpp | 2 +- Source/UI/Events/UICheckAttendanceWnd.cpp | 2 +- Source/UI/GameSettings/UIHotkeyGuideWnd.cpp | 2 +- Source/UI/Gauges/UIBarGraph.cpp | 2 +- Source/UI/Guild/UIGuildHelperWnd.cpp | 2 +- Source/UI/Items/UIEquipmentPropertiesWnd.cpp | 2 +- Source/UI/Items/UIItemStoreComboBox.cpp | 2 +- Source/UI/Items/UIMakeTargetProcessWnd.cpp | 2 +- Source/UI/Items/UISwapEquipmentWnd.cpp | 2 +- Source/UI/Lists/UIChatHisBox.cpp | 2 +- Source/UI/Lists/UIComboBoxDefWnd.cpp | 4 ++-- Source/UI/Login/UIPasswordWnd.cpp | 2 +- Source/UI/Navigation/NavigationLink.cpp | 4 ++-- Source/UI/Party/UIApplyForPartyWnd.cpp | 2 +- Source/UI/Party/UIRegisterPartyWnd.cpp | 2 +- Source/UI/Party/UISeekPartyMBWnd.cpp | 2 +- Source/UI/Quest/UIRecommendedQuestInfo.cpp | 2 +- Source/UI/Quest/UIRenewQuestWnd.cpp | 2 +- Source/UI/Repute/UIReputeWnd.cpp | 2 +- Source/UI/Rodex/UIRodexComposeWnd.cpp | 2 +- Source/UI/RuneSystem/UIRuneSystemWnd.cpp | 2 +- Source/UI/Shop/UIMerchantShopTitle.cpp | 2 +- Source/UI/Skill/UIGraffiStrboxWnd.cpp | 2 +- Source/UI/Status/UIBasicInfoWnd.cpp | 2 +- Source/UI/Text/ColoredText.cpp | 2 +- Source/UI/Text/ItemLinkDisplay.cpp | 2 +- Source/UI/Text/TextMarkup.cpp | 2 +- Source/UI/Text/UITextViewer.cpp | 2 +- Source/UI/Window/UIFrameWnd.cpp | 2 +- Source/UI/Window/UIWindow.cpp | 4 ++-- Source/UI/Window/UIWindowFactory.cpp | 2 +- Source/UI/Window/WindowMgrState.cpp | 2 +- Source/UI/Window/WindowRegistration.cpp | 2 +- Source/UI/Window/WindowRetirement.cpp | 2 +- Source/Utility/StdIntVectorCopy.h | 5 +++++ Source/Utility/StdStringConcat.h | 6 ++++++ Source/Utility/StdStringCopy.h | 5 +++++ Source/Utility/StdStringInsert.h | 5 +++++ Source/Utility/StdStringMoveAssign.h | 5 +++++ Source/Utility/StdStringVectorDestroy.h | 6 ++++++ Source/Utility/StdTraitsEqual.h | 6 ++++++ Source/Utility/StdTraitsFind.h | 6 ++++++ Source/Utility/StdWindowListEmplace.h | 7 +++++++ Source/Utility/Threading/NThread.cpp | 2 +- 84 files changed, 134 insertions(+), 83 deletions(-) create mode 100644 Source/Utility/StdIntVectorCopy.h create mode 100644 Source/Utility/StdStringConcat.h create mode 100644 Source/Utility/StdStringCopy.h create mode 100644 Source/Utility/StdStringInsert.h create mode 100644 Source/Utility/StdStringMoveAssign.h create mode 100644 Source/Utility/StdStringVectorDestroy.h create mode 100644 Source/Utility/StdTraitsEqual.h create mode 100644 Source/Utility/StdTraitsFind.h create mode 100644 Source/Utility/StdWindowListEmplace.h diff --git a/Source/Client/Session/Session.cpp b/Source/Client/Session/Session.cpp index 3c6f81a9a..bdcbebe7e 100644 --- a/Source/Client/Session/Session.cpp +++ b/Source/Client/Session/Session.cpp @@ -100,7 +100,7 @@ ActorIdTree::_Find_lower_bound(const std::uint32_t&) const; extern template void std::vector::resize(size_type, const std::string&); extern template void std::vector::_Tidy() noexcept; -extern template std::string& std::string::operator=(std::string&&) noexcept; +#include "Utility/StdStringMoveAssign.h" using PendingActorNameTree = std::_Tree, std::allocator, false>>; diff --git a/Source/Contents/Actors/ActorNameDirectory.cpp b/Source/Contents/Actors/ActorNameDirectory.cpp index 8f716585c..504cece66 100644 --- a/Source/Contents/Actors/ActorNameDirectory.cpp +++ b/Source/Contents/Actors/ActorNameDirectory.cpp @@ -2,7 +2,7 @@ #include -extern template bool std::_Traits_equal>(const char*, std::size_t, const char*, std::size_t) noexcept; +#include "Utility/StdTraitsEqual.h" using ActorNameCardTree = std::_Tree, diff --git a/Source/Contents/Actors/ActorPickNode.cpp b/Source/Contents/Actors/ActorPickNode.cpp index 07eb48fd1..36d90427c 100644 --- a/Source/Contents/Actors/ActorPickNode.cpp +++ b/Source/Contents/Actors/ActorPickNode.cpp @@ -16,7 +16,7 @@ #include #include "Utility/StdStringCompare.h" -extern template std::string::basic_string(const std::string&); +#include "Utility/StdStringCopy.h" // OFFSET: 0x00AD9530 // FUNCTION: fn_17878 diff --git a/Source/Contents/Actors/MercenaryAI.cpp b/Source/Contents/Actors/MercenaryAI.cpp index 2a3bf9507..ca53c4bf4 100644 --- a/Source/Contents/Actors/MercenaryAI.cpp +++ b/Source/Contents/Actors/MercenaryAI.cpp @@ -33,7 +33,7 @@ extern "C" { #include #include -extern template bool std::_Traits_equal>(const char*, std::size_t, const char*, std::size_t) noexcept; +#include "Utility/StdTraitsEqual.h" namespace { diff --git a/Source/Contents/Actors/Resources/RobeResources.cpp b/Source/Contents/Actors/Resources/RobeResources.cpp index 624e8010f..5721508bc 100644 --- a/Source/Contents/Actors/Resources/RobeResources.cpp +++ b/Source/Contents/Actors/Resources/RobeResources.cpp @@ -6,7 +6,7 @@ #include -extern template std::string::basic_string(const std::string&); +#include "Utility/StdStringCopy.h" // OFFSET: 0x00BAC050 // FUNCTION: fn_19755 diff --git a/Source/Contents/CashEmotion/CashEmotionMgr.cpp b/Source/Contents/CashEmotion/CashEmotionMgr.cpp index 6c8ea681d..9e09717fd 100644 --- a/Source/Contents/CashEmotion/CashEmotionMgr.cpp +++ b/Source/Contents/CashEmotion/CashEmotionMgr.cpp @@ -69,7 +69,7 @@ extern "C" { #include #include -extern template std::vector::vector(const std::vector&); +#include "Utility/StdIntVectorCopy.h" // STATIC: 0x013896C4 // GLOBAL: gl_24350 diff --git a/Source/Contents/Effects/Particles/AnimatedEmitterEffect.cpp b/Source/Contents/Effects/Particles/AnimatedEmitterEffect.cpp index 7c1e71aae..a23d3637e 100644 --- a/Source/Contents/Effects/Particles/AnimatedEmitterEffect.cpp +++ b/Source/Contents/Effects/Particles/AnimatedEmitterEffect.cpp @@ -4,7 +4,7 @@ #include -extern template std::string::basic_string(const std::string&); +#include "Utility/StdStringCopy.h" // OFFSET: 0x006F9EC0 // FUNCTION: fn_06888 diff --git a/Source/Contents/Effects/Particles/Particle.cpp b/Source/Contents/Effects/Particles/Particle.cpp index a2565b7d1..62663a650 100644 --- a/Source/Contents/Effects/Particles/Particle.cpp +++ b/Source/Contents/Effects/Particles/Particle.cpp @@ -23,7 +23,7 @@ #include #include -extern template std::string::basic_string(std::_String_constructor_concat_tag, const std::string&, const char*, std::size_t, const char*, std::size_t); +#include "Utility/StdStringConcat.h" // INLINED static __forceinline float ToRadians(float degrees) { diff --git a/Source/Contents/Effects/Skills/MonsterSkillEffects.cpp b/Source/Contents/Effects/Skills/MonsterSkillEffects.cpp index 4eb8524e4..8f39eb0ee 100644 --- a/Source/Contents/Effects/Skills/MonsterSkillEffects.cpp +++ b/Source/Contents/Effects/Skills/MonsterSkillEffects.cpp @@ -35,7 +35,7 @@ #include #include -extern template std::string::basic_string(std::_String_constructor_concat_tag, const std::string&, const char*, std::size_t, const char*, std::size_t); +#include "Utility/StdStringConcat.h" namespace { // INLINED diff --git a/Source/Contents/Emblems/EmblemCache.cpp b/Source/Contents/Emblems/EmblemCache.cpp index 8b5e35fb7..4db0eb28e 100644 --- a/Source/Contents/Emblems/EmblemCache.cpp +++ b/Source/Contents/Emblems/EmblemCache.cpp @@ -21,7 +21,7 @@ #include #include -extern template std::string::basic_string(std::_String_constructor_concat_tag, const std::string&, const char*, std::size_t, const char*, std::size_t); +#include "Utility/StdStringConcat.h" namespace { // INLINED diff --git a/Source/Contents/Emblems/GuildEmblemLookup.cpp b/Source/Contents/Emblems/GuildEmblemLookup.cpp index c886520b0..7c0f84be3 100644 --- a/Source/Contents/Emblems/GuildEmblemLookup.cpp +++ b/Source/Contents/Emblems/GuildEmblemLookup.cpp @@ -3,7 +3,7 @@ #include "Contents/Guild/GuildMgr.h" #include "Resource/ResourceMgr.h" -extern template std::string::basic_string(const std::string&); +#include "Utility/StdStringCopy.h" // OFFSET: 0x0065E450 // FUNCTION: fn_05174 diff --git a/Source/Contents/Hotkeys/EmotionHotkeys.cpp b/Source/Contents/Hotkeys/EmotionHotkeys.cpp index c25383834..2dd455a60 100644 --- a/Source/Contents/Hotkeys/EmotionHotkeys.cpp +++ b/Source/Contents/Hotkeys/EmotionHotkeys.cpp @@ -11,7 +11,7 @@ #include #include -extern template bool std::_Traits_equal>(const char*, std::size_t, const char*, std::size_t) noexcept; +#include "Utility/StdTraitsEqual.h" // OFFSET: 0x005BC230 // FUNCTION: fn_03463 diff --git a/Source/Contents/Items/ItemInfo.cpp b/Source/Contents/Items/ItemInfo.cpp index 5e5b836ae..13bd3f91c 100644 --- a/Source/Contents/Items/ItemInfo.cpp +++ b/Source/Contents/Items/ItemInfo.cpp @@ -15,8 +15,8 @@ #include #include "Utility/StdStringCompare.h" -extern template bool std::_Traits_equal>(const char*, std::size_t, const char*, std::size_t) noexcept; -extern template std::vector::vector(const std::vector&); +#include "Utility/StdTraitsEqual.h" +#include "Utility/StdIntVectorCopy.h" namespace { #pragma pack(push, 1) diff --git a/Source/Contents/Messenger/MessengerMember.cpp b/Source/Contents/Messenger/MessengerMember.cpp index d098f1d3a..65aaaa2cd 100644 --- a/Source/Contents/Messenger/MessengerMember.cpp +++ b/Source/Contents/Messenger/MessengerMember.cpp @@ -49,7 +49,7 @@ #include #include -extern template std::string::basic_string(const std::string&); +#include "Utility/StdStringCopy.h" extern template std::vector::vector(std::size_t, const unsigned char&, const std::allocator&); namespace { diff --git a/Source/Contents/Navigation/NavigationDestinations.cpp b/Source/Contents/Navigation/NavigationDestinations.cpp index cff0a3690..0bec4a898 100644 --- a/Source/Contents/Navigation/NavigationDestinations.cpp +++ b/Source/Contents/Navigation/NavigationDestinations.cpp @@ -2,7 +2,7 @@ #include -extern template std::string::basic_string(const std::string&); +#include "Utility/StdStringCopy.h" // OFFSET: 0x00B974D0 // FUNCTION: fn_19599 diff --git a/Source/Contents/Navigation/NavigationRequest.cpp b/Source/Contents/Navigation/NavigationRequest.cpp index 4d5d63f80..36544496b 100644 --- a/Source/Contents/Navigation/NavigationRequest.cpp +++ b/Source/Contents/Navigation/NavigationRequest.cpp @@ -10,7 +10,7 @@ #include #include -extern template bool std::_Traits_equal>(const char*, std::size_t, const char*, std::size_t) noexcept; +#include "Utility/StdTraitsEqual.h" // OFFSET: 0x00B8C0B0 // FUNCTION: fn_19420 diff --git a/Source/Contents/Navigation/NavigationRoute.cpp b/Source/Contents/Navigation/NavigationRoute.cpp index 1965dc71b..5f3daea2c 100644 --- a/Source/Contents/Navigation/NavigationRoute.cpp +++ b/Source/Contents/Navigation/NavigationRoute.cpp @@ -39,7 +39,7 @@ #include "Resource/MSGSTRINGID.h" #include "Network/Packets/PacketId.h" -extern template std::string& std::string::operator=(std::string&&) noexcept; +#include "Utility/StdStringMoveAssign.h" namespace { // GLOBAL: gl_25136 diff --git a/Source/Contents/Party/RegisterPartyAsyncWork.cpp b/Source/Contents/Party/RegisterPartyAsyncWork.cpp index 3d54e1158..8b2c845e8 100644 --- a/Source/Contents/Party/RegisterPartyAsyncWork.cpp +++ b/Source/Contents/Party/RegisterPartyAsyncWork.cpp @@ -12,7 +12,7 @@ #include #include -extern template std::string& std::string::operator=(std::string&&) noexcept; +#include "Utility/StdStringMoveAssign.h" namespace { constexpr char sourceFile[] = "C:\\repositories\\RagnarokClient\\RagnarokClient\\Contents\\AdventurerAgency\\CRegisterPartyAsyncWork.cpp"; diff --git a/Source/Contents/Repute/ReputeMgr.cpp b/Source/Contents/Repute/ReputeMgr.cpp index 9e854e1b0..1511fa742 100644 --- a/Source/Contents/Repute/ReputeMgr.cpp +++ b/Source/Contents/Repute/ReputeMgr.cpp @@ -15,7 +15,7 @@ #include #include -extern template std::vector::vector(const std::vector&); +#include "Utility/StdIntVectorCopy.h" extern template std::vector::~vector(); extern "C" void JsonDestroy(); diff --git a/Source/Contents/Sound/SoundMgr.cpp b/Source/Contents/Sound/SoundMgr.cpp index 2bb2944b3..318fbcc5f 100644 --- a/Source/Contents/Sound/SoundMgr.cpp +++ b/Source/Contents/Sound/SoundMgr.cpp @@ -10,7 +10,7 @@ #include #include -extern template bool std::_Traits_equal>(const char*, std::size_t, const char*, std::size_t) noexcept; +#include "Utility/StdTraitsEqual.h" // STATIC: 0x0138BE7C // GLOBAL: gl_24457 diff --git a/Source/Contents/Store/MCStoreInfoBackup.cpp b/Source/Contents/Store/MCStoreInfoBackup.cpp index 1376f7691..ff230b2c6 100644 --- a/Source/Contents/Store/MCStoreInfoBackup.cpp +++ b/Source/Contents/Store/MCStoreInfoBackup.cpp @@ -13,7 +13,7 @@ #include #include -extern template std::vector::~vector(); +#include "Utility/StdStringVectorDestroy.h" // OFFSET: 0x00605BF0 // FUNCTION: fn_04226 diff --git a/Source/Contents/Time/ClientTiming.cpp b/Source/Contents/Time/ClientTiming.cpp index 6b312204a..ef464a408 100644 --- a/Source/Contents/Time/ClientTiming.cpp +++ b/Source/Contents/Time/ClientTiming.cpp @@ -25,7 +25,7 @@ #include #include "Utility/StdStringCompare.h" -extern template bool std::_Traits_equal>(const char*, std::size_t, const char*, std::size_t) noexcept; +#include "Utility/StdTraitsEqual.h" // GLOBAL: gl_24705 int g_serviceMode; diff --git a/Source/Contents/UserData/AccountLinkedUserDataMgr.cpp b/Source/Contents/UserData/AccountLinkedUserDataMgr.cpp index a4de614b3..9cac3ee5e 100644 --- a/Source/Contents/UserData/AccountLinkedUserDataMgr.cpp +++ b/Source/Contents/UserData/AccountLinkedUserDataMgr.cpp @@ -17,8 +17,8 @@ #include #include -extern template bool std::_Traits_equal>(const char*, std::size_t, const char*, std::size_t) noexcept; -extern template std::vector::~vector(); +#include "Utility/StdTraitsEqual.h" +#include "Utility/StdStringVectorDestroy.h" namespace { // INLINED diff --git a/Source/Contents/UserData/CharacterConfigSave.cpp b/Source/Contents/UserData/CharacterConfigSave.cpp index 5a313b91c..1c8902365 100644 --- a/Source/Contents/UserData/CharacterConfigSave.cpp +++ b/Source/Contents/UserData/CharacterConfigSave.cpp @@ -10,7 +10,7 @@ #include extern template std::string& std::string::assign(const char*, std::string::size_type); -extern template std::vector::~vector(); +#include "Utility/StdStringVectorDestroy.h" // OFFSET: 0x00DE0E40 // FUNCTION: fn_23474 diff --git a/Source/File/DirectoryRemoval.cpp b/Source/File/DirectoryRemoval.cpp index d2bbba396..2f4788dae 100644 --- a/Source/File/DirectoryRemoval.cpp +++ b/Source/File/DirectoryRemoval.cpp @@ -8,7 +8,7 @@ #include #include -extern template std::string::basic_string(std::_String_constructor_concat_tag, const std::string&, const char*, std::size_t, const char*, std::size_t); +#include "Utility/StdStringConcat.h" // OFFSET: 0x00AF45E0 // FUNCTION: fn_18245 diff --git a/Source/Network/NIPAddr.cpp b/Source/Network/NIPAddr.cpp index 427ba5a48..83f1f9fe0 100644 --- a/Source/Network/NIPAddr.cpp +++ b/Source/Network/NIPAddr.cpp @@ -2,7 +2,7 @@ #include "Network/NIPAddr.h" -extern template std::string::basic_string(const std::string&); +#include "Utility/StdStringCopy.h" // INLINED inline void NIPAddr::SetAddress(std::string text) { diff --git a/Source/Network/Packets/ActorNamePacket.cpp b/Source/Network/Packets/ActorNamePacket.cpp index f00bc26c1..a2c0c1b8c 100644 --- a/Source/Network/Packets/ActorNamePacket.cpp +++ b/Source/Network/Packets/ActorNamePacket.cpp @@ -10,7 +10,7 @@ #include #include -extern template std::string::basic_string(const std::string&); +#include "Utility/StdStringCopy.h" // OFFSET: 0x00D1DFB0 // FUNCTION: fn_21632 diff --git a/Source/Render/Text/EmbedFont.cpp b/Source/Render/Text/EmbedFont.cpp index 9f8a63720..389f2625f 100644 --- a/Source/Render/Text/EmbedFont.cpp +++ b/Source/Render/Text/EmbedFont.cpp @@ -9,7 +9,7 @@ #include #include -extern template std::string::basic_string(const std::string&); +#include "Utility/StdStringCopy.h" // GLOBAL: gl_24812 CEmbedFont* g_embedFont; diff --git a/Source/Render/Text/FontCache.cpp b/Source/Render/Text/FontCache.cpp index fc4eef41c..8d2ef9321 100644 --- a/Source/Render/Text/FontCache.cpp +++ b/Source/Render/Text/FontCache.cpp @@ -256,7 +256,7 @@ HFONT FontCache::Get(int family, int height, unsigned charset, unsigned char bol return entry.font; } -extern template bool std::_Traits_equal>(const char*, std::size_t, const char*, std::size_t) noexcept; +#include "Utility/StdTraitsEqual.h" // OFFSET: 0x0054F830 // FUNCTION: fn_01959 diff --git a/Source/Script/LuaScript.cpp b/Source/Script/LuaScript.cpp index 4cc43ef10..d3ef6c4fb 100644 --- a/Source/Script/LuaScript.cpp +++ b/Source/Script/LuaScript.cpp @@ -39,7 +39,7 @@ extern "C" { #include #include -extern template std::string& std::string::insert(std::string::size_type, const char*, std::string::size_type); +#include "Utility/StdStringInsert.h" struct MiniMapPosition { MiniMapPosition() { diff --git a/Source/Security/NProtectGameGuardMgr.cpp b/Source/Security/NProtectGameGuardMgr.cpp index 98f8b76b0..85d76e5b0 100644 --- a/Source/Security/NProtectGameGuardMgr.cpp +++ b/Source/Security/NProtectGameGuardMgr.cpp @@ -17,7 +17,7 @@ #include #include -extern template std::string::basic_string(const std::string&); +#include "Utility/StdStringCopy.h" // GLOBAL: gl_24848 CNProtectGameGuardMgr* g_nProtectGameGuardMgr; diff --git a/Source/UI/Acceptance/UIExchangeAcceptWnd.cpp b/Source/UI/Acceptance/UIExchangeAcceptWnd.cpp index 881c963eb..569e41c1f 100644 --- a/Source/UI/Acceptance/UIExchangeAcceptWnd.cpp +++ b/Source/UI/Acceptance/UIExchangeAcceptWnd.cpp @@ -24,7 +24,7 @@ #include #include -extern template std::string::basic_string(std::_String_constructor_concat_tag, const std::string&, const char*, std::size_t, const char*, std::size_t); +#include "Utility/StdStringConcat.h" namespace { #pragma pack(push, 1) diff --git a/Source/UI/Achievement/UIAchWnd.cpp b/Source/UI/Achievement/UIAchWnd.cpp index 7ab19c579..c6fa17492 100644 --- a/Source/UI/Achievement/UIAchWnd.cpp +++ b/Source/UI/Achievement/UIAchWnd.cpp @@ -26,7 +26,7 @@ #include #include -extern template std::string& std::string::insert(std::string::size_type, const char*, std::string::size_type); +#include "Utility/StdStringInsert.h" // GLOBAL: gl_25003 std::vector g_achievementTracking; diff --git a/Source/UI/Buttons/UINaviLinkButton.cpp b/Source/UI/Buttons/UINaviLinkButton.cpp index 1a3d4e0c9..3997d51e6 100644 --- a/Source/UI/Buttons/UINaviLinkButton.cpp +++ b/Source/UI/Buttons/UINaviLinkButton.cpp @@ -2,8 +2,8 @@ #include "UI/Navigation/NavigationLink.h" #include "UI/Buttons/UINaviLinkButton.h" -extern template std::string::basic_string(const std::string&); -extern template std::size_t std::_Traits_find>(const char*, std::size_t, std::size_t, const char*, std::size_t) noexcept; +#include "Utility/StdStringCopy.h" +#include "Utility/StdTraitsFind.h" // OFFSET: 0x0086DF60 // FUNCTION: fn_11062 diff --git a/Source/UI/Buttons/UITextButton.cpp b/Source/UI/Buttons/UITextButton.cpp index f8c5baac1..d72409e8d 100644 --- a/Source/UI/Buttons/UITextButton.cpp +++ b/Source/UI/Buttons/UITextButton.cpp @@ -63,7 +63,7 @@ #include #include "Resource/MSGSTRINGID.h" -extern template std::_List_node* std::list::_Emplace(std::_List_node* const, UIWindow* const&); +#include "Utility/StdWindowListEmplace.h" using IntIntTree = std::_Tree, std::allocator>, false>>; extern template std::_Tree_find_result, void*>*> @@ -3562,7 +3562,7 @@ int UISlotBmpButton::SendMsg(UIWindow* sender, int message, std::intptr_t argume #include "Client/Mode/CMode.h" #include "Client/Mode/CLoginMode.h" -extern template std::string::basic_string(std::_String_constructor_concat_tag, const std::string&, const char*, std::size_t, const char*, std::size_t); +#include "Utility/StdStringConcat.h" // OFFSET: 0x0088EBC0 diff --git a/Source/UI/CashShop/UICashShopWnd.cpp b/Source/UI/CashShop/UICashShopWnd.cpp index 1077c41fc..7ed2192f5 100644 --- a/Source/UI/CashShop/UICashShopWnd.cpp +++ b/Source/UI/CashShop/UICashShopWnd.cpp @@ -51,7 +51,7 @@ #include #include "Utility/StdStringCompare.h" -extern template std::string::basic_string(std::_String_constructor_concat_tag, const std::string&, const char*, std::size_t, const char*, std::size_t); +#include "Utility/StdStringConcat.h" #pragma pack(push, 1) diff --git a/Source/UI/Chat/UIChatRoomTitle.cpp b/Source/UI/Chat/UIChatRoomTitle.cpp index c233ac5ae..855164d2a 100644 --- a/Source/UI/Chat/UIChatRoomTitle.cpp +++ b/Source/UI/Chat/UIChatRoomTitle.cpp @@ -18,7 +18,7 @@ #include extern template std::string std::string::substr(std::string::size_type, std::string::size_type) const; -extern template std::string& std::string::operator=(std::string&&) noexcept; +#include "Utility/StdStringMoveAssign.h" // OFFSET: 0x0084EF70 // FUNCTION: fn_10655 diff --git a/Source/UI/Dialogs/UIMessageBox.cpp b/Source/UI/Dialogs/UIMessageBox.cpp index 5b68d0b6d..cd1891e77 100644 --- a/Source/UI/Dialogs/UIMessageBox.cpp +++ b/Source/UI/Dialogs/UIMessageBox.cpp @@ -103,8 +103,8 @@ #include "Resource/MSGSTRINGID.h" -extern template std::vector::~vector(); -extern template bool std::_Traits_equal>(const char*, std::size_t, const char*, std::size_t) noexcept; +#include "Utility/StdStringVectorDestroy.h" +#include "Utility/StdTraitsEqual.h" // GLOBAL: gl_25153 static const std::string s_messageBoxItemLinkOpening = ""; diff --git a/Source/UI/Dialogs/UINoteWnd.cpp b/Source/UI/Dialogs/UINoteWnd.cpp index f2433c5ae..d2c2ed5ee 100644 --- a/Source/UI/Dialogs/UINoteWnd.cpp +++ b/Source/UI/Dialogs/UINoteWnd.cpp @@ -9,7 +9,7 @@ #include "Resource/MSGSTRINGID.h" -extern template std::string::basic_string(const std::string&); +#include "Utility/StdStringCopy.h" // OFFSET: 0x0094C2D0 // FUNCTION: fn_12895 diff --git a/Source/UI/Edit/UIEditCtrl3.cpp b/Source/UI/Edit/UIEditCtrl3.cpp index 6ec754b65..e9bab0afc 100644 --- a/Source/UI/Edit/UIEditCtrl3.cpp +++ b/Source/UI/Edit/UIEditCtrl3.cpp @@ -5,7 +5,7 @@ #include "UI/Navigation/NavigationLink.h" #include "UI/Text/TextFitting.h" -extern template std::string::basic_string(const std::string&); +#include "Utility/StdStringCopy.h" // OFFSET: 0x00861AB0 // FUNCTION: fn_10902 diff --git a/Source/UI/Edit/UIEditVariants.cpp b/Source/UI/Edit/UIEditVariants.cpp index ba8c835d6..6da2d76f0 100644 --- a/Source/UI/Edit/UIEditVariants.cpp +++ b/Source/UI/Edit/UIEditVariants.cpp @@ -1196,7 +1196,7 @@ UIShowAndEditTimeCtrl::UIShowAndEditTimeCtrl() : UIWindow(0) { #include "UI/Edit/UIEditPaint.inl" extern template void std::vector::_Tidy() noexcept; -extern template std::size_t std::_Traits_find>(const char* const, const std::size_t, const std::size_t, const char* const, const std::size_t) noexcept; +#include "Utility/StdTraitsFind.h" // OFFSET: 0x0085C4F0 // FUNCTION: fn_10801 diff --git a/Source/UI/Events/UICheckAttendanceWnd.cpp b/Source/UI/Events/UICheckAttendanceWnd.cpp index 8af9aa704..9fd118597 100644 --- a/Source/UI/Events/UICheckAttendanceWnd.cpp +++ b/Source/UI/Events/UICheckAttendanceWnd.cpp @@ -40,7 +40,7 @@ #include #include -extern template std::string::basic_string(std::_String_constructor_concat_tag, const std::string&, const char*, std::size_t, const char*, std::size_t); +#include "Utility/StdStringConcat.h" struct CheckAttendanceRequestPacket { /* 0000 */ std::int16_t id; diff --git a/Source/UI/GameSettings/UIHotkeyGuideWnd.cpp b/Source/UI/GameSettings/UIHotkeyGuideWnd.cpp index 750e6d5a4..0bba47b5a 100644 --- a/Source/UI/GameSettings/UIHotkeyGuideWnd.cpp +++ b/Source/UI/GameSettings/UIHotkeyGuideWnd.cpp @@ -20,7 +20,7 @@ #include "Resource/MSGSTRINGID.h" -extern template std::string::basic_string(std::_String_constructor_concat_tag, const std::string&, const char*, std::size_t, const char*, std::size_t); +#include "Utility/StdStringConcat.h" // OFFSET: 0x009663D0 // FUNCTION: fn_13154 diff --git a/Source/UI/Gauges/UIBarGraph.cpp b/Source/UI/Gauges/UIBarGraph.cpp index f265a96b0..6a89ef3e2 100644 --- a/Source/UI/Gauges/UIBarGraph.cpp +++ b/Source/UI/Gauges/UIBarGraph.cpp @@ -9,7 +9,7 @@ #include #include -extern template std::string::basic_string(std::_String_constructor_concat_tag, const std::string&, const char*, std::size_t, const char*, std::size_t); +#include "Utility/StdStringConcat.h" // OFFSET: 0x0086C190 // FUNCTION: fn_11022 diff --git a/Source/UI/Guild/UIGuildHelperWnd.cpp b/Source/UI/Guild/UIGuildHelperWnd.cpp index e4d7975c6..bc98efeb0 100644 --- a/Source/UI/Guild/UIGuildHelperWnd.cpp +++ b/Source/UI/Guild/UIGuildHelperWnd.cpp @@ -24,7 +24,7 @@ #include #include -extern template std::string::basic_string(std::_String_constructor_concat_tag, const std::string&, const char*, std::size_t, const char*, std::size_t); +#include "Utility/StdStringConcat.h" // GLOBAL: gl_24878 static const std::string s_itemLinkOpening = ""; diff --git a/Source/UI/Items/UIEquipmentPropertiesWnd.cpp b/Source/UI/Items/UIEquipmentPropertiesWnd.cpp index 2149aa4ea..fd574f817 100644 --- a/Source/UI/Items/UIEquipmentPropertiesWnd.cpp +++ b/Source/UI/Items/UIEquipmentPropertiesWnd.cpp @@ -26,7 +26,7 @@ #include #include -extern template bool std::_Traits_equal>(const char*, std::size_t, const char*, std::size_t) noexcept; +#include "Utility/StdTraitsEqual.h" namespace EquipmentProperties { class CEquipmentPropertiesMgr { diff --git a/Source/UI/Items/UIItemStoreComboBox.cpp b/Source/UI/Items/UIItemStoreComboBox.cpp index 777e931a1..abbfea26c 100644 --- a/Source/UI/Items/UIItemStoreComboBox.cpp +++ b/Source/UI/Items/UIItemStoreComboBox.cpp @@ -6,7 +6,7 @@ #include #include -extern template std::string::basic_string(std::_String_constructor_concat_tag, const std::string&, const char*, std::size_t, const char*, std::size_t); +#include "Utility/StdStringConcat.h" // OFFSET: 0x0086D530 // FUNCTION: fn_11047 diff --git a/Source/UI/Items/UIMakeTargetProcessWnd.cpp b/Source/UI/Items/UIMakeTargetProcessWnd.cpp index 0ae9b7db3..e95c69668 100644 --- a/Source/UI/Items/UIMakeTargetProcessWnd.cpp +++ b/Source/UI/Items/UIMakeTargetProcessWnd.cpp @@ -23,7 +23,7 @@ #include #include -extern template bool std::_Traits_equal>(const char*, std::size_t, const char*, std::size_t) noexcept; +#include "Utility/StdTraitsEqual.h" // INLINED static void AppendReplayRecord(std::vector& records, const std::vector& record) { diff --git a/Source/UI/Items/UISwapEquipmentWnd.cpp b/Source/UI/Items/UISwapEquipmentWnd.cpp index 1ee3604d4..80a63126c 100644 --- a/Source/UI/Items/UISwapEquipmentWnd.cpp +++ b/Source/UI/Items/UISwapEquipmentWnd.cpp @@ -39,7 +39,7 @@ #include #include -extern template std::string& std::string::operator=(std::string&&) noexcept; +#include "Utility/StdStringMoveAssign.h" // GLOBAL: gl_24874 unsigned long g_swapEquipmentTick; diff --git a/Source/UI/Lists/UIChatHisBox.cpp b/Source/UI/Lists/UIChatHisBox.cpp index 08e5eb326..f9da6f6aa 100644 --- a/Source/UI/Lists/UIChatHisBox.cpp +++ b/Source/UI/Lists/UIChatHisBox.cpp @@ -17,7 +17,7 @@ #include #include -extern template std::string::basic_string(const std::string&); +#include "Utility/StdStringCopy.h" extern template std::string& std::string::replace(std::string::size_type, std::string::size_type, const char*, std::string::size_type); // OFFSET: 0x00881BB0 diff --git a/Source/UI/Lists/UIComboBoxDefWnd.cpp b/Source/UI/Lists/UIComboBoxDefWnd.cpp index 184fa205e..45d107d9d 100644 --- a/Source/UI/Lists/UIComboBoxDefWnd.cpp +++ b/Source/UI/Lists/UIComboBoxDefWnd.cpp @@ -33,9 +33,9 @@ #include "Resource/MSGSTRINGID.h" #include -extern template std::size_t std::_Traits_find>(const char* const, const std::size_t, const std::size_t, const char* const, const std::size_t) noexcept; +#include "Utility/StdTraitsFind.h" -extern template std::string::basic_string(std::_String_constructor_concat_tag, const std::string&, const char*, std::size_t, const char*, std::size_t); +#include "Utility/StdStringConcat.h" namespace { constexpr char prefix[] = "유저인터페이스\\"; diff --git a/Source/UI/Login/UIPasswordWnd.cpp b/Source/UI/Login/UIPasswordWnd.cpp index 379833eb6..ef42a9bd8 100644 --- a/Source/UI/Login/UIPasswordWnd.cpp +++ b/Source/UI/Login/UIPasswordWnd.cpp @@ -11,7 +11,7 @@ #include #include -extern template std::string::basic_string(std::_String_constructor_concat_tag, const std::string&, const char*, std::size_t, const char*, std::size_t); +#include "Utility/StdStringConcat.h" // OFFSET: 0x008C89F0 diff --git a/Source/UI/Navigation/NavigationLink.cpp b/Source/UI/Navigation/NavigationLink.cpp index 102fcee0c..b3d729d61 100644 --- a/Source/UI/Navigation/NavigationLink.cpp +++ b/Source/UI/Navigation/NavigationLink.cpp @@ -57,8 +57,8 @@ #include "Resource/MSGSTRINGID.h" #include -extern template std::vector::~vector(); -extern template std::string::basic_string(std::_String_constructor_concat_tag, const std::string&, const char*, std::size_t, const char*, std::size_t); +#include "Utility/StdStringVectorDestroy.h" +#include "Utility/StdStringConcat.h" namespace LineCutter { class UIText : public UIWindow { diff --git a/Source/UI/Party/UIApplyForPartyWnd.cpp b/Source/UI/Party/UIApplyForPartyWnd.cpp index e4ce3012c..3efefaa78 100644 --- a/Source/UI/Party/UIApplyForPartyWnd.cpp +++ b/Source/UI/Party/UIApplyForPartyWnd.cpp @@ -28,7 +28,7 @@ #include "Resource/MSGSTRINGID.h" #include -extern template std::string& std::string::operator=(std::string&&) noexcept; +#include "Utility/StdStringMoveAssign.h" // OFFSET: 0x007BAD00 // FUNCTION: fn_09275 diff --git a/Source/UI/Party/UIRegisterPartyWnd.cpp b/Source/UI/Party/UIRegisterPartyWnd.cpp index c92ed160f..feb31d8f5 100644 --- a/Source/UI/Party/UIRegisterPartyWnd.cpp +++ b/Source/UI/Party/UIRegisterPartyWnd.cpp @@ -31,7 +31,7 @@ #include #include -extern template std::vector::~vector(); +#include "Utility/StdStringVectorDestroy.h" namespace { // OFFSET: 0x007BBFC0 diff --git a/Source/UI/Party/UISeekPartyMBWnd.cpp b/Source/UI/Party/UISeekPartyMBWnd.cpp index ad77c6cb9..dcf47a739 100644 --- a/Source/UI/Party/UISeekPartyMBWnd.cpp +++ b/Source/UI/Party/UISeekPartyMBWnd.cpp @@ -23,7 +23,7 @@ #include #include -extern template std::string::basic_string(const std::string&); +#include "Utility/StdStringCopy.h" namespace { #pragma pack(push, 1) diff --git a/Source/UI/Quest/UIRecommendedQuestInfo.cpp b/Source/UI/Quest/UIRecommendedQuestInfo.cpp index c97bb1409..5d31b2e2a 100644 --- a/Source/UI/Quest/UIRecommendedQuestInfo.cpp +++ b/Source/UI/Quest/UIRecommendedQuestInfo.cpp @@ -14,7 +14,7 @@ #include #include -extern template std::string::basic_string(std::_String_constructor_concat_tag, const std::string&, const char*, std::size_t, const char*, std::size_t); +#include "Utility/StdStringConcat.h" // OFFSET: 0x00A568E0 // FUNCTION: fn_16321 diff --git a/Source/UI/Quest/UIRenewQuestWnd.cpp b/Source/UI/Quest/UIRenewQuestWnd.cpp index f59736159..b1b1cc8e7 100644 --- a/Source/UI/Quest/UIRenewQuestWnd.cpp +++ b/Source/UI/Quest/UIRenewQuestWnd.cpp @@ -42,7 +42,7 @@ #include #include -extern template std::string::basic_string(std::_String_constructor_concat_tag, const std::string&, const char*, std::size_t, const char*, std::size_t); +#include "Utility/StdStringConcat.h" extern template std::_Tree_unchecked_const_iterator>>, std::_Iterator_base0>& std::_Tree_unchecked_const_iterator>>, std::_Iterator_base0>::operator++() noexcept; diff --git a/Source/UI/Repute/UIReputeWnd.cpp b/Source/UI/Repute/UIReputeWnd.cpp index 23d614908..4052df361 100644 --- a/Source/UI/Repute/UIReputeWnd.cpp +++ b/Source/UI/Repute/UIReputeWnd.cpp @@ -24,7 +24,7 @@ #include #include -extern template std::vector::~vector(); +#include "Utility/StdStringVectorDestroy.h" // GLOBAL: gl_25000 template <> diff --git a/Source/UI/Rodex/UIRodexComposeWnd.cpp b/Source/UI/Rodex/UIRodexComposeWnd.cpp index 4520206e5..5b72b07da 100644 --- a/Source/UI/Rodex/UIRodexComposeWnd.cpp +++ b/Source/UI/Rodex/UIRodexComposeWnd.cpp @@ -46,7 +46,7 @@ #include #include -extern template std::string::basic_string(std::_String_constructor_concat_tag, const std::string&, const char*, std::size_t, const char*, std::size_t); +#include "Utility/StdStringConcat.h" namespace { #pragma pack(push, 1) diff --git a/Source/UI/RuneSystem/UIRuneSystemWnd.cpp b/Source/UI/RuneSystem/UIRuneSystemWnd.cpp index 562cd5c09..1fd48c3cc 100644 --- a/Source/UI/RuneSystem/UIRuneSystemWnd.cpp +++ b/Source/UI/RuneSystem/UIRuneSystemWnd.cpp @@ -13,7 +13,7 @@ #include "Resource/MSGSTRINGID.h" -extern template bool std::_Traits_equal>(const char*, std::size_t, const char*, std::size_t) noexcept; +#include "Utility/StdTraitsEqual.h" // GLOBAL: gl_24886 extern const int g_runeSetSlotX[6] = {87, 201, 19, 269, 87, 201}; diff --git a/Source/UI/Shop/UIMerchantShopTitle.cpp b/Source/UI/Shop/UIMerchantShopTitle.cpp index e966b1b1a..07cbb7f3a 100644 --- a/Source/UI/Shop/UIMerchantShopTitle.cpp +++ b/Source/UI/Shop/UIMerchantShopTitle.cpp @@ -14,7 +14,7 @@ #include "UI/Window/WindowBorder.h" #include "UI/Text/UIStaticText.h" -extern template std::string& std::string::operator=(std::string&&) noexcept; +#include "Utility/StdStringMoveAssign.h" // OFFSET: 0x0085ACE0 // FUNCTION: fn_10788 diff --git a/Source/UI/Skill/UIGraffiStrboxWnd.cpp b/Source/UI/Skill/UIGraffiStrboxWnd.cpp index 1e99f9296..aefede5e5 100644 --- a/Source/UI/Skill/UIGraffiStrboxWnd.cpp +++ b/Source/UI/Skill/UIGraffiStrboxWnd.cpp @@ -6,7 +6,7 @@ #include -extern template std::string::basic_string(std::_String_constructor_concat_tag, const std::string&, const char*, std::size_t, const char*, std::size_t); +#include "Utility/StdStringConcat.h" // OFFSET: 0x008E1210 // FUNCTION: fn_12174 diff --git a/Source/UI/Status/UIBasicInfoWnd.cpp b/Source/UI/Status/UIBasicInfoWnd.cpp index db34c4ece..4cf313a25 100644 --- a/Source/UI/Status/UIBasicInfoWnd.cpp +++ b/Source/UI/Status/UIBasicInfoWnd.cpp @@ -33,7 +33,7 @@ #include #include -extern template std::string::basic_string(std::_String_constructor_concat_tag, const std::string&, const char*, std::size_t, const char*, std::size_t); +#include "Utility/StdStringConcat.h" namespace { diff --git a/Source/UI/Text/ColoredText.cpp b/Source/UI/Text/ColoredText.cpp index 5fb3d10a5..66c277fe7 100644 --- a/Source/UI/Text/ColoredText.cpp +++ b/Source/UI/Text/ColoredText.cpp @@ -11,7 +11,7 @@ #include #include -extern template std::string& std::string::insert(std::string::size_type, const char*, std::string::size_type); +#include "Utility/StdStringInsert.h" // GLOBAL: gl_24512 unsigned char g_hexDigits[256] = { diff --git a/Source/UI/Text/ItemLinkDisplay.cpp b/Source/UI/Text/ItemLinkDisplay.cpp index f6ce1d97b..b51c6c1ab 100644 --- a/Source/UI/Text/ItemLinkDisplay.cpp +++ b/Source/UI/Text/ItemLinkDisplay.cpp @@ -7,7 +7,7 @@ #include -extern template std::size_t std::_Traits_find>(const char* const, const std::size_t, const std::size_t, const char* const, const std::size_t) noexcept; +#include "Utility/StdTraitsFind.h" // OFFSET: 0x008816E0 // FUNCTION: fn_11299 diff --git a/Source/UI/Text/TextMarkup.cpp b/Source/UI/Text/TextMarkup.cpp index 84909b2f0..03d81f10d 100644 --- a/Source/UI/Text/TextMarkup.cpp +++ b/Source/UI/Text/TextMarkup.cpp @@ -6,7 +6,7 @@ #include #include -extern template std::string::basic_string(std::_String_constructor_concat_tag, const std::string&, const char*, std::size_t, const char*, std::size_t); +#include "Utility/StdStringConcat.h" namespace { // INLINED diff --git a/Source/UI/Text/UITextViewer.cpp b/Source/UI/Text/UITextViewer.cpp index a61a261ae..01b6feae1 100644 --- a/Source/UI/Text/UITextViewer.cpp +++ b/Source/UI/Text/UITextViewer.cpp @@ -21,7 +21,7 @@ #include #include -extern template std::string::basic_string(std::_String_constructor_concat_tag, const std::string&, const char*, std::size_t, const char*, std::size_t); +#include "Utility/StdStringConcat.h" // OFFSET: 0x0086F0A0 // FUNCTION: fn_11086 diff --git a/Source/UI/Window/UIFrameWnd.cpp b/Source/UI/Window/UIFrameWnd.cpp index ae844ba30..5d0f34184 100644 --- a/Source/UI/Window/UIFrameWnd.cpp +++ b/Source/UI/Window/UIFrameWnd.cpp @@ -61,7 +61,7 @@ #include #include -extern template std::string::basic_string(std::_String_constructor_concat_tag, const std::string&, const char*, std::size_t, const char*, std::size_t); +#include "Utility/StdStringConcat.h" template __declspec(noinline) std::string& std::string::erase(std::size_t, std::size_t); // GLOBAL: gl_24747 diff --git a/Source/UI/Window/UIWindow.cpp b/Source/UI/Window/UIWindow.cpp index eec43782f..300ef5ffa 100644 --- a/Source/UI/Window/UIWindow.cpp +++ b/Source/UI/Window/UIWindow.cpp @@ -85,8 +85,8 @@ #include #include -extern template bool std::_Traits_equal>(const char*, std::size_t, const char*, std::size_t) noexcept; -extern template std::vector::~vector(); +#include "Utility/StdTraitsEqual.h" +#include "Utility/StdStringVectorDestroy.h" namespace { struct NavigationTargetLook { diff --git a/Source/UI/Window/UIWindowFactory.cpp b/Source/UI/Window/UIWindowFactory.cpp index 3ba6cec0a..13ce7a661 100644 --- a/Source/UI/Window/UIWindowFactory.cpp +++ b/Source/UI/Window/UIWindowFactory.cpp @@ -14,7 +14,7 @@ #include -extern template std::_List_node* std::list::_Emplace(std::_List_node* const, UIWindow* const&); +#include "Utility/StdWindowListEmplace.h" // GLOBAL: gl_25184 bool g_searchStoreInfoCreated; diff --git a/Source/UI/Window/WindowMgrState.cpp b/Source/UI/Window/WindowMgrState.cpp index 7b9987662..3da690048 100644 --- a/Source/UI/Window/WindowMgrState.cpp +++ b/Source/UI/Window/WindowMgrState.cpp @@ -42,7 +42,7 @@ extern template std::_Tree_unchecked_const_iterator>>, std::_Iterator_base0>& std::_Tree_unchecked_const_iterator>>, std::_Iterator_base0>::operator++() noexcept; -extern template std::_List_node* std::list::_Emplace(std::_List_node* const, UIWindow* const&); +#include "Utility/StdWindowListEmplace.h" // GLOBAL: gl_24986 const char* g_uiRectInfoKeySuffix = "\\UIRectInfo"; diff --git a/Source/UI/Window/WindowRegistration.cpp b/Source/UI/Window/WindowRegistration.cpp index 070a91593..d12ea444e 100644 --- a/Source/UI/Window/WindowRegistration.cpp +++ b/Source/UI/Window/WindowRegistration.cpp @@ -1,7 +1,7 @@ #include "UI/Window/UIWindow.h" #include "UI/Window/UIWindowMgr.h" -extern template std::_List_node* std::list::_Emplace(std::_List_node* const, UIWindow* const&); +#include "Utility/StdWindowListEmplace.h" // OFFSET: 0x00A8B060 // FUNCTION: fn_17120 diff --git a/Source/UI/Window/WindowRetirement.cpp b/Source/UI/Window/WindowRetirement.cpp index 6e6a325d3..af82d35ca 100644 --- a/Source/UI/Window/WindowRetirement.cpp +++ b/Source/UI/Window/WindowRetirement.cpp @@ -6,7 +6,7 @@ #include -extern template std::_List_node* std::list::_Emplace(std::_List_node* const, UIWindow* const&); +#include "Utility/StdWindowListEmplace.h" // OFFSET: 0x00AA2C90 // FUNCTION: fn_17219 diff --git a/Source/Utility/StdIntVectorCopy.h b/Source/Utility/StdIntVectorCopy.h new file mode 100644 index 000000000..4719e1588 --- /dev/null +++ b/Source/Utility/StdIntVectorCopy.h @@ -0,0 +1,5 @@ +#pragma once + +#include + +extern template std::vector::vector(const std::vector&); diff --git a/Source/Utility/StdStringConcat.h b/Source/Utility/StdStringConcat.h new file mode 100644 index 000000000..8eebaf928 --- /dev/null +++ b/Source/Utility/StdStringConcat.h @@ -0,0 +1,6 @@ +#pragma once + +#include +#include + +extern template std::string::basic_string(std::_String_constructor_concat_tag, const std::string&, const char*, std::size_t, const char*, std::size_t); diff --git a/Source/Utility/StdStringCopy.h b/Source/Utility/StdStringCopy.h new file mode 100644 index 000000000..b873a1bd4 --- /dev/null +++ b/Source/Utility/StdStringCopy.h @@ -0,0 +1,5 @@ +#pragma once + +#include + +extern template std::string::basic_string(const std::string&); diff --git a/Source/Utility/StdStringInsert.h b/Source/Utility/StdStringInsert.h new file mode 100644 index 000000000..81067c20a --- /dev/null +++ b/Source/Utility/StdStringInsert.h @@ -0,0 +1,5 @@ +#pragma once + +#include + +extern template std::string& std::string::insert(std::string::size_type, const char*, std::string::size_type); diff --git a/Source/Utility/StdStringMoveAssign.h b/Source/Utility/StdStringMoveAssign.h new file mode 100644 index 000000000..a4a7fcb0d --- /dev/null +++ b/Source/Utility/StdStringMoveAssign.h @@ -0,0 +1,5 @@ +#pragma once + +#include + +extern template std::string& std::string::operator=(std::string&&) noexcept; diff --git a/Source/Utility/StdStringVectorDestroy.h b/Source/Utility/StdStringVectorDestroy.h new file mode 100644 index 000000000..416dec838 --- /dev/null +++ b/Source/Utility/StdStringVectorDestroy.h @@ -0,0 +1,6 @@ +#pragma once + +#include +#include + +extern template std::vector::~vector(); diff --git a/Source/Utility/StdTraitsEqual.h b/Source/Utility/StdTraitsEqual.h new file mode 100644 index 000000000..ecb6a01dc --- /dev/null +++ b/Source/Utility/StdTraitsEqual.h @@ -0,0 +1,6 @@ +#pragma once + +#include +#include + +extern template bool std::_Traits_equal>(const char*, std::size_t, const char*, std::size_t) noexcept; diff --git a/Source/Utility/StdTraitsFind.h b/Source/Utility/StdTraitsFind.h new file mode 100644 index 000000000..50b6ac3a5 --- /dev/null +++ b/Source/Utility/StdTraitsFind.h @@ -0,0 +1,6 @@ +#pragma once + +#include +#include + +extern template std::size_t std::_Traits_find>(const char* const, const std::size_t, const std::size_t, const char* const, const std::size_t) noexcept; diff --git a/Source/Utility/StdWindowListEmplace.h b/Source/Utility/StdWindowListEmplace.h new file mode 100644 index 000000000..9e6159b1e --- /dev/null +++ b/Source/Utility/StdWindowListEmplace.h @@ -0,0 +1,7 @@ +#pragma once + +#include + +class UIWindow; + +extern template std::_List_node* std::list::_Emplace(std::_List_node* const, UIWindow* const&); diff --git a/Source/Utility/Threading/NThread.cpp b/Source/Utility/Threading/NThread.cpp index bda7edb3d..95dfe9583 100644 --- a/Source/Utility/Threading/NThread.cpp +++ b/Source/Utility/Threading/NThread.cpp @@ -3,7 +3,7 @@ #include #include -extern template std::string::basic_string(const std::string&); +#include "Utility/StdStringCopy.h" namespace { struct ThreadNameInfo {