You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@xerces.apache.org by ja...@apache.org on 2002/03/28 09:00:00 UTC

cvs commit: xml-xerces/perl ChangeLog MANIFEST TODO Xerces.C Xerces.pm

jasons      02/03/28 00:00:00

  Modified:    perl     ChangeLog MANIFEST TODO Xerces.C Xerces.pm
  Log:
  usual
  
  Revision  Changes    Path
  1.43      +54 -0     xml-xerces/perl/ChangeLog
  
  Index: ChangeLog
  ===================================================================
  RCS file: /home/cvs/xml-xerces/perl/ChangeLog,v
  retrieving revision 1.42
  retrieving revision 1.43
  diff -u -r1.42 -r1.43
  --- ChangeLog	27 Mar 2002 01:29:31 -0000	1.42
  +++ ChangeLog	28 Mar 2002 07:59:58 -0000	1.43
  @@ -1,3 +1,57 @@
  +2002-03-28  Jason E. Stewart  <ja...@openinformatics.com>
  +
  +	* postModule.pl (Repository): 
  +	removed old IDOM_Node equality operator code
  +	added overloaded constructors for the *Handler's
  +	fixed the other broken callback code that stored the reference in
  +	   the wrong places
  +
  +	* postSource.pl (Repository): 
  +	removed old IDOM_Node equality operator code
  +
  +	* Makefile.PL (Repository): 
  +	made Xerces.C dependent on the Handler/*.i files
  +
  +	* Xerces.i (Repository): 
  +	new cleaner method for IDOM_Node equality operators
  +	added support for DOM_NodeFilter
  +	added overloaded constructors for the *Handler's
  +
  +	* Xerces-extra.pm (Repository): 
  +	added PerlNodeFilter class
  +
  +	* t/DOM_Node.t (Repository): 
  +	new tests for equality operators
  +
  +	* t/PerlErrorHandler.t (Repository): 
  +	added new test for re-defining the error handler
  +	fails to return an object 
  +
  +	* t/DOM_TreeWalker.t (Repository): 
  +	* t/DOM_NodeIterator.t (Repository): 
  +	new test for test node filters
  +
  +	* Handler/PerlErrorCallbackHandler.hpp (Repository): 
  +	* Handler/PerlEntityResolverHandler.hpp (Repository): 
  +	* Handler/PerlDocumentCallbackHandler.hpp (Repository): 
  +	* Handler/PerlContentCallbackHandler.hpp (Repository): 
  +	moved code to PerlCallbackHandler
  +
  +	* Handler/Makefile.PL (Repository): 
  +	skip the dynamic make
  +
  +	* Handler/PerlNodeFilterCallbackHandler.swig.hpp (Repository): 
  +	new node filter class for tree walkers and node iterators
  +
  +	* Handler/PerlCallbackHandler.swig.hpp (Repository): 
  +	new unified callback class
  +
  +	* Handler/PerlErrorCallbackHandler.swig.hpp (Repository): 
  +	* Handler/PerlEntityResolverHandler.swig.hpp (Repository): 
  +	* Handler/PerlDocumentCallbackHandler.swig.hpp (Repository): 
  +	* Handler/PerlContentCallbackHandler.swig.hpp (Repository): 
  +	no longer need separate files
  +
   2002-03-26  Jason E. Stewart  <ja...@openinformatics.com>
   
   	* postModule.pl (Repository): 
  
  
  
  1.21      +6 -6      xml-xerces/perl/MANIFEST
  
  Index: MANIFEST
  ===================================================================
  RCS file: /home/cvs/xml-xerces/perl/MANIFEST,v
  retrieving revision 1.20
  retrieving revision 1.21
  diff -u -r1.20 -r1.21
  --- MANIFEST	27 Mar 2002 01:29:31 -0000	1.20
  +++ MANIFEST	28 Mar 2002 07:59:58 -0000	1.21
  @@ -4,19 +4,19 @@
   DOMParse/Makefile.PL
   FAQ
   Handler/Makefile.PL
  -Handler/PerlContentCallbackHandler.cpp
  +Handler/PerlCallbackHandler.cpp
  +Handler/PerlCallbackHandler.hpp
  +Handler/PerlCallbackHandler.swig.hpp
  +Handler/PerlCallbackHandler.cpp
   Handler/PerlContentCallbackHandler.hpp
  -Handler/PerlContentCallbackHandler.swig.hpp
  -Handler/PerlDefaultCallbackHandler.hpp
   Handler/PerlDocumentCallbackHandler.cpp
   Handler/PerlDocumentCallbackHandler.hpp
  -Handler/PerlDocumentCallbackHandler.swig.hpp
   Handler/PerlErrorCallbackHandler.cpp
   Handler/PerlErrorCallbackHandler.hpp
  -Handler/PerlErrorCallbackHandler.swig.hpp
   Handler/PerlEntityResolverHandler.hpp
   Handler/PerlEntityResolverHandler.i
  -Handler/PerlEntityResolverHandler.swig.hpp
  +Handler/PerlNodeFilterCallbackHandler.hpp
  +Handler/PerlNodeFilterCallbackHandler.i
   INSTALL
   LICENSE
   MANIFEST
  
  
  
  1.15      +3 -3      xml-xerces/perl/TODO
  
  Index: TODO
  ===================================================================
  RCS file: /home/cvs/xml-xerces/perl/TODO,v
  retrieving revision 1.14
  retrieving revision 1.15
  diff -u -r1.14 -r1.15
  --- TODO	27 Mar 2002 01:29:31 -0000	1.14
  +++ TODO	28 Mar 2002 07:59:58 -0000	1.15
  @@ -24,11 +24,11 @@
   Internals:
   ==========
   Mon Mar 25 00:37:58 MST 2002
  -* callbacks for DOM_NodeFilter
  -* test for TreeWalker
  +Fixed ==> * callbacks for DOM_NodeFilter
  +Fixed ==> * test for TreeWalker
   
   Thu Mar 21 08:49:08 MST 2002
  -* implement a way to export IDOM documents (see RE: IDOM memory model
  +Fixed ==> * implement a way to export IDOM documents (see RE: IDOM memory model
     in xerces-c-dev)
   
   Fri Jan 18 23:36:20 MST 2002
  
  
  
  1.13      +555 -484  xml-xerces/perl/Xerces.C
  
  Index: Xerces.C
  ===================================================================
  RCS file: /home/cvs/xml-xerces/perl/Xerces.C,v
  retrieving revision 1.12
  retrieving revision 1.13
  diff -u -r1.12 -r1.13
  --- Xerces.C	27 Mar 2002 01:29:31 -0000	1.12
  +++ Xerces.C	28 Mar 2002 07:59:58 -0000	1.13
  @@ -491,9 +491,9 @@
   #define  SWIGTYPE_p_XMLAttr swig_types[4] 
   #define  SWIGTYPE_p_AttributeList swig_types[5] 
   #define  SWIGTYPE_p_bool swig_types[6] 
  -#define  SWIGTYPE_p_QName swig_types[7] 
  +#define  SWIGTYPE_p_IDOM_NodeFilter swig_types[7] 
   #define  SWIGTYPE_p_p_QName swig_types[8] 
  -#define  SWIGTYPE_p_IDOM_NodeFilter swig_types[9] 
  +#define  SWIGTYPE_p_QName swig_types[9] 
   #define  SWIGTYPE_p_XMLNotationDecl swig_types[10] 
   #define  SWIGTYPE_p_IDOM_DocumentType swig_types[11] 
   #define  SWIGTYPE_p_XMLElementDecl swig_types[12] 
  @@ -521,51 +521,52 @@
   #define  SWIGTYPE_p_EntityResolver swig_types[34] 
   #define  SWIGTYPE_p_XMLDocumentHandler swig_types[35] 
   #define  SWIGTYPE_p_DeclHandler swig_types[36] 
  -#define  SWIGTYPE_p_PerlEntityResolverHandler swig_types[37] 
  -#define  SWIGTYPE_p_PerlContentCallbackHandler swig_types[38] 
  -#define  SWIGTYPE_p_PerlDocumentCallbackHandler swig_types[39] 
  -#define  SWIGTYPE_p_PerlErrorCallbackHandler swig_types[40] 
  -#define  SWIGTYPE_p_DefaultHandler swig_types[41] 
  -#define  SWIGTYPE_p_LexicalHandler swig_types[42] 
  -#define  SWIGTYPE_p_ContentHandler swig_types[43] 
  -#define  SWIGTYPE_p_ErrorHandler swig_types[44] 
  -#define  SWIGTYPE_p_DocumentHandler swig_types[45] 
  -#define  SWIGTYPE_p_DTDHandler swig_types[46] 
  -#define  SWIGTYPE_p_IDOM_TreeWalker swig_types[47] 
  -#define  SWIGTYPE_p_IDOM_Range swig_types[48] 
  -#define  SWIGTYPE_p_IDOM_Node swig_types[49] 
  -#define  SWIGTYPE_p_XMLValid__Codes swig_types[50] 
  -#define  SWIGTYPE_p_XMLMsgLoader swig_types[51] 
  -#define  SWIGTYPE_p_XMLBufferMgr swig_types[52] 
  -#define  SWIGTYPE_p_Locator swig_types[53] 
  -#define  SWIGTYPE_p_IDOM_DocumentFragment swig_types[54] 
  -#define  SWIGTYPE_p_IDOM_CharacterData swig_types[55] 
  -#define  SWIGTYPE_p_BinInputStream swig_types[56] 
  -#define  SWIGTYPE_p_URLInputSource swig_types[57] 
  -#define  SWIGTYPE_p_LocalFileInputSource swig_types[58] 
  -#define  SWIGTYPE_p_StdInInputSource swig_types[59] 
  -#define  SWIGTYPE_p_MemBufInputSource swig_types[60] 
  -#define  SWIGTYPE_p_InputSource swig_types[61] 
  -#define  SWIGTYPE_p_IDOM_NamedNodeMap swig_types[62] 
  -#define  SWIGTYPE_p_ReaderMgr swig_types[63] 
  -#define  SWIGTYPE_p_IDOM_NodeList swig_types[64] 
  -#define  SWIGTYPE_p_Grammar swig_types[65] 
  -#define  SWIGTYPE_p_SAX2XMLReader swig_types[66] 
  -#define  SWIGTYPE_p_SV swig_types[67] 
  -#define  SWIGTYPE_p_IDOM_Comment swig_types[68] 
  -#define  SWIGTYPE_p_SAXParser swig_types[69] 
  -#define  SWIGTYPE_p_HandlerBase swig_types[70] 
  -#define  SWIGTYPE_p_XMLUri swig_types[71] 
  -#define  SWIGTYPE_p_unsigned_int swig_types[72] 
  -#define  SWIGTYPE_p_IDOM_ProcessingInstruction swig_types[73] 
  -#define  SWIGTYPE_p_IDOM_Attr swig_types[74] 
  -#define  SWIGTYPE_p_IDOM_CDATASection swig_types[75] 
  -#define  SWIGTYPE_p_XMLErrorReporter__ErrTypes swig_types[76] 
  -#define  SWIGTYPE_p_XMLPScanToken swig_types[77] 
  -#define  SWIGTYPE_p_IDOM_Element swig_types[78] 
  -#define  SWIGTYPE_p_IDOM_Entity swig_types[79] 
  -#define  SWIGTYPE_p_XMLValidator swig_types[80] 
  -static swig_type_info *swig_types[81];
  +#define  SWIGTYPE_p_DefaultHandler swig_types[37] 
  +#define  SWIGTYPE_p_LexicalHandler swig_types[38] 
  +#define  SWIGTYPE_p_DTDHandler swig_types[39] 
  +#define  SWIGTYPE_p_ErrorHandler swig_types[40] 
  +#define  SWIGTYPE_p_ContentHandler swig_types[41] 
  +#define  SWIGTYPE_p_DocumentHandler swig_types[42] 
  +#define  SWIGTYPE_p_PerlCallbackHandler swig_types[43] 
  +#define  SWIGTYPE_p_PerlNodeFilterCallbackHandler swig_types[44] 
  +#define  SWIGTYPE_p_PerlDocumentCallbackHandler swig_types[45] 
  +#define  SWIGTYPE_p_PerlContentCallbackHandler swig_types[46] 
  +#define  SWIGTYPE_p_PerlEntityResolverHandler swig_types[47] 
  +#define  SWIGTYPE_p_PerlErrorCallbackHandler swig_types[48] 
  +#define  SWIGTYPE_p_IDOM_TreeWalker swig_types[49] 
  +#define  SWIGTYPE_p_IDOM_Range swig_types[50] 
  +#define  SWIGTYPE_p_IDOM_Node swig_types[51] 
  +#define  SWIGTYPE_p_XMLValid__Codes swig_types[52] 
  +#define  SWIGTYPE_p_XMLMsgLoader swig_types[53] 
  +#define  SWIGTYPE_p_XMLBufferMgr swig_types[54] 
  +#define  SWIGTYPE_p_Locator swig_types[55] 
  +#define  SWIGTYPE_p_IDOM_DocumentFragment swig_types[56] 
  +#define  SWIGTYPE_p_IDOM_CharacterData swig_types[57] 
  +#define  SWIGTYPE_p_BinInputStream swig_types[58] 
  +#define  SWIGTYPE_p_URLInputSource swig_types[59] 
  +#define  SWIGTYPE_p_LocalFileInputSource swig_types[60] 
  +#define  SWIGTYPE_p_StdInInputSource swig_types[61] 
  +#define  SWIGTYPE_p_MemBufInputSource swig_types[62] 
  +#define  SWIGTYPE_p_InputSource swig_types[63] 
  +#define  SWIGTYPE_p_IDOM_NamedNodeMap swig_types[64] 
  +#define  SWIGTYPE_p_ReaderMgr swig_types[65] 
  +#define  SWIGTYPE_p_IDOM_NodeList swig_types[66] 
  +#define  SWIGTYPE_p_Grammar swig_types[67] 
  +#define  SWIGTYPE_p_SAX2XMLReader swig_types[68] 
  +#define  SWIGTYPE_p_IDOM_Comment swig_types[69] 
  +#define  SWIGTYPE_p_SAXParser swig_types[70] 
  +#define  SWIGTYPE_p_HandlerBase swig_types[71] 
  +#define  SWIGTYPE_p_XMLUri swig_types[72] 
  +#define  SWIGTYPE_p_unsigned_int swig_types[73] 
  +#define  SWIGTYPE_p_IDOM_ProcessingInstruction swig_types[74] 
  +#define  SWIGTYPE_p_IDOM_Attr swig_types[75] 
  +#define  SWIGTYPE_p_IDOM_CDATASection swig_types[76] 
  +#define  SWIGTYPE_p_XMLErrorReporter__ErrTypes swig_types[77] 
  +#define  SWIGTYPE_p_XMLPScanToken swig_types[78] 
  +#define  SWIGTYPE_p_IDOM_Element swig_types[79] 
  +#define  SWIGTYPE_p_IDOM_Entity swig_types[80] 
  +#define  SWIGTYPE_p_XMLValidator swig_types[81] 
  +static swig_type_info *swig_types[82];
   
   /* -------- TYPES TABLE (END) -------- */
   
  @@ -619,6 +620,7 @@
   
   #include "PerlErrorCallbackHandler.hpp"
   #include "PerlEntityResolverHandler.i"
  +#include "PerlNodeFilterCallbackHandler.i"
   #include "PerlDocumentCallbackHandler.hpp"
   #include "PerlContentCallbackHandler.hpp"
   
  @@ -826,6 +828,12 @@
      return NULL;
   }
   
  +bool IDOM_Node_operator_ee___(IDOM_Node *self,IDOM_Node const &other){
  +       return self == &other;
  +   }
  +bool IDOM_Node_operator_Ne___(IDOM_Node *self,IDOM_Node const &other){
  +       return self != &other;
  +   }
   #ifdef PERL_OBJECT
   #define MAGIC_CLASS _wrap_Xerces_var::
   class _wrap_Xerces_var : public CPerlObj {
  @@ -874,6 +882,291 @@
   #ifdef __cplusplus
   extern "C" {
   #endif
  +XS(_wrap_new_PerlNodeFilterCallbackHandler) {
  +    PerlNodeFilterCallbackHandler *result;
  +    int argvi = 0;
  +    dXSARGS;
  +    
  +    if ((items < 0) || (items > 0)) {
  +        croak("Usage: new_PerlNodeFilterCallbackHandler();");
  +    }
  +    result = (PerlNodeFilterCallbackHandler *)new PerlNodeFilterCallbackHandler();
  +    
  +    ST(argvi) = sv_newmortal();
  +    SWIG_MakePtr(ST(argvi++), (void *) result, SWIGTYPE_p_PerlNodeFilterCallbackHandler);
  +    XSRETURN(argvi);
  +}
  +
  +XS(_wrap_new_PerlNodeFilterCallbackHandler__constructor__arg) {
  +    SV *arg1 ;
  +    PerlNodeFilterCallbackHandler *result;
  +    int argvi = 0;
  +    dXSARGS;
  +    
  +    if ((items < 1) || (items > 1)) {
  +        croak("Usage: new_PerlNodeFilterCallbackHandler__constructor__arg(SV *);");
  +    }
  +    {
  +        arg1 = ST(0);
  +    }
  +    result = (PerlNodeFilterCallbackHandler *)new PerlNodeFilterCallbackHandler(arg1);
  +    
  +    ST(argvi) = sv_newmortal();
  +    SWIG_MakePtr(ST(argvi++), (void *) result, SWIGTYPE_p_PerlNodeFilterCallbackHandler);
  +    XSRETURN(argvi);
  +}
  +
  +XS(_wrap_PerlNodeFilterCallbackHandler_set_callback_obj) {
  +    PerlNodeFilterCallbackHandler *arg1 ;
  +    SV *arg2 ;
  +    int argvi = 0;
  +    dXSARGS;
  +    
  +    if ((items < 2) || (items > 2)) {
  +        croak("Usage: PerlNodeFilterCallbackHandler_set_callback_obj(self,SV *);");
  +    }
  +    {
  +        if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_PerlNodeFilterCallbackHandler) < 0) {
  +            croak("Type error in argument 1 of PerlNodeFilterCallbackHandler_set_callback_obj. Expected %s", SWIGTYPE_p_PerlNodeFilterCallbackHandler->name);
  +        }
  +    }
  +    {
  +        arg2 = ST(1);
  +    }
  +    (arg1)->set_callback_obj(arg2);
  +    
  +    
  +    XSRETURN(argvi);
  +}
  +
  +XS(_wrap_new_PerlDocumentCallbackHandler) {
  +    PerlDocumentCallbackHandler *result;
  +    int argvi = 0;
  +    dXSARGS;
  +    
  +    if ((items < 0) || (items > 0)) {
  +        croak("Usage: new_PerlDocumentCallbackHandler();");
  +    }
  +    result = (PerlDocumentCallbackHandler *)new PerlDocumentCallbackHandler();
  +    
  +    ST(argvi) = sv_newmortal();
  +    SWIG_MakePtr(ST(argvi++), (void *) result, SWIGTYPE_p_PerlDocumentCallbackHandler);
  +    XSRETURN(argvi);
  +}
  +
  +XS(_wrap_new_PerlDocumentCallbackHandler__constructor__arg) {
  +    SV *arg1 ;
  +    PerlDocumentCallbackHandler *result;
  +    int argvi = 0;
  +    dXSARGS;
  +    
  +    if ((items < 1) || (items > 1)) {
  +        croak("Usage: new_PerlDocumentCallbackHandler__constructor__arg(SV *);");
  +    }
  +    {
  +        arg1 = ST(0);
  +    }
  +    result = (PerlDocumentCallbackHandler *)new PerlDocumentCallbackHandler(arg1);
  +    
  +    ST(argvi) = sv_newmortal();
  +    SWIG_MakePtr(ST(argvi++), (void *) result, SWIGTYPE_p_PerlDocumentCallbackHandler);
  +    XSRETURN(argvi);
  +}
  +
  +XS(_wrap_PerlDocumentCallbackHandler_set_callback_obj) {
  +    PerlDocumentCallbackHandler *arg1 ;
  +    SV *arg2 ;
  +    int argvi = 0;
  +    dXSARGS;
  +    
  +    if ((items < 2) || (items > 2)) {
  +        croak("Usage: PerlDocumentCallbackHandler_set_callback_obj(self,SV *);");
  +    }
  +    {
  +        if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_PerlDocumentCallbackHandler) < 0) {
  +            croak("Type error in argument 1 of PerlDocumentCallbackHandler_set_callback_obj. Expected %s", SWIGTYPE_p_PerlDocumentCallbackHandler->name);
  +        }
  +    }
  +    {
  +        arg2 = ST(1);
  +    }
  +    (arg1)->set_callback_obj(arg2);
  +    
  +    
  +    XSRETURN(argvi);
  +}
  +
  +XS(_wrap_new_PerlContentCallbackHandler) {
  +    PerlContentCallbackHandler *result;
  +    int argvi = 0;
  +    dXSARGS;
  +    
  +    if ((items < 0) || (items > 0)) {
  +        croak("Usage: new_PerlContentCallbackHandler();");
  +    }
  +    result = (PerlContentCallbackHandler *)new PerlContentCallbackHandler();
  +    
  +    ST(argvi) = sv_newmortal();
  +    SWIG_MakePtr(ST(argvi++), (void *) result, SWIGTYPE_p_PerlContentCallbackHandler);
  +    XSRETURN(argvi);
  +}
  +
  +XS(_wrap_new_PerlContentCallbackHandler__constructor__arg) {
  +    SV *arg1 ;
  +    PerlContentCallbackHandler *result;
  +    int argvi = 0;
  +    dXSARGS;
  +    
  +    if ((items < 1) || (items > 1)) {
  +        croak("Usage: new_PerlContentCallbackHandler__constructor__arg(SV *);");
  +    }
  +    {
  +        arg1 = ST(0);
  +    }
  +    result = (PerlContentCallbackHandler *)new PerlContentCallbackHandler(arg1);
  +    
  +    ST(argvi) = sv_newmortal();
  +    SWIG_MakePtr(ST(argvi++), (void *) result, SWIGTYPE_p_PerlContentCallbackHandler);
  +    XSRETURN(argvi);
  +}
  +
  +XS(_wrap_PerlContentCallbackHandler_set_callback_obj) {
  +    PerlContentCallbackHandler *arg1 ;
  +    SV *arg2 ;
  +    int argvi = 0;
  +    dXSARGS;
  +    
  +    if ((items < 2) || (items > 2)) {
  +        croak("Usage: PerlContentCallbackHandler_set_callback_obj(self,SV *);");
  +    }
  +    {
  +        if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_PerlContentCallbackHandler) < 0) {
  +            croak("Type error in argument 1 of PerlContentCallbackHandler_set_callback_obj. Expected %s", SWIGTYPE_p_PerlContentCallbackHandler->name);
  +        }
  +    }
  +    {
  +        arg2 = ST(1);
  +    }
  +    (arg1)->set_callback_obj(arg2);
  +    
  +    
  +    XSRETURN(argvi);
  +}
  +
  +XS(_wrap_new_PerlEntityResolverHandler) {
  +    PerlEntityResolverHandler *result;
  +    int argvi = 0;
  +    dXSARGS;
  +    
  +    if ((items < 0) || (items > 0)) {
  +        croak("Usage: new_PerlEntityResolverHandler();");
  +    }
  +    result = (PerlEntityResolverHandler *)new PerlEntityResolverHandler();
  +    
  +    ST(argvi) = sv_newmortal();
  +    SWIG_MakePtr(ST(argvi++), (void *) result, SWIGTYPE_p_PerlEntityResolverHandler);
  +    XSRETURN(argvi);
  +}
  +
  +XS(_wrap_new_PerlEntityResolverHandler__constructor__arg) {
  +    SV *arg1 ;
  +    PerlEntityResolverHandler *result;
  +    int argvi = 0;
  +    dXSARGS;
  +    
  +    if ((items < 1) || (items > 1)) {
  +        croak("Usage: new_PerlEntityResolverHandler__constructor__arg(SV *);");
  +    }
  +    {
  +        arg1 = ST(0);
  +    }
  +    result = (PerlEntityResolverHandler *)new PerlEntityResolverHandler(arg1);
  +    
  +    ST(argvi) = sv_newmortal();
  +    SWIG_MakePtr(ST(argvi++), (void *) result, SWIGTYPE_p_PerlEntityResolverHandler);
  +    XSRETURN(argvi);
  +}
  +
  +XS(_wrap_PerlEntityResolverHandler_set_callback_obj) {
  +    PerlEntityResolverHandler *arg1 ;
  +    SV *arg2 ;
  +    int argvi = 0;
  +    dXSARGS;
  +    
  +    if ((items < 2) || (items > 2)) {
  +        croak("Usage: PerlEntityResolverHandler_set_callback_obj(self,SV *);");
  +    }
  +    {
  +        if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_PerlEntityResolverHandler) < 0) {
  +            croak("Type error in argument 1 of PerlEntityResolverHandler_set_callback_obj. Expected %s", SWIGTYPE_p_PerlEntityResolverHandler->name);
  +        }
  +    }
  +    {
  +        arg2 = ST(1);
  +    }
  +    (arg1)->set_callback_obj(arg2);
  +    
  +    
  +    XSRETURN(argvi);
  +}
  +
  +XS(_wrap_new_PerlErrorCallbackHandler) {
  +    PerlErrorCallbackHandler *result;
  +    int argvi = 0;
  +    dXSARGS;
  +    
  +    if ((items < 0) || (items > 0)) {
  +        croak("Usage: new_PerlErrorCallbackHandler();");
  +    }
  +    result = (PerlErrorCallbackHandler *)new PerlErrorCallbackHandler();
  +    
  +    ST(argvi) = sv_newmortal();
  +    SWIG_MakePtr(ST(argvi++), (void *) result, SWIGTYPE_p_PerlErrorCallbackHandler);
  +    XSRETURN(argvi);
  +}
  +
  +XS(_wrap_new_PerlErrorCallbackHandler__constructor__arg) {
  +    SV *arg1 ;
  +    PerlErrorCallbackHandler *result;
  +    int argvi = 0;
  +    dXSARGS;
  +    
  +    if ((items < 1) || (items > 1)) {
  +        croak("Usage: new_PerlErrorCallbackHandler__constructor__arg(SV *);");
  +    }
  +    {
  +        arg1 = ST(0);
  +    }
  +    result = (PerlErrorCallbackHandler *)new PerlErrorCallbackHandler(arg1);
  +    
  +    ST(argvi) = sv_newmortal();
  +    SWIG_MakePtr(ST(argvi++), (void *) result, SWIGTYPE_p_PerlErrorCallbackHandler);
  +    XSRETURN(argvi);
  +}
  +
  +XS(_wrap_PerlErrorCallbackHandler_set_callback_obj) {
  +    PerlErrorCallbackHandler *arg1 ;
  +    SV *arg2 ;
  +    int argvi = 0;
  +    dXSARGS;
  +    
  +    if ((items < 2) || (items > 2)) {
  +        croak("Usage: PerlErrorCallbackHandler_set_callback_obj(self,SV *);");
  +    }
  +    {
  +        if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_PerlErrorCallbackHandler) < 0) {
  +            croak("Type error in argument 1 of PerlErrorCallbackHandler_set_callback_obj. Expected %s", SWIGTYPE_p_PerlErrorCallbackHandler->name);
  +        }
  +    }
  +    {
  +        arg2 = ST(1);
  +    }
  +    (arg1)->set_callback_obj(arg2);
  +    
  +    
  +    XSRETURN(argvi);
  +}
  +
   XS(_wrap_delete_XMLDeleter) {
       XMLDeleter *arg1 ;
       int argvi = 0;
  @@ -10749,333 +11042,12 @@
               arg3 = Perl2XMLString(ST(2));
           }else {
               croak("Type error in argument 2 of $name, Expected perl-string.");
  -            XSRETURN(1);
  -        }
  -    }
  -    {
  -        try {
  -            (arg1)->internalEntityDecl((XMLCh const *)arg2,(XMLCh const *)arg3);
  -            
  -        }
  -        catch (const XMLException& e)
  -        {
  -            makeXMLException(e);
  -        }
  -        catch (...)
  -        {
  -            XMLPlatformUtils::Terminate();
  -            croak("%s", "Handling Unknown exception");
  -        }
  -    }
  -    
  -    {
  -        delete[] arg2;
  -    }
  -    {
  -        delete[] arg3;
  -    }
  -    XSRETURN(argvi);
  -}
  -
  -XS(_wrap_DefaultHandler_externalEntityDecl) {
  -    DefaultHandler *arg1 ;
  -    XMLCh *arg2 ;
  -    XMLCh *arg3 ;
  -    XMLCh *arg4 ;
  -    int argvi = 0;
  -    dXSARGS;
  -    
  -    if ((items < 4) || (items > 4)) {
  -        croak("Usage: DefaultHandler_externalEntityDecl(self,name,publicId,systemId);");
  -    }
  -    {
  -        if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_DefaultHandler) < 0) {
  -            croak("Type error in argument 1 of DefaultHandler_externalEntityDecl. Expected %s", SWIGTYPE_p_DefaultHandler->name);
  -        }
  -    }
  -    {
  -        if (SvPOK(ST(1))||SvIOK(ST(1))||SvNOK(ST(1))) {
  -            arg2 = Perl2XMLString(ST(1));
  -        }else {
  -            croak("Type error in argument 2 of $name, Expected perl-string.");
  -            XSRETURN(1);
  -        }
  -    }
  -    {
  -        if (SvPOK(ST(2))||SvIOK(ST(2))||SvNOK(ST(2))) {
  -            arg3 = Perl2XMLString(ST(2));
  -        }else {
  -            croak("Type error in argument 2 of $name, Expected perl-string.");
  -            XSRETURN(1);
  -        }
  -    }
  -    {
  -        if (SvPOK(ST(3))||SvIOK(ST(3))||SvNOK(ST(3))) {
  -            arg4 = Perl2XMLString(ST(3));
  -        }else {
  -            croak("Type error in argument 2 of $name, Expected perl-string.");
  -            XSRETURN(1);
  -        }
  -    }
  -    {
  -        try {
  -            (arg1)->externalEntityDecl((XMLCh const *)arg2,(XMLCh const *)arg3,(XMLCh const *)arg4);
  -            
  -        }
  -        catch (const XMLException& e)
  -        {
  -            makeXMLException(e);
  -        }
  -        catch (...)
  -        {
  -            XMLPlatformUtils::Terminate();
  -            croak("%s", "Handling Unknown exception");
  -        }
  -    }
  -    
  -    {
  -        delete[] arg2;
  -    }
  -    {
  -        delete[] arg3;
  -    }
  -    {
  -        delete[] arg4;
  -    }
  -    XSRETURN(argvi);
  -}
  -
  -XS(_wrap_XMLReaderFactory_createXMLReader) {
  -    SAX2XMLReader *result;
  -    int argvi = 0;
  -    dXSARGS;
  -    
  -    if ((items < 0) || (items > 0)) {
  -        croak("Usage: XMLReaderFactory_createXMLReader();");
  -    }
  -    {
  -        try {
  -            result = (SAX2XMLReader *)XMLReaderFactory::createXMLReader();
  -            
  -        }
  -        catch (const XMLException& e)
  -        {
  -            makeXMLException(e);
  -        }
  -        catch (...)
  -        {
  -            XMLPlatformUtils::Terminate();
  -            croak("%s", "Handling Unknown exception");
  -        }
  -    }
  -    ST(argvi) = sv_newmortal();
  -    SWIG_MakePtr(ST(argvi++), (void *) result, SWIGTYPE_p_SAX2XMLReader);
  -    XSRETURN(argvi);
  -}
  -
  -XS(_wrap_new_PerlErrorCallbackHandler) {
  -    PerlErrorCallbackHandler *result;
  -    int argvi = 0;
  -    dXSARGS;
  -    
  -    if ((items < 0) || (items > 0)) {
  -        croak("Usage: new_PerlErrorCallbackHandler();");
  -    }
  -    {
  -        try {
  -            result = (PerlErrorCallbackHandler *)new PerlErrorCallbackHandler();
  -            
  -        }
  -        catch (const XMLException& e)
  -        {
  -            makeXMLException(e);
  -        }
  -        catch (...)
  -        {
  -            XMLPlatformUtils::Terminate();
  -            croak("%s", "Handling Unknown exception");
  -        }
  -    }
  -    ST(argvi) = sv_newmortal();
  -    SWIG_MakePtr(ST(argvi++), (void *) result, SWIGTYPE_p_PerlErrorCallbackHandler);
  -    XSRETURN(argvi);
  -}
  -
  -XS(_wrap_PerlErrorCallbackHandler_set_callback_obj) {
  -    PerlErrorCallbackHandler *arg1 ;
  -    SV *arg2 ;
  -    int argvi = 0;
  -    dXSARGS;
  -    
  -    if ((items < 2) || (items > 2)) {
  -        croak("Usage: PerlErrorCallbackHandler_set_callback_obj(self,SV *);");
  -    }
  -    {
  -        if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_PerlErrorCallbackHandler) < 0) {
  -            croak("Type error in argument 1 of PerlErrorCallbackHandler_set_callback_obj. Expected %s", SWIGTYPE_p_PerlErrorCallbackHandler->name);
  -        }
  -    }
  -    {
  -        arg2 = ST(1);
  -    }
  -    {
  -        try {
  -            (arg1)->set_callback_obj(arg2);
  -            
  -        }
  -        catch (const XMLException& e)
  -        {
  -            makeXMLException(e);
  -        }
  -        catch (...)
  -        {
  -            XMLPlatformUtils::Terminate();
  -            croak("%s", "Handling Unknown exception");
  -        }
  -    }
  -    
  -    XSRETURN(argvi);
  -}
  -
  -XS(_wrap_new_PerlDocumentCallbackHandler) {
  -    PerlDocumentCallbackHandler *result;
  -    int argvi = 0;
  -    dXSARGS;
  -    
  -    if ((items < 0) || (items > 0)) {
  -        croak("Usage: new_PerlDocumentCallbackHandler();");
  -    }
  -    {
  -        try {
  -            result = (PerlDocumentCallbackHandler *)new PerlDocumentCallbackHandler();
  -            
  -        }
  -        catch (const XMLException& e)
  -        {
  -            makeXMLException(e);
  -        }
  -        catch (...)
  -        {
  -            XMLPlatformUtils::Terminate();
  -            croak("%s", "Handling Unknown exception");
  -        }
  -    }
  -    ST(argvi) = sv_newmortal();
  -    SWIG_MakePtr(ST(argvi++), (void *) result, SWIGTYPE_p_PerlDocumentCallbackHandler);
  -    XSRETURN(argvi);
  -}
  -
  -XS(_wrap_PerlDocumentCallbackHandler_set_callback_obj) {
  -    PerlDocumentCallbackHandler *arg1 ;
  -    SV *arg2 ;
  -    int argvi = 0;
  -    dXSARGS;
  -    
  -    if ((items < 2) || (items > 2)) {
  -        croak("Usage: PerlDocumentCallbackHandler_set_callback_obj(self,SV *);");
  -    }
  -    {
  -        if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_PerlDocumentCallbackHandler) < 0) {
  -            croak("Type error in argument 1 of PerlDocumentCallbackHandler_set_callback_obj. Expected %s", SWIGTYPE_p_PerlDocumentCallbackHandler->name);
  -        }
  -    }
  -    {
  -        arg2 = ST(1);
  -    }
  -    {
  -        try {
  -            (arg1)->set_callback_obj(arg2);
  -            
  -        }
  -        catch (const XMLException& e)
  -        {
  -            makeXMLException(e);
  -        }
  -        catch (...)
  -        {
  -            XMLPlatformUtils::Terminate();
  -            croak("%s", "Handling Unknown exception");
  -        }
  -    }
  -    
  -    XSRETURN(argvi);
  -}
  -
  -XS(_wrap_new_PerlContentCallbackHandler) {
  -    PerlContentCallbackHandler *result;
  -    int argvi = 0;
  -    dXSARGS;
  -    
  -    if ((items < 0) || (items > 0)) {
  -        croak("Usage: new_PerlContentCallbackHandler();");
  -    }
  -    {
  -        try {
  -            result = (PerlContentCallbackHandler *)new PerlContentCallbackHandler();
  -            
  -        }
  -        catch (const XMLException& e)
  -        {
  -            makeXMLException(e);
  -        }
  -        catch (...)
  -        {
  -            XMLPlatformUtils::Terminate();
  -            croak("%s", "Handling Unknown exception");
  -        }
  -    }
  -    ST(argvi) = sv_newmortal();
  -    SWIG_MakePtr(ST(argvi++), (void *) result, SWIGTYPE_p_PerlContentCallbackHandler);
  -    XSRETURN(argvi);
  -}
  -
  -XS(_wrap_PerlContentCallbackHandler_set_callback_obj) {
  -    PerlContentCallbackHandler *arg1 ;
  -    SV *arg2 ;
  -    int argvi = 0;
  -    dXSARGS;
  -    
  -    if ((items < 2) || (items > 2)) {
  -        croak("Usage: PerlContentCallbackHandler_set_callback_obj(self,SV *);");
  -    }
  -    {
  -        if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_PerlContentCallbackHandler) < 0) {
  -            croak("Type error in argument 1 of PerlContentCallbackHandler_set_callback_obj. Expected %s", SWIGTYPE_p_PerlContentCallbackHandler->name);
  -        }
  -    }
  -    {
  -        arg2 = ST(1);
  -    }
  -    {
  -        try {
  -            (arg1)->set_callback_obj(arg2);
  -            
  -        }
  -        catch (const XMLException& e)
  -        {
  -            makeXMLException(e);
  -        }
  -        catch (...)
  -        {
  -            XMLPlatformUtils::Terminate();
  -            croak("%s", "Handling Unknown exception");
  -        }
  -    }
  -    
  -    XSRETURN(argvi);
  -}
  -
  -XS(_wrap_new_PerlEntityResolverHandler) {
  -    PerlEntityResolverHandler *result;
  -    int argvi = 0;
  -    dXSARGS;
  -    
  -    if ((items < 0) || (items > 0)) {
  -        croak("Usage: new_PerlEntityResolverHandler();");
  +            XSRETURN(1);
  +        }
       }
       {
           try {
  -            result = (PerlEntityResolverHandler *)new PerlEntityResolverHandler();
  +            (arg1)->internalEntityDecl((XMLCh const *)arg2,(XMLCh const *)arg3);
               
           }
           catch (const XMLException& e)
  @@ -11088,27 +11060,59 @@
               croak("%s", "Handling Unknown exception");
           }
       }
  -    ST(argvi) = sv_newmortal();
  -    SWIG_MakePtr(ST(argvi++), (void *) result, SWIGTYPE_p_PerlEntityResolverHandler);
  +    
  +    {
  +        delete[] arg2;
  +    }
  +    {
  +        delete[] arg3;
  +    }
       XSRETURN(argvi);
   }
   
  -XS(_wrap_delete_PerlEntityResolverHandler) {
  -    PerlEntityResolverHandler *arg1 ;
  +XS(_wrap_DefaultHandler_externalEntityDecl) {
  +    DefaultHandler *arg1 ;
  +    XMLCh *arg2 ;
  +    XMLCh *arg3 ;
  +    XMLCh *arg4 ;
       int argvi = 0;
       dXSARGS;
       
  -    if ((items < 1) || (items > 1)) {
  -        croak("Usage: delete_PerlEntityResolverHandler(self);");
  +    if ((items < 4) || (items > 4)) {
  +        croak("Usage: DefaultHandler_externalEntityDecl(self,name,publicId,systemId);");
       }
       {
  -        if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_PerlEntityResolverHandler) < 0) {
  -            croak("Type error in argument 1 of delete_PerlEntityResolverHandler. Expected %s", SWIGTYPE_p_PerlEntityResolverHandler->name);
  +        if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_DefaultHandler) < 0) {
  +            croak("Type error in argument 1 of DefaultHandler_externalEntityDecl. Expected %s", SWIGTYPE_p_DefaultHandler->name);
  +        }
  +    }
  +    {
  +        if (SvPOK(ST(1))||SvIOK(ST(1))||SvNOK(ST(1))) {
  +            arg2 = Perl2XMLString(ST(1));
  +        }else {
  +            croak("Type error in argument 2 of $name, Expected perl-string.");
  +            XSRETURN(1);
  +        }
  +    }
  +    {
  +        if (SvPOK(ST(2))||SvIOK(ST(2))||SvNOK(ST(2))) {
  +            arg3 = Perl2XMLString(ST(2));
  +        }else {
  +            croak("Type error in argument 2 of $name, Expected perl-string.");
  +            XSRETURN(1);
  +        }
  +    }
  +    {
  +        if (SvPOK(ST(3))||SvIOK(ST(3))||SvNOK(ST(3))) {
  +            arg4 = Perl2XMLString(ST(3));
  +        }else {
  +            croak("Type error in argument 2 of $name, Expected perl-string.");
  +            XSRETURN(1);
           }
       }
       {
           try {
  -            delete arg1;
  +            (arg1)->externalEntityDecl((XMLCh const *)arg2,(XMLCh const *)arg3,(XMLCh const *)arg4);
               
           }
           catch (const XMLException& e)
  @@ -11122,30 +11126,29 @@
           }
       }
       
  +    {
  +        delete[] arg2;
  +    }
  +    {
  +        delete[] arg3;
  +    }
  +    {
  +        delete[] arg4;
  +    }
       XSRETURN(argvi);
   }
   
  -XS(_wrap_PerlEntityResolverHandler_set_callback_obj) {
  -    PerlEntityResolverHandler *arg1 ;
  -    SV *arg2 ;
  -    SV *result;
  +XS(_wrap_XMLReaderFactory_createXMLReader) {
  +    SAX2XMLReader *result;
       int argvi = 0;
       dXSARGS;
       
  -    if ((items < 2) || (items > 2)) {
  -        croak("Usage: PerlEntityResolverHandler_set_callback_obj(self,SV *);");
  -    }
  -    {
  -        if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_PerlEntityResolverHandler) < 0) {
  -            croak("Type error in argument 1 of PerlEntityResolverHandler_set_callback_obj. Expected %s", SWIGTYPE_p_PerlEntityResolverHandler->name);
  -        }
  -    }
  -    {
  -        arg2 = ST(1);
  +    if ((items < 0) || (items > 0)) {
  +        croak("Usage: XMLReaderFactory_createXMLReader();");
       }
       {
           try {
  -            result = (SV *)(arg1)->set_callback_obj(arg2);
  +            result = (SAX2XMLReader *)XMLReaderFactory::createXMLReader();
               
           }
           catch (const XMLException& e)
  @@ -11159,7 +11162,7 @@
           }
       }
       ST(argvi) = sv_newmortal();
  -    SWIG_MakePtr(ST(argvi++), (void *) result, SWIGTYPE_p_SV);
  +    SWIG_MakePtr(ST(argvi++), (void *) result, SWIGTYPE_p_SAX2XMLReader);
       XSRETURN(argvi);
   }
   
  @@ -16966,52 +16969,6 @@
       XSRETURN(argvi);
   }
   
  -XS(_wrap_DOM_Node_operator_not_equal_to) {
  -    IDOM_Node *arg0 ;
  -    IDOM_Node *arg1 ;
  -    int argvi = 0;
  -    bool result ;
  -    dXSARGS;
  -    
  -    if ((items < 2) || (items > 2)) 
  -    croak("Usage: DOM_Node_operator_not_equal_to(self,other);");
  -    if (SWIG_ConvertPtr(ST(0),(void **) &arg0,SWIGTYPE_p_IDOM_Node) < 0) {
  -        croak("Type error in argument 1 of DOM_Node_operator_not_equal_to. Expected %s", SWIGTYPE_p_IDOM_Node->name);
  -        XSRETURN(1);
  -    }
  -    if (SWIG_ConvertPtr(ST(1),(void **) &arg1,SWIGTYPE_p_IDOM_Node) < 0) {
  -        croak("Type error in argument 2 of DOM_Node_operator_not_equal_to. Expected %s", SWIGTYPE_p_IDOM_Node->name);
  -        XSRETURN(1);
  -    }
  -    result = (arg0 != arg1);
  -    ST(argvi) = sv_newmortal();
  -    sv_setiv(ST(argvi++),(IV) result);
  -    XSRETURN(argvi);
  -}
  -
  -XS(_wrap_DOM_Node_operator_equal_to) {
  -    IDOM_Node *arg0 ;
  -    IDOM_Node *arg1 ;
  -    int argvi = 0;
  -    bool result ;
  -    dXSARGS;
  -    
  -    if ((items < 2) || (items > 2)) 
  -    croak("Usage: DOM_Node_operator_equal_to(self,other);");
  -    if (SWIG_ConvertPtr(ST(0),(void **) &arg0,SWIGTYPE_p_IDOM_Node) < 0) {
  -        croak("Type error in argument 1 of DOM_Node_operator_equal_to. Expected %s", SWIGTYPE_p_IDOM_Node->name);
  -        XSRETURN(1);
  -    }
  -    if (SWIG_ConvertPtr(ST(1),(void **) &arg1,SWIGTYPE_p_IDOM_Node) < 0) {
  -        croak("Type error in argument 2 of DOM_Node_operator_equal_to. Expected %s", SWIGTYPE_p_IDOM_Node->name);
  -        XSRETURN(1);
  -    }
  -    result = (arg0 == arg1);
  -    ST(argvi) = sv_newmortal();
  -    sv_setiv(ST(argvi++),(IV) result);
  -    XSRETURN(argvi);
  -}
  -
   XS(_wrap_delete_DOM_Node) {
       IDOM_Node *arg1 ;
       int argvi = 0;
  @@ -18078,6 +18035,94 @@
       XSRETURN(argvi);
   }
   
  +XS(_wrap_DOM_Node_operator_equal_to) {
  +    IDOM_Node *arg1 ;
  +    IDOM_Node *arg2 ;
  +    bool result;
  +    int argvi = 0;
  +    dXSARGS;
  +    
  +    if ((items < 2) || (items > 2)) {
  +        croak("Usage: DOM_Node_operator_equal_to(self,other);");
  +    }
  +    {
  +        if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_IDOM_Node) < 0) {
  +            croak("Type error in argument 1 of DOM_Node_operator_equal_to. Expected %s", SWIGTYPE_p_IDOM_Node->name);
  +        }
  +    }
  +    {
  +        if (SWIG_ConvertPtr(ST(1), (void **) &arg2, SWIGTYPE_p_IDOM_Node) < 0) {
  +            croak("Type error in argument 2 of DOM_Node_operator_equal_to. Expected %s", SWIGTYPE_p_IDOM_Node->name);
  +        }
  +    }
  +    {
  +        try {
  +            result = (bool )IDOM_Node_operator_ee___(arg1,(IDOM_Node const &)*arg2);
  +            
  +        }
  +        catch (const XMLException& e)
  +        {
  +            makeXMLException(e);
  +        }
  +        catch (const IDOM_DOMException& e)
  +        {
  +            makeIDOMException(e);
  +        }
  +        catch (...)
  +        {
  +            XMLPlatformUtils::Terminate();
  +            croak("%s", "Handling Unknown exception");
  +        }
  +    }
  +    ST(argvi) = sv_newmortal();
  +    sv_setiv(ST(argvi++), (IV) result);
  +    XSRETURN(argvi);
  +}
  +
  +XS(_wrap_DOM_Node_operator_not_equal_to) {
  +    IDOM_Node *arg1 ;
  +    IDOM_Node *arg2 ;
  +    bool result;
  +    int argvi = 0;
  +    dXSARGS;
  +    
  +    if ((items < 2) || (items > 2)) {
  +        croak("Usage: DOM_Node_operator_not_equal_to(self,other);");
  +    }
  +    {
  +        if (SWIG_ConvertPtr(ST(0), (void **) &arg1, SWIGTYPE_p_IDOM_Node) < 0) {
  +            croak("Type error in argument 1 of DOM_Node_operator_not_equal_to. Expected %s", SWIGTYPE_p_IDOM_Node->name);
  +        }
  +    }
  +    {
  +        if (SWIG_ConvertPtr(ST(1), (void **) &arg2, SWIGTYPE_p_IDOM_Node) < 0) {
  +            croak("Type error in argument 2 of DOM_Node_operator_not_equal_to. Expected %s", SWIGTYPE_p_IDOM_Node->name);
  +        }
  +    }
  +    {
  +        try {
  +            result = (bool )IDOM_Node_operator_Ne___(arg1,(IDOM_Node const &)*arg2);
  +            
  +        }
  +        catch (const XMLException& e)
  +        {
  +            makeXMLException(e);
  +        }
  +        catch (const IDOM_DOMException& e)
  +        {
  +            makeIDOMException(e);
  +        }
  +        catch (...)
  +        {
  +            XMLPlatformUtils::Terminate();
  +            croak("%s", "Handling Unknown exception");
  +        }
  +    }
  +    ST(argvi) = sv_newmortal();
  +    sv_setiv(ST(argvi++), (IV) result);
  +    XSRETURN(argvi);
  +}
  +
   XS(_wrap_delete_DOM_Attr) {
       IDOM_Attr *arg1 ;
       int argvi = 0;
  @@ -24827,6 +24872,9 @@
   static void *_p_IDOM_CDATASectionTo_p_IDOM_Text(void *x) {
       return (void *)((IDOM_Text *) ((IDOM_CDATASection *) x));
   }
  +static void *_p_PerlNodeFilterCallbackHandlerTo_p_IDOM_NodeFilter(void *x) {
  +    return (void *)((IDOM_NodeFilter *) ((PerlNodeFilterCallbackHandler *) x));
  +}
   static void *_p_SAXNotSupportedExceptionTo_p_SAXException(void *x) {
       return (void *)((SAXException *) ((SAXNotSupportedException *) x));
   }
  @@ -24848,12 +24896,12 @@
   static void *_p_HandlerBaseTo_p_EntityResolver(void *x) {
       return (void *)((EntityResolver *) ((HandlerBase *) x));
   }
  -static void *_p_DefaultHandlerTo_p_EntityResolver(void *x) {
  -    return (void *)((EntityResolver *) ((DefaultHandler *) x));
  -}
   static void *_p_PerlEntityResolverHandlerTo_p_EntityResolver(void *x) {
       return (void *)((EntityResolver *) ((PerlEntityResolverHandler *) x));
   }
  +static void *_p_DefaultHandlerTo_p_EntityResolver(void *x) {
  +    return (void *)((EntityResolver *) ((DefaultHandler *) x));
  +}
   static void *_p_SAXParserTo_p_XMLDocumentHandler(void *x) {
       return (void *)((XMLDocumentHandler *) ((SAXParser *) x));
   }
  @@ -24866,20 +24914,26 @@
   static void *_p_DefaultHandlerTo_p_LexicalHandler(void *x) {
       return (void *)((LexicalHandler *) ((DefaultHandler *) x));
   }
  -static void *_p_DefaultHandlerTo_p_ContentHandler(void *x) {
  -    return (void *)((ContentHandler *) ((DefaultHandler *) x));
  +static void *_p_HandlerBaseTo_p_DTDHandler(void *x) {
  +    return (void *)((DTDHandler *) ((HandlerBase *) x));
   }
  -static void *_p_PerlContentCallbackHandlerTo_p_ContentHandler(void *x) {
  -    return (void *)((ContentHandler *) ((PerlContentCallbackHandler *) x));
  +static void *_p_DefaultHandlerTo_p_DTDHandler(void *x) {
  +    return (void *)((DTDHandler *) ((DefaultHandler *) x));
   }
   static void *_p_HandlerBaseTo_p_ErrorHandler(void *x) {
       return (void *)((ErrorHandler *) ((HandlerBase *) x));
   }
  +static void *_p_PerlErrorCallbackHandlerTo_p_ErrorHandler(void *x) {
  +    return (void *)((ErrorHandler *) ((PerlErrorCallbackHandler *) x));
  +}
   static void *_p_DefaultHandlerTo_p_ErrorHandler(void *x) {
       return (void *)((ErrorHandler *) ((DefaultHandler *) x));
   }
  -static void *_p_PerlErrorCallbackHandlerTo_p_ErrorHandler(void *x) {
  -    return (void *)((ErrorHandler *) ((PerlErrorCallbackHandler *) x));
  +static void *_p_PerlContentCallbackHandlerTo_p_ContentHandler(void *x) {
  +    return (void *)((ContentHandler *) ((PerlContentCallbackHandler *) x));
  +}
  +static void *_p_DefaultHandlerTo_p_ContentHandler(void *x) {
  +    return (void *)((ContentHandler *) ((DefaultHandler *) x));
   }
   static void *_p_HandlerBaseTo_p_DocumentHandler(void *x) {
       return (void *)((DocumentHandler *) ((HandlerBase *) x));
  @@ -24887,11 +24941,20 @@
   static void *_p_PerlDocumentCallbackHandlerTo_p_DocumentHandler(void *x) {
       return (void *)((DocumentHandler *) ((PerlDocumentCallbackHandler *) x));
   }
  -static void *_p_HandlerBaseTo_p_DTDHandler(void *x) {
  -    return (void *)((DTDHandler *) ((HandlerBase *) x));
  +static void *_p_PerlNodeFilterCallbackHandlerTo_p_PerlCallbackHandler(void *x) {
  +    return (void *)((PerlCallbackHandler *) ((PerlNodeFilterCallbackHandler *) x));
   }
  -static void *_p_DefaultHandlerTo_p_DTDHandler(void *x) {
  -    return (void *)((DTDHandler *) ((DefaultHandler *) x));
  +static void *_p_PerlDocumentCallbackHandlerTo_p_PerlCallbackHandler(void *x) {
  +    return (void *)((PerlCallbackHandler *) ((PerlDocumentCallbackHandler *) x));
  +}
  +static void *_p_PerlContentCallbackHandlerTo_p_PerlCallbackHandler(void *x) {
  +    return (void *)((PerlCallbackHandler *) ((PerlContentCallbackHandler *) x));
  +}
  +static void *_p_PerlEntityResolverHandlerTo_p_PerlCallbackHandler(void *x) {
  +    return (void *)((PerlCallbackHandler *) ((PerlEntityResolverHandler *) x));
  +}
  +static void *_p_PerlErrorCallbackHandlerTo_p_PerlCallbackHandler(void *x) {
  +    return (void *)((PerlCallbackHandler *) ((PerlErrorCallbackHandler *) x));
   }
   static void *_p_IDOM_ElementTo_p_IDOM_Node(void *x) {
       return (void *)((IDOM_Node *) ((IDOM_Element *) x));
  @@ -24960,9 +25023,9 @@
   static swig_type_info _swigt__p_XMLAttr[] = {{"_p_XMLAttr", 0, "XMLAttr *"},{"_p_XMLAttr"},{0}};
   static swig_type_info _swigt__p_AttributeList[] = {{"XML::Xerces::AttributeList", 0, "AttributeList *"},{"XML::Xerces::AttributeList"},{0}};
   static swig_type_info _swigt__p_bool[] = {{"_p_bool", 0, "bool *"},{"_p_bool"},{0}};
  -static swig_type_info _swigt__p_QName[] = {{"XML::Xerces::QName", 0, "QName *"},{"XML::Xerces::QName"},{0}};
  +static swig_type_info _swigt__p_IDOM_NodeFilter[] = {{"XML::Xerces::DOM_NodeFilter", 0, "IDOM_NodeFilter *"},{"XML::Xerces::DOM_NodeFilter"},{"XML::Xerces::PerlNodeFilterCallbackHandler", _p_PerlNodeFilterCallbackHandlerTo_p_IDOM_NodeFilter},{0}};
   static swig_type_info _swigt__p_p_QName[] = {{"_p_p_QName", 0, "QName **"},{"_p_p_QName"},{0}};
  -static swig_type_info _swigt__p_IDOM_NodeFilter[] = {{"XML::Xerces::DOM_NodeFilter", 0, "IDOM_NodeFilter *"},{"XML::Xerces::DOM_NodeFilter"},{0}};
  +static swig_type_info _swigt__p_QName[] = {{"XML::Xerces::QName", 0, "QName *"},{"XML::Xerces::QName"},{0}};
   static swig_type_info _swigt__p_XMLNotationDecl[] = {{"_p_XMLNotationDecl", 0, "XMLNotationDecl *"},{"_p_XMLNotationDecl"},{0}};
   static swig_type_info _swigt__p_IDOM_DocumentType[] = {{"XML::Xerces::DOM_DocumentType", 0, "IDOM_DocumentType *"},{"XML::Xerces::DOM_DocumentType"},{0}};
   static swig_type_info _swigt__p_XMLElementDecl[] = {{"XML::Xerces::XMLElementDecl", 0, "XMLElementDecl *"},{"XML::Xerces::XMLElementDecl"},{0}};
  @@ -24987,19 +25050,21 @@
   static swig_type_info _swigt__p_XMLByte[] = {{"_p_XMLByte", 0, "XMLByte *"},{"_p_XMLByte"},{0}};
   static swig_type_info _swigt__p_XMLURL[] = {{"XML::Xerces::XMLURL", 0, "XMLURL *"},{"XML::Xerces::XMLURL"},{0}};
   static swig_type_info _swigt__p_XMLAttDef[] = {{"_p_XMLAttDef", 0, "XMLAttDef *"},{"_p_XMLAttDef"},{0}};
  -static swig_type_info _swigt__p_EntityResolver[] = {{"XML::Xerces::EntityResolver", 0, "EntityResolver *"},{"XML::Xerces::EntityResolver"},{"XML::Xerces::HandlerBase", _p_HandlerBaseTo_p_EntityResolver},{"XML::Xerces::DefaultHandler", _p_DefaultHandlerTo_p_EntityResolver},{"XML::Xerces::PerlEntityResolverHandler", _p_PerlEntityResolverHandlerTo_p_EntityResolver},{0}};
  +static swig_type_info _swigt__p_EntityResolver[] = {{"XML::Xerces::EntityResolver", 0, "EntityResolver *"},{"XML::Xerces::EntityResolver"},{"XML::Xerces::HandlerBase", _p_HandlerBaseTo_p_EntityResolver},{"XML::Xerces::PerlEntityResolverHandler", _p_PerlEntityResolverHandlerTo_p_EntityResolver},{"XML::Xerces::DefaultHandler", _p_DefaultHandlerTo_p_EntityResolver},{0}};
   static swig_type_info _swigt__p_XMLDocumentHandler[] = {{"XML::Xerces::XMLDocumentHandler", 0, "XMLDocumentHandler *"},{"XML::Xerces::SAXParser", _p_SAXParserTo_p_XMLDocumentHandler},{"XML::Xerces::DOMParser", _p_IDOMParserTo_p_XMLDocumentHandler},{"XML::Xerces::XMLDocumentHandler"},{0}};
   static swig_type_info _swigt__p_DeclHandler[] = {{"XML::Xerces::DeclHandler", 0, "DeclHandler *"},{"XML::Xerces::DeclHandler"},{"XML::Xerces::DefaultHandler", _p_DefaultHandlerTo_p_DeclHandler},{0}};
  -static swig_type_info _swigt__p_PerlEntityResolverHandler[] = {{"XML::Xerces::PerlEntityResolverHandler", 0, "PerlEntityResolverHandler *"},{"XML::Xerces::PerlEntityResolverHandler"},{0}};
  -static swig_type_info _swigt__p_PerlContentCallbackHandler[] = {{"XML::Xerces::PerlContentCallbackHandler", 0, "PerlContentCallbackHandler *"},{"XML::Xerces::PerlContentCallbackHandler"},{0}};
  -static swig_type_info _swigt__p_PerlDocumentCallbackHandler[] = {{"XML::Xerces::PerlDocumentCallbackHandler", 0, "PerlDocumentCallbackHandler *"},{"XML::Xerces::PerlDocumentCallbackHandler"},{0}};
  -static swig_type_info _swigt__p_PerlErrorCallbackHandler[] = {{"XML::Xerces::PerlErrorCallbackHandler", 0, "PerlErrorCallbackHandler *"},{"XML::Xerces::PerlErrorCallbackHandler"},{0}};
   static swig_type_info _swigt__p_DefaultHandler[] = {{"XML::Xerces::DefaultHandler", 0, "DefaultHandler *"},{"XML::Xerces::DefaultHandler"},{0}};
   static swig_type_info _swigt__p_LexicalHandler[] = {{"XML::Xerces::LexicalHandler", 0, "LexicalHandler *"},{"XML::Xerces::LexicalHandler"},{"XML::Xerces::DefaultHandler", _p_DefaultHandlerTo_p_LexicalHandler},{0}};
  -static swig_type_info _swigt__p_ContentHandler[] = {{"XML::Xerces::ContentHandler", 0, "ContentHandler *"},{"XML::Xerces::ContentHandler"},{"XML::Xerces::DefaultHandler", _p_DefaultHandlerTo_p_ContentHandler},{"XML::Xerces::PerlContentCallbackHandler", _p_PerlContentCallbackHandlerTo_p_ContentHandler},{0}};
  -static swig_type_info _swigt__p_ErrorHandler[] = {{"XML::Xerces::ErrorHandler", 0, "ErrorHandler *"},{"XML::Xerces::HandlerBase", _p_HandlerBaseTo_p_ErrorHandler},{"XML::Xerces::ErrorHandler"},{"XML::Xerces::DefaultHandler", _p_DefaultHandlerTo_p_ErrorHandler},{"XML::Xerces::PerlErrorCallbackHandler", _p_PerlErrorCallbackHandlerTo_p_ErrorHandler},{0}};
  -static swig_type_info _swigt__p_DocumentHandler[] = {{"XML::Xerces::DocumentHandler", 0, "DocumentHandler *"},{"XML::Xerces::HandlerBase", _p_HandlerBaseTo_p_DocumentHandler},{"XML::Xerces::DocumentHandler"},{"XML::Xerces::PerlDocumentCallbackHandler", _p_PerlDocumentCallbackHandlerTo_p_DocumentHandler},{0}};
   static swig_type_info _swigt__p_DTDHandler[] = {{"XML::Xerces::DTDHandler", 0, "DTDHandler *"},{"XML::Xerces::HandlerBase", _p_HandlerBaseTo_p_DTDHandler},{"XML::Xerces::DTDHandler"},{"XML::Xerces::DefaultHandler", _p_DefaultHandlerTo_p_DTDHandler},{0}};
  +static swig_type_info _swigt__p_ErrorHandler[] = {{"XML::Xerces::ErrorHandler", 0, "ErrorHandler *"},{"XML::Xerces::HandlerBase", _p_HandlerBaseTo_p_ErrorHandler},{"XML::Xerces::ErrorHandler"},{"XML::Xerces::PerlErrorCallbackHandler", _p_PerlErrorCallbackHandlerTo_p_ErrorHandler},{"XML::Xerces::DefaultHandler", _p_DefaultHandlerTo_p_ErrorHandler},{0}};
  +static swig_type_info _swigt__p_ContentHandler[] = {{"XML::Xerces::ContentHandler", 0, "ContentHandler *"},{"XML::Xerces::ContentHandler"},{"XML::Xerces::PerlContentCallbackHandler", _p_PerlContentCallbackHandlerTo_p_ContentHandler},{"XML::Xerces::DefaultHandler", _p_DefaultHandlerTo_p_ContentHandler},{0}};
  +static swig_type_info _swigt__p_DocumentHandler[] = {{"XML::Xerces::DocumentHandler", 0, "DocumentHandler *"},{"XML::Xerces::HandlerBase", _p_HandlerBaseTo_p_DocumentHandler},{"XML::Xerces::DocumentHandler"},{"XML::Xerces::PerlDocumentCallbackHandler", _p_PerlDocumentCallbackHandlerTo_p_DocumentHandler},{0}};
  +static swig_type_info _swigt__p_PerlCallbackHandler[] = {{"XML::Xerces::PerlCallbackHandler", 0, "PerlCallbackHandler *"},{"XML::Xerces::PerlCallbackHandler"},{"XML::Xerces::PerlNodeFilterCallbackHandler", _p_PerlNodeFilterCallbackHandlerTo_p_PerlCallbackHandler},{"XML::Xerces::PerlDocumentCallbackHandler", _p_PerlDocumentCallbackHandlerTo_p_PerlCallbackHandler},{"XML::Xerces::PerlContentCallbackHandler", _p_PerlContentCallbackHandlerTo_p_PerlCallbackHandler},{"XML::Xerces::PerlEntityResolverHandler", _p_PerlEntityResolverHandlerTo_p_PerlCallbackHandler},{"XML::Xerces::PerlErrorCallbackHandler", _p_PerlErrorCallbackHandlerTo_p_PerlCallbackHandler},{0}};
  +static swig_type_info _swigt__p_PerlNodeFilterCallbackHandler[] = {{"XML::Xerces::PerlNodeFilterCallbackHandler", 0, "PerlNodeFilterCallbackHandler *"},{"XML::Xerces::PerlNodeFilterCallbackHandler"},{0}};
  +static swig_type_info _swigt__p_PerlDocumentCallbackHandler[] = {{"XML::Xerces::PerlDocumentCallbackHandler", 0, "PerlDocumentCallbackHandler *"},{"XML::Xerces::PerlDocumentCallbackHandler"},{0}};
  +static swig_type_info _swigt__p_PerlContentCallbackHandler[] = {{"XML::Xerces::PerlContentCallbackHandler", 0, "PerlContentCallbackHandler *"},{"XML::Xerces::PerlContentCallbackHandler"},{0}};
  +static swig_type_info _swigt__p_PerlEntityResolverHandler[] = {{"XML::Xerces::PerlEntityResolverHandler", 0, "PerlEntityResolverHandler *"},{"XML::Xerces::PerlEntityResolverHandler"},{0}};
  +static swig_type_info _swigt__p_PerlErrorCallbackHandler[] = {{"XML::Xerces::PerlErrorCallbackHandler", 0, "PerlErrorCallbackHandler *"},{"XML::Xerces::PerlErrorCallbackHandler"},{0}};
   static swig_type_info _swigt__p_IDOM_TreeWalker[] = {{"XML::Xerces::DOM_TreeWalker", 0, "IDOM_TreeWalker *"},{"XML::Xerces::DOM_TreeWalker"},{0}};
   static swig_type_info _swigt__p_IDOM_Range[] = {{"XML::Xerces::DOM_Range", 0, "IDOM_Range *"},{"XML::Xerces::DOM_Range"},{0}};
   static swig_type_info _swigt__p_IDOM_Node[] = {{"XML::Xerces::DOM_Node", 0, "IDOM_Node *"},{"XML::Xerces::DOM_Notation", _p_IDOM_NotationTo_p_IDOM_Node},{"XML::Xerces::DOM_DocumentFragment", _p_IDOM_DocumentFragmentTo_p_IDOM_Node},{"XML::Xerces::DOM_CDATASection", _p_IDOM_CDATASectionTo_p_IDOM_Node},{"XML::Xerces::DOM_EntityReference", _p_IDOM_EntityReferenceTo_p_IDOM_Node},{"XML::Xerces::DOM_Node"},{"XML::Xerces::DOM_Entity", _p_IDOM_EntityTo_p_IDOM_Node},{"XML::Xerces::DOM_Attr", _p_IDOM_AttrTo_p_IDOM_Node},{"XML::Xerces::DOM_CharacterData", _p_IDOM_CharacterDataTo_p_IDOM_Node},{"XML::Xerces::DOM_DocumentType", _p_IDOM_DocumentTypeTo_p_IDOM_Node},{"XML::Xerces::DOM_Text", _p_IDOM_TextTo_p_IDOM_Node},{"XML::Xerces::DOM_Comment", _p_IDOM_CommentTo_p_IDOM_Node},{"XML::Xerces::DOM_Document", _p_IDOM_DocumentTo_p_IDOM_Node},{"XML::Xerces::DOM_Element", _p_IDOM_ElementTo_p_IDOM_Node},{"XML::Xerces::DOM_ProcessingInstruction", _p_IDOM_ProcessingInstructionTo_p_IDOM_Node},{0}};
  @@ -25020,7 +25085,6 @@
   static swig_type_info _swigt__p_IDOM_NodeList[] = {{"XML::Xerces::DOM_NodeList", 0, "IDOM_NodeList *"},{"XML::Xerces::DOM_NodeList"},{0}};
   static swig_type_info _swigt__p_Grammar[] = {{"XML::Xerces::Grammar", 0, "Grammar *"},{"XML::Xerces::Grammar"},{0}};
   static swig_type_info _swigt__p_SAX2XMLReader[] = {{"XML::Xerces::SAX2XMLReader", 0, "SAX2XMLReader *"},{"XML::Xerces::SAX2XMLReader"},{0}};
  -static swig_type_info _swigt__p_SV[] = {{"_p_SV", 0, "SV *"},{"_p_SV"},{0}};
   static swig_type_info _swigt__p_IDOM_Comment[] = {{"XML::Xerces::DOM_Comment", 0, "IDOM_Comment *"},{"XML::Xerces::DOM_Comment"},{0}};
   static swig_type_info _swigt__p_SAXParser[] = {{"XML::Xerces::SAXParser", 0, "SAXParser *"},{"XML::Xerces::SAXParser"},{0}};
   static swig_type_info _swigt__p_HandlerBase[] = {{"XML::Xerces::HandlerBase", 0, "HandlerBase *"},{"XML::Xerces::HandlerBase"},{0}};
  @@ -25043,9 +25107,9 @@
   _swigt__p_XMLAttr, 
   _swigt__p_AttributeList, 
   _swigt__p_bool, 
  -_swigt__p_QName, 
  -_swigt__p_p_QName, 
   _swigt__p_IDOM_NodeFilter, 
  +_swigt__p_p_QName, 
  +_swigt__p_QName, 
   _swigt__p_XMLNotationDecl, 
   _swigt__p_IDOM_DocumentType, 
   _swigt__p_XMLElementDecl, 
  @@ -25073,16 +25137,18 @@
   _swigt__p_EntityResolver, 
   _swigt__p_XMLDocumentHandler, 
   _swigt__p_DeclHandler, 
  -_swigt__p_PerlEntityResolverHandler, 
  -_swigt__p_PerlContentCallbackHandler, 
  -_swigt__p_PerlDocumentCallbackHandler, 
  -_swigt__p_PerlErrorCallbackHandler, 
   _swigt__p_DefaultHandler, 
   _swigt__p_LexicalHandler, 
  -_swigt__p_ContentHandler, 
  +_swigt__p_DTDHandler, 
   _swigt__p_ErrorHandler, 
  +_swigt__p_ContentHandler, 
   _swigt__p_DocumentHandler, 
  -_swigt__p_DTDHandler, 
  +_swigt__p_PerlCallbackHandler, 
  +_swigt__p_PerlNodeFilterCallbackHandler, 
  +_swigt__p_PerlDocumentCallbackHandler, 
  +_swigt__p_PerlContentCallbackHandler, 
  +_swigt__p_PerlEntityResolverHandler, 
  +_swigt__p_PerlErrorCallbackHandler, 
   _swigt__p_IDOM_TreeWalker, 
   _swigt__p_IDOM_Range, 
   _swigt__p_IDOM_Node, 
  @@ -25103,7 +25169,6 @@
   _swigt__p_IDOM_NodeList, 
   _swigt__p_Grammar, 
   _swigt__p_SAX2XMLReader, 
  -_swigt__p_SV, 
   _swigt__p_IDOM_Comment, 
   _swigt__p_SAXParser, 
   _swigt__p_HandlerBase, 
  @@ -25568,6 +25633,21 @@
   {0}
   };
   static swig_command_info swig_commands[] = {
  +{"XML::Xercesc::new_PerlNodeFilterCallbackHandler", _wrap_new_PerlNodeFilterCallbackHandler},
  +{"XML::Xercesc::new_PerlNodeFilterCallbackHandler__constructor__arg", _wrap_new_PerlNodeFilterCallbackHandler__constructor__arg},
  +{"XML::Xercesc::PerlNodeFilterCallbackHandler_set_callback_obj", _wrap_PerlNodeFilterCallbackHandler_set_callback_obj},
  +{"XML::Xercesc::new_PerlDocumentCallbackHandler", _wrap_new_PerlDocumentCallbackHandler},
  +{"XML::Xercesc::new_PerlDocumentCallbackHandler__constructor__arg", _wrap_new_PerlDocumentCallbackHandler__constructor__arg},
  +{"XML::Xercesc::PerlDocumentCallbackHandler_set_callback_obj", _wrap_PerlDocumentCallbackHandler_set_callback_obj},
  +{"XML::Xercesc::new_PerlContentCallbackHandler", _wrap_new_PerlContentCallbackHandler},
  +{"XML::Xercesc::new_PerlContentCallbackHandler__constructor__arg", _wrap_new_PerlContentCallbackHandler__constructor__arg},
  +{"XML::Xercesc::PerlContentCallbackHandler_set_callback_obj", _wrap_PerlContentCallbackHandler_set_callback_obj},
  +{"XML::Xercesc::new_PerlEntityResolverHandler", _wrap_new_PerlEntityResolverHandler},
  +{"XML::Xercesc::new_PerlEntityResolverHandler__constructor__arg", _wrap_new_PerlEntityResolverHandler__constructor__arg},
  +{"XML::Xercesc::PerlEntityResolverHandler_set_callback_obj", _wrap_PerlEntityResolverHandler_set_callback_obj},
  +{"XML::Xercesc::new_PerlErrorCallbackHandler", _wrap_new_PerlErrorCallbackHandler},
  +{"XML::Xercesc::new_PerlErrorCallbackHandler__constructor__arg", _wrap_new_PerlErrorCallbackHandler__constructor__arg},
  +{"XML::Xercesc::PerlErrorCallbackHandler_set_callback_obj", _wrap_PerlErrorCallbackHandler_set_callback_obj},
   {"XML::Xercesc::delete_XMLDeleter", _wrap_delete_XMLDeleter},
   {"XML::Xercesc::XMLPlatformUtils_Initialize", _wrap_XMLPlatformUtils_Initialize},
   {"XML::Xercesc::XMLPlatformUtils_Terminate", _wrap_XMLPlatformUtils_Terminate},
  @@ -25815,15 +25895,6 @@
   {"XML::Xercesc::DefaultHandler_internalEntityDecl", _wrap_DefaultHandler_internalEntityDecl},
   {"XML::Xercesc::DefaultHandler_externalEntityDecl", _wrap_DefaultHandler_externalEntityDecl},
   {"XML::Xercesc::XMLReaderFactory_createXMLReader", _wrap_XMLReaderFactory_createXMLReader},
  -{"XML::Xercesc::new_PerlErrorCallbackHandler", _wrap_new_PerlErrorCallbackHandler},
  -{"XML::Xercesc::PerlErrorCallbackHandler_set_callback_obj", _wrap_PerlErrorCallbackHandler_set_callback_obj},
  -{"XML::Xercesc::new_PerlDocumentCallbackHandler", _wrap_new_PerlDocumentCallbackHandler},
  -{"XML::Xercesc::PerlDocumentCallbackHandler_set_callback_obj", _wrap_PerlDocumentCallbackHandler_set_callback_obj},
  -{"XML::Xercesc::new_PerlContentCallbackHandler", _wrap_new_PerlContentCallbackHandler},
  -{"XML::Xercesc::PerlContentCallbackHandler_set_callback_obj", _wrap_PerlContentCallbackHandler_set_callback_obj},
  -{"XML::Xercesc::new_PerlEntityResolverHandler", _wrap_new_PerlEntityResolverHandler},
  -{"XML::Xercesc::delete_PerlEntityResolverHandler", _wrap_delete_PerlEntityResolverHandler},
  -{"XML::Xercesc::PerlEntityResolverHandler_set_callback_obj", _wrap_PerlEntityResolverHandler_set_callback_obj},
   {"XML::Xercesc::delete_InputSource", _wrap_delete_InputSource},
   {"XML::Xercesc::InputSource_makeStream", _wrap_InputSource_makeStream},
   {"XML::Xercesc::InputSource_getEncoding", _wrap_InputSource_getEncoding},
  @@ -25999,6 +26070,8 @@
   {"XML::Xercesc::DOM_Node_getLocalName", _wrap_DOM_Node_getLocalName},
   {"XML::Xercesc::DOM_Node_setPrefix", _wrap_DOM_Node_setPrefix},
   {"XML::Xercesc::DOM_Node_hasAttributes", _wrap_DOM_Node_hasAttributes},
  +{"XML::Xercesc::DOM_Node_operator_equal_to", _wrap_DOM_Node_operator_equal_to},
  +{"XML::Xercesc::DOM_Node_operator_not_equal_to", _wrap_DOM_Node_operator_not_equal_to},
   {"XML::Xercesc::delete_DOM_Attr", _wrap_delete_DOM_Attr},
   {"XML::Xercesc::DOM_Attr_getName", _wrap_DOM_Attr_getName},
   {"XML::Xercesc::DOM_Attr_getSpecified", _wrap_DOM_Attr_getSpecified},
  @@ -26189,8 +26262,6 @@
   	croak("ERROR: XML::Xerces: INIT: Could not create ISO-8859-1 transcoder");
       }
   
  -    newXS((char *) "XML::Xercesc::DOM_Node_operator_equal_to", _wrap_DOM_Node_operator_equal_to, __FILE__);
  -    newXS((char *) "XML::Xercesc::DOM_Node_operator_not_equal_to", _wrap_DOM_Node_operator_not_equal_to, __FILE__);
       for (i = 0; swig_commands[i].name; i++) {
           newXS((char*) swig_commands[i].name,swig_commands[i].wrapper, (char*)__FILE__);
       }
  
  
  
  1.12      +327 -174  xml-xerces/perl/Xerces.pm
  
  Index: Xerces.pm
  ===================================================================
  RCS file: /home/cvs/xml-xerces/perl/Xerces.pm,v
  retrieving revision 1.11
  retrieving revision 1.12
  diff -u -r1.11 -r1.12
  --- Xerces.pm	27 Mar 2002 01:29:32 -0000	1.11
  +++ Xerces.pm	28 Mar 2002 07:59:59 -0000	1.12
  @@ -85,6 +85,21 @@
   }
   
   
  +############# Class : XML::Xerces::PerlNodeFilter ##############
  +package XML::Xerces::PerlNodeFilter;
  +use vars qw(@ISA %OWNER %ITERATORS %BLESSEDMEMBERS);
  +use vars qw(@ISA);
  +@ISA = qw();
  +sub new {
  +  my $class = shift;
  +  return bless {}, $class;
  +}
  +
  +sub acceptNode {
  +  return undef;
  +}
  +
  +
   ############# Class : XML::Xerces::PerlErrorHandler ##############
   package XML::Xerces::PerlErrorHandler;
   use vars qw(@ISA %OWNER %ITERATORS %BLESSEDMEMBERS);
  @@ -210,13 +225,6 @@
   
   package XML::Xerces::DOM_Node;
   use vars qw(@ISA %OWNER %ITERATORS %BLESSEDMEMBERS);
  -use overload
  -    "==" => sub { $_[0]->operator_equal_to($_[1])},
  -    "!=" => sub { $_[0]->operator_not_equal_to($_[1])},
  -    "fallback" => 1;
  -*operator_not_equal_to = *XML::Xercesc::DOM_Node_operator_not_equal_to;
  -*operator_equal_to = *XML::Xercesc::DOM_Node_operator_equal_to;
  -
   
   sub quote_content {
     my ($self,$node_value) = @_;
  @@ -414,6 +422,220 @@
   }
   
   
  +############# Class : XML::Xerces::PerlCallbackHandler ##############
  +
  +package XML::Xerces::PerlCallbackHandler;
  +use vars qw(@ISA %OWNER %ITERATORS %BLESSEDMEMBERS);
  +@ISA = qw( XML::Xerces );
  +%OWNER = ();
  +sub DISOWN {
  +    my $self = shift;
  +    my $ptr = tied(%$self);
  +    delete $OWNER{$ptr};
  +    };
  +
  +sub ACQUIRE {
  +    my $self = shift;
  +    my $ptr = tied(%$self);
  +    $OWNER{$ptr} = 1;
  +    };
  +
  +
  +############# Class : XML::Xerces::PerlNodeFilterCallbackHandler ##############
  +
  +package XML::Xerces::PerlNodeFilterCallbackHandler;
  +use vars qw(@ISA %OWNER %ITERATORS %BLESSEDMEMBERS);
  +@ISA = qw( XML::Xerces XML::Xerces::PerlCallbackHandler );
  +%OWNER = ();
  +sub new {
  +    my $pkg = shift;
  +    my @args = @_;
  +    my $self;
  +    if (scalar @args == 1) {
  +      $self = XML::Xercesc::new_PerlNodeFilterCallbackHandler__constructor__arg(@args);
  +    } else {
  +      $self = XML::Xercesc::new_PerlNodeFilterCallbackHandler();
  +    }
  +
  +    return undef if (!defined($self));
  +    bless $self, "XML::Xerces::PerlNodeFilterCallbackHandler";
  +    $OWNER{$self} = 1;
  +    my %retval;
  +    tie %retval, "XML::Xerces::PerlNodeFilterCallbackHandler", $self;
  +    return bless \%retval, $pkg;
  +}
  +
  +
  +*set_callback_obj = *XML::Xercesc::PerlNodeFilterCallbackHandler_set_callback_obj;
  +sub DISOWN {
  +    my $self = shift;
  +    my $ptr = tied(%$self);
  +    delete $OWNER{$ptr};
  +    };
  +
  +sub ACQUIRE {
  +    my $self = shift;
  +    my $ptr = tied(%$self);
  +    $OWNER{$ptr} = 1;
  +    };
  +
  +
  +############# Class : XML::Xerces::PerlDocumentCallbackHandler ##############
  +
  +package XML::Xerces::PerlDocumentCallbackHandler;
  +use vars qw(@ISA %OWNER %ITERATORS %BLESSEDMEMBERS);
  +@ISA = qw( XML::Xerces XML::Xerces::PerlCallbackHandler );
  +%OWNER = ();
  +sub new {
  +    my $pkg = shift;
  +    my @args = @_;
  +    my $self;
  +    if (scalar @args == 1) {
  +      $self = XML::Xercesc::new_PerlDocumentCallbackHandler__constructor__arg(@args);
  +    } else {
  +      $self = XML::Xercesc::new_PerlDocumentCallbackHandler();
  +    }
  +
  +    return undef if (!defined($self));
  +    bless $self, "XML::Xerces::PerlDocumentCallbackHandler";
  +    $OWNER{$self} = 1;
  +    my %retval;
  +    tie %retval, "XML::Xerces::PerlDocumentCallbackHandler", $self;
  +    return bless \%retval, $pkg;
  +}
  +
  +
  +*set_callback_obj = *XML::Xercesc::PerlDocumentCallbackHandler_set_callback_obj;
  +sub DISOWN {
  +    my $self = shift;
  +    my $ptr = tied(%$self);
  +    delete $OWNER{$ptr};
  +    };
  +
  +sub ACQUIRE {
  +    my $self = shift;
  +    my $ptr = tied(%$self);
  +    $OWNER{$ptr} = 1;
  +    };
  +
  +
  +############# Class : XML::Xerces::PerlContentCallbackHandler ##############
  +
  +package XML::Xerces::PerlContentCallbackHandler;
  +use vars qw(@ISA %OWNER %ITERATORS %BLESSEDMEMBERS);
  +@ISA = qw( XML::Xerces XML::Xerces::PerlCallbackHandler );
  +%OWNER = ();
  +sub new {
  +    my $pkg = shift;
  +    my @args = @_;
  +    my $self;
  +    if (scalar @args == 1) {
  +      $self = XML::Xercesc::new_PerlContentCallbackHandler__constructor__arg(@args);
  +    } else {
  +      $self = XML::Xercesc::new_PerlContentCallbackHandler();
  +    }
  +
  +    return undef if (!defined($self));
  +    bless $self, "XML::Xerces::PerlContentCallbackHandler";
  +    $OWNER{$self} = 1;
  +    my %retval;
  +    tie %retval, "XML::Xerces::PerlContentCallbackHandler", $self;
  +    return bless \%retval, $pkg;
  +}
  +
  +
  +*set_callback_obj = *XML::Xercesc::PerlContentCallbackHandler_set_callback_obj;
  +sub DISOWN {
  +    my $self = shift;
  +    my $ptr = tied(%$self);
  +    delete $OWNER{$ptr};
  +    };
  +
  +sub ACQUIRE {
  +    my $self = shift;
  +    my $ptr = tied(%$self);
  +    $OWNER{$ptr} = 1;
  +    };
  +
  +
  +############# Class : XML::Xerces::PerlEntityResolverHandler ##############
  +
  +package XML::Xerces::PerlEntityResolverHandler;
  +use vars qw(@ISA %OWNER %ITERATORS %BLESSEDMEMBERS);
  +@ISA = qw( XML::Xerces XML::Xerces::PerlCallbackHandler );
  +%OWNER = ();
  +sub new {
  +    my $pkg = shift;
  +    my @args = @_;
  +    my $self;
  +    if (scalar @args == 1) {
  +      $self = XML::Xercesc::new_PerlEntityResolverHandler__constructor__arg(@args);
  +    } else {
  +      $self = XML::Xercesc::new_PerlEntityResolverHandler();
  +    }
  +
  +    return undef if (!defined($self));
  +    bless $self, "XML::Xerces::PerlEntityResolverHandler";
  +    $OWNER{$self} = 1;
  +    my %retval;
  +    tie %retval, "XML::Xerces::PerlEntityResolverHandler", $self;
  +    return bless \%retval, $pkg;
  +}
  +
  +
  +*set_callback_obj = *XML::Xercesc::PerlEntityResolverHandler_set_callback_obj;
  +sub DISOWN {
  +    my $self = shift;
  +    my $ptr = tied(%$self);
  +    delete $OWNER{$ptr};
  +    };
  +
  +sub ACQUIRE {
  +    my $self = shift;
  +    my $ptr = tied(%$self);
  +    $OWNER{$ptr} = 1;
  +    };
  +
  +
  +############# Class : XML::Xerces::PerlErrorCallbackHandler ##############
  +
  +package XML::Xerces::PerlErrorCallbackHandler;
  +use vars qw(@ISA %OWNER %ITERATORS %BLESSEDMEMBERS);
  +@ISA = qw( XML::Xerces XML::Xerces::PerlCallbackHandler );
  +%OWNER = ();
  +sub new {
  +    my $pkg = shift;
  +    my @args = @_;
  +    my $self;
  +    if (scalar @args == 1) {
  +      $self = XML::Xercesc::new_PerlErrorCallbackHandler__constructor__arg(@args);
  +    } else {
  +      $self = XML::Xercesc::new_PerlErrorCallbackHandler();
  +    }
  +
  +    return undef if (!defined($self));
  +    bless $self, "XML::Xerces::PerlErrorCallbackHandler";
  +    $OWNER{$self} = 1;
  +    my %retval;
  +    tie %retval, "XML::Xerces::PerlErrorCallbackHandler", $self;
  +    return bless \%retval, $pkg;
  +}
  +
  +
  +*set_callback_obj = *XML::Xercesc::PerlErrorCallbackHandler_set_callback_obj;
  +sub DISOWN {
  +    my $self = shift;
  +    my $ptr = tied(%$self);
  +    delete $OWNER{$ptr};
  +    };
  +
  +sub ACQUIRE {
  +    my $self = shift;
  +    my $ptr = tied(%$self);
  +    $OWNER{$ptr} = 1;
  +    };
  +
  +
   ############# Class : XML::Xerces::XMLDeleter ##############
   
   package XML::Xerces::XMLDeleter;
  @@ -1761,136 +1983,6 @@
       };
   
   
  -############# Class : XML::Xerces::PerlErrorCallbackHandler ##############
  -
  -package XML::Xerces::PerlErrorCallbackHandler;
  -use vars qw(@ISA %OWNER %ITERATORS %BLESSEDMEMBERS);
  -@ISA = qw( XML::Xerces XML::Xerces::ErrorHandler );
  -%OWNER = ();
  -sub new {
  -    my $pkg = shift;
  -    my @args = @_;
  -    my $self = XML::Xercesc::new_PerlErrorCallbackHandler(@args);
  -    return undef if (!defined($self));
  -    bless $self, "XML::Xerces::PerlErrorCallbackHandler";
  -    $OWNER{$self} = 1;
  -    my %retval;
  -    tie %retval, "XML::Xerces::PerlErrorCallbackHandler", $self;
  -    return bless \%retval, $pkg;
  -}
  -
  -*set_callback_obj = *XML::Xercesc::PerlErrorCallbackHandler_set_callback_obj;
  -sub DISOWN {
  -    my $self = shift;
  -    my $ptr = tied(%$self);
  -    delete $OWNER{$ptr};
  -    };
  -
  -sub ACQUIRE {
  -    my $self = shift;
  -    my $ptr = tied(%$self);
  -    $OWNER{$ptr} = 1;
  -    };
  -
  -
  -############# Class : XML::Xerces::PerlDocumentCallbackHandler ##############
  -
  -package XML::Xerces::PerlDocumentCallbackHandler;
  -use vars qw(@ISA %OWNER %ITERATORS %BLESSEDMEMBERS);
  -@ISA = qw( XML::Xerces XML::Xerces::DocumentHandler );
  -%OWNER = ();
  -sub new {
  -    my $pkg = shift;
  -    my @args = @_;
  -    my $self = XML::Xercesc::new_PerlDocumentCallbackHandler(@args);
  -    return undef if (!defined($self));
  -    bless $self, "XML::Xerces::PerlDocumentCallbackHandler";
  -    $OWNER{$self} = 1;
  -    my %retval;
  -    tie %retval, "XML::Xerces::PerlDocumentCallbackHandler", $self;
  -    return bless \%retval, $pkg;
  -}
  -
  -*set_callback_obj = *XML::Xercesc::PerlDocumentCallbackHandler_set_callback_obj;
  -sub DISOWN {
  -    my $self = shift;
  -    my $ptr = tied(%$self);
  -    delete $OWNER{$ptr};
  -    };
  -
  -sub ACQUIRE {
  -    my $self = shift;
  -    my $ptr = tied(%$self);
  -    $OWNER{$ptr} = 1;
  -    };
  -
  -
  -############# Class : XML::Xerces::PerlContentCallbackHandler ##############
  -
  -package XML::Xerces::PerlContentCallbackHandler;
  -use vars qw(@ISA %OWNER %ITERATORS %BLESSEDMEMBERS);
  -@ISA = qw( XML::Xerces XML::Xerces::ContentHandler );
  -%OWNER = ();
  -sub new {
  -    my $pkg = shift;
  -    my @args = @_;
  -    my $self = XML::Xercesc::new_PerlContentCallbackHandler(@args);
  -    return undef if (!defined($self));
  -    bless $self, "XML::Xerces::PerlContentCallbackHandler";
  -    $OWNER{$self} = 1;
  -    my %retval;
  -    tie %retval, "XML::Xerces::PerlContentCallbackHandler", $self;
  -    return bless \%retval, $pkg;
  -}
  -
  -*set_callback_obj = *XML::Xercesc::PerlContentCallbackHandler_set_callback_obj;
  -sub DISOWN {
  -    my $self = shift;
  -    my $ptr = tied(%$self);
  -    delete $OWNER{$ptr};
  -    };
  -
  -sub ACQUIRE {
  -    my $self = shift;
  -    my $ptr = tied(%$self);
  -    $OWNER{$ptr} = 1;
  -    };
  -
  -
  -############# Class : XML::Xerces::PerlEntityResolverHandler ##############
  -
  -package XML::Xerces::PerlEntityResolverHandler;
  -use vars qw(@ISA %OWNER %ITERATORS %BLESSEDMEMBERS);
  -@ISA = qw( XML::Xerces XML::Xerces::EntityResolver );
  -%OWNER = ();
  -%ITERATORS = ();
  -sub new {
  -    my $pkg = shift;
  -    my @args = @_;
  -    my $self = XML::Xercesc::new_PerlEntityResolverHandler(@args);
  -    return undef if (!defined($self));
  -    bless $self, "XML::Xerces::PerlEntityResolverHandler";
  -    $OWNER{$self} = 1;
  -    my %retval;
  -    tie %retval, "XML::Xerces::PerlEntityResolverHandler", $self;
  -    return bless \%retval, $pkg;
  -}
  -
  -
  -*set_callback_obj = *XML::Xercesc::PerlEntityResolverHandler_set_callback_obj;
  -sub DISOWN {
  -    my $self = shift;
  -    my $ptr = tied(%$self);
  -    delete $OWNER{$ptr};
  -    };
  -
  -sub ACQUIRE {
  -    my $self = shift;
  -    my $ptr = tied(%$self);
  -    $OWNER{$ptr} = 1;
  -    };
  -
  -
   ############# Class : XML::Xerces::InputSource ##############
   
   package XML::Xerces::InputSource;
  @@ -2244,26 +2336,39 @@
   *parse = *XML::Xercesc::SAX2XMLReader_parse;
   sub setContentHandler {
     my ($self,$handler) = @_;
  -  my $callback = XML::Xerces::PerlContentCallbackHandler->new();
  -  $callback->set_callback_obj($handler);
  -  XML::Xercesc::SAX2XMLReader_setContentHandler($self,$callback);
  -  # maintain an internal reference
  -  $self->{__CONTENT_HANDLER} = $callback;
  +  my $callback = $XML::Xerces::SAX2XMLReader::OWNER{$self}->{__CONTENT_HANDLER};
  +  if (defined $callback) {
  +    $callback->set_callback_obj($handler);
  +  } else {
  +    $callback = XML::Xerces::PerlContentCallbackHandler->new($handler);
  +    $XML::Xerces::SAX2XMLReader::OWNER{$self}->{__CONTENT_HANDLER} = $callback;
  +  }
  +  return XML::Xercesc::SAX2XMLReader_setContentHandler($self,$callback);
   }
   *setDTDHandler = *XML::Xercesc::SAX2XMLReader_setDTDHandler;
   sub setEntityResolver {
     my ($self,$handler) = @_;
  -  my $callback = XML::Xerces::PerlEntityResolverHandler->new();
  -  $callback->set_callback_obj($handler);
  -  XML::Xercesc::SAX2XMLReader_setEntityResolver($self,$callback);
  -  $self->{__ENTITY_RESOLVER} = $callback;
  +  my $callback = $XML::Xerces::SAX2XMLReader::OWNER{$self}->{__ENTITY_RESOLVER};
  +  if (defined $callback) {
  +    $callback->set_callback_obj($handler);
  +  } else {
  +    $callback = XML::Xerces::PerlEntityResolverHandler->new($handler);
  +    $XML::Xerces::SAX2XMLReader::OWNER{$self}->{__ENTITY_RESOLVER} = $callback;
  +  }
  +  return XML::Xercesc::SAX2XMLReader_setEntityResolver($self,$callback);
   }
   sub setErrorHandler {
     my ($self,$handler) = @_;
  -  my $callback = XML::Xerces::PerlErrorCallbackHandler->new();
  -  $callback->set_callback_obj($handler);
  +  my $retval;
  +  my $callback = $XML::Xerces::SAX2XMLReader::OWNER{$self}->{__ERROR_HANDLER};
  +  if (defined $callback) {
  +    $retval = $callback->set_callback_obj($handler);
  +  } else {
  +    $callback = XML::Xerces::PerlErrorCallbackHandler->new($handler);
  +    $XML::Xerces::SAX2XMLReader::OWNER{$self}->{__ERROR_HANDLER} = $callback;
  +  }
     XML::Xercesc::SAX2XMLReader_setErrorHandler($self,$callback);
  -  $self->{__ERROR_HANDLER} = $callback;
  +  return $retval;
   }
   *setLexicalHandler = *XML::Xercesc::SAX2XMLReader_setLexicalHandler;
   *setDeclarationHandler = *XML::Xercesc::SAX2XMLReader_setDeclarationHandler;
  @@ -2400,25 +2505,39 @@
   }
   sub setDocumentHandler {
     my ($self,$handler) = @_;
  -  my $callback = XML::Xerces::PerlDocumentCallbackHandler->new();
  -  $callback->set_callback_obj($handler);
  -  XML::Xercesc::SAXParser_setDocumentHandler($self,$callback);
  -  $self->{__DOCUMENT_HANDLER} = $callback;
  +  my $callback = $XML::Xerces::SAXParser::OWNER{$self}->{__DOCUMENT_HANDLER};
  +  if (defined $callback) {
  +    $callback->set_callback_obj($handler);
  +  } else {
  +    $callback = XML::Xerces::PerlDocumentCallbackHandler->new($handler);
  +    $XML::Xerces::SAXParser::OWNER{$self}->{__DOCUMENT_HANDLER} = $callback;
  +  }
  +  return XML::Xercesc::SAXParser_setDocumentHandler($self,$callback);
   }
   *setDTDHandler = *XML::Xercesc::SAXParser_setDTDHandler;
   sub setErrorHandler {
     my ($self,$handler) = @_;
  -  my $callback = XML::Xerces::PerlErrorCallbackHandler->new();
  -  $callback->set_callback_obj($handler);
  +  my $retval;
  +  my $callback = $XML::Xerces::SAXParser::OWNER{$self}->{__ERROR_HANDLER};
  +  if (defined $callback) {
  +    $retval = $callback->set_callback_obj($handler);
  +  } else {
  +    $callback = XML::Xerces::PerlErrorCallbackHandler->new($handler);
  +    $XML::Xerces::SAXParser::OWNER{$self}->{__ERROR_HANDLER} = $callback;
  +  }
     XML::Xercesc::SAXParser_setErrorHandler($self,$callback);
  -  $self->{__ERROR_HANDLER} = $callback;
  +  return $retval;
   }
   sub setEntityResolver {
     my ($self,$handler) = @_;
  -  my $callback = XML::Xerces::PerlEntityResolverHandler->new();
  -  $callback->set_callback_obj($handler);
  -  XML::Xercesc::SAXParser_setEntityResolver($self,$callback);
  -  $self->{__ENTITY_RESOLVER} = $callback;
  +  my $callback = $XML::Xerces::SAXParser::OWNER{$self}->{__ENTITY_RESOLVER};
  +  if (defined $callback) {
  +    $callback->set_callback_obj($handler);
  +  } else {
  +    $callback = XML::Xerces::PerlEntityResolverHandler->new($handler);
  +    $XML::Xerces::SAXParser::OWNER{$self}->{__ENTITY_RESOLVER} = $callback;
  +  }
  +  return XML::Xercesc::SAXParser_setEntityResolver($self,$callback);
   }
   sub parseFirst {
       my @args = @_;
  @@ -2484,7 +2603,7 @@
   sub getDocument {
     my ($self) = @_;
     my $result = XML::Xercesc::DOMParser_getDocument($self);
  -  $XML::Xerces::DOM_Document::OWNER{$result} = $self;
  +  $XML::Xerces::DOM_Document::OWNER{$result}->{__PARSER} = $self;
     return $result;
   }
   sub getErrorHandler {
  @@ -2525,17 +2644,27 @@
   *getExternalNoNamespaceSchemaLocation = *XML::Xercesc::DOMParser_getExternalNoNamespaceSchemaLocation;
   sub setErrorHandler {
     my ($self,$handler) = @_;
  -  my $callback = XML::Xerces::PerlErrorCallbackHandler->new();
  -  $callback->set_callback_obj($handler);
  +  my $retval;
  +  my $callback = $XML::Xerces::DOMParser::OWNER{$self}->{__ERROR_HANDLER};
  +  if (defined $callback) {
  +    $retval = $callback->set_callback_obj($handler);
  +  } else {
  +    $callback = XML::Xerces::PerlErrorCallbackHandler->new($handler);
  +    $XML::Xerces::DOMParser::OWNER{$self}->{__ERROR_HANDLER} = $callback;
  +  }
     XML::Xercesc::DOMParser_setErrorHandler($self,$callback);
  -  $self->{__ERROR_HANDLER} = $callback;
  +  return $retval;
   }
   sub setEntityResolver {
     my ($self,$handler) = @_;
  -  my $callback = XML::Xerces::PerlEntityResolverHandler->new();
  -  $callback->set_callback_obj($handler);
  -  XML::Xercesc::DOMParser_setEntityResolver($self,$callback);
  -  $self->{__ENTITY_RESOLVER} = $callback;
  +  my $callback = $XML::Xerces::DOMParser::OWNER{$self}->{__ENTITY_RESOLVER};
  +  if (defined $callback) {
  +    $callback->set_callback_obj($handler);
  +  } else {
  +    $callback = XML::Xerces::PerlEntityResolverHandler->new($handler);
  +    $XML::Xerces::DOMParser::OWNER{$self}->{__ENTITY_RESOLVER} = $callback;
  +  }
  +  return XML::Xercesc::DOMParser_setEntityResolver($self,$callback);
   }
   *setDoNamespaces = *XML::Xercesc::DOMParser_setDoNamespaces;
   *setExitOnFirstFatalError = *XML::Xercesc::DOMParser_setExitOnFirstFatalError;
  @@ -2639,6 +2768,10 @@
   ############# Class : XML::Xerces::DOM_Node ##############
   
   package XML::Xerces::DOM_Node;
  +use overload
  +    "==" => sub { $_[0]->operator_equal_to($_[1])},
  +    "!=" => sub { $_[0]->operator_not_equal_to($_[1])},
  +    "fallback" => 1;
   @ISA = qw( XML::Xerces );
   %OWNER = ();
   %ITERATORS = ();
  @@ -2783,6 +2916,8 @@
   *getLocalName = *XML::Xercesc::DOM_Node_getLocalName;
   *setPrefix = *XML::Xercesc::DOM_Node_setPrefix;
   *hasAttributes = *XML::Xercesc::DOM_Node_hasAttributes;
  +*operator_equal_to = *XML::Xercesc::DOM_Node_operator_equal_to;
  +*operator_not_equal_to = *XML::Xercesc::DOM_Node_operator_not_equal_to;
   sub DISOWN {
       my $self = shift;
       my $ptr = tied(%$self);
  @@ -2936,8 +3071,8 @@
   sub DESTROY {
       my $self = shift;
       # we remove an reference to the Parser that created us
  -    if (exists $OWNER{$self}) {
  -        undef $OWNER{$self};
  +    if (exists $OWNER{$self}->{__PARSER}) {
  +        undef $OWNER{$self}->{__PARSER};
       }
   }
   
  @@ -3030,17 +3165,35 @@
       return bless \%resulthash, ref($result);
   }
   sub createNodeIterator {
  -    my @args = @_;
  +    my ($self,$root,$what,$filter,$expand) = @_;
  +    my $callback = $XML::Xerces::DOM_NodeIterator::OWNER{$self}->{__NODE_FILTER};
  +    if (defined $callback) {
  +      $callback->set_callback_obj($filter);
  +    } else {
  +      $callback = XML::Xerces::PerlNodeFilterCallbackHandler->new($filter);
  +      $XML::Xerces::DOM_NodeIterator::OWNER{$self}->{__NODE_FILTER} = $callback;
  +    }
  +    my @args = ($self,$root,$what,$callback,$expand);
  +
       my $result = XML::Xercesc::DOM_Document_createNodeIterator(@args);
  -    return $result unless ref($result) =~ m[XML::Xerces];
  +    return undef if (!defined($result));
       my %resulthash;
       tie %resulthash, ref($result), $result;
       return bless \%resulthash, ref($result);
   }
   sub createTreeWalker {
  -    my @args = @_;
  +    my ($self,$root,$what,$filter,$expand) = @_;
  +    my $callback = $XML::Xerces::DOM_TreeWalker::OWNER{$self}->{__NODE_FILTER};
  +    if (defined $callback) {
  +      $callback->set_callback_obj($filter);
  +    } else {
  +      $callback = XML::Xerces::PerlNodeFilterCallbackHandler->new($filter);
  +      $XML::Xerces::DOM_TreeWalker::OWNER{$self}->{__NODE_FILTER} = $callback;
  +    }
  +    my @args = ($self,$root,$what,$callback,$expand);
  +
       my $result = XML::Xercesc::DOM_Document_createTreeWalker(@args);
  -    return $result unless ref($result) =~ m[XML::Xerces];
  +    return undef if (!defined($result));
       my %resulthash;
       tie %resulthash, ref($result), $result;
       return bless \%resulthash, ref($result);
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: xerces-cvs-unsubscribe@xml.apache.org
For additional commands, e-mail: xerces-cvs-help@xml.apache.org