diff options
| author | Shauren <shauren.trinity@gmail.com> | 2025-05-07 15:41:41 +0200 |
|---|---|---|
| committer | Ovahlord <dreadkiller@gmx.de> | 2025-05-11 11:46:06 +0200 |
| commit | 412c5416f9406548c5b59569fbbcf47438f72f07 (patch) | |
| tree | e36a9e9b50f689fa0627f9bc390d86bcb6445cd1 /src/server/game/Chat/ChatCommands | |
| parent | 18436298f43372edef32587ed1bf6e6f625c200c (diff) | |
Core/Misc: Minor compile time improving changes
(cherry picked from commit b5c99939a82ed956cd185cd7a2ede838e2fdf23e)
# Conflicts:
# src/server/game/Entities/Item/Item.cpp
# src/server/game/Entities/Item/Item.h
# src/server/game/Entities/Player/Player.cpp
# src/server/game/Entities/Player/Player.h
Diffstat (limited to 'src/server/game/Chat/ChatCommands')
| -rw-r--r-- | src/server/game/Chat/ChatCommands/ChatCommandTags.cpp | 15 | ||||
| -rw-r--r-- | src/server/game/Chat/ChatCommands/ChatCommandTags.h | 14 |
2 files changed, 18 insertions, 11 deletions
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: |
