TreeMap< K, V, MAP, COW > Class Template Reference

#include <treemap.h>

Inheritance diagram for TreeMap< K, V, MAP, COW >:

Public Types

using  KeyType = K
using  ValueType = V
using  Super = TreeMapParent < TreeMap < K, V, MAP, COW >, COW >
using  Child = typename std::conditional< COW, StrongCOWRef < TreeMap >, TreeMap >::type
using  Ref = typename std::conditional< COW, StrongCOWRef < TreeMap >, void >::type
using  ChildrenMap = typename MAP::template Type< K, Child >

公共成员函数

  TreeMap ()=default
  TreeMap ( TreeMap && src )
  MAXON_OPERATOR_MOVE_ASSIGNMENT ( TreeMap )
Result < void >  CopyFrom (const TreeMap & src )
void  Flush ()
void  重置 ()
Result < TreeMap & >  InsertChild (const K &key, Bool withValue=true)
template<typename PATH , typename = typename std::enable_if<!STD_IS_REPLACEMENT(base_of, K, typename std::decay<PATH>::type)>::type>
Result < TreeMap & >  InsertEntry (PATH &&key, Bool withValue=true)
template<typename PATH , typename = typename std::enable_if<!STD_IS_REPLACEMENT(base_of, K, typename std::decay<PATH>::type)>::type>
Result < TreeMap & >  Insert (PATH &&key, const V &value)
template<typename PATH , typename = typename std::enable_if<!STD_IS_REPLACEMENT(base_of, K, typename std::decay<PATH>::type)>::type>
Result < TreeMap & >  Insert (PATH &&key, V &&value)
template<typename PATH >
Result < V & >  InsertKey (PATH &&key, Bool &created= BoolLValue ())
const TreeMap FindChild (const K &key) const
TreeMap FindChild (const K &key)
template<typename PATH >
const TreeMap FindEntry (PATH &&key) const
template<typename PATH , typename = typename std::enable_if<!COW || AlwaysFalse<PATH>::value>::type>
TreeMap FindEntry (PATH &&key)
template<typename PATH >
const TreeMap FindFirstEntryWithValue (PATH &&key) const
template<typename PATH >
const TreeMap FindClosestEntryWithValue (PATH &&key) const
template<typename PATH >
const V *  FindValue (PATH &&key) const
template<typename PATH , typename = typename std::enable_if<!COW || AlwaysFalse<PATH>::value>::type>
V *  FindValue (PATH &&key)
template<typename PATH >
Bool   Contains (PATH &&key) const
template<typename PATH >
std::conditional< COW, Result < void >, ResultOk < void > >::type  Erase (PATH &&key)
String   ToString (const FormatStatement *fs=nullptr) const
const Opt < V > &  Get () const
Opt < V > &  Get ()
V &  MakeValid ()
void  SetValue (const V &value)
void  SetValue (V &&value)
Bool   IsRoot () const
Bool   IsLeaf () const
const ChildrenMap GetChildren () const
ChildrenMap GetChildren ()
const K *  GetKey () const
Bool   operator== (const TreeMap &other) const
Bool   operator!= (const TreeMap &other) const
Bool   IsPopulated () const
Bool   IsEmpty () const
Bool   HasSameStructure (const TreeMap &other) const
template<typename OP >
Result < Bool ForEachPreOrder (OP &&callback) const
template<typename PATH , typename OP >
Result < Bool ForEachPreOrder (OP &&callback, PATH &&path=PATH()) const
template<typename OP >
Result < Bool ForEachPreOrder (OP &&callback)
template<typename PATH , typename OP >
Result < Bool ForEachPreOrder (OP &&callback, PATH &&path=PATH())
template<typename PATH , typename OP >
Result < void >  ForEachPreOrderX (OP &&callback, PATH &&path=PATH())
template<typename OP >
Result < Bool ForEachPostOrder (OP &&callback) const
template<typename PATH , typename OP >
Result < Bool ForEachPostOrder (OP &&callback, PATH &&path=PATH()) const
template<typename OP >
Result < Bool ForEachPostOrder (OP &&callback)
template<typename PATH , typename OP >
Result < Bool ForEachPostOrder (OP &&callback, PATH &&path=PATH())
template<typename PATH >
Result < void >  GetPath (PATH &path) const
Int   GetDepth () const
IndexIterator < const K &, const TreeMap , TreeMap GetPath () const
-  Public Member Functions inherited from TreeMapParent< TreeMap< K, V, HashMapSelector<>, false >, false >
const TreeMap < K, V, HashMapSelector <>, false > *  GetParent () const
TreeMap < K, V, HashMapSelector <>, false > *  GetParent ()

