From 84b9f680e453ec2f6136346dc41e1da0af495a93 Mon Sep 17 00:00:00 2001
From: Jason Edward Stewart <jasons@apache.org>
Date: Wed, 12 Mar 2008 14:41:36 +0000
Subject: [PATCH] fixed abstract class problem, so SAXParser::new() is
 generated

git-svn-id: https://svn.apache.org/repos/asf/xerces/c/trunk@636346 13f79535-47bb-0310-9956-ffa450edef68
---
 swig/perl/SAX/SAX.pm         |  12 ++
 swig/perl/SAX/Xerces_SAX.cpp | 352 ++++++++++++++++++++++++++++++++++-
 2 files changed, 359 insertions(+), 5 deletions(-)

diff --git a/swig/perl/SAX/SAX.pm b/swig/perl/SAX/SAX.pm
index 011ea8c2c..0267f9da2 100644
--- a/swig/perl/SAX/SAX.pm
+++ b/swig/perl/SAX/SAX.pm
@@ -535,6 +535,12 @@ use vars qw(@ISA %OWNER %ITERATORS %BLESSEDMEMBERS);
 *Val_Never = *XML::Xercesc::SAXParser_Val_Never;
 *Val_Always = *XML::Xercesc::SAXParser_Val_Always;
 *Val_Auto = *XML::Xercesc::SAXParser_Val_Auto;
