auriemma 00/12/05 11:12:37
Modified: c/src/XPath XResultTreeFrag.cpp XResultTreeFrag.hpp
Log:
Removed multiple inheritance.
Revision Changes Path
1.16 +44 -6 xml-xalan/c/src/XPath/XResultTreeFrag.cpp
Index: XResultTreeFrag.cpp
===================================================================
RCS file: /home/cvs/xml-xalan/c/src/XPath/XResultTreeFrag.cpp,v
retrieving revision 1.15
retrieving revision 1.16
diff -u -r1.15 -r1.16
--- XResultTreeFrag.cpp 2000/12/04 20:46:17 1.15
+++ XResultTreeFrag.cpp 2000/12/05 19:12:34 1.16
@@ -82,10 +82,10 @@
XResultTreeFrag::XResultTreeFrag(ResultTreeFragBase* val) :
XObject(eTypeResultTreeFrag),
- NodeRefListBase(),
m_value(val),
m_cachedStringValue(),
- m_cachedNumberValue(0.0)
+ m_cachedNumberValue(0.0),
+ m_nodeRefListBaseProxy(*this)
{
}
@@ -94,11 +94,11 @@
XResultTreeFrag::XResultTreeFrag(
const XResultTreeFrag& source,
bool deepClone) :
- XObject(source),
- NodeRefListBase(source),
+ XObject(source),
m_value(source.m_value->clone(deepClone)),
m_cachedStringValue(source.m_cachedStringValue),
- m_cachedNumberValue(source.m_cachedNumberValue)
+ m_cachedNumberValue(source.m_cachedNumberValue),
+ m_nodeRefListBaseProxy(*this)
{
}
@@ -192,7 +192,7 @@
const NodeRefListBase&
XResultTreeFrag::nodeset() const
{
- return *this;
+ return m_nodeRefListBaseProxy;
}
@@ -276,4 +276,42 @@
}
return fFound == true ? theIndex : NodeRefListBase::npos;
+}
+
+
+
+XResultTreeFrag::NodeRefListBaseProxy::NodeRefListBaseProxy(const
XResultTreeFrag& theXResultTreeFrag) :
+ NodeRefListBase(),
+ m_xresultTreeFrag(theXResultTreeFrag)
+{
+}
+
+
+
+XResultTreeFrag::NodeRefListBaseProxy::~NodeRefListBaseProxy()
+{
+}
+
+
+
+XalanNode*
+XResultTreeFrag::NodeRefListBaseProxy::item(unsigned int index) const
+{
+ return m_xresultTreeFrag.item(index);
+}
+
+
+
+unsigned int
+XResultTreeFrag::NodeRefListBaseProxy::getLength() const
+{
+ return m_xresultTreeFrag.getLength();
+}
+
+
+
+unsigned int
+XResultTreeFrag::NodeRefListBaseProxy::indexOf(const XalanNode*
theNode) const
+{
+ return m_xresultTreeFrag.indexOf(theNode);
}
1.16 +38 -10 xml-xalan/c/src/XPath/XResultTreeFrag.hpp
Index: XResultTreeFrag.hpp
===================================================================
RCS file: /home/cvs/xml-xalan/c/src/XPath/XResultTreeFrag.hpp,v
retrieving revision 1.15
retrieving revision 1.16
diff -u -r1.15 -r1.16
--- XResultTreeFrag.hpp 2000/12/04 20:46:17 1.15
+++ XResultTreeFrag.hpp 2000/12/05 19:12:35 1.16
@@ -86,10 +86,10 @@
class ResultTreeFragBase;
class XPathSupport;
+class XResultTreeFrag;
-
-class XALAN_XPATH_EXPORT XResultTreeFrag : public XObject, private
NodeRefListBase
+class XALAN_XPATH_EXPORT XResultTreeFrag : public XObject
{
public:
@@ -148,25 +148,53 @@
virtual void
ProcessXObjectTypeCallback(XObjectTypeCallback&
theCallbackObject) const;
-
-private:
-
- // These methods are inherited from NodeRefListBase...
- virtual XalanNode*
+ // New member functions for node list compatibility...
+ XalanNode*
item(unsigned int index) const;
- virtual unsigned int
+ unsigned int
getLength() const;
- virtual unsigned int
+ unsigned int
indexOf(const XalanNode* theNode) const;
+
+private:
+
+ class NodeRefListBaseProxy : public NodeRefListBase
+ {
+ public:
+
+ NodeRefListBaseProxy(const XResultTreeFrag&
theXResultTreeFrag);
- XalanAutoPtr<ResultTreeFragBase> m_value;
+ virtual
+ ~NodeRefListBaseProxy();
+ virtual XalanNode*
+ item(unsigned int index) const;
+
+ virtual unsigned int
+ getLength() const;
+
+ virtual unsigned int
+ indexOf(const XalanNode* theNode) const;
+
+ private:
+
+ // Not implemented...
+ NodeRefListBaseProxy(const NodeRefListBaseProxy&);
+
+ const XResultTreeFrag& m_xresultTreeFrag;
+ };
+
+ // Data members...
+ XalanAutoPtr<ResultTreeFragBase> m_value;
+
mutable XalanDOMString m_cachedStringValue;
mutable double
m_cachedNumberValue;
+
+ const NodeRefListBaseProxy m_nodeRefListBaseProxy;
};