公共成员函数
|
|
LockedResourceMap
()
|
|
LockedResourceMap
(
LockedResourceMap
&&
src
)
|
|
MAXON_OPERATOR_MOVE_ASSIGNMENT
(
LockedResourceMap
)
|
Result
< ENTRY & >
|
CreateOrGetEntry
(const HASHTYPE &hashKey, const
Delegate
<
Result
< void >(const HASHTYPE &hashKey, ENTRY *createResource)> &createdCallback)
|
Result
< ENTRY >
|
CreateOrGetEntryCopy
(const HASHTYPE &hashKey, const
Delegate
<
Result
< void >(const HASHTYPE &hashKey, ENTRY *createResource)> &createdCallback)
|
Spinlock
&
|
GetLock
()
|
Bool
|
IsChanged
() const
|
void
|
SetChanged
(
Bool
changed)
|
|
HashMap
()
|
|
HashMap
(const
DefaultAllocator
&alloc)
|
|
HashMap
(
HashMap
&&src)
|
|
~HashMap
()
|
|
MAXON_OPERATOR_MOVE_ASSIGNMENT
(
HashMap
)
|
ResultMem
|
SetCapacityHint
(
Int
capacity,
COLLECTION_RESIZE_FLAGS
resizeFlags=
COLLECTION_RESIZE_FLAGS::ON_GROW_RESERVE_CAPACITY
)
|
ResultMem
|
ResizeTable
(
Int
capacity)
|
void
|
重置
()
|
void
|
Flush
()
|
Int
|
GetCount
() const
|
Int
|
GetTableSize
() const
|
Int
|
GetMemorySize
() const
|
Int
|
GetNonEmptyBucketCount
() const
|
Entry *
|
GetNonEmptyBucket
(
Int
i)
|
const Entry *
|
GetNonEmptyBucket
(
Int
i) const
|
Int
|
GetOperationCountForSearch
() const
|
SFINAEHelper
<
Bool
, typename MAP::IsHashMap >::type
|
IsEqualImpl
(const
MAP
&other, COMPARE &&cmp,
OverloadRank1
) const
|
Entry *
|
Find
(const
KEY
&key)
|
const Entry *
|
Find
(const
KEY
&key) const
|
LockedResourceHelper
< ENTRY > *
|
FindValue
(const
KEY
&key)
|
const
LockedResourceHelper
< ENTRY > *
|
FindValue
(const
KEY
&key) const
|
Result
< Entry * >
|
InsertCtor
(
KEY
&&key, C &&constructor,
Bool
&created=
BoolLValue
())
|
ResultRef
< Entry >
|
InsertEntry
(const HASHTYPE &key,
Bool
&created=
BoolLValue
())
|
ResultRef
< Entry >
|
InsertEntry
(HASHTYPE &&key,
Bool
&created=
BoolLValue
())
|
ResultRef
< Entry >
|
InsertEntry
(
KEY
&&key,
Bool
&created=
BoolLValue
())
|
ResultRef
<
LockedResourceHelper
< ENTRY > >
|
InsertKey
(const HASHTYPE &key,
Bool
&created=
BoolLValue
())
|
ResultRef
<
LockedResourceHelper
< ENTRY > >
|
InsertKey
(HASHTYPE &&key,
Bool
&created=
BoolLValue
())
|
ResultRef
<
LockedResourceHelper
< ENTRY > >
|
InsertKey
(
KEY
&&key,
Bool
&created=
BoolLValue
())
|
Result
< Entry * >
|
InsertLambda
(
KEY
&&key, LAMBDA &&lambda)
|
ResultRef
< Entry >
|
Insert
(
KEY
&&key, const
LockedResourceHelper
< ENTRY > &value,
Bool
&created=
BoolLValue
())
|
ResultRef
< Entry >
|
Insert
(
KEY
&&key,
LockedResourceHelper
< ENTRY > &&value,
Bool
&created=
BoolLValue
())
|
ResultRef
< Entry >
|
InsertMultiEntry
(
KEY
&&key)
|
ResultMem
|
InsertMultiEntry
(Entry *e,
UInt
hash)
|
ResultOk
< void >
|
Erase
(const Entry *entry,
Bool
deleteEntry=true)
|
ResultOk
< void >
|
Erase
(Entry *entry,
Bool
deleteEntry=true)
|
ResultOk
< void >
|
Erase
(const Entry &entry,
Bool
deleteEntry=true)
|
ResultOk
< void >
|
Erase
(Entry &entry,
Bool
deleteEntry=true)
|
ResultOk
<
Bool
>
|
Erase
(const
KEY
&key)
|
IteratorTemplate< SUPER >
|
Erase
(const IteratorTemplate< SUPER > &it,
Bool
deleteEntry=true)
|
void
|
DeleteEntry
(const Entry *e)
|
Result
< void >
|
IntersectImpl
(
SET
&&set,
OverloadRank0
)
|
Result
< void >
|
CopyFromImpl
(HASHMAP &&other,
COLLECTION_RESIZE_FLAGS
resizeFlags,
OverloadRank1
)
|
SFINAEHelper
<
Result
< void >, typename std::remove_reference<
S
>::type::MapType >::type
|
AppendAllImpl
(
S
&&src,
COLLECTION_RESIZE_FLAGS
resizeFlags,
Bool
overwrite,
OverloadRank1
)
|
MultiEntryIterator< false >
|
FindAll
(const HASHTYPE &key)
|
MultiEntryIterator< true >
|
FindAll
(const HASHTYPE &key) const
|
KeyIterator
|
GetKeys
()
|
ConstKeyIterator
|
GetKeys
() const
|
ValueIterator
|
GetValues
()
|
ConstValueIterator
|
GetValues
() const
|
Iterator
|
Begin
()
|
ConstIterator
|
Begin
() const
|
Iterator
|
End
()
|
ConstIterator
|
End
() const
|
Iterator
|
GetIterator
(const Entry *e)
|
ConstIterator
|
GetIterator
(const Entry *e) const
|
SFINAEHelper
<
String
,
LockedResourceHelper
< ENTRY > >::type
|
ToString
(const
FormatStatement
*formatStatement=nullptr) const
|
const Entry *
|
FindEntryImpl
(
UInt
hash, const
KEY
&key) const
|
Entry *
|
FindEntryImpl
(
UInt
hash, const
KEY
&key)
|
MAXON_ATTRIBUTE_FORCE_INLINE
|
MapBase
(ARGS &&... args)
|
MapImpl
<
HashMap
< HASHTYPE,
LockedResourceHelper
< ENTRY >,
DefaultCompare
,
HashMapKeyValuePair
,
DefaultAllocator
, HASHMAP_MODE::DEFAULT, 16,(HASHMAP_MODE::DEFAULT==
HASHMAP_MODE::SYNCHRONIZED
) ? 0 :10 > & >
|
ToMap
()
|
MapImpl
< const
HashMap
< HASHTYPE,
LockedResourceHelper
< ENTRY >,
DefaultCompare
,
HashMapKeyValuePair
,
DefaultAllocator
, HASHMAP_MODE::DEFAULT, 16,(HASHMAP_MODE::DEFAULT==
HASHMAP_MODE::SYNCHRONIZED
) ? 0 :10 > & >
|
ToMap
() const
|
MAXON_ATTRIBUTE_FORCE_INLINE
|
operator MapImpl< HashMap< HASHTYPE, LockedResourceHelper< ENTRY >, DefaultCompare, HashMapKeyValuePair, DefaultAllocator, HASHMAP_MODE::DEFAULT, 16,(HASHMAP_MODE::DEFAULT==HASHMAP_MODE::SYNCHRONIZED) ? 0 :10 > & >
()
|
MAXON_ATTRIBUTE_FORCE_INLINE
|
operator MapImpl< const HashMap< HASHTYPE, LockedResourceHelper< ENTRY >, DefaultCompare, HashMapKeyValuePair, DefaultAllocator, HASHMAP_MODE::DEFAULT, 16,(HASHMAP_MODE::DEFAULT==HASHMAP_MODE::SYNCHRONIZED) ? 0 :10 > & >
() const
|
MAXON_ATTRIBUTE_FORCE_INLINE
|
MapBase0
(ARGS &&... args)
|
MAXON_ATTRIBUTE_FORCE_INLINE
Bool
|
Contains
(typename
ByValueParam
< HASHTYPE >::type key) const
|
MAXON_ATTRIBUTE_FORCE_INLINE
SFINAEHelper
<
Bool
, typename PAIR::KeyType >::type
|
Contains
(const PAIR &pair) const
|
ResultRef
<
LockedResourceHelper
< ENTRY > >
|
Append
(const HASHTYPE &key)
|
SFINAEHelper
<
ResultRef
<
LockedResourceHelper
< ENTRY > >, typename PAIR::KeyType >::type
|
Append
(const PAIR &pair)
|
Result
< void >
|
添加
(COLLECTION2 &&other,
COLLECTION_RESIZE_FLAGS
resizeFlags=
COLLECTION_RESIZE_FLAGS::ON_GROW_RESERVE_CAPACITY
)
|
Result
< void >
|
AppendAll
(COLLECTION2 &&other,
COLLECTION_RESIZE_FLAGS
resizeFlags=
COLLECTION_RESIZE_FLAGS::ON_GROW_RESERVE_CAPACITY
)
|
Result
< void >
|
AppendAllInverse
(COLLECTION2 &&other)
|
Bool
|
ContainsAllImpl
(COLLECTION2 &&other,
OverloadRank0
) const
|
Result
< void >
|
SubtractImpl
(COLLECTION2 &&other,
OverloadRank0
)
|
Bool
|
IsEqualImpl
(const COLLECTION2 &other, COMPARE &&cmp,
OverloadRank0
) const
|
HashInt
|
GetHashCode
() const
|
MAXON_ATTRIBUTE_FORCE_INLINE
|
BaseCollection
(ARGS &&... args)
|
MAXON_ATTRIBUTE_FORCE_INLINE
std::enable_if< maxon::IsCollection< COLLECTION2 >::value,
Bool
>::type
|
operator==
(const COLLECTION2 &other) const
|
MAXON_ATTRIBUTE_FORCE_INLINE
std::enable_if< maxon::IsCollection< COLLECTION2 >::value,
Bool
>::type
|
operator!=
(const COLLECTION2 &other) const
|
MAXON_ATTRIBUTE_FORCE_INLINE
std::enable_if< maxon::IsCollection< COLLECTION2 >::value &&!
STD_IS_REPLACEMENT
(same, typename std::decay< COMPARE >::type,
EQUALITY
),
Bool
>::type
|
IsEqual
(const COLLECTION2 &other, COMPARE &&cmp=COMPARE()) const
|
MAXON_ATTRIBUTE_FORCE_INLINE
Result
< void >
|
AppendAll
(COLLECTION2 &&other,
COLLECTION_RESIZE_FLAGS
resizeFlags=
COLLECTION_RESIZE_FLAGS::ON_GROW_RESERVE_CAPACITY
)
|
MAXON_ATTRIBUTE_FORCE_INLINE
Result
< void >
|
CopyFrom
(COLLECTION2 &&other,
COLLECTION_RESIZE_FLAGS
resizeFlags=
COLLECTION_RESIZE_FLAGS::FIT_TO_SIZE
)
|
MAXON_ATTRIBUTE_FORCE_INLINE
Result
< void >
|
Subtract
(COLLECTION2 &&other)
|
MAXON_ATTRIBUTE_FORCE_INLINE
Result
< void >
|
Intersect
(const COLLECTION2 &other)
|
Bool
|
Intersects
(const COLLECTION2 &other) const
|
MAXON_ATTRIBUTE_FORCE_INLINE
Result
< void >
|
CopyFromImpl
(COLLECTION2 &&other,
COLLECTION_RESIZE_FLAGS
resizeFlags,
OverloadRank0
)
|
Result
< void >
|
AppendAllImpl
(COLLECTION2 &&other,
COLLECTION_RESIZE_FLAGS
resizeFlags,
Bool
overwrite,
OverloadRank0
)
|
Result
< void >
|
IntersectImpl
(COLLECTION2 &&other,
OverloadRank0
)
|
MAXON_ATTRIBUTE_FORCE_INLINE
Bool
|
IsEmpty
() const
|
MAXON_ATTRIBUTE_FORCE_INLINE
Bool
|
IsPopulated
() const
|
String
|
ToString
(const
FormatStatement
*formatStatement=nullptr) const
|
MAXON_ATTRIBUTE_FORCE_INLINE
Bool
|
ContainsAll
(COLLECTION2 &&other) const
|
Bool
|
ContainsAllImpl
(COLLECTION2 &&other,
OverloadRank0
) const
|
Additional Inherited Members
|
using
|
Super
=
MapBase
<
HashMap
, HASHTYPE,
LockedResourceHelper
< ENTRY >,
EmptyClass
,
DefaultCompare
>
|
using
|
HashType
=
DefaultCompare
|
using
|
IsHashMap
= std::true_type
|
using
|
Iterator
= IteratorTemplate< EntryIteratorBase >
|
using
|
ConstIterator
= ConstIteratorTemplate< EntryIteratorBase >
|
using
|
KeyIterator
= IteratorTemplate< KeyIteratorBase >
|
using
|
ConstKeyIterator
= ConstIteratorTemplate< KeyIteratorBase >
|
using
|
ValueIterator
= IteratorTemplate< ValueIteratorBase >
|
using
|
ConstValueIterator
= ConstIteratorTemplate< ValueIteratorBase >
|
using
|
MapType
=
HashMap
< HASHTYPE,
LockedResourceHelper
< ENTRY >,
DefaultCompare
,
HashMapKeyValuePair
,
DefaultAllocator
, HASHMAP_MODE::DEFAULT, 16,(HASHMAP_MODE::DEFAULT==
HASHMAP_MODE::SYNCHRONIZED
) ? 0 :10 >
|
using
|
Super
=
BaseCollection
<
HashMap
< HASHTYPE,
LockedResourceHelper
< ENTRY >,
DefaultCompare
,
HashMapKeyValuePair
,
DefaultAllocator
, HASHMAP_MODE::DEFAULT, 16,(HASHMAP_MODE::DEFAULT==
HASHMAP_MODE::SYNCHRONIZED
) ? 0 :10 >,
EmptyClass
>
|
using
|
KeyType
= HASHTYPE
|
using
|
ValueType
=
LockedResourceHelper
< ENTRY >
|
using
|
IsCollection
= std::true_type
|
static const Entry *
|
GetEntry
(const
LockedResourceHelper
< ENTRY > *value)
|
static Entry *
|
GetEntry
(typename std::remove_const<
LockedResourceHelper
< ENTRY > >::type *value)
|
static const HASHTYPE &
|
GetMapKey
(const HASHTYPE &key)
|
static const HASHTYPE &
|
GetMapKey
(const PAIR &pair)
|
static const
COLLECTION_KIND
|
KIND
|
using
|
Bucket
= typename std::conditional< HASHMAP_MODE::DEFAULT==HASHMAP_MODE::DEFAULT, DefaultBucket, SimpleBucket >::type
|
Bool
|
ResizeTableImpl
(
Int
length)
|
Entry *
|
AddEntryImpl
(Entry *e, Entry *prev,
Bool
&created,
Bool
multi, void *)
|
Entry *
|
AddEntryImpl
(Entry *e, Entry *prev,
Bool
&created,
Bool
multi,
Char
*)
|
|
MAXON_DISALLOW_COPY_AND_ASSIGN
(
HashMap
)
|
const
Char
*
|
GetSignature
(void *) const
|
const
Char
*
|
GetSignature
(
Char
*) const
|
static Entry *
|
LoadRelaxed
(
AtomicPtr
< Entry > &e)
|
static Entry *
|
LoadRelaxed
(Entry *e)
|
static Entry *
|
LoadAcquire
(
AtomicPtr
< Entry > &e)
|
static Entry *
|
LoadAcquire
(Entry *e)
|
static void
|
StoreRelaxed
(
AtomicPtr
< Entry > &e, Entry *newValue)
|
static void
|
StoreRelaxed
(Entry *&e, Entry *newValue)
|
static
Bool
|
TryCompareAndSwap
(
AtomicPtr
< Entry > &e, Entry *newValue, Entry *compare)
|
static
Bool
|
TryCompareAndSwap
(Entry *&e, Entry *newValue, Entry *compare)
|
DefaultAllocator
|
_allocator
|
Bucket
*
|
_table
|
Int
|
_tableLengthM1
|
Bucket
**
|
_nonemptyBuckets
|
Int
|
_nonemptyBucketCount
|
Int
|
_size
|
Int
|
_resizeThreshold
|
const
Float
|
_obsoleteLoadFactor
|
Creates the value if the key is not created yet or gets the value for the given hash key.
Creates the value if the key is not created yet or gets a copy of the value for the given hash key. This function is ideal to use with reference counted objects (e.g. ImageLayerRef, ObjectRef).