mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-02-08 21:32:39 +00:00
Add an insert method to VAlueHolder to allow batch insertion
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@2038 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
68e5ed8dbe
commit
b04bb3f158
@ -111,6 +111,16 @@ public:
|
||||
// value.
|
||||
//
|
||||
iterator insert(iterator Pos, ValueSubclass *Inst);
|
||||
|
||||
// ValueHolder::insert - This method inserts the specified _range_ of values
|
||||
// before the 'Pos' iterator. This currently only works for vector
|
||||
// iterators...
|
||||
//
|
||||
// FIXME: This is not generic so that the code does not have to be around
|
||||
// to be used... is this ok?
|
||||
//
|
||||
void insert(iterator Pos, // Where to insert
|
||||
iterator First, iterator Last); // Vector to read insts from
|
||||
};
|
||||
|
||||
#endif
|
||||
|
@ -138,4 +138,34 @@ ValueHolder<ValueSubclass,ItemParentType,SymTabType>
|
||||
return I;
|
||||
}
|
||||
|
||||
// ValueHolder::insert - This method inserts the specified _range_ of values
|
||||
// before the 'Pos' iterator, and returns an iterator to the first newly
|
||||
// inserted element. This currently only works for vector iterators...
|
||||
//
|
||||
// FIXME: This is not generic so that the code does not have to be around
|
||||
// to be used... is this ok?
|
||||
//
|
||||
template<class ValueSubclass, class ItemParentType, class SymTabType>
|
||||
void ValueHolder<ValueSubclass,ItemParentType,SymTabType>
|
||||
::insert(iterator Pos, // Where to insert
|
||||
iterator First, iterator Last) { // Vector to read insts from
|
||||
|
||||
// Check to make sure that the values are not already in some valueholder...
|
||||
|
||||
for (iterator X = First; X != Last; ++X) {
|
||||
assert((*X)->getParent() == 0 &&
|
||||
"Cannot insert into valueholder, value already has a parent!");
|
||||
(*X)->setParent(ItemParent);
|
||||
}
|
||||
|
||||
// Add all of the values to the value holder...
|
||||
ValueList.insert(Pos, First, Last);
|
||||
|
||||
// Insert all of the instructions in the symbol table...
|
||||
if (Parent)
|
||||
for (;First != Last; ++First)
|
||||
if ((*First)->hasName())
|
||||
Parent->getSymbolTableSure()->insert(*First);
|
||||
}
|
||||
|
||||
#endif
|
||||
|
Loading…
x
Reference in New Issue
Block a user