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() : exception(), _error_code(undefined_error), _error_message(
"")
87 : exception(), _error_code(ec), _error_message(msg), d_file(file), d_line(line)
96 : exception(), _error_code(unknown_error), _error_message(msg), d_file(file), d_line(line)
100 : exception(), _error_code(copy_from._error_code), _error_message(copy_from._error_message)
104 Error::~Error()
throw()
109 Error::operator=(
const Error &rhs)
116 _error_code = rhs._error_code;
117 _error_message = rhs._error_message;
138 bool empty = ((_error_code == undefined_error)
139 && (_error_message.empty()));
142 bool message = ((_error_code != undefined_error)
143 && (!_error_message.empty()));
145 DBG(cerr <<
"empty: " << empty <<
", message: " << message << endl);
146 return empty || message;
161 throw InternalErr(__FILE__, __LINE__,
"Null input stream");
163 void *buffer = Error_buffer(fp);
164 Error_switch_to_buffer(buffer);
170 status = Errorparse(&arg) == 0;
171 Error_delete_buffer(buffer);
174 Error_delete_buffer(buffer);
182 if (!status || !arg.status())
183 throw InternalErr(__FILE__, __LINE__,
"Error parsing error object!");
204 fprintf(out,
"Error {\n") ;
206 fprintf(out,
" code = %d;\n", static_cast<int>(_error_code)) ;
210 if (*_error_message.begin() ==
'"' && *(_error_message.end() - 1) ==
'"')
211 fprintf(out,
" message = %s;\n", _error_message.c_str()) ;
213 fprintf(out,
" message = \"%s\";\n", _error_message.c_str()) ;
215 fprintf(out,
"};\n") ;
233 strm <<
"Error {\n" ;
235 strm <<
" code = " <<
static_cast<int>(_error_code) <<
";\n" ;
239 if (*_error_message.begin() ==
'"' && *(_error_message.end() - 1) ==
'"')
240 strm <<
" message = " << _error_message.c_str() <<
";\n" ;
242 strm <<
" message = \"" << _error_message.c_str() <<
"\";\n" ;
267 if (_error_message.empty()
268 && ec > undefined_error && ec <= cannot_read_file) {
269 _error_message = err_messages[ec - undefined_error];
272 _error_message = err_messages[0];
282 return string(_error_message);
289 _error_message = msg;
void set_error_message(std::string msg="")
bool parse(FILE *fp)
Parse an Error object.
void set_error_code(ErrorCode ec=undefined_error)
top level DAP object to house generic methods
A class for software fault reporting.
bool OK() const
Is the Error object valid?
ErrorCode get_error_code() const
std::string get_error_message() const
int ErrorCode
An enumerated type for common errors.
void print(FILE *out) const
Pass parameters by reference to a parser.
A class for error processing.