template <typename _KeyType, typename _PtrType, typename _BucketType = SinglyLinkedList<_PtrType>, typename _HashType = size_t, _HashType NumBuckets = internal::kDefaultNumBuckets, typename _KeyTraits = DefaultKeyedObjectTraits<
              _KeyType, typename internal::ContainerPtrTraits<_PtrType>::ValueType>, typename _HashTraits = DefaultHashTraits<
              _KeyType, typename internal::ContainerPtrTraits<_PtrType>::ValueType, _HashType,
              NumBuckets>>

class HashTable

Defined at line 252 of file ../../zircon/system/ulib/fbl/include/fbl/intrusive_hash_table.h

Public Members

static const bool SupportsConstantOrderErase
static const bool SupportsConstantOrderSize
static const bool IsAssociative
static const bool IsSequenced

Public Methods

void HashTable<_KeyType, _PtrType, _BucketType, _HashType, NumBuckets, _KeyTraits, _HashTraits> ()

Defined at line 297 of file ../../zircon/system/ulib/fbl/include/fbl/intrusive_hash_table.h

void HashTable<_KeyType, _PtrType, _BucketType, _HashType, NumBuckets, _KeyTraits, _HashTraits> (std::unique_ptr<BucketType[]> buckets_storage, size_t bucket_count)

Defined at line 307 of file ../../zircon/system/ulib/fbl/include/fbl/intrusive_hash_table.h

void HashTable<_KeyType, _PtrType, _BucketType, _HashType, NumBuckets, _KeyTraits, _HashTraits> (std::unique_ptr<BucketType[]> buckets_storage, size_t bucket_count)

Defined at line 307 of file ../../zircon/system/ulib/fbl/include/fbl/intrusive_hash_table.h

void HashTable<_KeyType, _PtrType, _BucketType, _HashType, NumBuckets, _KeyTraits, _HashTraits> (std::unique_ptr<BucketType[]> buckets_storage, size_t bucket_count)

Defined at line 307 of file ../../zircon/system/ulib/fbl/include/fbl/intrusive_hash_table.h

void HashTable<_KeyType, _PtrType, _BucketType, _HashType, NumBuckets, _KeyTraits, _HashTraits> (std::unique_ptr<BucketType[]> buckets_storage, size_t bucket_count)

Defined at line 307 of file ../../zircon/system/ulib/fbl/include/fbl/intrusive_hash_table.h

void HashTable<_KeyType, _PtrType, _BucketType, _HashType, NumBuckets, _KeyTraits, _HashTraits> (HashTableOption )

Defined at line 315 of file ../../zircon/system/ulib/fbl/include/fbl/intrusive_hash_table.h

void Init (std::unique_ptr<BucketType[]> buckets_storage, size_t bucket_count)

Defined at line 322 of file ../../zircon/system/ulib/fbl/include/fbl/intrusive_hash_table.h

void Init (std::unique_ptr<BucketType[]> buckets_storage, size_t bucket_count)

Defined at line 322 of file ../../zircon/system/ulib/fbl/include/fbl/intrusive_hash_table.h

void Init (std::unique_ptr<BucketType[]> buckets_storage, size_t bucket_count)

Defined at line 322 of file ../../zircon/system/ulib/fbl/include/fbl/intrusive_hash_table.h

void Init (std::unique_ptr<BucketType[]> buckets_storage, size_t bucket_count)

Defined at line 322 of file ../../zircon/system/ulib/fbl/include/fbl/intrusive_hash_table.h

void ~HashTable<_KeyType, _PtrType, _BucketType, _HashType, NumBuckets, _KeyTraits, _HashTraits> ()

Defined at line 328 of file ../../zircon/system/ulib/fbl/include/fbl/intrusive_hash_table.h

iterator begin ()

Standard begin/end, cbegin/cend iterator accessors.

Defined at line 331 of file ../../zircon/system/ulib/fbl/include/fbl/intrusive_hash_table.h

const_iterator begin ()

Defined at line 332 of file ../../zircon/system/ulib/fbl/include/fbl/intrusive_hash_table.h

const_iterator cbegin ()

Defined at line 333 of file ../../zircon/system/ulib/fbl/include/fbl/intrusive_hash_table.h

iterator end ()

Defined at line 335 of file ../../zircon/system/ulib/fbl/include/fbl/intrusive_hash_table.h

const_iterator end ()

Defined at line 336 of file ../../zircon/system/ulib/fbl/include/fbl/intrusive_hash_table.h

const_iterator cend ()

Defined at line 337 of file ../../zircon/system/ulib/fbl/include/fbl/intrusive_hash_table.h

iterator make_iterator (ValueType & obj)

make_iterator : construct an iterator out of a reference to an object.

Defined at line 340 of file ../../zircon/system/ulib/fbl/include/fbl/intrusive_hash_table.h

const_iterator make_iterator (const ValueType & obj)

Defined at line 345 of file ../../zircon/system/ulib/fbl/include/fbl/intrusive_hash_table.h

void insert (const PtrType & ptr)

