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 2006/10/13 23:32:47 UTC

svn commit: r463844 [3/6] - in /xerces/c/trunk/swig/perl: ./ DOM/ Handler/ Transcoder/ samples/

Modified: xerces/c/trunk/swig/perl/Handler/Makefile.PL
URL: http://svn.apache.org/viewvc/xerces/c/trunk/swig/perl/Handler/Makefile.PL?view=diff&rev=463844&r1=463843&r2=463844
==============================================================================
--- xerces/c/trunk/swig/perl/Handler/Makefile.PL (original)
+++ xerces/c/trunk/swig/perl/Handler/Makefile.PL Fri Oct 13 14:32:45 2006
@@ -19,7 +19,8 @@
     'NAME'	=> 'Handler',
     'INC'       => $INCLUDES,
     'OBJECT'    => '$(O_FILES)',
-#    'CCFLAGS'   => $CFLAGS,
+    'LIBS'      => [$LIBS],
+    'CCFLAGS'   => $CFLAGS,
     'CC'        => $CXX,
     'SKIP'      => [qw( dynamic test makeaperl xs_o)],
   @OPTIMIZE,

Modified: xerces/c/trunk/swig/perl/Handler/PerlCallbackHandler.cpp
URL: http://svn.apache.org/viewvc/xerces/c/trunk/swig/perl/Handler/PerlCallbackHandler.cpp?view=diff&rev=463844&r1=463843&r2=463844
==============================================================================
--- xerces/c/trunk/swig/perl/Handler/PerlCallbackHandler.cpp (original)
+++ xerces/c/trunk/swig/perl/Handler/PerlCallbackHandler.cpp Fri Oct 13 14:32:45 2006
@@ -17,6 +17,8 @@
 #include <stdlib.h>
 #include "PerlCallbackHandler.hpp"
 
