[my-place] Refactoring: Tizen C++ convention - File names chenge.
[platform/core/context/context-provider.git] / src / my-place / utils / Similarity.h
1 /*
2  * Copyright (c) 2016 Samsung Electronics Co., Ltd.
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16
17 #ifndef _CONTEXT_PLACE_RECOGNITION_SIMILAR_H_
18 #define _CONTEXT_PLACE_RECOGNITION_SIMILAR_H_
19
20 #include "../facade/UserPlacesTypes.h"
21
22 namespace ctx {
23
24 namespace similarity {
25
26         template <class T> ctx::share_t overlap1stOver2nd(const T &s1, const T &s2)
27         {
28                 if (s2.empty())
29                         return 0;
30                 int count = 0;
31                 for (auto e : s2) {
32                         if (s1.find(e) != s1.end())
33                                 count++;
34                 }
35                 return (ctx::share_t) count / s2.size();
36         }
37
38         template <class T> ctx::share_t overlapBiggerOverSmaller(const T &s1, const T &s2)
39         {
40                 if (s1.size() > s2.size()) {
41                         return similarity::overlap1stOver2nd(s1, s2);
42                 } else {
43                         return similarity::overlap1stOver2nd(s2, s1);
44                 }
45         }
46
47         template <class T> bool isJoint(const T &s1, const T &s2)
48         {
49                 for (auto e : s2) {
50                         if (s1.find(e) != s1.end())
51                                 return true;
52                 }
53                 return false;
54         }
55
56 }       /* namespace similarity */
57
58 }       /* namespace ctx */
59
60 #endif /* End of _CONTEXT_PLACE_RECOGNITION_SIMILAR_H_ */