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
34cf5afcb229806de1b62dee5a7cc0c7ba6a69f482David Gross#ifndef LOG_TAG
35cf5afcb229806de1b62dee5a7cc0c7ba6a69f482David Gross#   define LOG_TAG "bcc"
36cf5afcb229806de1b62dee5a7cc0c7ba6a69f482David Gross#   include <log/log.h>
37cf5afcb229806de1b62dee5a7cc0c7ba6a69f482David Gross#endif
386e9e89d1ed049ec931bb1000948c12698e6c5484Stephen Hines
396e9e89d1ed049ec931bb1000948c12698e6c5484Stephen Hines#define __ABORT_ON_FAILURES 1
406e9e89d1ed049ec931bb1000948c12698e6c5484Stephen Hines
416e9e89d1ed049ec931bb1000948c12698e6c5484Stephen Hines#define bccAssert(v)                                \
426e9e89d1ed049ec931bb1000948c12698e6c5484Stephen Hines  do {                                              \
436e9e89d1ed049ec931bb1000948c12698e6c5484Stephen Hines    if (!(v)) {                                     \
446e9e89d1ed049ec931bb1000948c12698e6c5484Stephen Hines      ALOGE("bccAssert failed at %s:%d - '%s'\n",   \
456e9e89d1ed049ec931bb1000948c12698e6c5484Stephen Hines          __FILE__, __LINE__, #v);                  \
466e9e89d1ed049ec931bb1000948c12698e6c5484Stephen Hines      if (__ABORT_ON_FAILURES) {                    \
476e9e89d1ed049ec931bb1000948c12698e6c5484Stephen Hines        abort();                                    \
486e9e89d1ed049ec931bb1000948c12698e6c5484Stephen Hines      }                                             \
496e9e89d1ed049ec931bb1000948c12698e6c5484Stephen Hines    }                                               \
506e9e89d1ed049ec931bb1000948c12698e6c5484Stephen Hines  } while (0)
516e9e89d1ed049ec931bb1000948c12698e6c5484Stephen Hines
526e9e89d1ed049ec931bb1000948c12698e6c5484Stephen Hines#endif  // __DISABLE_ASSERTS
536e9e89d1ed049ec931bb1000948c12698e6c5484Stephen Hines
546e9e89d1ed049ec931bb1000948c12698e6c5484Stephen Hines#endif  // _FRAMEWORKS_COMPILE_LIBBCC_INCLUDE_BCC_ASSERT_H_  NOLINT
55