静态公共成员函数

static ResultRef < TreeMap MakeWritable ( StrongCOWRef < TreeMap > &ref)
static ResultOk < TreeMap & >  MakeWritable ( TreeMap &ref)
static const TreeMap GetTreeMap (const TreeMap *child)
static const TreeMap GetTreeMap (const StrongCOWRef < TreeMap > *child)
static const K &  Get (const TreeMap &map, Int index)

私有成员函数

void  ToStringImpl ( String &s, BufferedBaseArray < K, 10 > &path, const FormatStatement *fs) const
template<typename IT >
std::conditional< COW, Result < Bool >, ResultOk < Bool > >::type  EraseImpl (IT &beginIt, const IT &endIt)

Private Attributes

Opt < V >  _value
ChildrenMap   _children

Additional Inherited Members

-  Protected Member Functions inherited from TreeMapParent< TreeMap< K, V, HashMapSelector<>, false >, false >
void  SetParent ( TreeMap < K, V, HashMapSelector <>, false > *p)
-  Protected Attributes inherited from TreeMapParent< TreeMap< K, V, HashMapSelector<>, false >, false >
Pointer < TreeMap < K, V, HashMapSelector <>, false > >  _parent

Member Typedef Documentation

◆  KeyType

using KeyType = K

◆  ValueType

using ValueType = V

◆  Super

using Super = TreeMapParent < TreeMap <K, V, MAP, COW>, COW>

◆  Child

using Child = typename std::conditional<COW, StrongCOWRef < TreeMap >, TreeMap >::type

◆  Ref

using Ref = typename std::conditional<COW, StrongCOWRef < TreeMap >, void>::type

◆  ChildrenMap

using ChildrenMap = typename MAP::template Type<K, Child >

构造函数 & 析构函数文档编制

◆  TreeMap() [1/2]

TreeMap ( )
default

◆  TreeMap() [2/2]

TreeMap ( TreeMap < K, V, MAP, COW > &&  src )

成员函数文档编制

◆  MAXON_OPERATOR_MOVE_ASSIGNMENT()

MAXON_OPERATOR_MOVE_ASSIGNMENT ( TreeMap < K, V, MAP, COW >  )

◆  CopyFrom()

Result <void> CopyFrom ( const TreeMap < K, V, MAP, COW > &  src )

◆  Flush()

void Flush ( )

◆  Reset()

void Reset ( )

◆  InsertChild()

Result < TreeMap &> InsertChild ( const K &  key ,
Bool   withValue = true  
)

◆  MakeWritable() [1/2]

static ResultRef < TreeMap > MakeWritable ( StrongCOWRef < TreeMap < K, V, MAP, COW > > &  ref )
static

◆  MakeWritable() [2/2]

static ResultOk < TreeMap &> MakeWritable ( TreeMap < K, V, MAP, COW > &  ref )
static

◆  InsertEntry()

Result < TreeMap &> InsertEntry ( PATH &&  key ,
Bool   withValue = true  
)

◆  Insert() [1/2]

Result < TreeMap &> Insert ( PATH &&  key ,
const V &  value  
)

◆  Insert() [2/2]

Result < TreeMap &> Insert ( PATH &&  key ,
V &&  value  
)

◆  InsertKey()

Result <V&> InsertKey ( PATH &&  key ,
Bool created = BoolLValue()  
)

◆  GetTreeMap() [1/2]

static const TreeMap * GetTreeMap ( const TreeMap < K, V, MAP, COW > *  child )
static

◆  GetTreeMap() [2/2]

static const TreeMap * GetTreeMap ( const StrongCOWRef < TreeMap < K, V, MAP, COW > > *  child )
static

◆  FindChild() [1/2]

const TreeMap * FindChild ( const K &  key ) const

