> However, if I understand you code correctly, the following is the
> equivalent of what you were doing before:
>
>    theNodeList->addNode(&(*it).second->rtree());
>
Unfortunately rtree() returns a const pointer, and addNode takes a non-const
pointer.

> The node set doesn't own any of the nodes and won't clean them up
> when it's
> destroyed.
>
Presumably then, clone is wrong because the clone won't be cleaned up?  In
that case, I'm kind of stuck!

> Thanks!
>
> Dave
>
>
>
> |---------+--------------------------->
> |         |           "Mark Weaver"   |
> |         |           <[EMAIL PROTECTED]|
> |         |           >               |
> |         |                           |
> |         |           04/08/2004 04:33|
> |         |           AM              |
> |         |           Please respond  |
> |         |           to xalan-c-users|
> |---------+--------------------------->
>
> >-----------------------------------------------------------------
> ---------------------------------------------------------|
>   |
>                                                            |
>   |        To:      <[email protected]>
>                                                            |
>   |        cc:      (bcc: David N Bertoni/Cambridge/IBM)
>                                                            |
>   |        Subject: RE: rtree()->getNodesetRoot()
>                                                            |
>
> >-----------------------------------------------------------------
> ---------------------------------------------------------|
>
>
>
> > It disappeared becaue the "shadow" root document fragment disappeared,
> > which was a quick-and-hacked implementation and caused no end
> of trouble.
> >
> > Our ResultTreeFrag specialization of XalanDocumentFragment also
> > disappeared, as it was offering no value and just created complications.
> >
> > The real "root" is now the result tree fragment itself.  Is there any
> > reason why that won't work?
> >
> I'm just not sure how I add this to a nodeset.  Do I have to clone it?
>
> theNodeList->addNode((*it).second->rtree().cloneNode( false ));
>
> Should the deep flag be set? Does the nodelist then own (and therefore
> ultimately cleanup) the cloned tree?
>
> Thanks,
>
> Mark
>
>
> > Dave
> >
> >
> >
> > |---------+--------------------------->
> > |         |           "Mark Weaver"   |
> > |         |           <[EMAIL PROTECTED]|
> > |         |           >               |
> > |         |                           |
> > |         |           04/07/2004 05:26|
> > |         |           AM              |
> > |         |           Please respond  |
> > |         |           to xalan-c-users|
> > |---------+--------------------------->
> >
> > >-----------------------------------------------------------------
> > ---------------------------------------------------------|
> >   |
> >                                                            |
> >   |        To:      "Xalan-C-Users"
> > <[email protected]>
> >                        |
> >   |        cc:      (bcc: David N Bertoni/Cambridge/IBM)
> >                                                            |
> >   |        Subject: rtree()->getNodesetRoot()
> >                                                            |
> >
> > >-----------------------------------------------------------------
> > ---------------------------------------------------------|
> >
> >
> >
> > I've recently moved up to Xalan 1.7 and it seems that the
> getNodeSetRoot()
> > function has disappeared from XalanDocumentFragment.  This was used in
> one
> > of my (nasty) extension functions that implements a dictionary.
> >
> > Basically, I'm trying to stick the RTF to a nodeset in the following
> code:
> >
> >                          dictionary_t::iterator it =
> > m_dic.find(arg1->str().data());
> >
> > XPathExecutionContext::BorrowReturnMutableNodeRefList
> > theNodeList(executionContext);
> >                          if (it != m_dic.end()) {
> >
> > theNodeList->addNode((*it).second->rtree().getNodesetRoot());
> >                          }
> >                          return
> > executionContext.getXObjectFactory().createNodeSet(theNodeList);
> >
> > the idea being that the nodeset is empty if the dictionary key
> > could not be
> > found or contains the node otherwise.  (There's also a corresponding
> > function to return all of the nodes).
> >
> > Could anyone advise as to the correct way to do this these days?
> >
> > Thanks,
> >
> > Mark
> >
> >
> >
> >
> >
>
>
>
>
>

Reply via email to