[Tizen] Add InterceptKeyEvent
[platform/core/uifw/dali-core.git] / dali / internal / event / common / property-helper.cpp
1 /*
2  * Copyright (c) 2021 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
18 // HEADER
19 #include <dali/internal/event/common/property-helper.h>
20
21 namespace Dali
22 {
23 namespace Internal
24 {
25 bool CompareTokens(const char* first, const char* second, uint32_t& size)
26 {
27   size = 0;
28   while((*first != '\0') && (*second != '\0') && (*first != ',') && (*second != ','))
29   {
30     ++size;
31     char ca = *first;
32     char cb = *second;
33
34     if(((ca == '-') || (ca == '_')) &&
35        ((cb == '-') || (cb == '_')))
36     {
37       ++first;
38       ++second;
39       continue;
40     }
41
42     if(('A' <= ca) && (ca <= 'Z'))
43     {
44       ca = static_cast<char>(ca + ('a' - 'A')); // don't expect overflow
45     }
46
47     if(('A' <= cb) && (cb <= 'Z'))
48     {
49       cb = static_cast<char>(cb + ('a' - 'A')); // don't expect overflow
50     }
51
52     if(ca != cb)
53     {
54       return false;
55     }
56
57     ++first;
58     ++second;
59   }
60
61   // enums can be comma separated so check ends and comma
62   if(((*first == '\0') && (*second == '\0')) ||
63      ((*first == '\0') && (*second == ',')) ||
64      ((*first == ',') && (*second == '\0')))
65   {
66     return true;
67   }
68
69   return false;
70 }
71
72 } // namespace Internal
73
74 } // namespace Dali