From b5c99939a82ed956cd185cd7a2ede838e2fdf23e Mon Sep 17 00:00:00 2001 From: Shauren Date: Wed, 7 May 2025 15:41:41 +0200 Subject: Core/Misc: Minor compile time improving changes --- src/server/game/Chat/ChatCommands/ChatCommandTags.cpp | 15 +++++++++++++++ src/server/game/Chat/ChatCommands/ChatCommandTags.h | 14 +++----------- 2 files changed, 18 insertions(+), 11 deletions(-) (limited to 'src/server/game/Chat/ChatCommands') diff --git a/src/server/game/Chat/ChatCommands/ChatCommandTags.cpp b/src/server/game/Chat/ChatCommands/ChatCommandTags.cpp index 9caf55b9723..bc64636319c 100644 --- a/src/server/game/Chat/ChatCommands/ChatCommandTags.cpp +++ b/src/server/game/Chat/ChatCommands/ChatCommandTags.cpp @@ -29,6 +29,21 @@ using namespace Trinity::Impl::ChatCommands; +ChatCommandResult Trinity::Impl::ChatCommands::TryConsumExactSequencee(std::string_view sequence, ChatHandler const* handler, std::string_view args) +{ + if (args.empty()) + return std::nullopt; + std::string_view start = args.substr(0, sequence.length()); + if (StringEqualI(start, sequence)) + { + auto [remainingToken, tail] = Trinity::Impl::ChatCommands::tokenize(args.substr(sequence.length())); + if (remainingToken.empty()) // if this is not empty, then we did not consume the full token + return tail; + start = args.substr(0, sequence.length() + remainingToken.length()); + } + return Trinity::Impl::ChatCommands::FormatTrinityString(handler, LANG_CMDPARSER_EXACT_SEQ_MISMATCH, STRING_VIEW_FMT_ARG(sequence), STRING_VIEW_FMT_ARG(start)); +} + ChatCommandResult Trinity::ChatCommands::QuotedString::TryConsume(ChatHandler const* handler, std::string_view args) { if (args.empty()) diff --git a/src/server/game/Chat/ChatCommands/ChatCommandTags.h b/src/server/game/Chat/ChatCommands/ChatCommandTags.h index ed627a50111..c84d85c671f 100644 --- a/src/server/game/Chat/ChatCommands/ChatCommandTags.h +++ b/src/server/game/Chat/ChatCommands/ChatCommandTags.h @@ -65,6 +65,8 @@ namespace Trinity::Impl::ChatCommands // this creates always 25 elements - "abc" -> 'a', 'b', 'c', '\0', '\0', ... up to 25 #define CHATCOMMANDS_IMPL_SPLIT_LITERAL(strliteral) CHATCOMMANDS_IMPL_SPLIT_LITERAL_CONSTRAINED(25, strliteral) + + TC_GAME_API ChatCommandResult TryConsumExactSequencee(std::string_view sequence, ChatHandler const* handler, std::string_view args); } namespace Trinity::ChatCommands @@ -90,17 +92,7 @@ namespace Trinity::ChatCommands ChatCommandResult TryConsume(ChatHandler const* handler, std::string_view args) const { - if (args.empty()) - return std::nullopt; - std::string_view start = args.substr(0, _string.length()); - if (StringEqualI(start, _string)) - { - auto [remainingToken, tail] = Trinity::Impl::ChatCommands::tokenize(args.substr(_string.length())); - if (remainingToken.empty()) // if this is not empty, then we did not consume the full token - return tail; - start = args.substr(0, _string.length() + remainingToken.length()); - } - return Trinity::Impl::ChatCommands::FormatTrinityString(handler, LANG_CMDPARSER_EXACT_SEQ_MISMATCH, STRING_VIEW_FMT_ARG(_string), STRING_VIEW_FMT_ARG(start)); + return Trinity::Impl::ChatCommands::TryConsumExactSequencee(_string, handler, args); } private: -- cgit v1.2.3