xtd 0.2.0
Loading...
Searching...
No Matches
emoticon.h
Go to the documentation of this file.
1
4#pragma once
5#include "../forms_export.h"
6#include <xtd/iequatable>
7#include <xtd/object>
8#include <xtd/static>
9#include <xtd/ustring>
10#include <ostream>
11#include <vector>
12
14namespace xtd {
16 namespace forms {
28 class forms_export_ emoticon : public object, public xtd::iequatable<emoticon> {
29 struct data;
30 public:
32
35 static const emoticon empty();
37
39
44 emoticon(const xtd::ustring& name, std::initializer_list<char32> codepoints);
45
49 emoticon(const xtd::ustring& name, const std::vector<char32>& codepoints);
50
54 emoticon(const xtd::ustring& name, char32 codepoint);
55
58 explicit emoticon(std::initializer_list<char32> codepoints);
59
62 explicit emoticon(const std::vector<char32>& codepoints);
63
66 explicit emoticon(char32 codepoint);
68
70 template<typename type_t>
71 emoticon(const xtd::ustring& name, std::initializer_list<type_t> codepoints) {
72 create_data();
73 name_(name);
74 for (auto codepoint : codepoints)
75 codepoints_().push_back(static_cast<char32>(codepoint));
76 }
77
78 template<typename type_t>
79 emoticon(const xtd::ustring& name, const std::vector<type_t>& codepoints) {
80 create_data();
81 name_(name);
82 for (auto codepoint : codepoints)
83 codepoints_().push_back(static_cast<char32>(codepoint));
84 }
85
86 template<typename type_t>
87 emoticon(const xtd::ustring& name, type_t codepoint) {
88 create_data();
89 name_(name);
90 codepoints_({static_cast<char32>(codepoint)});
91 }
92
93 template<typename type_t>
94 explicit emoticon(std::initializer_list<type_t> codepoints) {
95 create_data();
96 for (auto codepoint : codepoints)
97 codepoints_().push_back(static_cast<char32>(codepoint));
98 }
99
100 template<typename type_t>
101 explicit emoticon(const std::vector<type_t>& codepoints) {
102 create_data();
103 for (auto codepoint : codepoints)
104 codepoints_().push_back(static_cast<char32>(codepoint));
105 }
106
107 template<typename type_t>
108 explicit emoticon(type_t codepoint) {
109 create_data();
110 codepoints_({static_cast<char32>(codepoint)});
111 }
112
113 emoticon();
114 emoticon(const emoticon& other);
115 emoticon& operator =(const emoticon& other);
117
119
123 const xtd::ustring& name() const noexcept;
124
127 const std::vector<char32>& codepoints() const noexcept;
129
131
133 bool equals(const emoticon& value) const noexcept override;
134
137 xtd::ustring to_string() const noexcept override;
139
140 private:
141 void create_data();
142 void name_(const ustring& name);
143 std::vector<char32>& codepoints_();
144 void codepoints_(std::vector<char32>&& codepoints);
145
146 std::shared_ptr<data> data_;
147 };
148 }
149}
150
152inline xtd::ustring operator +(const xtd::forms::emoticon& value_a, const xtd::forms::emoticon& value_b) {
153 return value_a.to_string() + value_b.to_string();
154}
155
156inline xtd::ustring operator +(const xtd::forms::emoticon& value_a, const char* value_b) {
157 return value_a.to_string() + value_b;
158}
159
160inline xtd::ustring operator +(const xtd::forms::emoticon& value_a, const xtd::ustring& value_b) {
161 return value_a.to_string() + value_b;
162}
163
164inline xtd::ustring operator +(const xtd::ustring& value_a, const xtd::forms::emoticon& value_b) {
165 return value_a + value_b.to_string();
166}
167
168inline xtd::ustring operator +(const char* value_a, const xtd::forms::emoticon& value_b) {
169 return xtd::ustring(value_a) + value_b.to_string();
170}
Represent a emoticon with name and codepoints.
Definition emoticon.h:28
emoticon(std::initializer_list< char32 > codepoints)
Initialize a new instance of emoticon class with specified codepoints.
emoticon(const xtd::ustring &name, char32 codepoint)
Initialize a new instance of emoticon class with specified name and codepoint.
static const emoticon empty()
Represents an empty emoticon.
emoticon(const std::vector< char32 > &codepoints)
Initialize a new instance of emoticon class with specified codepoints.
const xtd::ustring & name() const noexcept
Gets name of emoticon.
emoticon(char32 codepoint)
Initialize a new instance of emoticon class with specified codepoint.
emoticon(const xtd::ustring &name, std::initializer_list< char32 > codepoints)
Initialize a new instance of emoticon class with specified name and codepoints.
xtd::ustring to_string() const noexcept override
Returns a string containing the codepoints of the emoticons.
emoticon(const xtd::ustring &name, const std::vector< char32 > &codepoints)
Initialize a new instance of emoticon class with specified name and codepoints.
Defines a generalized method that a value type or class implements to create a type-specific method f...
Definition iequatable.h:18
Supports all classes in the xtd class hierarchy and provides low-level services to derived classes....
Definition object.h:32
Represents text as a sequence of UTF-8 code units.
Definition ustring.h:47
ustring to_string() const noexcept override
Returns a sxd::ustring that represents the current object.
#define forms_export_
Define shared library export.
Definition forms_export.h:13
char32_t char32
Represents a 32-bit unicode character.
Definition types.h:87
The xtd::forms namespace contains classes for creating Windows-based applications that take full adva...
Definition xtd_about_box.h:12
The xtd namespace contains all fundamental classes to access Hardware, Os, System,...
Definition xtd_about_box.h:10