Author: jasons
Date: Mon Nov 10 09:58:27 2003
New Revision: 104

Removed:
   xml/xerces-p/trunk/Handler/PerlNodeFilterCallbackHandler.swig.hpp
Modified:
   xml/xerces-p/trunk/Handler/   (props changed)
   xml/xerces-p/trunk/Handler/PerlCallbackHandler.cpp
   xml/xerces-p/trunk/Handler/PerlCallbackHandler.hpp
   xml/xerces-p/trunk/Handler/PerlCallbackHandler.swig.hpp
   xml/xerces-p/trunk/Handler/PerlContentCallbackHandler.cpp
   xml/xerces-p/trunk/Handler/PerlContentCallbackHandler.hpp
   xml/xerces-p/trunk/Handler/PerlDocumentCallbackHandler.cpp
   xml/xerces-p/trunk/Handler/PerlDocumentCallbackHandler.hpp
   xml/xerces-p/trunk/Handler/PerlEntityResolverHandler.hpp
   xml/xerces-p/trunk/Handler/PerlErrorCallbackHandler.cpp
   xml/xerces-p/trunk/Handler/PerlErrorCallbackHandler.hpp
   xml/xerces-p/trunk/Handler/PerlNodeFilterCallbackHandler.hpp
Log:
multiple inheritance now works with PerlCallbackHandler (fixes 24373)

Modified: xml/xerces-p/trunk/Handler/PerlCallbackHandler.cpp
==============================================================================
--- xml/xerces-p/trunk/Handler/PerlCallbackHandler.cpp  (original)
+++ xml/xerces-p/trunk/Handler/PerlCallbackHandler.cpp  Mon Nov 10 09:58:27 2003
@@ -19,15 +19,25 @@
     callbackObj = object;
 }
 
+PerlCallbackHandler::PerlCallbackHandler(PerlCallbackHandler* handler) {
+    SvREFCNT_inc(callbackObj);
+    handler->callbackObj = callbackObj;
+//     printf("<copy constructor for obj: 0x%.4X, new obj: 0x%.4X>\n", this, handler);
+}
+
 SV*
 PerlCallbackHandler::set_callback_obj(SV* object) {
     SV *oldRef = &PL_sv_undef; // default to 'undef'
+//    printf("<setting callback object for this: 0x%.4X>\n", this);
     if (callbackObj != NULL) {
        oldRef = callbackObj;
+//     printf("<old callback object 0x%.4X>\n", callbackObj);
 //     SvREFCNT_dec(oldRef);
     }
     SvREFCNT_inc(object);
+//    printf("<setting callback object 0x%.4X>\n", object);
     callbackObj = object;
+//    printf("<new callback object 0x%.4X>\n", callbackObj);
     return oldRef;
 }
 

Modified: xml/xerces-p/trunk/Handler/PerlCallbackHandler.hpp
==============================================================================
--- xml/xerces-p/trunk/Handler/PerlCallbackHandler.hpp  (original)
+++ xml/xerces-p/trunk/Handler/PerlCallbackHandler.hpp  Mon Nov 10 09:58:27 2003
@@ -33,17 +33,29 @@
 #endif
 #endif
 
+#define PERLCALLBACKHANDLER_BASE_TYPE         -1
+#define PERLCALLBACKHANDLER_ERROR_TYPE         0
+#define PERLCALLBACKHANDLER_ENTITY_TYPE        1
+#define PERLCALLBACKHANDLER_NODE_TYPE          2
+#define PERLCALLBACKHANDLER_CONTENT_TYPE       3
+#define PERLCALLBACKHANDLER_DOCUMENT_TYPE      4
+
 class PerlCallbackHandler {
 
-protected:
+private:
 
-public:
+    PerlCallbackHandler(PerlCallbackHandler*);
+
+protected:
 
     SV *callbackObj;
 
+public:
+
     PerlCallbackHandler();
     PerlCallbackHandler(SV*);
     virtual ~PerlCallbackHandler();
+    virtual int type() {return PERLCALLBACKHANDLER_BASE_TYPE;}
 
     SV* set_callback_obj(SV*);
 };

Modified: xml/xerces-p/trunk/Handler/PerlCallbackHandler.swig.hpp
==============================================================================
--- xml/xerces-p/trunk/Handler/PerlCallbackHandler.swig.hpp     (original)
+++ xml/xerces-p/trunk/Handler/PerlCallbackHandler.swig.hpp     Mon Nov 10 09:58:27 
2003
@@ -4,7 +4,7 @@
 
    PerlCallbackHandler();
    PerlCallbackHandler(SV*);
-   void set_callback_obj(SV*);
+   SV* set_callback_obj(SV*);
 };
 
 class PerlNodeFilterCallbackHandler : public DOMNodeFilter, public 
