Realm C++ SDK版本 v 2.2.0

managed_primary_key.hpp

1
2//
3// 版权所有 2024 Realm Inc.
4//
5// 根据 Apache 许可证 2.0 版(“许可证”)获得许可;
6// 除非符合合规,否则不得使用此文件。
7// 您可以在以下网址获取许可证副本:
8//
9// http://www.apache.org/licenses/LICENSE-2.0
10//
11// 除非适用法律要求或书面同意,否则软件
12// 根据许可证分发是按“原样”分发的,
13// 不提供任何类型的Express或暗示的保证或条件。
14// 请参阅管理权限的特定语言的许可证和
15// 许可证下的限制。
16//
18
19#ifndef CPPREALM_MANAGED_PRIMARY_KEY_HPP
20#define CPPREALM_MANAGED_PRIMARY_KEY_HPP
21
22#include <cpprealm/macros.hpp>
23#include <cpprealm/rbool.hpp>
24
25命名空间域 {
26 template < typename , typename >
27 struct 托管;
28
29 template < typename T>
30 struct primary_key {
31 primary_key () = 默认 ;
32 primary_key ( const T& v) {
33 this->value = v;
34 }
35 T 值;
36 usingInternal_type = T;
37 Operator T() const {
38 返回值;
39 }
40 };
41
42 template <>
43 struct primary_key <int64_t> {
44 usingInternal_type = int64_t;
45 primary_key () = 默认 ;
46 Primary_key ( const int64_t& v) {
47 this->value = v;
48 }
49 Primary_key ( const int & v) {
50 this->value = v;
51 }
52 int64_t value;
53 操作符 int64_t() const {
54 返回值;
55 }
56 };
57
58 template <>
59 struct primary_key < 对象 > {
61 primary_key () = 默认 ;
62 primary_key ( const 对象 & v) {
63 this->value = v;
64 }
65 对象值;
66 运算符 对象 () const {
67 返回值;
68 }
69 };
70
71 template <>
72 struct primary_key <std::string> {
73 usingInternal_type = std::string;
74 primary_key () = 默认 ;
75 primary_key ( const std::string& v) {
76 this->value = v;
77 }
78 Primary_key ( const char * v) {
79 this->value = v;
80 }
81 std::string value;
82 操作符 std::string() const {
83 返回值;
84 }
85 };
86
87 template <>
88 struct primary_key < uuid > {
89 运用 内部类型=内部::桥::uuid ;
90 primary_key () = 默认 ;
91 primary_key ( const uuid & v) {
92 this->value = v;
93 }
94 uuid值;
95 运算符 uuid () const {
96 返回值;
97 }
98 };
99
100 template <>
101 struct Primary_key <std::Optional<int64_t>> {
102 usingInternal_type = std::Optional<int64_t>;
103 primary_key () = 默认 ;
104 primary_key ( const std::nullopt_t& v) {
105 this->value = v;
106 }
107 Primary_key ( const std::Optional<int64_t>& v) {
108 this->value = v;
109 }
110 Primary_key ( const std::Optional<int>& v) {
111 this->value = v;
112 }
113 Primary_key ( const int64_t& v) {
114 this->value = v;
115 }
116 Primary_key ( const int & v) {
117 this->value = v;
118 }
[ 119 ]<int64_t> 第 119 部分
120 操作符 std::Optional<int64_t>() const {
121 返回值;
122 }
123 };
124
125 template <>
126 struct Primary_key <std::Optional<object_id>> {
127 usingInternal_type = std::Optional<internal::bridge::object_id>;
128 primary_key () = 默认 ;
129 primary_key ( const std::nullopt_t& v) {
130 this->value = v;
131 }
132 Primary_key ( const std::Optional<object_id>& v) {
133 this->value = v;
134 }
135 primary_key ( const 对象 & v) {
136 this->value = v;
137 }
[ 138 ] 第<object_id> 138 部分
139 操作符 std::Optional<object_id>() const {
140 返回值;
141 }
142 };
143
144 template <>
145 struct primary_key <std::Optional<std::string>> {
146 usingInternal_type = std::Optional<std::string>;
147 primary_key () = 默认 ;
148 primary_key ( const std::nullopt_t& v) {
149 this->value = v;
150 }
151 Primary_key ( const std::Optional<std::string>& v) {
152 this->value = v;
153 }
154 primary_key ( const std::string& v) {
155 this->value = v;
156 }
157 Primary_key ( const char * v) {
158 this->value = v;
159 }
[ 160 ] 第<std::string> 160 章
161 操作符 std::Optional<std::string>() const {
162 返回值;
163 }
164 };
165
166 template <>
167 struct primary_key <std::Optional<uuid>> {
168 usingInternal_type = std::Optional<internal::bridge::uuid>;
169 primary_key () = 默认 ;
170 primary_key ( const std::nullopt_t& v) {
171 this->value = v;
172 }
173 Primary_key ( const std::Optional<uuid>& v) {
174 this->value = v;
175 }
176 primary_key ( const uuid & v) {
177 this->value = v;
178 }
[ 179 ] 第<uuid> 179 部分
180 操作符 std::Optional<uuid>() const {
181 返回值;
182 }
183 };
184
185 template <>
186 struct 托管 < primary_key <int64_t>> final : 托管 {
187 primary_key<int64_t> detach() const {
188 return 操作符int64_t();
189 }
190
191 操作符 int64_t() const {
192 return m_obj->template get<int64_t>(m_key);
193 }
194
195 rbool 操作符==( const int64_t& rhs) const noException ;
196 rbool操作符!=( const int64_t& rhs) const noException ;
197 rbool Operator>( const int64_t& rhs) const noException ;
198 rbool 操作符>=( const int64_t& rhs) const noException ;
199 rbool 操作符<( const int64_t& rhs) const noException ;
200 rbool Operator<=( const int64_t& rhs) const noException ;
201 rbool 操作符==( const int & rhs) const noException ;
202 rbool操作符!=( const int & rhs) const noException ;
203 rbool 操作符>( const int & rhs) const noException ;
204 rbool 操作符>=( const int & rhs) const noException ;
205 rbool 操作符<( const int & rhs) const noException ;
206 rbool 操作符<=( const int & rhs) const noException ;
207
208 private :
209 托管() = 默认;
210 托管 ( const 托管 &) = delete ;
211 托管 ( 托管 &&) = delete ;
212 托管 & 操作符=( const 托管 &) = delete ;
213 托管 & 操作符=( 托管 &&) = delete ;
214 template < typename , typename >
215 朋友 struct 托管
216 };
217
218 template <>
219 struct 托管 < primary_key <std::string>> final : 托管 {
220 Primary_key<std::string>分离() const {
221 return 操作符std::string();
222 }
223
224 操作符 std::string() const {
225 return m_obj->template get<std::string>(m_key);
226 }
227
228 rbool 操作符==(const std::string& rhs) const noException ;
229 rbool操作符!=( const std::string& rhs) const noException ;
230 rbool 操作符==( const char * rhs) const noException ;
231 rbool操作符!=( const char * rhs) const noException ;
232
233 private :
234 托管() = 默认;
235 托管 ( const 托管 &) = 默认 ;
236 托管 ( 托管 &&) = delete ;
237 托管 & 操作符=( const 托管 &) = delete ;
238 托管 & 操作符=( 托管 &&) = delete ;
239 template < typename , typename >
240 朋友 struct 托管
241 };
242
243 template <>
244 struct 托管 < primary_key <域:: uuid >> : 托管_base {
245 primary_key<realm::uuid>分离() const {
246 return 运算符 域::uuid ();
247 }
248
249 运算符 域::uuid () const {
250 return m_obj->template get<internal::bridge::uuid>(m_key).操作符 ::realm::uuid();
251 }
252
253 rbool 操作符==(const 域::uuid& rhs) const noexcept;
254 rbool操作符!=( const 域::uuid & rhs) const noException ;
255
256 private :
257 托管() = 默认;
258 托管 ( const 托管 &) = delete ;
259 托管 ( 托管 &&) = delete ;
260 托管 & 操作符=( const 托管 &) = delete ;
261 托管 & 操作符=( 托管 &&) = delete ;
262 template < typename , typename >
263 朋友 struct 托管
264 };
265
266 template <>
267 struct 托管 < primary_key <域:: Realm 对象 >> final : 托管 {
268 primary_key<realm::object_id>分离() const {
269 return 运算符 Realm 对象 ();
第 270
271
272 运算符 Realm 对象 () const {
273 return m_obj->template get<internal::bridge::object_id>(m_key).操作符 Realm 对象();
274 }
275
276 rbool 操作符==(const 域::对象& rhs) const noException ;
277 rbool操作符!=( const Realm 对象 & rhs) const noexcept ;
278
279 private :
280 托管() = 默认;
281 托管 ( const 托管 &) = delete ;
282 托管 ( 托管 &&) = delete ;
283 托管 & 操作符=( const 托管 &) = delete ;
284 托管 & 操作符=( 托管 &&) = delete ;
285 template < typename , typename >
286 朋友 struct 托管
287 };
288
289 template < typename T>
290 struct 托管 < primary_key <T>, std::enable_if_t<std::is_enum_v<T>>> final : 托管 {
291 primary_key<T>分离() const {
292 return 操作符T();
293 }
294
295 Operator T() const {
296 return static_cast< T > (m_obj->template get<int64_t>(m_key));
297 }
298
299 rbool 操作符==(const T& rhs) const noException {
300 if (this->m_rbool_query) {
301 return this->查询>equal(m_key,serialize(rhs));
302 }
303 返回序列化(分离()。值) == Serialize(rhs);
304 }
305 rbool操作符!=( const T& rhs) const noException {
306 if (this->m_rbool_query) {
307 return this->m_rbool_query->not_equal(m_key,serialize(rhs));
308 }
309 返回序列化(分离()。值) !=serialize(rhs);
第 310
311
312 private :
313 托管() = 默认;
314 托管 ( const 托管 &) = delete ;
315 托管 ( 托管 &&) = delete ;
316 托管 & 操作符=( const 托管 &) = delete ;
317 托管 & 操作符=( 托管 &&) = delete ;
318 template < typename , typename >
319 朋友 struct 托管
[320 ] 第 320 章
321
322 template <>
323 struct 托管 < primary_key <std::Optional<int64_t>>> final : 托管 {
324 Primary_key<std::Optional<int64_t> > detach() const {
325 return 操作符 std::Optional<int64_t>();
第 326 章
327
328 操作符 std::Optional<int64_t>() const {
329 return m_obj->get_Optional<int64_t>(m_key);
[330 ]
331
332 rbool 操作符==( const std::Optional<int64_t>& rhs) const noException ;
333 rbool操作符!=( const std::Optional<int64_t>& rhs) const noException ;
334 rbool Operator>( const int64_t& rhs) const noException ;
335 rbool 操作符>=( const int64_t& rhs) const noException ;
336 rbool 操作符<( const int64_t& rhs) const noException ;
337 rbool Operator<=( const int64_t& rhs) const noException ;
338 rbool 操作符>( const int & rhs) const noException ;
339 rbool 操作符>=( const int & rhs) const noException ;
340 rbool 操作符<( const int & rhs) const noException ;
341 rbool 操作符<=( const int & rhs) const noException ;
342
343 private :
344 托管() = 默认;
345 托管 ( 托管 &&) = delete ;
346 托管 & 操作符=( const 托管 &) = delete ;
347 托管 & 操作符=( 托管 &&) = delete ;
348 template < typename , typename >
349 朋友 struct 托管
[350 ] 350
351
352 template < typename T>
353 struct 托管 < Primary_key <T>, std::enable_if_t<std::conjunction_v<typenameInternal::type_info::is_Optional<T>,
354 std::is_enum<typename T::value_type> >>> final : Managed_base {
355 primary_key<T>分离() const {
356 return 操作符T();
第 357 章
358
359 Operator T() const {
360 auto v = m_obj->get_Optional<int64_t>(m_key);
361 if (v) {
362 return static_cast< typename T::value_type > (*v);
363 } else {
364 return std::nullopt;
第 365
第 366 章
367
368 rbool 操作符==(const T& rhs) const noException {
369 if (this->m_rbool_query) {
370 return this->查询>equal(m_key,serialize(rhs));
第 371 章
372 返回序列化(分离()。值) == Serialize(rhs);
第 373 章
374 rbool操作符!=( const T& rhs) const noException {
375 if (this->m_rbool_query) {
376 return this->m_rbool_query->not_equal(m_key,serialize(rhs));
第 377 章
378 返回序列化(分离()。值) !=serialize(rhs);
第 379 章
380
381 private :
382 托管() = 默认;
383 托管 ( const 托管 &) = delete ;
384 托管 ( 托管 &&) = delete ;
385 托管 & 操作符=( const 托管 &) = delete ;
386 托管 & 操作符=( 托管 &&) = delete ;
387 template < typename , typename >
388 朋友 struct 托管
[389 ] 第 389 章
390
391 template <>
392 struct 托管 < primary_key <std::Optional<std::string>>> final : 托管 {
394 return 操作符 std::Optional<std::string>();
第 395 章
396
397 操作符 std::Optional<std::string>() const {
398 return m_obj->get_Optional<std::string>(m_key);
第 399 章
400
401 rbool 操作符==( const std::Optional<std::string>& rhs) const noException ;
402 rbool操作符!=( const std::Optional<std::string>& rhs) const noException ;
403 rbool 操作符==( const char * rhs) const noException ;
404 rbool操作符!=( const char * rhs) const noException ;
405
406 private :
407 托管() = 默认;
408 托管 ( const 托管 &) = delete ;
409 托管 ( 托管 &&) = delete ;
410 托管 & 操作符=( const 托管 &) = delete ;
411 托管 & 操作符=( 托管 &&) = delete ;
412 template < typename , typename >
413 朋友 struct 托管
[414 ] 第 414 章
415
416 template <>
第 417 章 struct 托管 < primary_key <std::Optional<realm::uuid>>> final : 托管 {
419 return 操作符std::可选<realm::uuid>();
第 420
第 421 章
第 422 章 操作符 std::Optional<realm::uuid>() const {
第 423 章 auto v = m_obj->get_Optional< internal::bridge::uuid >(m_key);
424 if (v) {
第 425 章 return v->操作符::域::uuid();
第 426 章
第 427 章 return std::nullopt;
第 428 章
429
430 rbool 操作符==(const std::Optional<realm::uuid>& rhs) const noException ;
第 431 章 rbool操作符!=( const std::Optional<realm::uuid>& rhs) const noException ;
第 432 章
第 433 章 private :
第 434 章 托管() = 默认;
第 435 章 托管 ( const 托管 &) = delete ;
第 436 章 托管 ( 托管 &&) = delete ;
第 437 章 托管 & 操作符=( const 托管 &) = delete ;
第 438 章 托管 & 操作符=( 托管 &&) = delete ;
第 439 章 template < typename , typename >
440 朋友 struct 托管
第 441 章
第 442 章
443 template <>
第 444 章 struct 托管 < primary_key <std::Optional<realm::object_id>>> final : 托管 {
第 445 章<realm::object_id>
第 446 章 return 操作符 std::Optional<realm::object_id>();
第 447 章
第 448 章
第 449 章 操作符 std::Optional<realm::object_id>() const {
450 auto v = m_obj->get_Optional< internal::bridge::对象 >(m_key);
第 451 章 if (v) {
第 452 章 return v->操作符::域::Realm 对象();
第 453 章
第 454 章 return std::nullopt;
第 455 章
第 456 章
第 457 章 rbool Operator==( const std::Optional<realm::object_id>& rhs) const noException ;
第 458 章 rbool操作符!=( const std::Optional<realm::object_id>& rhs) const noException ;
第 459 章
460 private :
第 461 章 托管() = 默认;
第 462 章 托管 ( const 托管 &) = delete ;
第 463 章 托管 ( 托管 &&) = delete ;
第 464 章 托管 & 操作符=( const 托管 &) = delete ;
第 465 章 托管 & 操作符=( 托管 &&) = delete ;
第 466 章 template < typename , typename >
第 467 章 朋友 struct 托管
[468 ] 第 468 章
第 469 章
第 470 章
第 471 章#endif //CPREALM_MANAGED_PRIMARY_KEY_HPP
定义: rbool.hpp:36
定义: object_id.hpp:31
定义: uuid.hpp:32
定义: macros.hpp:286
定义: obj.hpp:62
定义: types.hpp:56
定义: managed_primary_key.hpp:43
定义: managed_primary_key.hpp:72
定义: managed_primary_key.hpp:30
定义: types.hpp:35