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

Property.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_PROPERTY_HPP
20#define CPPREALM_BRIDGE_PROPERTY_HPP
21
22#include <functional>
23#include <string>
24#include <cprealm/internal/bridge/utils.hpp>
25
26namespace Realm {
27 Propriedade estrutura ;
28}
29
30namespace realm::internal::bridge {
31 struct col_key;
32
33 estrutura, estrutura propriedade {
34 tipo declasse enum : curto não assinado {
35 Int = 0,
36 Bool = 1,
37 string = 2,
38 Dados = 3,
39 Data = 4,
40 Flutuante = 5,
41 double = 6,
42 Object = 7, // atualmente deve ser array x ou anulável
43 LinkingObjects = 8, // atualmente deve ser array e não anulável
44
45 Misto = 9,
46 ObjectId = 10,
47 Decimais = 11,
48 UUID = 12,
49
50 // Sinalizadores que podem ser combinados com qualquer um dos tipos acima, exceto conforme observado
51 Obrigatório = 0,
52 Anulável = 64,
53 Array = 128,
54 Set = 256,
55 Dictionary = 512,
56
57 Collection = Array | Definir | Dicionário,
58 Sinalizadores = Anulável | Collection
59 };
60
62 propriedade(propriedadeconst e outros);
63 propriedade& operador=(propriedadeconst e outro);
64 propriedade(propriedade&& outro) noexceto;
65 propriedade &operator=(propriedade &&outro) noexceto;
67 propriedade( propriedade const &); //NOLINT(google-explicit-constructor)
68 propriedade(const std::string& name,
69 tipo de tipo,
70 bool is_primary_key);
71 propriedade(const std::string& name,
72 tipo de tipo,
73 const std::string & object_name);
74 operador Property() const; //NOLINT(google-explicit-constructor)
75 set_object_link (const std::string&);
76 set_origin_property_name (const std::string&);
77 void set_type(type);
78 set_primary_key (bool);
79 bool is_primary() const;
80 std::nome da string() const;
81 [[nodiscard]] col_key column_key() const;
82 privado:
83#ifdef CPPREALM_HVE_GENERATED_BRIDGE_TYPes
84 storage::Property m_property[1];
85#else
86 std::shared_ptr<Property> m_property;
87#endif
88 };
89
90 namespace {
91 modelo <typename E>
92 constexpr auto to_sublying(E e)
93 {
94 Método static_cast<nome do tipo std::sublying_type<E>::type>(e);
95 }
96 }
97 in-line propriedade constexpr ::tipo operador|(properidade::tipo a, propriedade::tipo b)
98 {
99 Método propriedade estática_cast < ::type>(to_nderlying(a) | to_nderlying(b));
100 }
101 in-line propriedadeconstexpr ::tipo operador&(propriedade::tipo a, propriedade::tipo b)
102 {
103 Método propriedades estáticas::tipo>( to_sublying (a) e to_sublying(b));
104 }
105
106 in-line constexpr bool propriedade_has_frag(propriedade::tipo de propriedade, propriedade::tipo sinalizador) {
107 Método estático_cast <bool>(propriedade e bandeira);
108 }
109}
110
111#endif //CPREALM_BRIDGE_PROPERTY_HPP
Definição: col_key.hpp:28
Definição: propriedade.hpp:33