From: Edwin P. <edp...@us...> - 2002-04-30 05:33:07
|
Update of /cvsroot/perl-xml/xalan-p In directory usw-pr-cvs1:/tmp/cvs-serv28194 Modified Files: Xalan.xs xs.dom xs.xpath Log Message: Now uses TranscodeToLocalCodePage. Index: Xalan.xs =================================================================== RCS file: /cvsroot/perl-xml/xalan-p/Xalan.xs,v retrieving revision 1.2 retrieving revision 1.3 diff -u -d -r1.2 -r1.3 --- Xalan.xs 20 Apr 2002 06:37:51 -0000 1.2 +++ Xalan.xs 30 Apr 2002 05:33:02 -0000 1.3 @@ -12,29 +12,7 @@ #include "Xalan.hpp" -#ifdef _USE_UTF8 -#define DOMSTRING_2CHAR(result, domstring) \ - { \ - unsigned int j; \ - for (j = 0; j < domstring.length(); j++) \ - { \ - if (domstring[j] > 0x80) \ - uv_to_utf8((U8*)(result + j), domstring[j]); \ - else \ - *(result + j) = domstring[j]; \ - } \ - *(result + j) = '\0'; \ - } -#else -#define DOMSTRING_2CHAR(result, domstring) \ - { \ - unsigned int j = 0; \ - result = new char[domstring.length() + 1]; \ - for (j = 0; j < domstring.length(); j++) \ - *(result + j) = domstring[j]; \ - *(result + j) = '\0'; \ - } -#endif +#define TRANSCODE_2LOCAL(domstring) (char*)c_str(TranscodeToLocalCodePage(domstring)) #define BLESS_CORRECT_NODE_CLASS(sv, node) \ switch (node->getNodeType()) { \ @@ -294,8 +272,7 @@ case XObject::eTypeStringCached: case XObject::eTypeXTokenStringAdapter: if (m_auto_cast) { - char *temp_str; - DOMSTRING_2CHAR(temp_str, args[i].get()->str()); + char *temp_str = TRANSCODE_2LOCAL(args[i].get()->str()); sv_setpv(sv_arg, temp_str); #ifdef _USE_UTF8 SvUTF8_on(sv_arg); Index: xs.dom =================================================================== RCS file: /cvsroot/perl-xml/xalan-p/xs.dom,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -u -d -r1.1.1.1 -r1.2 --- xs.dom 18 Apr 2002 03:37:40 -0000 1.1.1.1 +++ xs.dom 30 Apr 2002 05:33:02 -0000 1.2 @@ -13,7 +13,7 @@ TRANSLATE_DOMEXCEPTION_CODE(mesg, e.getExceptionCode()); croak("XalanDOMException caught: %s.\n", mesg); } - DOMSTRING_2CHAR(RETVAL, tmpDOMString); + RETVAL = TRANSCODE_2LOCAL(tmpDOMString); OUTPUT: RETVAL @@ -30,7 +30,7 @@ TRANSLATE_DOMEXCEPTION_CODE(mesg, e.getExceptionCode()) croak("XalanDOMException caught: %s.\n", mesg); } - DOMSTRING_2CHAR(RETVAL, tmpDOMString); + RETVAL = TRANSCODE_2LOCAL(tmpDOMString); OUTPUT: RETVAL @@ -62,7 +62,7 @@ TRANSLATE_DOMEXCEPTION_CODE(mesg, e.getExceptionCode()); croak("XalanDOMException caught: %s.\n", mesg); } - DOMSTRING_2CHAR(RETVAL, tmpDOMString); + RETVAL = TRANSCODE_2LOCAL(tmpDOMString); OUTPUT: RETVAL @@ -111,7 +111,7 @@ TRANSLATE_DOMEXCEPTION_CODE(mesg, e.getExceptionCode()); croak("XalanDOMException caught: %s.\n", mesg); } - DOMSTRING_2CHAR(RETVAL, tmpDOMString); + RETVAL = TRANSCODE_2LOCAL(tmpDOMString); OUTPUT: RETVAL @@ -131,7 +131,7 @@ TRANSLATE_DOMEXCEPTION_CODE(mesg, e.getExceptionCode()); croak("XalanDOMException caught: %s.\n", mesg); } - DOMSTRING_2CHAR(RETVAL, tmpDOMString); + RETVAL = TRANSCODE_2LOCAL(tmpDOMString); OUTPUT: RETVAL @@ -148,7 +148,7 @@ TRANSLATE_DOMEXCEPTION_CODE(mesg, e.getExceptionCode()); croak("XalanDOMException caught: %s.\n", mesg); } - DOMSTRING_2CHAR(RETVAL, tmpDOMString); + RETVAL = TRANSCODE_2LOCAL(tmpDOMString); OUTPUT: RETVAL @@ -165,7 +165,7 @@ TRANSLATE_DOMEXCEPTION_CODE(mesg, e.getExceptionCode()); croak("XalanDOMException caught: %s.\n", mesg); } - DOMSTRING_2CHAR(RETVAL, tmpDOMString); + RETVAL = TRANSCODE_2LOCAL(tmpDOMString); OUTPUT: RETVAL @@ -494,7 +494,7 @@ TRANSLATE_DOMEXCEPTION_CODE(mesg, e.getExceptionCode()); croak("XalanDOMException caught: %s.\n", mesg); } - DOMSTRING_2CHAR(RETVAL, tmpDOMString); + RETVAL = TRANSCODE_2LOCAL(tmpDOMString); OUTPUT: RETVAL @@ -525,7 +525,7 @@ TRANSLATE_DOMEXCEPTION_CODE(mesg, e.getExceptionCode()); croak("XalanDOMException caught: %s.\n", mesg); } - DOMSTRING_2CHAR(RETVAL, tmpDOMString); + RETVAL = TRANSCODE_2LOCAL(tmpDOMString); OUTPUT: RETVAL @@ -545,7 +545,7 @@ TRANSLATE_DOMEXCEPTION_CODE(mesg, e.getExceptionCode()); croak("XalanDOMException caught: %s.\n", mesg); } - DOMSTRING_2CHAR(RETVAL, tmpDOMString); + RETVAL = TRANSCODE_2LOCAL(tmpDOMString); OUTPUT: RETVAL @@ -562,7 +562,7 @@ TRANSLATE_DOMEXCEPTION_CODE(mesg, e.getExceptionCode()); croak("XalanDOMException caught: %s.\n", mesg); } - DOMSTRING_2CHAR(RETVAL, tmpDOMString); + RETVAL = TRANSCODE_2LOCAL(tmpDOMString); OUTPUT: RETVAL @@ -579,7 +579,7 @@ TRANSLATE_DOMEXCEPTION_CODE(mesg, e.getExceptionCode()); croak("XalanDOMException caught: %s.\n", mesg); } - DOMSTRING_2CHAR(RETVAL, tmpDOMString); + RETVAL = TRANSCODE_2LOCAL(tmpDOMString); OUTPUT: RETVAL @@ -596,7 +596,7 @@ TRANSLATE_DOMEXCEPTION_CODE(mesg, e.getExceptionCode()); croak("XalanDOMException caught: %s.\n", mesg); } - DOMSTRING_2CHAR(RETVAL, tmpDOMString); + RETVAL = TRANSCODE_2LOCAL(tmpDOMString); OUTPUT: RETVAL @@ -711,7 +711,7 @@ TRANSLATE_DOMEXCEPTION_CODE(mesg, e.getExceptionCode()); croak("XalanDOMException caught: %s.\n", mesg); } - DOMSTRING_2CHAR(RETVAL, tmpDOMString); + RETVAL = TRANSCODE_2LOCAL(tmpDOMString); OUTPUT: RETVAL @@ -778,7 +778,7 @@ TRANSLATE_DOMEXCEPTION_CODE(mesg, e.getExceptionCode()); croak("XalanDOMException caught: %s.\n", mesg); } - DOMSTRING_2CHAR(RETVAL, tmpDOMString); + RETVAL = TRANSCODE_2LOCAL(tmpDOMString); OUTPUT: RETVAL @@ -846,7 +846,7 @@ TRANSLATE_DOMEXCEPTION_CODE(mesg, e.getExceptionCode()); croak("XalanDOMException caught: %s.\n", mesg); } - DOMSTRING_2CHAR(RETVAL, tmpDOMString); + RETVAL = TRANSCODE_2LOCAL(tmpDOMString); OUTPUT: RETVAL @@ -880,8 +880,7 @@ TRANSLATE_DOMEXCEPTION_CODE(mesg, e.getExceptionCode()); croak("XalanDOMException caught: %s.\n", mesg); } - DOMSTRING_2CHAR(RETVAL, tmpDOMString); - DOMSTRING_2CHAR(RETVAL, self->getPrefix()); + RETVAL = TRANSCODE_2LOCAL(tmpDOMString); OUTPUT: RETVAL @@ -1056,7 +1055,7 @@ TRANSLATE_DOMEXCEPTION_CODE(mesg, e.getExceptionCode()); croak("XalanDOMException caught: %s.\n", mesg); } - DOMSTRING_2CHAR(RETVAL, tmpDOMString); + RETVAL = TRANSCODE_2LOCAL(tmpDOMString); OUTPUT: RETVAL @@ -1160,7 +1159,7 @@ TRANSLATE_DOMEXCEPTION_CODE(mesg, e.getExceptionCode()); croak("XalanDOMException caught: %s.\n", mesg); } - DOMSTRING_2CHAR(RETVAL, tmpDOMString); + RETVAL = TRANSCODE_2LOCAL(tmpDOMString); OUTPUT: RETVAL @@ -1179,7 +1178,7 @@ TRANSLATE_DOMEXCEPTION_CODE(mesg, e.getExceptionCode()); croak("XalanDOMException caught: %s.\n", mesg); } - DOMSTRING_2CHAR(RETVAL, tmpDOMString); + RETVAL = TRANSCODE_2LOCAL(tmpDOMString); OUTPUT: RETVAL @@ -1448,7 +1447,7 @@ TRANSLATE_DOMEXCEPTION_CODE(mesg, e.getExceptionCode()); croak("XalanDOMException caught: %s.\n", mesg); } - DOMSTRING_2CHAR(RETVAL, tmpDOMString); + RETVAL = TRANSCODE_2LOCAL(tmpDOMString); OUTPUT: RETVAL @@ -1487,7 +1486,7 @@ TRANSLATE_DOMEXCEPTION_CODE(mesg, e.getExceptionCode()); croak("XalanDOMException caught: %s.\n", mesg); } - DOMSTRING_2CHAR(RETVAL, tmpDOMString); + RETVAL = TRANSCODE_2LOCAL(tmpDOMString); OUTPUT: RETVAL @@ -1611,7 +1610,7 @@ TRANSLATE_DOMEXCEPTION_CODE(mesg, e.getExceptionCode()); croak("XalanDOMException caught: %s.\n", mesg); } - DOMSTRING_2CHAR(RETVAL, tmpDOMString); + RETVAL = TRANSCODE_2LOCAL(tmpDOMString); OUTPUT: RETVAL Index: xs.xpath =================================================================== RCS file: /cvsroot/perl-xml/xalan-p/xs.xpath,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -u -d -r1.1.1.1 -r1.2 --- xs.xpath 18 Apr 2002 03:37:38 -0000 1.1.1.1 +++ xs.xpath 30 Apr 2002 05:33:02 -0000 1.2 @@ -11,11 +11,51 @@ str(self) XObject* self CODE: - DOMSTRING_2CHAR(RETVAL, self->str()); + RETVAL = TRANSCODE_2LOCAL(self->str()); OUTPUT: RETVAL void +my_nodeset(self) + XObject* self + PREINIT: + int i; + PPCODE: + XNodeSetAllocator xnodeset_allocator(XObjectFactoryDefault::eDefaultXNodeSetBlockSize); + XNodeSet *xnodeset = xnodeset_allocator.clone(*(XNodeSet*)self); + + const NodeRefListBase& ret_nodeset = self->nodeset(); + const unsigned int theLength = ret_nodeset.getLength(); + //PerlIO_printf(PerlIO_stderr(), "Nodeset size: %d\n", theLength); + + if (theLength == 0) + XSRETURN_EMPTY; + else { + EXTEND(sp, theLength); + for (i = 0; i < theLength; i++) { + SV *sv_node = sv_newmortal(); + XalanNode const *the_node = xnodeset->item(i); +#ifdef DEBUG_XALAN + try { + char *tmp; + if (the_node->getNodeType() == XalanNode::ELEMENT_NODE) { + PerlIO_printf(PerlIO_stderr(), "Element node.\n"); + + tmp = TRANSCODE_2LOCAL(the_node->getNodeName()); + PerlIO_printf(PerlIO_stderr(), "Node name: %s\n", tmp); + } + } catch (const XalanDOMException& e) { + char *mesg; + TRANSLATE_DOMEXCEPTION_CODE(mesg, e.getExceptionCode()); + croak("XalanDOMException caught: %s.\n", mesg); + } +#endif + BLESS_CORRECT_NODE_CLASS(sv_node, the_node) + PUSHs(sv_node); + } + } + +void nodeset(self) XObject* self PREINIT: @@ -32,11 +72,11 @@ for (i = 0; i < theLength; i++) { SV *sv_node = sv_newmortal(); XalanNode const *the_node = ret_nodeset.item(i); - - //char *tmp; +#ifdef DEBUG_XALAN + char *tmp; //DOMSTRING_2CHAR(tmp, the_node->getNodeName()); //PerlIO_printf(PerlIO_stderr(), "Node name: %s\n", tmp); - +#endif BLESS_CORRECT_NODE_CLASS(sv_node, the_node) PUSHs(sv_node); } |