LLVM 24.0.0git
llvm::ImmutableMap< KeyT, ValT, ValInfo, Canonicalize > Class Template Reference

#include "llvm/ADT/ImmutableMap.h"

Classes

class  Factory
class  iterator

Public Types

using value_type = typename ValInfo::value_type
using value_type_ref = typename ValInfo::value_type_ref
using key_type = typename ValInfo::key_type
using key_type_ref = typename ValInfo::key_type_ref
using data_type = typename ValInfo::data_type
using data_type_ref = typename ValInfo::data_type_ref
using TreeTy = ImutAVLTree<ValInfo, Canonicalize>

Public Member Functions

 ImmutableMap (const TreeTy *R)
 Constructs a map from a pointer to a tree root.
bool contains (key_type_ref K) const
bool operator== (const ImmutableMap &RHS) const
 Compares two maps for equality.
bool operator!= (const ImmutableMap &RHS) const
TreeTygetRoot () const
TreeTygetRootWithoutRetain () const
void manualRetain ()
void manualRelease ()
bool isEmpty () const
void verify () const
iterator begin () const
iterator end () const
data_typelookup (key_type_ref K) const
value_typegetMaxElement () const
 Returns the <key,value> pair in the ImmutableMap for which key is the highest in the ordering of keys in the map.
unsigned getHeight () const
void Profile (FoldingSetNodeID &ID) const

Static Public Member Functions

static void Profile (FoldingSetNodeID &ID, const ImmutableMap &M)

Protected Attributes

IntrusiveRefCntPtr< TreeTyRoot

Detailed Description

template<typename KeyT, typename ValT, typename ValInfo = ImutKeyValueInfo<KeyT, ValT>, bool Canonicalize = true>
class llvm::ImmutableMap< KeyT, ValT, ValInfo, Canonicalize >

Definition at line 64 of file ImmutableMap.h.

Member Typedef Documentation

◆ data_type

template<typename KeyT, typename ValT, typename ValInfo = ImutKeyValueInfo<KeyT, ValT>, bool Canonicalize = true>
using llvm::ImmutableMap< KeyT, ValT, ValInfo, Canonicalize >::data_type = typename ValInfo::data_type

Definition at line 70 of file ImmutableMap.h.

◆ data_type_ref

template<typename KeyT, typename ValT, typename ValInfo = ImutKeyValueInfo<KeyT, ValT>, bool Canonicalize = true>
using llvm::ImmutableMap< KeyT, ValT, ValInfo, Canonicalize >::data_type_ref = typename ValInfo::data_type_ref

Definition at line 71 of file ImmutableMap.h.

◆ key_type

template<typename KeyT, typename ValT, typename ValInfo = ImutKeyValueInfo<KeyT, ValT>, bool Canonicalize = true>
using llvm::ImmutableMap< KeyT, ValT, ValInfo, Canonicalize >::key_type = typename ValInfo::key_type

Definition at line 68 of file ImmutableMap.h.

◆ key_type_ref

template<typename KeyT, typename ValT, typename ValInfo = ImutKeyValueInfo<KeyT, ValT>, bool Canonicalize = true>
using llvm::ImmutableMap< KeyT, ValT, ValInfo, Canonicalize >::key_type_ref = typename ValInfo::key_type_ref

Definition at line 69 of file ImmutableMap.h.

◆ TreeTy

template<typename KeyT, typename ValT, typename ValInfo = ImutKeyValueInfo<KeyT, ValT>, bool Canonicalize = true>
using llvm::ImmutableMap< KeyT, ValT, ValInfo, Canonicalize >::TreeTy = ImutAVLTree<ValInfo, Canonicalize>

Definition at line 72 of file ImmutableMap.h.

◆ value_type

template<typename KeyT, typename ValT, typename ValInfo = ImutKeyValueInfo<KeyT, ValT>, bool Canonicalize = true>
using llvm::ImmutableMap< KeyT, ValT, ValInfo, Canonicalize >::value_type = typename ValInfo::value_type

Definition at line 66 of file ImmutableMap.h.

◆ value_type_ref

