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