diff options
author | tradke <tradke@17b73243-c579-4c4c-a9d2-2d5706c11dac> | 2001-04-20 21:48:02 +0000 |
---|---|---|
committer | tradke <tradke@17b73243-c579-4c4c-a9d2-2d5706c11dac> | 2001-04-20 21:48:02 +0000 |
commit | 9be4bce5946ab62b1bdd330463d1de907cf5c598 (patch) | |
tree | dc8c9c539029402e5625f093321dc17f61fbe158 | |
parent | 75cf8623bc47439ed7dad0ad9fed659cc50a0fbd (diff) |
Report error/warning level changes with an info message rather than a warning.
This fixes the problem where the code terminated immediately after decreasing
the error level to 1.
Also fixed compiler warnings, formatted the code, completed grdoc.
git-svn-id: http://svn.cactuscode.org/flesh/trunk@2131 17b73243-c579-4c4c-a9d2-2d5706c11dac
-rw-r--r-- | src/main/WarnLevel.c | 1380 |
1 files changed, 614 insertions, 766 deletions
diff --git a/src/main/WarnLevel.c b/src/main/WarnLevel.c index 229fd876..625bde03 100644 --- a/src/main/WarnLevel.c +++ b/src/main/WarnLevel.c @@ -2,10 +2,10 @@ @file WarnLevel.c @date Wed Feb 17 00:30:09 1999 @author Tom Goodale - @desc - Routines to deal with warning levels. - @enddesc - @version $Header$ + @desc + Routines to deal with warning levels. + @enddesc + @version $Id$ @@*/ #include "cctk_Config.h" @@ -17,162 +17,220 @@ #include "StoreKeyedData.h" -#include "cctk_Misc.h" -#include "cctk_WarnLevel.h" -#include "cctk_FortranString.h" -#include "cctk_Parameter.h" #include "cctk_Comm.h" -#include "cctk_Flesh.h" +#include "cctk_Parameter.h" +#include "cctk_FortranString.h" +#include "cctk_WarnLevel.h" +#include "cctki_WarnLevel.h" static char *rcsid = "$Header$"; - CCTK_FILEVERSION(main_WarnLevel_c) -/******************************************************************** - ********************* Local Data Types *********************** - ********************************************************************/ - -/******************************************************************** - ********************* Local Routine Prototypes ********************* - ********************************************************************/ /******************************************************************** - ********************* Other Routine Prototypes ********************* + ********************* External Routines ********************** ********************************************************************/ +/* prototypes for external C routines are declared in headers + cctk_WarnLevel.h and cctki_WarnLevel.h + here only follow the fortran wrapper prototypes */ +void CCTK_FCALL CCTK_FNAME (CCTK_Info) + (TWO_FORTSTRINGS_ARGS); +void CCTK_FCALL CCTK_FNAME (CCTK_Warn) + (const int *level, + const int *line, + THREE_FORTSTRINGS_ARGS); +void CCTK_FCALL CCTK_FNAME (CCTK_ParamWarn) + (TWO_FORTSTRINGS_ARGS); +int CCTK_FCALL CCTK_FNAME (CCTK_MessageFormat) + (ONE_FORTSTRING_ARG); +void CCTK_FCALL CCTK_FNAME (CCTKi_ExpectError) + (const int *in, + const int *err, + const int *warnonerr, + const int *line, + THREE_FORTSTRINGS_ARGS); +void CCTK_FCALL CCTK_FNAME (CCTKi_ExpectOK) + (const int *in, + const int *ok, + const int *warnonerr, + const int *line, + THREE_FORTSTRINGS_ARGS); +void CCTK_FCALL CCTK_FNAME (CCTKi_NotYetImplemented) + (ONE_FORTSTRING_ARG); -int CactusDefaultMyProc(void *GH); /******************************************************************** - ********************* Local Data ***************************** + ********************* Static Data ***************************** ********************************************************************/ /* Store the parameter checking level */ - static int parameter_level = CCTK_PARAMETER_NORMAL; - /* Store the number of parameter errors */ - static int param_errors = 0; - /* Store the warning level - warnings of this severity or worse will * be reported */ - static int warning_level = 1; /* Store the error level - warnings of this severity or worse will stop - * the code. + * the code. */ - -static int error_level = 0; - +static int error_level = 0; /* Store a list of format strings */ - static int n_formats = 0; static pKeyedData *formatlist = NULL; -/******************************************************************** - ********************* External Routines ********************** - ********************************************************************/ +/*@@ + @routine CCTK_Info + @date Tue Mar 30 1999 + @author Gabrielle Allen + @desc + Print an information message to stdout + @enddesc + + @var thorn + @vdesc Name of originating thorn + @vtype const char * + @vio in + @endvar + @var message + @vdesc the warning message to output + @vtype const char * + @vio in + @endvar + + @returntype int + @returndesc + 0 - success + @endreturndesc +@@*/ +int CCTK_Info (const char *thorn, const char *message) +{ + fprintf (stdout, "INFO (%s): %s\n", thorn, message); + + return (0); +} + +void CCTK_FCALL CCTK_FNAME (CCTK_Info) + (TWO_FORTSTRINGS_ARGS) +{ + TWO_FORTSTRINGS_CREATE (thorn, message) + CCTK_Info (thorn, message); + free (thorn); + free (message); +} + /*@@ - @routine CCTK_Warn - @date Wed Feb 17 00:45:07 1999 - @author Tom Goodale - @desc - Warn the user of something if the warning level is suitable. - @enddesc - @calls - @calledby - @history - - @endhistory - @var level - @vdesc The warning level - @vtype int - @vio in - @vcomment - - @endvar - @var line - @vdesc Line number of warning in originating file - @vtype int - @vio in - @vcomment - - @endvar - @var file - @vdesc Name of originating file - @vtype const char * - @vio in - @vcomment - - @endvar - @var thorn - @vdesc Name of originating thorn - @vtype const char * - @vio in - @vcomment - - @endvar - @var message - @vdesc Warning message - @vtype const char * - @vio in - @vcomment - - @endvar + @routine CCTK_VInfo + @date Mon Apr 10 + @author Thomas Radke + @desc + Info output routine with variable argument list + @enddesc + + @var thorn + @vdesc Name of originating thorn + @vtype const char * + @vio in + @endvar + @var format + @vdesc format string for message + @vtype const char * + @vio in + @endvar + @var ... + @vdesc variable argument list for format string + @vtype multiple arguments + @vio in + @endvar @returntype int @returndesc - 0 - success + 0 - success @endreturndesc @@*/ -int CCTK_Warn(int level, int line, const char *file, const char *thorn, const char *message) +int CCTK_VInfo (const char *thorn, const char *format, ...) { - int param_type; - int cctk_full_warnings; + va_list ap; - if(level <= warning_level) - { - cctk_full_warnings = *((CCTK_INT *)CCTK_ParameterGet("cctk_full_warnings","Cactus",¶m_type)); - if (cctk_full_warnings) - { - fprintf(stderr, "WARNING level %d in thorn %s \n (line %d of %s): \n", - level, thorn, line, file); - fprintf(stderr, " -> %s\n",message); - fflush(stderr); - } - else - { - fprintf(stderr, "WARNING[%d] (%s): %s\n", level, thorn, message); - fflush(stderr); - } - } + va_start (ap, format); - if(level <= error_level) - { - CCTK_Abort(NULL,0); - } + fprintf (stdout, "INFO (%s): ", thorn); + vfprintf (stdout, format, ap); + fprintf (stdout, "\n"); + fflush (stdout); - return 0; + va_end (ap); + return (0); } -void CCTK_FCALL CCTK_FNAME(CCTK_Warn) - (int *level, int *line, THREE_FORTSTRINGS_ARGS) + +/*@@ + @routine CCTK_Warn + @date Wed Feb 17 00:45:07 1999 + @author Tom Goodale + @desc + Warn the user of something if the warning level is suitable. + @enddesc + @calls CCTK_VWarn + + @var level + @vdesc The warning level + @vtype int + @vio in + @endvar + @var line + @vdesc Line number of warning in originating file + @vtype int + @vio in + @endvar + @var file + @vdesc Name of originating file + @vtype const char * + @vio in + @endvar + @var thorn + @vdesc Name of originating thorn + @vtype const char * + @vio in + @endvar + @var message + @vdesc warning message to output to stderr + @vtype const char * + @vio in + @endvar + + @returntype int + @returndesc + return code of @seeroutine CCTK_VWarn + @endreturndesc +@@*/ +int CCTK_Warn (int level, + int line, + const char *file, + const char *thorn, + const char *message) { - THREE_FORTSTRINGS_CREATE(file,thorn,message) + return (CCTK_VWarn (level, line, file, thorn, "%s", message)); +} - CCTK_Warn(*level,*line,file,thorn,message); - free(thorn); - free(message); - free(file); +void CCTK_FCALL CCTK_FNAME (CCTK_Warn) + (const int *level, + const int *line, + THREE_FORTSTRINGS_ARGS) +{ + THREE_FORTSTRINGS_CREATE (file, thorn, message) + CCTK_Warn (*level, *line, file, thorn, message); + free (thorn); + free (message); + free (file); } @@ -180,808 +238,639 @@ void CCTK_FCALL CCTK_FNAME(CCTK_Warn) @routine CCTK_VWarn @date Sun Nov 14 00:23:29 1999 @author Tom Goodale - @desc - Warning routine with variable argument list - @enddesc - @calls - @calledby - @history - - @endhistory - @var level - @vdesc The warning level - @vtype int - @vio in - @vcomment - - @endvar - @var line - @vdesc Line number of warning in originating file - @vtype int - @vio in - @vcomment - - @endvar - @var file - @vdesc Name of originating file - @vtype const char * - @vio in - @vcomment - - @endvar - @var thorn - @vdesc Name of originating thorn - @vtype const char * - @vio in - @vcomment - - @endvar - @var format - @vdesc Format string for following arguments - @vtype const char * - @vio in - @vcomment - - @endvar - @var ... - @vdesc arguments for format string - @vtype multiple arguments - @vio in - @vcomment - - @endvar + @desc + Warning routine with variable argument list + @enddesc + @calls CCTK_ParameterGet + + @var level + @vdesc The warning level + @vtype int + @vio in + @endvar + @var line + @vdesc Line number of warning in originating file + @vtype int + @vio in + @endvar + @var file + @vdesc Name of originating file + @vtype const char * + @vio in + @endvar + @var thorn + @vdesc Name of originating thorn + @vtype const char * + @vio in + @endvar + @var format + @vdesc Format string for following arguments + @vtype const char * + @vio in + @endvar + @var ... + @vdesc variable argument list for format string + @vtype multiple arguments + @vio in + @endvar @returntype int @returndesc - 0 - success + 0 - success @endreturndesc @@*/ - -int CCTK_VWarn(int level, int line, const char *file, const char *thorn, const char *format, ...) +int CCTK_VWarn (int level, + int line, + const char *file, + const char *thorn, + const char *format, + ...) { int cctk_full_warnings; int param_type; + va_list ap; - if(level <= warning_level) + if (level <= warning_level) { + va_start (ap, format); - va_start(ap, format); - - cctk_full_warnings = *((CCTK_INT *)CCTK_ParameterGet("cctk_full_warnings","Cactus",¶m_type)); - + cctk_full_warnings = *((CCTK_INT *) + CCTK_ParameterGet ("cctk_full_warnings", + "Cactus", ¶m_type)); if (cctk_full_warnings) { - fprintf(stderr, "WARNING level %d in thorn %s \n (line %d of %s): \n", - level, thorn, line, file); - fprintf(stderr, " -> "); - vfprintf(stderr, format, ap); - fprintf(stderr, "\n"); - fflush(stderr); + fprintf (stderr, "WARNING level %d in thorn %s\n" + " (line %d of %s): \n" + " -> ", + level, thorn, line, file); } else { - fprintf(stderr, "WARNING[%d] (%s): ", level, thorn); - vfprintf(stderr, format, ap); - fprintf(stderr, "\n"); - fflush(stderr); + fprintf (stderr, "WARNING[%d] (%s): ", level, thorn); } + vfprintf (stderr, format, ap); + fprintf (stderr, "\n"); + fflush (stderr); - va_end(ap); + va_end (ap); } - if(level <= error_level) + if (level <= error_level) { - CCTK_Abort(NULL,0); + CCTK_Abort (NULL, 0); } - return 0; -} + return (0); +} + /*@@ @routine CCTK_ParameterLevel @date Wed Feb 21 2001 @author Gabrielle Allen - @desc - Returns the parameter checking level - @enddesc - @calls - @calledby - @history - - @endhistory - + @desc + Returns the parameter checking level + @enddesc + + @returntype int + @returndesc + parameter checking level now being used + @endreturndesc +@@*/ +int CCTK_ParameterLevel (void) +{ + return (parameter_level); +} + + +/*@@ + @routine CCTK_ParamWarn + @date Wed Feb 17 00:45:07 1999 + @author Tom Goodale + @desc + Warn the user if a parameter error is found + @enddesc + @calls CCTK_ParameterGet + + @var thorn + @vdesc Name of originating thorn + @vtype const char * + @vio in + @endvar + @var message + @vdesc Warning message to output + @vtype const char * + @vio in + @endvar + + @returntype int + @returndesc + 0 - success + @endreturndesc +@@*/ +int CCTK_ParamWarn (const char *thorn, const char *message) +{ + int cctk_strong_param_check; + int param_type; + + + cctk_strong_param_check = *((CCTK_INT *) + CCTK_ParameterGet ("cctk_strong_param_check", + "Cactus", ¶m_type)); + fprintf (stderr, "PARAM %s (%s): %s\n", + cctk_strong_param_check ? "ERROR" : "WARNING", thorn, message); + fflush (stderr); + param_errors++; + + return (0); +} + +void CCTK_FCALL CCTK_FNAME (CCTK_ParamWarn) + (TWO_FORTSTRINGS_ARGS) +{ + TWO_FORTSTRINGS_CREATE (thorn, message) + CCTK_ParamWarn (thorn, message); + free (thorn); + free (message); +} + + +/*@@ + @routine CCTK_MessageFormat + @date Mon Jul 26 19:51:26 1999 + @author Tom Goodale + @desc + Stores a format for messages from Fortran. + @enddesc + @calls StoreKeyedData + + @var format + @vdesc Format string + @vtype Fortran string macro + @vio in + @endvar + @returntype int @returndesc - parameter checking level now being used + number of previous formats @endreturndesc @@*/ -int CCTK_ParameterLevel(void) +int CCTK_FCALL CCTK_FNAME (CCTK_MessageFormat) + (ONE_FORTSTRING_ARG) { - return parameter_level; + ONE_FORTSTRING_CREATE (format) + + StoreKeyedData (&formatlist, n_formats , format); + + return (n_formats++); } + /******************************************************************** - ********************* Local Routines ************************* + ********************* CCTKi Routines ************************* ********************************************************************/ /*@@ @routine CCTKi_SetParameterLevel @date Wed Feb 21 2001 @author Gabrielle Allen - @desc - Sets the parameter checking level - @enddesc - @calls - @calledby - @history - - @endhistory - @var level - @vdesc level to set - @vtype int - @vio in - @vcomment - - @endvar + @desc + Sets the parameter checking level + @enddesc + @calls CCTK_VWarn + + @var level + @vdesc level to set + @vtype int + @vio in + @endvar @returntype int @returndesc - parameter checking level now being used + parameter checking level now being used @endreturndesc @@*/ -int CCTKi_SetParameterLevel(int level) +int CCTKi_SetParameterLevel (int level) { - if (level == CCTK_PARAMETER_STRICT || level == CCTK_PARAMETER_NORMAL - || level == CCTK_PARAMETER_RELAXED) + if (level == CCTK_PARAMETER_STRICT || + level == CCTK_PARAMETER_NORMAL || + level == CCTK_PARAMETER_RELAXED) { parameter_level = level; } else { - CCTK_VWarn(1,__LINE__,__FILE__,"Cactus","CCTKi_SetParameterLevel: " - "Parameter checking level %d not recognised, level unchanged", - level); + CCTK_VWarn (1, __LINE__, __FILE__, "Cactus", "CCTKi_SetParameterLevel: " + "Parameter checking level %d not recognised, level unchanged", + level); } - return parameter_level; + return (parameter_level); } + /*@@ @routine CCTKi_SetWarnLevel @date Wed Feb 17 00:42:16 1999 @author Tom Goodale - @desc - Sets the warning level - @enddesc - @calls - @calledby - @history - - @endhistory - @var level - @vdesc level to set - @vtype int - @vio in - @vcomment - - @endvar + @desc + Sets the warning level + @enddesc + @calls CCTK_VWarn + CCTK_VInfo + + @var level + @vdesc warning level to set + @vtype int + @vio in + @endvar @returntype int @returndesc - 1 - increased warning level - 0 - warning level unchanged - -1 - decreased warning level + 1 - increased warning level <BR> + 0 - warning level unchanged <BR> + -1 - decreased warning level @endreturndesc @@*/ -int CCTKi_SetWarnLevel(int level) +int CCTKi_SetWarnLevel (int level) { int retval; - int old_level; - char warning_message[1001]; - - old_level = warning_level; - warning_level = level; - if(level > old_level) - { - sprintf(warning_message, "Increasing warning level from %d to %d\n", old_level, level); - CCTK_Warn(1, __LINE__,__FILE__,"Cactus",warning_message); - retval = 1; - } - else if(level == old_level) + if (warning_level != level) { - sprintf(warning_message, "Warning level is already %d\n", level); - CCTK_Warn(1, __LINE__,__FILE__,"Cactus",warning_message); - retval = 0; + retval = level > warning_level ? +1 : -1; + CCTK_VInfo ("Cactus", "%s warning level from %d to %d", + retval > 0 ? "Increasing" : "Decreasing", error_level, level); + warning_level = level; } else { - sprintf(warning_message, "Decreasing warning level from %d to %d\n", old_level, level); - CCTK_Warn(1,__LINE__,__FILE__,"Cactus", warning_message); - retval = -1; + CCTK_VWarn (3, __LINE__, __FILE__, "Cactus", + "Warning level is already %d", level); + retval = 0; } /* FIXME Is this right? Gab. */ - if(warning_level < error_level) + if (warning_level < error_level) { error_level = warning_level; - sprintf(warning_message, "Decreasing error level to warning_level\n"); - CCTK_Warn(2, __LINE__,__FILE__,"Cactus",warning_message); + CCTK_VWarn (2, __LINE__, __FILE__, "Cactus", + "Decreasing error level to new warning level", warning_level); } - return retval; + return (retval); } /*@@ - @routine CCTKi_ExpectError - @date Thanksgiving 99 - @author Gerd Lanfermann - @desc - Used by CCTKi_EXPCTERR macro (src/include/cctk.h) - allows testing for error return value, will return a - warning statement if error is found. - @enddesc - @calls - @calledby - @history - - @endhistory - @var in - @vdesc FIXME - @vtype int - @vio in - @vcomment - - @endvar - @var err - @vdesc FIXME - @vtype int - @vio in - @vcomment - - @endvar - @var warnonerr - @vdesc The warning level - @vtype int - @vio in - @vcomment - - @endvar - @var line - @vdesc Line number of warning in originating file - @vtype int - @vio in - @vcomment - - @endvar - @var file - @vdesc Name of originating file - @vtype const char * - @vio in - @vcomment - - @endvar - @var thorn - @vdesc Name of originating thorn - @vtype const char * - @vio in - @vcomment - - @endvar - @var message - @vdesc Warning message - @vtype const char * - @vio in - @vcomment - - @endvar -@@*/ - -void CCTKi_ExpectError(int in, int err, int warnonerr, int line, - const char *file, const char *thorn, - const char *message) -{ - if (in==err) - { - CCTK_Warn(warnonerr, line, file, thorn, message); - } -} - - -void CCTK_FCALL CCTK_FNAME(CCTKi_ExpectError) - (int *in, int *err, int *warnonerr, int *line, THREE_FORTSTRINGS_ARGS) -{ - THREE_FORTSTRINGS_CREATE(file,thorn,message) - - CCTKi_ExpectError(*in, *err, *warnonerr, *line, - file,thorn,message); - free(file); - free(thorn); - free(message); -} - - -/*@@ - @routine CCTKi_ExpectOK - @date Thanksgiving 99 - @author Gerd Lanfermann - @desc - Used by CCTKi_EXPCTOK macro (src/include/cctk.h) - allows testing for success return value, will return a - warning statement otherwise - @enddesc - @calls - @calledby CCTKi_EXPCTOK - @history - - @endhistory - @var in - @vdesc FIXME - @vtype int - @vio in - @vcomment - - @endvar - @var ok - @vdesc FIXME - @vtype int - @vio in - @vcomment - - @endvar - @var warnonerr - @vdesc The warning level - @vtype int - @vio in - @vcomment - - @endvar - @var line - @vdesc Line number of warning in originating file - @vtype int - @vio in - @vcomment - - @endvar - @var file - @vdesc Name of originating file - @vtype const char * - @vio in - @vcomment - - @endvar - @var thorn - @vdesc Name of originating thorn - @vtype const char * - @vio in - @vcomment - - @endvar - @var message - @vdesc Warning message - @vtype const char * - @vio in - @vcomment - - @endvar -@@*/ - -void CCTKi_ExpectOK(int in, int ok, int warnonerr, int line, - const char *file, const char *thorn, - const char *message) -{ - if (in != ok) - { - CCTK_Warn(warnonerr, line, file, thorn, message); - } -} - -void CCTK_FCALL CCTK_FNAME(CCTKi_ExpectOK) - (int *in, int *ok, int *warnonerr, int *line, THREE_FORTSTRINGS_ARGS) -{ - THREE_FORTSTRINGS_CREATE(file,thorn,message) - - CCTKi_ExpectOK(*in, *ok, *warnonerr, *line, - file,thorn,message); - - free(file); - free(thorn); - free(message); -} - - - -/*@@ - @routine CCTK_ParamWarn - @date Wed Feb 17 00:45:07 1999 + @routine CCTKi_SetErrorLevel + @date Wed Feb 17 00:48:02 1999 @author Tom Goodale - @desc - Warn the user if a parameter error is found - @enddesc - @calls - @calledby - @history - - @endhistory - @var thorn - @vdesc Name of originating thorn - @vtype const char * - @vio in - @vcomment - - @endvar - @var message - @vdesc Warning message - @vtype const char * - @vio in - @vcomment - - @endvar + @desc + Sets the error level + @enddesc + @calls CCTK_VWarn + CCTK_VInfo + + @var level + @vdesc error level to set + @vtype int + @vio in + @endvar @returntype int @returndesc - 0 - success + 1 - increased error level <BR> + 0 - error level unchanged <BR> + -1 - decreased error level @endreturndesc @@*/ -int CCTK_ParamWarn(const char *thorn, const char *message) +int CCTKi_SetErrorLevel (int level) { - int cctk_strong_param_check; - int param_type; + int retval; - cctk_strong_param_check = *((CCTK_INT *)CCTK_ParameterGet("cctk_strong_param_check","Cactus",¶m_type)); - if(cctk_strong_param_check) + if (level <= warning_level) { - fprintf(stderr, "PARAM ERROR (%s): %s\n", thorn, message); - fflush(stderr); + if (error_level != level) + { + retval = level > error_level ? +1 : -1; + CCTK_VInfo ("Cactus", "%s error level from %d to %d", + retval > 0 ? "Increasing" : "Decreasing", error_level, level); + error_level = level; + } + else + { + CCTK_VWarn (3, __LINE__, __FILE__, "Cactus", + "Error level is already %d", level); + retval = 0; + } } else { - fprintf(stderr, "PARAM WARNING (%s): %s\n", thorn, message); - fflush(stderr); + CCTK_VWarn (1, __LINE__, __FILE__, "Cactus", + "Error level cannot be higher than current warning level %d", + warning_level); + retval = 0; } - param_errors++; - - return 0; + return (retval); } -void CCTK_FCALL CCTK_FNAME(CCTK_ParamWarn) - (TWO_FORTSTRINGS_ARGS) -{ - TWO_FORTSTRINGS_CREATE(thorn,message) - - CCTK_ParamWarn(thorn,message); - free(thorn); - free(message); -} - - /*@@ - @routine CCTK_Info - @date Tue Mar 30 1999 - @author Gabrielle Allen - @desc - Print information - @enddesc - @calls - @calledby - @history - - @endhistory - @var thorn - @vdesc Name of originating thorn - @vtype const char * - @vio in - @vcomment - - @endvar - @var message - @vdesc Warning message - @vtype const char * - @vio in - @vcomment - - @endvar - - @returntype int - @returndesc - 0 - success - @endreturndesc + @routine CCTKi_ExpectError + @date Thanksgiving 99 + @author Gerd Lanfermann + @desc + Used by CCTKi_EXPCTERR macro (src/include/cctk.h) + allows testing for error return value, will return a + warning statement if error is found. + @enddesc + @calls CCTK_Warn + + @var in + @vdesc real return value to check against + @vtype int + @vio in + @endvar + @var err + @vdesc expected return value for error condition + @vtype int + @vio in + @endvar + @var warnonerr + @vdesc the warning level to use for output + @vtype int + @vio in + @endvar + @var line + @vdesc Line number of warning in originating file + @vtype int + @vio in + @endvar + @var file + @vdesc Name of originating file + @vtype const char * + @vio in + @endvar + @var thorn + @vdesc Name of originating thorn + @vtype const char * + @vio in + @endvar + @var message + @vdesc Warning message to print + @vtype const char * + @vio in + @endvar @@*/ - -int CCTK_Info(const char *thorn, const char *message) +void CCTKi_ExpectError (int in, + int err, + int warnonerr, + int line, + const char *file, + const char *thorn, + const char *message) { - fprintf(stdout, "INFO (%s): %s\n", thorn, message); - - return 0; + if (in == err) + { + CCTK_Warn (warnonerr, line, file, thorn, message); + } } -void CCTK_FCALL CCTK_FNAME(CCTK_Info) - (TWO_FORTSTRINGS_ARGS) +void CCTK_FCALL CCTK_FNAME (CCTKi_ExpectError) + (const int *in, + const int *err, + const int *warnonerr, + const int *line, + THREE_FORTSTRINGS_ARGS) { - TWO_FORTSTRINGS_CREATE(thorn,message) - - - CCTK_Info(thorn,message); - free(thorn); - free(message); + THREE_FORTSTRINGS_CREATE (file, thorn, message) + CCTKi_ExpectError (*in, *err, *warnonerr, *line, file, thorn, message); + free (file); + free (thorn); + free (message); } /*@@ - @routine CCTK_VInfo - @date Mon Apr 10 - @author Thomas Radke - @desc - Info routine with variable argument list - @enddesc - @calls - @calledby - @history - - @endhistory - @var thorn - @vdesc Name of originating thorn - @vtype const char * - @vio in - @vcomment - - @endvar - @var format - @vdesc format string for message - @vtype const char * - @vio in - @vcomment - - @endvar - @var ... - @vdesc arguments for format string - @vtype multiple arguments - @vio in - @vcomment - - @endvar - - @returntype int - @returndesc - 0 - success - @endreturndesc -@@*/ - -int CCTK_VInfo (const char *thorn, const char *format, ...) -{ - va_list ap; - - va_start(ap, format); - - fprintf(stdout, "INFO (%s): ", thorn); - vfprintf(stdout, format, ap); - fprintf(stdout, "\n"); - fflush(stdout); - - va_end(ap); - - return 0; -} - - -/*@@ - @routine CCTKi_SetErrorLevel - @date Wed Feb 17 00:48:02 1999 - @author Tom Goodale - @desc - Sets the error level - @enddesc - @calls - @calledby - @history - - @endhistory - @var level - @vdesc New level - @vtype int - @vio in - @vcomment - - @endvar - - @returntype int - @returndesc - 1 - increased error level - 0 - error error unchanged - -1 - decreased error level - @endreturndesc + @routine CCTKi_ExpectOK + @date Thanksgiving 99 + @author Gerd Lanfermann + @desc + Used by CCTKi_EXPCTOK macro (src/include/cctk.h) + allows testing for success return value, will return a + warning statement otherwise + @enddesc + @calls CCTK_Warn + + @var in + @vdesc real return value to check against + @vtype int + @vio in + @endvar + @var ok + @vdesc expected return value for success + @vtype int + @vio in + @endvar + @var warnonerr + @vdesc the warning level to use for output + @vtype int + @vio in + @endvar + @var line + @vdesc Line number of warning in originating file + @vtype int + @vio in + @endvar + @var file + @vdesc Name of originating file + @vtype const char * + @vio in + @endvar + @var thorn + @vdesc Name of originating thorn + @vtype const char * + @vio in + @endvar + @var message + @vdesc Warning message to print + @vtype const char * + @vio in + @endvar @@*/ -int CCTKi_SetErrorLevel(int level) +void CCTKi_ExpectOK (int in, + int ok, + int warnonerr, + int line, + const char *file, + const char *thorn, + const char *message) { - int retval; - int old_level; - char warning_message[1001]; - - old_level = error_level; - - if(level <= warning_level) + if (in != ok) { - error_level = level; - - if(level > old_level) - { - sprintf(warning_message, "Increasing error level from %d to %d\n", old_level, level); - CCTK_Warn(1, __LINE__,__FILE__,"Cactus",warning_message); - retval = 1; - } - else if(level == old_level) - { - sprintf(warning_message, "Error level is already %d\n", level); - CCTK_Warn(3, __LINE__,__FILE__,"Cactus",warning_message); - retval = 0; - } - else - { - sprintf(warning_message, "Decreasing error level from %d to %d\n", old_level, level); - CCTK_Warn(1,__LINE__,__FILE__,"Cactus", warning_message); - retval = -1; - } - } - else - { - sprintf(warning_message, "Error level cannot be higher than warning level\n"); - CCTK_Warn(1,__LINE__,__FILE__,"Cactus", warning_message); - retval = 0; + CCTK_Warn (warnonerr, line, file, thorn, message); } +} - return retval; +void CCTK_FCALL CCTK_FNAME (CCTKi_ExpectOK) + (const int *in, + const int *ok, + const int *warnonerr, + const int *line, + THREE_FORTSTRINGS_ARGS) +{ + THREE_FORTSTRINGS_CREATE (file, thorn, message) + CCTKi_ExpectOK (*in, *ok, *warnonerr, *line, file, thorn, message); + free (file); + free (thorn); + free (message); } + /*@@ @routine CCTKi_FinaliseParamWarn @date June 1999 @author Gabrielle Allen - @desc - Die if required after param check - @enddesc - @calls - @calledby - @history - - @endhistory - + @desc + Die if errors were encountered during param check + @enddesc + @calls CCTK_ParameterGet @@*/ - -void CCTKi_FinaliseParamWarn(void) +void CCTKi_FinaliseParamWarn (void) { - int param_type; int cctk_strong_param_check; + if (param_errors) { - - cctk_strong_param_check = *((CCTK_INT *)CCTK_ParameterGet("cctk_strong_param_check","Cactus",¶m_type)); - - if(cctk_strong_param_check) + cctk_strong_param_check = *((CCTK_INT *) + CCTK_ParameterGet ("cctk_strong_param_check", + "Cactus", ¶m_type)); + if (cctk_strong_param_check) { - fprintf(stderr,"\nFailed parameter check (%d errors)\n\n",param_errors); - fflush(stderr); - exit(99); + fprintf (stderr, "\nFailed parameter check (%d errors)\n\n", param_errors); + fflush (stderr); + exit (99); } else { if (param_errors==1) { - fprintf(stderr, "\nThere was 1 parameter warning\n\n"); + fprintf (stderr, "\nThere was 1 parameter warning\n\n"); } else { - fprintf(stderr, "\nThere were %d parameter warnings\n\n",param_errors); + fprintf (stderr, "\nThere were %d parameter warnings\n\n", param_errors); } - fflush(stderr); + fflush (stderr); } - } - } + /*@@ - @routine CCTK_MessageFormat - @date Mon Jul 26 19:51:26 1999 - @author Tom Goodale - @desc - Stores a format for messages from Fortran. - @enddesc - @calls - @calledby - @history - - @endhistory - @var ONE_FORTRSTRING_ARG - @vdesc Format string - @vtype Fortran string macro - @vio in - @vcomment - - @endvar + @routine CCTKi_NotYetImplemented + @date July 1999 + @author Gabrielle Allen + @desc + Report on features not yet added to code + @enddesc - @returntype int - @returndesc - number of previous formats - @endreturndesc + @var message + @vdesc message to be printed + @vtype const char * + @vio in + @endvar @@*/ -int CCTK_FCALL CCTK_FNAME(CCTK_MessageFormat) - (ONE_FORTSTRING_ARG) +void CCTKi_NotYetImplemented (const char *message) { - ONE_FORTSTRING_CREATE(format) - - StoreKeyedData(&formatlist, n_formats++ , (void *)format); +#if 0 + CCTK_VWarn (0, __LINE__, __FILE__, "Cactus", + "%s: this planned feature is not yet implemented in the code.\n" + "If you need this feature please contact the " + "Cactus maintainers.", message); +#endif + CCTK_VWarn (0, __LINE__, __FILE__, "Cactus", "%s: feature not implemented", + message); +} - return n_formats-1; +void CCTK_FCALL CCTK_FNAME (CCTKi_NotYetImplemented) + (ONE_FORTSTRING_ARG) +{ + ONE_FORTSTRING_CREATE (message) + CCTKi_NotYetImplemented (message); + free (message); } + +#if 0 /*@@ @routine CCTK_VINFO @date Wed Oct 4 21:03:08 2000 @author Tom Goodale - @desc + @desc Fortran version of CCTK_VInfo - @enddesc - @calls - @calledby - @history - - @endhistory + @enddesc + @calls + @calledby + @history + + @endhistory @var format_number @vdesc format string handle @vtype int @vio in - @vcomment - - @endvar + @vcomment + + @endvar @var ... @vdesc arguments for format string @vtype multiple arguments @vio in - @vcomment - - @endvar + @vcomment + + @endvar @returntype int @returndesc FIXME - UNFINISHED @endreturndesc @@*/ -void CCTK_FCALL CCTK_FNAME(CCTK_VInfo) - (int format_number, ...) +void CCTK_FCALL CCTK_FNAME (CCTK_VInfo) + (int format_number, + ...) { char *format_string; char *message; int message_length; int current_place; - - if(format_number < n_formats) + + if (format_number < n_formats) { - format_string = (char *)GetKeyedData(formatlist, format_number); + format_string = (char *)GetKeyedData (formatlist, format_number); /* Pick an arbitrary starting length for the message */ - message_length=5*strlen(format_string); + message_length=5*strlen (format_string); - message = (char *)malloc(message_length); + message = (char *)malloc (message_length); /* Loop through the format string */ - for(current_place=0; format_string; format_string++) + for (current_place=0; format_string; format_string++) { - if(*format_string != '%') + if (*format_string != '%') { message[current_place] = *format_string; current_place++; - if(current_place >= message_length) + if (current_place >= message_length) { - message = (char *)realloc(message, message_length*2); + message = (char *)realloc (message, message_length*2); message_length *=2; } } @@ -994,45 +883,4 @@ void CCTK_FCALL CCTK_FNAME(CCTK_VInfo) } } - -/*@@ - @routine CCTK_NotYetImplemented - @routine CCTKi_NotYetImplemented - @date July 1999 - @author Gabrielle Allen - @desc - Report on features not yet added to code - @enddesc - @calls - @calledby - @history - - @endhistory - @var message - @vdesc Message to be printed - @vtype const char * - @vio in - @vcomment - - @endvar - -@@*/ - -void CCTKi_NotYetImplemented(const char *message) -{ - - char *out = malloc((300+strlen(message))*sizeof(char)); - sprintf(out,"\n\n This planned feature is not yet implemented in the code.\n If you need this feature please contact the Cactus maintainers.\n %s",message); - CCTK_Warn(0,__LINE__,__FILE__,"Cactus","Feature not implemented"); - free(out); - -} - -void CCTK_FCALL CCTK_FNAME(CCTKi_NotYetImplemented) - (ONE_FORTSTRING_ARG) -{ - ONE_FORTSTRING_CREATE(message) - - CCTKi_NotYetImplemented(message); - free(message); -} +#endif |