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