dbertoni 00/04/20 09:30:58
Modified: c/src/XPath XNodeSet.cpp XNodeSet.hpp
Log:
Fixed casting issues, and problem with conversion to string.
Revision Changes Path
1.4 +16 -30 xml-xalan/c/src/XPath/XNodeSet.cpp
Index: XNodeSet.cpp
===================================================================
RCS file: /home/cvs/xml-xalan/c/src/XPath/XNodeSet.cpp,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- XNodeSet.cpp 2000/04/11 14:46:13 1.3
+++ XNodeSet.cpp 2000/04/20 16:30:57 1.4
@@ -120,15 +120,9 @@
XObject(source),
m_support(source.m_support),
m_value(source.m_value),
-#if defined(XALAN_NO_COVARIANT_RETURN_TYPE)
m_resultTreeFrag(source.m_resultTreeFrag.get() == 0 ?
0 :
-
dynamic_cast<ResultTreeFragBase*>(source.m_resultTreeFrag->clone(deepClone)))
-#else
- m_resultTreeFrag(source.m_resultTreeFrag.get() == 0 ?
- 0 :
source.m_resultTreeFrag->clone(deepClone))
-#endif
{
}
@@ -159,23 +153,7 @@
double
XNodeSet::num() const
{
- double result = DoubleSupport::getNaN();
-
- if(m_value.getLength() > 0)
- {
- const XalanDOMString s =
m_support.getNodeData(*m_value.item(0));
-
- if(0 == length(s))
- {
- result = 0;
- }
- else
- {
- result = DOMStringToDouble(s);
- }
- }
-
- return result;
+ return DOMStringToDouble(str());
}
@@ -235,18 +213,26 @@
new ResultTreeFrag(*m_envSupport->getDOMFactory(),
m_support);
-#if defined(XALAN_OLD_AUTO_PTR)
- m_resultTreeFrag = auto_ptr<ResultTreeFragBase>(theFrag);
-#else
- m_resultTreeFrag.reset(theFrag);
-#endif
-
const int nNodes = m_value.getLength();
for(int i = 0; i < nNodes; i++)
{
-
m_resultTreeFrag->appendChild(m_value.item(i)->cloneNode(true));
+ theFrag->appendChild(m_value.item(i)->cloneNode(true));
}
+
+#if defined(XALAN_OLD_AUTO_PTR)
+#if defined(XALAN_NO_MUTABLE)
+ ((XNodeSet*)this)->m_resultTreeFrag =
auto_ptr<ResultTreeFragBase>(theFrag);
+#else
+ m_resultTreeFrag = auto_ptr<ResultTreeFragBase>(theFrag);
+#endif
+#else
+#if defined(XALAN_NO_MUTABLE)
+ ((XNodeSet*)this)->m_resultTreeFrag.reset(theFrag);
+#else
+ m_resultTreeFrag.reset(theFrag);
+#endif
+#endif
}
return *m_resultTreeFrag.get();
1.4 +8 -0 xml-xalan/c/src/XPath/XNodeSet.hpp
Index: XNodeSet.hpp
===================================================================
RCS file: /home/cvs/xml-xalan/c/src/XPath/XNodeSet.hpp,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- XNodeSet.hpp 2000/04/11 14:46:13 1.3
+++ XNodeSet.hpp 2000/04/20 16:30:57 1.4
@@ -195,9 +195,17 @@
MutableNodeRefList
m_value;
#if defined(XALAN_NO_NAMESPACES)
+#if defined(XALAN_NO_MUTABLE)
+ auto_ptr<ResultTreeFragBase>
m_resultTreeFrag;
+#else
+ mutable auto_ptr<ResultTreeFragBase> m_resultTreeFrag;
+#endif
+#else
+#if defined(XALAN_NO_MUTABLE)
std::auto_ptr<ResultTreeFragBase>
m_resultTreeFrag;
#else
mutable std::auto_ptr<ResultTreeFragBase> m_resultTreeFrag;
+#endif
#endif
};