Dynalib Utils
Public Member Functions | Static Public Attributes | Protected Member Functions | Protected Attributes | Static Protected Attributes | Friends | List of all members
DynaHashMap< K, V > Class Template Reference

#include <DynaHashMap.h>

Inheritance diagram for DynaHashMap< K, V >:
Inheritance graph
[legend]
Collaboration diagram for DynaHashMap< K, V >:
Collaboration graph
[legend]

Public Member Functions

 DynaHashMap ()
 
 DynaHashMap (int size)
 
virtual ~DynaHashMap ()
 
 DynaHashMap (const DynaHashMap< K, V > &other)
 
DynaHashMap< K, V > * copy () override
 
int count () const
 
int capacity () const
 
int freeCells () const
 
bool isEmpty () const
 
bool containsKey (K *key)
 
bool containsKey (K key)
 
bool isOwnsMembers () const
 
void setOwnsMembers (bool ownsMembers)
 
MapEntry< K, V > * getEntry (K *key)
 
MapEntry< K, V > * getEntry (K key)
 
V * get (K *key)
 
V * get (K key)
 
V * put (K *key, V *value)
 
V * put (K key, V *value)
 
V * remove (K *key)
 
V * remove (K key)
 
void deleteEntry (K *key)
 
void deleteEntry (K key)
 
MapEntry< K, V > * removeEntry (MapEntry< K, V > *entry)
 
void clear ()
 
V * operator[] (K key)
 
V * operator[] (K *key)
 
DynaMapIter< K, V > begin ()
 
DynaMapIter< K, V > end ()
 
MapKeyIter< K, V > keys ()
 
MapValueIter< K, V > values ()
 
- Public Member Functions inherited from ICopyable< DynaHashMap< K, V > >
 ICopyable ()=default
 
virtual ~ICopyable ()=default
 

Static Public Attributes

static K nullObjectInstance
 
static K * nullObject = &nullObjectInstance
 

Protected Member Functions

void _init (int size)
 
int _getHashCode (const K *key) const
 
void _reHash (int newCapacity)
 
int _getTableIndex (K *key)
 

Protected Attributes

MapEntry< K, V > ** _table = nullptr
 
int _count
 
int _capacity
 
int _freeCells
 
int _modCount
 
bool _ownsMembers
 

Static Protected Attributes

static MapEntry< K, V > deletedObjectInstance = MapEntry<K,V>(DynaHashMap<K,V>::nullObject, nullptr, false)
 
static MapEntry< K, V > * deletedObject = &deletedObjectInstance
 
static constexpr int INITIAL_SIZE = 3
 
static constexpr double LOAD_FACTOR = 0.75
 

Friends

class MapEntry< K, V >
 
class DynaMapIter< K, V >
 
class MapKeyIter< K, V >
 
class MapValueIter< K, V >
 

Detailed Description

template<typename K, typename V>
class DynaHashMap< K, V >

Template for a HashMap object

Template Parameters
Ktype of all Keys in map
Vtype of all Values in map

Constructor & Destructor Documentation

◆ DynaHashMap() [1/3]

template<typename K , typename V >
DynaHashMap< K, V >::DynaHashMap ( )
explicit

DynaHashMap Constructor

Template Parameters
K
V

◆ DynaHashMap() [2/3]

template<typename K , typename V >
DynaHashMap< K, V >::DynaHashMap ( int  size)
explicit

◆ ~DynaHashMap()

template<typename K , typename V >
DynaHashMap< K, V >::~DynaHashMap ( )
virtual

◆ DynaHashMap() [3/3]

template<typename K, typename V>
DynaHashMap< K, V >::DynaHashMap ( const DynaHashMap< K, V > &  other)

Member Function Documentation

◆ _getHashCode()

template<typename K, typename V >
int DynaHashMap< K, V >::_getHashCode ( const K *  key) const
protected

◆ _getTableIndex()

template<typename K, typename V >
int DynaHashMap< K, V >::_getTableIndex ( K *  key)
protected

◆ _init()

template<typename K , typename V >
void DynaHashMap< K, V >::_init ( int  size)
protected

◆ _reHash()

template<typename K , typename V >
void DynaHashMap< K, V >::_reHash ( int  newCapacity)
protected

◆ begin()

template<typename K , typename V >
DynaMapIter< K, V > DynaHashMap< K, V >::begin ( )

◆ capacity()

template<typename K, typename V>
int DynaHashMap< K, V >::capacity ( ) const
inline

◆ clear()

template<typename K , typename V >
void DynaHashMap< K, V >::clear ( )

◆ containsKey() [1/2]

template<typename K, typename V>
bool DynaHashMap< K, V >::containsKey ( K *  key)
inline

◆ containsKey() [2/2]

template<typename K, typename V>
bool DynaHashMap< K, V >::containsKey ( key)
inline

◆ copy()

template<typename K , typename V >
DynaHashMap< K, V > * DynaHashMap< K, V >::copy ( )
overridevirtual

◆ count()

