Realm C++ SDK版本 v 2.2.0

bson.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 REALMCXX_BSON_HPP
20#define REALMCXX_BSON_HPP
21
22#include <cpprealm/types.hpp>
23#include <cpprealm/internal/bridge/utils.hpp>
24#include <any>
25
26命名空间域 {
27 命名空间BSON {
28 class BSON ;
29 class BsonDocument;
30 struct正则表达式;
31 }
32
33
60 struct bsoncxx {
61
62 using 大量 = std::vector<bsoncxx>;
63
64 枚举类类型{
65 b_null,
66 b_int32,
67 b_int64,
68 b_bool,
69 b_double,
70 b_string,
71 b_binary,
72 b_timestamp,
73 b_datetime,
74 b_objectId,
75 b_decimal 128 ,
76 b_regular_expression,
77 b_max_key,
78 b_min_key,
79 b_document,
80 b_array,
81 b_uuid
82 };
83
84 struct 文档{
85 using CoreDocument = realm::bson::BsonDocument;
86
87 struct {
88 value & Operator=( const bsoncxx & v);
89 运算符 bsoncxx() const;
90 const std::string key;
91 private :
92 朋友 struct bsoncxx
93 显式 value (CoreDocument* d, const std::string& k)
94 : key(k), m_document(d) {}
95 CoreDocument* m_document;
96 };
97
98 struct 迭代器{
99 std::pair<std::string, bsoncxx> 操作符*();
100 迭代器和操作符++();
101 迭代器和操作符--();
102 iterator & Operator++( int );
103 迭代器和操作符--( int );
104 bool操作符!=( const iterator & rhs) const noException ;
105 bool 操作符==( const iterator & rhs) const noException ;
106 private :
107 朋友 struct document;
108 iterator (std::any&& i) : m_iterator(i) { }
109 std::any m_iterator;
110 };
111 迭代器begin();
112 iterator end();
113
114 文档 () noException;
115 文档 (const std::initializer_list<std::pair<std:: string , bsoncxx >>&) noException;
116 document(const document&);
118 ~ 文档 ();
119 文档 & 操作符=(const 文档 &);
120 文档 & 操作符=( 文档 &&);
121 void insert(const std:: string & key, const bsoncxx & value );
122 bool empty();
123 size_t size() const;
124 value 操作符[](const std:: string &);
125 Operator CoreDocument() const;
126 文档 (CoreDocument&) noException;
127私有:
128友元 struct bsoncxx
129#ifdef CPPREALM_HAVE_GENERATED_BRIDGE_TYPES
130 internal::bridge:: 存储::BsonIndexedMap m_document[ 1 ];
131#else
132 std::shared_ptr<CoreDocument> m_document;
133#endif
134 };
135
137 struct min_key {};
139 struct max_key {};
140
144 枚举类选项:uint 8 _t {
145无,
146 ignore_case = 1 ,
147 multiline = 2 ,
148 dotall = 4 ,
149扩展 = 8
150 };
151 regular_expression ( const std::string& 模式, const std::string& options);
152 regular_expression ( const std::string& 模式, option options);
154 option get_options() const ;
155 std::string get_pattern() const
156 运算符Realm::bson::RegularExpression() const ;
157 private :
158 朋友 struct bsoncxx
159 regular_expression ( const 域::bson::RegularExpression&);
160 option m_options;
161 std::string m_pattern;
162 };
163
165 struct 时间戳{
166 显式 timestamp (uint 32 _tseconds, uint 32 _tincrement) : m_seconds(seconds), m_increment(increment) {}
167 uint 32 _t get_seconds() const noException { return m_seconds; }
168 uint 32 _t get_increment() const noException { return m_increment; }
169 private :
170 朋友 struct bsoncxx
171 const uint 32 _t m_seconds;
172 const uint32_t m_increment;
173 };
174
176 struct 日期{
177 显式 date ( const std::chrono::time_point<std::chrono::system_clock>& d) : m_date(d) {}
178 std::chrono::time_point<std::chrono::system_clock> get_date() const noException { return m_date; }
179 private :
180 朋友 struct bsoncxx
181 const std::chrono::time_point<std::chrono::system_clock> m_date;
182 };
183
184 bsoncxx () noException;
185 ~ bsoncxx () noException;
186 bsoncxx (const bsoncxx &) noException;
187 bsoncxx(bsoncxx&&) noexcept;
188 bsoncxx & 操作符=(const bsoncxx &) noException;
189 bsoncxx & 操作符=( bsoncxx &&) noException;
190
194 bsoncxx (int 32 _t) noException;
195 bsoncxx (int 64 _t) noException;
196 bsoncxx ( bool ) noException;
197 bsoncxx ( double ) noException;
198 bsoncxx ( min_key ) noException;
199 bsoncxx ( max_key ) noException;
200 bsoncxx (const timestamp &) noException;
201 bsoncxx (const date &) noException;
202 bsoncxx (const Decimal 128 &) noException;
203 bsoncxx (const object_id &) noException;
204 bsoncxx(const uuid&) noexcept;
205 bsoncxx (const Regular_expression &) noException;
206 bsoncxx (const std::vector<uint 8 _t>&) noException;
207 bsoncxx (const std:: string &) noException;
208 bsoncxx (const char *) noException;
209 bsoncxx (const 文档 &) noException;
210 bsoncxx (const array&) noException;
211 type get_type() const;
212 操作符 域::bson::Bson() const;
213
214 操作符 std::nullopt_t() const;
215 操作符 int 32 _t() const;
216 操作符 int 64 _t() const;
217 操作符 bool () const;
218 Operator double () const;
219 操作符 min_key () const;
220 操作符 max_key () const;
221 Operator timestamp () const;
222 操作符 date () const;
223操作符十进制128 () const;
224 操作符 object_id () const;
225 操作符 uuid () const;
226操作符正则表达式() const;
227 操作符 std::vector<uint 8 _t>() const;
228 操作符 std:: string () const;
229 Operator document () const;
230 操作符 大量() const;
231
232 std:: string to_string() const;
233 std:: string to_json() const;
234 bsoncxx (域::bson::Bson&) noException;
235私有:
236#ifdef CPPREALM_HAVE_GENERATED_BRIDGE_TYPES
237 internal::bridge:: 存储::Bson m_bson[ 1 ];
238#else
239std::shared_ptr<realm::bson::Bson> m_bson;
240#endif
241 };
242
243 bool Operator==( const bsoncxx & lhs, const bsoncxx & rhs);
244 bool操作符!=( const bsoncxx & lhs, const bsoncxx & rhs);
245 bool 操作符==( const bsoncxx:: 文档 & lhs, const bsoncxx:: 文档 & rhs);
246 bool操作符!=( const bsoncxx:: 文档 & lhs, const bsoncxx:: 文档 & rhs);
247 bool Operator==( const bsoncxx::regular_expression & lhs, const bsoncxx::regular_expression & rhs) noException ;
248 bool操作符!=( const bsoncxx::regular_expression & lhs, const bsoncxx::regular_expression & rhs) noException ;
249 bsoncxx::regular_expression::option 操作符|( const bsoncxx::regular_expression::option& lhs,
250 const bsoncxx::regular_expression::option& rhs) noException ;
251 bsoncxx::regular_expression::option Operator&( const bsoncxx::regular_expression::option& lhs,
252 const bsoncxx::regular_expression::option& rhs) noException ;
253 } // 命名空间 Realm
254
255#endif//REALMCXX_BSON_HPP
表示 BSON 日期时间的类型。
定义: bson.hpp: 176
定义: bson.hpp: 98
定义: bson.hpp: 87
定义: bson.hpp: 84
与其他BSON types相比,MaxKey 将始终是最大值。
定义: bson.hpp: 139
与其他BSON types相比,MinKey 将始终是最小值。
定义: bson.hpp: 137
定义: bson.hpp: 143
表示BSON时间戳的类型。
定义: bson.hpp: 165
定义: bson.hpp: 60
定义: types.hpp: 75
定义: types.hpp:56
定义: types.hpp:35