Realm C++ SDK版本 v 2.2.0

property.hpp

1
2//
3// 版权所有 2024 Realm Inc.
4//
5// 根据 Apache 许可证 2.0 版(“许可证”)获得许可;
6// 除非符合合规,否则不得使用此文件。
7// 您可以在以下网址获取许可证副本:
8//
9// http://www.apache.org/licenses/LICENSE-2.0
10//
11// 除非适用法律要求或书面同意,否则软件
12// 根据许可证分发是按“原样”分发的,
13// 不提供任何类型的Express或暗示的保证或条件。
14// 请参阅管理权限的特定语言的许可证和
15// 许可证下的限制。
16//
18
19#ifndef CPPREALM_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 struct属性;
28 }
29
30命名空间realm::internal::bridge {
31 struct col_key;
32
33 struct 属性{
34 枚举类类型:无符号{
35 Int = 0 ,
36 Bool = 1 ,
37 string = 2,
38数据 = 3 ,
39日期 = 4 ,
40浮点 = 5 ,
41 double = 6,
42 Object = 7 , // 当前必须是数组异或可空
43 LinkingObjects = 8 , // 目前必须是数组且不可空
44
45混合 = 9 ,
46 ObjectId = 10 ,
47 Decimal = 11 ,
48 UUID = 12,
49
50 // 可以与上述任何类型组合的标志,除非另有说明
51必需 = 0 ,
52 Nullable = 64 ,
53数组 = 128 ,
54集 = 256 ,
55 Dictionary = 512,
56
57集合 = 数组 |设置 |字典,
58标志 = Nullable |集合
59 };
60
61 属性 ();
62 属性 ( const 属性 & other) ;
63 property & Operator=( const property & other);
64 属性 ( 属性 && other) noException ;
65 属性 &operator=( 属性 && other) 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 Operator Property() const ; //NOLINT(google-explicit-constructor)
75 void set_object_link( const std::string&);
76 void set_origin_property_name( const std::string&);
77 void set_type(type);
78 void set_primary_key( bool );
79 bool is_primary() const ;
80 std::string name() const
81 [[nodiscard]] col_key colum_key() const ;
82 private :
83#ifdef CPPREALM_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 template < typename E>
92 constexpr auto to_underlying(E e)
93 {
94 return static_cast< typename std::underlying_type<E>::type > (e);
95 }
96 }
97 内联 constexpr property::type Operator|(property::type a, property::type b)
98 {
99 return static_cast< 属性::type > (to_underlying(a) | to_underlying(b));
100 }
101 内联 constexprproperty ::typeoperator&( 属性 ::typea, 属性 :: 属性)
102 {
103 return static_cast< property::type > (to_underlying(a) & to_underlying(b));
104 }
105
106 内联 constexpr boolproperty_has_flag (属性 :: 属性 :: typeflag){
107 return static_cast<bool> ( 属性 & flag);
108 }
109 }
110
111#endif //CPREALM_BRIDGE_PROPERTY_HPP
定义: col_key.hpp: 28
定义:属性.hpp: 33