virtual bool RemoveChildren(SContainer<T>* child) { if (std::find(children.begin(), children.end(), child) != children.end()) { children.erase(std::find(children.begin(), children.end(), child)); return true; } return false; }
void DeltaDrawablePrivate::RemoveChild(DeltaDrawable* child) { if (!child) return; unsigned int pos = GetChildIndex(child); if (pos < mChildList.size()) { child->SetParent(NULL); child->AddedToScene(NULL); mChildList.erase(mChildList.begin() + pos); } }
// Compares all pairs of children, finding and removing duplicate BTERMs void noDuplicateNodes( ChildList &l ) { //This is shallow! //ONLY SAFE WHEN DELETING BTERMS for now (note is prev to Aug 2009) // BK Aug 21, 2009: seems to be deep compare and deep delete ChildList dups; CLIter n1 = l.begin(); CLIter n2 = ++(l.begin()); CLIter end = l.end(); while( n1 != end ){ //assert((*n1)->t == BTERM); while( n2 != end ){ //Comparison if( (*n1)->equals(*n2) ){ dups.push_back(*n2); } n2++; } n1++; n2 = n1; n2++; } dups.sort(); dups.unique(); for(n2 = dups.begin(); n2 != dups.end(); n2++){ for(n1 = l.begin(); n1 != l.end(); n1++){ if(*n1 == *n2){ (*n1)->destroyTree(); l.erase(n1); break; } } } dups.clear(); }