15#ifndef LLVM_ADT_ILIST_NODE_H 
   16#define LLVM_ADT_ILIST_NODE_H 
   35    return static_cast<const NodeTy *
>(
this)->getNodeBaseParent();
 
 
   38    return static_cast<NodeTy *
>(
this)->getNodeBaseParent();
 
 
   41    return static_cast<NodeTy *
>(
this)->setNodeBaseParent(Parent);
 
 
 
   48template <
class OptionsT, 
bool IsReverse, 
bool IsConst> 
class ilist_iterator;
 
   49template <
class OptionsT, 
bool IsReverse, 
bool IsConst>
 
   54template <
class OptionsT, 
bool IsReverse, 
bool IsConst>
 
   56    std::conditional_t<OptionsT::has_iterator_bits,
 
   68template <
class OptionsT>
 
   70    : OptionsT::node_base_type,
 
   72                                              typename OptionsT::parent_ty> {
 
   73  using value_type = 
typename OptionsT::value_type;
 
   74  using node_base_type = 
typename OptionsT::node_base_type;
 
   75  using list_base_type = 
typename OptionsT::list_base_type;
 
   77  friend typename OptionsT::list_base_type;
 
   82                                                typename OptionsT::parent_ty>;
 
  135  using node_base_type::isKnownSentinel;
 
  146  template <
typename T = OptionsT>
 
  147  std::enable_if_t<T::is_sentinel_tracking_explicit, bool> 
isSentinel()
 const {
 
  148    return node_base_type::isSentinel();
 
 
 
  210          typename ilist_detail::compute_node_options<T, Options...>::type> {
 
  212                "Unrecognized node option!");
 
 
  225  template <
class OptionsT>
 
  230  template <
class OptionsT>
 
  236  template <
class OptionsT>
 
  238    return static_cast<typename OptionsT::pointer
>(
N);
 
 
  241  template <
class OptionsT>
 
  242  static typename OptionsT::const_pointer
 
  244    return static_cast<typename OptionsT::const_pointer
>(
N);
 
 
  247  template <
class OptionsT>
 
  252  template <
class OptionsT>
 
  257  template <
class OptionsT>
 
  263  template <
class OptionsT>
 
 
  295template <
class OptionsT>
 
  299    this->initializeSentinel();
 
 
  308  bool empty()
 const { 
return this == this->getPrev(); }
 
 
  315template <
typename NodeTy, 
typename ParentTy, 
class... 
Options>
 
  326  const ParentTy *getNodeParent()
 const {
 
  327    return static_cast<const NodeTy *
>(
this)->
getParent();
 
  338        getNodeParent()->*(ParentTy::getSublistAccess((NodeTy *)
nullptr));
 
  339    return List.getPrevNode(*
static_cast<NodeTy *
>(
this));
 
 
  352        getNodeParent()->*(ParentTy::getSublistAccess((NodeTy *)
nullptr));
 
  353    return List.getNextNode(*
static_cast<NodeTy *
>(
this));
 
 
 
Mixin base class that is used to add getParent() and setParent(ParentTy*) methods to ilist_node_impl ...
 
const ParentTy * getParent() const
 
void setParent(ParentTy *Parent)
 
Iterator for intrusive lists based on ilist_node.
 
Iterator for intrusive lists based on ilist_node.
 
Implementation for an ilist node.
 
ilist_node_impl()=default
 
ilist_select_iterator_type< OptionsT, false, true > const_self_iterator
 
const_reverse_self_iterator getReverseIterator() const
 
ilist_select_iterator_type< OptionsT, true, false > reverse_self_iterator
 
const_self_iterator getIterator() const
 
reverse_self_iterator getReverseIterator()
 
std::enable_if_t< T::is_sentinel_tracking_explicit, bool > isSentinel() const
Check whether this is the sentinel node.
 
ilist_select_iterator_type< OptionsT, true, true > const_reverse_self_iterator
 
self_iterator getIterator()
 
ilist_select_iterator_type< OptionsT, false, false > self_iterator
 
const NodeTy * getPrevNode() const
Get the previous node, or nullptr for the list head.
 
NodeTy * getNextNode()
Get the next node, or nullptr for the list tail.
 
const NodeTy * getNextNode() const
Get the next node, or nullptr for the list tail.
 
ilist_node_with_parent()=default
 
This is an optimization pass for GlobalISel generic memory operations.
 
std::conditional_t< OptionsT::has_iterator_bits, ilist_iterator_w_bits< OptionsT, IsReverse, IsConst >, ilist_iterator< OptionsT, IsReverse, IsConst > > ilist_select_iterator_type
 
An access class for ilist_node private API.
 
static ilist_node_impl< OptionsT > * getPrev(ilist_node_impl< OptionsT > &N)
 
static const ilist_node_impl< OptionsT > * getNext(const ilist_node_impl< OptionsT > &N)
 
static ilist_node_impl< OptionsT > * getNext(ilist_node_impl< OptionsT > &N)
 
static const ilist_node_impl< OptionsT > * getPrev(const ilist_node_impl< OptionsT > &N)
 
static ilist_node_impl< OptionsT > * getNodePtr(typename OptionsT::pointer N)
 
static const ilist_node_impl< OptionsT > * getNodePtr(typename OptionsT::const_pointer N)
 
static OptionsT::pointer getValuePtr(ilist_node_impl< OptionsT > *N)
 
static OptionsT::const_pointer getValuePtr(const ilist_node_impl< OptionsT > *N)
 
static pointer getValuePtr(node_type *N)
 
typename OptionsT::const_pointer const_pointer
 
static const_pointer getValuePtr(const node_type *N)
 
static const node_type * getNodePtr(const_pointer N)
 
ilist_node_impl< OptionsT > node_type
 
static node_type * getNodePtr(pointer N)
 
typename OptionsT::pointer pointer
 
Check whether options are valid.