Rev 1820 | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed
/* ========================================================================== *//* === Core/cholmod_error =================================================== *//* ========================================================================== *//* -----------------------------------------------------------------------------* CHOLMOD/Core Module. Version 0.6. Copyright (C) 2005, Univ. of Florida.* Author: Timothy A. Davis* The CHOLMOD/Core Module is licensed under Version 2.1 of the GNU* Lesser General Public License. See lesser.txt for a text of the license.* CHOLMOD is also available under other licenses; contact authors for details.* http://www.cise.ufl.edu/research/sparse* -------------------------------------------------------------------------- *//* CHOLMOD error-handling routine. */#include "cholmod_core.h"#include "cholmod_internal.h"/* ========================================================================== *//* ==== cholmod_error ======================================================= *//* ========================================================================== *//* An error has occurred. Set the status, optionally print an error message,* and call the user error-handling routine (if it exists). If* Common->try_catch is TRUE, then CHOLMOD is inside a try/catch block.* The status is set, but no message is printed and the user error handler* is not called. This is not (yet) an error, since CHOLMOD may recover.** In the current version, this try/catch mechanism is used internally only in* cholmod_analyze, which tries multiple ordering methods and picks the best* one. If one or more ordering method fails, it keeps going. Only one* ordering needs to succeed for cholmod_analyze to succeed.*/int CHOLMOD(error)(/* ---- input ---- */int status, /* error status */char *file, /* name of source code file where error occured */int line, /* line number in source code file where error occured*/char *message, /* error message *//* --------------- */cholmod_common *Common){RETURN_IF_NULL_COMMON (FALSE) ;Common->status = status ;if (!(Common->try_catch)){#ifndef NPRINT/* print a warning or error message */if (Common->print_function != NULL){if (status > 0 && Common->print > 1){(Common->print_function) ("CHOLMOD warning: %s\n", message) ;fflush (stdout) ;fflush (stderr) ;}else if (Common->print > 0){(Common->print_function) ("CHOLMOD error: %s\n", message) ;fflush (stdout) ;fflush (stderr) ;}}#endif/* call the user error handler, if it exists */if (Common->error_handler != NULL){Common->error_handler (status, file, line, message) ;}}return (TRUE) ;}