Realm C++ SDKバージョン v 2.2.0

Managed_numeric.happ

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_NUMERIC_HPP
20#dedefined CPREALM_MANAGED_NUMERI_HPP
21
22#include <cpprealm/macros.hpp>
23#include <cpprealm/rbool.hpp>
24
25名前空間邦土 {
26 template<>
27 構造体 Managed <int 64 _t> : Managed_base {
28 使用 Managed <int 64 _t>::maned_base::operator==============================================================
29
30 マネージド_ベースと演算子 =( const int 64 _t=v) {
31 This->m_obj->template set<int 64 _t>(m_key,v)
32 この を 返し ます。
33 }
34
35 [[nodiscard]] int64_t detach() const {
36 return m_obj->template get<int64_t>(m_key)
37 }
38
39 [[nodiscard]] int 64 _t 演算子 *() const {
40 return detach();
41 }
42
43 [[nodiscard]]演算子int 64 _t() const {
44 return detach();
45 }
46
47 テンプレート< typename T>
48std:: enable_if_t<T> = std:: is_integral_v =======================================================================================
49 場合(この ->m_rbool_query){
50 この->m_rbool_query->equal(m_key,(int 64 _rhs) を返します。
51 }
52 return Serialize() ==rhs。
53 }
54
55 テンプレート< typename T>
56std:: enable_if_t =std:: is_integral_v<T> =====================================================================T+ rhs ) は {の例外をスローします。
57 場合(この ->m_rbool_query){
58 次を返します->m_rbool_query->not_等価(m_key,(int 64 _rhs))
59 }
60 return Serialize(Delete()) バージョン .= rhs。
61 }
62
63 テンプレート< typename T>
64std:: enable_if_t = std:: is_integral_v ========================================================================<T>
65 場合(この ->m_rbool_query){
66 この->m_rbool_query->greater(m_key, (int 64 _rhs) を返します。
67 }
68 return Serialize(Delete()) >rhs。
69 }
70
71 テンプレート< typename T>
72std:: enable_if_t = std:: is_integral_v ========================================================================<T>
73 場合(この ->m_rbool_query){
74 この->m_rbool_query->less(m_key,(int 64 _t)rhs) を返します。
75 }
76 return Serialize(Delete()) <rhs。
77 }
78
79 テンプレート< typename T>
80std:: enable_if_t = std:: is_integral_v ============================================================================<T>
81 場合(この ->m_rbool_query){
82 この->m_rbool_query->greater_equal(m_key,(int 64 _t)rhs) を返します。
83 }
84 return Serialize(Delete()) >=rhs。
85 }
86
87 テンプレート< typename T>
88std:: enable_if_t<T> = std:: is_integral_v ===========================================================================
89 場合(この ->m_rbool_query){
90 これを返すには、->m_rbool_query->less_equal(m_key,(int 64 _rhs) を参照してください。
91 }
92 return Serialize(Delete()) <= rhs。
93 }
94
95 Managed & 演算子+=( const int 64 _t=o) {
96 auto_val = m_obj->template get<int 64 _t>(m_key)
97 m_obj->template set<int 64 _t>(この->m_key, old_val +o)
98 この を 返し ます。
99 }
100 無効演算子 ++( int ) {
101 auto_val = m_obj->template get<int 64 _t>(m_key)
102 m_obj->template set<int 64 _t>(この->m_key, old_val + 1 )
103 }
104 無効演算子 ++() {
105 auto_val = m_obj->template get<int 64 _t>(m_key)
106 m_obj->template set<int 64 _t>(この->m_key, old_val + 1 )
107 }
108 マネージド& 演算子-=( const int 64 _t=o) {
109 auto_val = m_obj->template get<int 64 _t>(m_key)
110 m_obj->template set<int 64 _t>(search->m_key, old_val-o)
111 この を 返し ます。
112 }
113 無効演算子-( int ) {
114 auto_val = m_obj->template get<int 64 _t>(m_key)
115 m_obj->template set<int 64 _t>(search->m_key, old_val- 1 )
116 }
117 無効演算子-() {
118 auto_val = m_obj->template get<int 64 _t>(m_key)
119 m_obj->template set<int 64 _t>(search->m_key, old_val- 1 )
120 }
121 マネージド& 演算子*=( const int 64 _t=o) {
122 auto_val = m_obj->template get<int 64 _t>(m_key)
123 m_obj->template set<int 64 _t>(この->m_key, old_val * op)
124 この を 返し ます。
125 }
126
127 private :
128 マネージド()=デフォルト
129 マネージドconst administrators =削除
130 マネージドマネージド& )= delete
131 Managed & 演算子=( constマネージド&) = delete
132 Managed & 演算子=(マネージド&と) = delete
133 テンプレート< typename , typename >
134 友人 構造体 マネージド
135 };
136
137 template<>
138 構造体 Managed <double> : Managed_base {
139 使用 authorized < double >:: maned_base ::operator============================================
140
141 マネージド_ベースと演算子 =( const double & v) {
142この ->m_obj->template set<double>(m_key, v)
143 この を 返し ます。
144 }
145
146 Managed_base & 演算子 =( const int & v) {
147この->m_obj->template<double> set=double>(m_key,( double )v)
148 この を 返し ます。
149 }
150
151[[ nodiscard ]] double Delete() Const {
152 return m_obj->template get<double>(m_key) を返します。
153 }
154
155 double演算子 *()条件{
156 return detach();
157 }
158 [[nodiscard]]演算子double() const {
159 return detach();
160 }
161
162 テンプレート< typename T>
163std::enable_if_t<<T> <T>std::disjortion_v[std::is_integral[T]>、std::is_floating_point[T]]、 rbool > 演算子==( const T+rhs) const noException {{
164 場合(この ->m_rbool_query){
165 この->m_rbool_query->equal(m_key,( double )rhs)を 返し ます。
166 }
167 return Serialize() ==rhs。
168 }
169
170 テンプレート< typename T>
171std::enable_if_t< std::disjortion_v[std::is_integral[T]],<T> std::is_floating_point[T][] を含む、<T> rbool > 演算子 !=( constT+ rhs ) は {の例外をスローします。
172 場合(この ->m_rbool_query){
173 この->m_rbool_query->not_等価(m_key,( double )rhs)を 返し ます。
174 }
175 return Serialize(Delete()) バージョン .= rhs。
176 }
177
178 テンプレート< typename T>
179std::enable_if_t<<T> std::disjortion_v[std::is_integral[T]]、std::is_floating_point[T][]、<T> rbool > 演算子>( const T+rhs) const は例外を除きます。
180 場合(この ->m_rbool_query){
181 この->m_rbool_query->greater(m_key,( double )rhs)を 返し ます。
182 }
183 return Serialize(Delete()) >rhs。
184 }
185
186 テンプレート< typename T>
187std::enable_if_t<<T> <T>std::disjortion_v[std::is_integral[T]>、std::is_floating_point[T]]、 rbool > 演算子[( const T+rhs) const 以外 ({{
188 場合(この ->m_rbool_query){
189 この->m_rbool_query->less(m_key,( double )rhs)を 返し ます。
190 }
191 return Serialize(Delete()) <rhs。
192 }
193
194 テンプレート< typename T>
195std::enable_if_t<<T> std::disjortion_v[std::is_integral[T]]、std::is_floating_point[T][]、<T> rbool > 演算子>=( const T+rhs) const noException {{
196 場合(この ->m_rbool_query){
197 この->m_rbool_query->greater_equal(m_key,( double )rhs)を 返し ます。
198 }
199 return Serialize(Delete()) >=rhs。
200 }
201
202 テンプレート< typename T>
203std::enable_if_t<<T> std::disjortion_v[std::is_integral[T]]、std::is_floating_point[T][]、<T> rbool > 演算子==( const T+rhs) const noException {{
204 場合(この ->m_rbool_query){
205 この上を返します ->m_rbool_query->less_equal(m_key,( double )rhs)
206 }
207 return Serialize(Delete()) <= rhs。
208 }
209
210 無効演算子+=( const double & op) {
211 auto_val = m_obj->template<double> get=double>(m_key)
212m_obj->template<double> set=double>(この->m_key、 old_val +o)
213 }
214 無効演算子 ++( int ) {
215 auto_val = m_obj->template<double> get=double>(m_key)
216m_obj->template<double> set=double>(この->m_key, old_val +1.0 )
217 }
218 無効演算子 ++() {
219 auto_val = m_obj->template<double> get=double>(m_key)
220m_obj->template<double> set=double>(この->m_key, old_val +1.0 )
221 }
222 無効演算子-=( const double & op) {
223 auto_val = m_obj->template<double> get=double>(m_key)
224 m_obj->template set<double>(この->m_key、 old_val -o)
225 }
226 無効演算子-( int ) {
227 auto_val = m_obj->template<double> get=double>(m_key)
228m_obj->template<double> set=double>(この->m_key、 old_val -1.0 )
229 }
230 無効演算子-() {
231 auto_val = m_obj->template<double> get=double>(m_key)
232m_obj->template<double> set=double>(この->m_key、 old_val -1.0 )
233 }
234 無効演算子 *=( const double & O) {
235 auto_val = m_obj->template<double> get=double>(m_key)
236m_obj->template<double> set=double>(この->m_key, old_val * op)
237 }
238
239 private :
240 マネージド()=デフォルト
241 マネージドconst administrators =削除
242 マネージドマネージド& )= delete
243 Managed & 演算子=( constマネージド&) = delete
244 Managed & 演算子=(マネージド&と) = delete
245 テンプレート< typename , typename >
246 友人 構造体 マネージド
247 };
248
249 template<>
250 構造体 Managed <bool> : Managed_base {
251 使用 authorized < bool >:: maned_base ::operator===================================================================
252
253 [[nodiscard]]ブール値デタッチ() const {
254 return m_obj->template get<bool>(m_key) を返します。
255 }
256 [[nodiscard]]演算子bool() const {
257 return detach();
258 }
259 ブール演算子 *()演算子{
260 return detach();
261 }
262
263 rbool 演算子==( constbool &rhs) const は 以外 の 条件 に一致し ます。
264 rbool演算子!=( const ブール値rhs )は 以外の値ではありません
265
266 private :
267 マネージド()=デフォルト
268 マネージドconst administrators =削除
269 マネージドマネージド& )= delete
270 Managed & 演算子=( constマネージド&) = delete
271 Managed & 演算子=(マネージド&と) = delete
272 テンプレート< typename , typename >
273 友人 構造体 マネージド
274 };
275
276CPP_REALM_MANAGED_OPTIONAL_NUMELIC(type) を定義します\
277 template<> \
278 structmanded=std::optional=type===================================================<type>
279 <type>を使用する::maned_base::operator================================================================= $
280 \
281 Managed <std::optional=type===================================================<type>
282 この->m_obj->template set<type>(m_key, v) $
283 この を返します。 $
284 } \
285 \
286 Managed=std::optional=type==================================================================<type>
287 この->m_obj->template<type> set=type>(m_key, (double)v) $
288 この を返します。 $
289 } \
290 \
291 [[nodiscard]] std::optional[type]<type> Delete()const{\
292 return m_obj->get_optional<type>(m_key); \
293 } \
294\
295 [[nodiscard]] std::optional[type]<type> 演算子 *()const {\
296 return detach(); \
297 } \
298 [[nodiscard]] 演算子 std::optional[type]() 演算子<type> {\
299 return detach(); \
300 } \
301 rbool Operator==(const std::optional=type========================================================================================= $<type>
302 rbool 演算子!=(const <type>ください。 $
303 無効演算子+=(const type & op) {\
304 auto_val = m_obj->get_optional<type>(m_key) $
305 場合(! old_val){\
306スロー std::runtime_error("null 値に対して算術演算を実行できません。" ) $
307 }\
308m_obj->template<type> set=type>(この->m_key, (* old_val) + op) $
309 }\
310無効演算子 ++(int) {\
311auto old_val = m_obj->get_optional[type](m_key) $<type>
(! old_val){\ の場合は312
313 slow std::runtime_error("null 値で算術演算を実行できません。") $
314 }\
315m_obj->template<type> set=type>(この->m_key, (* old_val) +1 ) $
316 }\
317無効演算子-=(const type & op) {\
318auto old_val = m_obj->get_optional[type](m_key) $<type>
(! old_val){\ の場合は319
320 slow std::runtime_error("null 値で算術演算を実行できません。") $
321 }\
322m_obj->template<type> set=type>(この->m_key, (* old_val) - op) $
323 }\
324無効演算子-(int) {\
325auto old_val = m_obj->get_optional[type](m_key) $<type>
(! old_val){\ の場合は326
327 slow std::runtime_error("null 値で算術演算を実行できません。") $
328 }\
329 m_obj->template set<type>(この->m_key, (* old_val) - 1 ) $
330 }\
331無効演算子*=(const type+o){{\
332auto old_val = m_obj->get_optional[type](m_key) $<type>
(! old_val){\ の場合は333
334 slow std::runtime_error("null 値で算術演算を実行できません。") $
335 }\
336m_obj->template<type> set=type>(この->m_key, (* old_val) * op) $
337 }\
338無効演算子*(const type & op){{\
339auto old_val = m_obj->get_optional[type](m_key) $<type>
(! old_val){\ の場合は340
341 slow std::runtime_error("null 値で算術演算を実行できません。") $
342 }\
343m_obj->template<type> set=type>(この->m_key, (* old_val) * op) $
344 }\
345 valid Operator/(const type & op) {\
346auto old_val = m_obj->get_optional[type](m_key) $<type>
(! old_val){\ の場合は347
348 slow std::runtime_error("null 値で算術演算を実行できません。") $
349 }\
350 m_obj->template set<type>(この->m_key, (* old_val) / op) $
351 }\
352 private:\
353 managed() = デフォルト。 $
354マネージド(constpedmanと)=delete $
355マネージド(マネージド & ) = 削除。 $
356マネージド() 演算子=(const マネージド() = 削除) $
357マネージドと 演算子=(manedおよびを) =削除。 $
358 template<typename, typename> \
359 MongoDB_ENUS_JAJP $
360 }; \
361
362 CPP_REALM_MANAGED_OPTIONAL_NUMERI(int 64 _t)
363 CCP_REALM_MANAGED_OPTIONAL_NUMBERプライマリ( double
364
365 template<>
366 構造体 Managed <std:: optional =bool================================================<bool>
367 使用 Managed <std::optional=bool=================================================================<bool>
368
369[[nodiscard]] std::optional[bool]><bool> Delete() const {
370 return m_obj->template get_optional<bool>(m_key);
371 }
372
373[[nodiscard]] 演算子 std::optional=bool>()<bool> const {
374 return m_obj->template get_optional<bool>(m_key);
375 }
376
377std::optional[]<bool> 演算子 *() Const {
378 return detach();
379 }
380
381 rbool Operator==( const std::optional<bool> = bool ===============================================================================
382 rbool演算子!=( const std::optional<bool> = bool ===========================================
383
384 private :
385 マネージド()=デフォルト
386 マネージドconst administrators =削除
387 マネージドマネージド& )= delete
388 Managed & 演算子=( constマネージド&) = delete
389 Managed & 演算子=(マネージド&と) = delete
390 テンプレート< typename , typename >
391 友人 構造体 マネージド
392 };
393
394 テンプレート< typename T>
395 構造体 authorized <T, std:: enable_if_t =std:: is_enum_v<T> ================================================
396 Managed <T> & 演算子 =( const T & v) {
397 m_obj->template set<int 64 _t>(m_key, static_ Cast < int 64 _t > (v))
398 この を 返し ます。
399 }
400
401 [[ nodiscard ]] T Delete() Const {
402 return 静的_ Cast_ T > (m_obj->get_int 64 _t>(m_key))。
403 }
404
405 [[ nodiscard ]] T 演算子 *() 制約 {
406 return detach();
407 }
408
409 [[nodiscard]]演算子T() const {
410 return detach();
411 }
412
413 //Mask: - 比較演算子
414 rbool演算子==( const T{rhs) は { の例外をスローします。
415 場合(この ->m_rbool_query){
416 この上を返します ->m_rbool_query->equal(m_key、serialize(rhs))。
417 }
418 return detach() == rhs;
419 }
420 rbool演算子!=( const T+ rhs ){
421 場合(この ->m_rbool_query){
422 これを返すには、->m_rbool_query->not_等価(m_key、serialize(rhs))を返します。
423 }
424 return detach() != rhs;
425 }
426 rbool 演算子>( const T {rhs) { を
427 場合(この ->m_rbool_query){
428 この->m_rbool_query->greater(m_key、serialize(rhs))を返します。
429 }
430 return detach() > rhs;
431 }
432 rbool 演算子 未満( const T
433 場合(この ->m_rbool_query){
434 この->m_rbool_query->greater(m_key、serialize(rhs))を返します。
435 }
436 return delete() <rhs。
437 }
438 rbool演算子>=( const T+rhs) const noException {
439 場合(この ->m_rbool_query){
440 この上を返します ->m_rbool_query->greater_equal(m_key、serialize(rhs))
441 }
442 return detach() >= rhs;
443 }
444 rbool 演算子 == ( const T=rhs) =======================================================================
445 場合(この ->m_rbool_query){
446 これを返すには、->m_rbool_query->less_equal(m_key、serialize(rhs))を参照してください。
447 }
448 return Delete() <= rhs。
449 }
450
451 private :
452 マネージド()=デフォルト
453 マネージドconst administrators =削除
454 マネージドマネージド& )= delete
455 Managed & 演算子=( constマネージド&) = delete
456 Managed & 演算子=(マネージド&と) = delete
457 テンプレート< typename , typename >
458 友人 構造体 マネージド
459 };
460
461 テンプレート< typename T>
462 構造体 Managed <std::optional=T>,<T> std:: enable_if_t =std:: is_enum_v ==========================================================<T>
463 Managed{std::optional[T] ><T> + 演算子 =( const std::optional+v){{<T>
464v ){
465 m_obj- > template set=std::optional=int 64 64 ======================================================================================
466 } else {
467 m_obj->set_null(m_key);
468 }
469 この を 返し ます。
470 }
471
472[[nodiscard]] std::optional[T]<T> Delete() const {
473場合auto v = m_obj->get_optional{int 64 _t>(m_key)) {
474 return 静的_キャスト_T > (*v):
475 }
476 std::nullopt を返す
477 }
478
479[[nodiscard]] std::optional[T]<T> 演算子 *() const {
480 return detach();
481 }
482
483[[ nodiscard ]] 演算子 std::optional[T]()<T> 演算子 {
484 return detach();
485 }
486
487 //Mask: - 比較演算子
488 rbool 演算子==( const std:: optional<T> ==================================================================================
489 場合(この ->m_rbool_query){
490 この上を返します ->m_rbool_query->equal(m_key、serialize(rhs))。
491 }
492 return detach() == rhs;
493 }
494 rbool演算子!=( const std::optional<T> + rhs ){{
495 場合(この ->m_rbool_query){
496 これを返すには、->m_rbool_query->not_等価(m_key、serialize(rhs))を返します。
497 }
498 return detach() != rhs;
499 }
500 rbool 演算子>( const T {rhs) { を
501 場合(この ->m_rbool_query){
502 この->m_rbool_query->greater(m_key、rhs) を返します。
503 }
504 return detach() > rhs;
505 }
506 rbool 演算子 未満( const T
507 場合(この ->m_rbool_query){
508 これを返すには、->m_rbool_query->less(m_key、rhs)を返します。
509 }
510 return delete() <rhs。
511 }
512 rbool演算子>=( const T+rhs) const noException {
513 場合(この ->m_rbool_query){
514 これを返すには、->m_rbool_query->greater_equal(m_key、rhs) を返します。
515 }
516 return detach() >= rhs;
517 }
518 rbool 演算子 == ( const T=rhs) =======================================================================
519 場合(この ->m_rbool_query){
520 これを返すには、->m_rbool_query->less_equal(m_key、rhs)を返します。
521 }
522 return Delete() <= rhs。
523 }
524
525 private :
526 マネージド()=デフォルト
527 マネージドconst administrators =削除
528 マネージドマネージド& )= delete
529 Managed & 演算子=( constマネージド&) = delete
530 Managed & 演算子=(マネージド&と) = delete
531 テンプレート< typename , typename >
532 友人 構造体 マネージド
533 };
534} // namespace realm
535
536#endif//CPREALM_MANAGED_NUMERI_HPP
定義: rbool.hpp:36
定義: caches.hpp:286
Definition: obj.hpp:62