1fa1a494f560f57c1a0f4c3028c04d6be78b0c7bcNingyuan Wang/*
2fa1a494f560f57c1a0f4c3028c04d6be78b0c7bcNingyuan Wang * Copyright (C) 2016 The Android Open Source Project
3fa1a494f560f57c1a0f4c3028c04d6be78b0c7bcNingyuan Wang *
4fa1a494f560f57c1a0f4c3028c04d6be78b0c7bcNingyuan Wang * Licensed under the Apache License, Version 2.0 (the "License");
5fa1a494f560f57c1a0f4c3028c04d6be78b0c7bcNingyuan Wang * you may not use this file except in compliance with the License.
6fa1a494f560f57c1a0f4c3028c04d6be78b0c7bcNingyuan Wang * You may obtain a copy of the License at
7fa1a494f560f57c1a0f4c3028c04d6be78b0c7bcNingyuan Wang *
8fa1a494f560f57c1a0f4c3028c04d6be78b0c7bcNingyuan Wang *      http://www.apache.org/licenses/LICENSE-2.0
9fa1a494f560f57c1a0f4c3028c04d6be78b0c7bcNingyuan Wang *
10fa1a494f560f57c1a0f4c3028c04d6be78b0c7bcNingyuan Wang * Unless required by applicable law or agreed to in writing, software
11fa1a494f560f57c1a0f4c3028c04d6be78b0c7bcNingyuan Wang * distributed under the License is distributed on an "AS IS" BASIS,
12fa1a494f560f57c1a0f4c3028c04d6be78b0c7bcNingyuan Wang * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13fa1a494f560f57c1a0f4c3028c04d6be78b0c7bcNingyuan Wang * See the License for the specific language governing permissions and
14fa1a494f560f57c1a0f4c3028c04d6be78b0c7bcNingyuan Wang * limitations under the License.
15fa1a494f560f57c1a0f4c3028c04d6be78b0c7bcNingyuan Wang */
16fa1a494f560f57c1a0f4c3028c04d6be78b0c7bcNingyuan Wang
17fa1a494f560f57c1a0f4c3028c04d6be78b0c7bcNingyuan Wang#ifndef WIFICOND_PARCELABLE_UTILS_H_
18fa1a494f560f57c1a0f4c3028c04d6be78b0c7bcNingyuan Wang#define WIFICOND_PARCELABLE_UTILS_H_
19fa1a494f560f57c1a0f4c3028c04d6be78b0c7bcNingyuan Wang
20fa1a494f560f57c1a0f4c3028c04d6be78b0c7bcNingyuan Wangnamespace android {
21fa1a494f560f57c1a0f4c3028c04d6be78b0c7bcNingyuan Wangnamespace wificond {
22fa1a494f560f57c1a0f4c3028c04d6be78b0c7bcNingyuan Wangnamespace parcelable_utils {
23fa1a494f560f57c1a0f4c3028c04d6be78b0c7bcNingyuan Wang
24fa1a494f560f57c1a0f4c3028c04d6be78b0c7bcNingyuan Wang#define RETURN_IF_FAILED(expression_to_evaluate)                         \
25fa1a494f560f57c1a0f4c3028c04d6be78b0c7bcNingyuan Wang    {                                                                    \
26fa1a494f560f57c1a0f4c3028c04d6be78b0c7bcNingyuan Wang        status_t return_status = expression_to_evaluate;                 \
27fa1a494f560f57c1a0f4c3028c04d6be78b0c7bcNingyuan Wang        if (return_status) {                                             \
28fa1a494f560f57c1a0f4c3028c04d6be78b0c7bcNingyuan Wang            LOG(ERROR) << "Failed to parse binder parcelable object at " \
29fa1a494f560f57c1a0f4c3028c04d6be78b0c7bcNingyuan Wang                       << __FILE__ << ":" << __LINE__;                   \
30fa1a494f560f57c1a0f4c3028c04d6be78b0c7bcNingyuan Wang            return return_status;                                        \
31fa1a494f560f57c1a0f4c3028c04d6be78b0c7bcNingyuan Wang        }                                                                \
32fa1a494f560f57c1a0f4c3028c04d6be78b0c7bcNingyuan Wang    }
33fa1a494f560f57c1a0f4c3028c04d6be78b0c7bcNingyuan Wang
34fa1a494f560f57c1a0f4c3028c04d6be78b0c7bcNingyuan Wang
35fa1a494f560f57c1a0f4c3028c04d6be78b0c7bcNingyuan Wang}  // namespace parcelable_utils
36fa1a494f560f57c1a0f4c3028c04d6be78b0c7bcNingyuan Wang}  // namespace wificond
37fa1a494f560f57c1a0f4c3028c04d6be78b0c7bcNingyuan Wang}  // namespace android
38fa1a494f560f57c1a0f4c3028c04d6be78b0c7bcNingyuan Wang
39fa1a494f560f57c1a0f4c3028c04d6be78b0c7bcNingyuan Wang#endif  // WIFICOND_PARCELABLE_UTILS_H_
40