◆  FindChild() [2/2]

TreeMap * FindChild ( const K &  key )

◆  FindEntry() [1/2]

const TreeMap * FindEntry ( PATH &&  key ) const

◆  FindEntry() [2/2]

TreeMap * FindEntry ( PATH &&  key )

◆  FindFirstEntryWithValue()

const TreeMap * FindFirstEntryWithValue ( PATH &&  key ) const

◆  FindClosestEntryWithValue()

const TreeMap * FindClosestEntryWithValue ( PATH &&  key ) const

◆  FindValue() [1/2]

const V* FindValue ( PATH &&  key ) const

◆  FindValue() [2/2]

V* FindValue ( PATH &&  key )

◆  Contains()

Bool Contains ( PATH &&  key ) const

◆  Erase()

std::conditional<COW, Result <void>, ResultOk <void> >::type Erase ( PATH &&  key )

◆  ToString()

String ToString ( const FormatStatement fs = nullptr ) const

◆  Get() [1/3]

const Opt <V>& Get ( ) const

◆  Get() [2/3]

Opt <V>& Get ( )

◆  MakeValid()

V& MakeValid ( )

◆  SetValue() [1/2]

void SetValue ( const V &  value )

◆  SetValue() [2/2]

void SetValue ( V &&  value )

◆  IsRoot()

Bool IsRoot ( ) const

◆  IsLeaf()

Bool IsLeaf ( ) const

◆  GetChildren() [1/2]

const ChildrenMap & GetChildren ( ) const

◆  GetChildren() [2/2]

ChildrenMap & GetChildren ( )

◆  GetKey()

const K* GetKey ( ) const

◆  operator==()

Bool operator== ( const TreeMap < K, V, MAP, COW > &  other ) const

◆  operator!=()

Bool operator!= ( const TreeMap < K, V, MAP, COW > &  other ) const

◆  IsPopulated()

Bool IsPopulated ( ) const

◆  IsEmpty()

Bool IsEmpty ( ) const

◆  HasSameStructure()

Bool HasSameStructure ( const TreeMap < K, V, MAP, COW > &  other ) const

◆  ForEachPreOrder() [1/4]

Result < Bool > ForEachPreOrder ( OP &&  callback ) const

◆  ForEachPreOrder() [2/4]

Result < Bool > ForEachPreOrder ( OP &&  callback ,
PATH &&  path = PATH()  
) const

◆  ForEachPreOrder() [3/4]

Result < Bool > ForEachPreOrder ( OP &&  callback )

◆  ForEachPreOrder() [4/4]

Result < Bool > ForEachPreOrder ( OP &&  callback ,
PATH &&  path = PATH()  
)

◆  ForEachPreOrderX()

Result <void> ForEachPreOrderX ( OP &&  callback ,
PATH &&  path = PATH()  
)

◆  ForEachPostOrder() [1/4]

Result < Bool > ForEachPostOrder ( OP &&  callback ) const

◆  ForEachPostOrder() [2/4]

Result < Bool > ForEachPostOrder ( OP &&  callback ,
PATH &&  path = PATH()  
) const

◆  ForEachPostOrder() [3/4]

Result < Bool > ForEachPostOrder ( OP &&  callback )

◆  ForEachPostOrder() [4/4]

Result < Bool > ForEachPostOrder ( OP &&  callback ,
PATH &&  path = PATH()  
)

◆  GetPath() [1/2]

Result <void> GetPath ( PATH &  path ) const

◆  GetDepth()

Int GetDepth ( ) const

◆  GetPath() [2/2]

IndexIterator <const K&, const TreeMap , TreeMap > GetPath ( ) const

◆  Get() [3/3]

static const K& Get ( const TreeMap < K, V, MAP, COW > &  map ,
Int   index  
)
static

◆  ToStringImpl()

void ToStringImpl ( String s ,
BufferedBaseArray < K, 10 > &  path ,
const FormatStatement fs  
) const
private

◆  EraseImpl()

std::conditional<COW, Result < Bool >, ResultOk < Bool > >::type EraseImpl ( IT &  beginIt ,
const IT &  endIt  
)
private

Member Data Documentation

◆  _value

Opt <V> _value
private

◆  _children

ChildrenMap _children
private