diff options
| author | Chris Lattner <sabre@nondot.org> | 2002-05-06 02:59:34 +0000 |
|---|---|---|
| committer | Chris Lattner <sabre@nondot.org> | 2002-05-06 02:59:34 +0000 |
| commit | 4ba780d26e682ad6f832e902ce650313fd8eed26 (patch) | |
| tree | b7a340b4e07987b9862ae0dd1d7e154d0b8bb5c6 /llvm/lib | |
| parent | dac95a012bd722a2fcce1434cd39748ce3fc16c0 (diff) | |
| download | bcm5719-llvm-4ba780d26e682ad6f832e902ce650313fd8eed26.tar.gz bcm5719-llvm-4ba780d26e682ad6f832e902ce650313fd8eed26.zip | |
Implement two iterator remove method
llvm-svn: 2467
Diffstat (limited to 'llvm/lib')
| -rw-r--r-- | llvm/lib/VMCore/ValueHolderImpl.h | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/llvm/lib/VMCore/ValueHolderImpl.h b/llvm/lib/VMCore/ValueHolderImpl.h index 3eb7e754569..3f20a173e91 100644 --- a/llvm/lib/VMCore/ValueHolderImpl.h +++ b/llvm/lib/VMCore/ValueHolderImpl.h @@ -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) { |

