Diff for /parser3/src/main/pa_exception.C between versions 1.7 and 1.55

version 1.7, 2001/03/19 16:06:14 version 1.55, 2020/10/14 21:20:15
Line 1 Line 1
 /*  /** @file
         Parser          Parser: exception class.
         Copyright (c) 2001 ArtLebedev Group (http://www.artlebedev.com)  
         Author: Alexander Petrosyan <paf@design.ru> (http://design.ru/paf)  
   
         $Id$          Copyright (c) 2001-2017 Art. Lebedev Studio (http://www.artlebedev.com)
           Author: Alexandr Petrosian <paf@design.ru> (http://paf.design.ru)
 */  */
   
 #include <stdio.h>  
 #include <stdlib.h>  
   
 #include "pa_common.h"  #include "pa_common.h"
 #include "pa_exception.h"  #include "pa_exception.h"
   #include "pa_sapi.h"
   #include "pa_globals.h"
   
   volatile const char * IDENT_PA_EXCEPTION_C="$Id$" IDENT_PA_EXCEPTION_H;
   
   // methods
   
   Exception::Exception(): ftype(0), fproblem_source(0), fcomment(0) {}
   
   Exception::Exception(const Exception& src):
           ftype(src.ftype),
           fproblem_source(src.fproblem_source),
           fcomment(src.fcomment) {
   }
   
 void Exception::_throw(const String *atype, const String *acode,  Exception& Exception::operator =(const Exception& src) {
                                           const String *aproblem_source,           ftype=src.ftype;
                                           const char *comment_fmt, ...) const {          fproblem_source=src.fproblem_source;
           fcomment=src.fcomment;
           return *this;
   }
   
   Exception::Exception(const char* atype, const String* aproblem_source, const char* comment_fmt, ...) {
         ftype=atype;          ftype=atype;
         fcode=acode;          fproblem_source=aproblem_source ? new String(*aproblem_source) : 0;
         fproblem_source=aproblem_source;  
   
         if(comment_fmt) {          if(comment_fmt) {
                   char comment[MAX_STRING];
                 va_list args;                  va_list args;
                 va_start(args, comment_fmt);                  va_start(args, comment_fmt);
                 vsnprintf(fcomment, MAX_STRING, comment_fmt, args);                  fcomment=pa_strdup(comment, vsnprintf(comment, MAX_STRING, comment_fmt, args));
                 va_end(args);                  va_end(args);
         } else           } else
                 fcomment[0]=0;                  fcomment=0;
   }
   
   void Exception::add_comment(const char* acomment) {
           if(fcomment && acomment){
                   char *comment=new(PointerFreeGC) char[strlen(fcomment) + strlen(acomment) + 1];
                   strcpy(comment, fcomment);
                   strcat(comment, acomment);
                   fcomment=comment;
           }
   }
   
         longjmp(mark, 1);  const String* Exception::problem_source() const {
           return fproblem_source && !fproblem_source->is_empty() ? fproblem_source : 0;
 }  }

Removed from v.1.7  
changed lines
  Added in v.1.55


E-mail: