00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #include "ncl/nxsexception.h"
00021
00022 #include "ncl/nxstoken.h"
00023
00024 using namespace std;
00029 NxsException::NxsException(
00030 const std::string & s,
00031 file_pos fp,
00032 long fl,
00033 long fc)
00034 {
00035 pos = fp;
00036 line = fl;
00037 col = fc;
00038 msg.assign(s);
00039 }
00040
00044 NxsException::NxsException(
00045 const std::string &s,
00046 const NxsToken &t)
00047 {
00048 msg = NxsString(s.c_str());
00049 pos = t.GetFilePosition();
00050 line = t.GetFileLine();
00051 col = t.GetFileColumn();
00052 }
00053
00054 NxsException::NxsException(const std::string &s, const ProcessedNxsToken &t)
00055 {
00056 msg = NxsString(s.c_str());
00057 pos = t.GetFilePosition();
00058 line = t.GetLineNumber();
00059 col = t.GetColumnNumber();
00060 }
00061
00062 NxsException::NxsException(const std::string &s, const NxsTokenPosInfo &t)
00063 {
00064 msg = NxsString(s.c_str());
00065 pos = t.GetFilePosition();
00066 line = t.GetLineNumber();
00067 col = t.GetColumnNumber();
00068 }
00069
00070 const char * NxsException::nxs_what () const
00071 {
00072 std::string m = "Nexus Parsing error: ";
00073 m.append(msg);
00074 msg.assign(m);
00075 if (line >= 0)
00076 msg << " at line " << line;
00077 if (col >= 0)
00078 msg << " column " << col;
00079 return msg.c_str();
00080 }
00081
00082 NxsSignalCanceledParseException::NxsSignalCanceledParseException(const std::string & s)
00083 :NxsException(s)
00084 {
00085 msg = "Signal detected during NEXUS class library";
00086 if (!s.empty())
00087 msg << " in the processing step: " << s;
00088 msg << '.';
00089 }