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]