17 #if !defined(XALANMAP_HEADER_GUARD_1357924680)
18 #define XALANMAP_HEADER_GUARD_1357924680
37 XALAN_CPP_NAMESPACE_BEGIN
41 #pragma warning(disable: 4189)
47 class XalanHasher :
public XALAN_STD_QUALIFIER unary_function<Key, size_type>
52 const char *byteArray =
reinterpret_cast<const char*
>(&key);
56 for (
size_type i = 0; i <
sizeof(Key); ++i)
58 result = (result << 1) ^ byteArray[i];
96 template <
class Value>
104 template <
class Value>
112 template <
class XalanMapTraits,
class BaseIterator>
117 typedef typename XalanMapTraits::pointer
pointer;
166 return !(theRhs == *
this);
197 typedef XALAN_STD_QUALIFIER pair<const key_type, data_type>
value_type;
240 float loadFactor = 0.75,
273 while(entry != theRhs.
end())
358 while (pos != bucket.end())
360 if (!(*pos)->erased &&
m_equals(key, (*pos)->value->first))
385 return (*pos).second;
391 insert(value.first, value.second);
497 newEntry.erased =
false;
500 const_cast<key_type*>(&newEntry.value->first),
507 &newEntry.value->second,
514 &newEntry.value->second,
530 #if defined(_MSC_VER) && _MSC_VER <= 1300
531 toRemove.value_type::~value_type();
533 toRemove.~value_type();
557 assert(pos !=
end());
576 return m_hash(key) % modulus;
601 entryPos->value->first,
623 assert(pointer != 0);
625 return reinterpret_cast<value_type*
>(pointer);
641 assert(theExtraCapacity > theCurrentSize);
648 return theCurrentSize == 0 ?
664 while(j != theCurrentBucket.
end())
666 if ((*j)->erased ==
true)
668 j = theCurrentBucket.
erase(j);
680 theCurrentBucket.
size();
683 theCurrentBucket.
capacity() - theCurrentSize;
685 if (theExtraCapacity > theCurrentSize)
700 theCurrentBucket.
swap(theTempBucket);
738 #if defined(_MSC_VER)
744 XALAN_CPP_NAMESPACE_END
748 #endif // XALANMAP_HEADER_GUARD_1357924680
EntryListType m_entries
Definition: XalanMap.hpp:718
XalanList< Entry > EntryListType
Definition: XalanMap.hpp:211
reference operator*() const
Definition: XalanMap.hpp:149
float m_loadFactor
Definition: XalanMap.hpp:712
size_type operator()(const Key *key) const
Definition: XalanMap.hpp:77
const Value & reference
Definition: XalanMap.hpp:108
bool empty() const
Definition: XalanList.hpp:334
void deallocate(value_type *pointer)
Definition: XalanMap.hpp:629
ptrdiff_t difference_type
Definition: XalanMap.hpp:119
XalanMapTraits::pointer pointer
Definition: XalanMap.hpp:117
XALAN_CPP_NAMESPACE_BEGIN typedef XERCES_CPP_NAMESPACE_QUALIFIER MemoryManager MemoryManagerType
Definition: XalanMemoryManagement.hpp:39
iterator doCreateEntry(const key_type &key, const data_type *data=0)
Definition: XalanMap.hpp:471
iterator end()
Definition: XalanVector.hpp:701
pointer operator->() const
Definition: XalanMap.hpp:154
EntryListType m_freeEntries
Definition: XalanMap.hpp:720
XalanMapTraits::value_type value_type
Definition: XalanMap.hpp:115
bool empty() const
Definition: XalanMap.hpp:321
XalanMapIterator(const Iterator &theRhs)
Definition: XalanMap.hpp:126
value_type * iterator
Definition: XalanVector.hpp:91
size_type capacity() const
Definition: XalanVector.hpp:628
MemoryManagerType * m_memoryManager
Definition: XalanMap.hpp:710
bool erased
Definition: XalanMap.hpp:202
void insert(const key_type &key, const data_type &data)
Definition: XalanMap.hpp:394
const_iterator end() const
Definition: XalanMap.hpp:341
iterator end()
Definition: XalanList.hpp:273
const Value * pointer
Definition: XalanMap.hpp:109
const_iterator begin() const
Definition: XalanMap.hpp:331
Value * pointer
Definition: XalanMap.hpp:101
MemoryManagerType & getMemoryManager()
Definition: XalanMap.hpp:283
Definition: XalanMap.hpp:232
Definition: XalanMap.hpp:47
size_type operator()(const Key &key) const
Definition: XalanMap.hpp:88
void doRemoveEntries()
Definition: XalanMap.hpp:546
Entry(value_type *theValue)
Definition: XalanMap.hpp:204
size_type m_size
Definition: XalanMap.hpp:716
Definition: XalanMap.hpp:66
Value data_type
Definition: XalanMap.hpp:194
Definition: XalanMemoryManagement.hpp:430
iterator find(const key_type &key)
Definition: XalanMap.hpp:346
bool empty() const
Definition: XalanVector.hpp:636
iterator end()
Definition: XalanMap.hpp:336
void push_back(const value_type &data)
Definition: XalanVector.hpp:246
XalanMap & operator=(const XalanMap &theRhs)
Definition: XalanMap.hpp:307
XalanHasher< Key > Hasher
Definition: XalanMap.hpp:68
Definition: XalanMap.hpp:113
data_type & operator[](const key_type &key)
Definition: XalanMap.hpp:376
iterator begin()
Definition: XalanVector.hpp:685
value_type * allocate(size_type size)
Definition: XalanMap.hpp:615
void clear()
Definition: XalanMap.hpp:428
Value value_type
Definition: XalanMap.hpp:99
void doErase(iterator pos)
Definition: XalanMap.hpp:555
iterator begin()
Definition: XalanList.hpp:261
XalanMapIterator & operator++()
Definition: XalanMap.hpp:143
void splice(iterator pos, ThisType &list, iterator toInsert)
Definition: XalanList.hpp:377
XalanMapIterator< XalanMapConstIteratorTraits< value_type >, typename EntryListType::iterator > const_iterator
Definition: XalanMap.hpp:225
XalanVector< BucketType, ConstructWithMemoryManagerTraits< BucketType > > BucketTableType
Definition: XalanMap.hpp:214
XalanMapIterator operator++(int)
Definition: XalanMap.hpp:136
MemoryManagedConstructionTraits< key_type >::Constructor FirstConstructor
Definition: XalanMap.hpp:227
void insert(iterator thePosition, const_iterator theFirst, const_iterator theLast)
Definition: XalanVector.hpp:296
size_type operator()(const Key &key) const
Definition: XalanMap.hpp:50
MemoryManagedConstructionTraits< data_type >::Constructor SecondConstructor
Definition: XalanMap.hpp:228
void compactBuckets()
Definition: XalanMap.hpp:654
XalanMapTraits::reference reference
Definition: XalanMap.hpp:116
const_iterator find(const key_type &key) const
Definition: XalanMap.hpp:371
Value & reference
Definition: XalanMap.hpp:100
void erase(iterator pos)
Definition: XalanMap.hpp:404
BaseIterator baseIterator
Definition: XalanMap.hpp:169
static C * construct(C *address, MemoryManager &)
Definition: XalanMemoryManagement.hpp:434
size_type doHash(const Key &key, size_type modulus) const
Definition: XalanMap.hpp:572
XALAN_CPP_NAMESPACE_BEGIN typedef size_t size_type
Definition: XalanMap.hpp:44
BucketTableType m_buckets
Definition: XalanMap.hpp:722
Definition: XalanMap.hpp:97
bool operator!=(const XalanMapIterator &theRhs) const
Definition: XalanMap.hpp:164
iterator erase(iterator theFirst, iterator theLast)
Definition: XalanVector.hpp:268
size_type doHash(const Key &key) const
Definition: XalanMap.hpp:579
BucketTableType::iterator TableIterator
Definition: XalanMap.hpp:217
Definition: XalanMap.hpp:105
size_t size_type
Definition: XalanMap.hpp:195
Definition: XalanMap.hpp:199
value_type * value
Definition: XalanMap.hpp:201
bool operator==(const XalanMapIterator &theRhs) const
Definition: XalanMap.hpp:159
void push_back(const value_type &data)
Definition: XalanList.hpp:340
Value value_type
Definition: XalanMap.hpp:107
size_type size() const
Definition: XalanVector.hpp:571
XALAN_STD_QUALIFIER pair< const key_type, data_type > value_type
Definition: XalanMap.hpp:197
size_type erase(const key_type &key)
Definition: XalanMap.hpp:412
XalanMapIterator< XalanMapIteratorTraits< value_type >, BaseIterator > Iterator
Definition: XalanMap.hpp:124
KeyTraits::Hasher m_hash
Definition: XalanMap.hpp:706
Definition: XalanMap.hpp:85
reference back()
Definition: XalanList.hpp:315
void swap(ThisType &theRHS)
Definition: XalanList.hpp:444
void doRemoveEntry(const iterator &toRemovePos)
Definition: XalanMap.hpp:527
Definition: XalanMap.hpp:74
size_type size() const
Definition: XalanMap.hpp:316
const size_type m_minBuckets
Definition: XalanMap.hpp:714
iterator begin()
Definition: XalanMap.hpp:326
XALAN_STD_QUALIFIER equal_to< Key > Comparator
Definition: XalanMap.hpp:69
void rehash()
Definition: XalanMap.hpp:584
Definition: XalanMap.hpp:234
static size_type calculateNewBucketCapacity(size_type theCurrentSize, size_type theExtraCapacity)
Definition: XalanMap.hpp:637
XalanVector< typename EntryListType::iterator > BucketType
Definition: XalanMap.hpp:213
void swap(ThisType &theOther)
Definition: XalanVector.hpp:848
XalanMapIterator< XalanMapIteratorTraits< value_type >, typename EntryListType::iterator > iterator
Definition: XalanMap.hpp:222
void swap(XalanMap &theRhs)
Definition: XalanMap.hpp:446
size_type m_eraseThreshold
Definition: XalanMap.hpp:726
size_type m_eraseCount
Definition: XalanMap.hpp:724
void insert(const value_type &value)
Definition: XalanMap.hpp:389
Xalan implementation of a hashtable.
Definition: XalanMap.hpp:182
XalanMapIterator(const BaseIterator &theRhs)
Definition: XalanMap.hpp:131
Definition: XalanMap.hpp:233
Definition: XalanSourceTreeElement.hpp:44
XALAN_STD_QUALIFIER bidirectional_iterator_tag iterator_category
Definition: XalanMap.hpp:120
Definition: XalanList.hpp:65
KeyTraits::Comparator m_equals
Definition: XalanMap.hpp:708
EntryListType::iterator EntryListIterator
Definition: XalanMap.hpp:216
Definition: XalanVector.hpp:61
XalanMap(const XalanMap &theRhs, MemoryManagerType &theMemoryManager)
Definition: XalanMap.hpp:255
Key key_type
Each map entry is stored in a linked list where an entry consists of a pointer to the key/value pair ...
Definition: XalanMap.hpp:193
BucketType::iterator BucketIterator
Definition: XalanMap.hpp:218
XalanMap(MemoryManagerType &theMemoryManager, float loadFactor=0.75, size_type minBuckets=eDefaultMinBuckets, size_type eraseThreshold=eDefaultEraseThreshold)
Definition: XalanMap.hpp:238
~XalanMap()
Definition: XalanMap.hpp:290