+sub new {
+    my $pkg = shift;
+    my $self = XML::Xercesc::new_SAXParser(@_);
+    bless $self, $pkg if defined($self);
+}
+
 sub DESTROY {
     return unless $_[0]->isa('HASH');
     my $self = tied(%{$_[0]});
@@ -787,6 +793,12 @@ use vars qw(@ISA %OWNER %ITERATORS %BLESSEDMEMBERS);
 @ISA = qw( XML::Xerces::ContentHandler XML::Xerces::DocumentHandler XML::Xerces::PerlCallbackHandler XML::Xerces );
 %OWNER = ();
 %ITERATORS = ();
+sub new {
+    my $pkg = shift;
+    my $self = XML::Xercesc::new_PerlSAXCallbackHandler(@_);
+    bless $self, $pkg if defined($self);
+}
+
 sub DESTROY {
     return unless $_[0]->isa('HASH');
     my $self = tied(%{$_[0]});
diff --git a/swig/perl/SAX/Xerces_SAX.cpp b/swig/perl/SAX/Xerces_SAX.cpp
index 3325bcf5c..93ed7b507 100644
--- a/swig/perl/SAX/Xerces_SAX.cpp
+++ b/swig/perl/SAX/Xerces_SAX.cpp
@@ -5807,6 +5807,243 @@ XS(_wrap_Parser_parse) {
 }
 
 
+XS(_wrap_new_SAXParser__SWIG_0) {
+  {
+    XERCES_CPP_NAMESPACE::XMLValidator *arg1 = (XERCES_CPP_NAMESPACE::XMLValidator *) (XERCES_CPP_NAMESPACE::XMLValidator *)0 ;
+    XERCES_CPP_NAMESPACE::MemoryManager *arg2 = (XERCES_CPP_NAMESPACE::MemoryManager *) (XERCES_CPP_NAMESPACE::MemoryManager *)0 ;
+    XERCES_CPP_NAMESPACE::XMLGrammarPool *arg3 = (XERCES_CPP_NAMESPACE::XMLGrammarPool *) (XERCES_CPP_NAMESPACE::XMLGrammarPool *)0 ;
+    XERCES_CPP_NAMESPACE::SAXParser *result = 0 ;
+    void *argp2 = 0 ;
+    int res2 = 0 ;
+    void *argp3 = 0 ;
+    int res3 = 0 ;
+    int argvi = 0;
+    dXSARGS;
+    
+    arg2 = XERCES_CPP_NAMESPACE::XMLPlatformUtils::fgMemoryManager;
+    if ((items < 1) || (items > 3)) {
+      SWIG_croak("Usage: new_SAXParser(valToAdopt,manager,gramPool);");
+    }
+    {
+      if (ST(0) != &PL_sv_undef) {
+        int rc = SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_XERCES_CPP_NAMESPACE__XMLValidator, SWIG_POINTER_DISOWN |  0);
+        if (!SWIG_IsOK(rc)) {
+          SWIG_exception_fail(SWIG_ArgError(SWIG_TypeError), "in method '" "new_SAXParser" "', argument " "1"" of type '" "XERCES_CPP_NAMESPACE::XMLValidator *const""'");
+        }
+      }
+    }
+    if (items > 1) {
+      res2 = SWIG_ConvertPtr(ST(1), &argp2,SWIGTYPE_p_XERCES_CPP_NAMESPACE__MemoryManager, 0 |  0 );
+      if (!SWIG_IsOK(res2)) {
+        SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "new_SAXParser" "', argument " "2"" of type '" "XERCES_CPP_NAMESPACE::MemoryManager *const""'"); 
+      }
+      arg2 = reinterpret_cast< XERCES_CPP_NAMESPACE::MemoryManager * >(argp2);
+    }
+    if (items > 2) {
+      res3 = SWIG_ConvertPtr(ST(2), &argp3,SWIGTYPE_p_XERCES_CPP_NAMESPACE__XMLGrammarPool, 0 |  0 );
+      if (!SWIG_IsOK(res3)) {
+        SWIG_exception_fail(SWIG_ArgError(res3), "in method '" "new_SAXParser" "', argument " "3"" of type '" "XERCES_CPP_NAMESPACE::XMLGrammarPool *const""'"); 
+      }
+      arg3 = reinterpret_cast< XERCES_CPP_NAMESPACE::XMLGrammarPool * >(argp3);
+    }
+    {
+      try 
+      {
+        result = (XERCES_CPP_NAMESPACE::SAXParser *)new XERCES_CPP_NAMESPACE::SAXParser(arg1,arg2,arg3);
+      } 
+      CATCH_XML_EXCEPTION
+    }
+    ST(argvi) = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_XERCES_CPP_NAMESPACE__SAXParser, SWIG_OWNER | SWIG_SHADOW); argvi++ ;
+    
+    
+    
+    XSRETURN(argvi);
+  fail:
+    
+    
+    
+    SWIG_croak_null();
+  }
+}
+
+
+XS(_wrap_new_SAXParser__SWIG_1) {
+  {
+    XERCES_CPP_NAMESPACE::XMLValidator *arg1 = (XERCES_CPP_NAMESPACE::XMLValidator *) (XERCES_CPP_NAMESPACE::XMLValidator *)0 ;
+    XERCES_CPP_NAMESPACE::MemoryManager *arg2 = (XERCES_CPP_NAMESPACE::MemoryManager *) (XERCES_CPP_NAMESPACE::MemoryManager *)0 ;
+    XERCES_CPP_NAMESPACE::SAXParser *result = 0 ;
+    void *argp2 = 0 ;
+    int res2 = 0 ;
+    int argvi = 0;
+    dXSARGS;
+    
+    arg2 = XERCES_CPP_NAMESPACE::XMLPlatformUtils::fgMemoryManager;
+    if ((items < 1) || (items > 2)) {
+      SWIG_croak("Usage: new_SAXParser(valToAdopt,manager);");
+    }
+    {
+      if (ST(0) != &PL_sv_undef) {
+        int rc = SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_XERCES_CPP_NAMESPACE__XMLValidator, SWIG_POINTER_DISOWN |  0);
+        if (!SWIG_IsOK(rc)) {
+          SWIG_exception_fail(SWIG_ArgError(SWIG_TypeError), "in method '" "new_SAXParser" "', argument " "1"" of type '" "XERCES_CPP_NAMESPACE::XMLValidator *const""'");
+        }
+      }
+    }
+    if (items > 1) {
+      res2 = SWIG_ConvertPtr(ST(1), &argp2,SWIGTYPE_p_XERCES_CPP_NAMESPACE__MemoryManager, 0 |  0 );
+      if (!SWIG_IsOK(res2)) {
+        SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "new_SAXParser" "', argument " "2"" of type '" "XERCES_CPP_NAMESPACE::MemoryManager *const""'"); 
+      }
+      arg2 = reinterpret_cast< XERCES_CPP_NAMESPACE::MemoryManager * >(argp2);
+    }
+    {
+      try 
+      {
+        result = (XERCES_CPP_NAMESPACE::SAXParser *)new XERCES_CPP_NAMESPACE::SAXParser(arg1,arg2);
+      } 
+      CATCH_XML_EXCEPTION
+    }
+    ST(argvi) = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_XERCES_CPP_NAMESPACE__SAXParser, SWIG_OWNER | SWIG_SHADOW); argvi++ ;
+    
+    
+    XSRETURN(argvi);
+  fail:
+    
+    
+    SWIG_croak_null();
+  }
+}
+
+
+XS(_wrap_new_SAXParser__SWIG_2) {
+  {
+    XERCES_CPP_NAMESPACE::SAXParser *result = 0 ;
+    int argvi = 0;
+    dXSARGS;
+    
+    if ((items < 0) || (items > 0)) {
+      SWIG_croak("Usage: new_SAXParser();");
+    }
+    {
+      try 
+      {
+        result = (XERCES_CPP_NAMESPACE::SAXParser *)new XERCES_CPP_NAMESPACE::SAXParser();
+      } 
+      CATCH_XML_EXCEPTION
+    }
+    ST(argvi) = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_XERCES_CPP_NAMESPACE__SAXParser, SWIG_OWNER | SWIG_SHADOW); argvi++ ;
+    XSRETURN(argvi);
+  fail:
+    SWIG_croak_null();
+  }
+}
+
+
+XS(_wrap_new_SAXParser) {
+  dXSARGS;
+  
+  {
+    unsigned long _index = 0;
+    SWIG_TypeRank _rank = 0; 
+    if (items == 0) {
+      SWIG_TypeRank _ranki = 0;
+      SWIG_TypeRank _rankm = 0;
+      if (!_index || (_ranki < _rank)) {
+        _rank = _ranki; _index = 1;
+        if (_rank == _rankm) goto dispatch;
+      }
+    }
+    if ((items >= 1) && (items <= 2)) {
+      SWIG_TypeRank _ranki = 0;
+      SWIG_TypeRank _rankm = 0;
+      SWIG_TypeRank _pi = 1;
+      int _v = 0;
+      {
+        void *vptr = 0;
+        int res = SWIG_ConvertPtr(ST(0), &vptr, SWIGTYPE_p_XERCES_CPP_NAMESPACE__XMLValidator, 0);
+        _v = SWIG_CheckState(res);
+      }
+      if (!_v) goto check_2;
+      _ranki += _v*_pi;
+      _rankm += _pi;
+      _pi *= SWIG_MAXCASTRANK;
+      if (items > 1) {
+        {
+          void *vptr = 0;
+          int res = SWIG_ConvertPtr(ST(1), &vptr, SWIGTYPE_p_XERCES_CPP_NAMESPACE__MemoryManager, 0);
+          _v = SWIG_CheckState(res);
+        }
+        if (!_v) goto check_2;
+        _ranki += _v*_pi;
+        _rankm += _pi;
+        _pi *= SWIG_MAXCASTRANK;
+      }
+      if (!_index || (_ranki < _rank)) {
+        _rank = _ranki; _index = 2;
+        if (_rank == _rankm) goto dispatch;
+      }
+    }
+  check_2:
+    
+    if ((items >= 1) && (items <= 3)) {
+      SWIG_TypeRank _ranki = 0;
+      SWIG_TypeRank _rankm = 0;
+      SWIG_TypeRank _pi = 1;
+      int _v = 0;
+      {
+        void *vptr = 0;
+        int res = SWIG_ConvertPtr(ST(0), &vptr, SWIGTYPE_p_XERCES_CPP_NAMESPACE__XMLValidator, 0);
+        _v = SWIG_CheckState(res);
+      }
+      if (!_v) goto check_3;
+      _ranki += _v*_pi;
+      _rankm += _pi;
+      _pi *= SWIG_MAXCASTRANK;
+      if (items > 1) {
+        {
+          void *vptr = 0;
+          int res = SWIG_ConvertPtr(ST(1), &vptr, SWIGTYPE_p_XERCES_CPP_NAMESPACE__MemoryManager, 0);
+          _v = SWIG_CheckState(res);
+        }
+        if (!_v) goto check_3;
+        _ranki += _v*_pi;
+        _rankm += _pi;
+        _pi *= SWIG_MAXCASTRANK;
+        if (items > 2) {
+          {
+            void *vptr = 0;
+            int res = SWIG_ConvertPtr(ST(2), &vptr, SWIGTYPE_p_XERCES_CPP_NAMESPACE__XMLGrammarPool, 0);
+            _v = SWIG_CheckState(res);
+          }
+          if (!_v) goto check_3;
+          _ranki += _v*_pi;
+          _rankm += _pi;
+          _pi *= SWIG_MAXCASTRANK;
+        }
+      }
+      if (!_index || (_ranki < _rank)) {
+        _rank = _ranki; _index = 3;
+        if (_rank == _rankm) goto dispatch;
+      }
+    }
+  check_3:
+    
+  dispatch:
+    switch(_index) {
+    case 1:
+      ++PL_markstack_ptr; SWIG_CALLXS(_wrap_new_SAXParser__SWIG_2); return;
+    case 2:
+      ++PL_markstack_ptr; SWIG_CALLXS(_wrap_new_SAXParser__SWIG_1); return;
+    case 3:
+      ++PL_markstack_ptr; SWIG_CALLXS(_wrap_new_SAXParser__SWIG_0); return;
+    }
+  }
+  
+  croak("No matching function for overloaded 'new_SAXParser'");
+  XSRETURN(0);
+}
+
+
 XS(_wrap_delete_SAXParser) {
   {
     XERCES_CPP_NAMESPACE::SAXParser *arg1 = (XERCES_CPP_NAMESPACE::SAXParser *) 0 ;
@@ -12025,6 +12262,109 @@ XS(_wrap_XMLReaderFactory_createXMLReader) {
 }
 
 
+XS(_wrap_new_PerlSAXCallbackHandler__SWIG_0) {
+  {
+    XERCES_CPP_NAMESPACE::PerlSAXCallbackHandler *result = 0 ;
+    int argvi = 0;
+    dXSARGS;
+    
+    if ((items < 0) || (items > 0)) {
+      SWIG_croak("Usage: new_PerlSAXCallbackHandler();");
+    }
+    {
+      try 
+      {
+        result = (XERCES_CPP_NAMESPACE::PerlSAXCallbackHandler *)new XERCES_CPP_NAMESPACE::PerlSAXCallbackHandler();
+      } 
+      CATCH_XML_EXCEPTION
+    }
+    ST(argvi) = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_XERCES_CPP_NAMESPACE__PerlSAXCallbackHandler, SWIG_OWNER | SWIG_SHADOW); argvi++ ;
+    XSRETURN(argvi);
+  fail:
+    SWIG_croak_null();
+  }
+}
+
+
+XS(_wrap_new_PerlSAXCallbackHandler__SWIG_1) {
+  {
+    SV *arg1 = (SV *) 0 ;
+    XERCES_CPP_NAMESPACE::PerlSAXCallbackHandler *result = 0 ;
+    int argvi = 0;
+    dXSARGS;
+    
+    if ((items < 1) || (items > 1)) {
+      SWIG_croak("Usage: new_PerlSAXCallbackHandler(obj);");
+    }
+    {
+      arg1 = ST(0);
+    }
+    {
+      try 
+      {
+        result = (XERCES_CPP_NAMESPACE::PerlSAXCallbackHandler *)new XERCES_CPP_NAMESPACE::PerlSAXCallbackHandler(arg1);
+      } 
+      CATCH_XML_EXCEPTION
+    }
+    ST(argvi) = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_XERCES_CPP_NAMESPACE__PerlSAXCallbackHandler, SWIG_OWNER | SWIG_SHADOW); argvi++ ;
+    
+    XSRETURN(argvi);
+  fail:
+    
+    SWIG_croak_null();
+  }
+}
+
+
+XS(_wrap_new_PerlSAXCallbackHandler) {
+  dXSARGS;
+  
+  {
+    unsigned long _index = 0;
+    SWIG_TypeRank _rank = 0; 
+    if (items == 0) {
+      SWIG_TypeRank _ranki = 0;
+      SWIG_TypeRank _rankm = 0;
+      if (!_index || (_ranki < _rank)) {
+        _rank = _ranki; _index = 1;
+        if (_rank == _rankm) goto dispatch;
+      }
+    }
+    if (items == 1) {
+      SWIG_TypeRank _ranki = 0;
+      SWIG_TypeRank _rankm = 0;
+      SWIG_TypeRank _pi = 1;
+      int _v = 0;
+      {
+        {
+          _v = 1;
+        }
+      }
+      if (!_v) goto check_2;
+      _ranki += _v*_pi;
+      _rankm += _pi;
+      _pi *= SWIG_MAXCASTRANK;
+      if (!_index || (_ranki < _rank)) {
+        _rank = _ranki; _index = 2;
+        if (_rank == _rankm) goto dispatch;
+      }
+    }
+  check_2:
+    
+  dispatch:
+    switch(_index) {
+    case 1:
+      ++PL_markstack_ptr; SWIG_CALLXS(_wrap_new_PerlSAXCallbackHandler__SWIG_0); return;
+    case 2:
+      ++PL_markstack_ptr; SWIG_CALLXS(_wrap_new_PerlSAXCallbackHandler__SWIG_1); return;
+    }
+  }
+  
+  croak("No matching function for overloaded 'new_PerlSAXCallbackHandler'");
+  XSRETURN(0);
+}
+
+
 XS(_wrap_delete_PerlSAXCallbackHandler) {
   {
     XERCES_CPP_NAMESPACE::PerlSAXCallbackHandler *arg1 = (XERCES_CPP_NAMESPACE::PerlSAXCallbackHandler *) 0 ;
@@ -12097,10 +12437,10 @@ XS(_wrap_PerlSAXCallbackHandler_characters) {
   {
     XERCES_CPP_NAMESPACE::PerlSAXCallbackHandler *arg1 = (XERCES_CPP_NAMESPACE::PerlSAXCallbackHandler *) 0 ;
     XMLCh *arg2 = (XMLCh *) (XMLCh *)0 ;
-    unsigned int arg3 ;
+    XMLSize_t arg3 ;
     void *argp1 = 0 ;
     int res1 = 0 ;
-    unsigned int val3 ;
+    size_t val3 ;
     int ecode3 = 0 ;
     int argvi = 0;
     dXSARGS;
@@ -12117,11 +12457,11 @@ XS(_wrap_PerlSAXCallbackHandler_characters) {
     // we convert *everything* into a string *including* null/undef
     arg2 = UTF8_TRANSCODER->Local2XMLString(ST(1));
     
-    ecode3 = SWIG_AsVal_unsigned_SS_int SWIG_PERL_CALL_ARGS_2(ST(2), &val3);
+    ecode3 = SWIG_AsVal_size_t SWIG_PERL_CALL_ARGS_2(ST(2), &val3);
     if (!SWIG_IsOK(ecode3)) {
-      SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "PerlSAXCallbackHandler_characters" "', argument " "3"" of type '" "unsigned int""'");
+      SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "PerlSAXCallbackHandler_characters" "', argument " "3"" of type '" "XMLSize_t""'");
     } 
-    arg3 = static_cast< unsigned int >(val3);
+    arg3 = static_cast< XMLSize_t >(val3);
     {
       try 
       {
@@ -13090,6 +13430,7 @@ static swig_command_info swig_commands[] = {
 {"XML::Xercesc::Parser_setDocumentHandler", _wrap_Parser_setDocumentHandler},
 {"XML::Xercesc::Parser_setErrorHandler", _wrap_Parser_setErrorHandler},
 {"XML::Xercesc::Parser_parse", _wrap_Parser_parse},
+{"XML::Xercesc::new_SAXParser", _wrap_new_SAXParser},
 {"XML::Xercesc::delete_SAXParser", _wrap_delete_SAXParser},
 {"XML::Xercesc::SAXParser_getDocumentHandler", _wrap_SAXParser_getDocumentHandler},
 {"XML::Xercesc::SAXParser_getEntityResolver", _wrap_SAXParser_getEntityResolver},
@@ -13200,6 +13541,7 @@ static swig_command_info swig_commands[] = {
 {"XML::Xercesc::SAX2XMLReader_installAdvDocHandler", _wrap_SAX2XMLReader_installAdvDocHandler},
 {"XML::Xercesc::SAX2XMLReader_removeAdvDocHandler", _wrap_SAX2XMLReader_removeAdvDocHandler},
 {"XML::Xercesc::XMLReaderFactory_createXMLReader", _wrap_XMLReaderFactory_createXMLReader},
+{"XML::Xercesc::new_PerlSAXCallbackHandler", _wrap_new_PerlSAXCallbackHandler},
 {"XML::Xercesc::delete_PerlSAXCallbackHandler", _wrap_delete_PerlSAXCallbackHandler},
 {"XML::Xercesc::PerlSAXCallbackHandler_type", _wrap_PerlSAXCallbackHandler_type},
 {"XML::Xercesc::PerlSAXCallbackHandler_characters", _wrap_PerlSAXCallbackHandler_characters},
-- 
GitLab