AzerothCore 3.3.5a
OpenSource WoW Emulator
Loading...
Searching...
No Matches
Acore::ChatCommands::ExactSequence< chars > Struct Template Reference

#include "ChatCommandTags.h"

Inheritance diagram for Acore::ChatCommands::ExactSequence< chars >:
Acore::Impl::ChatCommands::ContainerTag

Public Types

using value_type = void
 
- Public Types inherited from Acore::Impl::ChatCommands::ContainerTag
using ChatCommandResult = Acore::Impl::ChatCommands::ChatCommandResult
 

Public Member Functions

ChatCommandResult TryConsume (ChatHandler const *handler, std::string_view args) const
 

Static Private Attributes

static constexpr std::array< char, sizeof...(chars)> _storage = { chars... }
 
static constexpr std::string_view _string = { _storage.data(), std::string_view::traits_type::length(_storage.data()) }
 

Detailed Description

template<char... chars>
struct Acore::ChatCommands::ExactSequence< chars >

Member Typedef Documentation

◆ value_type

template<char... chars>
using Acore::ChatCommands::ExactSequence< chars >::value_type = void

Member Function Documentation

◆ TryConsume()

template<char... chars>
ChatCommandResult Acore::ChatCommands::ExactSequence< chars >::TryConsume ( ChatHandler const *  handler,
std::string_view  args 
) const
inline
94 {
95 if (args.empty())
96 return std::nullopt;
97 std::string_view start = args.substr(0, _string.length());
98 if (StringEqualI(start, _string))
99 {
100 auto [remainingToken, tail] = Acore::Impl::ChatCommands::tokenize(args.substr(_string.length()));
101 if (remainingToken.empty()) // if this is not empty, then we did not consume the full token
102 return tail;
103 start = args.substr(0, _string.length() + remainingToken.length());
104 }
106 }
#define STRING_VIEW_FMT_ARG(str)
Definition: Define.h:101
bool StringEqualI(std::string_view a, std::string_view b)
Definition: Util.cpp:588
@ LANG_CMDPARSER_EXACT_SEQ_MISMATCH
Definition: Language.h:1015
std::string FormatAcoreString(ChatHandler const *handler, AcoreStrings which, Ts &&... args)
Definition: ChatCommandHelpers.h:126
TokenizeResult tokenize(std::string_view args)
Definition: ChatCommandHelpers.h:55
static constexpr std::string_view _string
Definition: ChatCommandTags.h:111

References Acore::ChatCommands::ExactSequence< chars >::_string, Acore::Impl::ChatCommands::FormatAcoreString(), LANG_CMDPARSER_EXACT_SEQ_MISMATCH, STRING_VIEW_FMT_ARG, StringEqualI(), and Acore::Impl::ChatCommands::tokenize().

Member Data Documentation

◆ _storage

template<char... chars>
constexpr std::array<char, sizeof...(chars)> Acore::ChatCommands::ExactSequence< chars >::_storage = { chars... }
staticconstexprprivate

◆ _string

template<char... chars>
constexpr std::string_view Acore::ChatCommands::ExactSequence< chars >::_string = { _storage.data(), std::string_view::traits_type::length(_storage.data()) }
staticconstexprprivate