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

rbool.hpp

1
2//
3// © 2022 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_RBOOL_HPP
20CPREALM_Rbool_HPP を定義する
21
22#include <cpprealm/ internal/bridge/query.hpp>
23#include <cpprealm/ internal/bridge/realm.hpp>
24#include <cpprealm/ internal/bridge/table.hpp>
25#include <cpprealm/ internal/bridge/uts.hpp>
26#include <cpprealm/types.hpp>
27
28名前空間邦土 {
29 テンプレート< typename >
30 structbox_base
31 }
32
33名前空間邦土 {
34 // MARK: rbool
35
36 クラス rbool {
37 public :
40 std::string m_key)
41 };
42
43 rbool &add_link_shell( const internal::bridge::col_keyとcol_key) {
44m_link_link _link){
45 m_link_link_link(col_key)
46 } else {
47 m_link_shell = m_table.get_link(col_key)
48 }
49 この を 返し ます。
50 }
51
52#Defin_query(type, 比較) $
53 rbool & 比較(const internal::bridge::col_keyと col_key、const<type> std::optional[type]+rhs) {\
54 if (auto lc = m_link_chain) { \
55 q = dc->collun<type>(col_key).comparson(rhs) $
56 m_link_shell = std::nullopt・$
57 (m_Dictionary_ctx){\}場合は}
58 q = q.辞書 col_key, m_Dictionary_ctx->m_key).completeson(rhs) $
59 m_Dictionary_ctx = std::nullopt $
60 } else { \
61 場合(rhs){\
62 q = internal::bridge::query(q.get_table()).comparson(col_key, *rhs) $
63 } else { \
64 q = internal::bridge::query(q.get_table()).comparson(col_key, std::nullopt) $
65 } \
66 } \
67 この を返します。 $
68 } \
69 rbool & 比較(const internal::bridge::col_keyと col_key、const type、rhs){\
70 if (auto lc = m_link_chain) { \
71 q =<type> <type>lt::optional[type](rhs))$
72 m_link_shell = std::nullopt・$
73 (m_Dictionary_ctx){\}場合は}
74 q = q.辞書 col_key, m_辞書_ctx->m_key).comparson(std::optional[type](rhs))<type>$
75 m_Dictionary_ctx = std::nullopt $
76 } else { \
77 q = internal::bridge::query(q.get_table()).comparson(col_key, rhs) $
78 } \
79 この を返します。 $
80 }
81
82#Defin_numeric_query(type, 比較)\
83 rbool & 比較(const internal::bridge::col_keyと col_key、const type、rhs){\
84 if (auto lc = m_link_chain) { \
85 q =<type> dc->collum=type>(col_key).comparson(::realm::serialize(std::optional=type>(rhs)))=======================================<type>$
86 m_link_shell = std::nullopt・$
87 (m_Dictionary_ctx){\}場合は}
88 q = q.辞書 col_key, m_辞書_ctx->m_key).comparson(std::optional[type](rhs))<type>$
89 m_Dictionary_ctx = std::nullopt $
90 } else { \
91 q = internal::bridge::query(q.get_table()).comparson(col_key, rhs) $
92 } \
93 この を返します。 $
94 }
95
96 refine_query(std::string, equal)
97 refine_query(std::string, not_equal)
98
991 } rboal
100 if (auto lc = m_link_chain) {
101q=========================================================================<std::string><std::string>大文字と小文字を区別する)
102 m_link_shell = std::nullopt
103 } else {
104 q = internal::bridge::query(q.get_table()).contains(col_key, rhs、大文字と小文字を区別する)
105 }
106 この を 返し ます。
107 }
108
109 defined_query(int 64 _t, equal)
110 defined_query(int 64 _t,not_equal)
111 configure_numeric_query(int 64 _t, 以上)
112定義_numeric_query(int 64 _t,less)
113定義_numeric_query(int 64 _t,greater_equal)
114定義_numeric_query(int 64 _t,less_equal)
115
116 defined_query( bool , equal)
117 defined_query( bool , not_equal)
118
119 defined_query( double , equal)
120 configure_query( double 、not_equal)
121定義_numeric_query( double ,greater)
122定義_numeric_query( double ,less)
123定義_numeric_query( double 、greater_equal)
124定義_numeric_query( double 、less_equal)
125
126 refine_query(std::vector<uint 8 _t>, equal)
127 defined_query(std::vector<uint 8 _t>,not_equal)
128
129refine_query(std::chrono::time_point=std::chronno::system_lock>,<std::chrono::system_clock> equal)
130refine_query(std::chrono::time_point"std::currno::system_lock>,not_equal)<std::chrono::system_clock>
131refine_numeric_query(std::chrono::time_point=std::chrono::system_lock>,<std::chrono::system_clock> 以上)
132refine_numeric_query(std::chrono::time_point=std::chrono::system_クロック>,<std::chrono::system_clock> 未満)
133refine_numeric_query(std::chrono::time_point=std::chrono::system_lock>,greater_equal)<std::chrono::system_clock>
134refine_numeric_query(std::chrono::time_point=std::chrono::system_lock>,less_equal)<std::chrono::system_clock>
135
136 refine_query(uuid, equal)
137 refine_query(uuid, not_equal)
138
139 defined_query(object_id, equal)
140 refine_query(object_id, not_equal)
141
142 configure_query(decimal 128 、等しい)
143 configure_query(decimal 128 、not_等価)
144 configure_numeric_query(decimal 128 , 以上)
145 defined_numeric_query(10進数128 , 未満)
146 defined_numeric_query(decimal 128 ,greater_equal)
147 defined_numeric_query(decimal 128 ,less_equal)
148
149 rbool &ix_equal( const internal::bridge::col_keyと coll_key、c onst internal::bridge::ixed+rhs) {{
150 if (auto lc = m_link_chain) {
151q====================================================================<std::string>
152 m_link_shell = std::nullopt
153 } else {
154 q.equal(col_key,rhs)
155 }
156 この を 返し ます。
157 }
158
159 rbool+混合_not_equal( const internal::bridge::col_keyと co_key、c onst internal::bridge::混合=rhs) {{
160 if (auto lc = m_link_chain) {
161 q = dc->collun_ixed(col_key).混合_非_等価(rhs)
162 m_link_shell = std::nullopt
163 } else {
164 q.not_equal(col_key,rhs)
165 }
166 この を 返し ます。
167 }
168
169rbool{link_equal( const internal::bridge::col_keyと coll_key、c onst <internal::bridge::obj>std::optional[Interval::bridge::obj]+rhs) {{
170 if (auto lc = m_link_chain) {
171q = dc->collun<internal::bridge::obj> (col_key).equal(rhs)
172 m_link_shell = std::nullopt
173 } else {
174rhs ){
175 q.links_to(col_key, *rhs)
176 } else {
177 q.links_to(col_key, internal::bridge::obj())
178 }
179 }
180 この を 返し ます。
181 }
182
183rbool+link_not_equal( const internal::bridge::col_keyと coll_key、c onst <internal::bridge::obj>std::optional{Interl::bridge::obj>+rhs) {{
184 if (auto lc = m_link_chain) {
185q = dc->collun<internal::bridge::obj> (col_key).not_equal(rhs)
186 m_link_shell = std::nullopt
187 } else {
188rhs ){
189 q.not_links_to(col_key, *rhs)
190 } else {
191 q.not_links_to(col_key, internal::bridge::obj())
192 }
193 }
194 この を 返し ます。
195 }
196
197 // Dictionary
198
199 rbool+辞書_has_value_for_key_equals(内部::bridge:: col_key列_キー、Const std::string+ キー、Const internal::bridge:: ixed + 値){{
200 q = internal::bridge::query(q.get_table()).Dictionary_has_value_for_key_equals(collun_key, キー、値)、
201 この を 返し ます。
202 }
203
204rbool+Dictionary_has_value_for_key_not_equals(内部::bridge::col_key 列_キー、 Const std::string+ キー、const 内部 ::bridge::ixed+ 値){{
205 q = internal::bridge::query(q.get_table()).Dictionary_has_value_for_key_not_equals(collun_key, キー、値)、
206 この を 返し ます。
207 }
208
209rbool+辞書_has_value_for_key_greater_than(内部::bridge::col_key 列_キー、 Const std::string+ キー、const 内部 ::bridge::ixed+ 値) {{
210 q = internal::bridge::query(q.get_table()).Dictionary_has_value_for_key_greater_than(collun_key, キー、値)、
211 この を 返し ます。
212 }
213
214 rbool+辞書_has_value_for_key_less_than(内部::bridge:: col_key列_キー、Const std::string+ キー、Const internal::bridge:: ixed + 値) {{
215 q = internal::bridge::query(q.get_table()).Dictionary_has_value_for_key_less_than(collun_key, キー、値)、
216 この を 返し ます。
217 }
218
219 rbool =========================================================================
220 q = internal::bridge::query(q.get_table()).Dictionary_has_value_for_key_greater_than_equals(collun_key, キー、値)、
221 この を 返し ます。
222 }
223
224 rbool+Dictionary_has_value_for_key_less_than_equals(内部::bridge:: col_key列_キー、Const std::string+ キー、Const 内部::bridge:: ixed + 値){{
225 q = internal::bridge::query(q.get_table()).dictionary_has_value_for_key_less_than_equals(column_key, キー、値)、
226 この を 返し ます。
227 }
228
229rbool+辞書_contains_string_for_key(内部::bridge::col_key 列_キー、 Const std::string+ キー、const std ::string+ 値){{
230 q = internal::bridge::query(q.get_table()).Dictionary_contains_string_for_key(collun_key, キー、値)、
231 この を 返し ます。
232 }
233
234 rbool+add_辞書
235 m_dictionary_ctx = ctx;
236 この を 返し ます。
237 }
238
239 rbool+Dictionary_has_key(内部::bridge:: col_key列_キー、Const std::string+キー){{
240 q = internal::bridge::query(q.get_table()).Dictionary_contains_key(collun_key, キー)
241 この を 返し ます。
242 }
243
244 ~rbool() {
245is_for_query
246 q.約query()。
247 }
248 演算子bool() const {
249 return b;
250 }
251 rbool 演算子!() const {
252is_for_query ){
253 q.negate()
254 この を 返し ます。
255 }
256 return !b;
257 }
258 和集合{
259 bool b;
260 可変内部::bridge::queryq:
261 };
262
263 rbool( internal::bridge::query &=q) :q(q)、is_for_query(true) {
264 m_table = q.get_table();
265 }
266 rbool( bool b) : b(b) {}
267 rbool( const rbool &r) {
268r.is_for_query ){
269 new (+q) internal::bridge::query(rq)
270 is_for_query = true
271 } else
272 b = r.b;
273 }
274
275 private :
276 ブールis_for_query = false
277 ブール値は_Dictionary_link = false
278std::optional""""::bridge::link_tailing""m_link_link_tailable"<internal::bridge::link_chain>
279 internal::bridge::table m_table
280std::optional[Dictionary_context]<dictionary_context> m_Dictionary_ctx
281
282 テンプレート< typename T>
283 友人 構造体の結果。
284 Friday 演算子と( const rbool &lhs、 const rbool &rhs)
285 idrbool演算子|( const rbool &lhs、 const rbool &rhs)。
286 };
287
288 インラインrbool 演算子 &( constrbool +lhs、 constrbool +rhs){{
289 場合(lhs.is_for_query){
290 Lhs.q.and_query(rhs.q)
291 return lhs;
292 }
293 return Lhs.b &+rhs.b を返す
294 }
295 インラインrbool 演算子 ||( constrbool +lhs、 constrbool +rhs){
296 場合(lhs.is_for_query){
297 lhs.q = lhs.q || rhs.q;
298 return lhs;
299 }
300 return Lhs.b &+rhs.b を返す
301 }
302
304 テンプレート< typename T>
305 inline rbool true述語( const T & op) {
306 // 空のクエリはすべての結果とこれを示す 1 つの方法を返します
307 // は、機能的に同等の true REDIRECT を直列化するためのものです
308 rbool* rb = internal::get_rbool(o);
309 (rb == nullptr )の 場合
310 スローstd::runtime_error( "マネージド オブジェクトはクエリ コンテキストでは使用されません" )
311 auto table = rb->q.get_table();
312 return rbool(table):
313 }
314
316 テンプレート< typename T>
317 inline rbool false述語( const T & op){
318 rbool* rb = internal::get_rbool(o);
319 (rb == nullptr )の 場合
320 スローstd::runtime_error( "マネージド オブジェクトはクエリ コンテキストでは使用されません" )
321 auto table = rb->q.get_table();
322 オートq = internal::bridge::query(table).and_query( internal::bridge::query(table).false 述語())
323 return rbool(std::move(q)):
324 }
325 }
326
327#endif //CPREALM_Rbool_HPP
定義: rbool.hpp:36
定義: coll_key.happ: 28
定義: rbool.happ: 38