template<typename KeyT, typename ValT, typename ValInfo = ImutKeyValueInfo<KeyT, ValT>, bool Canonicalize = true>
using llvm::ImmutableMap< KeyT, ValT, ValInfo, Canonicalize >::value_type_ref = typename ValInfo::value_type_ref

Definition at line 67 of file ImmutableMap.h.

Constructor & Destructor Documentation

◆ ImmutableMap()

template<typename KeyT, typename ValT, typename ValInfo = ImutKeyValueInfo<KeyT, ValT>, bool Canonicalize = true>
llvm::ImmutableMap< KeyT, ValT, ValInfo, Canonicalize >::ImmutableMap ( const TreeTy * R)
inlineexplicit

Constructs a map from a pointer to a tree root.

In general one should use a Factory object to create maps instead of directly invoking the constructor, but there are cases where make this constructor public is useful.

Definition at line 82 of file ImmutableMap.h.

References Root.

Referenced by llvm::ImmutableMap< KeyT, ValT, ValInfo, Canonicalize >::Factory::add(), llvm::ImmutableMap< KeyT, ValT, ValInfo, Canonicalize >::Factory::getEmptyMap(), operator!=(), operator==(), Profile(), and llvm::ImmutableMap< KeyT, ValT, ValInfo, Canonicalize >::Factory::remove().

Member Function Documentation

◆ begin()

template<typename KeyT, typename ValT, typename ValInfo = ImutKeyValueInfo<KeyT, ValT>, bool Canonicalize = true>
iterator llvm::ImmutableMap< KeyT, ValT, ValInfo, Canonicalize >::begin ( ) const
inlinenodiscard

Definition at line 182 of file ImmutableMap.h.

References Root.

◆ contains()

template<typename KeyT, typename ValT, typename ValInfo = ImutKeyValueInfo<KeyT, ValT>, bool Canonicalize = true>
bool llvm::ImmutableMap< KeyT, ValT, ValInfo, Canonicalize >::contains ( key_type_ref K) const
inlinenodiscard

Definition at line 119 of file ImmutableMap.h.

References Root.

◆ end()

template<typename KeyT, typename ValT, typename ValInfo = ImutKeyValueInfo<KeyT, ValT>, bool Canonicalize = true>
iterator llvm::ImmutableMap< KeyT, ValT, ValInfo, Canonicalize >::end ( ) const
inlinenodiscard

Definition at line 183 of file ImmutableMap.h.

◆ getHeight()

template<typename KeyT, typename ValT, typename ValInfo = ImutKeyValueInfo<KeyT, ValT>, bool Canonicalize = true>
unsigned llvm::ImmutableMap< KeyT, ValT, ValInfo, Canonicalize >::getHeight ( ) const
inlinenodiscard

Definition at line 205 of file ImmutableMap.h.

References Root.

◆ getMaxElement()

template<typename KeyT, typename ValT, typename ValInfo = ImutKeyValueInfo<KeyT, ValT>, bool Canonicalize = true>
value_type * llvm::ImmutableMap< KeyT, ValT, ValInfo, Canonicalize >::getMaxElement ( ) const
inlinenodiscard

Returns the <key,value> pair in the ImmutableMap for which key is the highest in the ordering of keys in the map.

This method returns NULL if the map is empty.

Definition at line 197 of file ImmutableMap.h.

References getValue(), and Root.

◆ getRoot()

template<typename KeyT, typename ValT, typename ValInfo = ImutKeyValueInfo<KeyT, ValT>, bool Canonicalize = true>
TreeTy * llvm::ImmutableMap< KeyT, ValT, ValInfo, Canonicalize >::getRoot ( ) const
inlinenodiscard

Definition at line 143 of file ImmutableMap.h.

References Root.

◆ getRootWithoutRetain()

template<typename KeyT, typename ValT, typename ValInfo = ImutKeyValueInfo<KeyT, ValT>, bool Canonicalize = true>
TreeTy * llvm::ImmutableMap< KeyT, ValT, ValInfo, Canonicalize >::getRootWithoutRetain ( ) const
inlinenodiscard

