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/09/11 12:08:11 UTC
svn commit: r442160 [5/8] - in /xerces/c/trunk/swig: interfaces/
interfaces/Perl/ perl/ perl/DOM/ perl/Handler/ perl/Transcoder/
perl/samples/ perl/t/
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=442160&r1=442159&r2=442160
==============================================================================
--- xerces/c/trunk/swig/perl/Handler/Makefile.PL (original)
+++ xerces/c/trunk/swig/perl/Handler/Makefile.PL Mon Sep 11 03:08:07 2006
@@ -26,24 +26,3 @@
@LDFLAGS,
);
-__END__
-sub MY::static
-{
- '
-static :: libhandler$(LIB_EXT)
-
-dynamic :: static
-
-libhandler$(LIB_EXT): $(O_FILES) $(MYEXTLIB)
- $(AR) cru libhandler$(LIB_EXT) $(O_FILES)
- $(RANLIB) libhandler$(LIB_EXT)
-
-libhandler.$(DLEXT): $(LDFROM) $(MYEXTLIB)
- $(LD) -o libhandler.$(DLEXT) $(LDDLFLAGS) --whole-archive $(LDFROM) $(OTHERLDFLAGS) $(MYEXTLIB) $(PERL_ARCHIVE) $(LDLOADLIBS) $(EXPORT_LIST)
- $(CHMOD) 755 libhandler.$(DLEXT)
-
-';
-
-}
-
-
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=442160&r1=442159&r2=442160
==============================================================================
--- xerces/c/trunk/swig/perl/Handler/PerlCallbackHandler.cpp (original)
+++ xerces/c/trunk/swig/perl/Handler/PerlCallbackHandler.cpp Mon Sep 11 03:08:07 2006
@@ -17,36 +17,24 @@
#include <stdlib.h>
#include "PerlCallbackHandler.hpp"
-XMLTranscoder* UTF8_TRANSCODER = NULL;
-
PerlCallbackHandler::PerlCallbackHandler() {
- if (UTF8_TRANSCODER == NULL)
- {
- XMLTransService::Codes failReason;
- XMLCh* UTF8_ENCODING = XMLString::transcode("UTF-8");
- UTF8_TRANSCODER =
- XMLPlatformUtils::fgTransService->makeNewTranscoderFor(UTF8_ENCODING,
- failReason,
- 1024,
- XMLPlatformUtils::fgMemoryManager);
- if (UTF8_TRANSCODER == NULL) {
- croak("ERROR: PerlCallbackHandler Could not create UTF-8 transcoder");
- }
- }
- callbackObj = NULL;
-// printf("PerlCallback: constructor");
+ // fprintf(stderr,"PerlCallback: constructor\n");
+ UTF8_TRANSCODER = Transcoder::getInstance();
+ callbackObj = NULL;
}
PerlCallbackHandler::~PerlCallbackHandler() {
- if (callbackObj) {
- SvREFCNT_dec(callbackObj);
- callbackObj = NULL;
- }
-// printf("PerlCallback: destructor");
+ if (callbackObj) {
+ SvREFCNT_dec(callbackObj);
+ callbackObj = NULL;
+ }
+ if (UTF8_TRANSCODER) {
+ UTF8_TRANSCODER = NULL;
+ }
+ // fprintf(stderr,"PerlCallback: destructor\n");
}
PerlCallbackHandler::PerlCallbackHandler(SV* object)
- : callbackObj(NULL)
{
set_callback_obj(object);
}
@@ -71,31 +59,4 @@
callbackObj = object;
// printf("<new callback object 0x%.4X>\n", callbackObj);
return oldRef;
-}
-
-SV*
-PerlCallbackHandler::XMLString2Perl(const XMLCh* input) {
- SV *output;
- unsigned int charsEaten = 0;
- int length = XMLString::stringLen(input); // string length
- // use +1 to make room for the '\0' at the end of the string
- // in the pathological case when each character of the string
- // is UTF8_MAXLEN bytes long
- XMLByte* res = new XMLByte[(length * UTF8_MAXLEN) + 1]; // output string
-
- unsigned int total_chars =
- UTF8_TRANSCODER->transcodeTo((const XMLCh*) input,
- (unsigned int) length,
- (XMLByte*) res,
- (unsigned int) (length*UTF8_MAXLEN),
- charsEaten,
- XMLTranscoder::UnRep_Throw
- );
- res[total_chars] = '\0';
-
- output = sv_newmortal();
- sv_setpv((SV*)output, (char *)res );
- SvUTF8_on((SV*)output);
- delete[] res;
- return output;
}
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=442160&r1=442159&r2=442160
==============================================================================
--- xerces/c/trunk/swig/perl/Handler/PerlCallbackHandler.hpp (original)
+++ xerces/c/trunk/swig/perl/Handler/PerlCallbackHandler.hpp Mon Sep 11 03:08:07 2006
@@ -17,13 +17,14 @@
#ifndef __PERLCALLBACKHANDLER
#define __PERLCALLBACKHANDLER
-#ifdef __cplusplus
+
/* Needed on some windows machines---since MS plays funny
games with the header files under C++ */
#include <math.h>
#include <stdlib.h>
+
extern "C" {
-#endif
+
#include "EXTERN.h"
#include "perl.h"
#include "XSUB.h"
@@ -33,9 +34,7 @@
#undef malloc
#include <string.h>
-#ifdef __cplusplus
}
-#endif
#if !defined(PERL_REVISION) || ((PERL_REVISION >= 5) && ((PERL_VERSION < 5) || ((PERL_VERSION == 5) && (PERL_SUBVERSION < 50))))
#ifndef PL_sv_yes
@@ -56,9 +55,8 @@
#define PERLCALLBACKHANDLER_CONTENT_TYPE 3
#define PERLCALLBACKHANDLER_DOCUMENT_TYPE 4
-#include "xercesc/util/TransService.hpp"
-#include "xercesc/util/XMLString.hpp"
#include "xercesc/util/PlatformUtils.hpp"
+#include "Transcoder.hpp"
XERCES_CPP_NAMESPACE_USE
@@ -70,7 +68,8 @@
protected:
- SV *callbackObj;
+ SV *callbackObj;
+ Transcoder* UTF8_TRANSCODER;
public:
@@ -80,7 +79,6 @@
virtual int type() {return PERLCALLBACKHANDLER_BASE_TYPE;}
SV* set_callback_obj(SV*);
- SV* XMLString2Perl(const XMLCh*);
};
#endif /* __PERLCALLBACKHANDLER */
Modified: xerces/c/trunk/swig/perl/Handler/PerlContentCallbackHandler.cpp
URL: http://svn.apache.org/viewvc/xerces/c/trunk/swig/perl/Handler/PerlContentCallbackHandler.cpp?view=diff&rev=442160&r1=442159&r2=442160
==============================================================================
--- xerces/c/trunk/swig/perl/Handler/PerlContentCallbackHandler.cpp (original)
+++ xerces/c/trunk/swig/perl/Handler/PerlContentCallbackHandler.cpp Mon Sep 11 03:08:07 2006
@@ -26,22 +26,9 @@
{}
PerlContentCallbackHandler::PerlContentCallbackHandler(SV *obj)
- : PerlCallbackHandler(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;
-// }
+{
+ set_callback_obj(obj);
+}
void
PerlContentCallbackHandler::startElement(const XMLCh* const uri,
@@ -61,15 +48,15 @@
XPUSHs(callbackObj);
// the next argument is the uri
- SV *string1 = XMLString2Perl(uri);
+ SV *string1 = UTF8_TRANSCODER->XMLString2Perl(uri);
XPUSHs(string1);
// the next argument is the localname
- SV *string2 = XMLString2Perl(localname);
+ SV *string2 = UTF8_TRANSCODER->XMLString2Perl(localname);
XPUSHs(string2);
// the next argument is the qname
- SV *string3 = XMLString2Perl(qname);
+ SV *string3 = UTF8_TRANSCODER->XMLString2Perl(qname);
XPUSHs(string3);
// next is the attributes
@@ -102,15 +89,15 @@
XPUSHs(callbackObj);
// the next argument is the uri
- SV *string1 = XMLString2Perl(uri);
+ SV *string1 = UTF8_TRANSCODER->XMLString2Perl(uri);
XPUSHs(string1);
// the next argument is the localname
- SV *string2 = XMLString2Perl(localname);
+ SV *string2 = UTF8_TRANSCODER->XMLString2Perl(localname);
XPUSHs(string2);
// the next argument is the qname
- SV *string3 = XMLString2Perl(qname);
+ SV *string3 = UTF8_TRANSCODER->XMLString2Perl(qname);
XPUSHs(string3);
PUTBACK;
@@ -137,7 +124,7 @@
XPUSHs(callbackObj);
// the next argument is the char data
- SV *string = XMLString2Perl(chars);
+ SV *string = UTF8_TRANSCODER->XMLString2Perl(chars);
XPUSHs(string);
// next is the length
@@ -166,7 +153,7 @@
XPUSHs(callbackObj);
// the next argument is the char data
- SV *string = XMLString2Perl(chars);
+ SV *string = UTF8_TRANSCODER->XMLString2Perl(chars);
XPUSHs(string);
// next is the length
@@ -264,11 +251,11 @@
XPUSHs(callbackObj);
// the next argument is the target
- SV *string1 = XMLString2Perl(target);
+ SV *string1 = UTF8_TRANSCODER->XMLString2Perl(target);
XPUSHs(string1);
// the next argument is the data
- SV *string2 = XMLString2Perl(data);
+ SV *string2 = UTF8_TRANSCODER->XMLString2Perl(data);
XPUSHs(string2);
PUTBACK;
@@ -323,11 +310,11 @@
XPUSHs(callbackObj);
// the next argument is the prefix
- SV *string1 = XMLString2Perl(prefix);
+ SV *string1 = UTF8_TRANSCODER->XMLString2Perl(prefix);
XPUSHs(string1);
// the next argument is the uri
- SV *string2 = XMLString2Perl(uri);
+ SV *string2 = UTF8_TRANSCODER->XMLString2Perl(uri);
XPUSHs(string2);
PUTBACK;
@@ -353,7 +340,7 @@
XPUSHs(callbackObj);
// the next argument is the prefix
- SV *string1 = XMLString2Perl(prefix);
+ SV *string1 = UTF8_TRANSCODER->XMLString2Perl(prefix);
XPUSHs(string1);
PUTBACK;
@@ -379,7 +366,7 @@
XPUSHs(callbackObj);
// the next argument is the name
- SV *string1 = XMLString2Perl(name);
+ SV *string1 = UTF8_TRANSCODER->XMLString2Perl(name);
XPUSHs(string1);
PUTBACK;
Modified: xerces/c/trunk/swig/perl/Handler/PerlDocumentCallbackHandler.cpp
URL: http://svn.apache.org/viewvc/xerces/c/trunk/swig/perl/Handler/PerlDocumentCallbackHandler.cpp?view=diff&rev=442160&r1=442159&r2=442160
==============================================================================
--- xerces/c/trunk/swig/perl/Handler/PerlDocumentCallbackHandler.cpp (original)
+++ xerces/c/trunk/swig/perl/Handler/PerlDocumentCallbackHandler.cpp Mon Sep 11 03:08:07 2006
@@ -23,12 +23,7 @@
}
PerlDocumentCallbackHandler::~PerlDocumentCallbackHandler()
-{
- if (callbackObj != NULL) {
- SvREFCNT_dec(callbackObj);
- callbackObj = NULL;
- }
-}
+{}
PerlDocumentCallbackHandler::PerlDocumentCallbackHandler(SV *obj)
{
@@ -64,7 +59,7 @@
XPUSHs(callbackObj);
// the next argument is the element name
- SV *string = XMLString2Perl(name);
+ SV *string = UTF8_TRANSCODER->XMLString2Perl(name);
XPUSHs(string);
// next is the attribute list
@@ -96,7 +91,7 @@
XPUSHs(callbackObj);
// the next argument is the element name
- SV *string = XMLString2Perl(name);
+ SV *string = UTF8_TRANSCODER->XMLString2Perl(name);
XPUSHs(string);
PUTBACK;
@@ -123,7 +118,7 @@
XPUSHs(callbackObj);
// the next argument is the char data
- SV *string = XMLString2Perl(chars);
+ SV *string = UTF8_TRANSCODER->XMLString2Perl(chars);
XPUSHs(string);
// next is the length
@@ -152,7 +147,7 @@
XPUSHs(callbackObj);
// the next argument is the element name
- SV *string = XMLString2Perl(chars);
+ SV *string = UTF8_TRANSCODER->XMLString2Perl(chars);
XPUSHs(string);
// next is the length
@@ -250,11 +245,11 @@
XPUSHs(callbackObj);
// the next argument is the target
- SV *string1 = XMLString2Perl(target);
+ SV *string1 = UTF8_TRANSCODER->XMLString2Perl(target);
XPUSHs(string1);
// the next argument is the data
- SV *string2 = XMLString2Perl(data);
+ SV *string2 = UTF8_TRANSCODER->XMLString2Perl(data);
XPUSHs(string2);
PUTBACK;
Copied: xerces/c/trunk/swig/perl/Handler/PerlEntityResolverHandler.cpp (from r437653, xerces/c/trunk/swig/perl/Handler/PerlEntityResolverHandler.i)
URL: http://svn.apache.org/viewvc/xerces/c/trunk/swig/perl/Handler/PerlEntityResolverHandler.cpp?view=diff&rev=442160&p1=xerces/c/trunk/swig/perl/Handler/PerlEntityResolverHandler.i&r1=437653&p2=xerces/c/trunk/swig/perl/Handler/PerlEntityResolverHandler.cpp&r2=442160
==============================================================================
--- xerces/c/trunk/swig/perl/Handler/PerlEntityResolverHandler.i (original)
+++ xerces/c/trunk/swig/perl/Handler/PerlEntityResolverHandler.cpp Mon Sep 11 03:08:07 2006
@@ -16,6 +16,7 @@
#include "xercesc/sax/InputSource.hpp"
#include "PerlEntityResolverHandler.hpp"
+#include "xerces-swig-perl.hpp"
PerlEntityResolverHandler::PerlEntityResolverHandler()
{
@@ -23,12 +24,7 @@
}
PerlEntityResolverHandler::~PerlEntityResolverHandler()
-{
- if (callbackObj != NULL) {
- SvREFCNT_dec(callbackObj);
- callbackObj = NULL;
- }
-}
+{}
PerlEntityResolverHandler::PerlEntityResolverHandler(SV *obj)
{
@@ -41,20 +37,6 @@
set_callback_obj(obj);
}
-// SV*
-// PerlEntityResolverHandler::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;
-// }
-
InputSource *
PerlEntityResolverHandler::resolveEntity (const XMLCh* const publicId,
const XMLCh* const systemId)
@@ -66,6 +48,7 @@
dSP;
InputSource *source;
+ char *isName = "XML::Xerces::InputSource";
ENTER;
SAVETMPS;
@@ -75,11 +58,11 @@
XPUSHs(callbackObj);
// the next argument is the publicId
- SV *string1 = XMLString2Perl(publicId);
+ SV *string1 = UTF8_TRANSCODER->XMLString2Perl(publicId);
XPUSHs(string1);
// the next argument is the systemId
- SV *string2 = XMLString2Perl(systemId);
+ SV *string2 = UTF8_TRANSCODER->XMLString2Perl(systemId);
XPUSHs(string2);
PUTBACK;
@@ -99,13 +82,16 @@
source_sv = POPs;
}
- if (count == 1 && SvOK(source_sv) && !sv_derived_from(source_sv,"XML::Xerces::InputSource")) {
+ if (count == 1
+ && SvOK(source_sv)
+ && !sv_derived_from(source_sv, isName)) {
croak("EntityResolver did not return an InputSource\n") ;
}
- if (SWIG_ConvertPtr(source_sv,(void **) &source, SWIGTYPE_p_XERCES_CPP_NAMESPACE__InputSource,0) < 0) {
-
- croak("EntityResolver did not return an InputSource. Expected %s", SWIGTYPE_p_XERCES_CPP_NAMESPACE__InputSource->name);
+ // 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;
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=442160&r1=442159&r2=442160
==============================================================================
--- xerces/c/trunk/swig/perl/Handler/PerlErrorCallbackHandler.cpp (original)
+++ xerces/c/trunk/swig/perl/Handler/PerlErrorCallbackHandler.cpp Mon Sep 11 03:08:07 2006
@@ -23,31 +23,12 @@
}
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;
-// #if defined(PERL_VERSION) && PERL_VERSION >= 8
-// // SvREFCNT_dec(oldRef);
-// #endif
-// }
-// SvREFCNT_inc(object);
-// callbackObj = object;
-// return oldRef;
-// }
void
PerlErrorCallbackHandler::warning(const SAXParseException& exception) {
Copied: xerces/c/trunk/swig/perl/Handler/PerlNodeFilterCallbackHandler.cpp (from r437653, xerces/c/trunk/swig/perl/Handler/PerlNodeFilterCallbackHandler.i)
URL: http://svn.apache.org/viewvc/xerces/c/trunk/swig/perl/Handler/PerlNodeFilterCallbackHandler.cpp?view=diff&rev=442160&p1=xerces/c/trunk/swig/perl/Handler/PerlNodeFilterCallbackHandler.i&r1=437653&p2=xerces/c/trunk/swig/perl/Handler/PerlNodeFilterCallbackHandler.cpp&r2=442160
==============================================================================
--- xerces/c/trunk/swig/perl/Handler/PerlNodeFilterCallbackHandler.i (original)
+++ xerces/c/trunk/swig/perl/Handler/PerlNodeFilterCallbackHandler.cpp Mon Sep 11 03:08:07 2006
@@ -15,6 +15,7 @@
*/
#include "PerlNodeFilterCallbackHandler.hpp"
+#include "xerces-swig-perl.hpp"
PerlNodeFilterCallbackHandler::PerlNodeFilterCallbackHandler()
{
@@ -22,32 +23,13 @@
}
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;
-// #if defined(PERL_VERSION) && PERL_VERSION >= 8
-// // SvREFCNT_dec(oldRef);
-// #endif
-// }
-// SvREFCNT_inc(object);
-// callbackObj = object;
-// return oldRef;
-// }
-
short
PerlNodeFilterCallbackHandler::acceptNode (const DOMNode* node) const
{
@@ -56,6 +38,7 @@
return 0;
}
short accept = 0;
+ char *domNodeName = "XML::Xerces::DOMNode";
dSP;
@@ -66,8 +49,10 @@
// first put the callback object on the stack
XPUSHs(callbackObj);
- // the only argument is the node
- swig_type_info *ty = SWIG_TypeDynamicCast(SWIGTYPE_p_XERCES_CPP_NAMESPACE__DOMNode, (void **) &node);
+ // the only argument is the node
+ // god bless John Lenz's new type system in SWIG 1.3.25!!!
+ swig_type_info *domNodeType = SWIG_TypeQuery(domNodeName);
+ swig_type_info *ty = SWIG_TypeDynamicCast(domNodeType, (void **) &node);
SV* node_sv = sv_newmortal();
SWIG_MakePtr(node_sv, (void *) node, ty,0);
XPUSHs(node_sv);
Modified: xerces/c/trunk/swig/perl/Makefile.PL
URL: http://svn.apache.org/viewvc/xerces/c/trunk/swig/perl/Makefile.PL?view=diff&rev=442160&r1=442159&r2=442160
==============================================================================
--- xerces/c/trunk/swig/perl/Makefile.PL (original)
+++ xerces/c/trunk/swig/perl/Makefile.PL Mon Sep 11 03:08:07 2006
@@ -19,7 +19,11 @@
XERCES_DEVEL
SWIG);
use strict;
-use vars qw($INCLUDES $CXX $CFLAGS @LDFLAGS @OPTIMIZE);
+use vars qw($INCLUDES $CXX $CFLAGS @LDFLAGS @OPTIMIZE $LIBS
+ $TRANSCODER_LIB $HANDLER_LIB
+ $XERCESCROOT $SWIG_DIR $PERL_DIR $HANDLER_DIR $SCRIPTS_DIR $INTERFACE_DIR
+ $SWIG_ARGS
+ );
use File::Basename;
use Cwd qw(abs_path);
@@ -48,7 +52,7 @@
ERROR
}
-my $XERCESCROOT = abs_path('../..');
+$XERCESCROOT = abs_path('../..');
my $XERCES_INCLUDE = "$XERCESCROOT/src";
my $XERCES_LIB = "$XERCESCROOT/obj/.libs";
unless (-d $XERCES_LIB) {
@@ -57,9 +61,15 @@
die "Error building Xerces-C\n$!"
if $?;
}
-my $LIBS = '-lpthread';
+$SWIG_DIR = "$XERCESCROOT/swig";
+$PERL_DIR = "$SWIG_DIR/perl";
+$HANDLER_DIR = "$PERL_DIR/Handler";
+$INTERFACE_DIR = "$SWIG_DIR/interfaces";
+$SCRIPTS_DIR = "$SWIG_DIR/scripts";
-$INCLUDES = '-I. -IHandler';
+$LIBS = '-lpthread';
+
+$INCLUDES = "-I$PERL_DIR -I$PERL_DIR/Handler -I$PERL_DIR/Transcoder";
print STDERR "Using XERCES_LIB = $XERCES_LIB\n";
$LIBS .= " -L$XERCES_LIB ";
@@ -198,13 +208,17 @@
print STDERR "Successfully located $libxerces_name!!\n";
-my $HANDLER_LIB = '$(INST_ARCHLIB)/auto/Handler/Handler$(LIB_EXT)';
+$HANDLER_LIB = '$(INST_ARCHLIB)/auto/Handler/Handler$(LIB_EXT)';
+$TRANSCODER_LIB = '$(INST_ARCHLIB)/auto/Transcoder/Transcoder$(LIB_EXT)';
sub MY_postamble {
qq[
$HANDLER_LIB:
\$(MAKE) -C Handler static
+
+$TRANSCODER_LIB:
+ \$(MAKE) -C Transcoder static
];
}
@@ -213,9 +227,6 @@
my @MACRO;
$CFLAGS .= '-D_REENTRANT';
-my $HANDLER_DIR = 'Handler';
-my $INTERFACE_DIR = '../interfaces';
-my $SCRIPTS_DIR = '../scripts';
# we only consider using SWIG if we are a Xerces Developer
if ($XERCES_DEVEL) {
# replace this with the path to your Unix compatible find application
@@ -230,43 +241,31 @@
chomp(@handler_headers = `$FIND $HANDLER_DIR -name "*.swig.hpp"`);
@OPTIMIZE = (OPTIMIZE => '-g');
+ $SWIG_ARGS = qq[-Wall -DXERCES_VERSION="$XERCES_PERL_VERSION" \$(INC) -perl5 -c++ -shadow];
+
sub Xerces_postamble {
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"`);
- @interface_files = grep {$_ !~ /shadow\.i/} @interface_files;
- @dom_interface_files = grep {$_ =~ /dom/} @interface_files;
- @non_dom_interface_files = grep {$_ !~ /dom/} @interface_files;
+ @interface_files = grep {$_ !~ /shadow/} @interface_files;
+ @dom_interface_files = grep {$_ =~ /dom/i} @interface_files;
+ @non_dom_interface_files = grep {$_ !~ /dom/i} @interface_files;
local $" = ' ';
- my $OS_DEF;
- my $CC_DEF;
- if ($^O eq 'linux') {
- $OS_DEF = '-DXML_LINUX';
- } elsif($^O eq 'darwin') {
- $OS_DEF = '-DXML_MACOSX';
- } else {
- die 'unsupported operating system';
- }
- if ($CXX =~ /g\+\+/) {
- $CC_DEF = '-DXML_GCC';
- } else {
- die 'unsupported compiler';
- }
- my $SWIG_ARGS = qq[-Wall $OS_DEF $CC_DEF -DXERCES_VERSION="$XERCES_PERL_VERSION" \$(INC) -perl5 -c++ -shadow];
- my $MAKE = ' \$(MAKE) -C Handler static';
+ my $MAKE_HANDLER = ' \$(MAKE) -C Handler static';
+ my $MAKE_TRANSCODER = ' \$(MAKE) -C Transcoder static';
if ($^O eq 'MSWin32') {
# nmake doesn't not honor '-C'
- $MAKE = ' cd Handler && \$(MAKE) static';
+ $MAKE_HANDLER = ' cd Handler && \$(MAKE) static';
+ $MAKE_TRANSCODER = ' cd Transcoder && \$(MAKE) static';
}
### 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 $INTERFACE_DIR/Xerces.i
- mv Xerces.pm Xerces-tmp.pm
+ \$(SWIG) $SWIG_ARGS -o Xerces-tmp.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
@@ -274,19 +273,22 @@
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 @interface_files @header_files $INTERFACE_DIR/Perl/Xerces-extra.pm
- \$(SWIG) $SWIG_ARGS -o Xerces-tmp.cpp $INTERFACE_DIR/Xerces.i
- mv Xerces.pm Xerces-tmp.pm
+Xerces-tmp.cpp: $INTERFACE_DIR/Xerces.i @non_dom_interface_files @header_files $INTERFACE_DIR/Perl/Xerces-extra.pm
+ \$(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
$HANDLER_LIB:
-$MAKE
+$MAKE_HANDLER
+
+$TRANSCODER_LIB:
+$MAKE_TRANSCODER
TERMINUS
return $retval;
}
print STDERR "Welcome Xerces Developer!\n";
+
# if we're to use SWIG, we need to know which version is available
my $swig = $SWIG || 'swig';
@MACRO = ('macro' => {
@@ -306,15 +308,17 @@
# see the hints/ directory for architecture specific stuff!
WriteMakefile(
'NAME' => 'XML::Xerces',
- 'AUTHOR' => 'The Xerces-P developers: p-dev@xerces.apache.org',
- 'ABSTRACT' => 'Perl Interface for Xerces XML API',
+ 'AUTHOR' => q[The Xerces-P developers: p-dev 'at' xerces 'dot' apache 'dot' org],
+ 'ABSTRACT' => 'Perl Interface for Apache Xerces XML API',
'CC' => $CXX,
'CCFLAGS' => $CFLAGS,
'PM' => {
'Xerces.pm' => '$(INST_LIB)/XML/Xerces.pm',
+ # 'DOM.pm' => '$(INST_LIB)/XML/Xerces/DOM.pm',
},
'INC' => $INCLUDES,
- 'MYEXTLIB' => $HANDLER_LIB,
+ 'MYEXTLIB' => "$HANDLER_LIB $TRANSCODER_LIB",
+# 'SKIP' => [qw( pm_to_blib )],
'LIBS' => [$LIBS],
'OBJECT' => $OBJS,
'VERSION' => "$XERCES_PERL_VERSION",
Modified: xerces/c/trunk/swig/perl/TODO
URL: http://svn.apache.org/viewvc/xerces/c/trunk/swig/perl/TODO?view=diff&rev=442160&r1=442159&r2=442160
==============================================================================
--- xerces/c/trunk/swig/perl/TODO (original)
+++ xerces/c/trunk/swig/perl/TODO Mon Sep 11 03:08:07 2006
@@ -23,6 +23,14 @@
Internals:
==========
+Sat Sep 9 2006
+* 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??
+
Tue Aug 22 23:47:05 IST 2006
* need tests for the new DOM additions:
%include "dom/DOMLSException.i"
@@ -41,7 +49,6 @@
%include "xercesc/dom/DOMXPathNSResolver.hpp"
%include "xercesc/dom/DOMXPathResult.hpp"
%include "xercesc/dom/DOMUserDataHandler.hpp"
-%include "xercesc/dom/DOMConfiguration.hpp"
%include "xercesc/dom/DOMStringList.hpp"
%include "xercesc/dom/DOMImplementationList.hpp"
%include "xercesc/dom/DOMImplementationSource.hpp"
@@ -49,7 +56,6 @@
%include "xercesc/dom/DOMError.hpp"
Fri May 13 18:21:45 IST 2005
-* change the string typecheck to only do an SvOK()
* 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
@@ -68,7 +74,6 @@
Sun Jun 2 11:38:11 MDT 2002
* use %newobject and %typemape(newfree) for methods like removeNode()
-* look into using SWIG_RegisterMapping() instead of inheritance hack
### *** emacs file mode definition ***
### Local Variables:
Propchange: xerces/c/trunk/swig/perl/Transcoder/
------------------------------------------------------------------------------
--- svn:ignore (added)
+++ svn:ignore Mon Sep 11 03:08:07 2006
@@ -0,0 +1,3 @@
+Makefile.old
+Makefile
+pm_to_blib
Copied: xerces/c/trunk/swig/perl/Transcoder/Makefile.PL (from r437653, xerces/c/trunk/swig/perl/Handler/Makefile.PL)
URL: http://svn.apache.org/viewvc/xerces/c/trunk/swig/perl/Transcoder/Makefile.PL?view=diff&rev=442160&p1=xerces/c/trunk/swig/perl/Handler/Makefile.PL&r1=437653&p2=xerces/c/trunk/swig/perl/Transcoder/Makefile.PL&r2=442160
==============================================================================
--- xerces/c/trunk/swig/perl/Handler/Makefile.PL (original)
+++ xerces/c/trunk/swig/perl/Transcoder/Makefile.PL Mon Sep 11 03:08:07 2006
@@ -16,7 +16,7 @@
WriteMakefile(
LINKTYPE => 'static',
- 'NAME' => 'Handler',
+ 'NAME' => 'Transcoder',
'INC' => $INCLUDES,
'OBJECT' => '$(O_FILES)',
# 'CCFLAGS' => $CFLAGS,
@@ -30,17 +30,17 @@
sub MY::static
{
'
-static :: libhandler$(LIB_EXT)
+static :: libtranscode$(LIB_EXT)
dynamic :: static
-libhandler$(LIB_EXT): $(O_FILES) $(MYEXTLIB)
- $(AR) cru libhandler$(LIB_EXT) $(O_FILES)
- $(RANLIB) libhandler$(LIB_EXT)
+libtranscode$(LIB_EXT): $(O_FILES) $(MYEXTLIB)
+ $(AR) cru libtranscode$(LIB_EXT) $(O_FILES)
+ $(RANLIB) libtranscode$(LIB_EXT)
-libhandler.$(DLEXT): $(LDFROM) $(MYEXTLIB)
- $(LD) -o libhandler.$(DLEXT) $(LDDLFLAGS) --whole-archive $(LDFROM) $(OTHERLDFLAGS) $(MYEXTLIB) $(PERL_ARCHIVE) $(LDLOADLIBS) $(EXPORT_LIST)
- $(CHMOD) 755 libhandler.$(DLEXT)
+libtranscode.$(DLEXT): $(LDFROM) $(MYEXTLIB)
+ $(LD) -o libtranscode.$(DLEXT) $(LDDLFLAGS) --whole-archive $(LDFROM) $(OTHERLDFLAGS) $(MYEXTLIB) $(PERL_ARCHIVE) $(LDLOADLIBS) $(EXPORT_LIST)
+ $(CHMOD) 755 libtranscode.$(DLEXT)
';
Added: xerces/c/trunk/swig/perl/Transcoder/Transcoder.cpp
URL: http://svn.apache.org/viewvc/xerces/c/trunk/swig/perl/Transcoder/Transcoder.cpp?view=auto&rev=442160
==============================================================================
--- xerces/c/trunk/swig/perl/Transcoder/Transcoder.cpp (added)
+++ xerces/c/trunk/swig/perl/Transcoder/Transcoder.cpp Mon Sep 11 03:08:07 2006
@@ -0,0 +1,154 @@
+/*
+ * Copyright 2002,2004 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include <stdlib.h>
+#include "Transcoder.hpp"
+
+Transcoder* Transcoder::_instance = NULL;
+
+Transcoder*
+Transcoder::getInstance() {
+ // fprintf(stderr, "getInstance: finding instance\n");
+ if (_instance == NULL) {
+ // fprintf(stderr, "getInstance: making new transcoder\n");
+ _instance = new Transcoder();
+ }
+ return _instance;
+}
+
+Transcoder::~Transcoder() {
+ // fprintf(stderr, "Deleting transcoder\n");
+}
+
+Transcoder::Transcoder() {
+ XMLTransService::Codes failReason;
+
+ // we assume that the Xerces-C transcoding service is already initialized
+ // via XMLPlatformUtils::Initialize()
+ UTF8_TRANSCODER = XMLPlatformUtils::fgTransService->makeNewTranscoderFor(
+ XMLUni::fgUTF8EncodingString,
+ failReason,
+ 1024);
+
+ if (UTF8_TRANSCODER == NULL) {
+ croak("ERROR: Transcoder Could not create UTF-8 transcoder");
+ } else if (failReason == XMLTransService::UnsupportedEncoding) {
+ croak("ERROR: Transcoder: unsupported encoding");
+ } else if (failReason == XMLTransService::InternalFailure) {
+ croak("ERROR: Transcoder: internal failure");
+ } else if (failReason == XMLTransService::SupportFilesNotFound) {
+ croak("ERROR: Transcoder: support files not found");
+ } else if (failReason == XMLTransService::Ok) {
+ // fprintf(stderr, "Created transcoder ok\n");
+ }
+}
+
+SV*
+Transcoder::XMLString2Perl(const XMLCh* input) {
+ SV *output;
+ unsigned int charsEaten = 0;
+ int length = XMLString::stringLen(input); // string length
+ // use +1 to make room for the '\0' at the end of the string
+ // in the pathological case when each character of the string
+ // is UTF8_MAXLEN bytes long
+ XMLByte* res = new XMLByte[(length * UTF8_MAXLEN) + 1]; // output string
+
+ unsigned int total_chars =
+ UTF8_TRANSCODER->transcodeTo((const XMLCh*) input,
+ (unsigned int) length,
+ (XMLByte*) res,
+ (unsigned int) (length*UTF8_MAXLEN),
+ charsEaten,
+ XMLTranscoder::UnRep_Throw
+ );
+ res[total_chars] = '\0';
+
+#if (0)
+ if (DEBUG_UTF8_OUT) {
+ printf("Xerces out length = %d: ",total_chars);
+ for (int i=0;i<length;i++){
+ printf("<0x%.4X>",res[i]);
+ }
+ printf("\n");
+ }
+#endif
+
+ output = sv_newmortal();
+ sv_setpv((SV*)output, (char *)res );
+ SvUTF8_on((SV*)output);
+ delete[] res;
+ return output;
+}
+
+XMLCh*
+Transcoder::Perl2XMLString(SV* input){
+ XMLCh* output;
+
+ STRLEN length;
+ char *ptr = (char *)SvPVutf8(input,length);
+
+#if (0)
+ if (DEBUG_UTF8_IN) {
+ printf("Perl in length = %d: ",length);
+ for (unsigned int i=0;i<length;i++){
+ printf("<0x%.4X>",ptr[i]);
+ }
+ printf("\n");
+ }
+#endif
+
+ if (SvUTF8(input)) {
+ unsigned int charsEaten = 0;
+ unsigned char* sizes = new unsigned char[length+1];
+ output = new XMLCh[length+1];
+ unsigned int chars_stored =
+ UTF8_TRANSCODER->transcodeFrom((const XMLByte*) ptr,
+ (unsigned int) length,
+ (XMLCh*) output,
+ (unsigned int) length,
+ charsEaten,
+ (unsigned char*)sizes
+ );
+ delete [] sizes;
+
+#if (0)
+ if (DEBUG_UTF8_IN) {
+ printf("Xerces in length = %d: ",chars_stored);
+ for (unsigned int i=0;i<chars_stored;i++){
+ printf("<0x%.4X>",output[i]);
+ }
+ printf("\n");
+ }
+#endif
+
+ // indicate the end of the string
+ output[chars_stored] = '\0';
+ } else {
+ output = XMLString::transcode(ptr);
+
+#if (0)
+ if (DEBUG_UTF8_IN) {
+ printf("Xerces: ");
+ for (int i=0;output[i];i++){
+ printf("<0x%.4X>",output[i]);
+ }
+ printf("\n");
+ }
+#endif
+
+ }
+ return(output);
+}
Added: xerces/c/trunk/swig/perl/Transcoder/Transcoder.hpp
URL: http://svn.apache.org/viewvc/xerces/c/trunk/swig/perl/Transcoder/Transcoder.hpp?view=auto&rev=442160
==============================================================================
--- xerces/c/trunk/swig/perl/Transcoder/Transcoder.hpp (added)
+++ xerces/c/trunk/swig/perl/Transcoder/Transcoder.hpp Mon Sep 11 03:08:07 2006
@@ -0,0 +1,60 @@
+/*
+ * Copyright 2002,2004 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef __TRANSCODER
+#define __TRANSCODER
+
+/* Needed on some windows machines---since MS plays funny
+ games with the header files under C++ */
+extern "C" {
+
+#include "EXTERN.h"
+#include "perl.h"
+#include "XSUB.h"
+
+/* Get rid of free and malloc defined by perl */
+#undef free
+#undef malloc
+
+}
+
+
+#include "xercesc/util/TransService.hpp"
+#include "xercesc/util/PlatformUtils.hpp"
+
+XERCES_CPP_NAMESPACE_USE
+
+class Transcoder {
+
+private:
+ static Transcoder* _instance;
+
+protected:
+
+ Transcoder();
+ XMLTranscoder* UTF8_TRANSCODER;
+
+public:
+
+ static Transcoder* getInstance();
+
+ ~Transcoder();
+
+ SV* XMLString2Perl(const XMLCh*);
+ XMLCh* Perl2XMLString(SV*);
+};
+
+#endif /* __TRANSCODER */
Added: xerces/c/trunk/swig/perl/Transcoder/XMLExceptionHandler.cpp
URL: http://svn.apache.org/viewvc/xerces/c/trunk/swig/perl/Transcoder/XMLExceptionHandler.cpp?view=auto&rev=442160
==============================================================================
--- xerces/c/trunk/swig/perl/Transcoder/XMLExceptionHandler.cpp (added)
+++ xerces/c/trunk/swig/perl/Transcoder/XMLExceptionHandler.cpp Mon Sep 11 03:08:07 2006
@@ -0,0 +1,127 @@
+/*
+ * Copyright 2002,2004 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include <stdlib.h>
+#include "XMLExceptionHandler.hpp"
+
+XMLExceptionHandler* XMLExceptionHandler::_instance = NULL;
+
+XMLExceptionHandler*
+XMLExceptionHandler::getInstance() {
+ if (_instance == NULL) {
+ _instance = new XMLExceptionHandler();
+ }
+ return _instance;
+}
+
+XMLExceptionHandler::XMLExceptionHandler() {}
+
+XMLException*
+XMLExceptionHandler::copyXMLException(const XMLException& e)
+{
+ if(e.getType() == XMLUni::fgArrayIndexOutOfBoundsException_Name)
+ {
+ return (XMLException*)((ArrayIndexOutOfBoundsException*)&e)->duplicate();
+ }
+ else if(e.getType() == XMLUni::fgEmptyStackException_Name)
+ {
+ return (XMLException*)((EmptyStackException*)&e)->duplicate();
+ }
+ else if(e.getType() == XMLUni::fgIllegalArgumentException_Name)
+ {
+ return (XMLException*)((IllegalArgumentException*)&e)->duplicate();
+ }
+ else if(e.getType() == XMLUni::fgInvalidCastException_Name)
+ {
+ return (XMLException*)((InvalidCastException*)&e)->duplicate();
+ }
+ else if(e.getType() == XMLUni::fgIOException_Name)
+ {
+ return (XMLException*)((IOException*)&e)->duplicate();
+ }
+ else if(e.getType() == XMLUni::fgNoSuchElementException_Name)
+ {
+ return (XMLException*)((NoSuchElementException*)&e)->duplicate();
+ }
+ else if(e.getType() == XMLUni::fgNullPointerException_Name)
+ {
+ return (XMLException*)((NullPointerException*)&e)->duplicate();
+ }
+ else if(e.getType() == XMLUni::fgNumberFormatException_Name)
+ {
+ return (XMLException*)((NumberFormatException*)&e)->duplicate();
+ }
+ else if(e.getType() == XMLUni::fgParseException_Name)
+ {
+ return (XMLException*)((ParseException*)&e)->duplicate();
+ }
+ else if(e.getType() == XMLUni::fgXMLPlatformUtilsException_Name)
+ {
+ return (XMLException*)((XMLPlatformUtilsException*)&e)->duplicate();
+ }
+ else if(e.getType() == XMLUni::fgRuntimeException_Name)
+ {
+ return (XMLException*)((RuntimeException*)&e)->duplicate();
+ }
+ else if(e.getType() == XMLUni::fgSchemaDateTimeException_Name)
+ {
+ return (XMLException*)((SchemaDateTimeException*)&e)->duplicate();
+ }
+ else if(e.getType() == XMLUni::fgTranscodingException_Name)
+ {
+ return (XMLException*)((TranscodingException*)&e)->duplicate();
+ }
+ else if(e.getType() == XMLUni::fgUnexpectedEOFException_Name)
+ {
+ return (XMLException*)((UnexpectedEOFException*)&e)->duplicate();
+ }
+ else if(e.getType() == XMLUni::fgUnsupportedEncodingException_Name)
+ {
+ return (XMLException*)((UnsupportedEncodingException*)&e)->duplicate();
+ }
+ else if(e.getType() == XMLUni::fgUTFDataFormatException_Name)
+ {
+ return (XMLException*)((UTFDataFormatException*)&e)->duplicate();
+ }
+ else if(e.getType() == XMLUni::fgNetAccessorException_Name)
+ {
+ return (XMLException*)((NetAccessorException*)&e)->duplicate();
+ }
+ else if(e.getType() == XMLUni::fgMalformedURLException_Name)
+ {
+ return (XMLException*)((MalformedURLException*)&e)->duplicate();
+ }
+ else if(e.getType() == XMLUni::fgXSerializationException_Name)
+ {
+ return (XMLException*)((XSerializationException*)&e)->duplicate();
+ }
+ else if(e.getType() == XMLUni::fgInvalidDatatypeFacetException_Name)
+ {
+ return (XMLException*)((InvalidDatatypeFacetException*)&e)->duplicate();
+ }
+ else if(e.getType() == XMLUni::fgInvalidDatatypeValueException_Name)
+ {
+ return (XMLException*)((InvalidDatatypeValueException*)&e)->duplicate();
+ }
+ else if(e.getType() == XMLUni::fgXPathException_Name)
+ {
+ return (XMLException*)((XPathException*)&e)->duplicate();
+ }
+ else
+ {
+ croak("Unknown Exception type: %d", e.getType());
+ }
+}
Added: xerces/c/trunk/swig/perl/Transcoder/XMLExceptionHandler.hpp
URL: http://svn.apache.org/viewvc/xerces/c/trunk/swig/perl/Transcoder/XMLExceptionHandler.hpp?view=auto&rev=442160
==============================================================================
--- xerces/c/trunk/swig/perl/Transcoder/XMLExceptionHandler.hpp (added)
+++ xerces/c/trunk/swig/perl/Transcoder/XMLExceptionHandler.hpp Mon Sep 11 03:08:07 2006
@@ -0,0 +1,72 @@
+/*
+ * Copyright 2002,2004 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef __XMLEXCEPTIONHANDLER
+#define __XMLEXCEPTIONHANDLER
+
+/* Needed on some windows machines---since MS plays funny
+ games with the header files under C++ */
+extern "C" {
+
+#include "EXTERN.h"
+#include "perl.h"
+#include "XSUB.h"
+
+/* Get rid of free and malloc defined by perl */
+#undef free
+#undef malloc
+
+}
+
+#include "xercesc/util/ArrayIndexOutOfBoundsException.hpp"
+#include "xercesc/util/EmptyStackException.hpp"
+#include "xercesc/util/IllegalArgumentException.hpp"
+#include "xercesc/util/InvalidCastException.hpp"
+#include "xercesc/util/IOException.hpp"
+#include "xercesc/util/NoSuchElementException.hpp"
+#include "xercesc/util/NullPointerException.hpp"
+#include "xercesc/util/NumberFormatException.hpp"
+#include "xercesc/util/ParseException.hpp"
+#include "xercesc/util/RuntimeException.hpp"
+#include "xercesc/util/SchemaDateTimeException.hpp"
+#include "xercesc/util/TranscodingException.hpp"
+#include "xercesc/util/UnexpectedEOFException.hpp"
+#include "xercesc/util/UnsupportedEncodingException.hpp"
+#include "xercesc/util/UTFDataFormatException.hpp"
+#include "xercesc/util/XMLNetAccessor.hpp"
+#include "xercesc/internal/XSerializationException.hpp"
+#include "xercesc/validators/datatype/InvalidDatatypeFacetException.hpp"
+#include "xercesc/validators/datatype/InvalidDatatypeValueException.hpp"
+#include "xercesc/validators/schema/identity/XPathException.hpp"
+
+XERCES_CPP_NAMESPACE_USE
+
+class XMLExceptionHandler {
+
+protected:
+
+ XMLExceptionHandler();
+ static XMLExceptionHandler* _instance;
+
+public:
+
+ static XMLExceptionHandler* getInstance();
+
+ ~XMLExceptionHandler();
+ XMLException* copyXMLException(const XMLException& e);
+};
+
+#endif /* __XMLEXCEPTIONHANDLER */
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@xerces.apache.org
For additional commands, e-mail: commits-help@xerces.apache.org