00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019 #ifndef FILE_SELDONDATA_ERRORS_HXX
00020
00021 #include <iostream>
00022 using std::cout;
00023 using std::endl;
00024 #include <string>
00025
00026 namespace SeldonData
00027 {
00028
00030
00032
00034 class Error
00035 {
00036
00037 protected:
00039 string function;
00041 string comment;
00042
00043 public:
00045 Error()
00046 {
00047 cout << "ERROR!" << endl;
00048 function = "";
00049 comment = "";
00050 }
00052
00055 Error(string f)
00056 {
00057 cout << "ERROR!" << endl;
00058 function = f;
00059 comment = "";
00060 }
00062
00066 Error(string f, string c)
00067 {
00068 cout << "ERROR!" << endl;
00069 function = f;
00070 comment = c;
00071 }
00072
00074 virtual ~Error()
00075 {
00076 }
00077
00079 virtual void What()
00080 {
00081 cout << "An unknown error occured";
00082 if (function.length()!=0)
00083 cout << " in " << function;
00084 cout << "." << endl;
00085 if (comment.length()!=0)
00086 cout << " " << comment << endl;
00087 cout << endl;
00088 }
00089 };
00090
00091
00092
00094
00096
00097
00099 class NoMemory: public Error
00100 {
00101
00102 public:
00104 NoMemory(string f, string c): Error(f, c)
00105 {
00106 }
00108 NoMemory(string f): Error(f)
00109 {
00110 }
00111
00113 virtual void What()
00114 {
00115 cout << "No more memory is available";
00116 if (this->function!="")
00117 cout << " in " << this->function;
00118 cout << "." << endl;
00119 if (this->comment!="")
00120 cout << " " << this->comment << endl;
00121 cout << endl;
00122 }
00123
00124 };
00125
00126
00127
00129
00131
00132
00134
00137 class WrongDim: public Error
00138 {
00139
00140 public:
00142 WrongDim(string f, string c): Error(f, c)
00143 {
00144 }
00145
00147 virtual void What()
00148 {
00149 cout << "Wrong dimension";
00150 if (this->function!="")
00151 cout << " in " << this->function;
00152 cout << "." << endl;
00153 if (this->comment!="")
00154 cout << " " << this->comment << endl;
00155 cout << endl;
00156 }
00157
00158 };
00159
00160
00161
00163
00165
00166
00168
00171 class WrongIndex: public Error
00172 {
00173
00174 public:
00176 WrongIndex(string f): Error(f)
00177 {
00178 }
00180 WrongIndex(string f, string c): Error(f, c)
00181 {
00182 }
00183
00185 virtual void What()
00186 {
00187 cout << "Index out of range";
00188 if (this->function!="")
00189 cout << " in " << this->function;
00190 cout << "." << endl;
00191 if (this->comment!="")
00192 cout << " " << this->comment << endl;
00193 cout << endl;
00194 }
00195
00196 };
00197
00198
00199
00201
00203
00204
00206 class IOError: public Error
00207 {
00208
00209 public:
00211 IOError(string f, string c): Error(f, c)
00212 {
00213 }
00214
00216 virtual void What()
00217 {
00218 cout << "An input/output operation failed";
00219 if (this->function!="")
00220 cout << " in " << this->function;
00221 cout << "." << endl;
00222 if (this->comment!="")
00223 cout << " " << this->comment << endl;
00224 cout << endl;
00225 }
00226
00227 };
00228
00229
00230
00232
00234
00235
00237 class Undefined: public Error
00238 {
00239
00240 public:
00242 Undefined(string f): Error(f)
00243 {
00244 }
00246 Undefined(string f, string c): Error(f, c)
00247 {
00248 }
00249
00251 virtual void What()
00252 {
00253 if (this->function!="")
00254 cout << "Call to undefined function " << this->function;
00255 else
00256 cout << "An undefined function was called";
00257 cout << "." << endl;
00258 if (this->comment!="")
00259 cout << " " << this->comment << endl;
00260 cout << endl;
00261 }
00262
00263 };
00264
00265
00266 }
00267
00268
00269 #define FILE_SELDONDATA_ERRORS_HXX
00270 #endif