42 #include "InternalErr.h" 48 extern void Error_switch_to_buffer(
void *new_buffer);
49 extern void Error_delete_buffer(
void * buffer);
50 extern void *Error_buffer(FILE *fp);
59 static const char *err_messages[] = {
65 "Malformed expression",
74 Error::Error() : _error_code(undefined_error), _error_message(
"")
87 : _error_code(ec), _error_message(msg)
96 : _error_code(unknown_error), _error_message(msg)
100 : _error_code(copy_from._error_code),
101 _error_message(copy_from._error_message)
110 Error::operator=(
const Error &rhs)
117 _error_code = rhs._error_code;
118 _error_message = rhs._error_message;
136 bool empty = ((_error_code == undefined_error)
137 && (_error_message.empty()));
140 bool message = ((_error_code != undefined_error)
141 && (!_error_message.empty()));
143 DBG(cerr <<
"empty: " << empty <<
", message: " << message << endl);
144 return empty || message;
159 throw InternalErr(__FILE__, __LINE__,
"Null input stream");
161 void *buffer = Error_buffer(fp);
162 Error_switch_to_buffer(buffer);
168 status = Errorparse(&arg) == 0;
169 Error_delete_buffer(buffer);
172 Error_delete_buffer(buffer);
180 if (!status || !arg.status())
181 throw InternalErr(__FILE__, __LINE__,
"Error parsing error object!");
202 fprintf(out,
"Error {\n") ;
204 fprintf(out,
" code = %d;\n", static_cast<int>(_error_code)) ;
208 if (*_error_message.begin() ==
'"' && *(_error_message.end() - 1) ==
'"')
209 fprintf(out,
" message = %s;\n", _error_message.c_str()) ;
211 fprintf(out,
" message = \"%s\";\n", _error_message.c_str()) ;
213 fprintf(out,
"};\n") ;
231 strm <<
"Error {\n" ;
233 strm <<
" code = " <<
static_cast<int>(_error_code) <<
";\n" ;
237 if (*_error_message.begin() ==
'"' && *(_error_message.end() - 1) ==
'"')
238 strm <<
" message = " << _error_message.c_str() <<
";\n" ;
240 strm <<
" message = \"" << _error_message.c_str() <<
"\";\n" ;
265 if (_error_message.empty()
266 && ec > undefined_error && ec <= cannot_read_file) {
267 _error_message = err_messages[ec - undefined_error];
270 _error_message = err_messages[0];
280 return string(_error_message);
287 _error_message = msg;
string get_error_message() const
bool parse(FILE *fp)
Parse an Error object.
void set_error_code(ErrorCode ec=undefined_error)
A class for software fault reporting.
void print(FILE *out) const
bool OK() const
Is the Error object valid?
int ErrorCode
An enumerated type for common errors.
Pass parameters by reference to a parser.
ErrorCode get_error_code() const
A class for error processing.
void set_error_message(string msg="")