xtd - Reference Guide  0.1.1
Modern c++17/20 framework to create console, GUI and unit test applications on Windows, macOS, Linux, iOS and android.
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Modules Pages
types.h
Go to the documentation of this file.
1 #pragma once
5 #include <cstdint>
6 #include <string>
7 #include <typeinfo>
8 #include "core_export.h"
9 
11 #if !defined(__cpp_lib_char8_t)
12 class char8_t {
13 public:
14  char8_t() {}
15  char8_t(char value) : value_(value) {}
16  char8_t(const char8_t&) = default;
17  char8_t(char8_t&&) = default;
18 
19  operator char() const {return value_;}
20  bool operator==(char8_t c) const {return value_ == c.value_;}
21  bool operator!=(char8_t c) const {return value_ != c.value_;}
22  bool operator<(char8_t c) const {return value_ < c.value_;}
23  bool operator>(char8_t c) const {return value_ > c.value_;}
24  bool operator<=(char8_t c) const {return value_ <= c.value_;}
25  bool operator>=(char8_t c) const {return value_ >= c.value_;}
26 
27  char8_t operator+(char8_t c) const {return char8_t(value_ + c.value_);}
28  char8_t operator-(char8_t c) const {return char8_t(value_ - c.value_);}
29  char8_t& operator=(char8_t c) {value_ = c.value_; return *this;}
30  char8_t& operator++() {value_ += 1; return *this;}
31  char8_t operator++(int) {char8_t result(*this); ++(*this); return result;}
32  char8_t& operator--() {value_ -= 1; return *this;}
33  char8_t operator--(int) {char8_t result(*this); --(*this); return result;}
34 
35  bool operator==(char c) const {return value_ == c;}
36  bool operator!=(char c) const {return value_ != c;}
37  bool operator<(char c) const {return value_ < c;}
38  bool operator>(char c) const {return value_ > c;}
39  bool operator<=(char c) const {return value_ <= c;}
40  bool operator>=(char c) const {return value_ >= c;}
41 
42  friend std::ostream& operator <<(std::ostream& os, const char8_t& c) noexcept {return os << std::to_string(static_cast<int32_t>(c.value_));}
43 
44 private:
45  char value_ = 0;
46 };
47 
48 namespace std {
49  using u8string=basic_string<char8_t>;
50 }
51 #endif
53 
55 namespace xtd {
57  using byte_t = uint8_t;
58  using char_t = char;
59  using decimal_t = long double;
60  using sbyte_t = int8_t;
61  using single_t = float;
62  using uchar_t = unsigned char;
63  using ushort_t = unsigned short;
64  using ulong_t = unsigned long;
65 
66 #if defined(__linux__) && defined(_LP64)
67  using llong_t = long long int;
68  using ullong_t = unsigned long long int;
69 #else
70  using llong_t = long;
71  using ullong_t = unsigned long;
72 #endif
74 
81  using byte = uint8_t;
82 
89  using char8 = char8_t;
90 
97  using char16 = char16_t;
98 
105  using char32 = char32_t;
106 
113  using decimal = decimal_t;
114 
121  using int16 = int16_t;
122 
129  using int32 = int32_t;
130 
137  using int64 = int64_t;
138 
141  using intptr = intptr_t;
142 
155  extern core_export_ std::nullptr_t null;
156 
163  using sbyte = int8_t;
164 
171  using size = size_t;
172 
179  using type = std::type_info;
180 
187  using uchar = unsigned char;
188 
195  using uint = unsigned int;
196 
203  using uint16 = uint16_t;
204 
211  using uint32 = uint32_t;
212 
219  using uint64 = uint64_t;
220 
227  using uintptr = uintptr_t;
228 
235  using ushort = ushort_t;
236 
243  using ulong = ulong_t;
244 
251  using wchar = wchar_t;
252 }
253 
254 /*
256 namespace __ {
259  namespace system = xtd;
260 }
261 using namespace __;
262 */
Contains core_export_ keyword.
#define core_export_
Define shared library export.
Definition: core_export.h:13
int16_t int16
Represents a 16-bit signed integer.
Definition: types.h:121
char8_t char8
Represents a 16-bit unicode character.
Definition: types.h:89
wchar_t wchar
Represents a wide character.
Definition: types.h:251
decimal_t decimal
Represents a decimal-precision floating-point number.
Definition: types.h:113
int32_t int32
Represents a 32-bit signed integer.
Definition: types.h:129
unsigned char uchar
Represents a 8-bit unsigned integer.
Definition: types.h:187
int64_t int64
Represents a 64-bit signed integer.
Definition: types.h:137
int8_t sbyte
Represents a 8-bit signed integer.
Definition: types.h:163
char16_t char16
Represents a 8-bit unicode character.
Definition: types.h:97
uint32_t uint32
Represents a 32-bit unsigned integer.
Definition: types.h:211
uintptr_t uintptr
Represent a pointer or a handle.
Definition: types.h:227
unsigned int uint
Represents a 32-bit unsigned integer.
Definition: types.h:195
size_t size
Represents a size of any object in bytes.
Definition: types.h:171
char32_t char32
Represents a 32-bit unicode character.
Definition: types.h:105
intptr_t intptr
Represent a pointer or a handle.
Definition: types.h:141
ushort_t ushort
Represents a 16-bit unsigned integer.
Definition: types.h:235
ulong_t ulong
Represents a 32-bit or 64-bit unsigned integer.
Definition: types.h:243
uint64_t uint64
Represents a 64-bit unsigned integer.
Definition: types.h:219
uint16_t uint16
Represents a 16-bit unsigned integer.
Definition: types.h:203
std::type_info type
Stores information about a type.
Definition: types.h:179
@ c
The C key.
The xtd namespace contains all fundamental classes to access Hardware, Os, System,...
Definition: system_report.h:17