From: Gabor Greif Date: Sat, 28 Feb 2009 10:17:32 +0000 (+0000) Subject: make traits more flexible by splitting out node-related fragment X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=b141e397d52d9946e93f84c65c6b2e653b026041;p=oota-llvm.git 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 --- diff --git a/include/llvm/ADT/ilist.h b/include/llvm/ADT/ilist.h index 9a088fd71e6..962a29d0ff2 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 -struct ilist_default_traits : ilist_nextprev_traits, - ilist_sentinel_traits { +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 /*first*/, ilist_iterator /*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 +struct ilist_default_traits : ilist_nextprev_traits, + ilist_sentinel_traits, + ilist_node_traits { +}; + // Template traits for intrusive list. By specializing this template class, you // can change what next/prev fields are used to store the links... template