Main Page   Namespace List   Class Hierarchy   Compound List   File List   Compound Members   File Members  

LineParserExceptions.h

00001 #ifndef EDG_WORKLOAD_COMMON_UTILITIES_LINEPARSEREXCEPTIONS_H
00002 #define EDG_WORKLOAD_COMMON_UTILITIES_LINEPARSEREXCEPTIONS_H
00003 
00004 #include <exception>
00005 
00006 COMMON_NAMESPACE_BEGIN {
00007 
00008 namespace utilities {
00009 
00010 class LineParsingError : public std::exception {
00011 public:
00012   LineParsingError( const ParserData &d, int code );
00013   LineParsingError( const LineParsingError &lpe );
00014   virtual ~LineParsingError( void ) throw();
00015 
00016   virtual void usage( std::ostream &os ) const = 0;
00017   virtual const char *what( void ) const throw();
00018 
00019   inline int return_code( void ) { return this->lpe_retcode; }
00020 
00021 private:
00022   LineParsingError &operator=( const LineParsingError & ); // Not implemented
00023 
00024 protected:
00025   int                  lpe_retcode;
00026   const ParserData    &lpe_data;
00027 
00028   static const char   *lpe_s_what;
00029 };
00030 
00031 class ShowHelp : public LineParsingError {
00032 public:
00033   ShowHelp( const ParserData &d );
00034   ShowHelp( const ShowHelp &sh );
00035   virtual ~ShowHelp( void ) throw();
00036 
00037   virtual void usage( std::ostream &os ) const;
00038 };
00039 
00040 class InvalidOption : public LineParsingError {
00041 public:
00042   InvalidOption( const ParserData &d, int opt );
00043   InvalidOption( const InvalidOption &io );
00044   virtual ~InvalidOption( void ) throw();
00045 
00046   virtual void usage( std::ostream &os ) const;
00047 
00048 private:
00049   int   io_opt;
00050 };
00051 
00052 class InvalidArgNumber : public LineParsingError {
00053 public:
00054   InvalidArgNumber( const ParserData &d, int argn );
00055   InvalidArgNumber( const InvalidArgNumber &ian );
00056   virtual ~InvalidArgNumber( void ) throw();
00057 
00058   virtual void usage( std::ostream &os ) const;
00059 
00060 private:
00061   int    ian_argn;
00062 };
00063 
00064 }; // Namespace closure
00065 
00066 } COMMON_NAMESPACE_END;
00067 
00068 inline std::ostream &operator<<( std::ostream &os, const edg::workload::common::utilities::LineParsingError &lpe )
00069 { lpe.usage( os ); return os; }
00070 
00071 #endif /* EDG_WORKLOAD_COMMON_UTILITIES_LINEPARSEREXCEPTIONS_H */
00072 
00073 // Local Variables:
00074 // mode: c++
00075 // End:

Generated on Fri May 14 14:18:26 2004 for COMMON API - configuration, jobid, ldif2classadi, logger, process, requestad, socket++i, task, utilities by doxygen1.2.14 written by Dimitri van Heesch, © 1997-2002