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: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
