Open Search
    TreeMap< K, V, MAP, COW, OPT > Class Template Reference

    #include <treemap.h>

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

    Public Types

    using KeyType = K
     
    using ValueType = V
     
    using Super = TreeMapParent< TreeMap< K, V, MAP, COW, OPT >, 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 >
     
    using OptValueType = typename std::conditional< OPT, Opt< V >, V >::type
     

    Public Member Functions

     TreeMap ()=default
     
     TreeMap (TreeMap &&src)
     
     MAXON_OPERATOR_MOVE_ASSIGNMENT (TreeMap)
     
    Result< void > CopyFrom (const TreeMap &src)
     
    void Flush ()
     
    void Reset ()
     
    Result< TreeMap & > InsertChild (const K &key, Bool withValue=true)
     
    Result< Child & > InsertChild (const K &key, Child &&child)
     
    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)
     
    template<typename PATH >
    Result< V & > InsertKey (PATH &&key)
     
    const TreeMapFindChild (const K &key) const
     
    TreeMapFindChild (const K &key)
     
    template<typename PATH >
    const TreeMapFindEntry (PATH &&key) const
     
    template<typename PATH , typename = typename std::enable_if<!COW || AlwaysFalse<PATH>::value>::type>
    TreeMapFindEntry (PATH &&key)
     
    template<typename PATH >
    const TreeMapFindFirstEntryWithValue (PATH &&key) const
     
    template<typename PATH >
    const TreeMapFindClosestEntryWithValue (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, Bool withChildren=false)
     
    String ToString (const FormatStatement *fs=nullptr) const
     
    const OptValueTypeGet () const
     
    OptValueTypeGet ()
     
    V & MakeValid ()
     
    void SetValue (const V &value)
     
    void SetValue (V &&value)
     
    Bool IsRoot () const
     
    Bool IsLeaf () const
     
    const ChildrenMapGetChildren () const
     
    ChildrenMapGetChildren ()
     
    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< BoolForEachPreOrder (OP &&callback) const
     
    template<typename PATH , typename OP >
    Result< BoolForEachPreOrder (OP &&callback, PATH &&path=PATH()) const
     
    template<typename OP >
    Result< BoolForEachPreOrder (OP &&callback)
     
    template<typename PATH , typename OP >
    Result< BoolForEachPreOrder (OP &&callback, PATH &&path=PATH())
     
    template<typename PATH , typename OP >
    Result< void > ForEachPreOrderX (OP &&callback, PATH &&path=PATH())
     
    template<typename OP >
    Result< BoolForEachPostOrder (OP &&callback) const
     
    template<typename PATH , typename OP >
    Result< BoolForEachPostOrder (OP &&callback, PATH &&path=PATH()) const
     
    template<typename OP >
    Result< BoolForEachPostOrder (OP &&callback)
     
    template<typename PATH , typename OP >
    Result< BoolForEachPostOrder (OP &&callback, PATH &&path=PATH())
     
    template<typename PATH >
    Result< void > GetPath (PATH &path) const
     
    Int GetDepth () const
     
    IndexIterator< const K &, const TreeMap, TreeMapGetPath () const
     
    - Public Member Functions inherited from TreeMapParent< TreeMap< K, V, HashMapSelector<>, false, true >, false >
    const TreeMap< K, V, HashMapSelector<>, false, true > * GetParent () const
     
    TreeMap< K, V, HashMapSelector<>, false, true > * GetParent ()
     

    Static Public Member Functions

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

    Private Member Functions

    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, Bool withChildren)
     

    Static Private Member Functions

    static const V * Extract (const V &x)
     
    static const V * Extract (const Opt< V > &x)
     

    Private Attributes

    OptValueType _value
     
    ChildrenMap _children
     

    Additional Inherited Members

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

    Member Typedef Documentation

    ◆ KeyType

    using KeyType = K

    ◆ ValueType

    using ValueType = V

    ◆ Super

    using Super = TreeMapParent<TreeMap<K, V, MAP, COW, OPT>, 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>

    ◆ OptValueType

    using OptValueType = typename std::conditional<OPT, Opt<V>, V>::type

    Constructor & Destructor Documentation

    ◆ TreeMap() [1/2]

    TreeMap ( )
    default

    ◆ TreeMap() [2/2]

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

    Member Function Documentation

    ◆ MAXON_OPERATOR_MOVE_ASSIGNMENT()

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

    ◆ CopyFrom()

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

    ◆ Flush()

    void Flush ( )

    ◆ Reset()

    void Reset ( )

    ◆ InsertChild() [1/2]

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

    ◆ InsertChild() [2/2]

    Result<Child&> InsertChild ( const K &  key,
    Child &&  child 
    )

    ◆ MakeWritable() [1/2]

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

    ◆ MakeWritable() [2/2]

    static ResultOk<TreeMap&> MakeWritable ( TreeMap< K, V, MAP, COW, OPT > &  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() [1/2]

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

    ◆ InsertKey() [2/2]

    Result<V&> InsertKey ( PATH &&  key)

    ◆ GetTreeMap() [1/3]

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

    ◆ GetTreeMap() [2/3]

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

    ◆ GetTreeMap() [3/3]

    static const TreeMap* GetTreeMap ( const StrongCOWRef< TreeMap< K, V, MAP, COW, OPT > > *  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,
    Bool  withChildren = false 
    )

    ◆ ToString()

    String ToString ( const FormatStatement fs = nullptr) const

    ◆ Get() [1/3]

    const OptValueType& Get ( ) const

    ◆ Get() [2/3]

    OptValueType& 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, OPT > &  other) const

    ◆ operator!=()

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

    ◆ IsPopulated()

    Bool IsPopulated ( ) const

    ◆ IsEmpty()

    Bool IsEmpty ( ) const

    ◆ HasSameStructure()

    Bool HasSameStructure ( const TreeMap< K, V, MAP, COW, OPT > &  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, OPT > &  map,
    Int  index 
    )
    static

    ◆ Extract() [1/2]

    static const V* Extract ( const V &  x)
    staticprivate

    ◆ Extract() [2/2]

    static const V* Extract ( const Opt< V > &  x)
    staticprivate

    ◆ 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,
    Bool  withChildren 
    )
    private

    Member Data Documentation

    ◆ _value

    OptValueType _value
    private

    ◆ _children

    ChildrenMap _children
    private