From: Alberto M. <ama...@us...> - 2006-07-19 20:42:36
|
Update of /cvsroot/xqilla/xqilla/src/simple-api In directory sc8-pr-cvs10.sourceforge.net:/tmp/cvs-serv30726/src/simple-api Modified Files: XQQuery.cpp Log Message: Added cloneNode API to ItemFactory; global variables exported by a module containing nodes must be imported by copying the nodes, or they will be pointing to deleted documents Index: XQQuery.cpp =================================================================== RCS file: /cvsroot/xqilla/xqilla/src/simple-api/XQQuery.cpp,v retrieving revision 1.21 retrieving revision 1.22 diff -C2 -d -r1.21 -r1.22 *** XQQuery.cpp 20 Jun 2006 15:24:30 -0000 1.21 --- XQQuery.cpp 19 Jul 2006 20:42:32 -0000 1.22 *************** *** 430,435 **** getGlobalVar((*varIt)->getVariableURI(), (*varIt)->getVariableLocalName(), moduleCtx); assert(value.first); context->getVariableStore()-> ! setGlobalVar((*varIt)->getVariableURI(), (*varIt)->getVariableLocalName(), value.second, context); } } --- 430,441 ---- getGlobalVar((*varIt)->getVariableURI(), (*varIt)->getVariableLocalName(), moduleCtx); assert(value.first); + Sequence newSeq(value.second.getLength()); + for(Sequence::iterator it=value.second.begin(); it!=value.second.end(); it++) + if((*it)->isNode()) + newSeq.addItem(context->getItemFactory()->cloneNode((const Node::Ptr)(*it), context)); + else + newSeq.addItem(*it); context->getVariableStore()-> ! setGlobalVar((*varIt)->getVariableURI(), (*varIt)->getVariableLocalName(), newSeq, context); } } *************** *** 501,506 **** getGlobalVar((*varIt)->getVariableURI(), (*varIt)->getVariableLocalName(), moduleCtx); assert(value.first); context->getVariableStore()-> ! setGlobalVar((*varIt)->getVariableURI(), (*varIt)->getVariableLocalName(), value.second, context); } } --- 507,518 ---- getGlobalVar((*varIt)->getVariableURI(), (*varIt)->getVariableLocalName(), moduleCtx); assert(value.first); + Sequence newSeq(value.second.getLength()); + for(Sequence::iterator it=value.second.begin(); it!=value.second.end(); it++) + if((*it)->isNode()) + newSeq.addItem(context->getItemFactory()->cloneNode((const Node::Ptr)(*it), context)); + else + newSeq.addItem(*it); context->getVariableStore()-> ! setGlobalVar((*varIt)->getVariableURI(), (*varIt)->getVariableLocalName(), newSeq, context); } } |