On Fri, 2003-06-13 at 19:39, Reece Dunn wrote: > >>This would, however, allow the implementation to be adapted to when memory > >>management needs to be used and to switch between different management > >>policies for the various implementations. > > >Can you elaborate ? > > Sure. In the libxml2 versions, nodes are explicitly deleted, and thus do not > need to be managed, e.g: > typedef node_impl * node; > > If an object requires explicit management, via shared_ptr for example: > typedef boost::shared_ptr< node_impl > node; > > Or, if it is say using a wrapper around an MSXML interface: > class node: public CComPtr< IXMLDOMNode >{ ... }; > > The user can thus write: > boost::xml::dom::node mynode = doc.selectNode( "/h:*[1]" ); > > without worrying about the underlying representation of > boost::xml::dom::node.
These are all pointer types though, so node_ptr is perhaps be a better name. How do you feel about having a node_reference instead. // libxml2 class node_reference { private: xmlNodePtr node_; }; // MSXML class node_reference { private: CComPtr< IXMLDOMNode > node_; }; boost::xml::dom::node_reference mynode = doc.selectNode( "/h:*[1]" ); A node_reference to an object in the document would only be safe as long as that node existed in the document. -- Hamish Mackenzie <[EMAIL PROTECTED]> _______________________________________________ Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost