MADNESS  0.10.1
Public Types | Public Member Functions | Private Member Functions | Private Attributes | Friends | List of all members
madness::Hash_private::HashAccessor< hashT, lockmode > Class Template Reference

#include <worldhashmap.h>

Inheritance diagram for madness::Hash_private::HashAccessor< hashT, lockmode >:
Inheritance graph
[legend]
Collaboration diagram for madness::Hash_private::HashAccessor< hashT, lockmode >:
Collaboration graph
[legend]

Public Types

typedef std::conditional< std::is_const< hashT >::value, typename std::add_const< typename hashT::datumT >::type, typename hashT::datumT >::type datumT
 
typedef std::conditional< std::is_const< hashT >::value, typename std::add_const< typename hashT::entryT >::type, typename hashT::entryT >::type entryT
 
typedef datumTpointer
 
typedef datumTreference
 
typedef datumT value_type
 

Public Member Functions

 HashAccessor ()
 
 HashAccessor (entryT *entry)
 
 ~HashAccessor ()
 
datumToperator* () const
 
datumToperator-> () const
 
void release ()
 

Private Member Functions

void convert_read_lock_to_write_lock ()
 
void set (entryT *entry)
 Used by Hash to set entry (assumed that it has the lock already) More...
 
void unset ()
 Used by Hash after having already released lock and deleted entry. More...
 
- Private Member Functions inherited from NO_DEFAULTS
 NO_DEFAULTS ()
 
 NO_DEFAULTS (const NO_DEFAULTS &)=delete
 
 NO_DEFAULTS (NO_DEFAULTS &&)=delete
 
NO_DEFAULTSoperator= (const NO_DEFAULTS &)=delete
 
NO_DEFAULTSoperator= (NO_DEFAULTS &&)=delete
 

Private Attributes

entryTentry
 
bool gotlock
 

Friends

template<class a , class b , class c >
class madness::ConcurrentHashMap
 

Member Typedef Documentation

◆ datumT

template<class hashT , int lockmode>
typedef std::conditional<std::is_const<hashT>::value, typename std::add_const<typename hashT::datumT>::type, typename hashT::datumT>::type madness::Hash_private::HashAccessor< hashT, lockmode >::datumT

◆ entryT

template<class hashT , int lockmode>
typedef std::conditional<std::is_const<hashT>::value, typename std::add_const<typename hashT::entryT>::type, typename hashT::entryT>::type madness::Hash_private::HashAccessor< hashT, lockmode >::entryT

◆ pointer

template<class hashT , int lockmode>
typedef datumT* madness::Hash_private::HashAccessor< hashT, lockmode >::pointer

◆ reference

template<class hashT , int lockmode>
typedef datumT& madness::Hash_private::HashAccessor< hashT, lockmode >::reference

◆ value_type

template<class hashT , int lockmode>
typedef datumT madness::Hash_private::HashAccessor< hashT, lockmode >::value_type

Constructor & Destructor Documentation

◆ HashAccessor() [1/2]

template<class hashT , int lockmode>
madness::Hash_private::HashAccessor< hashT, lockmode >::HashAccessor ( )
inline

◆ HashAccessor() [2/2]

template<class hashT , int lockmode>
madness::Hash_private::HashAccessor< hashT, lockmode >::HashAccessor ( entryT entry)
inline

◆ ~HashAccessor()

template<class hashT , int lockmode>
madness::Hash_private::HashAccessor< hashT, lockmode >::~HashAccessor ( )
inline

Member Function Documentation

◆ convert_read_lock_to_write_lock()

template<class hashT , int lockmode>
void madness::Hash_private::HashAccessor< hashT, lockmode >::convert_read_lock_to_write_lock ( )
inlineprivate

◆ operator*()

template<class hashT , int lockmode>
datumT& madness::Hash_private::HashAccessor< hashT, lockmode >::operator* ( ) const
inline

◆ operator->()

template<class hashT , int lockmode>
datumT* madness::Hash_private::HashAccessor< hashT, lockmode >::operator-> ( ) const
inline

◆ release()

template<class hashT , int lockmode>
void madness::Hash_private::HashAccessor< hashT, lockmode >::release ( )
inline

◆ set()

template<class hashT , int lockmode>
void madness::Hash_private::HashAccessor< hashT, lockmode >::set ( entryT entry)
inlineprivate

◆ unset()

template<class hashT , int lockmode>
void madness::Hash_private::HashAccessor< hashT, lockmode >::unset ( )
inlineprivate

Used by Hash after having already released lock and deleted entry.

References madness::Hash_private::HashAccessor< hashT, lockmode >::gotlock.

Referenced by madness::ConcurrentHashMap< keyT, valueT, hashfunT >::erase().

Friends And Related Function Documentation

◆ madness::ConcurrentHashMap

template<class hashT , int lockmode>
template<class a , class b , class c >
friend class madness::ConcurrentHashMap
friend

Member Data Documentation

◆ entry

template<class hashT , int lockmode>
entryT* madness::Hash_private::HashAccessor< hashT, lockmode >::entry
private

◆ gotlock

template<class hashT , int lockmode>
bool madness::Hash_private::HashAccessor< hashT, lockmode >::gotlock
private

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