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 | e57d407fc28c3af55e403583b07f5f988c730a93 (patch) | |
| tree | 3cbf8653302ddaf3d79f1b21b689a73a8c873f7f /llvm | |
| parent | fda885d048e8b0f5fb8b70f28adfca5b91aeae95 (diff) | |
| download | bcm5719-llvm-e57d407fc28c3af55e403583b07f5f988c730a93.tar.gz bcm5719-llvm-e57d407fc28c3af55e403583b07f5f988c730a93.zip | |
make traits more flexible by splitting out node-related fragment
llvm-svn: 65690
Diffstat (limited to 'llvm')
| -rw-r--r-- | llvm/include/llvm/ADT/ilist.h | 20 |
1 files changed, 14 insertions, 6 deletions
diff --git a/llvm/include/llvm/ADT/ilist.h b/llvm/include/llvm/ADT/ilist.h index 9a088fd71e6..962a29d0ff2 100644 --- a/llvm/include/llvm/ADT/ilist.h +++ b/llvm/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> |

