diff options
-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 9a088fd..962a29d 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> |