Realm C++ SDK 버전 v2.2.0

dictionary.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 CPPRALM_BRIDGE_DICTIONARY_HPP
20#define CPPRALM_BRIDGE_DICTIONARY_HPP
21
22#include <functional>
23#include <memory>
24#include <string>
25#include <vector>
26#include <cpprealm/internal/bridge/utils.hpp>
27
28namespace realm::object_store {
29 클래스 사전;
30}
31
32네임스페이스 영역 {
33 클래스 사전;
34 CoreDictionary = 사전 사용
39 dictionary_change_set& operator=(dictionary_change_set&&) = 기본값;
40
41 // _old_ 딕셔너리에서 제거된 키
42 std::vector<std::string> 삭제;
43
44 // 새로운 삽입인 _new_ 딕셔너리의 키
45 std::vector<std::string> 삽입;
46
47 // 수정된 객체/값의 키
48 std::vector<std::string> 수정;
49
50 bool collection_root_was_deleted = false;
51 };
52
54 dictionary_collection_change() = 기본값;
55
56
57 dictionary_collection_change(std::vector<std::string>&& i,
58 std::vector<std::string>&& m,
59 std::vector<std::string>&& d,
60 bool c)
61 : inserts(std::move(i)),
62 수정(std::move(m)),
63 삭제(std::move(d)),
64 collection_root_was_deleted(c) {}
65
66 std::vector<std::string> 삽입;
67 std::vector<std::string> 수정;
68 std::vector<std::string> 삭제;
69 // 이 플래그는 다음의 소스인 기본 객체가
70 // 컬렉션이 삭제되었습니다. 이는 목록, 사전 및 세트에 적용됩니다.
71 // 이를 통해 알리미는 삭제된 빈 컬렉션에 대한 변경 사항을 보고할 수 있습니다.
72 bool collection_root_was_deleted = false;
73
74 [[nodiscard]] bool empty() const noException {
75 반환 deletes.empty() && inserts.empty() && Modifys.empty() &&
76 !collection_root_was_deleted;
77 }
78 };
79
81 std::function< 무효(dictionary_collection_change)> 처리기;
82 bool ignore_changes_in_initial_notification;
83
85 bool ignore_changes_in_initial_notification)
86 : handler(handler)
87 , ignore_changes_in_initial_notification(ignore_changes_in_initial_notification)
88 {}
89 };
90}
91
92namespace realm::internal::bridge {
93 사전 사용 = object_store::Dictionary;
94 CoreDictionary 사용 = CoreDictionary;
95
96 구조체 혼합;
97 구조체 바이너리
98 구조체 타임스탬프
99 struct obj_key;
100 구조체 uuid;
101 구조체 object_id;
102 structnotification_token ;
103 struct collection_change_callback;
104 구조체 객체
105
106 구조체 core_dictionary {
108 core_dictionary(const core_dictionary &other);
109 core_dictionary &operator=(const core_dictionary &other);
111 core_dictionary &operator=(core_dictionary &&other);
113
114 core_dictionary(const CoreDictionary& v); //NOLINT(google-explicit-constructor)
115 연산자 CoreDictionary() const; //NOLINT(google-explicit-constructor)
116 무효 insert(const std::string& key, const mixed& value);
117 oid insert(const std::string& key, const std::string& value);
118 obj create_and_insert_linking_object(const std::string& key);
119 obj create_and_insert_linking_object(const std::string& key, const internal::bridge::mixed& pk);
120 혼합 get(const std::string& key) const;
121 무효 지우기(const std::string& key);
122 obj get_object(const std::string& key);
123 std::pair<mixed, mixed> get_pair(size_t ndx) const;
124 size_t find_any_key(const std::string& value) const noException;
125
126 size_t size() const;
127 private:
128 const CoreDictionary* get_dictionary() const;
129 CoreDictionary* get_dictionary();
130#ifdef CPPRALM_HAVE_GENERATED_BRIDGE_TYPES
131 저장::CoreDictionary m_dictionary[1];
132#else
133 std::shared_ptr<CoreDictionary> m_dictionary;
134#endif
135 };
136
137
138 구조체 dictionary {
139 dictionary();
140 사전(const 사전& 기타) ;
141 사전& 연산자=(const 사전& 기타) ;
142 사전(사전&& 기타);
143 사전& 연산자=(사전&& 기타);
144 ~사전();
145 사전(const 사전& v); //NOLINT(google-explicit-constructor)
146 연산자 사전() const; //NOLINT(google-explicit-constructor)
147 무효 insert(const std::string& key, const mixed& value);
148 무효 insert(const std::string &key, const std::string &value);
149 [[nodiscard]] size_t size() const;
150 remove_all()을 무효화 합니다.
151 무효 제거(const std::string&);
152 std::pair<std::string, mixed> get_pair(size_t);
153 [[nodiscard]] size_t get_key_index(const std::string&);
154 무효 clear();
155 [[nodiscard]] size_t find(const std::string&);
156 obj insert_embedded(const std::string&);
157 notification_token add_notification_callback(std::shared_ptr<collection_change_callback>&& cb);
158 알림 _토큰 add_key_based_notification_callback(std::shared_ptr<dictionary_callback_wrapper>&& cb);
159 private:
160 const 사전* get_dictionary() const;
161 사전* get_dictionary();
162 친구 인라인 사전 * get_dictionary(dictionary& lst);
163 친구 인라인 const 사전* get_dictionary(const 사전& lst);
164 템플릿 <typename T>
165 친구 T get(딕셔너리&, const std::string&);
166#ifdef CPPRALM_HAVE_GENERATED_BRIDGE_TYPES
167 저장::Dictionary m_dictionary[1];
168#else
169 std::shared_ptr<Dictionary> m_dictionary;
170#endif
171 };
172
173 템플릿 <typename T>
174 [[nodiscard]] T get(dictionary&, const std::string&);
175 템플릿 <>
176 [[nodiscard]] std::string get(dictionary&, const std::string&);
177 템플릿 <>
178 [[nodiscard]] uuid get(dictionary&, const std::string&);
179 템플릿 <>
180 [[nodiscard]] object_id get(dictionary&, const std::string&);
181 템플릿 <>
182 [[nodiscard]] timestamp get(dictionary&, const std::string&);
183 템플릿 <>
184 [[nodiscard]] 바이너리 get(dictionary&, const std::string&);
185 템플릿 <>
186 [[nodiscard]] obj get(dictionary&, const std::string&);
187 템플릿 <>
188 [[nodiscard]] obj_key get(dictionary&, const std::string&);
189 템플릿 <>
190 [[nodiscard]] int64_t get(dictionary&, const std::string&);
191 템플릿 <>
192 [[nodiscard]] double get(dictionary&, const std::string&);
193}
194
195#endif //CPPREALM_BRIDGE_DICTIONARY_HPP
정의: dictionary.hpp:80
정의: dictionary.hpp:35
정의: dictionary.hpp:53
정의: 바이너리.hpp:30
정의: dictionary.hpp:138
정의: obj_key.hpp:33
정의: object_id.hpp:31
정의: timestamp.hpp:30