/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */
/*
* (C) 2008 by Argonne National Laboratory.
* See COPYRIGHT in top-level directory.
*/
#ifndef OPA_UTIL_H_INCLUDED
#define OPA_UTIL_H_INCLUDED
#define OPA_QUOTE(x_) OPA_QUOTE2(x_)
#define OPA_QUOTE2(x_) #x_
#if defined(OPA_HAVE_GCC_ATTRIBUTE)
#define OPA_ATTRIBUTE(x_) __attribute__ (x_)
#else
#define OPA_ATTRIBUTE(x_)
#endif
/* FIXME this just needs a total rework in general with an OPA_NDEBUG or similar. */
#define OPA_assert(expr_) do {} while (0)
#define OPA_assertp(expr_) do { if (!(expr_)) ++((int *)NULL) } while (0) /* SEGV intentionally */
/* A compile-time assertion macro. It should cause a compilation error if (expr_) is false. */
#define OPA_COMPILE_TIME_ASSERT(expr_) \
do { switch(0) { case 0: case (expr_): default: break; } } while (0)
#endif /* OPA_UTIL_H_INCLUDED */