void Registry::ReleaseWhite() { // make a copy of the white set to avoid mutation while iterating nstd::vector<Handle> to_delete(white.begin(), white.end()); white.clear(); foreach (Handle handle, to_delete) { DestroyObject(handle); }
size_type multi_transfer( BOOST_DEDUCED_TYPENAME AssociatePtrCont::iterator first, BOOST_DEDUCED_TYPENAME AssociatePtrCont::iterator last, AssociatePtrCont& from ) // basic { BOOST_ASSERT( (void*)&from != (void*)this ); size_type res = 0; for( ; first != last; ) { BOOST_ASSERT( first != from.end() ); this->base().insert( *first.base() ); // strong BOOST_DEDUCED_TYPENAME AssociatePtrCont::iterator to_delete( first ); ++first; from.base().erase( to_delete.base() ); // nothrow ++res; } return res; }
size_type single_transfer( BOOST_DEDUCED_TYPENAME AssociatePtrCont::iterator first, BOOST_DEDUCED_TYPENAME AssociatePtrCont::iterator last, AssociatePtrCont& from ) // basic { BOOST_ASSERT( (void*)&from != (void*)this ); size_type res = 0; for( ; first != last; ) { BOOST_ASSERT( first != from.end() ); std::pair<BOOST_DEDUCED_TYPENAME base_type::ptr_iterator,bool> p = this->base().insert( *first.base() ); // strong BOOST_DEDUCED_TYPENAME AssociatePtrCont::iterator to_delete( first ); ++first; if( p.second ) { from.base().erase( to_delete.base() ); // nothrow ++res; } } return res; }