Realm C++ SDK 버전 v2.2.0

Property.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_PROPERTY_HPP
20#define CPPREALM_BRIDGE_PROPERTY_HPP
21
22#include <functional>
23#include <string>
24#include <cpprealm/internal/bridge/utils.hpp>
25
26네임스페이스 영역 {
27 구조체 속성;
28}
29
30namespace realm::internal::bridge {
31 struct col_key;
32
33 구조체 속성 {
34 열거형 클래스 유형: 부호 없는 짧은 {
35 Int = 0,
36 Bool = 1,
37 string = 2,
38 데이터 = 3,
39 날짜 = 4,
40 Float = 5,
41 double = 6,
42 Object = 7, // 현재 배열 또는 Null 허용 중 하나여야 합니다.
43 LinkingObjects = 8, // 현재 배열이어야 하며 Null을 허용하지 않아야 합니다.
44
45 혼합 = 9,
46 ObjectId = 10,
47 10진수 = 11,
48 UUID = 12,
49
50 // 명시된 경우를 제외하고 위의 모든 유형과 결합할 수 있는 플래그입니다.
51 필수 = 0,
52 Nullable = 64,
53 배열 = 128,
54 세트 = 256,
55 Dictionary = 512,
56
57 컬렉션 = 배열 | 설정 | 사전,
58 플래그 = Null 허용 | 컬렉션
59 };
60
61 속성();
62 속성(const 속성& 기타) ;
63 속성& 연산자=(const 속성& 기타);
64 속성(속성&& 기타) noException;
65 속성 &operator=(속성 &&기타) noException;
66 ~ 속성();
67 속성(const Property&); //NOLINT(google-explicit-constructor)
68 속성(const std::string& name,
69 유형 유형,
70 bool is_primary_key);
71 속성(const std::string& name,
72 유형 유형,
73 const std::string& object_name);
74 연산자 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::string name() const;
81 [[nodiscard]] col_key column_key() const;
82 private:
83#ifdef CPPRALM_HAVE_GENERATED_BRIDGE_TYPES
84 storage::Property m_property[1];
85#else
86 std::shared_ptr<Property> m_property;
87#endif
88 };
89
90 네임스페이스 {
91 템플릿 <typename E>
92 constexpr auto to_underlying(E e)
93 {
94 반환 static_cast<typename std::underlying_type<E>::type>(e);
95 }
96 }
97 인라인 constexpr 속성::유형 연산자|(속성::유형 a, 속성::유형 b)
98 {
99 반환 static_cast<속성::type>(to_underlying(a) | to_underlying(b));
100 }
101 인라인 constexpr 속성::유형 연산자&(속성::유형 a, 속성:유형 b)
102 {
103 반환 static_cast<속성::유형>(to_underlying(a) & to_underlying(b));
104 }
105
106 인라인 constexpr bool 속성_has_flag(속성::유형 속성, 속성:유형 플래그) {
107 반환 static_cast<부울>(속성 & 플래그);
108 }
109}
110
111#endif //CPPREALM_BRIDGE_PROPERTY_HPP
정의: col_key.hpp:28