16e9e89d1ed049ec931bb1000948c12698e6c5484Stephen Hines/*
26e9e89d1ed049ec931bb1000948c12698e6c5484Stephen Hines * Copyright 2011-2012, The Android Open Source Project
36e9e89d1ed049ec931bb1000948c12698e6c5484Stephen Hines *
46e9e89d1ed049ec931bb1000948c12698e6c5484Stephen Hines * Licensed under the Apache License, Version 2.0 (the "License");
56e9e89d1ed049ec931bb1000948c12698e6c5484Stephen Hines * you may not use this file except in compliance with the License.
66e9e89d1ed049ec931bb1000948c12698e6c5484Stephen Hines * You may obtain a copy of the License at
76e9e89d1ed049ec931bb1000948c12698e6c5484Stephen Hines *
86e9e89d1ed049ec931bb1000948c12698e6c5484Stephen Hines *     http://www.apache.org/licenses/LICENSE-2.0
96e9e89d1ed049ec931bb1000948c12698e6c5484Stephen Hines *
106e9e89d1ed049ec931bb1000948c12698e6c5484Stephen Hines * Unless required by applicable law or agreed to in writing, software
116e9e89d1ed049ec931bb1000948c12698e6c5484Stephen Hines * distributed under the License is distributed on an "AS IS" BASIS,
126e9e89d1ed049ec931bb1000948c12698e6c5484Stephen Hines * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
136e9e89d1ed049ec931bb1000948c12698e6c5484Stephen Hines * See the License for the specific language governing permissions and
146e9e89d1ed049ec931bb1000948c12698e6c5484Stephen Hines * limitations under the License.
156e9e89d1ed049ec931bb1000948c12698e6c5484Stephen Hines */
166e9e89d1ed049ec931bb1000948c12698e6c5484Stephen Hines
176e9e89d1ed049ec931bb1000948c12698e6c5484Stephen Hines#ifndef _FRAMEWORKS_COMPILE_LIBBCC_INCLUDE_BCC_ASSERT_H_  // NOLINT
186e9e89d1ed049ec931bb1000948c12698e6c5484Stephen Hines#define _FRAMEWORKS_COMPILE_LIBBCC_INCLUDE_BCC_ASSERT_H_
196e9e89d1ed049ec931bb1000948c12698e6c5484Stephen Hines
206e9e89d1ed049ec931bb1000948c12698e6c5484Stephen Hines#ifdef __cplusplus
216e9e89d1ed049ec931bb1000948c12698e6c5484Stephen Hines#include <cstdlib>
226e9e89d1ed049ec931bb1000948c12698e6c5484Stephen Hines#include <cstdio>
236e9e89d1ed049ec931bb1000948c12698e6c5484Stephen Hines#else
246e9e89d1ed049ec931bb1000948c12698e6c5484Stephen Hines#include <stdlib.h>
256e9e89d1ed049ec931bb1000948c12698e6c5484Stephen Hines#include <stdio.h>
266e9e89d1ed049ec931bb1000948c12698e6c5484Stephen Hines#endif  // __cplusplus
276e9e89d1ed049ec931bb1000948c12698e6c5484Stephen Hines
286e9e89d1ed049ec931bb1000948c12698e6c5484Stephen Hines#ifdef __DISABLE_ASSERTS
296e9e89d1ed049ec931bb1000948c12698e6c5484Stephen Hines
306e9e89d1ed049ec931bb1000948c12698e6c5484Stephen Hines#define bccAssert(v) do {} while (0)
316e9e89d1ed049ec931bb1000948c12698e6c5484Stephen Hines
326e9e89d1ed049ec931bb1000948c12698e6c5484Stephen Hines#else
336e9e89d1ed049ec931bb1000948c12698e6c5484Stephen Hines
346e9e89d1ed049ec931bb1000948c12698e6c5484Stephen Hines#define LOG_TAG "bcc"
356e9e89d1ed049ec931bb1000948c12698e6c5484Stephen Hines#include <cutils/log.h>
366e9e89d1ed049ec931bb1000948c12698e6c5484Stephen Hines
376e9e89d1ed049ec931bb1000948c12698e6c5484Stephen Hines#define __ABORT_ON_FAILURES 1
386e9e89d1ed049ec931bb1000948c12698e6c5484Stephen Hines
396e9e89d1ed049ec931bb1000948c12698e6c5484Stephen Hines#define bccAssert(v)                                \
406e9e89d1ed049ec931bb1000948c12698e6c5484Stephen Hines  do {                                              \
416e9e89d1ed049ec931bb1000948c12698e6c5484Stephen Hines    if (!(v)) {                                     \
426e9e89d1ed049ec931bb1000948c12698e6c5484Stephen Hines      ALOGE("bccAssert failed at %s:%d - '%s'\n",   \
436e9e89d1ed049ec931bb1000948c12698e6c5484Stephen Hines          __FILE__, __LINE__, #v);                  \
446e9e89d1ed049ec931bb1000948c12698e6c5484Stephen Hines      if (__ABORT_ON_FAILURES) {                    \
456e9e89d1ed049ec931bb1000948c12698e6c5484Stephen Hines        abort();                                    \
466e9e89d1ed049ec931bb1000948c12698e6c5484Stephen Hines      }                                             \
476e9e89d1ed049ec931bb1000948c12698e6c5484Stephen Hines    }                                               \
486e9e89d1ed049ec931bb1000948c12698e6c5484Stephen Hines  } while (0)
496e9e89d1ed049ec931bb1000948c12698e6c5484Stephen Hines
506e9e89d1ed049ec931bb1000948c12698e6c5484Stephen Hines#endif  // __DISABLE_ASSERTS
516e9e89d1ed049ec931bb1000948c12698e6c5484Stephen Hines
526e9e89d1ed049ec931bb1000948c12698e6c5484Stephen Hines#endif  // _FRAMEWORKS_COMPILE_LIBBCC_INCLUDE_BCC_ASSERT_H_  NOLINT
53