55 lines
1.6 KiB
C
55 lines
1.6 KiB
C
#ifndef LOCATION_LBS_CONTEXTHUB_NANOAPPS_UTIL_NANO_ASSERT_H_
|
|
#define LOCATION_LBS_CONTEXTHUB_NANOAPPS_UTIL_NANO_ASSERT_H_
|
|
|
|
#ifndef GOOGLE3
|
|
|
|
// For external nanoapps (__NANOHUB__ defined), use SRC_FILENAME provided
|
|
// by the build system, which has the directory stripped. But allow the
|
|
// full filename for OS builds, where ASSERT should only be used for local
|
|
// development.
|
|
#if !defined(SRC_FILENAME) && defined(_OS_BUILD_)
|
|
#define SRC_FILENAME __FILENAME__
|
|
#endif
|
|
|
|
#ifdef NANOHUB_NON_CHRE_API
|
|
#include <syscallDo.h>
|
|
#define ASSERT_LOG_FUNC(fmt, ...) eOsLog(LOG_ERROR, fmt, ##__VA_ARGS__)
|
|
#else
|
|
#include <chre.h>
|
|
#define ASSERT_LOG_FUNC(fmt, ...) chreLog(LOG_ERROR, fmt, ##__VA_ARGS__)
|
|
#endif
|
|
|
|
// Note that this just logs and doesn't actually stop execution on Nanohub
|
|
#define ASSERT_IMPL(x) do { \
|
|
if (!(x)) { \
|
|
ASSERT_LOG_FUNC("Assertion: %s:%d\n", SRC_FILENAME, __LINE__); \
|
|
} \
|
|
} while (0)
|
|
|
|
#else // Off-target testing, e.g. Google3
|
|
|
|
#define NANO_ASSERT_ENABLED
|
|
#include <assert.h>
|
|
#define ASSERT_IMPL(x) assert(x)
|
|
|
|
#endif // GOOGLE3
|
|
|
|
#ifndef ASSERT
|
|
#ifdef NANO_ASSERT_ENABLED
|
|
#define ASSERT(x) ASSERT_IMPL(x)
|
|
#else
|
|
#define ASSERT(x) ((void)(x))
|
|
#endif // NANO_ASSERT_ENABLED
|
|
#endif // ASSERT
|
|
|
|
// Use NULL when compiling for C and nullptr for C++.
|
|
#ifdef __cplusplus
|
|
#define ASSERT_NOT_NULL(ptr) ASSERT((ptr) != nullptr)
|
|
#else
|
|
#define ASSERT_NOT_NULL(ptr) ASSERT((ptr) != NULL)
|
|
#endif
|
|
|
|
#define UNUSED(x) ((void)(sizeof(x)))
|
|
|
|
#endif // LOCATION_LBS_CONTEXTHUB_NANOAPPS_UTIL_NANO_ASSERT_H_
|