Realm C++ SDK版本 v 2.2.0

managed_objectid.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_OBJECTID_HPP
20#define CPPREALM_MANAGED_OBJECTID_HPP
21
22#include <cpprealm/macros.hpp>
23#include <cpprealm/types.hpp>
24
25#include <cpprealm/internal/bridge/object_id.hpp>
26
27命名空间域 {
28 class rbool;
29 }
30
31命名空间域 {
32 template <>
33 struct 托管 < 域:: object_id >: managed_base {
34 运用 managed < realm::object_id >::managed_base::operator=;
35 [[nodiscard]] realm::object_id detach() const {
36 return m_obj->template<realm::internal::bridge::object_id> get(m_key)。操作符:: 域::object_id();
37 }
38
39 [[nodiscard]] realm::object_id Operator *() const {
40 return detach();
41 }
42
43 [[nodiscard]]操作符域::object_id () const {
44 return detach();
45 }
46
47 //MARK:-比较操作符
48 rbool 操作符==(const 域::对象& rhs) const noException ;
49 rbool操作符!=( const Realm 对象 & rhs) const noexcept ;
50
51 private :
52 托管() = 默认;
53 托管 ( const 托管 &) = delete ;
54 托管 ( 托管 &&) = delete ;
55 托管 & 操作符=( const 托管 &) = delete ;
56 托管 & 操作符=( 托管 &&) = delete ;
57 template < typename , typename >
58 朋友 struct 托管
59 };
60
61 template <>
62 struct 托管 <std::Optional<realm::object_id> > : Managed_base {
63 运用 托管 <std::Optional<realm::object_id> >::managed_base:: 操作符=;
64
65[[nodiscard]] std::Optional<realm::object_id> detach() const {
66 auto v = m_obj->template<realm::internal::bridge::object_id> get_Optional(m_key);
67 if (v) {
68 return v.value()。操作符 :: 域::object_id();
69 } else {
70 return std::nullopt;
71 }
72 }
73
74 [[nodiscard]] std::Optional<realm::object_id> Operator *() const {
75 return detach();
76 }
77
78[[nodiscard]] 操作符 std::Optional()<realm::object_id> const {
79 return detach();
80 }
81
82 //MARK:-比较操作符
83 rbool Operator==( const std::Optional<realm::object_id>& rhs) const noException ;
84 rbool操作符!=( const std::Optional<realm::object_id>& rhs) const noException ;
85
86 private :
87 托管() = 默认;
88 托管 ( const 托管 &) = delete ;
89 托管 ( 托管 &&) = delete ;
90 托管 & 操作符=( const 托管 &) = delete ;
91 托管 & 操作符=( 托管 &&) = delete ;
92 template < typename , typename >
93 朋友 struct 托管
94 };
95
96 } // 命名空间 Realm
97
98#endif//CPREALM_MANAGED_OBJECTID_HPP
定义: rbool.hpp:36
定义: macros.hpp:286
定义: obj.hpp:62
定义: types.hpp:56