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

obj.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_BRIDGE_OBJ_HPP
20CPREALM_CRIDGE_OBJ_HPP を定義する
21
22#include <any>
23#include <chrono>
24#include <function"><functional>
25#include <memory>
26#include <optional>
27#include <string>
28
29#include <cpprealm/types.hpp>
30#include <cpprealm/ternal/bridge/binary.hpp>
31#include <cpprealm/ internal/bridge/col_key.hpp>
32#include 128 .hpp>
33#include <cpprealm/ internal/bridge/Dictionary.hpp>
34#include <cpprealm/ internal/bridge/object.hpp>
35#include <cpprealm/ internal/bridge/object_id.hpp>
36#include <cpprealm/ internal/bridge/table.hpp>
37#include <cpprealm/ internal/bridge/uts.hpp>
38
39名前空間邦土 {
40 クラスグループ。
41 クラスRealm。
42 クラスタイムスタンプ
43 クラスオブジェクト。
44 クラスObjectSchema。
45 クラスObject
46 クラスTableRef
47 クラスのクエリ
48 struct CollKey
49 クラスLnkLst。
50 structnotificationToken
51
52 名前空間内部::bridge {
53 structobj_key
54 structobj_link
55 }
56 namespace internal::type_info {
57 テンプレート< typename , typename >
58 構造体 type_info
59 }
60
61 テンプレート< typename , typename >
63 テンプレート< typename , typename >
64 構造体 アクセスします。
65 }
66
67名前空間Realm:: internal::bridge {
68 構造体オブジェクト。
69 混合構造体
70 構造体Realm。
71 struct lnklst;
72 構造体クエリ。
73 struct object_schema。
74 構造体タイムスタンプ。
75 structobj_key
76 structobj_link
77 構造体テーブル
78 構造体辞書。
79 構造体 uuid;
80 構造体 object_id
81 構造体 10 進数128
82 構造体リスト。
83 構造体行。
84 struct Table_view
85
86 名前空間{
87 テンプレート< typename T>
88 struct is_optional : std::false_type {
89 基礎となる = Tを使用する
90 };
91
92 テンプレート< typename T>
93 struct is_optional=std::optional==================================================<T>
94 基礎となる = Tを使用する
95 };
96 }
97
98 テンプレート< typename T>
99 [[nodiscard]] T get(constobj &、 const coll_keyと、col_key)。
100 テンプレート<>
101 [[nodiscard]] std::string get(constobj+, const coll_key+ col_key )#
102 テンプレート<>
103 [[nodiscard]] uuid get(constobj+, const coll_key+ col_key )#
104 テンプレート<>
105[[ nodiscard ]] object_id get( const 中に
106 テンプレート<>
107 [[nodiscard]] 10進数128 get(constobj &、 const coll_keyとcol_key)
108 テンプレート<>
109[[ nodiscard ]] バイナリ get( const 中に
110 テンプレート<>
111 [[nodiscard]] タイムスタンプ get(constobj+, const coll_key+ col_key )[]
112 テンプレート<>
113 [[nodiscard]] の int 64 _t get(constobj+, const coll_key+ col_key )
114 テンプレート<>
115[[ nodiscard ]] double get( const 中に
116 テンプレート<>
117 [[nodiscard]] bool get(constobj &、 const coll_keyと、col_key)/
118 テンプレート<>
119 [[nodiscard]] 混合 get(constobj &、 const coll_keyと、col_key)
120 テンプレート<>
121 [[nodiscard]]core_Dictionary get(constobj &、 const coll_keyとcol_key)
122
123 構造体 obj {
124 obj();
125 objconstobjおよびその他)。
126 objと 演算子=( constobjその他) :
128 obj & 演算子=( objとその他):
129 ~obj();
130 obj(const Obj&); //NOLINT google-explicit-constructor
131 演算子Obj() const//NOLINT google-expiregate コンストラクター
132 [[nodiscard]]テーブルget_table () は 次の例外を除きます 。
133 [[nodiscard]]テーブルget_target_table( coll_key ) connect noopre除く
134 [[nodiscard]] bool is_null( const coll_key & coll_key ) const
135[[ nodiscard ]] ブール値 :
136 [[nodiscard]] obj get_linked_object( const coll_key & coll_key )
137 テンプレート< typename T>
138 T get( const coll_key & coll_key ) const {
139 return internal::bridge::get = T ========================================================<T>
140 }
141
142 テンプレート< typename T>
143std::optional[T]<T> get_optional( const coll_key & coll_key ) const {{
144場合(is_null( coll_key )){
145 std::nullopt を返す
146 }
147 return internal::bridge::get = T ========================================================<T>
148 }
149
150 void 設定const col_key & coll_keyconst int 64 _t= 値)。
151 void setconst coll_key & coll_keyconst doubleと値)。
152 void setconst coll_key & coll_keyconst std::string+value)。
153 void setconst coll_key & coll_keyconst混合と値)。
154 void setconst coll_keycol_keyConstboolValue )。
155 void setconst coll_key & coll_keyConstタイムスタンプと値)。
156 void セットconst coll_key & coll_keyConstバイナリと値)。
157 void setconst coll_key & coll_keyConst uuid & 値)。
158 void setconst coll_key & coll_keyConst object_id & 値)。
159 void setconst coll_key & coll_keyConst decimal 128 & 値)。
160 void setconst coll_key & coll_keyConstobj_key値)。
161 void 設定 const coll_key & coll_key const std::chrono::time_point[std::chrono::system_クロック>+<std::chrono::system_clock> 値])。
162 テンプレート< typename T>
163std:: enable_if_t = std :: is_enum_v<T> = T =========================================================================
164 set <int 64 _t>coll_keystatic_ Cast < int 64 _t > (値))。
165 }
166 テンプレート< typename T>
167 void セット const coll_key & coll_key 、 const std::optional[T]+<T> 値) {
168){
169 セットcoll_key 、 *value)。
170 } else {
171 set_null( coll_key )
172 }
173 }
174
175 無効 なset_list_values( const coll_key & coll_key const std::vector=obj_key>+<obj_key> 値)。
176 無効 なset_list_values( const coll_key & coll_key Const std::vector[std::string]>+<std::string> 値)。
177 無効 なset_list_values( const coll_key & coll_key Const std::vector[]<bool> 値)。
178 無効なset_list_values( const coll_key & coll_keyconst std::vector<int 64 _t>+ 値)。
179 無効 なset_list_values( const coll_key & coll_key const std::vector=double>=<double> 値)。
180 無効 なset_list_values( const coll_key & coll_key const std::vector<internal::bridge::uuid> + 値)。
181 無効 なset_list_values( const coll_key & coll_key const std::vector[Interl::bridge::object_id]>+<internal::bridge::object_id> 値)。
182 無効なset_list_values( const coll_key & coll_keyconst std::vector[internal::bridge::decimal 128 ] >= 値)。
183 無効 なset_list_values( const coll_key & coll_key Const std::vector[binary]>=<binary> 値)。
184 無効 なset_list_values( const coll_key & coll_key const std::vector+<mixed> 値)。
185 empty set_list_values ( const coll_key & coll_key const std::vector=timestamp=================================================<timestamp>
186
187 void set_list_values(const col_key& col_key, const std::vector<std::optional<int64_t>>& values);
188 void set_list_values(const col_key& col_key, const std::vector<std::optional<bool>>& values);
189 void set_list_values(const col_key& col_key, const std::vector<std::optional<double>>& values);
190 void set_list_values(const col_key& col_key, const std::vector<std::optional<std::string>>& values);
191 void set_list_values(const col_key& col_key, const std::vector<std::optional<obj_key>>& values);
192 void set_list_values(const col_key& col_key, const std::vector<std::optional<internal::bridge::uuid>>& values);
193 void set_list_values(const col_key& col_key, const std::vector<std::optional<internal::bridge::object_id>>& values);
194 void set_list_values(const col_key& col_key, const std::vector<std::optional<binary>>& values);
195 void set_list_values(const col_key& col_key, const std::vector<std::optional<timestamp>>& values);
196
197 テンプレート< typename ValueType>
198 無効なset_list_values( const coll_key & coll_keyConst std::vector<ValueType>+ 値) {
199 2 ::vector=typename internal::type_info::type_info=ValueType,になります====================================================================
200 for (auto v : values) {
201 場合 constexpr (std::is_pointer_v<ValueType>) {
204 自動 pk = (*v).*( managed=std::remove_pointer_t=ValueType><ValueType> ,無効>::schema.primary_key().ptr)
205 m_obj = これ->get_table().create_object_with_primary_key( internal::bridge::混合(serialize(pk.value)))
206 } else {
207 m_obj = m_obj =This->get_table().create_object()
208 }
209 std::apply([+m_obj, &v]( auto & & ...p) {
210( accessor < typename std:: decay_t { Decltype (p)>::Result, null より::set(
211 m_obj, m_obj.get_table().get_corumn_key(p.name),
212 (*v).*(std::decay_t< Decltype (p)>::ptr)), ...)、
213} }、 <ValueType>マネージド未満
214 v 2 .push_back(m_obj.get_key())
215 } else {
216 v 2 .push_back(::realm::serialize(v))
217 }
218 }
219 set_list_values( coll_key , v 2 )
220 }
221
222 [[nodiscard]] obj_key get_key() const
223 [[nodiscard]] obj_link get_link() const .
224 lnklst get_linklist( const coll_key & coll_key )
225 Core_Dictionary get_辞書( const coll_key & coll_key
226 empty set_null ( const coll_key &):
227 obj create_and_set_linked_object( const coll_key &)
228 table_view get_backlink_view(テーブルcol_key )。
229 empty to_json(std:: ostream +out) は次の例外をスローします。
230 private :
231 インライン const Obj* get_obj() const;
232 inline Obj* get_obj();
233 友人 インライン const Obj* get_obj(const obj&);
234 友人 inline Obj* get_obj(obj&);
235 テンプレート< typename T>
236 id T get(constobj &、const coll_key c ol_key ):
237#ifdef CPREALM_HAV_GENERTED_BRIDGE_TypeS
238 storage::Obj m_obj[ 1 ]
239#else
240std::shared_ptr[Obj]<Obj> m_obj
241#endif
242 };
243
244 構造体 グループ{
245 グループRealmと)。
246 テーブルget_table(uint 32 _table_key)
247 テーブルget_table( const std::string(Table_key))
248 private :
249std::reference_ wrapper[realm]<realm> m_realm。
250 };
251
252 std::stringtable_name_for_object_type( const std::string())
253 }
254
255
256#endif //CPREALM_TRIDGE_OBJ_HPP
定義: accessors.hpp:33
定義: types.happ: 75
定義: binary.happ: 30
定義: coll_key.happ: 28
定義: 10進数128 .happ: 30
Definition: obj.hpp:244
Definition: lnklst.hpp:33
定義: compound.hpp:69
Definition: obj_key.hpp:33
Definition: obj.hpp:123
定義: object_id.hpp:31
Definition: realm.hpp:67
定義: set.happ: 48
Definition: table.hpp:79
Definition: table.hpp:40
定義: timestamp.happ: 30
Definition: obj.hpp:62
定義: types.hpp:56
定義: types.hpp:35