5#if !defined(__XTD_CORE_INTERNAL__)
6#error "Do not include this file: Internal use only"
11#include "../iformatable.h"
12#include "../istringable.h"
19std::string __to_string_object_to_string(
const xtd::object* obj);
22template<
typename value_t>
23static std::string __to_string_polymorphic(
const value_t& value,
const std::string& fmt,
const std::locale& loc, std::true_type) {
24 auto value_ptr = &value;
25 if (
dynamic_cast<const std::exception*
>(value_ptr))
return std::string {
"exception: "} +
dynamic_cast<const std::exception&
>(value).what();
26 if (
dynamic_cast<const xtd::iformatable*
>(value_ptr))
return dynamic_cast<const xtd::iformatable&
>(value).__opague_internal_formatable__(
reinterpret_cast<intptr_t
>(&fmt),
reinterpret_cast<intptr_t
>(&loc), 0, INTPTR_MAX);
28 if (
dynamic_cast<const xtd::object*
>(value_ptr))
return __to_string_object_to_string(
dynamic_cast<const xtd::object*
>(value_ptr));
29 __format_exception(
typeid(value));
return {};
32template<
typename value_t>
33static std::string __to_string_polymorphic(
const value_t& value,
const std::string& fmt,
const std::locale& loc, std::false_type) {
34 return __to_string_enum(value, fmt, loc, std::is_enum<value_t>());
Provides a way to represent the current object as a string.
Definition istringable.h:23
Supports all classes in the xtd class hierarchy and provides low-level services to derived classes....
Definition object.h:42
The xtd namespace contains all fundamental classes to access Hardware, Os, System,...
Definition xtd_about_box.h:10