Realm C++ SDK Versão C++ v2.2.0

dicionário.hpp

1
2//
3// Autores 2024 Realm Inc.
4//
5// Licenciado sob a Licença Apache, Versão 2.0 (a "Licença");
6// você não pode usar este arquivo, exceto em conformidade com a Licença.
7// Você pode obter uma cópia da Licença em
8//
9// http://www.apache.org/license/LICENSE-2.0
10//
11// A menos que exigido pela lei aplicável ou acordado por escrito, o software
12// distribuído sob a Licença é distribuído "Como está",
13// sem garantias ou condições de qualquer tipo, Express ou implícitas.
14// Consulte a Licença para obter as permissões específicas de domínio do idioma e
15// limitações da Licença.
16//
18
19#ifndef CPPREALM_BRIDGE_DICTIONARY_HPP
20#define CPPREALM_BRIDGE_DICTIONARY_HPP
21
22#include <functional>
23#include <memory>
24#include <string>
25#include <vector>
26#include <cprealm/internal/bridge/utils.hpp>
27
28namespace realm::object_store {
29 classe Dicionário;
30}
31
32namespace Realm {
33 classe Dicionário;
34 usando CoreDictionary = Dicionário;
35 estrutura, estrutura dicionário_change_set {
39 dictionary_change_set& operator=(dictionary_change_set&&) = padrão;
40
41 // Chaves que foram removidas do dicionário _old_
42 std::vector<std::string> exclusões;
43
44 // Chaves no dicionário _new_ que são novas inserções
45 inserções std::vector<std::string>;
46
47 // Chaves de objetos/valores que foram modificados
48 modificações std::vector<std::string>;
49
50 bool collection_root_was_deleted = false;
51 };
52
53 estrutura, estrutura dicionário_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 modificações(std::move(m)),
63 exclusões(std::move(d)),
64 collection(c) {}
65
66 inserções std::vector<std::string>;
67 modificações std::vector<std::string>;
68 std::vector<std::string> exclusões;
69 // Este sinalizador indica se o objeto subjacente que é a origem desta
70 // a collection foi excluída. Isso se aplica a listas, dicionários e conjuntos.
71 // Isso permite que os notificadores relatem uma alteração nas coleções vazias que foram excluídas.
72 bool collection_root_was_deleted = false;
73
74 [[nodiscard]] bool empty() const noexceto {
75 return deleteries.empty() && inserts.empty() && modified.empty() &&
76 !collection_root_was_deleted;
77 }
78 };
79
80 estrutura, estrutura dicionário_callback_wrapper {
81 std::function<void(dictionary_collection_change)> manipulador;
82 bool ignore_changes_in_initial_notification;
83
84 dictionary_callback_wrapper(std::function <null(dictionary_collection_change) > manipulador,
85 bool ignore_changes_in_initial_notification)
86 : manipulador (manipulador)
87 , ignore_changes_in_initial_notification(ignore_changes_in_initial_notification)
88 {}
89 };
90}
91
92namespace realm::internal::bridge {
93 usando Dicionário = objeto::Dicionário;
94 usando CoreDictionary = CoreDictionary;
95
96 estrutura mista;
97 binário de estrutura ;
98 carimbo de data/hora da estrutura ;
99 estruturado obj_key;
100 struct uuid;
101 estrutura object_id;
102 notificação de estrutura_token ;
103 collection_change_callback de estrutura ;
104 estrutura obj;
105
106 estrutura, estrutura core_Dictionary {
108 core_Dictionary(Const Core_Dictionary & outros);
109 core_Dictionary &operator=(const core_Dictionary &outros);
111 core_Dictionary &operator=(Core_Dictionary &&outros);
113
114 core_Dictionary(const CoreDictionary& v); //NOLINT(google-explicit-constructor)
115 operador CoreDictionary () const; //NOLINT(google-explicit-constructor)
116 hook insert(const std::string& chave, const misto& valor);
117 anular a inserção(const std::string& chave, const std::string& valor);
118 obj create_and_insert_linked_object(const std::string& chave);
119 obj create_and_insert_linked_object(const std::string& chave, const Internal::bridge::misto& pk);
120 get(const std::string& key) const;
121 vazio apaga(const std::string& chave);
122 obj get_object(const std::string& chave);
123 std::pair<mixed, mixed> get_pair(size_t ndx) const;
124 size_t find_any_key(const std::string& value) const noexceto;
125
126 tamanho_t tamanho() const;
127 privado:
128 const CoreDictionary* get_Dictionary() const;
129 CoreDictionary* get_Dictionary();
130#ifdef CPPREALM_HVE_GENERATED_BRIDGE_TYPes
131 armazenamento::CoreDictionary m_Dictionary[1];
132#else
133 std::shared_ptr<CoreDictionary> m_Dictionary;
134#endif
135 };
136
137
138 estrutura, estrutura dicionário {
139 dicionário();
140 dicionário(const dicionárioe outro);
141 dicionário& operador=(const dicionário& outro);
142 dicionário(dicionário&& outro);
143 dicionário& operador=(dicionário&& outro);
144 ~Dicionário();
145 dicionário(const Dicionário& v); //NOLINT(google-explicit-constructor)
146 operador Dicionário() const; //NOLINT(google-explicit-constructor)
147 hook insert(const std::string& chave, const misto& valor);
148 hook insert( std const ::string &chave, std const ::string &valor);
149 [[nodiscard]] size_t size() const;
150 vazio remove_all();
151 removedor nulo (const std::string&);
152 std::pair<std::string, mixed> get_pair(size_t);
153 [[nodiscard]] size_t get_key_index(const std::string&);
154 null 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 notification_token add_key_based_notification_callback(std::Shared_ptr<dictionary_callback_wrapper>&& cb);
159 privado:
160 Dicionário const * get_Dictionary() const;
161 Dicionário* get_Dictionary();
162 amigo Dicionário in- line * get_Dictionary(dictionary& lst);
163 amigo in-line dicionário const * get_Dictionary(dicionárioconst & lst);
164 modelo <typename T>
165 amigo T get(dicionário&, const std::string&);
166#ifdef CPPREALM_HVE_GENERATED_BRIDGE_TYPes
167 armazenamento::Dictionary m_Dictionary[1];
168#else
169 std::shared_ptr<Dictionary> m_Dictionary;
170#endif
171 };
172
173 modelo <typename T>
174 [[nodiscard]] T get(dictionary&, const std::string&);
175 modelo <>
176 [[nodiscard]] std::string get(dictionary&, const std::string&);
177 modelo <>
178 [[nodiscard]] uuid get(dictionary&, const std::string&);
179 modelo <>
180 [[nodiscard]] objeto get(dictionary&, const std::string&);
181 modelo <>
182 [[nodiscard]] timestamp get(dictionary&, const std::string&);
183 modelo <>
184 [[nodiscard]] binary get(dictionary&, const std::string&);
185 modelo <>
186 [[nodiscard]] obj get(dictionary&, const std::string&);
187 modelo <>
188 [[nodiscard]] obj_key get(dictionary&, const std::string&);
189 modelo <>
190 [[nodiscard]] int64_t get(dictionary&, const std::string&);
191 modelo <>
192 [[nodiscard]] double get(dictionary&, const std::string&);
193}
194
195#endif //CPPrealm_BRIDGE_DICTIONARY_HPP
Definição: dictionary.hpp:80
Definição: dictionary.hpp:35
Definição: dictionary.hpp:53
Definição: binary.hpp:30
Definição: dictionary.hpp:106
Definição: dictionary.hpp:138
Definição: misto.hpp:69
Definição: obj_key.hpp:33
Definição: obj.hpp:123
Definição: object_id.hpp:31
Definição: timestamp.hpp:30
Definição: uuid.hpp:32