diff options
author | Gabor Greif <ggreif@gmail.com> | 2009-02-28 10:17:32 +0000 |
---|---|---|
committer | Gabor Greif <ggreif@gmail.com> | 2009-02-28 10:17:32 +0000 |
commit | b141e397d52d9946e93f84c65c6b2e653b026041 (patch) | |
tree | 2aff4d85cfe84bbf3fde224e35fb42afff7311e0 /include/llvm/ADT/ilist.h | |
parent | c8bb37a50a7f5e5627523d2eab3e4860d1796dcc (diff) | |
download | llvm-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.h | 20 |
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> |