18#ifndef TRINITY_CHATCOMMANDARGS_H
19#define TRINITY_CHATCOMMANDARGS_H
50 struct ArgInfo {
static_assert(Trinity::dependant_false_v<T>,
"Invalid command parameter type - see ChatCommandArgs.h for possible types"); };
55 template <
typename T>
requires std::is_arithmetic_v<T>
72 if constexpr (std::is_floating_point_v<T>)
74 if (!std::isfinite(val))
108 std::string_view view;
122 std::string_view utf8view;
140 using SearchMap = std::vector<std::pair<std::string_view, Optional<int64>>>;
144 static int64 const* Match(
SearchMap const& map, std::string_view s)
noexcept;
147 template <
typename T>
requires std::is_enum_v<T>
153 for (T val : EnumUtils::Iterate<T>())
163 std::string_view strVal;
167 if (
int64 const* match = Match(_map, strVal))
169 val =
static_cast<T
>(*match);
177 using U = std::underlying_type_t<T>;
183 if (!EnumUtils::IsValid<T>(uVal))
186 val =
static_cast<T
>(uVal);
201 template <
typename T>
requires std::is_base_of_v<ContainerTag, T>
206 return tag.TryConsume(handler, args);
211 template <
typename T>
223 next = std::move(next2);
231 template <
typename T,
size_t N>
248 template <
typename... Ts>
253 template <std::size_t... I>
262 if (!TryConsume(result, val, handler, args, std::index_sequence_for<Ts...>()))
@ LANG_CMDPARSER_INVALID_UTF8
std::optional< T > Optional
Optional helper class to wrap optional values within.
bool Utf8toWStr(char const *utf8str, size_t csize, wchar_t *wstr, size_t &wsize)
static EnumText ToString(Enum value)
std::conjunction< std::is_enum< T >, std::integral_constant< bool, IsEnumFlag(T{})> > IsFlag
TokenizeResult tokenize(std::string_view args) noexcept
TC_GAME_API bool HandleVariantChatCommandConsumeResults(ChatCommandResult &combined, ChatCommandResult &¤t, ChatHandler const *handler) noexcept
TC_GAME_API char const * GetTrinityString(ChatHandler const *handler, TrinityStrings which)
TC_GAME_API void PrefixVariantChatCommandError(ChatCommandResult &combined, ChatHandler const *handler) noexcept
TC_GAME_API void InvalidStringValueFormatError(ChatCommandResult &result, ChatHandler const *handler, std::string_view arg, std::type_info const &type) noexcept
static ChatCommandResult TryConsume(AchievementEntry const *&, ChatHandler const *, std::string_view) noexcept
static ChatCommandResult TryConsume(CurrencyTypesEntry const *&, ChatHandler const *, std::string_view) noexcept
static ChatCommandResult TryConsume(GameTele const *&, ChatHandler const *, std::string_view) noexcept
static ChatCommandResult TryConsume(ItemTemplate const *&, ChatHandler const *, std::string_view) noexcept
static ChatCommandResult TryConsume(Quest const *&, ChatHandler const *, std::string_view) noexcept
static ChatCommandResult TryConsume(SpellInfo const *&, ChatHandler const *, std::string_view) noexcept
static ChatCommandResult TryConsume(T &tag, ChatHandler const *handler, std::string_view args) noexcept
static ChatCommandResult TryConsume(T &val, ChatHandler const *handler, std::string_view args) noexcept
static SearchMap MakeSearchMap() noexcept
static ChatCommandResult TryConsume(Trinity::ChatCommands::Variant< Ts... > &val, ChatHandler const *handler, std::string_view args) noexcept
static bool TryConsume(ChatCommandResult &result, Variant &val, ChatHandler const *handler, std::string_view args, std::index_sequence< I... >) noexcept
std::variant< Ts... > Variant
static ChatCommandResult TryConsume(std::array< T, N > &val, ChatHandler const *handler, std::string_view args) noexcept
static ChatCommandResult TryConsume(std::string &val, ChatHandler const *handler, std::string_view args) noexcept
static ChatCommandResult TryConsume(std::string_view &val, ChatHandler const *, std::string_view args) noexcept
static ChatCommandResult TryConsume(std::vector< T > &val, ChatHandler const *handler, std::string_view args) noexcept
static ChatCommandResult TryConsume(std::wstring &val, ChatHandler const *handler, std::string_view args) noexcept
static void AddSearchMapEntry(SearchMap &map, int64 val, EnumText const &text) noexcept
std::vector< std::pair< std::string_view, Optional< int64 > > > SearchMap