|
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);
}
|