/*BHEADER********************************************************************** * Copyright (c) 2008, Lawrence Livermore National Security, LLC. * Produced at the Lawrence Livermore National Laboratory. * This file is part of HYPRE. See file COPYRIGHT for details. * * HYPRE is free software; you can redistribute it and/or modify it under the * terms of the GNU Lesser General Public License (as published by the Free * Software Foundation) version 2.1 dated February 1999. * * $Revision: 2.4 $ ***********************************************************************EHEADER*/ #ifndef hypre_ERROR_HEADER #define hypre_ERROR_HEADER /*-------------------------------------------------------------------------- * HYPRE error codes *--------------------------------------------------------------------------*/ #define HYPRE_ERROR_GENERIC 1 /* generic error */ #define HYPRE_ERROR_MEMORY 2 /* unable to allocate memory */ #define HYPRE_ERROR_ARG 4 /* argument error */ /* bits 4-8 are reserved for the index of the argument error */ #define HYPRE_ERROR_CONV 256 /* method did not converge as expected */ /*-------------------------------------------------------------------------- * Global variable used in hypre error checking *--------------------------------------------------------------------------*/ extern int hypre__global_error; #define hypre_error_flag hypre__global_error /*-------------------------------------------------------------------------- * HYPRE error macros *--------------------------------------------------------------------------*/ void hypre_error_handler(char *filename, int line, int ierr); #define hypre_error(IERR) hypre_error_handler(__FILE__, __LINE__, IERR) #define hypre_error_in_arg(IARG) hypre_error(HYPRE_ERROR_ARG | IARG<<3) #ifdef NDEBUG #define hypre_assert(EX) #else #define hypre_assert(EX) if (!(EX)) {fprintf(stderr,"hypre_assert failed: %s\n", #EX); hypre_error(1);} #endif #endif