template<typename K, typename V>
int DynaHashMap< K, V >::count ( ) const
inline

◆ deleteEntry() [1/2]

template<typename K, typename V >
void DynaHashMap< K, V >::deleteEntry ( K *  key)

◆ deleteEntry() [2/2]

template<typename K, typename V >
void DynaHashMap< K, V >::deleteEntry ( key)

◆ end()

template<typename K , typename V >
DynaMapIter< K, V > DynaHashMap< K, V >::end ( )

◆ freeCells()

template<typename K, typename V>
int DynaHashMap< K, V >::freeCells ( ) const
inline

◆ get() [1/2]

template<typename K, typename V >
V * DynaHashMap< K, V >::get ( K *  key)

◆ get() [2/2]

template<typename K, typename V >
V * DynaHashMap< K, V >::get ( key)

◆ getEntry() [1/2]

template<typename K, typename V >
MapEntry< K, V > * DynaHashMap< K, V >::getEntry ( K *  key)

DynaHashMap get Entry based on Key

Template Parameters
K
V
Parameters
key
Returns

◆ getEntry() [2/2]

template<typename K, typename V >
MapEntry< K, V > * DynaHashMap< K, V >::getEntry ( key)

◆ isEmpty()

template<typename K, typename V>
bool DynaHashMap< K, V >::isEmpty ( ) const
inline

◆ isOwnsMembers()

template<typename K, typename V>
bool DynaHashMap< K, V >::isOwnsMembers ( ) const
inline

◆ keys()

template<typename K , typename V >
MapKeyIter< K, V > DynaHashMap< K, V >::keys ( )

◆ operator[]() [1/2]

template<typename K, typename V>
V* DynaHashMap< K, V >::operator[] ( key)
inline

◆ operator[]() [2/2]

template<typename K, typename V>
V* DynaHashMap< K, V >::operator[] ( K *  key)
inline

◆ put() [1/2]

template<typename K, typename V>
V * DynaHashMap< K, V >::put ( K *  key,
V *  value 
)

◆ put() [2/2]

template<typename K, typename V>
V * DynaHashMap< K, V >::put ( key,
V *  value 
)

◆ remove() [1/2]

template<typename K, typename V >
V * DynaHashMap< K, V >::remove ( K *  key)

◆ remove() [2/2]

template<typename K, typename V >
V * DynaHashMap< K, V >::remove ( key)

◆ removeEntry()

template<typename K, typename V>
MapEntry< K, V > * DynaHashMap< K, V >::removeEntry ( MapEntry< K, V > *  entry)

◆ setOwnsMembers()

template<typename K, typename V>
void DynaHashMap< K, V >::setOwnsMembers ( bool  ownsMembers)
inline

◆ values()

template<typename K , typename V >
MapValueIter< K, V > DynaHashMap< K, V >::values ( )

Friends And Related Function Documentation

◆ DynaMapIter< K, V >

template<typename K, typename V>
friend class DynaMapIter< K, V >
friend

◆ MapEntry< K, V >

template<typename K, typename V>
friend class MapEntry< K, V >
friend

◆ MapKeyIter< K, V >

template<typename K, typename V>
friend class MapKeyIter< K, V >
friend

◆ MapValueIter< K, V >

template<typename K, typename V>
friend class MapValueIter< K, V >
friend

Member Data Documentation

◆ _capacity

template<typename K, typename V>
int DynaHashMap< K, V >::_capacity
protected

◆ _count

template<typename K, typename V>
int DynaHashMap< K, V >::_count
protected

◆ _freeCells

template<typename K, typename V>
int DynaHashMap< K, V >::_freeCells
protected

◆ _modCount

template<typename K, typename V>
int DynaHashMap< K, V >::_modCount
protected

◆ _ownsMembers

template<typename K, typename V>
bool DynaHashMap< K, V >::_ownsMembers
protected

◆ _table

template<typename K, typename V>
MapEntry<K,V>** DynaHashMap< K, V >::_table = nullptr
protected

◆ deletedObject

template<typename K, typename V>
MapEntry< K, V > * DynaHashMap< K, V >::deletedObject = &deletedObjectInstance
staticprotected

◆ deletedObjectInstance

template<typename K, typename V>
MapEntry< K, V > DynaHashMap< K, V >::deletedObjectInstance = MapEntry<K,V>(DynaHashMap<K,V>::nullObject, nullptr, false)
staticprotected

◆ INITIAL_SIZE

template<typename K, typename V>
constexpr int DynaHashMap< K, V >::INITIAL_SIZE = 3
staticprotected

◆ LOAD_FACTOR

template<typename K, typename V>
constexpr double DynaHashMap< K, V >::LOAD_FACTOR = 0.75
staticprotected

◆ nullObject

template<typename K, typename V>
K * DynaHashMap< K, V >::nullObject = &nullObjectInstance
static

◆ nullObjectInstance

template<typename K, typename V>
K DynaHashMap< K, V >::nullObjectInstance
static

The documentation for this class was generated from the following files: