summaryrefslogtreecommitdiffstats
path: root/intl/icu_capi/cpp/include/ICU4XCodePointSetBuilder.hpp
blob: bf77eb56a4193b1d8ad156232fd0ee6423ea9cd0 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
#ifndef ICU4XCodePointSetBuilder_HPP
#define ICU4XCodePointSetBuilder_HPP
#include <stdint.h>
#include <stddef.h>
#include <stdbool.h>
#include <algorithm>
#include <memory>
#include <variant>
#include <optional>
#include "diplomat_runtime.hpp"

#include "ICU4XCodePointSetBuilder.h"

class ICU4XCodePointSetBuilder;
class ICU4XCodePointSetData;

/**
 * A destruction policy for using ICU4XCodePointSetBuilder with std::unique_ptr.
 */
struct ICU4XCodePointSetBuilderDeleter {
  void operator()(capi::ICU4XCodePointSetBuilder* l) const noexcept {
    capi::ICU4XCodePointSetBuilder_destroy(l);
  }
};

/**
 * See the [Rust documentation for `CodePointInversionListBuilder`](https://docs.rs/icu/latest/icu/collections/codepointinvlist/struct.CodePointInversionListBuilder.html) for more information.
 */
class ICU4XCodePointSetBuilder {
 public:

  /**
   * Make a new set builder containing nothing
   * 
   * See the [Rust documentation for `new`](https://docs.rs/icu/latest/icu/collections/codepointinvlist/struct.CodePointInversionListBuilder.html#method.new) for more information.
   */
  static ICU4XCodePointSetBuilder create();

  /**
   * Build this into a set
   * 
   * This object is repopulated with an empty builder
   * 
   * See the [Rust documentation for `build`](https://docs.rs/icu/latest/icu/collections/codepointinvlist/struct.CodePointInversionListBuilder.html#method.build) for more information.
   */
  ICU4XCodePointSetData build();

  /**
   * Complements this set
   * 
   * (Elements in this set are removed and vice versa)
   * 
   * See the [Rust documentation for `complement`](https://docs.rs/icu/latest/icu/collections/codepointinvlist/struct.CodePointInversionListBuilder.html#method.complement) for more information.
   */
  void complement();

  /**
   * Returns whether this set is empty
   * 
   * See the [Rust documentation for `is_empty`](https://docs.rs/icu/latest/icu/collections/codepointinvlist/struct.CodePointInversionListBuilder.html#method.is_empty) for more information.
   */
  bool is_empty() const;

  /**
   * Add a single character to the set
   * 
   * See the [Rust documentation for `add_char`](https://docs.rs/icu/latest/icu/collections/codepointinvlist/struct.CodePointInversionListBuilder.html#method.add_char) for more information.
   */
  void add_char(char32_t ch);

  /**
   * Add a single u32 value to the set
   * 
   * See the [Rust documentation for `add_u32`](https://docs.rs/icu/latest/icu/collections/codepointinvlist/struct.CodePointInversionListBuilder.html#method.add_u32) for more information.
   */
  void add_u32(uint32_t ch);

  /**
   * Add an inclusive range of characters to the set
   * 
   * See the [Rust documentation for `add_range`](https://docs.rs/icu/latest/icu/collections/codepointinvlist/struct.CodePointInversionListBuilder.html#method.add_range) for more information.
   */
  void add_inclusive_range(char32_t start, char32_t end);

  /**
   * Add an inclusive range of u32s to the set
   * 
   * See the [Rust documentation for `add_range_u32`](https://docs.rs/icu/latest/icu/collections/codepointinvlist/struct.CodePointInversionListBuilder.html#method.add_range_u32) for more information.
   */
  void add_inclusive_range_u32(uint32_t start, uint32_t end);

  /**
   * Add all elements that belong to the provided set to the set
   * 
   * See the [Rust documentation for `add_set`](https://docs.rs/icu/latest/icu/collections/codepointinvlist/struct.CodePointInversionListBuilder.html#method.add_set) for more information.
   */
  void add_set(const ICU4XCodePointSetData& data);

  /**
   * Remove a single character to the set
   * 
   * See the [Rust documentation for `remove_char`](https://docs.rs/icu/latest/icu/collections/codepointinvlist/struct.CodePointInversionListBuilder.html#method.remove_char) for more information.
   */
  void remove_char(char32_t ch);

  /**
   * Remove an inclusive range of characters from the set
   * 
   * See the [Rust documentation for `remove_range`](https://docs.rs/icu/latest/icu/collections/codepointinvlist/struct.CodePointInversionListBuilder.html#method.remove_range) for more information.
   */
  void remove_inclusive_range(char32_t start, char32_t end);

  /**
   * Remove all elements that belong to the provided set from the set
   * 
   * See the [Rust documentation for `remove_set`](https://docs.rs/icu/latest/icu/collections/codepointinvlist/struct.CodePointInversionListBuilder.html#method.remove_set) for more information.
   */
  void remove_set(const ICU4XCodePointSetData& data);

  /**
   * Removes all elements from the set except a single character
   * 
   * See the [Rust documentation for `retain_char`](https://docs.rs/icu/latest/icu/collections/codepointinvlist/struct.CodePointInversionListBuilder.html#method.retain_char) for more information.
   */
  void retain_char(char32_t ch);

  /**
   * Removes all elements from the set except an inclusive range of characters f
   * 
   * See the [Rust documentation for `retain_range`](https://docs.rs/icu/latest/icu/collections/codepointinvlist/struct.CodePointInversionListBuilder.html#method.retain_range) for more information.
   */
  void retain_inclusive_range(char32_t start, char32_t end);

  /**
   * Removes all elements from the set except all elements in the provided set
   * 
   * See the [Rust documentation for `retain_set`](https://docs.rs/icu/latest/icu/collections/codepointinvlist/struct.CodePointInversionListBuilder.html#method.retain_set) for more information.
   */
  void retain_set(const ICU4XCodePointSetData& data);

  /**
   * Complement a single character to the set
   * 
   * (Characters which are in this set are removed and vice versa)
   * 
   * See the [Rust documentation for `complement_char`](https://docs.rs/icu/latest/icu/collections/codepointinvlist/struct.CodePointInversionListBuilder.html#method.complement_char) for more information.
   */
  void complement_char(char32_t ch);

  /**
   * Complement an inclusive range of characters from the set
   * 
   * (Characters which are in this set are removed and vice versa)
   * 
   * See the [Rust documentation for `complement_range`](https://docs.rs/icu/latest/icu/collections/codepointinvlist/struct.CodePointInversionListBuilder.html#method.complement_range) for more information.
   */
  void complement_inclusive_range(char32_t start, char32_t end);

  /**
   * Complement all elements that belong to the provided set from the set
   * 
   * (Characters which are in this set are removed and vice versa)
   * 
   * See the [Rust documentation for `complement_set`](https://docs.rs/icu/latest/icu/collections/codepointinvlist/struct.CodePointInversionListBuilder.html#method.complement_set) for more information.
   */
  void complement_set(const ICU4XCodePointSetData& data);
  inline const capi::ICU4XCodePointSetBuilder* AsFFI() const { return this->inner.get(); }
  inline capi::ICU4XCodePointSetBuilder* AsFFIMut() { return this->inner.get(); }
  inline ICU4XCodePointSetBuilder(capi::ICU4XCodePointSetBuilder* i) : inner(i) {}
  ICU4XCodePointSetBuilder() = default;
  ICU4XCodePointSetBuilder(ICU4XCodePointSetBuilder&&) noexcept = default;
  ICU4XCodePointSetBuilder& operator=(ICU4XCodePointSetBuilder&& other) noexcept = default;
 private:
  std::unique_ptr<capi::ICU4XCodePointSetBuilder, ICU4XCodePointSetBuilderDeleter> inner;
};

#include "ICU4XCodePointSetData.hpp"

inline ICU4XCodePointSetBuilder ICU4XCodePointSetBuilder::create() {
  return ICU4XCodePointSetBuilder(capi::ICU4XCodePointSetBuilder_create());
}
inline ICU4XCodePointSetData ICU4XCodePointSetBuilder::build() {
  return ICU4XCodePointSetData(capi::ICU4XCodePointSetBuilder_build(this->inner.get()));
}
inline void ICU4XCodePointSetBuilder::complement() {
  capi::ICU4XCodePointSetBuilder_complement(this->inner.get());
}
inline bool ICU4XCodePointSetBuilder::is_empty() const {
  return capi::ICU4XCodePointSetBuilder_is_empty(this->inner.get());
}
inline void ICU4XCodePointSetBuilder::add_char(char32_t ch) {
  capi::ICU4XCodePointSetBuilder_add_char(this->inner.get(), ch);
}
inline void ICU4XCodePointSetBuilder::add_u32(uint32_t ch) {
  capi::ICU4XCodePointSetBuilder_add_u32(this->inner.get(), ch);
}
inline void ICU4XCodePointSetBuilder::add_inclusive_range(char32_t start, char32_t end) {
  capi::ICU4XCodePointSetBuilder_add_inclusive_range(this->inner.get(), start, end);
}
inline void ICU4XCodePointSetBuilder::add_inclusive_range_u32(uint32_t start, uint32_t end) {
  capi::ICU4XCodePointSetBuilder_add_inclusive_range_u32(this->inner.get(), start, end);
}
inline void ICU4XCodePointSetBuilder::add_set(const ICU4XCodePointSetData& data) {
  capi::ICU4XCodePointSetBuilder_add_set(this->inner.get(), data.AsFFI());
}
inline void ICU4XCodePointSetBuilder::remove_char(char32_t ch) {
  capi::ICU4XCodePointSetBuilder_remove_char(this->inner.get(), ch);
}
inline void ICU4XCodePointSetBuilder::remove_inclusive_range(char32_t start, char32_t end) {
  capi::ICU4XCodePointSetBuilder_remove_inclusive_range(this->inner.get(), start, end);
}
inline void ICU4XCodePointSetBuilder::remove_set(const ICU4XCodePointSetData& data) {
  capi::ICU4XCodePointSetBuilder_remove_set(this->inner.get(), data.AsFFI());
}
inline void ICU4XCodePointSetBuilder::retain_char(char32_t ch) {
  capi::ICU4XCodePointSetBuilder_retain_char(this->inner.get(), ch);
}
inline void ICU4XCodePointSetBuilder::retain_inclusive_range(char32_t start, char32_t end) {
  capi::ICU4XCodePointSetBuilder_retain_inclusive_range(this->inner.get(), start, end);
}
inline void ICU4XCodePointSetBuilder::retain_set(const ICU4XCodePointSetData& data) {
  capi::ICU4XCodePointSetBuilder_retain_set(this->inner.get(), data.AsFFI());
}
inline void ICU4XCodePointSetBuilder::complement_char(char32_t ch) {
  capi::ICU4XCodePointSetBuilder_complement_char(this->inner.get(), ch);
}
inline void ICU4XCodePointSetBuilder::complement_inclusive_range(char32_t start, char32_t end) {
  capi::ICU4XCodePointSetBuilder_complement_inclusive_range(this->inner.get(), start, end);
}
inline void ICU4XCodePointSetBuilder::complement_set(const ICU4XCodePointSetData& data) {
  capi::ICU4XCodePointSetBuilder_complement_set(this->inner.get(), data.AsFFI());
}
#endif