Botcraft 1.21.4
Loading...
Searching...
No Matches
Botcraft::Utilities::AnyParser Class Reference

#include <StdAnyUtilities.hpp>

Static Public Member Functions

static std::string ToString (const std::any &value)
 Give a string representation of a std::any value.
 
static std::string DefaultToString (const std::any &value)
 Default function to convert all unregistered.
 
static void RegisterType (const std::type_index &index, const std::function< std::string(const std::any &)> &f)
 
template<class T >
static void RegisterType (const std::function< std::string(const std::any &)> &f)
 

Static Private Attributes

static std::unordered_map< std::type_index, std::function< std::string(const std::any &)> > registered_types
 Maps std::type_index of a std::any to a function to convert it to std::string.
 

Detailed Description

Definition at line 12 of file StdAnyUtilities.hpp.

Member Function Documentation

◆ DefaultToString()

std::string Botcraft::Utilities::AnyParser::DefaultToString ( const std::any &  value)
static

Default function to convert all unregistered.

Parameters
valueValue to convert
Returns
String v

Definition at line 86 of file StdAnyUtilities.cpp.

References Botcraft::Utilities::Demangle().

Referenced by ToString().

◆ RegisterType() [1/2]

template<class T >
static void Botcraft::Utilities::AnyParser::RegisterType ( const std::function< std::string(const std::any &)> &  f)
inlinestatic

Definition at line 28 of file StdAnyUtilities.hpp.

References RegisterType().

◆ RegisterType() [2/2]

void Botcraft::Utilities::AnyParser::RegisterType ( const std::type_index &  index,
const std::function< std::string(const std::any &)> &  f 
)
static

Definition at line 91 of file StdAnyUtilities.cpp.

References registered_types.

Referenced by RegisterType().

◆ ToString()

std::string Botcraft::Utilities::AnyParser::ToString ( const std::any &  value)
static

Give a string representation of a std::any value.

Parameters
valueA std::any object to convert to string
Returns
If the type of the std::any is in registered_types, the string version of value, type name only otherwise.

Definition at line 75 of file StdAnyUtilities.cpp.

References DefaultToString(), and registered_types.

Referenced by Botcraft::Renderer::BehaviourRenderer::UpdateBlackboardValue().

Member Data Documentation

◆ registered_types

std::unordered_map< std::type_index, std::function< std::string(const std::any &)> > Botcraft::Utilities::AnyParser::registered_types
staticprivate
Initial value:
=
{
{ std::type_index(typeid(void)), [](const std::any&) { return "{}"; } },
{ std::type_index(typeid(bool)), [](const std::any& v) { return std::any_cast<bool>(v) ? "true" : "false"; } },
{ std::type_index(typeid(char)), [](const std::any& v) { std::stringstream s; const char val = std::any_cast<const char&>(v); s << (val < 0 ? "-0x" : "0x") << std::setfill('0') << std::setw(2) << std::hex << static_cast<int>(std::abs(val)); return s.str(); }},
{ std::type_index(typeid(unsigned char)), [](const std::any& v) { std::stringstream s; s << "0x" << std::setfill('0') << std::setw(2) << std::hex << static_cast<int>(std::any_cast<const unsigned char&>(v)); return s.str(); }},
{ std::type_index(typeid(short)), SimpleToString<short> },
{ std::type_index(typeid(unsigned short)), SimpleToString<unsigned short> },
{ std::type_index(typeid(int)), SimpleToString<int> },
{ std::type_index(typeid(unsigned int)), SimpleToString<unsigned int> },
{ std::type_index(typeid(long long int)), SimpleToString<long long int> },
{ std::type_index(typeid(unsigned long long int)), SimpleToString<unsigned long long int> },
{ std::type_index(typeid(float)), SimpleToString<float> },
{ std::type_index(typeid(double)), SimpleToString<double> },
{ std::type_index(typeid(std::string)), [](const std::any& v) { return std::any_cast<const std::string&>(v); } },
{ std::type_index(typeid(const char*)), [](const std::any& v) { return std::any_cast<const char* const&>(v); } },
{ std::type_index(typeid(Position)), SimpleStreamOperatorToString<Position> },
{ std::type_index(typeid(Vector3<double>)), SimpleStreamOperatorToString<Vector3<double>> },
{ std::type_index(typeid(PlayerDiggingFace)), SimpleStreamOperatorToString<PlayerDiggingFace> },
{ std::type_index(typeid(Hand)), SimpleStreamOperatorToString<Hand> },
{ std::type_index(typeid(LogLevel)), SimpleStreamOperatorToString<LogLevel> },
{ std::type_index(typeid(std::array<std::array<std::string, 3>, 3>)), CraftInputs },
}
std::string CraftInputs(const std::any &v)
Vector3< int > Position
Definition Vector3.hpp:282
Direction PlayerDiggingFace
Definition Enums.hpp:211

Maps std::type_index of a std::any to a function to convert it to std::string.

Definition at line 35 of file StdAnyUtilities.hpp.

Referenced by RegisterType(), and ToString().


The documentation for this class was generated from the following files: