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

#include "ChatCommandTags.h"

Inheritance diagram for Acore::ChatCommands::Hyperlink< linktag >:
Acore::Impl::ChatCommands::ContainerTag

Public Types

using value_type = typename linktag::value_type
 
using storage_type = std::remove_cvref_t< value_type >
 
- Public Types inherited from Acore::Impl::ChatCommands::ContainerTag
using ChatCommandResult = Acore::Impl::ChatCommands::ChatCommandResult
 

Public Member Functions

 operator value_type () const
 
value_type operator* () const
 
storage_type const * operator-> () const
 
ChatCommandResult TryConsume (ChatHandler const *handler, std::string_view args)
 

Private Attributes

storage_type val
 

Detailed Description

template<typename linktag>
struct Acore::ChatCommands::Hyperlink< linktag >

Member Typedef Documentation

◆ storage_type

template<typename linktag >
using Acore::ChatCommands::Hyperlink< linktag >::storage_type = std::remove_cvref_t<value_type>

◆ value_type

template<typename linktag >
using Acore::ChatCommands::Hyperlink< linktag >::value_type = typename linktag::value_type

Member Function Documentation

◆ operator value_type()

template<typename linktag >
Acore::ChatCommands::Hyperlink< linktag >::operator value_type ( ) const
inline
208{ return val; }
storage_type val
Definition: ChatCommandTags.h:236

References Acore::ChatCommands::Hyperlink< linktag >::val.

◆ operator*()

template<typename linktag >
value_type Acore::ChatCommands::Hyperlink< linktag >::operator* ( ) const
inline

◆ operator->()

template<typename linktag >
storage_type const * Acore::ChatCommands::Hyperlink< linktag >::operator-> ( ) const
inline

◆ TryConsume()

template<typename linktag >
ChatCommandResult Acore::ChatCommands::Hyperlink< linktag >::TryConsume ( ChatHandler const *  handler,
std::string_view  args 
)
inline
213 {
215 // invalid hyperlinks cannot be consumed
216 if (!info)
217 return std::nullopt;
218
219 // check if we got the right tag
220 if (info.tag != linktag::tag())
221 return std::nullopt;
222
223 // store value
224 if (!linktag::StoreTo(val, info.data))
226
227 // finally, skip any potential delimiters
228 auto [token, next] = Acore::Impl::ChatCommands::tokenize(info.tail);
229 if (token.empty()) /* empty token = first character is delimiter, skip past it */
230 return next;
231 else
232 return info.tail;
233 }
@ LANG_CMDPARSER_LINKDATA_INVALID
Definition: Language.h:1013
AC_GAME_API char const * GetAcoreString(ChatHandler const *handler, AcoreStrings which)
Definition: ChatCommandHelpers.cpp:28
TokenizeResult tokenize(std::string_view args)
Definition: ChatCommandHelpers.h:55
HyperlinkInfo AC_GAME_API ParseSingleHyperlink(std::string_view str)
Definition: Hyperlinks.cpp:32
Definition: Hyperlinks.h:237
std::string_view const tail
Definition: Hyperlinks.h:244
std::string_view const tag
Definition: Hyperlinks.h:246
std::string_view const data
Definition: Hyperlinks.h:247

References Acore::Hyperlinks::HyperlinkInfo::data, Acore::Impl::ChatCommands::GetAcoreString(), LANG_CMDPARSER_LINKDATA_INVALID, Acore::Hyperlinks::ParseSingleHyperlink(), Acore::Hyperlinks::HyperlinkInfo::tag, Acore::Hyperlinks::HyperlinkInfo::tail, Acore::Impl::ChatCommands::tokenize(), and Acore::ChatCommands::Hyperlink< linktag >::val.

Member Data Documentation

◆ val