Files
MaxScale/maxutils/maxbase/include/maxbase/assert.h
Niclas Antti c447e5cf15 Uncrustify maxscale
See script directory for method. The script to run in the top level
MaxScale directory is called maxscale-uncrustify.sh, which uses
another script, list-src, from the same directory (so you need to set
your PATH). The uncrustify version was 0.66.
2018-09-09 22:26:19 +03:00

62 lines
1.8 KiB
C

/*
* Copyright (c) 2018 MariaDB Corporation Ab
*
* Use of this software is governed by the Business Source License included
* in the LICENSE.TXT file and at www.mariadb.com/bsl11.
*
* Change Date: 2022-01-01
*
* On the date above, in accordance with the Business Source License, use
* of this software will be governed by version 2 or later of the General
* Public License.
*/
#pragma once
#include <maxbase/cdefs.h>
#include <signal.h>
#include <stdio.h>
#include <stdlib.h>
#include <maxbase/log.h>
MXB_BEGIN_DECLS
// TODO: Provide an MXB_DEBUG with the same meaning.
#if defined (SS_DEBUG)
#define mxb_assert(exp) \
do {if (!(exp)) { \
const char* debug_expr = #exp; /** The MXB_ERROR marco doesn't seem to like stringification
* */ \
MXB_ERROR("debug assert at %s:%d failed: %s\n", (char*)__FILE__, __LINE__, debug_expr); \
fprintf(stderr, "debug assert at %s:%d failed: %s\n", (char*)__FILE__, __LINE__, debug_expr); \
raise(SIGABRT);}} while (false)
#define mxb_assert_message(exp, message) \
do {if (!(exp)) { \
const char* debug_expr = #exp; \
MXB_ERROR("debug assert at %s:%d failed: %s (%s)\n", \
(char*)__FILE__, \
__LINE__, \
message, \
debug_expr); \
fprintf(stderr, \
"debug assert at %s:%d failed: %s (%s)\n", \
(char*)__FILE__, \
__LINE__, \
message, \
debug_expr); \
raise(SIGABRT);}} while (false)
#define MXB_AT_DEBUG(exp) exp
#else /* SS_DEBUG */
#define mxb_assert(exp)
#define mxb_assert_message(exp, message)
#define MXB_AT_DEBUG(exp)
#endif /* SS_DEBUG */
MXB_END_DECLS