Definition at line 148 of file ImmutableMap.h.

References Root.

◆ isEmpty()

template<typename KeyT, typename ValT, typename ValInfo = ImutKeyValueInfo<KeyT, ValT>, bool Canonicalize = true>
bool llvm::ImmutableMap< KeyT, ValT, ValInfo, Canonicalize >::isEmpty ( ) const
inlinenodiscard

Definition at line 158 of file ImmutableMap.h.

References Root.

◆ lookup()

template<typename KeyT, typename ValT, typename ValInfo = ImutKeyValueInfo<KeyT, ValT>, bool Canonicalize = true>
data_type * llvm::ImmutableMap< KeyT, ValT, ValInfo, Canonicalize >::lookup ( key_type_ref K) const
inlinenodiscard

Definition at line 185 of file ImmutableMap.h.

References Root, and T.

◆ manualRelease()

template<typename KeyT, typename ValT, typename ValInfo = ImutKeyValueInfo<KeyT, ValT>, bool Canonicalize = true>
void llvm::ImmutableMap< KeyT, ValT, ValInfo, Canonicalize >::manualRelease ( )
inline

Definition at line 154 of file ImmutableMap.h.

References Root.

◆ manualRetain()

template<typename KeyT, typename ValT, typename ValInfo = ImutKeyValueInfo<KeyT, ValT>, bool Canonicalize = true>
void llvm::ImmutableMap< KeyT, ValT, ValInfo, Canonicalize >::manualRetain ( )
inline

Definition at line 150 of file ImmutableMap.h.

References Root.

◆ operator!=()

template<typename KeyT, typename ValT, typename ValInfo = ImutKeyValueInfo<KeyT, ValT>, bool Canonicalize = true>
bool llvm::ImmutableMap< KeyT, ValT, ValInfo, Canonicalize >::operator!= ( const ImmutableMap< KeyT, ValT, ValInfo, Canonicalize > & RHS) const
inlinenodiscard

Definition at line 135 of file ImmutableMap.h.

References ImmutableMap(), RHS, and Root.

◆ operator==()

template<typename KeyT, typename ValT, typename ValInfo = ImutKeyValueInfo<KeyT, ValT>, bool Canonicalize = true>
bool llvm::ImmutableMap< KeyT, ValT, ValInfo, Canonicalize >::operator== ( const ImmutableMap< KeyT, ValT, ValInfo, Canonicalize > & RHS) const
inlinenodiscard

Compares two maps for equality.

For a canonicalizing factory, maps with equal contents share the same tree, so this is an O(1) pointer comparison (like ImmutableList); only maps created by the same factory may be compared. Otherwise it is a structural comparison.

Definition at line 127 of file ImmutableMap.h.

References ImmutableMap(), RHS, and Root.

◆ Profile() [1/2]

template<typename KeyT, typename ValT, typename ValInfo = ImutKeyValueInfo<KeyT, ValT>, bool Canonicalize = true>
void llvm::ImmutableMap< KeyT, ValT, ValInfo, Canonicalize >::Profile ( FoldingSetNodeID & ID) const
inline

Definition at line 213 of file ImmutableMap.h.

References Profile.

◆ Profile() [2/2]

template<typename KeyT, typename ValT, typename ValInfo = ImutKeyValueInfo<KeyT, ValT>, bool Canonicalize = true>
void llvm::ImmutableMap< KeyT, ValT, ValInfo, Canonicalize >::Profile ( FoldingSetNodeID & ID,
const ImmutableMap< KeyT, ValT, ValInfo, Canonicalize > & M )
inlinestatic

Definition at line 209 of file ImmutableMap.h.

References ImmutableMap().

◆ verify()

template<typename KeyT, typename ValT, typename ValInfo = ImutKeyValueInfo<KeyT, ValT>, bool Canonicalize = true>
void llvm::ImmutableMap< KeyT, ValT, ValInfo, Canonicalize >::verify ( ) const
inline

Definition at line 165 of file ImmutableMap.h.

References Root.

Member Data Documentation

◆ Root


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