+XERCES_CPP_NAMESPACE_USE
+
 PerlCallbackHandler::PerlCallbackHandler() {
   // fprintf(stderr,"PerlCallback: constructor\n");
   UTF8_TRANSCODER = Transcoder::getInstance();

Modified: xerces/c/trunk/swig/perl/Handler/PerlCallbackHandler.hpp
URL: http://svn.apache.org/viewvc/xerces/c/trunk/swig/perl/Handler/PerlCallbackHandler.hpp?view=diff&rev=463844&r1=463843&r2=463844
==============================================================================
--- xerces/c/trunk/swig/perl/Handler/PerlCallbackHandler.hpp (original)
+++ xerces/c/trunk/swig/perl/Handler/PerlCallbackHandler.hpp Fri Oct 13 14:32:45 2006
@@ -52,13 +52,13 @@
 #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
+#define PERLCALLBACKHANDLER_SAX_TYPE           3
+#define PERLCALLBACKHANDLER_DOMERROR_TYPE      4
 
 #include "xercesc/util/PlatformUtils.hpp"
 #include "Transcoder.hpp"
 
-XERCES_CPP_NAMESPACE_USE
+XERCES_CPP_NAMESPACE_BEGIN
 
 class PerlCallbackHandler {
 
@@ -80,5 +80,7 @@
 
     SV* set_callback_obj(SV*);
 };
+
+XERCES_CPP_NAMESPACE_END
 
 #endif /* __PERLCALLBACKHANDLER */

Modified: xerces/c/trunk/swig/perl/Handler/PerlEntityResolverHandler.cpp
URL: http://svn.apache.org/viewvc/xerces/c/trunk/swig/perl/Handler/PerlEntityResolverHandler.cpp?view=diff&rev=463844&r1=463843&r2=463844
==============================================================================
--- xerces/c/trunk/swig/perl/Handler/PerlEntityResolverHandler.cpp (original)
+++ xerces/c/trunk/swig/perl/Handler/PerlEntityResolverHandler.cpp Fri Oct 13 14:32:45 2006
@@ -18,6 +18,8 @@
 #include "PerlEntityResolverHandler.hpp"
 #include "xerces-swig-perl.hpp"
 
+XERCES_CPP_NAMESPACE_USE
+
 PerlEntityResolverHandler::PerlEntityResolverHandler()
 {
     callbackObj = NULL;
@@ -58,11 +60,11 @@
     XPUSHs(callbackObj);
 
         // the next argument is the publicId
-    SV *string1 = UTF8_TRANSCODER->XMLString2Perl(publicId);
+    SV *string1 = UTF8_TRANSCODER->XMLString2Local(publicId);
     XPUSHs(string1);
 
         // the next argument is the systemId
-    SV *string2 = UTF8_TRANSCODER->XMLString2Perl(systemId);
+    SV *string2 = UTF8_TRANSCODER->XMLString2Local(systemId);
     XPUSHs(string2);
 
     PUTBACK;
@@ -98,3 +100,65 @@
     LEAVE;
     return source;
 }
+
+InputSource *
+PerlEntityResolverHandler::resolveEntity (XMLResourceIdentifier* id)
+{
+    if (!callbackObj) {
+        croak("\nresolveEntity: no EntityResolver set\n");
+	return NULL;
+    }
+
+    dSP;
+    InputSource *source;
+    char *isName = "XML::Xerces::InputSource";
+    char *resIdName = "XML::Xerces::XMLResourceIdentifier";
+
+    ENTER;
+    SAVETMPS;
+
+    PUSHMARK(SP);
+	// first put the callback object on the stack
+    XPUSHs(callbackObj);
+
+    // the only argument is the ResourceIdentifier
+    // god bless John Lenz's new type system in SWIG 1.3.25!!!
+    swig_type_info *ty = SWIG_TypeQuery(resIdName);
+    SV* resId_sv = sv_newmortal();
+    SWIG_MakePtr(resId_sv, (void *) id, ty,0);
+    XPUSHs(resId_sv);
+
+    PUTBACK;
+
+    int count = perl_call_method("resolve_entity", G_SCALAR);
+
+    SPAGAIN ;
+
+    SV* source_sv;
+    if (count != 1)
+    {
+	warn("EntityResolver did not retury any object\n");
+	source_sv = &PL_sv_undef;
+    }
+    else
+    {
+        source_sv = POPs;
+    }
+
+    if (count == 1 
+	&& SvOK(source_sv)
+	&& !sv_derived_from(source_sv, isName)) {
+	croak("EntityResolver did not return an InputSource\n") ;
+    }
+
+    // god bless John Lenz's new type system in SWIG 1.3.25!!!
+    swig_type_info *isType = SWIG_TypeQuery(isName);
+    if (SWIG_ConvertPtr(source_sv,(void **) &source, isType, 0) < 0) {
+        croak("EntityResolver did not return an InputSource. Expected %s", isName);
+    }
+    PUTBACK ;
+    FREETMPS;
+    LEAVE;
+    return source;
+}
+

Modified: xerces/c/trunk/swig/perl/Handler/PerlEntityResolverHandler.hpp
URL: http://svn.apache.org/viewvc/xerces/c/trunk/swig/perl/Handler/PerlEntityResolverHandler.hpp?view=diff&rev=463844&r1=463843&r2=463844
==============================================================================
--- xerces/c/trunk/swig/perl/Handler/PerlEntityResolverHandler.hpp (original)
+++ xerces/c/trunk/swig/perl/Handler/PerlEntityResolverHandler.hpp Fri Oct 13 14:32:45 2006
@@ -21,10 +21,14 @@
 #include "xercesc/sax/EntityResolver.hpp"
 #include "xercesc/sax/InputSource.hpp"
 #include "xercesc/util/XMLString.hpp"
+#include "xercesc/util/XMLEntityResolver.hpp"
 
-XERCES_CPP_NAMESPACE_USE
+class XMLResourceIdentifier;
+
+XERCES_CPP_NAMESPACE_BEGIN
 
 class PerlEntityResolverHandler: public EntityResolver
+			       , public XMLEntityResolver
 			       , public PerlCallbackHandler
  {
 
@@ -42,6 +46,11 @@
     InputSource* resolveEntity (const XMLCh* const publicId, 
 				const XMLCh* const systemId);
 
+	// The XMLEntityResolver interface
+    InputSource* resolveEntity(XMLResourceIdentifier*);
+
 };
+
+XERCES_CPP_NAMESPACE_END
 
 #endif /* __PERLENTITYRESOLVERHANDLER */

Modified: xerces/c/trunk/swig/perl/Handler/PerlErrorCallbackHandler.cpp
URL: http://svn.apache.org/viewvc/xerces/c/trunk/swig/perl/Handler/PerlErrorCallbackHandler.cpp?view=diff&rev=463844&r1=463843&r2=463844
==============================================================================
--- xerces/c/trunk/swig/perl/Handler/PerlErrorCallbackHandler.cpp (original)
+++ xerces/c/trunk/swig/perl/Handler/PerlErrorCallbackHandler.cpp Fri Oct 13 14:32:45 2006
@@ -17,6 +17,8 @@
 #include <stdlib.h>
 #include "PerlErrorCallbackHandler.hpp"
 
+XERCES_CPP_NAMESPACE_USE
+
 PerlErrorCallbackHandler::PerlErrorCallbackHandler()
 {
     callbackObj = NULL;

Modified: xerces/c/trunk/swig/perl/Handler/PerlErrorCallbackHandler.hpp
URL: http://svn.apache.org/viewvc/xerces/c/trunk/swig/perl/Handler/PerlErrorCallbackHandler.hpp?view=diff&rev=463844&r1=463843&r2=463844
==============================================================================
--- xerces/c/trunk/swig/perl/Handler/PerlErrorCallbackHandler.hpp (original)
+++ xerces/c/trunk/swig/perl/Handler/PerlErrorCallbackHandler.hpp Fri Oct 13 14:32:45 2006
@@ -20,7 +20,7 @@
 #include "PerlCallbackHandler.hpp"
 #include "xercesc/sax/ErrorHandler.hpp"
 
-XERCES_CPP_NAMESPACE_USE
+XERCES_CPP_NAMESPACE_BEGIN
 
 class PerlErrorCallbackHandler : public ErrorHandler
 			       , public PerlCallbackHandler 
@@ -41,6 +41,9 @@
     void error(const SAXParseException& exception);
     void fatalError(const SAXParseException& exception);
     void resetErrors();
+
 };
+
+XERCES_CPP_NAMESPACE_END
 
 #endif /* __PERLERRORCALLBACKHANDLER */

Modified: xerces/c/trunk/swig/perl/Handler/PerlNodeFilterCallbackHandler.cpp
URL: http://svn.apache.org/viewvc/xerces/c/trunk/swig/perl/Handler/PerlNodeFilterCallbackHandler.cpp?view=diff&rev=463844&r1=463843&r2=463844
==============================================================================
--- xerces/c/trunk/swig/perl/Handler/PerlNodeFilterCallbackHandler.cpp (original)
+++ xerces/c/trunk/swig/perl/Handler/PerlNodeFilterCallbackHandler.cpp Fri Oct 13 14:32:45 2006
@@ -17,6 +17,8 @@
 #include "PerlNodeFilterCallbackHandler.hpp"
 #include "xerces-swig-perl.hpp"
 
+XERCES_CPP_NAMESPACE_USE
+
 PerlNodeFilterCallbackHandler::PerlNodeFilterCallbackHandler()
 {
     callbackObj = NULL;
@@ -31,6 +33,12 @@
 }
 
 short
+PerlNodeFilterCallbackHandler::acceptNode (DOMNode* node)
+{
+  return acceptNode((const DOMNode*)node);
+}
+
+short
 PerlNodeFilterCallbackHandler::acceptNode (const DOMNode* node) const
 {
     if (!callbackObj) {
@@ -60,6 +68,86 @@
     PUTBACK;
 
     int count = perl_call_method("acceptNode", G_SCALAR);
+
+    SPAGAIN ;
+
+    if (count != 1)
+	croak("NodeFilter did not return an answer\n") ;
+
+    accept = POPi;
+
+    PUTBACK ;
+    FREETMPS;
+    LEAVE;
+
+    return accept;
+}
+
+unsigned long
+PerlNodeFilterCallbackHandler::getWhatToShow() const
+{
+    if (!callbackObj) {
+        croak("\ngetWhatToShow: no NodeFilter set\n");
+	return 0;
+    }
+    unsigned long whatToShow = 0;
+
+    dSP;
+
+    ENTER;
+    SAVETMPS;
+
+    PUSHMARK(SP);
+	// first put the callback object on the stack
+    XPUSHs(callbackObj);
+
+    PUTBACK;
+
+    int count = perl_call_method("whatToShow", G_SCALAR);
+
+    SPAGAIN ;
+
+    if (count != 1)
+	croak("Filter did not return an answer\n") ;
+
+    whatToShow = POPl;
+
+    PUTBACK ;
+    FREETMPS;
+    LEAVE;
+
+    return whatToShow;
+}
+
+short
+PerlNodeFilterCallbackHandler::startElement (DOMElement* node)
+{
+    if (!callbackObj) {
+        croak("\nstartElement: no NodeFilter set\n");
+	return 0;
+    }
+    short accept = 0;
+    char *domElementName = "XML::Xerces::DOMElement";
+
+    dSP;
+
+    ENTER;
+    SAVETMPS;
+
+    PUSHMARK(SP);
+	// first put the callback object on the stack
+    XPUSHs(callbackObj);
+
+    // the only argument is the node
+    // god bless John Lenz's new type system in SWIG 1.3.25!!!
+    swig_type_info *ty = SWIG_TypeQuery(domElementName);
+    SV* node_sv = sv_newmortal();
+    SWIG_MakePtr(node_sv, (void *) node, ty,0);
+    XPUSHs(node_sv);
+
+    PUTBACK;
+
+    int count = perl_call_method("startElement", G_SCALAR);
 
     SPAGAIN ;
 

Modified: xerces/c/trunk/swig/perl/Handler/PerlNodeFilterCallbackHandler.hpp
URL: http://svn.apache.org/viewvc/xerces/c/trunk/swig/perl/Handler/PerlNodeFilterCallbackHandler.hpp?view=diff&rev=463844&r1=463843&r2=463844
==============================================================================
--- xerces/c/trunk/swig/perl/Handler/PerlNodeFilterCallbackHandler.hpp (original)
+++ xerces/c/trunk/swig/perl/Handler/PerlNodeFilterCallbackHandler.hpp Fri Oct 13 14:32:45 2006
@@ -18,11 +18,13 @@
 #define __PERLNODEFILTERCALLBACKHANDLER
 
 #include "PerlCallbackHandler.hpp"
-#include "xercesc/dom/DOMNodeFilter.hpp"
+#include "xercesc/dom/DOMLSParserFilter.hpp"
+#include "xercesc/dom/DOMLSSerializerFilter.hpp"
 
-XERCES_CPP_NAMESPACE_USE
+XERCES_CPP_NAMESPACE_BEGIN
 
-class PerlNodeFilterCallbackHandler : public DOMNodeFilter
+class PerlNodeFilterCallbackHandler : public DOMLSSerializerFilter
+				    , public DOMLSParserFilter
 				    , public PerlCallbackHandler
 {
 
@@ -30,14 +32,26 @@
 
 public:
 
-    PerlNodeFilterCallbackHandler();
-    PerlNodeFilterCallbackHandler(SV *obj);
-    ~PerlNodeFilterCallbackHandler();
+  PerlNodeFilterCallbackHandler();
+  PerlNodeFilterCallbackHandler(SV *obj);
+  ~PerlNodeFilterCallbackHandler();
 
-    int type() {return PERLCALLBACKHANDLER_NODE_TYPE;}
+  int type() {return PERLCALLBACKHANDLER_NODE_TYPE;}
 
-	// The NodeFilter interface
-    short acceptNode (const DOMNode* node) const;
+  // The DOMNodeFilter interface - inherited via DOMLSSerializerFilter
+  // short acceptNode (const DOMNode* node) const;
+
+
+  // The DOMLSSerializerFilter interface
+  short acceptNode (const DOMNode* node) const;
+  unsigned long getWhatToShow() const;
+
+  // The DOMLSParserFilter interface
+  // unsigned long getWhatToShow() const;
+  short acceptNode (DOMNode* node);
+  short startElement(DOMElement* node);
 };
+
+XERCES_CPP_NAMESPACE_END
 
 #endif /* __PERLNODEFILTERCALLBACKHANDLER */

Modified: xerces/c/trunk/swig/perl/MANIFEST
URL: http://svn.apache.org/viewvc/xerces/c/trunk/swig/perl/MANIFEST?view=diff&rev=463844&r1=463843&r2=463844
==============================================================================
--- xerces/c/trunk/swig/perl/MANIFEST (original)
+++ xerces/c/trunk/swig/perl/MANIFEST Fri Oct 13 14:32:45 2006
@@ -9,16 +9,16 @@
 Handler/PerlCallbackHandler.cpp
 Handler/PerlCallbackHandler.hpp
 Handler/PerlCallbackHandler.cpp
+Handler/PerlContentCallbackHandler.cpp
 Handler/PerlContentCallbackHandler.hpp
 Handler/PerlDocumentCallbackHandler.cpp
 Handler/PerlDocumentCallbackHandler.hpp
 Handler/PerlErrorCallbackHandler.cpp
 Handler/PerlErrorCallbackHandler.hpp
 Handler/PerlEntityResolverHandler.hpp
-Handler/PerlEntityResolverHandler.i
+Handler/PerlEntityResolverHandler.cpp
 Handler/PerlNodeFilterCallbackHandler.hpp
-Handler/PerlNodeFilterCallbackHandler.i
-Handler/PerlContentCallbackHandler.cpp
+Handler/PerlNodeFilterCallbackHandler.cpp
 
 hints/darwin.pl
 hints/dec_osf.pl
@@ -85,17 +85,18 @@
 t/XercesDOMParser.t
 t/DOMNamedNodeMap.t
 t/DOMNodeList.t
+t/DOMStringList.t
 t/DOMEntity.t
 t/DOMDocument.t
 t/DOMNode.t
 t/DOMException.t
-t/DOMBuilder.t
+t/DOMLSParser.t
 t/DOMParser.t
 t/DOMNodeIterator.t
 t/DOMTreeWalker.t
 t/DOMAttr.t
 t/DOMElement.t
-t/DOMWriter.t
+t/DOMLSSerializer.t
 t/DOMImplementation.t
 
 t/AttributeList.t

Modified: xerces/c/trunk/swig/perl/Makefile.PL
URL: http://svn.apache.org/viewvc/xerces/c/trunk/swig/perl/Makefile.PL?view=diff&rev=463844&r1=463843&r2=463844
==============================================================================
--- xerces/c/trunk/swig/perl/Makefile.PL (original)
+++ xerces/c/trunk/swig/perl/Makefile.PL Fri Oct 13 14:32:45 2006
@@ -23,6 +23,7 @@
 	    $TRANSCODER_LIB $HANDLER_LIB
 	    $XERCESCROOT $SWIG_DIR $PERL_DIR $HANDLER_DIR $SCRIPTS_DIR $INTERFACE_DIR
 	    $SWIG_ARGS
+	    @SAX_INTERFACE_FILES @DOM_INTERFACE_FILES @IO_INTERFACE_FILES
 	   );
 use File::Basename;
 use Cwd qw(abs_path);
@@ -75,7 +76,7 @@
 $LIBS .= " -L$XERCES_LIB ";
 
 print STDERR "Using XERCES_INCLUDE = $XERCES_INCLUDE\n";
-$INCLUDES .= " -I$XERCES_INCLUDE -I$XERCESCROOT";
+$INCLUDES .= " -I$XERCES_INCLUDE -I$XERCESCROOT  -I$XERCESCROOT/samples/src";
 
 
 my $config_file = 'config.status';
@@ -210,6 +211,7 @@
 
 $HANDLER_LIB = '$(INST_ARCHLIB)/auto/Handler/Handler$(LIB_EXT)';
 $TRANSCODER_LIB = '$(INST_ARCHLIB)/auto/Transcoder/Transcoder$(LIB_EXT)';
+my $PSVIUNI_OBJ = "$XERCESCROOT/samples/src/PSVIWriter/PSVIUni" . '$(OBJ_EXT)';
 
 sub MY_postamble {
 qq[
@@ -236,8 +238,8 @@
   my @header_files;
   my @handler_headers;
   my @interface_files;
-  my @dom_interface_files;
-  my @non_dom_interface_files;
+
+  my @general_interface_files;
   chomp(@handler_headers = `$FIND $HANDLER_DIR -name "*.swig.hpp"`);
 
   @OPTIMIZE = (OPTIMIZE => '-g');
@@ -247,10 +249,18 @@
     chomp(my @import_files = `$FIND $HANDLER_DIR -name "*.i"`);
     push(@header_files,@handler_headers,@import_files);
 
-    chomp(my @interface_files = `$FIND $INTERFACE_DIR -name "*.i"`);
+    chomp(my @tmp_interface_files = `$FIND $INTERFACE_DIR -name "*.i"`);
+    @IO_INTERFACE_FILES = qw("$INTERFACE_DIR/Xerces_IO.i");
+    my @interface_files;
+    foreach my $test_file (@tmp_interface_files) {
+      if (not scalar grep {$_ eq $test_file} @IO_INTERFACE_FILES) {
+	push(@interface_files, $test_file);
+      }
+    }
     @interface_files = grep {$_ !~ /shadow/} @interface_files;
-    @dom_interface_files = grep {$_ =~ /dom/i} @interface_files;
-    @non_dom_interface_files = grep {$_ !~ /dom/i} @interface_files;
+    @DOM_INTERFACE_FILES = grep {$_ =~ /dom/i} @interface_files;
+    @SAX_INTERFACE_FILES = grep {$_ =~ /sax/i} @interface_files;
+    @general_interface_files = grep {$_ !~ /dom/i && $_ !~ /sax/i} @interface_files;
     local $" = ' ';
 
     my $MAKE_HANDLER    = '	\$(MAKE) -C Handler static';
@@ -264,16 +274,17 @@
     ### We no longer need to munge the C++ code thanks to SWIG improvements
     # perl postSource.pl Xerces.cpp
     my $retval = <<TERMINUS;
-Xerces-tmp.pm: $SCRIPTS_DIR/postModule.pl $INTERFACE_DIR/Perl/shadow.i
-	\$(SWIG) $SWIG_ARGS -o Xerces-tmp.cpp -pm Xerces-tmp.pm $INTERFACE_DIR/Xerces.i
+Xerces-tmp.pm: $SCRIPTS_DIR/postModule.pl $INTERFACE_DIR/Perl/shadow.i $INTERFACE_DIR/Perl/Xerces-extra.pm
+	\$(SWIG) $SWIG_ARGS -o unused.cpp -pm Xerces-tmp.pm $INTERFACE_DIR/Xerces.i
 
 Xerces.pm: $SCRIPTS_DIR/postModule.pl Xerces-tmp.pm
 	perl -I$SCRIPTS_DIR $SCRIPTS_DIR/postModule.pl --in=Xerces-tmp.pm --out=Xerces.pm
+	rm -f unused.cpp
 
 Xerces.cpp: $SCRIPTS_DIR/postSource.pl Xerces-tmp.cpp
 	perl -I$SCRIPTS_DIR $SCRIPTS_DIR/postSource.pl --in=Xerces-tmp.cpp --out=Xerces.cpp
 
-Xerces-tmp.cpp: $INTERFACE_DIR/Xerces.i @non_dom_interface_files @header_files  $INTERFACE_DIR/Perl/Xerces-extra.pm
+Xerces-tmp.cpp: $INTERFACE_DIR/Xerces.i @general_interface_files @header_files
 	\$(SWIG) $SWIG_ARGS -o Xerces-tmp.cpp -pm Xerces-tmp.pm $INTERFACE_DIR/Xerces.i
 	perl  -I$SCRIPTS_DIR $SCRIPTS_DIR/postModule.pl --in=Xerces-tmp.pm --out=Xerces.pm
 	cp -f Xerces.pm blib/lib/XML/Xerces.pm
@@ -297,6 +308,11 @@
 
   # we want all warnings
   $CFLAGS .= ' -Wall';
+
+  # coverage analysis
+  # $CFLAGS .= ' -fprofile-arcs -ftest-coverage';
+  # $LIBS   .= ' -lgcov';
+
 #  print STDERR "Using SWIG version: SWIG_$ {sv_maj}_$ {sv_min}\n";
   *MY::postamble = \&Xerces_postamble;
 }
@@ -317,7 +333,7 @@
  #   'DOM.pm' => '$(INST_LIB)/XML/Xerces/DOM.pm',
   },
   'INC'         => $INCLUDES,
-  'MYEXTLIB'    => "$HANDLER_LIB $TRANSCODER_LIB",
+  'MYEXTLIB'    => "$HANDLER_LIB $TRANSCODER_LIB $PSVIUNI_OBJ",
 #  'SKIP'      => [qw( pm_to_blib )],
   'LIBS'        => [$LIBS],
   'OBJECT'      => $OBJS,

Modified: xerces/c/trunk/swig/perl/TODO
URL: http://svn.apache.org/viewvc/xerces/c/trunk/swig/perl/TODO?view=diff&rev=463844&r1=463843&r2=463844
==============================================================================
--- xerces/c/trunk/swig/perl/TODO (original)
+++ xerces/c/trunk/swig/perl/TODO Fri Oct 13 14:32:45 2006
@@ -23,57 +23,78 @@
 
 Internals:
 ==========
+Sun Oct  8 2006
+* write to c-dev:
+  - DOMLSSerializerFilter??
+  - DOMLSSerializer::setNewLine() not checking
+  - why is DOMLSParserFilter::acceptNode() not const?
+* write swig-dev about %include vs. #include problem
+  - there should at least be a warning
+* check memory leaks
+  - Perl/typemaps-xmlch.i - are the returned vars leaking? do we need
+    sv2mortal()
+* how to include make-xml-exception.i inside other .i files??
+* PSVIWriter.pl
+* why is InputSource dynamic resolver not returning StdInInputSource? 
+  DOMLSInput.t
+* why is DOMImplementation.t segfaulting after test 4? 
+  createDocumentType(undef) is not throwing exception
+* why is 00basic.t failing?
+  - 4: getErrorHandler() not returning XML::Xerces::ErrorHandler
+static swig_type_info _swigt__p_XERCES_CPP_NAMESPACE__ErrorHandler = {"_p_XERCES_CPP_NAMESPACE__ErrorHandler", "XERCES_CPP_NAMESPACE::ErrorHandler *", 0, 0, (void*)0, 0};
+  
+  last argument should not be (void*)0 - it should be
+  (void*)"XML::Xerces::ErrorHandler". ErrorHandler.hpp is being
+  %imported not %included
+  - 19: document is forgotten - another f***ing 'defined' macro replacement
+* move classes to IO:
+  - DOMLSInput/Output
+  - Wrapper4InputSource/DOMLSInput
+
 Sat Sep 9 2006
+* unify Handler/ classes into Xerces/XercesSAX/XercesDOM
+* email c-dev: why are the TypeInfo XML files broken?
+* DOMLSInput::setStringData() was broken - the XMLCh* is deleted by
+  SWIG after it is set. Check for other data that Xerces-C doesn't adopt
+* DOMLSParser
+  - test DOMErrorHandler
+  - test EntityHandler
+  - test DOMLSResourceResolver
 * move other code out of XML::Xerces into new modules:
   - Handler
-  - SAX
-  - SAX2
-* why are is createXMLReader dispatcher not working - mail swig-dev
-* why are we wrapping DefaultHandler??
+* approximate codebase sizes: 
+  44328  127438 1538438 Xerces.cpp
+  26517   78805  914588 DOM/Xerces_DOM.cpp
+  14132   43098  479167 SAX/Xerces_SAX.cpp
+   6654   21313  236250 IO/Xerces_IO.cpp
+
+  45550  130667 1576523 Xerces.cpp
+  29010   85970  989933 DOM/Xerces_DOM.cpp
+  14010   42589  470235 SAX/Xerces_SAX.cpp
+
+* why is createXMLReader dispatcher not working - mail swig-dev
+* why are classes that implement XMemory ignored unless we %import it?
+* why are all SAXExceptions being ignored by catch()? namespace?
+* moving all %ignore out of ignore.i into class.i files
 
 Tue Aug 22 23:47:05 IST 2006
 * need tests for the new DOM additions:
 %include "dom/DOMLSException.i"
 %include "dom/DOMLSSerializer.i"
 %include "dom/DOMLSSerializerFilter.i"
-%include "dom/DOMLSResourceResolver.i"
 %include "dom/DOMLocator.i"
 %include "dom/DOMErrorHandler.i"
-%include "xercesc/dom/DOMLSOutput.hpp"
-%include "xercesc/dom/DOMTypeInfo.hpp"
-%include "xercesc/dom/DOMPSVITypeInfo.hpp"
-%include "xercesc/dom/DOMXPathEvaluator.hpp"
-%include "xercesc/dom/DOMXPathException.hpp"
-%include "xercesc/dom/DOMXPathExpression.hpp"
-%include "xercesc/dom/DOMXPathNamespace.hpp"
-%include "xercesc/dom/DOMXPathNSResolver.hpp"
-%include "xercesc/dom/DOMXPathResult.hpp"
-%include "xercesc/dom/DOMUserDataHandler.hpp"
-%include "xercesc/dom/DOMStringList.hpp"
-%include "xercesc/dom/DOMImplementationList.hpp"
-%include "xercesc/dom/DOMImplementationSource.hpp"
-%include "xercesc/dom/DOMImplementationRegistry.hpp"
-%include "xercesc/dom/DOMError.hpp"
-
-Fri May 13 18:21:45 IST 2005
-* does Xerces have any methods were a NULL XMLCh* value is needed? -
-  if so we have to enable a %typemap to support it
-* Xerces has some methods were a NULL pointer value is needed and some
-  methods were it segfaults -  we have to enable a %typemap to
-  differentiate between them
-* %ignore and %rename behave differently when used with default
-  arguments, ensure that the default args are included in the
-  directives or it won't get used for all of them.
-
-Fri Oct 11 21:57:23 MDT 2002
-* the %typecheck for XMLCh* is too greedy, it should happen later
-  in the typecheck process
+%include "dom/DOMPSVITypeInfo.hpp"
+%include "dom/DOMError.hpp"
+
+* must tested cached grammars
+* support for void* in DOMNode::[gs]etUserData()
+* questionable interfaces
+%include "dom/DOMUserDataHandler.hpp"
 
-Fri Jun  7 00:37:01 MDT 2002
-* make entity resolver to find all the xml files
 
 Sun Jun  2 11:38:11 MDT 2002
-* use %newobject and %typemape(newfree) for methods like removeNode()
+* use %newobject and %typemap(newfree) for methods like removeNode()
 
 ### *** emacs file mode definition ***
 ### Local Variables: 

Modified: xerces/c/trunk/swig/perl/Transcoder/Makefile.PL
URL: http://svn.apache.org/viewvc/xerces/c/trunk/swig/perl/Transcoder/Makefile.PL?view=diff&rev=463844&r1=463843&r2=463844
==============================================================================
--- xerces/c/trunk/swig/perl/Transcoder/Makefile.PL (original)
+++ xerces/c/trunk/swig/perl/Transcoder/Makefile.PL Fri Oct 13 14:32:45 2006
@@ -19,7 +19,8 @@
     'NAME'	=> 'Transcoder',
     'INC'       => $INCLUDES,
     'OBJECT'    => '$(O_FILES)',
-#    'CCFLAGS'   => $CFLAGS,
+    'CCFLAGS'   => $CFLAGS,
+    'LIBS'      => [$LIBS],
     'CC'        => $CXX,
     'SKIP'      => [qw( dynamic test makeaperl xs_o)],
   @OPTIMIZE,

Modified: xerces/c/trunk/swig/perl/Transcoder/Transcoder.cpp
URL: http://svn.apache.org/viewvc/xerces/c/trunk/swig/perl/Transcoder/Transcoder.cpp?view=diff&rev=463844&r1=463843&r2=463844
==============================================================================
--- xerces/c/trunk/swig/perl/Transcoder/Transcoder.cpp (original)
+++ xerces/c/trunk/swig/perl/Transcoder/Transcoder.cpp Fri Oct 13 14:32:45 2006
@@ -17,6 +17,11 @@
 #include <stdlib.h>
 #include "Transcoder.hpp"
 
+XERCES_CPP_NAMESPACE_USE
+
+static bool DEBUG_IN = false;
+static bool DEBUG_OUT = false;
+
 Transcoder* Transcoder::_instance = NULL;
 
 Transcoder*
@@ -57,7 +62,11 @@
 }
 
 SV*
-Transcoder::XMLString2Perl(const XMLCh* input) {
+Transcoder::XMLString2Local(const XMLCh* input) {
+  if (input == NULL) {
+    return &PL_sv_undef;
+  }
+
   SV *output;
   unsigned int charsEaten = 0;
   int length  = XMLString::stringLen(input);            // string length
@@ -77,7 +86,7 @@
   res[total_chars] = '\0';
 
 #if (0) 
-  if (DEBUG_UTF8_OUT) {
+  if (DEBUG_OUT) {
       printf("Xerces out length = %d: ",total_chars);
       for (int i=0;i<length;i++){
 	  printf("<0x%.4X>",res[i]);
@@ -94,14 +103,19 @@
 }
 
 XMLCh* 
-Transcoder::Perl2XMLString(SV* input){
+Transcoder::Local2XMLString(SV* input){
+
+    if (input == &PL_sv_undef) {
+      return NULL;
+    }
+
     XMLCh* output;
 
     STRLEN length;
     char *ptr = (char *)SvPVutf8(input,length);
 
 #if (0) 
-    if (DEBUG_UTF8_IN) {
+    if (DEBUG_IN) {
 	printf("Perl in length = %d: ",length);
 	for (unsigned int i=0;i<length;i++){
 	    printf("<0x%.4X>",ptr[i]);
@@ -125,7 +139,7 @@
 	delete [] sizes;
 
 #if (0) 
-	if (DEBUG_UTF8_IN) {
+	if (DEBUG_IN) {
 	    printf("Xerces in length = %d: ",chars_stored);
 	    for (unsigned int i=0;i<chars_stored;i++){
 		printf("<0x%.4X>",output[i]);
@@ -140,7 +154,7 @@
 	output = XMLString::transcode(ptr);
 
 #if (0) 
-	if (DEBUG_UTF8_IN) {
+	if (DEBUG_IN) {
 	    printf("Xerces: ");
 	    for (int i=0;output[i];i++){
 		printf("<0x%.4X>",output[i]);
@@ -152,3 +166,4 @@
     }
     return(output);
 }
+

Modified: xerces/c/trunk/swig/perl/Transcoder/Transcoder.hpp
URL: http://svn.apache.org/viewvc/xerces/c/trunk/swig/perl/Transcoder/Transcoder.hpp?view=diff&rev=463844&r1=463843&r2=463844
==============================================================================
--- xerces/c/trunk/swig/perl/Transcoder/Transcoder.hpp (original)
+++ xerces/c/trunk/swig/perl/Transcoder/Transcoder.hpp Fri Oct 13 14:32:45 2006
@@ -35,7 +35,7 @@
 #include "xercesc/util/TransService.hpp"
 #include "xercesc/util/PlatformUtils.hpp"
 
-XERCES_CPP_NAMESPACE_USE
+XERCES_CPP_NAMESPACE_BEGIN
 
 class Transcoder {
 
@@ -53,8 +53,10 @@
 
   ~Transcoder();
 
-  SV* XMLString2Perl(const XMLCh*);
-  XMLCh* Perl2XMLString(SV*);
+  SV* XMLString2Local(const XMLCh*);
+  XMLCh* Local2XMLString(SV*);
 };
+
+XERCES_CPP_NAMESPACE_END
 
 #endif /* __TRANSCODER */

Modified: xerces/c/trunk/swig/perl/Transcoder/XMLExceptionHandler.cpp
URL: http://svn.apache.org/viewvc/xerces/c/trunk/swig/perl/Transcoder/XMLExceptionHandler.cpp?view=diff&rev=463844&r1=463843&r2=463844
==============================================================================
--- xerces/c/trunk/swig/perl/Transcoder/XMLExceptionHandler.cpp (original)
+++ xerces/c/trunk/swig/perl/Transcoder/XMLExceptionHandler.cpp Fri Oct 13 14:32:45 2006
@@ -17,6 +17,8 @@
 #include <stdlib.h>
 #include "XMLExceptionHandler.hpp"
 
+XERCES_CPP_NAMESPACE_USE
+
 XMLExceptionHandler* XMLExceptionHandler::_instance = NULL;
 
 XMLExceptionHandler*

Modified: xerces/c/trunk/swig/perl/Transcoder/XMLExceptionHandler.hpp
URL: http://svn.apache.org/viewvc/xerces/c/trunk/swig/perl/Transcoder/XMLExceptionHandler.hpp?view=diff&rev=463844&r1=463843&r2=463844
==============================================================================
--- xerces/c/trunk/swig/perl/Transcoder/XMLExceptionHandler.hpp (original)
+++ xerces/c/trunk/swig/perl/Transcoder/XMLExceptionHandler.hpp Fri Oct 13 14:32:45 2006
@@ -52,7 +52,7 @@
 #include "xercesc/validators/datatype/InvalidDatatypeValueException.hpp"
 #include "xercesc/validators/schema/identity/XPathException.hpp"
 
-XERCES_CPP_NAMESPACE_USE
+XERCES_CPP_NAMESPACE_BEGIN
 
 class XMLExceptionHandler {
 
@@ -68,5 +68,7 @@
   ~XMLExceptionHandler();
   XMLException* copyXMLException(const XMLException& e);
 };
+
+XERCES_CPP_NAMESPACE_END
 
 #endif /* __XMLEXCEPTIONHANDLER */



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