summaryrefslogtreecommitdiff
path: root/include/llvm/ADT/ilist.h
diff options
context:
space:
mode:
authorGabor Greif <ggreif@gmail.com>2009-02-28 10:17:32 +0000
committerGabor Greif <ggreif@gmail.com>2009-02-28 10:17:32 +0000
commitb141e397d52d9946e93f84c65c6b2e653b026041 (patch)
tree2aff4d85cfe84bbf3fde224e35fb42afff7311e0 /include/llvm/ADT/ilist.h
parentc8bb37a50a7f5e5627523d2eab3e4860d1796dcc (diff)
downloadllvm-b141e397d52d9946e93f84c65c6b2e653b026041.tar.gz
llvm-b141e397d52d9946e93f84c65c6b2e653b026041.tar.bz2
llvm-b141e397d52d9946e93f84c65c6b2e653b026041.tar.xz
make traits more flexible by splitting out node-related fragment
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@65690 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'include/llvm/ADT/ilist.h')
-rw-r--r--include/llvm/ADT/ilist.h20
1 files changed, 14 insertions, 6 deletions
diff --git a/include/llvm/ADT/ilist.h b/include/llvm/ADT/ilist.h
index 9a088fd71e..962a29d0ff 100644
--- a/include/llvm/ADT/ilist.h
+++ b/include/llvm/ADT/ilist.h
@@ -69,23 +69,31 @@ struct ilist_sentinel_traits {
static void destroySentinel(NodeTy *N) { delete N; }
};
-/// ilist_default_traits - Default template traits for intrusive list.
-/// By inheriting from this, you can easily use default implementations
-/// for all common operations.
+/// ilist_node_traits - A fragment for template traits for intrusive list
+/// that provides default node related operations.
///
template<typename NodeTy>
-struct ilist_default_traits : ilist_nextprev_traits<NodeTy>,
- ilist_sentinel_traits<NodeTy> {
+struct ilist_node_traits {
static NodeTy *createNode(const NodeTy &V) { return new NodeTy(V); }
static void deleteNode(NodeTy *V) { delete V; }
void addNodeToList(NodeTy *) {}
void removeNodeFromList(NodeTy *) {}
- void transferNodesFromList(ilist_default_traits & /*SrcTraits*/,
+ void transferNodesFromList(ilist_node_traits & /*SrcTraits*/,
ilist_iterator<NodeTy> /*first*/,
ilist_iterator<NodeTy> /*last*/) {}
};
+/// ilist_default_traits - Default template traits for intrusive list.
+/// By inheriting from this, you can easily use default implementations
+/// for all common operations.
+///
+template<typename NodeTy>
+struct ilist_default_traits : ilist_nextprev_traits<NodeTy>,
+ ilist_sentinel_traits<NodeTy>,
+ ilist_node_traits<NodeTy> {
+};
+
// Template traits for intrusive list. By specializing this template class, you
// can change what next/prev fields are used to store the links...
template<typename NodeTy>