X-Git-Url: http://demsky.eecs.uci.edu/git/?a=blobdiff_plain;f=include%2Fllvm%2FADT%2Filist.h;h=962a29d0ff2076e8541fe8be5ff00358a0c74826;hb=b141e397d52d9946e93f84c65c6b2e653b026041;hp=9a088fd71e664497634a4ec62dafb0216ea3e58c;hpb=085a9ebbc705c6e7d3fd8c692ef1c46fdfb885ce;p=oota-llvm.git 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