xtd 0.2.0
Loading...
Searching...
No Matches
register_any_stringer.h
Go to the documentation of this file.
1
3#pragma once
6
8extern std::unordered_map<std::type_index, std::function<std::string(std::any const&)>> __any_stringer__;
9
10template<class type_t, class function_t>
11inline xtd::collections::generic::key_value_pair<const std::type_index, std::function<std::string(std::any const&)>> __to_any_stringer__(function_t const& func) {
12 return {
13 std::type_index(typeid(type_t)),
14 [f = func](std::any const & value)->std::string {
15 if constexpr(std::is_void_v<type_t>) return f();
16 else return f(std::any_cast<const type_t&>(value));
17 }
18 };
19}
21
23namespace xtd {
34 template<class type_t, class function_t>
35 inline void register_any_stringer(const function_t& func) {
36 unregister_any_stringer<type_t>();
37 __any_stringer__.insert(__to_any_stringer__<type_t>(func));
38 }
39}
Represents a delegate, which is a data structure that refers to a static method or to a class instanc...
Definition delegate.h:370
std::pair< key_t, value_t > key_value_pair
Defines a key/value pair that can be set or retrieved.
Definition key_value_pair.h:29
void register_any_stringer(const function_t &func)
Register an any stringer method for a specified type.
Definition register_any_stringer.h:35
delegate< result_t(arguments_t...)> func
Represents a delegate that has variables parameters and returns a value of the type specified by the ...
Definition func.h:16
@ f
The F key.
Contains xtd::collections::key_value_pair alias.
The xtd namespace contains all fundamental classes to access Hardware, Os, System,...
Definition xtd_about_box.h:10
Contains xtd::register_any_stringer and xtd::unregister_any_stringer method.