xtd 0.2.0
Loading...
Searching...
No Matches
box.hpp
Go to the documentation of this file.
1
4#pragma once
7#include "convert_string.hpp"
8#include "hash_code.hpp"
9#include "icomparable.hpp"
10#include "iequatable.hpp"
12#include "iequatable.hpp"
13#include "iformatable.hpp"
14#include "istringable.hpp"
15#include "is.hpp"
16#include "object.hpp"
17#include "string.hpp"
18#include "types.hpp"
19#include "typeof.hpp"
20
22namespace xtd {
55 template<class type_t>
56 struct box : xtd::object, xtd::icomparable<box<type_t>>, xtd::iequatable<box<type_t >>, xtd::iformatable {
58
61 using value_type = type_t;
62
64 using reference = type_t&;
65
67 using const_reference = const type_t&;
68
70 using pointer = type_t*;
71
73 using const_pointer = const type_t*;
75
77
80 box() = default;
86 template<class ...args_t>
87 box(args_t&& ...args) : value(args...) {}
89
91 box(box&&) = default;
92 box(const box&) = default;
93 box& operator =(box&&) = default;
94 box& operator =(const box&) = default;
95 box& operator =(const_reference value) {
96 this->value = value;
97 return *this;
98 };
100
102
108
110
114 operator value_type() const noexcept {return value;}
116
118
130 int32 compare_to(const box& value) const noexcept override {return xtd::collections::generic::helpers::comparer<value_type> {}(this->value, value.value);}
131
135 bool equals(const object& obj) const noexcept override {return is<box<value_type>>(obj) && equals(static_cast<const box<value_type>& > (obj));}
139 bool equals(const box& value) const noexcept override {return xtd::collections::generic::helpers::equator<value_type> {}(this->value, value.value);}
140
143 xtd::size get_hash_code() const noexcept override {return hash_code::combine(value);}
144
147 xtd::string to_string() const noexcept override {return std::is_integral<value_type>::value || std::is_floating_point<value_type>::value || std::is_enum<type>::value || std::is_pointer<type>::value || std::is_base_of<xtd::istringable, value_type>::value || std::is_base_of<xtd::object, value_type>::value ? xtd::string::format("{}", value) : typeof_<value_type>().full_name();}
151 xtd::string to_string(const xtd::string& format) const {return to_string(format, std::locale {});}
158
160
166
171 static bool try_parse(const xtd::string& value, reference result) noexcept {return xtd::try_parse<value_type>(value.chars(), result);}
173 };
174}
Provides information about a specific culture (called a locale for unmanaged code development)....
Definition culture_info.hpp:43
static xtd::size combine(args_t... values) noexcept
Combines values into a hash code.
Definition hash_code.hpp:70
Defines a generalized comparison method that a value type or class implements to create a type-specif...
Definition icomparable.hpp:21
Defines a generalized method that a value type or class implements to create a type-specific method f...
Definition iequatable.hpp:22
Provides functionality to format the value of an object into a string representation.
Definition iformatable.hpp:41
Supports all classes in the xtd class hierarchy and provides low-level services to derived classes....
Definition object.hpp:44
Contains xtd::convert_string class.
Contains xtd::collections::generic::helpers::equator struct.
Contains xtd::collections::generic::helpers::comparer struct.
xtd::string format(const xtd::string &fmt, args_t &&... args)
Writes the text representation of the specified arguments list, to string using the specified format ...
Definition format.hpp:21
#define typeof_
Used to obtain the type object of a specified type or object.
Definition typeof.hpp:45
xtd::basic_string< char > string
Represents text as a sequence of UTF-8 code units.
Definition __string_definitions.hpp:43
size_t size
Represents a size of any object in bytes.
Definition size.hpp:23
std::int32_t int32
Represents a 32-bit signed integer.
Definition int32.hpp:23
bool is(xtd::any value)
Checks if the result of an expression is compatible with a given type.
Definition is.hpp:485
value_t parse(const std::string &str)
Convert a string into a type.
Definition parse.hpp:34
bool try_parse(const std::basic_string< char > &str, value_t &value) noexcept
Convert a string into a type.
Definition parse.hpp:416
Contains xtd::hash_code class.
Contains xtd::icomparable interface.
Contains xtd::iequatable interface.
Contains xtd::iformatable interface.
Contains xtd::invalid_cast_exception exception.
Contains xtd::is method.
Contains xtd::istringable interface.
The xtd namespace contains all fundamental classes to access Hardware, Os, System,...
Definition abstract_object.hpp:8
Contains xtd::object class.
Contains xtd::string alias.
Represents a boxed object.
Definition box.hpp:56
bool equals(const object &obj) const noexcept override
Determines whether the specified object is equal to the current object.
Definition box.hpp:135
box(args_t &&...args)
Initialize a new xtd::box object with specified value.
Definition box.hpp:87
bool equals(const box &value) const noexcept override
Indicates whether the current object is equal to another object of the same type.
Definition box.hpp:139
bool * pointer
Definition box.hpp:70
xtd::string to_string() const noexcept override
Returns a xtd::string that represents the current object.
Definition box.hpp:147
static bool try_parse(const xtd::string &value, reference result) noexcept
Converts the string to its value_type equivalent. A return value indicates whether the conversion suc...
Definition box.hpp:171
box()=default
Initialize a new xtd::box object.
static value_type parse(const xtd::string &value)
Converts the string to its value_type equivalent.
Definition box.hpp:165
int32 compare_to(const box &value) const noexcept override
Compares the current instance with another object of the same type.
Definition box.hpp:130
xtd::size get_hash_code() const noexcept override
Serves as a hash function for a particular type.
Definition box.hpp:143
const bool * const_pointer
Definition box.hpp:73
const bool & const_reference
Definition box.hpp:67
box(const_reference value)
Initialize a new xtd::box object with specified value.
Definition box.hpp:83
value_type value
Definition box.hpp:106
bool & reference
Definition box.hpp:64
xtd::string to_string(const xtd::string &format, const globalization::culture_info &culture) const override
Converts the value of this instance to its equivalent string representation, using the specified form...
bool value_type
Definition box.hpp:61
xtd::string to_string(const xtd::string &format) const
Converts the value of this instance to its equivalent string representation, using the specified form...
Definition box.hpp:151
Implements a function object for compare data.
Definition comparer.hpp:31
Implements a function object for performing comparisons. Unless specialised, invokes operator== on ty...
Definition equator.hpp:38
Contains typeof_ keyword.
Contains xtd fundamental types.