llvm::iplist< NodeTy, Traits > Class Template Reference
iplist - The subset of list functionality that can safely be used on nodes of polymorphic types, i.e.
More...
#include <ilist.h>
List of all members.
Public Types |
typedef NodeTy * | pointer |
typedef const NodeTy * | const_pointer |
typedef NodeTy & | reference |
typedef const NodeTy & | const_reference |
typedef NodeTy | value_type |
typedef ilist_iterator< NodeTy > | iterator |
typedef ilist_iterator< const
NodeTy > | const_iterator |
typedef size_t | size_type |
typedef ptrdiff_t | difference_type |
typedef std::reverse_iterator
< const_iterator > | const_reverse_iterator |
typedef std::reverse_iterator
< iterator > | reverse_iterator |
Public Member Functions |
| iplist () |
| ~iplist () |
iterator | begin () |
const_iterator | begin () const |
iterator | end () |
const_iterator | end () const |
reverse_iterator | rbegin () |
const_reverse_iterator | rbegin () const |
reverse_iterator | rend () |
const_reverse_iterator | rend () const |
size_type | max_size () const |
bool | empty () const |
reference | front () |
const_reference | front () const |
reference | back () |
const_reference | back () const |
void | swap (iplist &RHS) |
iterator | insert (iterator where, NodeTy *New) |
iterator | insertAfter (iterator where, NodeTy *New) |
NodeTy * | remove (iterator &IT) |
NodeTy * | remove (const iterator &IT) |
iterator | erase (iterator where) |
size_type | size () const |
iterator | erase (iterator first, iterator last) |
void | clear () |
void | push_front (NodeTy *val) |
void | push_back (NodeTy *val) |
void | pop_front () |
void | pop_back () |
template<class InIt > |
void | insert (iterator where, InIt first, InIt last) |
void | splice (iterator where, iplist &L2) |
void | splice (iterator where, iplist &L2, iterator first) |
void | splice (iterator where, iplist &L2, iterator first, iterator last) |
void | erase (const NodeTy &val) |
template<class Pr1 > |
void | erase_if (Pr1 pred) |
template<class Pr2 > |
void | unique (Pr2 pred) |
void | unique () |
template<class Pr3 > |
void | merge (iplist &right, Pr3 pred) |
void | merge (iplist &right) |
template<class Pr3 > |
void | sort (Pr3 pred) |
void | sort () |
Private Member Functions |
NodeTy * | getTail () |
const NodeTy * | getTail () const |
void | setTail (NodeTy *N) const |
void | CreateLazySentinel () const |
| CreateLazySentinel - This method verifies whether the sentinel for the list has been created and lazily makes it if not.
|
| iplist (const iplist &) |
void | operator= (const iplist &) |
void | transfer (iterator position, iplist &L2, iterator first, iterator last) |
Static Private Member Functions |
static bool | op_less (NodeTy &L, NodeTy &R) |
static bool | op_equal (NodeTy &L, NodeTy &R) |
Private Attributes |
NodeTy * | Head |
Detailed Description
template<typename NodeTy, typename Traits = ilist_traits<NodeTy>>
class llvm::iplist< NodeTy, Traits >
iplist - The subset of list functionality that can safely be used on nodes of polymorphic types, i.e.
a heterogeneous list with a common base class that holds the next/prev pointers. The only state of the list itself is a single pointer to the head of the list.
This list can be in one of three interesting states: 1. The list may be completely unconstructed. In this case, the head pointer is null. When in this form, any query for an iterator (e.g. begin() or end()) causes the list to transparently change to state #2. 2. The list may be empty, but contain a sentinel for the end iterator. This sentinel is created by the Traits::createSentinel method and is a link in the list. When the list is empty, the pointer in the iplist points to the sentinel. Once the sentinel is constructed, it is not destroyed until the list is. 3. The list may contain actual objects in it, which are stored as a doubly linked list of nodes. One invariant of the list is that the predecessor of the first node in the list always points to the last node in the list, and the successor pointer for the sentinel (which always stays at the end of the list) is always null.
Member Typedef Documentation
template<typename NodeTy, typename Traits = ilist_traits<NodeTy>>
template<typename NodeTy, typename Traits = ilist_traits<NodeTy>>
template<typename NodeTy, typename Traits = ilist_traits<NodeTy>>
template<typename NodeTy, typename Traits = ilist_traits<NodeTy>>
template<typename NodeTy, typename Traits = ilist_traits<NodeTy>>
template<typename NodeTy, typename Traits = ilist_traits<NodeTy>>
template<typename NodeTy, typename Traits = ilist_traits<NodeTy>>
template<typename NodeTy, typename Traits = ilist_traits<NodeTy>>
template<typename NodeTy, typename Traits = ilist_traits<NodeTy>>
template<typename NodeTy, typename Traits = ilist_traits<NodeTy>>
template<typename NodeTy, typename Traits = ilist_traits<NodeTy>>
Constructor & Destructor Documentation
template<typename NodeTy, typename Traits = ilist_traits<NodeTy>>
template<typename NodeTy, typename Traits = ilist_traits<NodeTy>>
template<typename NodeTy, typename Traits = ilist_traits<NodeTy>>
Member Function Documentation
template<typename NodeTy, typename Traits = ilist_traits<NodeTy>>
template<typename NodeTy, typename Traits = ilist_traits<NodeTy>>
template<typename NodeTy, typename Traits = ilist_traits<NodeTy>>
template<typename NodeTy, typename Traits = ilist_traits<NodeTy>>
template<typename NodeTy, typename Traits = ilist_traits<NodeTy>>
template<typename NodeTy, typename Traits = ilist_traits<NodeTy>>
void llvm::iplist< NodeTy, Traits >::CreateLazySentinel |
( |
|
) |
const [inline, private] |
CreateLazySentinel - This method verifies whether the sentinel for the list has been created and lazily makes it if not.
template<typename NodeTy, typename Traits = ilist_traits<NodeTy>>
bool llvm::iplist< NodeTy, Traits >::empty |
( |
|
) |
const [inline] |
template<typename NodeTy, typename Traits = ilist_traits<NodeTy>>
template<typename NodeTy, typename Traits = ilist_traits<NodeTy>>
template<typename NodeTy, typename Traits = ilist_traits<NodeTy>>
void llvm::iplist< NodeTy, Traits >::erase |
( |
const NodeTy & |
val |
) |
[inline] |
template<typename NodeTy, typename Traits = ilist_traits<NodeTy>>
template<typename NodeTy, typename Traits = ilist_traits<NodeTy>>
template<typename NodeTy, typename Traits = ilist_traits<NodeTy>>
template<class Pr1 >
void llvm::iplist< NodeTy, Traits >::erase_if |
( |
Pr1 |
pred |
) |
[inline] |
template<typename NodeTy, typename Traits = ilist_traits<NodeTy>>
template<typename NodeTy, typename Traits = ilist_traits<NodeTy>>
template<typename NodeTy, typename Traits = ilist_traits<NodeTy>>
const NodeTy* llvm::iplist< NodeTy, Traits >::getTail |
( |
|
) |
const [inline, private] |
template<typename NodeTy, typename Traits = ilist_traits<NodeTy>>
NodeTy* llvm::iplist< NodeTy, Traits >::getTail |
( |
|
) |
[inline, private] |
template<typename NodeTy, typename Traits = ilist_traits<NodeTy>>
template<class InIt >
template<typename NodeTy, typename Traits = ilist_traits<NodeTy>>
template<typename NodeTy, typename Traits = ilist_traits<NodeTy>>
template<typename NodeTy, typename Traits = ilist_traits<NodeTy>>
template<typename NodeTy, typename Traits = ilist_traits<NodeTy>>
template<typename NodeTy, typename Traits = ilist_traits<NodeTy>>
template<class Pr3 >
void llvm::iplist< NodeTy, Traits >::merge |
( |
iplist< NodeTy, Traits > & |
right, |
|
|
Pr3 |
pred | |
|
) |
| | [inline] |
template<typename NodeTy, typename Traits = ilist_traits<NodeTy>>
static bool llvm::iplist< NodeTy, Traits >::op_equal |
( |
NodeTy & |
L, |
|
|
NodeTy & |
R | |
|
) |
| | [inline, static, private] |
template<typename NodeTy, typename Traits = ilist_traits<NodeTy>>
static bool llvm::iplist< NodeTy, Traits >::op_less |
( |
NodeTy & |
L, |
|
|
NodeTy & |
R | |
|
) |
| | [inline, static, private] |
template<typename NodeTy, typename Traits = ilist_traits<NodeTy>>
void llvm::iplist< NodeTy, Traits >::operator= |
( |
const iplist< NodeTy, Traits > & |
|
) |
[private] |
template<typename NodeTy, typename Traits = ilist_traits<NodeTy>>
template<typename NodeTy, typename Traits = ilist_traits<NodeTy>>
template<typename NodeTy, typename Traits = ilist_traits<NodeTy>>
void llvm::iplist< NodeTy, Traits >::push_back |
( |
NodeTy * |
val |
) |
[inline] |
template<typename NodeTy, typename Traits = ilist_traits<NodeTy>>
void llvm::iplist< NodeTy, Traits >::push_front |
( |
NodeTy * |
val |
) |
[inline] |
template<typename NodeTy, typename Traits = ilist_traits<NodeTy>>
template<typename NodeTy, typename Traits = ilist_traits<NodeTy>>
template<typename NodeTy, typename Traits = ilist_traits<NodeTy>>
template<typename NodeTy, typename Traits = ilist_traits<NodeTy>>
template<typename NodeTy, typename Traits = ilist_traits<NodeTy>>
template<typename NodeTy, typename Traits = ilist_traits<NodeTy>>
template<typename NodeTy, typename Traits = ilist_traits<NodeTy>>
void llvm::iplist< NodeTy, Traits >::setTail |
( |
NodeTy * |
N |
) |
const [inline, private] |
template<typename NodeTy, typename Traits = ilist_traits<NodeTy>>
template<typename NodeTy, typename Traits = ilist_traits<NodeTy>>
template<typename NodeTy, typename Traits = ilist_traits<NodeTy>>
template<class Pr3 >
void llvm::iplist< NodeTy, Traits >::sort |
( |
Pr3 |
pred |
) |
[inline] |
template<typename NodeTy, typename Traits = ilist_traits<NodeTy>>
template<typename NodeTy, typename Traits = ilist_traits<NodeTy>>
template<typename NodeTy, typename Traits = ilist_traits<NodeTy>>
template<typename NodeTy, typename Traits = ilist_traits<NodeTy>>
template<typename NodeTy, typename Traits = ilist_traits<NodeTy>>
template<typename NodeTy, typename Traits = ilist_traits<NodeTy>>
template<typename NodeTy, typename Traits = ilist_traits<NodeTy>>
template<class Pr2 >
void llvm::iplist< NodeTy, Traits >::unique |
( |
Pr2 |
pred |
) |
[inline] |
Member Data Documentation
template<typename NodeTy, typename Traits = ilist_traits<NodeTy>>
The documentation for this class was generated from the following file: