/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */
/*
 *  (C) 2015 by Argonne National Laboratory.
 *      See COPYRIGHT in top-level directory.
 */


#if !defined(MPL_BT_H_INCLUDED)
#define MPL_BT_H_INCLUDED

#include "mplconfig.h"
#if defined(__cplusplus)
extern "C" {
#endif

#if !MPL_HAVE_DECL_BACKTRACE_CREATE_STATE
struct backtrace_state;
typedef void (*backtrace_error_callback)(void *data, const char *msg,
                                         int errnum);

extern struct backtrace_state *backtrace_create_state(
        const char *filename, int threaded,
        backtrace_error_callback error_callback, void *data);
#endif
#if !MPL_HAVE_DECL_BACKTRACE_PRINT
extern void backtrace_print(struct backtrace_state *state, int skip, FILE *);
#endif

#define MPL_BACKTRACE_BUFFER_LEN 1024
#define MPL_MAX_TRACE_DEPTH 32
void MPL_backtrace_show(FILE *output);

#if defined(__cplusplus)

}
#endif

#endif  /* !defined(MPL_BT_H_INCLUDED) */
