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]