added iOS source code
[wl-app.git] / iOS / Pods / Realm / include / core / realm / query_operators.hpp
1 /*************************************************************************
2  *
3  * Copyright 2017 Realm Inc.
4  *
5  * Licensed under the Apache License, Version 2.0 (the "License");
6  * you may not use this file except in compliance with the License.
7  * You may obtain a copy of the License at
8  *
9  * http://www.apache.org/licenses/LICENSE-2.0
10  *
11  * Unless required by applicable law or agreed to in writing, software
12  * distributed under the License is distributed on an "AS IS" BASIS,
13  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14  * See the License for the specific language governing permissions and
15  * limitations under the License.
16  *
17  **************************************************************************/
18
19 #ifndef REALM_QUERY_OPERATORS_HPP
20 #define REALM_QUERY_OPERATORS_HPP
21
22 #include <realm/binary_data.hpp>
23 #include <realm/link_view.hpp>
24 #include <realm/string_data.hpp>
25 #include <realm/table.hpp>
26
27 namespace realm {
28
29 // This is not supported in the general case
30 template <class T>
31 struct Size;
32
33 template <>
34 struct Size<StringData> {
35     int64_t operator()(StringData v) const
36     {
37         return v.size();
38     }
39     typedef StringData type;
40 };
41
42 template <>
43 struct Size<BinaryData> {
44     int64_t operator()(BinaryData v) const
45     {
46         return v.size();
47     }
48     typedef BinaryData type;
49 };
50
51 template <>
52 struct Size<ConstTableRef> {
53     int64_t operator()(ConstTableRef v) const
54     {
55         return v->size();
56     }
57     typedef ConstTableRef type;
58 };
59
60 template <>
61 struct Size<ConstLinkViewRef> {
62     int64_t operator()(ConstLinkViewRef v) const
63     {
64         return v->size();
65     }
66     typedef ConstLinkViewRef type;
67 };
68
69 } // namespace realm
70
71 #endif // REALM_QUERY_OPERATORS_HPP