forked from CmPA/iPic3D
-
Notifications
You must be signed in to change notification settings - Fork 2
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Issue CmPA#29: add errors.h for diagnostics: eprintf() and invalid_va…
…lue_error()
- Loading branch information
1 parent
c694d90
commit c4eaee2
Showing
2 changed files
with
69 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,25 @@ | ||
#ifndef ipic_errors_H | ||
#define ipic_errors_H | ||
|
||
void errmsg_printf_fileLine(const char *func, const char *file, int line_number, const char *format, ...); | ||
void eprintf_fileLine(const char *func, const char *file, int line_number, const char *format, ...); | ||
void Wprintf_fileLine(const char *func, const char *file, int line_number, const char *format, ...); | ||
|
||
#define errmsg_printf(args...) \ | ||
errmsg_printf_fileLine(__func__, __FILE__, __LINE__, ## args); | ||
#define eprintf(args...) \ | ||
errmsg_printf_fileLine(__func__, __FILE__, __LINE__, ## args); | ||
#define Wprintf(args...) \ | ||
Wprintf_fileLine(__func__, __FILE__, __LINE__, ## args); | ||
#define declare_invalid_value_error(t1) \ | ||
void invalid_value_error_fileLine(const char* file, int line, const char* func, \ | ||
const char* type, const char* expr, t1 val); | ||
declare_invalid_value_error(double); | ||
declare_invalid_value_error(int); | ||
declare_invalid_value_error(const char*); | ||
#define unsupported_value_error(val) invalid_value_error_fileLine( \ | ||
__FILE__, __LINE__, __func__, "unsupported", #val, val); | ||
#define invalid_value_error(val) invalid_value_error_fileLine( \ | ||
__FILE__, __LINE__, __func__, "invalid", #val, val); | ||
|
||
#endif |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,44 @@ | ||
|
||
#include <cstdarg> | ||
#include <cstdio> | ||
#include <cstdlib> | ||
#include "errors.h" | ||
//#include "MPIdata.h" // for rank | ||
|
||
/** implementation of declarations in errors.h **/ | ||
|
||
void errmsg_printf_fileLine(const char *func, const char *file, int line_number, | ||
const char *format, ...) | ||
{ | ||
FILE* fptr = stdout; | ||
fflush(fptr); | ||
va_list args; | ||
va_start(args, format); | ||
fprintf(fptr, "ERROR in function %s, file %s, line %d: \n\t", | ||
func, file, line_number); | ||
/* print out remainder of message */ | ||
vfprintf(fptr, format, args); | ||
va_end(args); | ||
// append terminating newline so user does not have to do it | ||
fprintf(fptr, "\n"); | ||
fflush(fptr); | ||
|
||
abort(); | ||
} | ||
|
||
#include <iostream> | ||
using namespace std; | ||
#define implement_invalid_value_error(t1) \ | ||
void invalid_value_error_fileLine(const char* file, int line, const char* func, \ | ||
const char* type, const char* expr, t1 val) \ | ||
{ \ | ||
std::cerr<< "ERROR in file " << file << ", line " << line \ | ||
<< ", function " << func \ | ||
<<"\n\t" << type << " value: " << expr << " = " << val << endl; \ | ||
abort(); \ | ||
} | ||
|
||
implement_invalid_value_error(double); | ||
implement_invalid_value_error(int); | ||
implement_invalid_value_error(const char*); | ||
|