32 #include "../my_config.h"
57 Egeneric(
const std::string &source,
const std::string &message);
62 virtual void stack(
const std::string & passage,
const std::string & message =
"") { pile.push_back(niveau(passage, message)); };
70 const std::string &
get_message()
const {
return pile.front().objet; };
73 const std::string &
get_source()
const {
return pile.front().lieu; };
79 const std::string &
find_object(
const std::string & location)
const;
88 virtual std::string exceptionID()
const = 0;
93 niveau(
const std::string &ou,
const std::string &quoi) { lieu = ou; objet = quoi; };
94 std::string lieu, objet;
97 std::list<niveau> pile;
99 static const std::string empty_string;
113 Ememory(
const std::string &source,
const std::string & message) :
Egeneric(source, message) {};
114 std::string exceptionID()
const {
return "MEMORY"; };
125 std::string exceptionID()
const {
return "SECU_MEMORY"; };
129 #define SRC_BUG Ebug(__FILE__, __LINE__)
136 Ebug(
const std::string &
file, S_I line);
138 void stack(
const std::string & passage,
const std::string & file,
const std::string & line);
141 std::string exceptionID()
const {
return "BUG"; };
151 Einfinint(
const std::string & source,
const std::string & message) :
Egeneric(source, message) {};
154 std::string exceptionID()
const {
return "INFININT"; };
164 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")) {};
167 std::string exceptionID()
const {
return "LIMITINT"; };
177 Erange(
const std::string & source,
const std::string & message) :
Egeneric(source, message) {};
180 std::string exceptionID()
const {
return "RANGE"; };
191 Edeci(
const std::string & source,
const std::string & message) :
Egeneric(source, message) {};
194 std::string exceptionID()
const {
return "DECI"; };
207 std::string exceptionID()
const {
return "UNIMPLEMENTED FEATURE"; };
217 Ehardware(
const std::string & source,
const std::string & message) :
Egeneric(source, message) {};
220 std::string exceptionID()
const {
return "HARDWARE ERROR"; };
233 std::string exceptionID()
const {
return "USER ABORTED OPERATION"; };
247 std::string exceptionID()
const {
return "ERROR IN TREATED DATA"; };
257 Escript(
const std::string & source,
const std::string & msg) :
Egeneric(source ,msg) {};
260 std::string exceptionID()
const {
return "USER ABORTED OPERATION"; };
270 Elibcall(
const std::string & source,
const std::string & msg) :
Egeneric(source ,msg) {};
273 std::string exceptionID()
const {
return "USER ABORTED OPERATION"; };
286 std::string exceptionID()
const {
return "FEATURE DISABLED AT COMPILATION TIME"; };
295 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; };
297 bool immediate_cancel()
const {
return immediate; };
298 U_64 get_flag()
const {
return flag; };
301 std::string exceptionID()
const {
return "THREAD CANCELLATION REQUESTED, ABORTING"; };