Diff for /parser3/src/include/pa_exception.h between versions 1.34 and 1.38.2.4

version 1.34, 2002/04/29 05:59:33 version 1.38.2.4, 2003/01/24 08:19:09
Line 1 Line 1
 /** @file  /** @file
         Parser: exception decls.          Parser: exception decls.
   
         Copyright (c) 2001, 2002 ArtLebedev Group (http://www.artlebedev.com)          Copyright (c) 2001, 2003 ArtLebedev Group (http://www.artlebedev.com)
         Author: Alexandr Petrosian <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* IDENT_EXCEPTION_H="$Date$";
 #include "pa_string.h"  
   //#include "pa_types.h"
   #include "pa_pool.h"
   
 class Pool;  // forwards
   
   class String;
   typedef object_ptr<const String> ConstStringPtr;
   
 // defines  // defines
   
 class Exception {  class Exception {
 public:  public:
   
           static ConstStringPtr undefined_source;
   
         Exception();          Exception();
         Exception(          Exception(
                 const char *atype,                  const char *atype,
                 const String *aproblem_source,                   ConstStringPtr aproblem_source, 
                 const char *comment_fmt, ...);                  const char *comment_fmt, ...);
         Exception(const Exception& src);          Exception(const Exception& src):
         Exception& operator =(const Exception& src);                  ftype(src.ftype),
         ~Exception();                  fproblem_source(src.fproblem_source),
                   fcomment(src.fcomment) {
           }
           Exception& operator =(const Exception& src) {
                   ftype=src.ftype;
                   fproblem_source=src.fproblem_source;
                   fcomment=src.fcomment;
                   return *this;
           }
   
 #ifdef XML  #ifdef XML
         Exception(          Exception(
Line 36  public: Line 49  public:
 #endif  #endif
   
         /// extracts exception type          /// extracts exception type
         const char *type() const { return ftype; }          const char *type(bool can_be_empty=false) const { 
                   if(can_be_empty)
                           return ftype; 
                   else
                           return ftype?ftype:"<no type>";
           }
         /// extracts exception problem_source          /// extracts exception problem_source
         const String *problem_source() const {           ConstStringPtr problem_source() const;  /// extracts exception comment
                 return fproblem_source && fproblem_source->size()?fproblem_source:0;           const char *comment(bool can_be_empty=false) const { 
                   const char *result=fcomment.get()!=0 && *fcomment.get()?fcomment.get():0;
                   if(can_be_empty)
                           return result; 
                   else
                           return result?result:"<no comment>";
         }          }
         /// extracts exception comment  
         const char *comment() const { return fcomment; }  
   
 private:  private:
   
         const char *ftype;          const char *ftype;
         const String *fproblem_source;          ConstStringPtr fproblem_source;
         bool owns_comment; char *fcomment;          CharPtr fcomment;
   
 };  };
   

Removed from v.1.34  
changed lines
  Added in v.1.38.2.4


E-mail: