14 #ifndef ECVL_METADATA_H_ 15 #define ECVL_METADATA_H_ 19 #include <unordered_map> 27 std::string value_str_ =
"";
29 std::unordered_map<std::type_index, std::function<void(
const std::any& value, std::string& s)>> anytype_to_string{
30 {std::type_index(
typeid(std::string)), [](
const std::any& x, std::string& s) {s = std::any_cast<std::string>(x); }},
31 {std::type_index(
typeid(
int)), [](
const std::any& x, std::string& s) {s = std::to_string(std::any_cast<int>(x)); }},
32 {std::type_index(
typeid(
float)), [](
const std::any& x, std::string& s) {s = std::to_string(std::any_cast<float>(x)); }},
33 {std::type_index(
typeid(
double)), [](
const std::any& x, std::string& s) {s = std::to_string(std::any_cast<double>(x)); }},
34 {std::type_index(
typeid(
long)), [](
const std::any& x, std::string& s) {s = std::to_string(std::any_cast<long>(x)); }},
35 {std::type_index(
typeid(
long long)), [](
const std::any& x, std::string& s) {s = std::to_string(std::any_cast<long long>(x)); }},
36 {std::type_index(
typeid(
short)), [](
const std::any& x, std::string& s) {s = std::to_string(std::any_cast<short>(x)); }},
37 {std::type_index(
typeid(
unsigned)), [](
const std::any& x, std::string& s) {s = std::to_string(std::any_cast<unsigned>(x)); }},
38 {std::type_index(
typeid(
unsigned int)), [](
const std::any& x, std::string& s) {s = std::to_string(std::any_cast<unsigned int>(x)); }},
39 {std::type_index(
typeid(
unsigned short)), [](
const std::any& x, std::string& s) {s = std::to_string(std::any_cast<unsigned short>(x)); }},
48 if (
const auto it = anytype_to_string.find(std::type_index(value_.type())); it != anytype_to_string.cend()) {
49 it->second(value_, value_str_);
57 #endif // !ECVL_METADATA_H_
std::experimental::any any