jasons 2002/08/27 12:38:32
Modified: perl/Handler PerlContentCallbackHandler.cpp
PerlContentCallbackHandler.hpp
PerlDocumentCallbackHandler.cpp
PerlDocumentCallbackHandler.hpp
PerlEntityResolverHandler.hpp
PerlEntityResolverHandler.i
PerlErrorCallbackHandler.cpp
PerlErrorCallbackHandler.hpp
PerlNodeFilterCallbackHandler.hpp
PerlNodeFilterCallbackHandler.i
Log:
* Handler/PerlNodeFilterCallbackHandler.i (Repository):
* Handler/PerlErrorCallbackHandler.cpp (Repository):
* Handler/PerlEntityResolverHandler.i (Repository):
* Handler/PerlDocumentCallbackHandler.cpp (Repository):
* Handler/PerlContentCallbackHandler.cpp (Repository):
moved common code out of base class and into derived classes
refcount decrementing bug fixed??
Revision Changes Path
1.5 +21 -1 xml-xerces/perl/Handler/PerlContentCallbackHandler.cpp
Index: PerlContentCallbackHandler.cpp
===================================================================
RCS file: /home/cvs/xml-xerces/perl/Handler/PerlContentCallbackHandler.cpp,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- PerlContentCallbackHandler.cpp 28 Mar 2002 07:48:51 -0000 1.4
+++ PerlContentCallbackHandler.cpp 27 Aug 2002 19:38:31 -0000 1.5
@@ -1,12 +1,32 @@
#include <stdlib.h>
#include "PerlContentCallbackHandler.hpp"
+PerlContentCallbackHandler::PerlContentCallbackHandler()
+{
+ callbackObj = NULL;
+}
+
+PerlContentCallbackHandler::~PerlContentCallbackHandler()
+{
+ if (callbackObj != NULL) {
+ SvREFCNT_dec(callbackObj);
+ callbackObj = NULL;
+ }
+}
+
+PerlContentCallbackHandler::PerlContentCallbackHandler(SV *obj)
+{
+ set_callback_obj(obj);
+}
+
SV*
PerlContentCallbackHandler::set_callback_obj(SV* object) {
SV *oldRef = &PL_sv_undef; // default to 'undef'
if (callbackObj != NULL) {
oldRef = callbackObj;
- SvREFCNT_dec(oldRef);
+#if defined(PERL_VERSION) && PERL_VERSION >= 8
+// SvREFCNT_dec(oldRef);
+#endif
}
SvREFCNT_inc(object);
callbackObj = object;
1.4 +5 -5 xml-xerces/perl/Handler/PerlContentCallbackHandler.hpp
Index: PerlContentCallbackHandler.hpp
===================================================================
RCS file: /home/cvs/xml-xerces/perl/Handler/PerlContentCallbackHandler.hpp,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- PerlContentCallbackHandler.hpp 28 Mar 2002 07:48:51 -0000 1.3
+++ PerlContentCallbackHandler.hpp 27 Aug 2002 19:38:31 -0000 1.4
@@ -5,17 +5,17 @@
#include "xercesc/sax2/ContentHandler.hpp"
#include "xercesc/util/XMLString.hpp"
class PerlContentCallbackHandler : public ContentHandler
- , public PerlCallbackHandler
+// , public PerlCallbackHandler
{
protected:
-// SV *callbackObj;
+ SV *callbackObj;
public:
- PerlContentCallbackHandler() {};
- PerlContentCallbackHandler(SV *obj) : PerlCallbackHandler(obj){};
- ~PerlContentCallbackHandler() {};
+ PerlContentCallbackHandler();
+ PerlContentCallbackHandler(SV *obj);
+ ~PerlContentCallbackHandler();
SV* set_callback_obj(SV*);
1.5 +21 -1 xml-xerces/perl/Handler/PerlDocumentCallbackHandler.cpp
Index: PerlDocumentCallbackHandler.cpp
===================================================================
RCS file: /home/cvs/xml-xerces/perl/Handler/PerlDocumentCallbackHandler.cpp,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- PerlDocumentCallbackHandler.cpp 28 Mar 2002 07:48:51 -0000 1.4
+++ PerlDocumentCallbackHandler.cpp 27 Aug 2002 19:38:31 -0000 1.5
@@ -1,12 +1,32 @@
#include <stdlib.h>
#include "PerlDocumentCallbackHandler.hpp"
+PerlDocumentCallbackHandler::PerlDocumentCallbackHandler()
+{
+ callbackObj = NULL;
+}
+
+PerlDocumentCallbackHandler::~PerlDocumentCallbackHandler()
+{
+ if (callbackObj != NULL) {
+ SvREFCNT_dec(callbackObj);
+ callbackObj = NULL;
+ }
+}
+
+PerlDocumentCallbackHandler::PerlDocumentCallbackHandler(SV *obj)
+{
+ set_callback_obj(obj);
+}
+
SV*
PerlDocumentCallbackHandler::set_callback_obj(SV* object) {
SV *oldRef = &PL_sv_undef; // default to 'undef'
if (callbackObj != NULL) {
oldRef = callbackObj;
- SvREFCNT_dec(oldRef);
+#if defined(PERL_VERSION) && PERL_VERSION >= 8
+// SvREFCNT_dec(oldRef);
+#endif
}
SvREFCNT_inc(object);
callbackObj = object;
1.4 +5 -5 xml-xerces/perl/Handler/PerlDocumentCallbackHandler.hpp
Index: PerlDocumentCallbackHandler.hpp
===================================================================
RCS file: /home/cvs/xml-xerces/perl/Handler/PerlDocumentCallbackHandler.hpp,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- PerlDocumentCallbackHandler.hpp 28 Mar 2002 07:48:51 -0000 1.3
+++ PerlDocumentCallbackHandler.hpp 27 Aug 2002 19:38:31 -0000 1.4
@@ -5,17 +5,17 @@
#include "xercesc/sax/DocumentHandler.hpp"
#include "xercesc/util/XMLString.hpp"
class PerlDocumentCallbackHandler : public DocumentHandler
- , public PerlCallbackHandler
+// , public PerlCallbackHandler
{
protected:
-// SV *callbackObj;
+ SV *callbackObj;
public:
- PerlDocumentCallbackHandler() {};
- PerlDocumentCallbackHandler(SV *obj) : PerlCallbackHandler(obj){};
- ~PerlDocumentCallbackHandler() {};
+ PerlDocumentCallbackHandler();
+ PerlDocumentCallbackHandler(SV *obj);
+ ~PerlDocumentCallbackHandler();
SV* set_callback_obj(SV*);
1.4 +5 -5 xml-xerces/perl/Handler/PerlEntityResolverHandler.hpp
Index: PerlEntityResolverHandler.hpp
===================================================================
RCS file: /home/cvs/xml-xerces/perl/Handler/PerlEntityResolverHandler.hpp,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- PerlEntityResolverHandler.hpp 28 Mar 2002 07:48:51 -0000 1.3
+++ PerlEntityResolverHandler.hpp 27 Aug 2002 19:38:31 -0000 1.4
@@ -7,17 +7,17 @@
class InputSource;
class PerlEntityResolverHandler: public EntityResolver
- , public PerlCallbackHandler
+// , public PerlCallbackHandler
{
protected:
-// SV *callbackObj;
+ SV *callbackObj;
public:
- PerlEntityResolverHandler() {};
- PerlEntityResolverHandler(SV *obj) : PerlCallbackHandler(obj) {};
- ~PerlEntityResolverHandler() {};
+ PerlEntityResolverHandler();
+ PerlEntityResolverHandler(SV *obj);
+ ~PerlEntityResolverHandler();
SV* set_callback_obj(SV*);
1.6 +29 -2 xml-xerces/perl/Handler/PerlEntityResolverHandler.i
Index: PerlEntityResolverHandler.i
===================================================================
RCS file: /home/cvs/xml-xerces/perl/Handler/PerlEntityResolverHandler.i,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -r1.5 -r1.6
--- PerlEntityResolverHandler.i 28 Mar 2002 07:48:51 -0000 1.5
+++ PerlEntityResolverHandler.i 27 Aug 2002 19:38:31 -0000 1.6
@@ -1,12 +1,38 @@
#include "xercesc/sax/InputSource.hpp"
#include "PerlEntityResolverHandler.hpp"
+PerlEntityResolverHandler::PerlEntityResolverHandler()
+{
+ callbackObj = NULL;
+}
+
+PerlEntityResolverHandler::~PerlEntityResolverHandler()
+{
+ if (callbackObj != NULL) {
+ SvREFCNT_dec(callbackObj);
+ callbackObj = NULL;
+ }
+}
+
+PerlEntityResolverHandler::PerlEntityResolverHandler(SV *obj)
+{
+ if (!sv_isobject(obj)) {
+ croak("expect object");
+ }
+ if (!sv_derived_from(obj,"XML::Xerces::PerlEntityResolver")) {
+ croak("expect subclass of XML::Xerces::PerlEntityResolver");
+ }
+ set_callback_obj(obj);
+}
+
SV*
PerlEntityResolverHandler::set_callback_obj(SV* object) {
SV *oldRef = &PL_sv_undef; // default to 'undef'
if (callbackObj != NULL) {
oldRef = callbackObj;
- SvREFCNT_dec(oldRef);
+#if defined(PERL_VERSION) && PERL_VERSION >= 8
+// SvREFCNT_dec(oldRef);
+#endif
}
SvREFCNT_inc(object);
callbackObj = object;
@@ -58,7 +84,8 @@
croak("EntityResolver did not retury an InputSource\n") ;
}
- if (SWIG_ConvertPtr(source_sv,(void **) &source, SWIGTYPE_p_InputSource) < 0) {
+ if (SWIG_ConvertPtr(source_sv,(void **) &source, SWIGTYPE_p_InputSource,0) < 0)
{
+
croak("EntityResolver did not retury an InputSource. Expected %s",
SWIGTYPE_p_InputSource->name);
}
PUTBACK ;
1.5 +21 -1 xml-xerces/perl/Handler/PerlErrorCallbackHandler.cpp
Index: PerlErrorCallbackHandler.cpp
===================================================================
RCS file: /home/cvs/xml-xerces/perl/Handler/PerlErrorCallbackHandler.cpp,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- PerlErrorCallbackHandler.cpp 28 Mar 2002 07:48:51 -0000 1.4
+++ PerlErrorCallbackHandler.cpp 27 Aug 2002 19:38:31 -0000 1.5
@@ -1,12 +1,32 @@
#include <stdlib.h>
#include "PerlErrorCallbackHandler.hpp"
+PerlErrorCallbackHandler::PerlErrorCallbackHandler()
+{
+ callbackObj = NULL;
+}
+
+PerlErrorCallbackHandler::~PerlErrorCallbackHandler()
+{
+ if (callbackObj != NULL) {
+ SvREFCNT_dec(callbackObj);
+ callbackObj = NULL;
+ }
+}
+
+PerlErrorCallbackHandler::PerlErrorCallbackHandler(SV *obj)
+{
+ set_callback_obj(obj);
+}
+
SV*
PerlErrorCallbackHandler::set_callback_obj(SV* object) {
SV *oldRef = &PL_sv_undef; // default to 'undef'
if (callbackObj != NULL) {
oldRef = callbackObj;
- SvREFCNT_dec(oldRef);
+#if defined(PERL_VERSION) && PERL_VERSION >= 8
+// SvREFCNT_dec(oldRef);
+#endif
}
SvREFCNT_inc(object);
callbackObj = object;
1.4 +5 -5 xml-xerces/perl/Handler/PerlErrorCallbackHandler.hpp
Index: PerlErrorCallbackHandler.hpp
===================================================================
RCS file: /home/cvs/xml-xerces/perl/Handler/PerlErrorCallbackHandler.hpp,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- PerlErrorCallbackHandler.hpp 28 Mar 2002 07:48:51 -0000 1.3
+++ PerlErrorCallbackHandler.hpp 27 Aug 2002 19:38:31 -0000 1.4
@@ -4,17 +4,17 @@
#include "PerlCallbackHandler.hpp"
#include "xercesc/sax/ErrorHandler.hpp"
class PerlErrorCallbackHandler : public ErrorHandler
- , public PerlCallbackHandler
+// , public PerlCallbackHandler
{
protected:
-// SV *callbackObj;
+ SV *callbackObj;
public:
- PerlErrorCallbackHandler() {};
- PerlErrorCallbackHandler(SV *obj) : PerlCallbackHandler(obj) {};
- ~PerlErrorCallbackHandler() {};
+ PerlErrorCallbackHandler();
+ PerlErrorCallbackHandler(SV *obj);
+ ~PerlErrorCallbackHandler();
SV* set_callback_obj(SV*);
1.2 +8 -8 xml-xerces/perl/Handler/PerlNodeFilterCallbackHandler.hpp
Index: PerlNodeFilterCallbackHandler.hpp
===================================================================
RCS file: /home/cvs/xml-xerces/perl/Handler/PerlNodeFilterCallbackHandler.hpp,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- PerlNodeFilterCallbackHandler.hpp 28 Mar 2002 07:47:16 -0000 1.1
+++ PerlNodeFilterCallbackHandler.hpp 27 Aug 2002 19:38:31 -0000 1.2
@@ -2,24 +2,24 @@
#define __PERLNODEFILTERCALLBACKHANDLER
#include "PerlCallbackHandler.hpp"
-#include "xercesc/idom/IDOM_NodeFilter.hpp"
-class PerlNodeFilterCallbackHandler : public IDOM_NodeFilter
- , public PerlCallbackHandler
+#include "xercesc/dom/DOMNodeFilter.hpp"
+class PerlNodeFilterCallbackHandler : public DOMNodeFilter
+// , public PerlCallbackHandler
{
protected:
-// SV *callbackObj;
+ SV *callbackObj;
public:
- PerlNodeFilterCallbackHandler() {};
- PerlNodeFilterCallbackHandler(SV *obj) : PerlCallbackHandler(obj){};
- ~PerlNodeFilterCallbackHandler() {};
+ PerlNodeFilterCallbackHandler();
+ PerlNodeFilterCallbackHandler(SV *obj);
+ ~PerlNodeFilterCallbackHandler();
SV* set_callback_obj(SV*);
// The NodeFilter interface
- short acceptNode (const IDOM_Node* node) const;
+ short acceptNode (const DOMNode* node) const;
};
#endif __PERLNODEFILTERCALLBACKHANDLER
1.2 +24 -4 xml-xerces/perl/Handler/PerlNodeFilterCallbackHandler.i
Index: PerlNodeFilterCallbackHandler.i
===================================================================
RCS file: /home/cvs/xml-xerces/perl/Handler/PerlNodeFilterCallbackHandler.i,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- PerlNodeFilterCallbackHandler.i 28 Mar 2002 07:47:16 -0000 1.1
+++ PerlNodeFilterCallbackHandler.i 27 Aug 2002 19:38:31 -0000 1.2
@@ -1,11 +1,31 @@
#include "PerlNodeFilterCallbackHandler.hpp"
+PerlNodeFilterCallbackHandler::PerlNodeFilterCallbackHandler()
+{
+ callbackObj = NULL;
+}
+
+PerlNodeFilterCallbackHandler::~PerlNodeFilterCallbackHandler()
+{
+ if (callbackObj != NULL) {
+ SvREFCNT_dec(callbackObj);
+ callbackObj = NULL;
+ }
+}
+
+PerlNodeFilterCallbackHandler::PerlNodeFilterCallbackHandler(SV *obj)
+{
+ set_callback_obj(obj);
+}
+
SV*
PerlNodeFilterCallbackHandler::set_callback_obj(SV* object) {
SV *oldRef = &PL_sv_undef; // default to 'undef'
if (callbackObj != NULL) {
oldRef = callbackObj;
- SvREFCNT_dec(oldRef);
+#if defined(PERL_VERSION) && PERL_VERSION >= 8
+// SvREFCNT_dec(oldRef);
+#endif
}
SvREFCNT_inc(object);
callbackObj = object;
@@ -13,7 +33,7 @@
}
short
-PerlNodeFilterCallbackHandler::acceptNode (const IDOM_Node* node) const
+PerlNodeFilterCallbackHandler::acceptNode (const DOMNode* node) const
{
if (!callbackObj) {
croak("\nacceptNode: no NodeFilter set\n");
@@ -30,9 +50,9 @@
XPUSHs(callbackObj);
// the only argument is the node
- swig_type_info *ty = SWIG_TypeDynamicCast(SWIGTYPE_p_IDOM_Node, (void **)
&node);
+ swig_type_info *ty = SWIG_TypeDynamicCast(SWIGTYPE_p_DOMNode, (void **) &node);
SV* node_sv = sv_newmortal();
- SWIG_MakePtr(node_sv, (void *) node, ty);
+ SWIG_MakePtr(node_sv, (void *) node, ty,0);
XPUSHs(node_sv);
PUTBACK;
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]