Implement two iterator remove method
authorChris Lattner <sabre@nondot.org>
Mon, 6 May 2002 02:59:34 +0000 (02:59 +0000)
committerChris Lattner <sabre@nondot.org>
Mon, 6 May 2002 02:59:34 +0000 (02:59 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@2467 91177308-0d34-0410-b5e6-96231b3b80d8

lib/VMCore/ValueHolderImpl.h

index 3eb7e754569a106247de90a68378844a752bac70..3f20a173e91b48b56149c6ae0ee77e57b5f5a32d 100644 (file)
@@ -96,6 +96,23 @@ ValueSubclass *ValueHolder<ValueSubclass,ItemParentType,SymTabType>
   return i;
 }
 
+
+template<class ValueSubclass, class ItemParentType, class SymTabType>
+void ValueHolder<ValueSubclass,ItemParentType,SymTabType>
+::remove(iterator S, iterator E) {
+  for (iterator I = S; I != E; ++I) {
+    ValueSubclass *i = *I;
+    i->setParent(0);  // I don't own you anymore... byebye...
+  
+    // You don't get to be in the symbol table anymore... byebye
+    if (i->hasName() && Parent)
+      Parent->getSymbolTable()->remove(i);
+  }
+
+  ValueList.erase(S, E);
+}
+
+
 template<class ValueSubclass, class ItemParentType, class SymTabType>
 ValueSubclass *ValueHolder<ValueSubclass,ItemParentType,SymTabType>
 ::replaceWith(iterator &DI, ValueSubclass *NewVal) {