MapImpl< MAP > Class Template Reference

#include <map.h>

Inheritance diagram for MapImpl< MAP >:

Public Types

using MapType = typename std::decay< MAP >::type
 
using KeyType = typename MapType::KeyType
 
using ValueType = typename ConstIf< typename MapType::ValueType, CONSTMAP >::type
 
using NonConstValueType = typename std::remove_const< ValueType >::type
 
using Super = typename std::conditional< CONSTMAP||!REFERENCE, MapInterface< KeyType, ValueType >, NonConstMap< KeyType, ValueType > >::type
 
using Interface = typename Super::Interface
 
using Iterator = typename Interface::Iterator
 
using ConstIterator = typename Interface::ConstIterator
 

Public Member Functions

 MAXON_IMPLEMENTATION_SIMPLE (MapImpl, typename)
 
 MapImpl ()
 
 MapImpl (MAP &&map)
 
 MapImpl (MapImpl &&src)
 
Int GetCount () const
 
ResultRef< NonConstValueTypeInsertKey (const KeyType &key, Bool &created=BoolLValue())
 
ResultRef< NonConstValueTypeInsertKey (KeyType &&key, Bool &created=BoolLValue())
 
NonConstValueTypeFindValue (const KeyType &key)
 
const ValueTypeFindValue (const KeyType &key) const
 
Result< BoolErase (const KeyType &key)
 
Iterator Erase (const Iterator &iterator)
 
Result< void > CopyFrom (const Interface &other)
 
Result< Interface * > Clone (Bool cloneElements) const
 
String ToString (const FormatStatement *formatStatement) const
 
Int GetMemorySize () const
 
const DataTypeGetKeyDataType () const
 
const DataTypeGetValueDataType () const
 
void Reset ()
 
void Flush ()
 
void IteratorInit (Iterator *it, Bool end)
 
void IteratorInit (ConstIterator *it, Bool end) const
 
void IteratorInitMove (Iterator *dest, Iterator *src) const
 
void IteratorInitMove (ConstIterator *dest, ConstIterator *src) const
 
void IteratorFree (Iterator *it) const
 
void IteratorFree (ConstIterator *it) const
 
Bool IteratorIsEqual (const Iterator *a, const Iterator *b) const
 
Bool IteratorIsEqual (const ConstIterator *a, const ConstIterator *b) const
 
void IteratorInc (Iterator *it) const
 
void IteratorInc (ConstIterator *it) const
 
Pair< const KeyType &, ValueType & > IteratorGet (const Iterator *it) const
 
Pair< const KeyType &, const ValueType & > IteratorGet (const ConstIterator *it) const
 
std::add_lvalue_reference< MAP >::type GetMap ()
 
const MapTypeGetMap () const
 

Static Public Attributes

static const Bool CONSTMAP
 
static const Bool REFERENCE
 

Private Member Functions

 MAXON_DISALLOW_COPY_AND_ASSIGN (MapImpl)
 

Static Private Member Functions

template<typename T >
static void Destruct (const T &object)
 
static MapType::Iterator & GetIterator (Iterator *it)
 
static MapType::ConstIterator & GetIterator (ConstIterator *it)
 
static const MapType::Iterator & GetIterator (const Iterator *it)
 
static const MapType::ConstIterator & GetIterator (const ConstIterator *it)
 

Private Attributes

MAP _map
 

Member Typedef Documentation

◆ MapType

using MapType = typename std::decay<MAP>::type

◆ KeyType

using KeyType = typename MapType::KeyType

◆ ValueType

using ValueType = typename ConstIf<typename MapType::ValueType, CONSTMAP>::type

◆ NonConstValueType

using NonConstValueType = typename std::remove_const<ValueType>::type

◆ Super

using Super = typename std::conditional<CONSTMAP || !REFERENCE, MapInterface<KeyType, ValueType>, NonConstMap<KeyType, ValueType> >::type

◆ Interface

using Interface = typename Super::Interface

◆ Iterator

using Iterator = typename Interface::Iterator

◆ ConstIterator

using ConstIterator = typename Interface::ConstIterator

Constructor & Destructor Documentation