Defined at line 351 of file ../../zircon/system/ulib/fbl/include/fbl/intrusive_hash_table.h

void insert (PtrType && ptr)

Defined at line 352 of file ../../zircon/system/ulib/fbl/include/fbl/intrusive_hash_table.h

bool insert_or_find (const PtrType & ptr, iterator * iter)

insert_or_find

Insert the element pointed to by ptr if it is not already in the

HashTable, or find the element that the ptr collided with instead.

'iter' is an optional out parameter pointer to an iterator which

will reference either the newly inserted item, or the item whose key

collided with ptr.

insert_or_find returns true if there was no collision and the item was

successfully inserted, otherwise it returns false.

Note: When using the r-value reference form of |insert_or_find|, the

pointer passed to the function is *only* consumed when there is no

collision and the item is successfully inserted into the collection (in

which case, the collection owns the passed pointer). In the case that

there is a collision, the user's pointer is not consumed and is left as is.

Defined at line 387 of file ../../zircon/system/ulib/fbl/include/fbl/intrusive_hash_table.h

bool insert_or_find (PtrType && ptr, iterator * iter)

Defined at line 391 of file ../../zircon/system/ulib/fbl/include/fbl/intrusive_hash_table.h

PtrType insert_or_replace (const PtrType & ptr)

insert_or_replace

Find the element in the hashtable with the same key as *ptr and replace

it with ptr, then return the pointer to the element which was replaced.

If no element in the hashtable shares a key with *ptr, simply add ptr to

the hashtable and return nullptr.

Defined at line 420 of file ../../zircon/system/ulib/fbl/include/fbl/intrusive_hash_table.h

PtrType insert_or_replace (PtrType && ptr)

Defined at line 422 of file ../../zircon/system/ulib/fbl/include/fbl/intrusive_hash_table.h

iterator find (const KeyType & key)

Defined at line 446 of file ../../zircon/system/ulib/fbl/include/fbl/intrusive_hash_table.h

const_iterator find (const KeyType & key)

Defined at line 456 of file ../../zircon/system/ulib/fbl/include/fbl/intrusive_hash_table.h

PtrType erase (const KeyType & key)

Defined at line 467 of file ../../zircon/system/ulib/fbl/include/fbl/intrusive_hash_table.h

PtrType erase (const iterator & iter)

Defined at line 479 of file ../../zircon/system/ulib/fbl/include/fbl/intrusive_hash_table.h

PtrType erase (ValueType & obj)

Defined at line 488 of file ../../zircon/system/ulib/fbl/include/fbl/intrusive_hash_table.h

void clear ()

clear

Clear out the all of the hashtable buckets. For managed pointer types,

this will release all references held by the hashtable to the objects

which were in it.

Defined at line 495 of file ../../zircon/system/ulib/fbl/include/fbl/intrusive_hash_table.h

void clear_unsafe ()

clear_unsafe

Perform a clear_unsafe on all buckets and reset the internal count to

zero. See comments in fbl/intrusive_single_list.h

Think carefully before calling this!

Defined at line 508 of file ../../zircon/system/ulib/fbl/include/fbl/intrusive_hash_table.h

HashType bucket_count ()

Defined at line 523 of file ../../zircon/system/ulib/fbl/include/fbl/intrusive_hash_table.h

size_t size ()

Defined at line 524 of file ../../zircon/system/ulib/fbl/include/fbl/intrusive_hash_table.h

bool is_empty ()

Defined at line 525 of file ../../zircon/system/ulib/fbl/include/fbl/intrusive_hash_table.h

template <typename UnaryFn>
PtrType erase_if (UnaryFn fn)

erase_if

Find the first member of the hash table which satisfies the predicate

given by 'fn' and erase it from the list, returning a referenced pointer

to the removed element. Return nullptr if no member satisfies the

predicate.

Defined at line 534 of file ../../zircon/system/ulib/fbl/include/fbl/intrusive_hash_table.h

template <typename UnaryFn>
const_iterator find_if (UnaryFn fn)

find_if

Find the first member of the hash table which satisfies the predicate

given by 'fn' and return an iterator to it. Return end() if no member

satisfies the predicate.

Defined at line 561 of file ../../zircon/system/ulib/fbl/include/fbl/intrusive_hash_table.h

template <typename UnaryFn>
iterator find_if (UnaryFn fn)

Defined at line 574 of file ../../zircon/system/ulib/fbl/include/fbl/intrusive_hash_table.h

Records

Friends

template <typename _KeyTypetypename _PtrTypetypename _BucketType = SinglyLinkedList<_PtrType>typename _HashType = size_t_HashType NumBuckets = internal::kDefaultNumBucketstypename _KeyTraits = DefaultKeyedObjectTraits<
              _KeyType, typename internal::ContainerPtrTraits<_PtrType>::ValueType>typename _HashTraits = DefaultHashTraits<
              _KeyType, typename internal::ContainerPtrTraits<_PtrType>::ValueType, _HashType,
              NumBuckets>>
class HashTableChecker