Realm C++ SDK 버전 v2.2.0

bson.hpp

1
2//
3//저작권 2024 Realm Inc.
4//
5// Apache 라이선스, 버전 2.0("라이선스")에 따라 라이선스가 부여됩니다.
6// 라이선스를 준수하는 경우를 제외하고는 이 파일을 사용할 수 없습니다.
7// 다음에서 라이선스 사본을 얻을 수 있습니다.
8//
9// http://www.apache.org/licences/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 클래스 BSON;
29 클래스 BsonDocument;
30 struct regularExpression;
31 }
32
33
60 구조체 bsoncxx {
61
62 배열 사용 = 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_decimal128,
76 b_regular_expression,
77 b_max_key,
78 b_min_key,
79 b_document,
80 b_array,
81 b_uuid
82 };
83
84 구조체 문서 {
85 CoreDocument 사용 = realm::bson::BsonDocument;
86
87 구조체 {
88 & 연산자=(const bsoncxx& v);
89 연산자 bsoncxx() const;
90 const std::string 키;
91 private:
92 친구 구조체 bsoncxx;
93 명시적 value(CoreDocument* d, const std::string& k)
94 : key(k), m_document(d) {}
95 CoreDocument* m_document;
96 };
97
98 구조체 반복자 {
99 std::pair<std::string, bsoncxx> 연산자*();
100 반복자& 연산자++();
101 반복자& 연산자--();
102 반복자& 연산자++(int);
103 반복자& 연산자--(int);
104 bool 연산자!=(const iterator& rhs) const noException;
105 bool 연산자==(const iterator& rhs) const noException;
106 private:
107 친구 구조체 document;
108 iterator(std::any&& i) : m_iterator(i) { }
109 std::any m_iterator;
110 };
111 반복자 begin();
112 반복자 end();
113
114 문서() noException;
115 문서(const std::initializer_list<std::pair<std::string, bsoncxx>>&) noException;
116 document(const document&);
118 ~문서();
119 문서& 연산자=(const 문서&);
120 문서& 연산자=(문서&&);
121 oid insert(const std::string& key, const bsoncxx& value);
122 bool empty();
123 size_t size() const;
124 연산자[](const std::string&);
125 연산자 CoreDocument() const;
126 문서(CoreDocument&) noException;
127 비공개:
128 친구 구조체 bsoncxx;
129#ifdef CPPRALM_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 구조체 min_key {};
139 구조체 max_key {};
140
144 열거형 클래스 옵션 : uint8_t {
145 없음,
146 ignore_case = 1,
147 여러 줄 = 2,
148 dotall = 4,
149 확장 = 8
150 };
151 regular_expression(const std::string& 패턴, const std::string& options);
152 정규 표현식(const std::string& 패턴, 옵션 옵션);
154 옵션 get_options() const;
155 std::string get_pattern() const;
156 연산자 realm::bson::RegularExpression() const;
157 private:
158 친구 구조체 bsoncxx;
159 regular_expression(const 영역::bson::RegularExpression&);
160 option m_options;
161 std::string m_pattern;
162 };
163
165 구조체 타임스탬프 {
166 명시적 timestamp(uint32_t초, uint32_t 증분) : m_seconds(초), m_증분(증분) {}
167 uint32_t get_seconds() const noException { return m_seconds; }
168 uint32_t get_증분() const noException { return m_증분; }
169 private:
170 친구 구조체 bsoncxx;
171 const uint32_t m_seconds;
172 const uint32_t m_increment;
173 };
174
176 구조체 날짜 {
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 친구 구조체 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(int32_t) noException;
195 bsoncxx(int64_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 decimal128&) noext;
203 bsoncxx(const object_id&) noException;
204 bsoncxx(const uuid&) noexcept;
205 bsoncxx(const regular_expression&) noException;
206 bsoncxx(const std::vector<uint8_t>&) noext;
207 bsoncxx(const std::string&) noException;
208 bsoncxx(const char*) noException;
209 bsoncxx(const 문서&) noException;
210 bsoncxx(const 배열&) noException;
211 type get_type() const;
212 연산자 영역::bson::Bson() const;
213
214 연산자 std::nullopt_t() const;
215 연산자 int32_t() const;
216 연산자 int64_t() const;
217 연산자 bool() const;
218 연산자 double() const;
219 연산자 min_key() const;
220 연산자 max_key() const;
221 연산자 타임스탬프() const;
222 연산자 date() const;
223 연산자 십진수128() const;
224 연산자 object_id() const;
225 연산자 uuid() const;
226 연산자 regular_expression() const;
227 연산자 std::vector<uint8_t>() const;
228 연산자 std::문자열() const;
229 연산자 문서() const;
230 연산자 배열() const;
231
232 std::string to_string() const;
233 std::문자열 to_json() const;
234 bsoncxx(영역::bson::Bson&) noException;
235 비공개:
236#ifdef CPPRALM_HAVE_GENERATED_BRIDGE_TYPES
237 internal::bridge:: 저장::Bson m_bson[1];
238#else
239 std::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 operator|(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} // 네임스페이스 영역
254
255#endif//REALMCXX_BSON_HPP
BSON 날짜/시간을 나타내는 유형입니다.
정의: bson.hpp:176
정의: bson.hpp:84
MaxKey는 다른 BSON types와 비교할 때 항상 가장 큰 값입니다.
정의: bson.hpp:139
MinKey는 다른 BSON types와 비교할 때 항상 가장 작은 값입니다.
정의: bson.hpp:137
BSON 타임스탬프를 나타내는 유형입니다.
정의: bson.hpp:165
정의: bson.hpp:60
정의: types.hpp:75
정의: types.hpp:56
정의: types.hpp:35