Realm C++ SDK 버전 v2.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/licences/LICENSE-2.0
10//
11// 관련 법률에서 요구하거나 문서로 동의하지 않는 한, 소프트웨어
12// 라이선스에 따라 배포되는 것은 '있는 그대로' 배포됩니다,
13// Express 묵시적이든 어떤 종류의 보증이나 조건도 제공하지 않습니다.
14// 권한을 관리하는 특정 언어에 대한 내용은 라이선스를 참조하세요.
15// 라이선스에 따른 제한 사항.
16//
18
19#ifndef CPPRALM_MANAGED_PRIMARY_KEY_HPP
20#defin CPPRALM_MANAGED_PRIMARY_KEY_HPP
21
22#include <cpprealm/macros.hpp>
23#include <cpprealm/rbool.hpp>
24
25네임스페이스 영역 {
26 템플릿 <typename, typename>
27 구조체 managed;
28
29 템플릿<typename T>
30 구조체 Primary_key {
31 프라이머리 _키 () = 기본값;
32 프라이머리 _키 (const T& v) {
33 this->value = v;
34 }
35 T 값
36 내부 유형 = T 를 사용하여 ;
37 연산자 T() const {
38 반환
39 }
40 };
41
42 템플릿<>
43 구조체 프라이머리_키 < int64_t<int64_t> > {
44 내부 유형 = int64_t 사용
45 프라이머리 _키 () = 기본값;
46 프라이머리_키(const int64_t & v) {
47 this->value = v;
48 }
49 Primary_key(const int& v) {
50 this->value = v;
51 }
52 int64_t 값;
53 연산자 int64_t() const {
54 반환
55 }
56 };
57
58 템플릿<>
61 프라이머리 _키 () = 기본값;
62 Primary_key(const 객체& v) {
63 this->value = v;
64 }
65 객체 값.
66 연산자 객체() const {
67 반환
68 }
69 };
70
71 템플릿<>
72 구조체 Primary_key<std::string> {
73 using Internal_type = std::string;
74 프라이머리 _키 () = 기본값;
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 템플릿<>
88 구조체 Primary_key<uuid> {
90 프라이머리 _키 () = 기본값;
91 Primary_key(const uuid& v) {
92 this->value = v;
93 }
94 uuid
95 연산자 uuid() const {
96 반환
97 }
98 };
99
100 템플릿<>
101 구조체 프라이머리_키 <std::Optional<int64_t>> {
102 using 내부 유형 = std::Optional<int64_t>;
103 프라이머리 _키 () = 기본값;
104 Primary_key(const std:: nullopt_t & v) {
105 이->값 = v;
106 }
107 Primary_key(const std::Optional<int64_t>& v) {
108
109 }
110 Primary_key(const std::Optional<int>& v) {
111 this->value = v;
112 }
113 프라이머리_키(const int64_t & v) {
114 this->value = v;
115 }
116 Primary_key(const int& v) {
117 this->value = v;
118 }
119 std:: optional<int64_t> 값;
120 연산자 std::Optional<int64_t>() const {
121 반환
122 }
123 };
124
125 템플릿<>
126 구조체 프라이머리_키 <std::Optional<object_id>> {
127 using 내부 유형 = std::Optional<internal::bridge::object_id>;
128 프라이머리 _키 () = 기본값;
129 Primary_key(const std:: nullopt_t & v) {
130 이->값 = v;
131 }
132 Primary_key(const std::Optional<object_id>& v) {
133
134 }
135 Primary_key(const 객체& v) {
136 이->값 = v;
137 }
138 std:: optional<object_id> value;
139 연산자 std::Optional<object_id>() const {
140 반환
141 }
142 };
143
144 템플릿<>
145 구조체 프라이머리_키 <std::Optional<std::string>> {
146 using 내부 유형 = std::Optional<std::string>;
147 프라이머리 _키 () = 기본값;
148 Primary_key(const std:: nullopt_t & v) {
149 this->value = v;
150 }
151 Primary_key(const std::Optional<std::string>& v) {
152
153 }
154 Primary_key(const std::string& v) {
155 이->값 = v;
156 }
157 Primary_key(const char* v) {
158
159 }
160 화<std::string>
161 연산자 std::Optional<std::string>() const {
162 반환
163 }
164 };
165
166 템플릿<>
167 구조체 프라이머리_키 <std::Optional<uuid>> {
168 using 내부 유형 = std::Optional<internal::bridge::uuid>;
169 프라이머리 _키 () = 기본값;
170 Primary_key(const std:: nullopt_t & v) {
171 이->값 = v;
172 }
173 Primary_key(const std::Optional<uuid>& v) {
174
175 }
176 Primary_key(const uuid& v) {
177
178 }
179 std::Optional<uuid> 값;
180 연산자 std::Optional<uuid>() const {
181 반환
182 }
183 };
184
185 템플릿<>
186 구조체 managed<primary_key<int64_t>> final : managed_base {
187 프라이머리_ 키<int64_t> 분리() const {
188 반환 연산자 int64_t();
189 }
190
191 연산자 int64_t() const {
192 return m_obj->템플릿 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 연산자>(const int64_t& rhs) const noException;
198 rbool operator>=(const int64_t& rhs) const noException;
199 rbool 연산자<(const int64_t& rhs) const noException;
200 rbool 연산자<=(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 operator<(const int& rhs) const noException;
206 rbool 연산자<=(const int& rhs) const noException;
207
208 private:
209 managed() = 기본값;
210 managed(const managed&) = delete;
211 managed ( managed &&) = delete ;
212 managed& 연산자=(const managed&) = delete;
213 managed& 연산자=(managed&&) = delete;
214 템플릿<typename, typename>
215 친구 구조체 managed 됨 ;
216 };
217
218 템플릿<>
219 구조체 managed<프라이머리 키<std::string>> final : managed_base {
220 Primary_key<std::string> 분리() const {
221 반환 연산자 std::string();
222 }
223
224 연산자 std::string() const {
225 return m_obj->템플릿 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 managed() = 기본값;
235 managed(const managed&) = 기본값;
236 managed ( managed &&) = delete ;
237 managed& 연산자=(const managed&) = delete;
238 managed& 연산자=(managed&&) = delete;
239 템플릿<typename, typename>
240 친구 구조체 managed 됨 ;
241 };
242
243 템플릿<>
244 구조체 managed<primary_key<영역::uuid>>> : managed {
245 Primary_key<realm::uuid> 분리() const {
246 반환 연산자 영역::uuid();
247 }
248
249 연산자 영역::uuid() const {
250 반환 m_obj->템플릿 get<internal::bridge::uuid>(m_key).연산자 ::realm::uuid();
251 }
252
253 rbool 연산자==(const 영역::uuid& rhs) const noException;
254 rbool 연산자!=(const 영역::uuid& rhs) const noException;
255
256 private:
257 managed() = 기본값;
258 managed(const managed&) = delete;
259 managed ( managed &&) = delete ;
260 managed& 연산자=(const managed&) = delete;
261 managed& 연산자=(managed&&) = delete;
262 템플릿<typename, typename>
263 친구 구조체 managed 됨 ;
264 };
265
266 템플릿<>
267 구조체 managed<primary_key<영역::Realm 객체>> final : managed {
269 반환 연산자 Realm 객체();
270 }
271
272 연산자 Realm 객체() const {
273 반환 m_obj->템플릿 get<internal::bridge::object_id>(m_key).연산자 Realm 객체();
274 }
275
276 rbool 연산자==(const Realm 객체& rhs) const noException;
277 rbool 연산자!=(const Realm 객체& rhs) const noException;
278
279 private:
280 managed() = 기본값;
281 managed(const managed&) = delete;
282 managed ( managed &&) = delete ;
283 managed& 연산자=(const managed&) = delete;
284 managed& 연산자=(managed&&) = delete;
285 템플릿<typename, typename>
286 친구 구조체 managed 됨 ;
287 };
288
289 템플릿<typename T>
290 구조체 managed<<T>프라이머리 키 , std:: enable_if_t <std::is_enum_v<T>>> final : managed_base {
291 프라이머리_키<T> 분리() const {
292 반환 연산자 T();
293 }
294
295 연산자 T() const {
296 반환 정적_캐스트 <T>(m_obj->템플릿 get<int64_t>(m_key));
297 }
298
299 rbool 연산자==(const T& rhs) const noException {
300 if (This->m_rbool_query) {
301 return this->m_rbool_query->equal(m_key, serialize(rhs));
302 }
303 반환 직렬화(분리().값) == 직렬화(rhs);
304 }
305 rbool 연산자!=(const T& rhs) const no exception {
306 if (This->m_rbool_query) {
307 return this->쿼리>not_equal(m_key, serialize(rhs));
308 }
309 반환 직렬화(분리().값) != 직렬화(rhs);
310 }
311
312 private:
313 managed() = 기본값;
314 managed(const managed&) = delete;
315 managed ( managed &&) = delete ;
316 managed& 연산자=(const managed&) = delete;
317 managed& 연산자=(managed&&) = delete;
318 템플릿<typename, typename>
319 친구 구조체 managed 됨 ;
320 };
321
322 템플릿<>
323 구조체 managed<프라이머리 키<std::Optional<int64_t>>> final : managed_base {
324 프라이머리_ 키<std::Optional<int64_t>> take() const {
325 반환 연산자 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 연산자>(const int64_t& rhs) const noException;
335 rbool operator>=(const int64_t& rhs) const noException;
336 rbool 연산자<(const int64_t& rhs) const noException;
337 rbool 연산자<=(const int64_t& rhs) const noException;
338 rbool 연산자>(const int& rhs) const noException;
339 rbool 연산자>=(const int& rhs) const noException;
340 rbool operator<(const int& rhs) const noException;
341 rbool 연산자<=(const int& rhs) const noException;
342
343 private:
344 managed() = 기본값;
345 managed ( managed &&) = delete ;
346 managed& 연산자=(const managed&) = delete;
347 managed& 연산자=(managed&&) = delete;
348 템플릿<typename, typename>
349 친구 구조체 managed 됨 ;
350 };
351
352 템플릿<typename T>
353 구조체 managed<프라이머리 키<T>, std:: enable_if_t <std::conjoin_v<typename 내부::type_info::is_Optional<T>,
354 <typename T::value_type> managed
355 프라이머리_키<T> 분리() const {
356 반환 연산자 T();
357 }
358
359 연산자 T() const {
360 auto v = m_obj->get_Optional<int64_t>(m_key);
361 if (v) {
362 반환 static_캐스트<typename T::value_type>(*v);
363 } 다른 {
364 return std::nullopt;
365 }
366 }
367
368 rbool 연산자==(const T& rhs) const noException {
369 if (This->m_rbool_query) {
370 return this->m_rbool_query->equal(m_key, serialize(rhs));
371 }
372 반환 직렬화(분리().값) == 직렬화(rhs);
373 }
374 rbool 연산자!=(const T& rhs) const no exception {
375 if (This->m_rbool_query) {
376 return this->쿼리>not_equal(m_key, serialize(rhs));
377 }
378 반환 직렬화(분리().값) != 직렬화(rhs);
379 }
380
381 private:
382 managed() = 기본값;
383 managed(const managed&) = delete;
384 managed ( managed &&) = delete ;
385 managed& 연산자=(const managed&) = delete;
386 managed& 연산자=(managed&&) = delete;
387 템플릿<typename, typename>
388 친구 구조체 managed 됨 ;
389 };
390
391 템플릿<>
392 구조체 managed<프라이머리 키<std::Optional<std::string>>> final : managed_base {
394 반환 연산자 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 managed() = 기본값;
408 managed(const managed&) = delete;
409 managed ( managed &&) = delete ;
410 managed& 연산자=(const managed&) = delete;
411 managed& 연산자=(managed&&) = delete;
412 템플릿<typename, typename>
413 친구 구조체 managed 됨 ;
414 };
415
416 템플릿<>
417 구조체 managed<프라이머리 키<std::Optional<realm::uuid>>> final : managed_base {
419 반환 연산자 std::Optional<realm::uuid>();
420 }
421
422 operator std::Optional<realm::uuid>() const {
423 auto v = m_obj->get_Optional<Internal::bridge::uuid>(m_key);
424 if (v) {
425 v->연산자 반환 ::realm::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 managed() = 기본값;
435 managed(const managed&) = delete;
436 managed ( managed &&) = delete ;
437 managed& 연산자=(const managed&) = delete;
438 managed& 연산자=(managed&&) = delete;
439 템플릿<typename, typename>
440 친구 구조체 managed 됨 ;
441 };
442
443 템플릿<>
444 구조체 managed<프라이머리 키<std::Optional<realm::object_id>>> final : managed_base {
445 _ <realm::object_id>
446 반환 연산자 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 연산자==(const std::Optional<realm::object_id>& rhs) const noException;
458 rbool 연산자!=(const std::Optional<realm::object_id>& rhs) const noException;
459
460 private:
461 managed() = 기본값;
462 managed(const managed&) = delete;
463 managed ( managed &&) = delete ;
464 managed& 연산자=(const managed&) = delete;
465 managed& 연산자=(managed&&) = delete;
466 템플릿<typename, typename>
467 친구 구조체 managed 됨 ;
468 };
469}
470
471#endif //CPPRALM_MANAGED_PRIMARY_KEY_HPP
정의: rbool.hpp:36
정의: object_id.hpp:31
정의: 매크로.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