◆ MapImpl() [1/3]

MapImpl ( )

◆ MapImpl() [2/3]

MapImpl ( MAP &&  map)
explicit

◆ MapImpl() [3/3]

MapImpl ( MapImpl< MAP > &&  src)

Member Function Documentation

◆ MAXON_IMPLEMENTATION_SIMPLE()

MAXON_IMPLEMENTATION_SIMPLE ( MapImpl< MAP ,
typename   
)

◆ GetCount()

Int GetCount ( void  ) const

◆ InsertKey() [1/2]

ResultRef<NonConstValueType> InsertKey ( const KeyType key,
Bool created = BoolLValue() 
)

◆ InsertKey() [2/2]

ResultRef<NonConstValueType> InsertKey ( KeyType &&  key,
Bool created = BoolLValue() 
)

◆ FindValue() [1/2]

NonConstValueType* FindValue ( const KeyType key)

◆ FindValue() [2/2]

const ValueType* FindValue ( const KeyType key) const

◆ Erase() [1/2]

Result<Bool> Erase ( const KeyType key)

◆ Erase() [2/2]

Iterator Erase ( const Iterator iterator)

◆ CopyFrom()

Result<void> CopyFrom ( const Interface other)

◆ Clone()

Result<Interface*> Clone ( Bool  cloneElements) const

◆ ToString()

String ToString ( const FormatStatement formatStatement) const

◆ GetMemorySize()

Int GetMemorySize ( void  ) const

◆ GetKeyDataType()

const DataType& GetKeyDataType ( ) const

◆ GetValueDataType()

const DataType& GetValueDataType ( ) const

◆ Reset()

void Reset ( void  )

◆ Flush()

void Flush ( void  )

◆ IteratorInit() [1/2]

void IteratorInit ( Iterator it,
Bool  end 
)

◆ IteratorInit() [2/2]

void IteratorInit ( ConstIterator it,
Bool  end 
) const

◆ IteratorInitMove() [1/2]

void IteratorInitMove ( Iterator dest,
Iterator src 
) const

◆ IteratorInitMove() [2/2]

void IteratorInitMove ( ConstIterator dest,
ConstIterator src 
) const

◆ IteratorFree() [1/2]

void IteratorFree ( Iterator it) const

◆ IteratorFree() [2/2]

void IteratorFree ( ConstIterator it) const

◆ IteratorIsEqual() [1/2]

Bool IteratorIsEqual ( const Iterator a,
const Iterator b 
) const

◆ IteratorIsEqual() [2/2]

Bool IteratorIsEqual ( const ConstIterator a,
const ConstIterator b 
) const

◆ IteratorInc() [1/2]

void IteratorInc ( Iterator it) const

◆ IteratorInc() [2/2]

void IteratorInc ( ConstIterator it) const

◆ IteratorGet() [1/2]

Pair<const KeyType&, ValueType&> IteratorGet ( const Iterator it) const

◆ IteratorGet() [2/2]

Pair<const KeyType&, const ValueType&> IteratorGet ( const ConstIterator it) const

◆ GetMap() [1/2]

std::add_lvalue_reference<MAP>::type GetMap ( )

◆ GetMap() [2/2]

const MapType& GetMap ( ) const

◆ Destruct()

static void Destruct ( const T &  object)
staticprivate

◆ GetIterator() [1/4]

static MapType::Iterator& GetIterator ( Iterator it)
staticprivate

◆ GetIterator() [2/4]

static MapType::ConstIterator& GetIterator ( ConstIterator it)
staticprivate

◆ GetIterator() [3/4]

static const MapType::Iterator& GetIterator ( const Iterator it)
staticprivate

◆ GetIterator() [4/4]

static const MapType::ConstIterator& GetIterator ( const ConstIterator it)
staticprivate

◆ MAXON_DISALLOW_COPY_AND_ASSIGN()

MAXON_DISALLOW_COPY_AND_ASSIGN ( MapImpl< MAP )
private

Member Data Documentation

◆ CONSTMAP

const Bool CONSTMAP
static

◆ REFERENCE

const Bool REFERENCE
static

◆ _map

MAP _map
private