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// 該当するルールによって要求されたり、書込み (write) で同意された場合を除き、ソフトウェア
12ライセンスに基づいて配布される // は "AS IS" CRUD で配布されるため、
13// 任意の種類の 保証 または 条件なし(式またはExpressのいずれか)。
14// 特定の言語を使用する権限については、「ライセンス」を参照してください
15ライセンスに基づく // の制限。
16//
18
19#ifndef CPPREALM_MANAGED_PRIMARY_KEY_HPP
20CPREALM_MANAGED_プライマリ_KEY_HPP を定義する
21
22#include <cpprealm/macros.hpp>
23#include <cpprealm/rbool.hpp>
24
25名前空間邦土 {
26 テンプレート< typename , typename >
27 構造体管理。
28
29 テンプレート< typename T>
30 構造体 プライマリ_キー {
31 Primary_key ()=デフォルト
32 プライマリ_キー( const T & v){
33この->値 = v。
34 }
35 T 値、
36 internal_type = Tを使用しており、
37 演算子T()条件{
38 戻り値。
39 }
40 };
41
42 template<>
43 構造体 プライマリ_キー < int64_t<int64_t> > {
44 internal_type = int64_tを使用し
45 Primary_key ()=デフォルト
46 プライマリ_キー( const int64_t & v){
47この->値 = v。
48 }
49 プライマリ_キー( const int & v){
この>値50 = v。
51 }
52 int64_t 値。
53 int64_t () 演算子 {
54 戻り値。
55 }
56 };
57
58 template<>
61 Primary_key ()=デフォルト
62 プライマリ_キー( const object_id & v){
63この->値 = v。
64 }
65 object_id値。
66 演算子 object_id () const {
67 戻り値。
68 }
69 };
70
71 template<>
72 構造体 プライマリ_キー <std::string> {
73 internal_type = std::stringを使用します。
74 Primary_key ()=デフォルト
75 プライマリ_キー( const std::string+ v){{
76この->値 = v。
77 }
78 プライマリ_キー( const char * v){
79この->値 = v。
80 }
81 std::string 値。
82 演算子std::string()制約{
83 戻り値。
84 }
85 };
86
87 template<>
88 構造体 プライマリ_キー < uuid > {
90 Primary_key ()=デフォルト
91 プライマリ_キー( const uuid & v){
92この->値 = v。
93 }
94 uuid value;
95 演算子 uuid () const {
96 戻り値。
97 }
98 };
99
100 template<>
101 構造体 プライマリ _キー <std::optional=int64_t==========================<int64_t>
102 internal_type = std::optional[int64_t]> を使用し<int64_t> ます。
103 Primary_key ()=デフォルト
104 プライマリ_キー( const std:: nullopt_t & v){
105この->値 = v:
106 }
107 プライマリ_キー( const std::optional<int64_t>+ v){
108この->値 = v。
109 }
110 プライマリ _キー( const std::optional=int=====================================<int>
111 : この->値 = v:
112 }
113 プライマリ_キー( const int64_t & v){
114この->値 = v:
115 }
116 プライマリ_キー( const int & v){
117この->値 = v:
118 }
119 std::optional[int64_t]<int64_t> 値。
120 演算子std::optional<int64_t>() const {
121 戻り値。
122 }
123 };
124
125 template<>
126 構造体 プライマリ _キー <object_id><std::optional=object_id> {
127 internal_type = std::optional を使用し<internal::bridge::object_id> ます
128 Primary_key ()=デフォルト
129 プライマリ_キー( const std:: nullopt_t & v){
130この->値 = v。
131 }
132 プライマリ _キー( const std::optional=object_id>+<object_id> v){
133この->値 = v。
134 }
135 プライマリ_キー( const object_id & v){
136この->値 = v。
137 }
138 std::optional[object_id]<object_id> 値。
139 演算子 std::optional{object_id>() 制約<object_id> {
140 戻り値。
141 }
142 };
143
144 template<>
145 構造体 プライマリ _キー <std::optional=std::string=================================<std::string>
146 internal_type = std::optional[std::string]> を使用し<std::string> ます。
147 Primary_key ()=デフォルト
148 プライマリ_キー( const std:: nullopt_t & v){
149この->値 = v:
150 }
151 プライマリ _キー( const std::optional{std::string>+<std::string> v) {
152この->値 = v:
153 }
154 プライマリ_キー( const std::string+ v){{
155この->値 = v。
156 }
157 プライマリ_キー( const char * v){
158この->値 = v。
159 }
160 std::optional[std:string]><std::string> 値。
161 演算子 <std::string>std::optional{std::string>() const {
162 戻り値。
163 }
164 };
165
166 template<>
167 構造体 プライマリ _キー <std::optional=uuid========================<uuid>
168 internal_type = std::optional を使用し<internal::bridge::uuid> ます
169 Primary_key ()=デフォルト
170 プライマリ_キー( const std:: nullopt_t & v){
171この->値 = v:
172 }
173 プライマリ _キー( const std::optional=uuid>+<uuid> v){
174この->値 = v:
175 }
176 プライマリ_キー( const uuid & v){
177この->値 = v:
178 }
179 std::optional{uuid}<uuid> 値:
180 演算子 std::optional{uuid>()<uuid> 定数 {
181 戻り値。
182 }
183 };
184
185 template<>
186 構造体 Managed < Primary_key <int64_t> final : Managed_base {
187 プライマリ_キー<int64_t>デタッチし() const {
188 return 演算子int64_t()。
189 }
190
191 int64_t () 演算子 {
192 return m_obj->template get<int64_t>(m_key)
193 }
194
195 rbool演算子==( const int64_t=rhs) constは例外をスローします。
196 rbool演算子!=( const int64_t +rhs)は 以外の ではありません。
197 rbool演算子>( const int64_t+rhs) constは例外をスローします。
198 rbool演算子>=( const int64_t=rhs) constは 以外となります 。
199 rbool演算子 <( const int64_t+rhs) constは 以外 の条件に一致します。
200 rbool演算子==( const int64_t=rhs) const : 以外
201 rbool演算子==( const int &rhs) const noExceptionを構成します 。
202 rbool演算子!=( const intおよびrhs )は 以外と一致しません 。
203 rbool演算子>( const int &rhs) は以外の ではありません
204 rbool演算子>=( const int &rhs) const noExceptionを構成します。
205 rbool演算子未満( const int &rhs) const noException が含まれる場合
206 rbool 演算子 == ( const int &rhs) ===============================================================================================
207
208 private :
209 マネージド()=デフォルト
210 マネージドconst administrators =削除
211 マネージドマネージド& )= delete
212 Managed & 演算子=( constマネージド&) = delete
213 Managed & 演算子=(マネージド&と) = delete
214 テンプレート< typename , typename >
215 友人 構造体 マネージド
216 };
217
218 template<>
219 構造体 Managed < Primary_key <std::string> final : Managed_base {
221 return 演算子std::string()。
222 }
223
224 演算子std::string()制約{
225 return m_obj->template<std::string> get+::string>(m_key)
226 }
227
228 rbool Operator==( const std::string=rhs) const noExceptionを構成する
229 rbool演算子!=( const std::string+ rhs )は 以外の ではありません。
230 rbool 演算子==( const char * rhs) Const noException が 含ま れる
231 rbool演算子!=( const cursor * rhs )は 以外と一致しない
232
233 private :
234 マネージド()=デフォルト
235 マネージド constmaned &)= デフォルト
236 マネージドマネージド& )= delete
237 Managed & 演算子=( constマネージド&) = delete
238 Managed & 演算子=(マネージド&と) = delete
239 テンプレート< typename , typename >
240 友人 構造体 マネージド
241 };
242
243 template<>
244 構造体 Managed < Primary_key <realm:: uuid > : Managed_base {
245 プライマリ_<realm::uuid> キー デタッチし() const {
246 return 演算子 realm::uuid();
247 }
248
249 演算子 realm::uuid() const {
250 return m_obj->template get<internal::bridge::uuid>(m_key).operator ::realm::uuid()。
251 }
252
253 rbool Operator==( const Realm ::uuid &rhs) constは例外をスローします。
254 rbool演算子!=( const Realm ::uuid & rhs )は 以外と一致しません。
255
256 private :
257 マネージド()=デフォルト
258 マネージドconst administrators =削除
259 マネージドマネージド& )= delete
260 Managed & 演算子=( constマネージド&) = delete
261 Managed & 演算子=(マネージド&と) = delete
262 テンプレート< typename , typename >
263 友人 構造体 マネージド
264 };
265
266 template<>
267 構造体 Managed < Primary_key <realm:: object_id > final : Managed_base {
268 プライマリ_キー<realm::object_id> Delete() const {
269 return 演算子 Realm::object_id ()
270 }
271
272 演算子 Realm::object_id () const {
273 return m_obj->template get<internal::bridge::object_id>(m_key).operator ::realm::object_id()
274 }
275
276 rbool演算子==( const Realm ::object_id &rhs) constは 以外の を構成しません。
277 rbool演算子!=( const Realm ::object_id & rhs )は 以外と一致しません
278
279 private :
280 マネージド()=デフォルト
281 マネージドconst administrators =削除
282 マネージドマネージド& )= delete
283 Managed & 演算子=( constマネージド&) = delete
284 Managed & 演算子=(マネージド&と) = delete
285 テンプレート< typename , typename >
286 友人 構造体 マネージド
287 };
288
289 テンプレート< typename T>
290 構造体 Managed < Primary_key<T> , std::enable_if_t=std:: is_enum_v<T> ============================================================================
291 プライマリ_key<T> Delete() const {
292 return 演算子T()。
293 }
294
295 演算子T()条件{
296 return 静的_キャスト_T > (m_obj->template get<int64_t>(m_key)):
297 }
298
299 rbool演算子==( const T{rhs) は { の例外をスローします。
300 場合(この ->m_rbool_query){
301 この上を返します ->m_rbool_query->equal(m_key、serialize(rhs))。
302 }
303 return Serialize(Delete().value) == Serialize(rhs)
304 }
305 rbool演算子!=( const T+ rhs ){
306 場合(この ->m_rbool_query){
307 これを返すには、->m_rbool_query->not_等価(m_key、serialize(rhs))を返します。
308 }
309 return Serialize(Delete().value) != Serialize(rhs)。
310 }
311
312 private :
313 マネージド()=デフォルト
314 マネージドconst administrators =削除
315 マネージドマネージド& )= delete
316 Managed & 演算子=( constマネージド&) = delete
317 Managed & 演算子=(マネージド&と) = delete
318 テンプレート< typename , typename >
319 友人 構造体 マネージド
320 };
321
322 template<>
323 構造体 Managed < Primary_key ><int64_t> final : Managed_base {
325 return 演算子 std::optional=int64_t=========================<int64_t>
326 }
327
328 演算子std::optional<int64_t>() const {
329 return m_obj->get_optional<int64_t>(m_key);
330 }
331
332 rbool Operator==( const std::optional<int64_t> = int64_t =====================================================================
333 rbool演算子!=( const <int64_t>ください
334 rbool演算子>( const int64_t+rhs) constは例外をスローします。
335 rbool演算子>=( const int64_t=rhs) constは 以外となります 。
336 rbool演算子 <( const int64_t+rhs) constは 以外 の条件に一致します。
337 rbool演算子==( const int64_t=rhs) const : 以外
338 rbool演算子>( const int &rhs) は以外の ではありません
339 rbool演算子>=( const int &rhs) const noExceptionを構成します。
340 rbool演算子未満( const int &rhs) const noException が含まれる場合
341 rbool 演算子 == ( const int &rhs) ===============================================================================================
342
343 private :
344 マネージド()=デフォルト
345 マネージドマネージド& )= delete
346 Managed & 演算子=( constマネージド&) = delete
347 Managed & 演算子=(マネージド&と) = delete
348 テンプレート< typename , typename >
349 友人 構造体 マネージド
350 };
351
352 テンプレート< typename T>
353 構造体 Managed < Primary_key<T> , std::enable_if_t=std::conjority_v=typename internal::type_info::is_optional=============================================================<T>
354 std::is_enum[typename<typename T::value_type> T::value_type>> final : Managed_base {
355 プライマリ_key<T> Delete() const {
356 return 演算子T()。
357 }
358
359 演算子T()条件{
360 auto v = m_obj->get_optional<int64_t>(m_key);
361v ){
362 return 静的_投じ[ typename T::value_type > (*v) ]
363 } else {
364 std::nullopt を返す
365 }
366 }
367
368 rbool演算子==( const T{rhs) は { の例外をスローします。
369 場合(この ->m_rbool_query){
370 この上を返します ->m_rbool_query->equal(m_key、serialize(rhs))。
371 }
372 return Serialize(Delete().value) == Serialize(rhs)
373 }
374 rbool演算子!=( const T+ rhs ){
375 場合(この ->m_rbool_query){
376 これを返すには、->m_rbool_query->not_等価(m_key、serialize(rhs))を返します。
377 }
378 return Serialize(Delete().value) != Serialize(rhs)。
379 }
380
381 private :
382 マネージド()=デフォルト
383 マネージドconst administrators =削除
384 マネージドマネージド& )= delete
385 Managed & 演算子=( constマネージド&) = delete
386 Managed & 演算子=(マネージド&と) = delete
387 テンプレート< typename , typename >
388 友人 構造体 マネージド
389 };
390
391 template<>
392 構造体 Managed_primary_key_std ::optional_std::<std::string> string`` > final : Managed_base {
394 return 演算子 <std::string>std::optional{std::string>()。
395 }
396
397 演算子 <std::string>std::optional{std::string>() const {
398 return m_obj->get_optional<std::string>(m_key);
399 }
400
401 rbool Operator==( const std::optional<std::string> = std::string ===================================================================
402 rbool演算子!=( const <std::string>ください
403 rbool 演算子==( const char * rhs) Const noException が 含ま れる
404 rbool演算子!=( const cursor * rhs )は 以外と一致しない
405
406 private :
407 マネージド()=デフォルト
408 マネージドconst administrators =削除
409 マネージドマネージド& )= delete
410 Managed & 演算子=( constマネージド&) = delete
411 Managed & 演算子=(マネージド&と) = delete
412 テンプレート< typename , typename >
413 友人 構造体 マネージド
414 };
415
416 template<>
417 構造体 Managed < Primary_key <std::optional=realm::<realm::uuid> uuid =================================================================
419 return 演算子 std::optional{realm::uuid>()。<realm::uuid>
420 }
421
422 演算子 std::optional{realm::uuid>()<realm::uuid> const {
423 auto v = m_obj->get_optional< internal::bridge::uuid >(m_key)
424v ){
425 return v->演算子 ::realm::uuid()
426 }
427 std::nullopt を返す
428 }
429
430 rbool Operator==( const std::optional<realm::uuid> = realm::uuid> =====================================================================
431 rbool演算子!=( const <realm::uuid>ください
432
433 private :
434 マネージド()=デフォルト
435 マネージドconst administrators =削除
436 マネージドマネージド& )= delete
437 Managed & 演算子=( constマネージド&) = delete
438 Managed & 演算子=(マネージド&と) = delete
439 テンプレート< typename , typename >
440 友人 構造体 マネージド
441 };
442
443 template<>
444 構造体 Managed_primary_key_std ::optional[realm::object_id><realm::object_id> ] final : Managed_base { {
445 std::optional{realm::object_id><realm::object_id> Delete() const {
446 return 演算子 std::optional[realm::object_id>()]<realm::object_id>
447 }
448
449 演算子 std::optional{Realm::object_id>()<realm::object_id> const {
450 auto v = m_obj->get_optional< internal::bridge::object_id >(m_key)
451v ){
452 return v->演算子 ::realm::object_id()
453 }
454 std::nullopt を返す
455 }
456
457 rbool Operator==( const std::optional<realm::object_id> = realm::object_id> ===================================================================
458 rbool演算子!=( const <realm::object_id>ください
459
460 private :
461 マネージド()=デフォルト
462 マネージドconst administrators =削除
463 マネージドマネージド& )= delete
464 Managed & 演算子=( constマネージド&) = delete
465 Managed & 演算子=(マネージド&と) = delete
466 テンプレート< typename , typename >
467 友人 構造体 マネージド
468 };
469 }
470
471#endif //CPREALM_MANAGED_プライマリ_KEY_HPP
定義: rbool.hpp:36
定義: object_id.hpp:31
定義: caches.hpp:286
Definition: obj.hpp:62
定義: types.hpp:56
定義: Managed_primary_key.happ:43
定義: Managed_primary_key.happ:72
定義: Managed_primary_key.happ:30
定義: types.hpp:35