43#include "InternalErr.h"
49extern void Error_switch_to_buffer(
void *new_buffer);
50extern void Error_delete_buffer(
void * buffer);
51extern void *Error_buffer(FILE *fp);
60static const char *err_messages[] = {
66 "Malformed expression",
74Error::operator=(
const Error &rhs)
81 _error_code = rhs._error_code;
82 _error_message = rhs._error_message;
103 bool empty = ((_error_code == undefined_error)
104 && (_error_message.empty()));
107 bool message = ((_error_code != undefined_error)
108 && (!_error_message.empty()));
110 DBG(cerr <<
"empty: " << empty <<
", message: " << message << endl);
111 return empty || message;
126 throw InternalErr(__FILE__, __LINE__,
"Null input stream");
128 void *buffer = Error_buffer(fp);
129 Error_switch_to_buffer(buffer);
135 status = Errorparse(&arg) == 0;
136 Error_delete_buffer(buffer);
139 Error_delete_buffer(buffer);
147 if (!status || !arg.status())
148 throw InternalErr(__FILE__, __LINE__,
"Error parsing error object!");
169 fprintf(out,
"Error {\n") ;
171 fprintf(out,
" code = %d;\n",
static_cast<int>(_error_code)) ;
175 if (*_error_message.begin() ==
'"' && *(_error_message.end() - 1) ==
'"')
176 fprintf(out,
" message = %s;\n", _error_message.c_str()) ;
178 fprintf(out,
" message = \"%s\";\n", _error_message.c_str()) ;
180 fprintf(out,
"};\n") ;
198 strm <<
"Error {\n" ;
200 strm <<
" code = " <<
static_cast<int>(_error_code) <<
";\n" ;
204 if (*_error_message.begin() ==
'"' && *(_error_message.end() - 1) ==
'"')
205 strm <<
" message = " << _error_message.c_str() <<
";\n" ;
207 strm <<
" message = \"" << _error_message.c_str() <<
"\";\n" ;
232 if (_error_message.empty()
233 && ec > undefined_error && ec <= cannot_read_file) {
234 _error_message = err_messages[ec - undefined_error];
237 _error_message = err_messages[0];
247 return {_error_message};
254 _error_message = std::move(msg);
A class for error processing.
void set_error_message(std::string msg="")
void set_error_code(ErrorCode ec=undefined_error)
void print(FILE *out) const
ErrorCode get_error_code() const
std::string get_error_message() const
bool parse(FILE *fp)
Parse an Error object.
bool OK() const
Is the Error object valid?
A class for software fault reporting.
top level DAP object to house generic methods
int ErrorCode
An enumerated type for common errors.
Pass parameters by reference to a parser.