10 #define __XTD_CORE_INTERNAL__ 11 #include "internal/__as_enum.h" 12 #undef __XTD_CORE_INTERNAL__ 36 template<
typename new_type_t>
39 return std::any_cast<new_type_t>(value);
40 }
catch (
const std::exception&
e) {
60 template<
typename new_type_t>
61 new_type_t
as(
bool value) {
62 return static_cast<new_type_t
>(value);
80 template<
typename new_type_t>
82 return static_cast<new_type_t
>(value);
100 template<
typename new_type_t>
101 new_type_t
as(
char value) {
102 return static_cast<new_type_t
>(value);
105 #if defined(__cpp_lib_char8_t) 106 template<
typename new_type_t>
123 return static_cast<new_type_t
>(value);
142 template<
typename new_type_t>
144 return static_cast<new_type_t
>(value);
162 template<
typename new_type_t>
164 return static_cast<new_type_t
>(value);
182 template<
typename new_type_t>
184 return static_cast<new_type_t
>(value);
202 template<
typename new_type_t>
204 return static_cast<new_type_t
>(value);
222 template<
typename new_type_t>
223 new_type_t
as(
double value) {
224 return static_cast<new_type_t
>(value);
242 template<
typename new_type_t>
243 new_type_t
as(
float value) {
244 return static_cast<new_type_t
>(value);
262 template<
typename new_type_t>
264 return static_cast<new_type_t
>(value);
282 template<
typename new_type_t>
284 return static_cast<new_type_t
>(value);
302 template<
typename new_type_t>
304 return static_cast<new_type_t
>(value);
322 template<
typename new_type_t>
324 return static_cast<new_type_t
>(value);
342 template<
typename new_type_t>
344 return static_cast<new_type_t
>(value);
362 template<
typename new_type_t>
364 return static_cast<new_type_t
>(value);
382 template<
typename new_type_t>
384 return static_cast<new_type_t
>(value);
402 template<
typename new_type_t>
404 return static_cast<new_type_t
>(value);
422 template<
typename new_type_t>
424 return static_cast<new_type_t
>(value);
443 template<
typename new_type_t>
446 return dynamic_cast<const new_type_t&
>(value);
447 }
catch (
const std::exception&
e) {
450 throw std::bad_cast();
469 template<
typename new_type_t>
472 return dynamic_cast<new_type_t&
>(value);
473 }
catch (
const std::exception&
e) {
476 throw std::bad_cast();
480 template<
typename new_type_t>
484 template<
typename new_type_t>
488 template<
typename new_type_t>
492 template<
typename new_type_t>
496 template<
typename new_type_t>
500 template<
typename new_type_t>
504 template<
typename new_type_t>
508 template<
typename new_type_t>
512 template<
typename new_type_t>
516 template<
typename new_type_t>
520 template<
typename new_type_t>
537 template<
typename new_type_t>
538 new_type_t
as(
const std::string& value) {
540 return dynamic_cast<const new_type_t&
>(value);
541 }
catch (
const std::exception&
e) {
544 throw std::bad_cast();
558 template<
typename new_type_t>
559 new_type_t
as(std::string& value) {
561 return dynamic_cast<new_type_t&
>(value);
562 }
catch (
const std::exception&
e) {
565 throw std::bad_cast();
568 #if defined(__cpp_lib_char8_t) 569 template<
typename new_type_t>
581 new_type_t
as(
const std::u8string& value) {
583 return dynamic_cast<const new_type_t&
>(value);
584 }
catch (
const std::exception&
e) {
587 throw std::bad_cast();
601 template<
typename new_type_t>
602 new_type_t
as(std::u8string& value) {
604 return dynamic_cast<new_type_t&
>(value);
605 }
catch (
const std::exception&
e) {
608 throw std::bad_cast();
623 template<
typename new_type_t>
624 new_type_t
as(
const std::u16string& value) {
626 return dynamic_cast<const new_type_t&
>(value);
627 }
catch (
const std::exception&
e) {
630 throw std::bad_cast();
644 template<
typename new_type_t>
645 new_type_t
as(std::u16string& value) {
647 return dynamic_cast<new_type_t&
>(value);
648 }
catch (
const std::exception&
e) {
651 throw std::bad_cast();
665 template<
typename new_type_t>
666 new_type_t
as(
const std::u32string& value) {
668 return dynamic_cast<const new_type_t&
>(value);
669 }
catch (
const std::exception&
e) {
672 throw std::bad_cast();
686 template<
typename new_type_t>
687 new_type_t
as(std::u32string& value) {
689 return dynamic_cast<new_type_t&
>(value);
690 }
catch (
const std::exception&
e) {
693 throw std::bad_cast();
707 template<
typename new_type_t>
708 new_type_t
as(
const std::wstring& value) {
710 return dynamic_cast<const new_type_t&
>(value);
711 }
catch (
const std::exception&
e) {
714 throw std::bad_cast();
728 template<
typename new_type_t>
729 new_type_t
as(std::wstring& value) {
731 return dynamic_cast<new_type_t&
>(value);
732 }
catch (
const std::exception&
e) {
735 throw std::bad_cast();
753 template<
typename new_type_t>
754 new_type_t
as(
const char* value) {
755 return reinterpret_cast<new_type_t
>(value);
773 template<
typename new_type_t>
774 new_type_t
as(
char* value) {
775 return reinterpret_cast<new_type_t
>(value);
778 #if defined(__cpp_lib_char8_t) 779 template<
typename new_type_t>
796 return reinterpret_cast<new_type_t
>(value);
814 template<
typename new_type_t>
816 return reinterpret_cast<new_type_t
>(value);
835 template<
typename new_type_t>
837 return reinterpret_cast<new_type_t
>(value);
855 template<
typename new_type_t>
857 return reinterpret_cast<new_type_t
>(value);
875 template<
typename new_type_t>
877 return reinterpret_cast<new_type_t
>(value);
895 template<
typename new_type_t>
897 return reinterpret_cast<new_type_t
>(value);
915 template<
typename new_type_t>
917 return reinterpret_cast<new_type_t
>(value);
935 template<
typename new_type_t>
937 return reinterpret_cast<new_type_t
>(value);
1025 #if defined(__cpp_lib_char8_t) 1393 #if defined(__cpp_lib_char8_t) 1521 #if defined(__cpp_lib_char8_t) 1773 #if defined(__cpp_lib_char8_t) 2163 #if defined(__cpp_lib_char8_t) 2181 inline xtd::byte as<xtd::byte>(
const std::u8string& value) {
2203 inline xtd::byte as<xtd::byte>(
const std::u16string& value) {
2224 inline xtd::byte as<xtd::byte>(
const std::u32string& value) {
2291 #if defined(__cpp_lib_char8_t) 2543 #if defined(__cpp_lib_char8_t) 2911 #if defined(__cpp_lib_char8_t) 3039 #if defined(__cpp_lib_char8_t) 3209 #if defined(__cpp_lib_char8_t) 4035 #if defined(__cpp_lib_char8_t) 4403 #if defined(__cpp_lib_char8_t) 4531 #if defined(__cpp_lib_char8_t) 4783 #if defined(__cpp_lib_char8_t) 5151 #if defined(__cpp_lib_char8_t) 5279 #if defined(__cpp_lib_char8_t) 5531 #if defined(__cpp_lib_char8_t) 5899 #if defined(__cpp_lib_char8_t) 6027 #if defined(__cpp_lib_char8_t) 6279 #if defined(__cpp_lib_char8_t) 6647 #if defined(__cpp_lib_char8_t) 6775 #if defined(__cpp_lib_char8_t) 7027 #if defined(__cpp_lib_char8_t) 7395 #if defined(__cpp_lib_char8_t) 7523 #if defined(__cpp_lib_char8_t) 7775 #if defined(__cpp_lib_char8_t) 8143 #if defined(__cpp_lib_char8_t) 8271 #if defined(__cpp_lib_char8_t) 8523 #if defined(__cpp_lib_char8_t) 8913 #if defined(__cpp_lib_char8_t) 9041 #if defined(__cpp_lib_char8_t) 9293 #if defined(__cpp_lib_char8_t) 9683 #if defined(__cpp_lib_char8_t) 9811 #if defined(__cpp_lib_char8_t) 10063 #if defined(__cpp_lib_char8_t) 10453 #if defined(__cpp_lib_char8_t) 10581 #if defined(__cpp_lib_char8_t) 10833 #if defined(__cpp_lib_char8_t) 11223 #if defined(__cpp_lib_char8_t) 11351 #if defined(__cpp_lib_char8_t) 11603 #if defined(__cpp_lib_char8_t) 11993 #if defined(__cpp_lib_char8_t) 12121 #if defined(__cpp_lib_char8_t) 12373 #if defined(__cpp_lib_char8_t) 12763 #if defined(__cpp_lib_char8_t) 12891 #if defined(__cpp_lib_char8_t) 13143 #if defined(__cpp_lib_char8_t) 13533 #if defined(__cpp_lib_char8_t) 13661 #if defined(__cpp_lib_char8_t) 13913 #if defined(__cpp_lib_char8_t) 14303 #if defined(__cpp_lib_char8_t) 14431 #if defined(__cpp_lib_char8_t) 14683 #if defined(__cpp_lib_char8_t) 15073 #if defined(__cpp_lib_char8_t) 15201 #if defined(__cpp_lib_char8_t) 15475 #if defined(__cpp_lib_char8_t) 16016 template<
typename new_type_t,
typename current_type_t>
16017 const new_type_t&
as(
const current_type_t& value) {
16018 thread_local
static __as_enum__<new_type_t, current_type_t, typename std::conditional<std::is_enum<current_type_t>::value, std::true_type, std::false_type>
::type>
e;
16019 return e.convert(value);
16036 template<
typename new_type_t,
typename current_type_t>
16037 new_type_t&
as(current_type_t& value) {
16038 thread_local
static __as_enum__<new_type_t, current_type_t, typename std::conditional<std::is_enum<current_type_t>::value, std::true_type, std::false_type>
::type>
e;
16039 return e.convert(value);
16055 template<
typename new_type_t,
typename current_type_t>
16056 const new_type_t*
as(
const current_type_t* value) {
16057 return xtd::convert_pointer::to_ptr<new_type_t>(value);
16073 template<
typename new_type_t,
typename current_type_t>
16074 new_type_t*
as(current_type_t* value) {
16075 return xtd::convert_pointer::to_ptr<new_type_t>(value);
16092 template<
typename new_type_t,
typename current_type_t>
16093 std::unique_ptr<new_type_t>
as(std::unique_ptr<current_type_t>& value) {
16094 return xtd::convert_pointer::to_unique_ptr<new_type_t>(value);
16110 template<
typename new_type_t,
typename current_type_t>
16111 std::unique_ptr<new_type_t>
as(std::unique_ptr<current_type_t>&& value) {
16112 return xtd::convert_pointer::to_unique_ptr<new_type_t>(value);
16129 template<
typename new_type_t,
typename current_type_t>
16130 std::shared_ptr<new_type_t>
as(
const std::shared_ptr<current_type_t>& value) {
16131 return xtd::convert_pointer::to_shared_ptr<new_type_t>(value);
16147 template<
typename new_type_t,
typename current_type_t>
16148 std::shared_ptr<new_type_t>
as(std::shared_ptr<current_type_t>& value) {
16149 return xtd::convert_pointer::to_shared_ptr<new_type_t>(value);
16166 template<
typename new_type_t,
typename current_type_t>
16167 std::shared_ptr<new_type_t>
as(std::shared_ptr<current_type_t>&& value) {
16168 return xtd::convert_pointer::to_shared_ptr<new_type_t>(value);
16188 inline std::string as<std::string>(
const std::string& value) {
16196 inline std::string as<std::string>(std::string& value) {
16236 #if defined(__cpp_lib_char8_t) 16251 inline std::u8string as<std::u8string>(
const std::string& value) {
16269 inline std::u8string as<std::u8string>(std::string& value) {
16288 inline std::u16string as<std::u16string>(
const std::string& value) {
16306 inline std::u16string as<std::u16string>(std::string& value) {
16324 inline std::u32string as<std::u32string>(
const std::string& value) {
16342 inline std::u32string as<std::u32string>(std::string& value) {
16360 inline std::wstring as<std::wstring>(
const std::string& value) {
16378 inline std::wstring as<std::wstring>(std::string& value) {
16396 inline std::string as<std::string>(
const char* value) {
16418 #if defined(__cpp_lib_char8_t) 16433 inline std::u8string as<std::u8string>(
const char* value) {
16452 inline std::u16string as<std::u16string>(
const char* value) {
16470 inline std::u32string as<std::u32string>(
const char* value) {
16488 inline std::wstring as<std::wstring>(
const char* value) {
16506 inline std::string as<std::string>(
char* value) {
16528 #if defined(__cpp_lib_char8_t) 16543 inline std::u8string as<std::u8string>(
char* value) {
16562 inline std::u16string as<std::u16string>(
char* value) {
16580 inline std::u32string as<std::u32string>(
char* value) {
16598 inline std::wstring as<std::wstring>(
char* value) {
16674 #if defined(__cpp_lib_char8_t) 16820 #if defined(__cpp_lib_char8_t) 16835 inline std::string as<std::string>(
const std::u8string& value) {
16853 inline std::string as<std::string>(std::u8string& value) {
16907 inline std::u8string as<std::u8string>(
const std::u8string& value) {
16925 inline std::u8string as<std::u8string>(std::u8string& value) {
16943 inline std::u16string as<std::u16string>(
const std::u8string& value) {
16961 inline std::u16string as<std::u16string>(std::u8string& value) {
16979 inline std::u32string as<std::u32string>(
const std::u8string& value) {
16997 inline std::u32string as<std::u32string>(std::u8string& value) {
17015 inline std::wstring as<std::wstring>(
const std::u8string& value) {
17033 inline std::wstring as<std::wstring>(std::u8string& value) {
17038 #if defined(__cpp_lib_char8_t) 17053 inline std::string as<std::string>(
const char8* value) {
17089 inline std::u8string as<std::u8string>(
const char8* value) {
17107 inline std::u16string as<std::u16string>(
const char8* value) {
17125 inline std::u32string as<std::u32string>(
const char8* value) {
17143 inline std::wstring as<std::wstring>(
const char8* value) {
17161 inline std::string as<std::string>(
char8* value) {
17197 inline std::u8string as<std::u8string>(
char8* value) {
17215 inline std::u16string as<std::u16string>(
char8* value) {
17233 inline std::u32string as<std::u32string>(
char8* value) {
17251 inline std::wstring as<std::wstring>(
char8* value) {
17270 inline std::string as<std::string>(
const std::u16string& value) {
17288 inline std::string as<std::string>(std::u16string& value) {
17328 #if defined(__cpp_lib_char8_t) 17343 inline std::u8string as<std::u8string>(
const std::u16string& value) {
17361 inline std::u8string as<std::u8string>(std::u16string& value) {
17380 inline std::u16string as<std::u16string>(
const std::u16string& value) {
17398 inline std::u16string as<std::u16string>(std::u16string& value) {
17416 inline std::u32string as<std::u32string>(
const std::u16string& value) {
17434 inline std::u32string as<std::u32string>(std::u16string& value) {
17452 inline std::wstring as<std::wstring>(
const std::u16string& value) {
17470 inline std::wstring as<std::wstring>(std::u16string& value) {
17488 inline std::string as<std::string>(
const char16* value) {
17510 #if defined(__cpp_lib_char8_t) 17525 inline std::u8string as<std::u8string>(
const char16* value) {
17544 inline std::u16string as<std::u16string>(
const char16* value) {
17562 inline std::u32string as<std::u32string>(
const char16* value) {
17580 inline std::wstring as<std::wstring>(
const char16* value) {
17598 inline std::string as<std::string>(
char16* value) {
17620 #if defined(__cpp_lib_char8_t) 17635 inline std::u8string as<std::u8string>(
char16* value) {
17654 inline std::u16string as<std::u16string>(
char16* value) {
17672 inline std::u32string as<std::u32string>(
char16* value) {
17690 inline std::wstring as<std::wstring>(
char16* value) {
17708 inline std::string as<std::string>(
const std::u32string& value) {
17726 inline std::string as<std::string>(std::u32string& value) {
17766 #if defined(__cpp_lib_char8_t) 17781 inline std::u8string as<std::u8string>(
const std::u32string& value) {
17799 inline std::u8string as<std::u8string>(std::u32string& value) {
17818 inline std::u16string as<std::u16string>(
const std::u32string& value) {
17836 inline std::u16string as<std::u16string>(std::u32string& value) {
17854 inline std::u32string as<std::u32string>(
const std::u32string& value) {
17872 inline std::u32string as<std::u32string>(std::u32string& value) {
17890 inline std::wstring as<std::wstring>(
const std::u32string& value) {
17908 inline std::wstring as<std::wstring>(std::u32string& value) {
17926 inline std::string as<std::string>(
const char32* value) {
17948 #if defined(__cpp_lib_char8_t) 17963 inline std::u8string as<std::u8string>(
const char32* value) {
17982 inline std::u16string as<std::u16string>(
const char32* value) {
18000 inline std::u32string as<std::u32string>(
const char32* value) {
18018 inline std::wstring as<std::wstring>(
const char32* value) {
18036 inline std::string as<std::string>(
char32* value) {
18058 #if defined(__cpp_lib_char8_t) 18073 inline std::u8string as<std::u8string>(
char32* value) {
18092 inline std::u16string as<std::u16string>(
char32* value) {
18110 inline std::u32string as<std::u32string>(
char32* value) {
18128 inline std::wstring as<std::wstring>(
char32* value) {
18146 inline std::string as<std::string>(
const std::wstring& value) {
18164 inline std::string as<std::string>(std::wstring& value) {
18204 #if defined(__cpp_lib_char8_t) 18219 inline std::u8string as<std::u8string>(
const std::wstring& value) {
18237 inline std::u8string as<std::u8string>(std::wstring& value) {
18256 inline std::u16string as<std::u16string>(
const std::wstring& value) {
18274 inline std::u16string as<std::u16string>(std::wstring& value) {
18292 inline std::u32string as<std::u32string>(
const std::wstring& value) {
18310 inline std::u32string as<std::u32string>(std::wstring& value) {
18328 inline std::wstring as<std::wstring>(
const std::wstring& value) {
18346 inline std::wstring as<std::wstring>(std::wstring& value) {
18364 inline std::string as<std::string>(
const wchar* value) {
18386 #if defined(__cpp_lib_char8_t) 18401 inline std::u8string as<std::u8string>(
const wchar* value) {
18420 inline std::u16string as<std::u16string>(
const wchar* value) {
18438 inline std::u32string as<std::u32string>(
const wchar* value) {
18456 inline std::wstring as<std::wstring>(
const wchar* value) {
18474 inline std::string as<std::string>(
wchar* value) {
18496 #if defined(__cpp_lib_char8_t) 18511 inline std::u8string as<std::u8string>(
wchar* value) {
18530 inline std::u16string as<std::u16string>(
wchar* value) {
18548 inline std::u32string as<std::u32string>(
wchar* value) {
18566 inline std::wstring as<std::wstring>(
wchar* value) {
18571 template<
typename new_type_t,
typename current_type_t>
18572 new_type_t* __convert_value__(current_type_t* value) {
18573 return xtd::as<new_type_t>(value);
std::type_info type
Stores information about a type.
Definition: types.h:217
slong as< slong >(std::any value)
Casts a type into another type.
Definition: as.h:10768
static std::wstring to_wstring(const std::string &str) noexcept
Converts std::string to std::wstring.
Contains xtd fundamental types.
static uint64 to_uint64(std::any value)
Convert std::any to uint64.
static ustring to_string(std::any value)
Convert std::any to ustring.
int_least8_t sbyte
Represents a 8-bit signed integer.
Definition: types.h:173
double as< double >(std::any value)
Casts a type into another type.
Definition: as.h:6962
int32 as< int32 >(std::any value)
Casts a type into another type.
Definition: as.h:9228
char as< char >(std::any value)
Casts a type into another type.
Definition: as.h:2478
static const std::string & to_string(const std::string &str) noexcept
Converts std::string to std::string.
long double decimal
Represents a decimal-precision floating-point number.
Definition: types.h:96
wchar as< wchar >(std::any value)
Casts a type into another type.
Definition: as.h:5466
Contains xtd::convert class.
char16 as< char16 >(std::any value)
Casts a type into another type.
Definition: as.h:3970
int16 as< int16 >(std::any value)
Casts a type into another type.
Definition: as.h:8458
The xtd namespace contains all fundamental classes to access Hardware, Os, System, and more.
Definition: system_report.h:17
static std::u32string to_u32string(const std::string &str) noexcept
Converts std::string to std::u32string.
static int32 to_int32(std::any value)
Convert std::any to int32.
uint16 as< uint16 >(std::any value)
Casts a type into another type.
Definition: as.h:12308
#define csf_
Provides information about the current stack frame.
Definition: current_stack_frame.h:30
uint32 as< uint32 >(std::any value)
Casts a type into another type.
Definition: as.h:13078
uint_least16_t uint16
Represents a 16-bit unsigned integer.
Definition: types.h:228
static wchar to_wchar(std::any value)
Convert std::any to wchar.
float as< float >(std::any value)
Casts a type into another type.
Definition: as.h:7710
uint64 as< uint64 >(std::any value)
Casts a type into another type.
Definition: as.h:13848
Represents text as a sequence of UTF-8 code units.
Definition: ustring.h:46
static int16 to_int16(std::any value)
Convert std::any to int16.
static slong to_llong(std::any value)
Convert std::any to slong.
static sbyte to_sbyte(std::any value)
Convert std::any to sbyte.
static std::u8string to_u8string(const std::string &str) noexcept
Converts std::string to std::u8string.
Contains std::any type and std::bad_any_cast exception.
static bool to_boolean(std::any value)
Convert std::any to bool.
static char to_char(std::any value)
Convert std::any to char.
new_type_t as(std::any value)
Casts a type into another type.
Definition: as.h:37
static char8 to_char8(std::any value)
Convert std::any to char8.
static double to_double(std::any value)
Convert std::any to double.
static float to_single(std::any value)
Convert std::any to single.
static decimal to_decimal(std::any value)
Convert std::any to decimal.
decimal as< decimal >(std::any value)
Casts a type into another type.
Definition: as.h:6214
static xtd::ulong to_ullong(type_t value) noexcept
Convert type_t to xtd::ulong.
Definition: convert.h:4871
int64 as< int64 >(std::any value)
Casts a type into another type.
Definition: as.h:9998
static xtd::byte to_byte(std::any value)
Convert std::any to byte.
static uint32 to_uint32(std::any value)
Convert std::any to uint32.
__slong__ slong
Represents a 32-bit or 64-bit signed integer.
Definition: types.h:206
static uint16 to_uint16(std::any value)
Convert std::any to uint16.
static xtd::ustring to_ustring(const std::string &str) noexcept
Converts std::string to xtd::ustring.
Contains xtd::convert_string class.
Indicates that all styles except allow_binary_specifier, allow_octal_specifier and allow_hex_specifie...
int_least16_t int16
Represents a 16-bit signed integer.
Definition: types.h:118
int_least32_t int32
Represents a 32-bit signed integer.
Definition: types.h:129
ustring as< ustring >(std::any value)
Casts a type into another type.
Definition: as.h:15388
char32_t char32
Represents a 32-bit unicode character.
Definition: types.h:85
static char16 to_char16(std::any value)
Convert std::any to char16.
static char32 to_char32(std::any value)
Convert std::any to char32.
__ulong__ ulong
Represents a 32-bit or 64-bit unsigned integer.
Definition: types.h:272
The exception that is thrown for invalid casting or explicit conversion.
Definition: invalid_cast_exception.h:18
Contains xtd::invalid_cast_exception exception.
char32 as< char32 >(std::any value)
Casts a type into another type.
Definition: as.h:4718
uint_least64_t uint64
Represents a 64-bit unsigned integer.
Definition: types.h:250
char8_t char8
Represents a 8-bit unicode character.
Definition: types.h:62
int_least64_t int64
Represents a 64-bit signed integer.
Definition: types.h:140
uint_least8_t byte
Represents a 8-bit unsigned integer.
Definition: types.h:39
static int64 to_int64(std::any value)
Convert std::any to int64.
uint_least32_t uint32
Represents a 32-bit unsigned integer.
Definition: types.h:239
static std::u16string to_u16string(const std::string &str) noexcept
Converts std::string to std::u16string.
char16_t char16
Represents a 16-bit unicode character.
Definition: types.h:74
bool as< bool >(std::any value)
Casts a type into another type.
Definition: as.h:960
char8 as< char8 >(std::any value)
Casts a type into another type.
Definition: as.h:3227
Contains xtd::convert class.
sbyte as< sbyte >(std::any value)
Casts a type into another type.
Definition: as.h:11538
wchar_t wchar
Represents a wide character.
Definition: types.h:284