|
Boost : |
From: Hamish Mackenzie (hamish_at_[hidden])
Date: 2003-06-26 15:00:39
On Thu, 2003-06-26 at 19:51, Stefan Seefeld wrote:
> Hamish Mackenzie wrote:
>
> >>>>And I don't use a 'document' class, as that is managed implicitely
> >>>>by my dom::document_ptr:
> >>>>
> >>>>dom::document_ptr document; // create new document;
> >>>>dom::document_ptr doc(document); // create second reference to it
> >>>>dom::document_ptr doc2 = document.clone(); // clone it, i.e. make deep
> >>>> copy
> >>>
> >>>
> >>>This is not consistent with the standard library or C++ in general. It
> >>>will seem strange that the pointer class
> >>>1) Does not require dereferencing
> >>
> >>would you say the same if the class name was spelled 'document_ref'
> >>instead ?
> >
> >
> > 1 & 4 would be ok, but 3 would stand and having an 'operator bool' would
> > be added to the list.
> >
> >
> >>>3) Has a constructor such as document_ptr( "config.xml" )
> >>>4) Has member functions such as write_to_file
> >>>
> >>>The alternative would allow both...
> >>>
> >>>boost::shared_ptr< dom::document > doc( new dom::document() );
> >>>boost::shared_ptr< dom::document > doc1( doc );
> >>>dom::document doc2( *doc1 );
> >>>
> >>>and if the 'doc1' reference was non-owning...
> >>>
> >>>dom::document doc(); // Create new doc
> >>>dom::document & doc1( doc ); // Second reference
> >>>dom::document doc2( doc1 ); // Deep copy
> >>
> >>right, but given such an approach, what would nodes return in their
> >>'parent()' method ?
> >
> >
> > The parent is always an element (is that right?) so it would return
> > element_ptr or element_ref.
>
> yes. Sorry, I meant to ask what 'document()' would return.
Assuming xmlNode::doc cannot be null it would return document_ref.
You might be worried about...
dom::document dom;
assert( &dom.root().document() == &dom );
I think this can work be made to work with
bool operator ==( document * p1, document_ref * p2 )
{
return p1->raw_ == p2->raw_;
}
bool operator ==( document_ref * p1, document * p2 )
{
return p1->raw_ == p2->raw_;
}
etc.
-- Hamish Mackenzie <hamish_at_[hidden]>
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk