unsigned getKeyLength() const { return StrLen; }
};
unsigned getKeyLength() const { return StrLen; }
};
-/// StringMapVisitor - Subclasses of this class may be implemented to walk all
-/// of the items in a StringMap.
-class StringMapVisitor {
-public:
- virtual ~StringMapVisitor();
- virtual void Visit(const char *Key, StringMapEntryBase *Value) const = 0;
-};
-
/// StringMapImpl - This is the base class of StringMap that is shared among
/// all of its instantiations.
class StringMapImpl {
/// StringMapImpl - This is the base class of StringMap that is shared among
/// all of its instantiations.
class StringMapImpl {
bool empty() const { return NumItems == 0; }
unsigned size() const { return NumItems; }
bool empty() const { return NumItems == 0; }
unsigned size() const { return NumItems; }
-
- void VisitEntries(const StringMapVisitor &Visitor) const;
};
/// StringMapEntry - This is used to represent one value that is inserted into
};
/// StringMapEntry - This is used to represent one value that is inserted into
#include <cassert>
using namespace llvm;
#include <cassert>
using namespace llvm;
-StringMapVisitor::~StringMapVisitor() {
-}
-
StringMapImpl::StringMapImpl(unsigned InitSize, unsigned itemSize) {
assert((InitSize & (InitSize-1)) == 0 &&
"Init Size must be a power of 2 or zero!");
StringMapImpl::StringMapImpl(unsigned InitSize, unsigned itemSize) {
assert((InitSize & (InitSize-1)) == 0 &&
"Init Size must be a power of 2 or zero!");
TheTable = NewTableArray;
NumBuckets = NewSize;
}
TheTable = NewTableArray;
NumBuckets = NewSize;
}
-
-
-/// VisitEntries - This method walks through all of the items,
-/// invoking Visitor.Visit for each of them.
-void StringMapImpl::VisitEntries(const StringMapVisitor &Visitor) const {
- for (ItemBucket *IB = TheTable, *E = TheTable+NumBuckets; IB != E; ++IB) {
- if (StringMapEntryBase *Id = IB->Item)
- Visitor.Visit((char*)Id + ItemSize, Id);
- }
-}