19#ifndef CPPREALM_RBOOL_HPP
20CPREALM_Rbool_HPP を定義する
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>
45 m_link_link_link(col_key)
47 m_link_shell = m_table.get_link(col_key)
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 $
62 q = internal::bridge::query(q.get_table()).comparson(col_key, *rhs) $
64 q = internal::bridge::query(q.get_table()).comparson(col_key, std::nullopt) $
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 $
77 q = internal::bridge::query(q.get_table()).comparson(col_key, rhs) $
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 $
91 q = internal::bridge::query(q.get_table()).comparson(col_key, rhs) $
96 refine_query(std::string, equal)
97 refine_query(std::string, not_equal)
100 if (
auto lc = m_link_chain) {
101q=========================================================================<std::string><std::string>大文字と小文字を区別する)
102 m_link_shell = std::nullopt
104 q = internal::bridge::query(q.get_table()).contains(col_key, rhs、大文字と小文字を区別する)
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)
116 defined_query(
bool , equal)
117 defined_query(
bool , not_equal)
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)
126 refine_query(std::vector<uint 8 _t>, equal)
127 defined_query(std::vector<uint 8 _t>,not_equal)
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>
136 refine_query(uuid, equal)
137 refine_query(uuid, not_equal)
139 defined_query(object_id, equal)
140 refine_query(object_id, not_equal)
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)
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
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
164 q.not_equal(col_key,rhs)
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
175 q.links_to(col_key, *rhs)
177 q.links_to(col_key, internal::bridge::obj())
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
189 q.not_links_to(col_key, *rhs)
191 q.not_links_to(col_key, internal::bridge::obj())
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, キー、値)、
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, キー、値)、
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, キー、値)、
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, キー、値)、
219 rbool =========================================================================
220 q = internal::bridge::query(q.get_table()).Dictionary_has_value_for_key_greater_than_equals(collun_key, キー、値)、
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, キー、値)、
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, キー、値)、
235 m_dictionary_ctx = ctx;
239 rbool+Dictionary_has_key(内部::bridge::
col_key列_キー、Const std::string+キー){{
240 q = internal::bridge::query(q.get_table()).Dictionary_contains_key(collun_key, キー)
260 可変内部::bridge::queryq:
263 rbool( internal::bridge::query &=q) :q(q)、is_for_query(true) {
264 m_table = q.get_table();
266 rbool(
bool b) : b(b) {}
267 rbool(
const rbool &r) {
269 new (+q) internal::bridge::query(rq)
270 is_for_query =
true )
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
284 Friday 演算子と(
const rbool &lhs、
const rbool &rhs)
285 idrbool演算子|(
const rbool &lhs、
const rbool &rhs)。
288 インラインrbool 演算子 &(
constrbool +lhs、
constrbool +rhs){{
289 場合(lhs.is_for_query){
290 Lhs.q.and_query(rhs.q)
293 return Lhs.b &+rhs.b を返す
295 インラインrbool 演算子 ||(
constrbool +lhs、
constrbool +rhs){
296 場合(lhs.is_for_query){
297 lhs.q = lhs.q || rhs.q;
300 return Lhs.b &+rhs.b を返す
305 inline rbool true述語(
const T & op) {
308 rbool* rb = internal::get_rbool(o);
310 スローstd::runtime_error(
"マネージド オブジェクトはクエリ コンテキストでは使用されません" )
311 auto table = rb->q.get_table();
317 inline rbool false述語(
const T & op){
318 rbool* rb = internal::get_rbool(o);
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)):