• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (C) 2022 Huawei Device Co., Ltd.
3  * Licensed under the Apache License, Version 2.0 (the "License");
4  * you may not use this file except in compliance with the License.
5  * You may obtain a copy of the License at
6  *
7  *     http://www.apache.org/licenses/LICENSE-2.0
8  *
9  * Unless required by applicable law or agreed to in writing, software
10  * distributed under the License is distributed on an "AS IS" BASIS,
11  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12  * See the License for the specific language governing permissions and
13  * limitations under the License.
14  */
15 
16 #ifndef PACEL_UTIL_H
17 #define PACEL_UTIL_H
18 
19 #include <cstdint>
20 #include <list>
21 #include "parcel.h"
22 
23 namespace OHOS {
24 namespace Accessibility {
25 #define READ_PARCEL_AND_RETURN_FALSE_IF_FAIL(type, parcel, data)            \
26     do {                                                                    \
27         if (!(parcel).Read##type(data)) {                                   \
28             HILOG_ERROR("Fail to read %{public}s type from parcel", #type); \
29             return false;                                                   \
30         }                                                                   \
31     } while (0)
32 
33 #define WRITE_PARCEL_AND_RETURN_FALSE_IF_FAIL(type, parcel, data)               \
34     do {                                                                        \
35         if (!(parcel).Write##type(data)) {                                      \
36             HILOG_ERROR("Fail to write %{public}s type from parcel", #type);    \
37             return false;                                                       \
38         }                                                                       \
39     } while (0)
40 
41 template<class T>
TranslateListToVector(const std::list<T> & originList)42 std::vector<T> TranslateListToVector(const std::list<T> &originList)
43 {
44     std::size_t len = originList.size();
45     std::vector<T> destVector(len);
46     std::copy(originList.begin(), originList.end(), destVector.begin());
47     return destVector;
48 }
49 
50 template<class T>
TranslateVectorToList(const std::vector<T> & originVector)51 std::list<T> TranslateVectorToList(const std::vector<T> &originVector)
52 {
53     int len = originVector.length();
54     std::list<T> destList(len);
55     std::copy(originVector.begin(), originVector.end(), destList.begin());
56     return destList;
57 }
58 } // namespace Accessibility
59 } // namespace OHOS
60 
61 #endif // PACEL_UTIL_H