5#if !defined(__XTD_CORE_INTERNAL__)
6#error "Do not include this file: Internal use only"
20std::string __to_string_iformatable_to_string(
const xtd::iformatable* obj,
const std::string& fmt,
const std::locale& loc);
22std::string __to_string_object_to_string(
const xtd::object* obj);
24template<
class value_t>
25inline static std::string __to_string_polymorphic(
const value_t& value,
const std::string& fmt,
const std::locale& loc) {
26 if constexpr (std::is_base_of<xtd::iformatable, value_t>())
return __to_string_iformatable_to_string(
static_cast<const xtd::iformatable*
>(&value), fmt, loc);
27 else if constexpr (std::is_base_of<xtd::istringable, value_t>())
return __to_string_istringable_to_string(
static_cast<const xtd::istringable*
>(&value));
28 else if constexpr (std::is_base_of<xtd::object, value_t>())
return __to_string_object_to_string(
static_cast<const xtd::object*
>(&value));
29 else if constexpr (std::is_base_of<std::exception, value_t>())
return std::string {
"exception: "} +
static_cast<const std::exception&
>(value).what();
static void throws(xtd::helpers::exception_case exception_case, const source_location &location=source_location::current())
Throws an exption with specified exception case.
Provides a way to represent the current object as a string.
Definition istringable.hpp:23
Supports all classes in the xtd class hierarchy and provides low-level services to derived classes....
Definition object.hpp:45
@ format_not_iformatable
The object is not iformatable.
Definition exception_case.hpp:59
Contains xtd::istringable interface.
The xtd namespace contains all fundamental classes to access Hardware, Os, System,...
Definition abstract_object.hpp:8
Contains xtd::helpers::throw_helper class.