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
93 {
94 if (args.empty())
95 return std::nullopt;
96 std::string_view start = args.substr(0, _string.length());
97 if (StringEqualI(start, _string))
98 {
99 auto [remainingToken, tail] = Acore::Impl::ChatCommands::tokenize(args.substr(_string.length()));
100 if (remainingToken.empty()) // if this is not empty, then we did not consume the full token
101 return tail;
102 start = args.substr(0, _string.length() + remainingToken.length());
103 }
105 }
#define STRING_VIEW_FMT_ARG(str)
Definition: Define.h:101
bool StringEqualI(std::string_view a, std::string_view b)
Definition: Util.cpp:587
@ LANG_CMDPARSER_EXACT_SEQ_MISMATCH
Definition: Language.h:1024
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:110

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