slang_assert.h revision 6e6578a360497f78a181e63d7783422a9c9bfb15
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
246e6578a360497f78a181e63d7783422a9c9bfb15Stephen Hines#define slangAssert(v) while(0)
256e6578a360497f78a181e63d7783422a9c9bfb15Stephen Hines#else
266e6578a360497f78a181e63d7783422a9c9bfb15Stephen Hines#define __EXIT_ON_FAILURES  1
276e6578a360497f78a181e63d7783422a9c9bfb15Stephen Hines#define slangAssert(v)                                      \
286e6578a360497f78a181e63d7783422a9c9bfb15Stephen Hines  do {                                                      \
296e6578a360497f78a181e63d7783422a9c9bfb15Stephen Hines    if (!(v)) {                                             \
306e6578a360497f78a181e63d7783422a9c9bfb15Stephen Hines      fprintf(stderr, "slangAssert failed at %s:%d - '%s'", \
316e6578a360497f78a181e63d7783422a9c9bfb15Stephen Hines          __FILE__, __LINE__, #v);                          \
326e6578a360497f78a181e63d7783422a9c9bfb15Stephen Hines      if (__EXIT_ON_FAILURES) {                             \
336e6578a360497f78a181e63d7783422a9c9bfb15Stephen Hines        exit(1);                                            \
346e6578a360497f78a181e63d7783422a9c9bfb15Stephen Hines      }                                                     \
356e6578a360497f78a181e63d7783422a9c9bfb15Stephen 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