slang_assert.h revision f2174cfd6a556b51aadf2b8765e50df080e8f18e
16e6578a360497f78a181e63d7783422a9c9bfb15Stephen Hines/* 26e6578a360497f78a181e63d7783422a9c9bfb15Stephen Hines * Copyright 2011, The Android Open Source Project 36e6578a360497f78a181e63d7783422a9c9bfb15Stephen Hines * 46e6578a360497f78a181e63d7783422a9c9bfb15Stephen Hines * Licensed under the Apache License, Version 2.0 (the "License"); 56e6578a360497f78a181e63d7783422a9c9bfb15Stephen Hines * you may not use this file except in compliance with the License. 66e6578a360497f78a181e63d7783422a9c9bfb15Stephen Hines * You may obtain a copy of the License at 76e6578a360497f78a181e63d7783422a9c9bfb15Stephen Hines * 86e6578a360497f78a181e63d7783422a9c9bfb15Stephen Hines * http://www.apache.org/licenses/LICENSE-2.0 96e6578a360497f78a181e63d7783422a9c9bfb15Stephen Hines * 106e6578a360497f78a181e63d7783422a9c9bfb15Stephen Hines * Unless required by applicable law or agreed to in writing, software 116e6578a360497f78a181e63d7783422a9c9bfb15Stephen Hines * distributed under the License is distributed on an "AS IS" BASIS, 126e6578a360497f78a181e63d7783422a9c9bfb15Stephen Hines * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 136e6578a360497f78a181e63d7783422a9c9bfb15Stephen Hines * See the License for the specific language governing permissions and 146e6578a360497f78a181e63d7783422a9c9bfb15Stephen Hines * limitations under the License. 156e6578a360497f78a181e63d7783422a9c9bfb15Stephen Hines */ 166e6578a360497f78a181e63d7783422a9c9bfb15Stephen Hines 176e6578a360497f78a181e63d7783422a9c9bfb15Stephen Hines#ifndef _FRAMEWORKS_COMPILE_SLANG_SLANG_ASSERT_H_ // NOLINT 186e6578a360497f78a181e63d7783422a9c9bfb15Stephen Hines#define _FRAMEWORKS_COMPILE_SLANG_SLANG_ASSERT_H_ 196e6578a360497f78a181e63d7783422a9c9bfb15Stephen Hines 206e6578a360497f78a181e63d7783422a9c9bfb15Stephen Hines#include <cstdlib> 216e6578a360497f78a181e63d7783422a9c9bfb15Stephen Hines#include <cstdio> 226e6578a360497f78a181e63d7783422a9c9bfb15Stephen Hines 236e6578a360497f78a181e63d7783422a9c9bfb15Stephen Hines#ifdef __DISABLE_ASSERTS 24f2174cfd6a556b51aadf2b8765e50df080e8f18eStephen Hines#define slangAssert(v) while (0) 256e6578a360497f78a181e63d7783422a9c9bfb15Stephen Hines#else 26f2174cfd6a556b51aadf2b8765e50df080e8f18eStephen Hines#define __ABORT_ON_FAILURES 1 27f2174cfd6a556b51aadf2b8765e50df080e8f18eStephen Hines#define slangAssert(v) \ 28f2174cfd6a556b51aadf2b8765e50df080e8f18eStephen Hines do { \ 29f2174cfd6a556b51aadf2b8765e50df080e8f18eStephen Hines if (!(v)) { \ 30f2174cfd6a556b51aadf2b8765e50df080e8f18eStephen Hines fprintf(stderr, "slangAssert failed at %s:%d - '%s'\n", \ 31f2174cfd6a556b51aadf2b8765e50df080e8f18eStephen Hines __FILE__, __LINE__, #v); \ 32f2174cfd6a556b51aadf2b8765e50df080e8f18eStephen Hines if (__ABORT_ON_FAILURES) { \ 33f2174cfd6a556b51aadf2b8765e50df080e8f18eStephen Hines abort(); \ 34f2174cfd6a556b51aadf2b8765e50df080e8f18eStephen Hines } \ 35f2174cfd6a556b51aadf2b8765e50df080e8f18eStephen Hines } \ 366e6578a360497f78a181e63d7783422a9c9bfb15Stephen Hines } while (0) 376e6578a360497f78a181e63d7783422a9c9bfb15Stephen Hines#endif // __DISABLE_ASSERTS 386e6578a360497f78a181e63d7783422a9c9bfb15Stephen Hines 396e6578a360497f78a181e63d7783422a9c9bfb15Stephen Hines 406e6578a360497f78a181e63d7783422a9c9bfb15Stephen Hines#endif // _FRAMEWORKS_COMPILE_SLANG_SLANG_ASSERT_H_ NOLINT 41