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