xtd 0.2.0
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 "enum.hpp"
17#include "object.hpp"
18#include "string.hpp"
19#include "types.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 {});}
156 xtd::string to_string(const xtd::string& format, const std::locale& loc) const override {return xtd::string::format(xtd::string::format("{{:{}}}", format), value);}
158
160
165 static value_type parse(const xtd::string& value) {return xtd::parse<value_type>(value);}
166
171 static bool try_parse(const xtd::string& value, reference result) noexcept {return xtd::try_parse<value_type>(value.chars(), result);}
173 };
174}
Represents text as a sequence of character units.
Definition basic_string.hpp:71
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:35
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 enum_ and enum_ut_ keywords.
Contains xtd::collections::generic::helpers::equator struct.
Contains xtd::collections::generic::helpers::comparer struct.
static basic_string format(const basic_string< char > &fmt, args_t &&... args)
Writes the text representation of the specified arguments list, to string using the specified format ...
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:20
int32_t int32
Represents a 32-bit signed integer.
Definition int32.hpp:23
size_t size
Represents a size of any object in bytes.
Definition size.hpp:23
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 xtd_about_box.hpp:10
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
type_t * pointer
Represents the reference type.
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 type_t * const_pointer
Represents the cont reference type.
Definition box.hpp:73
const type_t & const_reference
Represents the cont reference type.
Definition box.hpp:67
box(const_reference value)
Initialize a new xtd::box object with specified value.
Definition box.hpp:83
value_type value
Gets or sets the underlying value.
Definition box.hpp:106
type_t & reference
Represents the reference type.
Definition box.hpp:64
type_t value_type
Definition box.hpp:61
xtd::string to_string(const xtd::string &format, const std::locale &loc) const override
Converts the value of this instance to its equivalent string representation, using the specified form...
Definition box.hpp:156
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 xtd fundamental types.