Whitespace cleanup

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46611 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Anton Korobeynikov 2008-01-31 12:10:41 +00:00
parent 7bdc5f734f
commit 75fb496fc6

View File

@ -26,7 +26,7 @@ namespace llvm {
class StringMapEntry; class StringMapEntry;
/// StringMapEntryInitializer - This datatype can be partially specialized for /// StringMapEntryInitializer - This datatype can be partially specialized for
/// various datatypes in a stringmap to allow them to be initialized when an /// various datatypes in a stringmap to allow them to be initialized when an
/// entry is default constructed for the map. /// entry is default constructed for the map.
template<typename ValueTy> template<typename ValueTy>
class StringMapEntryInitializer { class StringMapEntryInitializer {
@ -35,17 +35,17 @@ public:
static void Initialize(StringMapEntry<ValueTy> &T, InitTy InitVal) { static void Initialize(StringMapEntry<ValueTy> &T, InitTy InitVal) {
} }
}; };
/// StringMapEntryBase - Shared base class of StringMapEntry instances. /// StringMapEntryBase - Shared base class of StringMapEntry instances.
class StringMapEntryBase { class StringMapEntryBase {
unsigned StrLen; unsigned StrLen;
public: public:
explicit StringMapEntryBase(unsigned Len) : StrLen(Len) {} explicit StringMapEntryBase(unsigned Len) : StrLen(Len) {}
unsigned getKeyLength() const { return StrLen; } unsigned getKeyLength() const { return StrLen; }
}; };
/// StringMapImpl - This is the base class of StringMap that is shared among /// StringMapImpl - This is the base class of StringMap that is shared among
/// all of its instantiations. /// all of its instantiations.
class StringMapImpl { class StringMapImpl {
@ -56,11 +56,11 @@ public:
/// FullHashValue - This remembers the full hash value of the key for /// FullHashValue - This remembers the full hash value of the key for
/// easy scanning. /// easy scanning.
unsigned FullHashValue; unsigned FullHashValue;
/// Item - This is a pointer to the actual item object. /// Item - This is a pointer to the actual item object.
StringMapEntryBase *Item; StringMapEntryBase *Item;
}; };
protected: protected:
ItemBucket *TheTable; ItemBucket *TheTable;
unsigned NumBuckets; unsigned NumBuckets;
@ -77,7 +77,7 @@ protected:
} }
StringMapImpl(unsigned InitSize, unsigned ItemSize); StringMapImpl(unsigned InitSize, unsigned ItemSize);
void RehashTable(); void RehashTable();
/// ShouldRehash - Return true if the table should be rehashed after a new /// ShouldRehash - Return true if the table should be rehashed after a new
/// element was recently inserted. /// element was recently inserted.
bool ShouldRehash() const { bool ShouldRehash() const {
@ -87,14 +87,14 @@ protected:
return NumItems*4 > NumBuckets*3 || return NumItems*4 > NumBuckets*3 ||
NumBuckets-(NumItems+NumTombstones) < NumBuckets/8; NumBuckets-(NumItems+NumTombstones) < NumBuckets/8;
} }
/// LookupBucketFor - Look up the bucket that the specified string should end /// LookupBucketFor - Look up the bucket that the specified string should end
/// up in. If it already exists as a key in the map, the Item pointer for the /// up in. If it already exists as a key in the map, the Item pointer for the
/// specified bucket will be non-null. Otherwise, it will be null. In either /// specified bucket will be non-null. Otherwise, it will be null. In either
/// case, the FullHashValue field of the bucket will be set to the hash value /// case, the FullHashValue field of the bucket will be set to the hash value
/// of the string. /// of the string.
unsigned LookupBucketFor(const char *KeyStart, const char *KeyEnd); unsigned LookupBucketFor(const char *KeyStart, const char *KeyEnd);
/// FindKey - Look up the bucket that contains the specified key. If it exists /// FindKey - Look up the bucket that contains the specified key. If it exists
/// in the map, return the bucket number of the key. Otherwise return -1. /// in the map, return the bucket number of the key. Otherwise return -1.
/// This does not modify the map. /// This does not modify the map.
@ -113,7 +113,7 @@ public:
static StringMapEntryBase *getTombstoneVal() { static StringMapEntryBase *getTombstoneVal() {
return (StringMapEntryBase*)-1; return (StringMapEntryBase*)-1;
} }
unsigned getNumBuckets() const { return NumBuckets; } unsigned getNumBuckets() const { return NumBuckets; }
unsigned getNumItems() const { return NumItems; } unsigned getNumItems() const { return NumItems; }
@ -135,14 +135,14 @@ public:
const ValueTy &getValue() const { return Val; } const ValueTy &getValue() const { return Val; }
ValueTy &getValue() { return Val; } ValueTy &getValue() { return Val; }
void setValue(const ValueTy &V) { Val = V; } void setValue(const ValueTy &V) { Val = V; }
/// getKeyData - Return the start of the string data that is the key for this /// getKeyData - Return the start of the string data that is the key for this
/// value. The string data is always stored immediately after the /// value. The string data is always stored immediately after the
/// StringMapEntry object. /// StringMapEntry object.
const char *getKeyData() const {return reinterpret_cast<const char*>(this+1);} const char *getKeyData() const {return reinterpret_cast<const char*>(this+1);}
/// Create - Create a StringMapEntry for the specified key and default /// Create - Create a StringMapEntry for the specified key and default
/// construct the value. /// construct the value.
template<typename AllocatorTy, typename InitType> template<typename AllocatorTy, typename InitType>
@ -150,37 +150,37 @@ public:
AllocatorTy &Allocator, AllocatorTy &Allocator,
InitType InitVal) { InitType InitVal) {
unsigned KeyLength = KeyEnd-KeyStart; unsigned KeyLength = KeyEnd-KeyStart;
// Okay, the item doesn't already exist, and 'Bucket' is the bucket to fill // Okay, the item doesn't already exist, and 'Bucket' is the bucket to fill
// in. Allocate a new item with space for the string at the end and a null // in. Allocate a new item with space for the string at the end and a null
// terminator. // terminator.
unsigned AllocSize = sizeof(StringMapEntry)+KeyLength+1; unsigned AllocSize = sizeof(StringMapEntry)+KeyLength+1;
unsigned Alignment = alignof<StringMapEntry>(); unsigned Alignment = alignof<StringMapEntry>();
StringMapEntry *NewItem = StringMapEntry *NewItem =
static_cast<StringMapEntry*>(Allocator.Allocate(AllocSize,Alignment)); static_cast<StringMapEntry*>(Allocator.Allocate(AllocSize,Alignment));
// Default construct the value. // Default construct the value.
new (NewItem) StringMapEntry(KeyLength); new (NewItem) StringMapEntry(KeyLength);
// Copy the string information. // Copy the string information.
char *StrBuffer = const_cast<char*>(NewItem->getKeyData()); char *StrBuffer = const_cast<char*>(NewItem->getKeyData());
memcpy(StrBuffer, KeyStart, KeyLength); memcpy(StrBuffer, KeyStart, KeyLength);
StrBuffer[KeyLength] = 0; // Null terminate for convenience of clients. StrBuffer[KeyLength] = 0; // Null terminate for convenience of clients.
// Initialize the value if the client wants to. // Initialize the value if the client wants to.
StringMapEntryInitializer<ValueTy>::Initialize(*NewItem, InitVal); StringMapEntryInitializer<ValueTy>::Initialize(*NewItem, InitVal);
return NewItem; return NewItem;
} }
template<typename AllocatorTy> template<typename AllocatorTy>
static StringMapEntry *Create(const char *KeyStart, const char *KeyEnd, static StringMapEntry *Create(const char *KeyStart, const char *KeyEnd,
AllocatorTy &Allocator) { AllocatorTy &Allocator) {
return Create(KeyStart, KeyEnd, Allocator, (void*)0); return Create(KeyStart, KeyEnd, Allocator, (void*)0);
} }
/// Create - Create a StringMapEntry with normal malloc/free. /// Create - Create a StringMapEntry with normal malloc/free.
template<typename InitType> template<typename InitType>
static StringMapEntry *Create(const char *KeyStart, const char *KeyEnd, static StringMapEntry *Create(const char *KeyStart, const char *KeyEnd,
@ -192,20 +192,20 @@ public:
static StringMapEntry *Create(const char *KeyStart, const char *KeyEnd) { static StringMapEntry *Create(const char *KeyStart, const char *KeyEnd) {
return Create(KeyStart, KeyEnd, (void*)0); return Create(KeyStart, KeyEnd, (void*)0);
} }
/// GetStringMapEntryFromValue - Given a value that is known to be embedded /// GetStringMapEntryFromValue - Given a value that is known to be embedded
/// into a StringMapEntry, return the StringMapEntry itself. /// into a StringMapEntry, return the StringMapEntry itself.
static StringMapEntry &GetStringMapEntryFromValue(ValueTy &V) { static StringMapEntry &GetStringMapEntryFromValue(ValueTy &V) {
StringMapEntry *EPtr = 0; StringMapEntry *EPtr = 0;
char *Ptr = reinterpret_cast<char*>(&V) - char *Ptr = reinterpret_cast<char*>(&V) -
(reinterpret_cast<char*>(&EPtr->Val) - (reinterpret_cast<char*>(&EPtr->Val) -
reinterpret_cast<char*>(EPtr)); reinterpret_cast<char*>(EPtr));
return *reinterpret_cast<StringMapEntry*>(Ptr); return *reinterpret_cast<StringMapEntry*>(Ptr);
} }
static const StringMapEntry &GetStringMapEntryFromValue(const ValueTy &V) { static const StringMapEntry &GetStringMapEntryFromValue(const ValueTy &V) {
return GetStringMapEntryFromValue(const_cast<ValueTy&>(V)); return GetStringMapEntryFromValue(const_cast<ValueTy&>(V));
} }
/// Destroy - Destroy this StringMapEntry, releasing memory back to the /// Destroy - Destroy this StringMapEntry, releasing memory back to the
/// specified allocator. /// specified allocator.
template<typename AllocatorTy> template<typename AllocatorTy>
@ -214,7 +214,7 @@ public:
this->~StringMapEntry(); this->~StringMapEntry();
Allocator.Deallocate(this); Allocator.Deallocate(this);
} }
/// Destroy this object, releasing memory back to the malloc allocator. /// Destroy this object, releasing memory back to the malloc allocator.
void Destroy() { void Destroy() {
MallocAllocator A; MallocAllocator A;
@ -235,13 +235,13 @@ public:
StringMap() : StringMapImpl(sizeof(MapEntryTy)) {} StringMap() : StringMapImpl(sizeof(MapEntryTy)) {}
explicit StringMap(unsigned InitialSize) explicit StringMap(unsigned InitialSize)
: StringMapImpl(InitialSize, sizeof(MapEntryTy)) {} : StringMapImpl(InitialSize, sizeof(MapEntryTy)) {}
AllocatorTy &getAllocator() { return Allocator; } AllocatorTy &getAllocator() { return Allocator; }
const AllocatorTy &getAllocator() const { return Allocator; } const AllocatorTy &getAllocator() const { return Allocator; }
typedef StringMapConstIterator<ValueTy> const_iterator; typedef StringMapConstIterator<ValueTy> const_iterator;
typedef StringMapIterator<ValueTy> iterator; typedef StringMapIterator<ValueTy> iterator;
iterator begin() { iterator begin() {
return iterator(TheTable, NumBuckets == 0); return iterator(TheTable, NumBuckets == 0);
} }
@ -254,7 +254,7 @@ public:
const_iterator end() const { const_iterator end() const {
return const_iterator(TheTable+NumBuckets, true); return const_iterator(TheTable+NumBuckets, true);
} }
iterator find(const char *KeyStart, const char *KeyEnd) { iterator find(const char *KeyStart, const char *KeyEnd) {
int Bucket = FindKey(KeyStart, KeyEnd); int Bucket = FindKey(KeyStart, KeyEnd);
if (Bucket == -1) return end(); if (Bucket == -1) return end();
@ -266,7 +266,7 @@ public:
if (Bucket == -1) return end(); if (Bucket == -1) return end();
return const_iterator(TheTable+Bucket); return const_iterator(TheTable+Bucket);
} }
/// insert - Insert the specified key/value pair into the map. If the key /// insert - Insert the specified key/value pair into the map. If the key
/// already exists in the map, return false and ignore the request, otherwise /// already exists in the map, return false and ignore the request, otherwise
/// insert it and return true. /// insert it and return true.
@ -275,63 +275,63 @@ public:
LookupBucketFor(KeyValue->getKeyData(), LookupBucketFor(KeyValue->getKeyData(),
KeyValue->getKeyData()+KeyValue->getKeyLength()); KeyValue->getKeyData()+KeyValue->getKeyLength());
ItemBucket &Bucket = TheTable[BucketNo]; ItemBucket &Bucket = TheTable[BucketNo];
if (Bucket.Item && Bucket.Item != getTombstoneVal()) if (Bucket.Item && Bucket.Item != getTombstoneVal())
return false; // Already exists in map. return false; // Already exists in map.
if (Bucket.Item == getTombstoneVal()) if (Bucket.Item == getTombstoneVal())
--NumTombstones; --NumTombstones;
Bucket.Item = KeyValue; Bucket.Item = KeyValue;
++NumItems; ++NumItems;
if (ShouldRehash()) if (ShouldRehash())
RehashTable(); RehashTable();
return true; return true;
} }
/// GetOrCreateValue - Look up the specified key in the table. If a value /// GetOrCreateValue - Look up the specified key in the table. If a value
/// exists, return it. Otherwise, default construct a value, insert it, and /// exists, return it. Otherwise, default construct a value, insert it, and
/// return. /// return.
template <typename InitTy> template <typename InitTy>
StringMapEntry<ValueTy> &GetOrCreateValue(const char *KeyStart, StringMapEntry<ValueTy> &GetOrCreateValue(const char *KeyStart,
const char *KeyEnd, const char *KeyEnd,
InitTy Val) { InitTy Val) {
unsigned BucketNo = LookupBucketFor(KeyStart, KeyEnd); unsigned BucketNo = LookupBucketFor(KeyStart, KeyEnd);
ItemBucket &Bucket = TheTable[BucketNo]; ItemBucket &Bucket = TheTable[BucketNo];
if (Bucket.Item && Bucket.Item != getTombstoneVal()) if (Bucket.Item && Bucket.Item != getTombstoneVal())
return *static_cast<MapEntryTy*>(Bucket.Item); return *static_cast<MapEntryTy*>(Bucket.Item);
MapEntryTy *NewItem = MapEntryTy::Create(KeyStart, KeyEnd, Allocator, Val); MapEntryTy *NewItem = MapEntryTy::Create(KeyStart, KeyEnd, Allocator, Val);
if (Bucket.Item == getTombstoneVal()) if (Bucket.Item == getTombstoneVal())
--NumTombstones; --NumTombstones;
++NumItems; ++NumItems;
// Fill in the bucket for the hash table. The FullHashValue was already // Fill in the bucket for the hash table. The FullHashValue was already
// filled in by LookupBucketFor. // filled in by LookupBucketFor.
Bucket.Item = NewItem; Bucket.Item = NewItem;
if (ShouldRehash()) if (ShouldRehash())
RehashTable(); RehashTable();
return *NewItem; return *NewItem;
} }
StringMapEntry<ValueTy> &GetOrCreateValue(const char *KeyStart, StringMapEntry<ValueTy> &GetOrCreateValue(const char *KeyStart,
const char *KeyEnd) { const char *KeyEnd) {
return GetOrCreateValue(KeyStart, KeyEnd, (void*)0); return GetOrCreateValue(KeyStart, KeyEnd, (void*)0);
} }
/// remove - Remove the specified key/value pair from the map, but do not /// remove - Remove the specified key/value pair from the map, but do not
/// erase it. This aborts if the key is not in the map. /// erase it. This aborts if the key is not in the map.
void remove(MapEntryTy *KeyValue) { void remove(MapEntryTy *KeyValue) {
RemoveKey(KeyValue); RemoveKey(KeyValue);
} }
void erase(iterator I) { void erase(iterator I) {
MapEntryTy &V = *I; MapEntryTy &V = *I;
remove(&V); remove(&V);
V.Destroy(Allocator); V.Destroy(Allocator);
} }
~StringMap() { ~StringMap() {
for (ItemBucket *I = TheTable, *E = TheTable+NumBuckets; I != E; ++I) { for (ItemBucket *I = TheTable, *E = TheTable+NumBuckets; I != E; ++I) {
if (I->Item && I->Item != getTombstoneVal()) if (I->Item && I->Item != getTombstoneVal())
@ -343,7 +343,7 @@ private:
StringMap(const StringMap &); // FIXME: Implement. StringMap(const StringMap &); // FIXME: Implement.
void operator=(const StringMap &); // FIXME: Implement. void operator=(const StringMap &); // FIXME: Implement.
}; };
template<typename ValueTy> template<typename ValueTy>
class StringMapConstIterator { class StringMapConstIterator {
@ -355,21 +355,21 @@ public:
: Ptr(Bucket) { : Ptr(Bucket) {
if (!NoAdvance) AdvancePastEmptyBuckets(); if (!NoAdvance) AdvancePastEmptyBuckets();
} }
const StringMapEntry<ValueTy> &operator*() const { const StringMapEntry<ValueTy> &operator*() const {
return *static_cast<StringMapEntry<ValueTy>*>(Ptr->Item); return *static_cast<StringMapEntry<ValueTy>*>(Ptr->Item);
} }
const StringMapEntry<ValueTy> *operator->() const { const StringMapEntry<ValueTy> *operator->() const {
return static_cast<StringMapEntry<ValueTy>*>(Ptr->Item); return static_cast<StringMapEntry<ValueTy>*>(Ptr->Item);
} }
bool operator==(const StringMapConstIterator &RHS) const { bool operator==(const StringMapConstIterator &RHS) const {
return Ptr == RHS.Ptr; return Ptr == RHS.Ptr;
} }
bool operator!=(const StringMapConstIterator &RHS) const { bool operator!=(const StringMapConstIterator &RHS) const {
return Ptr != RHS.Ptr; return Ptr != RHS.Ptr;
} }
inline StringMapConstIterator& operator++() { // Preincrement inline StringMapConstIterator& operator++() { // Preincrement
++Ptr; ++Ptr;
AdvancePastEmptyBuckets(); AdvancePastEmptyBuckets();
@ -378,7 +378,7 @@ public:
StringMapConstIterator operator++(int) { // Postincrement StringMapConstIterator operator++(int) { // Postincrement
StringMapConstIterator tmp = *this; ++*this; return tmp; StringMapConstIterator tmp = *this; ++*this; return tmp;
} }
private: private:
void AdvancePastEmptyBuckets() { void AdvancePastEmptyBuckets() {
while (Ptr->Item == 0 || Ptr->Item == StringMapImpl::getTombstoneVal()) while (Ptr->Item == 0 || Ptr->Item == StringMapImpl::getTombstoneVal())
@ -388,7 +388,7 @@ private:
template<typename ValueTy> template<typename ValueTy>
class StringMapIterator : public StringMapConstIterator<ValueTy> { class StringMapIterator : public StringMapConstIterator<ValueTy> {
public: public:
explicit StringMapIterator(StringMapImpl::ItemBucket *Bucket, explicit StringMapIterator(StringMapImpl::ItemBucket *Bucket,
bool NoAdvance = false) bool NoAdvance = false)
: StringMapConstIterator<ValueTy>(Bucket, NoAdvance) { : StringMapConstIterator<ValueTy>(Bucket, NoAdvance) {
@ -404,4 +404,3 @@ public:
} }
#endif #endif