29 #include "../my_config.h"
54 Egeneric(
const std::string &source,
const std::string &message);
59 virtual void stack(
const std::string & passage,
const std::string & message =
"") { pile.push_back(niveau(passage, message)); };
67 const std::string &
get_message()
const {
return pile.front().objet; };
70 const std::string &
get_source()
const {
return pile.front().lieu; };
76 const std::string &
find_object(
const std::string & location)
const;
85 virtual std::string exceptionID()
const = 0;
90 niveau(
const std::string &ou,
const std::string &quoi) { lieu = ou; objet = quoi; };
91 std::string lieu, objet;
94 std::list<niveau> pile;
96 static const std::string empty_string;
110 Ememory(
const std::string &source,
const std::string & message) :
Egeneric(source, message) {};
111 std::string exceptionID()
const {
return "MEMORY"; };
122 std::string exceptionID()
const {
return "SECU_MEMORY"; };
126 #define SRC_BUG Ebug(__FILE__, __LINE__)
133 Ebug(
const std::string &
file, S_I line);
135 void stack(
const std::string & passage,
const std::string & file,
const std::string & line);
138 std::string exceptionID()
const {
return "BUG"; };
148 Einfinint(
const std::string & source,
const std::string & message) :
Egeneric(source, message) {};
151 std::string exceptionID()
const {
return "INFININT"; };
161 Elimitint() :
Egeneric(
"",
dar_gettext(
"Cannot handle such a too large integer. Use a full version of libdar (compiled to rely on the \"infinint\" integer type) to solve this problem")) {};
164 std::string exceptionID()
const {
return "LIMITINT"; };
174 Erange(
const std::string & source,
const std::string & message) :
Egeneric(source, message) {};
177 std::string exceptionID()
const {
return "RANGE"; };
188 Edeci(
const std::string & source,
const std::string & message) :
Egeneric(source, message) {};
191 std::string exceptionID()
const {
return "DECI"; };
204 std::string exceptionID()
const {
return "UNIMPLEMENTED FEATURE"; };
214 Ehardware(
const std::string & source,
const std::string & message) :
Egeneric(source, message) {};
217 std::string exceptionID()
const {
return "HARDWARE ERROR"; };
230 std::string exceptionID()
const {
return "USER ABORTED OPERATION"; };
244 std::string exceptionID()
const {
return "ERROR IN TREATED DATA"; };
254 Escript(
const std::string & source,
const std::string & msg) :
Egeneric(source ,msg) {};
257 std::string exceptionID()
const {
return "USER ABORTED OPERATION"; };
267 Elibcall(
const std::string & source,
const std::string & msg) :
Egeneric(source ,msg) {};
270 std::string exceptionID()
const {
return "USER ABORTED OPERATION"; };
283 std::string exceptionID()
const {
return "FEATURE DISABLED AT COMPILATION TIME"; };
292 Ethread_cancel(
bool now, U_64 x_flag) :
Egeneric(
"", now ?
dar_gettext(
"Thread cancellation requested, aborting as soon as possible") :
dar_gettext(
"Thread cancellation requested, aborting as properly as possible")) { immediate = now; flag = x_flag; };
294 bool immediate_cancel()
const {
return immediate; };
295 U_64 get_flag()
const {
return flag; };
298 std::string exceptionID()
const {
return "THREAD CANCELLATION REQUESTED, ABORTING"; };