00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #ifndef NCL_NXSEXCEPTION_H
00021 #define NCL_NXSEXCEPTION_H
00022
00023 #include "ncl/nxsstring.h"
00024
00025 class NxsToken;
00026 class ProcessedNxsToken;
00027 class NxsTokenPosInfo;
00031 class NxsException: public std::exception
00032 {
00033 public:
00034 mutable NxsString msg;
00035 file_pos pos;
00036 long line;
00037 long col;
00038 virtual ~NxsException() throw()
00039 {
00040 }
00041
00042 NxsException(const std::string & s, file_pos fp = 0, long fl = 0L, long fc = 0L);
00043 NxsException(const std::string &s, const NxsToken &t);
00044 NxsException(const std::string &s, const ProcessedNxsToken &t);
00045 NxsException(const std::string &s, const NxsTokenPosInfo &t);
00046 const char * what () const throw ()
00047 {
00048 return msg.empty() ? "Unknown Nexus Exception" : msg.c_str();
00049 }
00050 const char * nxs_what () const;
00051 };
00052
00053 typedef NxsException XNexus;
00054
00058 class NxsNCLAPIException: public NxsException
00059 {
00060 public:
00061 NxsNCLAPIException(NxsString s) :NxsException(s, 0, -1L,-1L){}
00062 NxsNCLAPIException(NxsString s, NxsToken &t) :NxsException(s, t){}
00063 };
00064
00068 class NxsUnimplementedException: public NxsNCLAPIException
00069 {
00070 public:
00071 NxsUnimplementedException(NxsString s):NxsNCLAPIException(s){}
00072 NxsUnimplementedException(NxsString s, NxsToken &t):NxsNCLAPIException(s,t){}
00073 };
00074
00075
00076 class DuplicatedLabelNxsException: public NxsException
00077 {
00078 public:
00079 DuplicatedLabelNxsException(const std::string & s):NxsException(s){}
00080 };
00081
00082
00083
00084
00085
00086
00087
00088 class NxsSignalCanceledParseException: public NxsException
00089 {
00090 public:
00091 NxsSignalCanceledParseException(const std::string & s);
00092 };
00093 #endif