PerlCallbackHandler {

Modified: xml/xerces-p/trunk/Handler/PerlContentCallbackHandler.cpp
==============================================================================
--- xml/xerces-p/trunk/Handler/PerlContentCallbackHandler.cpp   (original)
+++ xml/xerces-p/trunk/Handler/PerlContentCallbackHandler.cpp   Mon Nov 10 09:58:27 
2003
@@ -19,19 +19,19 @@
     set_callback_obj(obj);
 }
 
-SV*
-PerlContentCallbackHandler::set_callback_obj(SV* object) {
-    SV *oldRef = &PL_sv_undef; // default to 'undef'
-    if (callbackObj != NULL) {
-       oldRef = callbackObj;
-#if defined(PERL_VERSION) && PERL_VERSION >= 8
-//     SvREFCNT_dec(oldRef);
-#endif
-    }
-    SvREFCNT_inc(object);
-    callbackObj = object;
-    return oldRef;
-}
+// SV*
+// PerlContentCallbackHandler::set_callback_obj(SV* object) {
+//     SV *oldRef = &PL_sv_undef;      // default to 'undef'
+//     if (callbackObj != NULL) {
+//     oldRef = callbackObj;
+// #if defined(PERL_VERSION) && PERL_VERSION >= 8
+// //  SvREFCNT_dec(oldRef);
+// #endif
+//     }
+//     SvREFCNT_inc(object);
+//     callbackObj = object;
+//     return oldRef;
+// }
 
 void
 PerlContentCallbackHandler::startElement(const   XMLCh* const    uri,

Modified: xml/xerces-p/trunk/Handler/PerlContentCallbackHandler.hpp
==============================================================================
--- xml/xerces-p/trunk/Handler/PerlContentCallbackHandler.hpp   (original)
+++ xml/xerces-p/trunk/Handler/PerlContentCallbackHandler.hpp   Mon Nov 10 09:58:27 
2003
@@ -8,11 +8,11 @@
 XERCES_CPP_NAMESPACE_USE
 
 class PerlContentCallbackHandler  : public ContentHandler
-//                              , public PerlCallbackHandler 
+                                , public PerlCallbackHandler 
 {
 
 protected:
-    SV *callbackObj;
+//    SV *callbackObj;
 
 public:
 
@@ -20,7 +20,7 @@
     PerlContentCallbackHandler(SV *obj);
     ~PerlContentCallbackHandler();
 
-    SV* set_callback_obj(SV*);
+    int type() {return PERLCALLBACKHANDLER_CONTENT_TYPE;}
 
        // The ContentHandler interface
     void startElement(const   XMLCh* const    uri,

Modified: xml/xerces-p/trunk/Handler/PerlDocumentCallbackHandler.cpp
==============================================================================
--- xml/xerces-p/trunk/Handler/PerlDocumentCallbackHandler.cpp  (original)
+++ xml/xerces-p/trunk/Handler/PerlDocumentCallbackHandler.cpp  Mon Nov 10 09:58:27 
2003
@@ -19,19 +19,19 @@
     set_callback_obj(obj);
 }
 
-SV*
-PerlDocumentCallbackHandler::set_callback_obj(SV* object) {
-    SV *oldRef = &PL_sv_undef; // default to 'undef'
-    if (callbackObj != NULL) {
-       oldRef = callbackObj;
-#if defined(PERL_VERSION) && PERL_VERSION >= 8
-//     SvREFCNT_dec(oldRef);
-#endif
-    }
-    SvREFCNT_inc(object);
-    callbackObj = object;
-    return oldRef;
-}
+// SV*
+// PerlDocumentCallbackHandler::set_callback_obj(SV* object) {
+//     SV *oldRef = &PL_sv_undef;      // default to 'undef'
+//     if (callbackObj != NULL) {
+//     oldRef = callbackObj;
+// #if defined(PERL_VERSION) && PERL_VERSION >= 8
+// //  SvREFCNT_dec(oldRef);
+// #endif
+//     }
+//     SvREFCNT_inc(object);
+//     callbackObj = object;
+//     return oldRef;
+// }
 
 void
 PerlDocumentCallbackHandler::startElement(const XMLCh* const name, 

Modified: xml/xerces-p/trunk/Handler/PerlDocumentCallbackHandler.hpp
==============================================================================
--- xml/xerces-p/trunk/Handler/PerlDocumentCallbackHandler.hpp  (original)
+++ xml/xerces-p/trunk/Handler/PerlDocumentCallbackHandler.hpp  Mon Nov 10 09:58:27 
2003
@@ -7,12 +7,12 @@
 
 XERCES_CPP_NAMESPACE_USE
 
+
 class PerlDocumentCallbackHandler : public DocumentHandler
-//                               , public  PerlCallbackHandler 
+                                 , public PerlCallbackHandler 
 {
 
 protected:
-    SV *callbackObj;
 
 public:
 
@@ -20,7 +20,7 @@
     PerlDocumentCallbackHandler(SV *obj);
     ~PerlDocumentCallbackHandler();
 
-    SV* set_callback_obj(SV*);
+    int type() {return PERLCALLBACKHANDLER_DOCUMENT_TYPE;}
 
        // The DocumentHandler interface
     void startElement(const XMLCh* const name, 

Modified: xml/xerces-p/trunk/Handler/PerlEntityResolverHandler.hpp
==============================================================================
--- xml/xerces-p/trunk/Handler/PerlEntityResolverHandler.hpp    (original)
+++ xml/xerces-p/trunk/Handler/PerlEntityResolverHandler.hpp    Mon Nov 10 09:58:27 
2003
@@ -13,7 +13,6 @@
  {
 
 protected:
-//    SV *callbackObj;
 
 public:
 
@@ -21,7 +20,7 @@
     PerlEntityResolverHandler(SV *obj);
     ~PerlEntityResolverHandler();
 
-//     SV* set_callback_obj(SV*);
+    int type() {return PERLCALLBACKHANDLER_ENTITY_TYPE;}
 
        // The EntityResolver interface
     InputSource* resolveEntity (const XMLCh* const publicId, 

Modified: xml/xerces-p/trunk/Handler/PerlErrorCallbackHandler.cpp
==============================================================================
--- xml/xerces-p/trunk/Handler/PerlErrorCallbackHandler.cpp     (original)
+++ xml/xerces-p/trunk/Handler/PerlErrorCallbackHandler.cpp     Mon Nov 10 09:58:27 
2003
@@ -19,19 +19,19 @@
     set_callback_obj(obj);
 }
 
-SV*
-PerlErrorCallbackHandler::set_callback_obj(SV* object) {
-    SV *oldRef = &PL_sv_undef; // default to 'undef'
-    if (callbackObj != NULL) {
-       oldRef = callbackObj;
-#if defined(PERL_VERSION) && PERL_VERSION >= 8
-//     SvREFCNT_dec(oldRef);
-#endif
-    }
-    SvREFCNT_inc(object);
-    callbackObj = object;
-    return oldRef;
-}
+// SV*
+// PerlErrorCallbackHandler::set_callback_obj(SV* object) {
+//     SV *oldRef = &PL_sv_undef;      // default to 'undef'
+//     if (callbackObj != NULL) {
+//     oldRef = callbackObj;
+// #if defined(PERL_VERSION) && PERL_VERSION >= 8
+// //  SvREFCNT_dec(oldRef);
+// #endif
+//     }
+//     SvREFCNT_inc(object);
+//     callbackObj = object;
+//     return oldRef;
+// }
 
 void
 PerlErrorCallbackHandler::warning(const SAXParseException& exception) {
@@ -97,6 +97,8 @@
     if (!callbackObj) {
        die("Received FatalError and no ErrorHandler was set");
     }
+//    printf("<FatalError: for this: 0x%.4X>\n", this);
+//    printf("<FatalError: using callback object 0x%.4X>\n", callbackObj);
 
     dSP;
 

Modified: xml/xerces-p/trunk/Handler/PerlErrorCallbackHandler.hpp
==============================================================================
--- xml/xerces-p/trunk/Handler/PerlErrorCallbackHandler.hpp     (original)
+++ xml/xerces-p/trunk/Handler/PerlErrorCallbackHandler.hpp     Mon Nov 10 09:58:27 
2003
@@ -7,11 +7,10 @@
 XERCES_CPP_NAMESPACE_USE
 
 class PerlErrorCallbackHandler : public ErrorHandler
-//                            , public PerlCallbackHandler 
+                              , public PerlCallbackHandler 
 {
 
 protected:
-    SV *callbackObj;
 
 public:
 
@@ -19,7 +18,7 @@
     PerlErrorCallbackHandler(SV *obj);
     ~PerlErrorCallbackHandler();
 
-    SV* set_callback_obj(SV*);
+    int type() {return PERLCALLBACKHANDLER_ERROR_TYPE;}
 
        // the ErrorHandler interface
     void warning(const SAXParseException& exception);

Modified: xml/xerces-p/trunk/Handler/PerlNodeFilterCallbackHandler.hpp
==============================================================================
--- xml/xerces-p/trunk/Handler/PerlNodeFilterCallbackHandler.hpp        (original)
+++ xml/xerces-p/trunk/Handler/PerlNodeFilterCallbackHandler.hpp        Mon Nov 10 
09:58:27 2003
@@ -11,7 +11,6 @@
 {
 
 protected:
-//     SV *callbackObj;
 
 public:
 
@@ -19,7 +18,7 @@
     PerlNodeFilterCallbackHandler(SV *obj);
     ~PerlNodeFilterCallbackHandler();
 
-//     SV* set_callback_obj(SV*);
+    int type() {return PERLCALLBACKHANDLER_NODE_TYPE;}
 
        // The NodeFilter interface
     short acceptNode (const DOMNode* node) const;

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to