00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024 #ifndef TCLAP_ARG_EXCEPTION_H
00025 #define TCLAP_ARG_EXCEPTION_H
00026
00027 #include <string>
00028 #include <exception>
00029
00030 namespace TCLAP {
00031
00036 class ArgException : public std::exception
00037 {
00038 public:
00039
00047 ArgException( const std::string& text = "undefined exception",
00048 const std::string& id = "undefined",
00049 const std::string& td = "Generic ArgException")
00050 : std::exception(),
00051 _errorText(text),
00052 _argId( id ),
00053 _typeDescription(td)
00054 { }
00055
00059 virtual ~ArgException() throw() { }
00060
00064 std::string error() const { return ( _errorText ); }
00065
00069 std::string argId() const
00070 {
00071 if ( _argId == "undefined" )
00072 return " ";
00073 else
00074 return ( "Argument: " + _argId );
00075 }
00076
00080 const char* what() const throw()
00081 {
00082 static std::string ex;
00083 ex = _argId + " -- " + _errorText;
00084 return ex.c_str();
00085 }
00086
00091 std::string typeDescription() const
00092 {
00093 return _typeDescription;
00094 }
00095
00096
00097 private:
00098
00102 std::string _errorText;
00103
00107 std::string _argId;
00108
00113 std::string _typeDescription;
00114
00115 };
00116
00121 class ArgParseException : public ArgException
00122 {
00123 public:
00130 ArgParseException( const std::string& text = "undefined exception",
00131 const std::string& id = "undefined" )
00132 : ArgException( text,
00133 id,
00134 std::string( "Exception found while parsing " ) +
00135 std::string( "the value the Arg has been passed." ))
00136 { }
00137 };
00138
00143 class CmdLineParseException : public ArgException
00144 {
00145 public:
00152 CmdLineParseException( const std::string& text = "undefined exception",
00153 const std::string& id = "undefined" )
00154 : ArgException( text,
00155 id,
00156 std::string( "Exception found when the values ") +
00157 std::string( "on the command line do not meet ") +
00158 std::string( "the requirements of the defined ") +
00159 std::string( "Args." ))
00160 { }
00161 };
00162
00167 class SpecificationException : public ArgException
00168 {
00169 public:
00176 SpecificationException( const std::string& text = "undefined exception",
00177 const std::string& id = "undefined" )
00178 : ArgException( text,
00179 id,
00180 std::string("Exception found when an Arg object ")+
00181 std::string("is improperly defined by the ") +
00182 std::string("developer." ))
00183 { }
00184
00185 };
00186
00187 class ExitException {
00188 public:
00189 ExitException(int estat) : _estat(estat) {}
00190
00191 int getExitStatus() const { return _estat; }
00192
00193 private:
00194 int _estat;
00195 };
00196
00197 }
00198
00199 #endif
00200