Diff for /parser3/src/main/pa_exception.C between versions 1.10 and 1.43.2.9

version 1.10, 2001/06/28 07:41:59 version 1.43.2.9, 2003/01/31 12:10:47
Line 1 Line 1
 /** @file  /** @file
         Parser: exception class.          Parser: exception class.
   
         Copyright (c) 2001 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: Alexander Petrosyan <paf@design.ru> (http://design.ru/paf)  
   
         $Id$  
 */  */
 static char *RCSId="$Id$";   
   
 #include <stdio.h>  static const char* IDENT_EXCEPTION_C="$Date$";
 #include <stdlib.h>  
   
 #include "pa_common.h"  #include "pa_common.h"
 #include "pa_exception.h"  #include "pa_exception.h"
   #include "pa_value_includes.h"
   #include "pa_sapi.h"
   
   // statics
   
   
   const char* Exception::undefined_type=0;
   const StringPtr Exception::undefined_source(0);
   
   // methods
   
 void Exception::_throw(const String *atype, const String *acode,  Exception::Exception() {
                                           const String *aproblem_source,           ftype=0;
                                           const char *comment_fmt, ...) const {          fproblem_source=undefined_source;
           fcomment=CharPtr(0);
   }
   Exception::Exception(const char *atype, 
                                             StringPtr aproblem_source, 
                                             const char *comment_fmt, ...) {
           //_asm int 3;
   //__asm__("int3");
         ftype=atype;          ftype=atype;
         fcode=acode;  
         fproblem_source=aproblem_source;          fproblem_source=aproblem_source;
   
           char *comment;
         if(comment_fmt) {          if(comment_fmt) {
                   comment=new char[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);                  vsnprintf(comment, MAX_STRING, comment_fmt, args);
                 va_end(args);                  va_end(args);
         } else           } else
                 fcomment[0]=0;                  comment=0;
   
           fcomment=CharPtr(comment);
   }
   
   #ifdef XML
   Exception::Exception(
           const String *aproblem_source, 
           GdomeException& exc) :
           ftype("xml"),
           fproblem_source(aproblem_source),
           owns_comment(true) {
   
           const char *xml_generic_errors=xmlGenericErrors();
           if(xml_generic_errors || exc) {
                   const char *s;
                   switch((GdomeExceptionCode)exc) {
                   case GDOME_NOEXCEPTION_ERR: s="NOEXCEPTION_ERR"; break;
                   case GDOME_INDEX_SIZE_ERR: s="INDEX_SIZE_ERR"; break;
                   case GDOME_DOMSTRING_SIZE_ERR: s="DOMSTRING_SIZE_ERR"; break;
                   case GDOME_HIERARCHY_REQUEST_ERR: s="HIERARCHY_REQUEST_ERR"; break;
                   case GDOME_WRONG_DOCUMENT_ERR: s="WRONG_DOCUMENT_ERR"; break;
                   case GDOME_INVALID_CHARACTER_ERR: s="INVALID_CHARACTER_ERR"; break;
                   case GDOME_NO_DATA_ALLOWED_ERR: s="NO_DATA_ALLOWED_ERR"; break;
                   case GDOME_NO_MODIFICATION_ALLOWED_ERR: s="NO_MODIFICATION_ALLOWED_ERR"; break;
                   case GDOME_NOT_FOUND_ERR: s="NOT_FOUND_ERR"; break;
                   case GDOME_NOT_SUPPORTED_ERR: s="NOT_SUPPORTED_ERR"; break;
                   case GDOME_INUSE_ATTRIBUTE_ERR: s="INUSE_ATTRIBUTE_ERR"; break;
                   case GDOME_INVALID_STATE_ERR: s="INVALID_STATE_ERR"; break;
                   case GDOME_SYNTAX_ERR: s="SYNTAX_ERR"; break;
                   case GDOME_INVALID_MODIFICATION_ERR: s="INVALID_MODIFICATION_ERR"; break;
                   case GDOME_NAMESPACE_ERR: s="NAMESPACE_ERR"; break;
                   case GDOME_INVALID_ACCESS_ERR: s="INVALID_ACCESS_ERR"; break;
                   case GDOME_NULL_POINTER_ERR: s="NULL_POINTER_ERR"; break;
                   default: s="<UNKNOWN CODE>"; break;
                   }
                   
                   fcomment=(char *)malloc(MAX_STRING);
                   const char *xml_error_message;
                   const char *xml_error_prefix;
                   if(xml_generic_errors) {
                           xml_error_prefix="\n";
                           xml_error_message=xml_generic_errors;
                   } else {
                           xml_error_prefix="";
                           xml_error_message="";
                   }
                   if(exc)
                           snprintf(fcomment, MAX_STRING, 
                                   "DOMException %s (%d)."
                                   "%s%s", 
                                           s,  // decoded code of exception
                                           exc, // DOM exception code
                                           xml_error_prefix, xml_error_message // xml generic messages accumulated
                           );
                   else // no DOM exception
                           snprintf(fcomment, MAX_STRING, 
                                   "%s", 
                                           xml_error_message // xml generic messages accumulated
                           );
                   if(xml_generic_errors)
                           free((void *)xml_generic_errors);
           } else
                   fcomment=0;
   }
   #endif
   
         longjmp(mark, 1);  StringPtr Exception::problem_source() const { 
           return fproblem_source.get() && fproblem_source->size()?fproblem_source:undefined_source; 
 }  }

Removed from v.1.10  
changed lines
  Added in v.1.43.2.9


E-mail: