- Main Page
- Namespaces
- Classes
- Files

- File List
- File Members

# ArgException.h

Go to the documentation of this file.

    00001 // -*- Mode: c++; c-basic-offset: 4; tab-width: 4; -*-
    00002
    00003 /******************************************************************************
    00004  *
    00005  *  file:  ArgException.h
    00006  *
    00007  *  Copyright (c) 2003, Michael E. Smoot .
    00008  *  All rights reverved.
    00009  *
    00010  *  See the file COPYING in the top directory of this distribution for
    00011  *  more information.
    00012  *
    00013  *  THE SOFTWARE IS PROVIDED _AS IS_, WITHOUT WARRANTY OF ANY KIND, EXPRESS
    00014  *  OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
    00015  *  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
    00016  *  THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
    00017  *  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
    00018  *  FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
    00019  *  DEALINGS IN THE SOFTWARE.
    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 } // namespace TCLAP
    00198
    00199 #endif
    00200