1*1285115cSWilliam A. Kennington III /* 2*1285115cSWilliam A. Kennington III * Copyright 2021 Google LLC 3*1285115cSWilliam A. Kennington III * 4*1285115cSWilliam A. Kennington III * Licensed under the Apache License, Version 2.0 (the "License"); 5*1285115cSWilliam A. Kennington III * you may not use this file except in compliance with the License. 6*1285115cSWilliam A. Kennington III * You may obtain a copy of the License at 7*1285115cSWilliam A. Kennington III * 8*1285115cSWilliam A. Kennington III * http://www.apache.org/licenses/LICENSE-2.0 9*1285115cSWilliam A. Kennington III * 10*1285115cSWilliam A. Kennington III * Unless required by applicable law or agreed to in writing, software 11*1285115cSWilliam A. Kennington III * distributed under the License is distributed on an "AS IS" BASIS, 12*1285115cSWilliam A. Kennington III * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13*1285115cSWilliam A. Kennington III * See the License for the specific language governing permissions and 14*1285115cSWilliam A. Kennington III * limitations under the License. 15*1285115cSWilliam A. Kennington III */ 16*1285115cSWilliam A. Kennington III 17*1285115cSWilliam A. Kennington III #pragma once 18*1285115cSWilliam A. Kennington III 19*1285115cSWilliam A. Kennington III #define RETURN_IF_ERROR(expr, msg) \ 20*1285115cSWilliam A. Kennington III do \ 21*1285115cSWilliam A. Kennington III { \ 22*1285115cSWilliam A. Kennington III int _ret = (expr); \ 23*1285115cSWilliam A. Kennington III if (_ret < 0) \ 24*1285115cSWilliam A. Kennington III { \ 25*1285115cSWilliam A. Kennington III std::perror(msg); \ 26*1285115cSWilliam A. Kennington III return _ret; \ 27*1285115cSWilliam A. Kennington III } \ 28*1285115cSWilliam A. Kennington III } while (0) 29