ilist_node.h revision 9c01f2dd0b20e09f4edef832620a188eda62ff5a
1cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)//==-- llvm/ADT/ilist_node.h - Intrusive Linked List Helper ------*- C++ -*-==// 2cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)// 3cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)// The LLVM Compiler Infrastructure 4cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)// 5cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)// This file is distributed under the University of Illinois Open Source 6cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)// License. See LICENSE.TXT for details. 7cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)// 8cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)//===----------------------------------------------------------------------===// 9cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)// 10cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)// This file defines the ilist_node class template, which is a convenient 11cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)// base class for creating classes that can be used with ilists. 12cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)// 13cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)//===----------------------------------------------------------------------===// 14cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 15cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#ifndef LLVM_ADT_ILIST_NODE_H 16cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#define LLVM_ADT_ILIST_NODE_H 17cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 18cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)namespace llvm { 19cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 20cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)template<typename NodeTy> 21cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)struct ilist_nextprev_traits; 22cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 236e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)template<typename NodeTy> 246e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)struct ilist_traits; 256e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 26cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)/// ilist_node - Base class that provides next/prev services for nodes 27cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)/// that use ilist_nextprev_traits or ilist_default_traits. 28cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)/// 296e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)template<typename NodeTy> 30cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)class ilist_node { 31cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)private: 32cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) friend struct ilist_nextprev_traits<NodeTy>; 33cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) friend struct ilist_traits<NodeTy>; 34cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) NodeTy *Prev, *Next; 35cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) NodeTy *getPrev() { return Prev; } 36cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) NodeTy *getNext() { return Next; } 37cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) const NodeTy *getPrev() const { return Prev; } 38cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) const NodeTy *getNext() const { return Next; } 39cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) void setPrev(NodeTy *N) { Prev = N; } 406e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) void setNext(NodeTy *N) { Next = N; } 416e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)protected: 426e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) ilist_node() : Prev(0), Next(0) {} 43cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)}; 44cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 45cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)} // End llvm namespace 46cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 476e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)#endif 48cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)