Diff for /parser3/src/include/pa_exception.h between versions 1.27 and 1.47

version 1.27, 2002/01/10 15:41:49 version 1.47, 2007/04/24 08:39:28
Line 1 Line 1
 /** @file  /** @file
         Parser: exception decls.          Parser: exception decls.
   
         Copyright (c) 2001 ArtLebedev Group (http://www.artlebedev.com)          Copyright (c) 2001-2005 ArtLebedev Group (http://www.artlebedev.com)
         Author: Alexander Petrosyan <paf@design.ru> (http://paf.design.ru)          Author: Alexandr Petrosian <paf@design.ru> (http://paf.design.ru)
   
         $Id$  
 */  */
   
 #ifndef PA_EXCEPTION_H  #ifndef PA_EXCEPTION_H
 #define PA_EXCEPTION_H  #define PA_EXCEPTION_H
   
 #include "pa_types.h"  static const char * const IDENT_EXCEPTION_H="$Date$";
 #include "pa_string.h"  
   const char* const PARSER_RUNTIME = "parser.runtime";
   
   // includes
   
 class Pool;  #include "pa_memory.h"
   
   // forwards
   
   class String;
   
 // defines  // defines
   
 /// Just simple longjump mechanizm dressed in class clothes. use Temp_exception  
 class Exception {  class Exception {
 public:  public:
   
         Exception();          Exception();
         Exception(          Exception(
                 const String *atype, const String *acode,                  const char* atype,
                 const String *aproblem_source,                   const String* aproblem_source, 
                 const char *comment_fmt, ...);                  const char* comment_fmt, ...);
         Exception(  
                 const String *atype, const String *acode,  
                 const String *aproblem_source,   
                 const char *comment_fmt, va_list args);   
         Exception(  
                 const String *atype, const String *acode,  
                 const String *aproblem_source,   
                 GdomeException& exc);  
         Exception(const Exception& src);          Exception(const Exception& src);
           operator bool() { return ftype || fproblem_source || fcomment; }
         Exception& operator =(const Exception& src);          Exception& operator =(const Exception& src);
         ~Exception();  
   
 #ifdef XML  
         /*  
         /// converts XSL exception to parser exception  
         static void provide_source(Pool& pool, const String *source, const XSLException& e);  
         /// converts SAX exception to parser exception  
         static void provide_source(Pool& pool, const String *source, const SAXException& e);  
         /// converts SAX parse exception to parser exception  
         static void provide_source(Pool& pool, const String *source, const SAXParseException& e);  
         /// converts XML exception to parser exception  
         static void provide_source(Pool& pool, const String *source, const XMLException& e);  
         /// converts Xalan DOM exception to parser exception  
         static void provide_source(Pool& pool, const String *source, const XalanDOMException& e);  
         */  
 #endif  
   
         /// extracts exception type          /// extracts exception type
         const String *type() const { return ftype; }          const char* type(bool can_be_empty=false) const { 
         /// extracts exception code                  if(can_be_empty)
         const String *code() const { return fcode; }                          return ftype; 
                   else
                           return ftype?ftype:"<no type>";
           }
         /// extracts exception problem_source          /// extracts exception problem_source
         const String *problem_source() const { return fproblem_source; }          const String* problem_source() const;
         /// extracts exception comment          /// extracts exception comment
         const char *comment() const { return fcomment; }          const char* comment(bool can_be_empty=false) const { 
                   const char* result=fcomment && *fcomment?fcomment:0;
 private:                  if(can_be_empty)
                           return result; 
         void initialize(const String *atype, const String *acode,                  else
                 const String *aproblem_source,                           return result?result:"<no comment>";
                 const char *comment_fmt, va_list args);          }
   
 private:  protected:
   
         const String *ftype, *fcode, *fproblem_source;          const char* ftype;
         bool owns_comment;          const String* fproblem_source;
         char *fcomment;          char* fcomment;
   
 };  };
   

Removed from v.1.27  
changed lines
  Added in v.1.47


E-mail: