template<> struct ilist_traits<Instruction>
: public SymbolTableListTraits<Instruction, BasicBlock, Function> {
- // createNode is used to create a node that marks the end of the list...
- static Instruction *createNode();
+ // createSentinal is used to create a node that marks the end of the list...
+ static Instruction *createSentinal();
+ static void destroySentinal(Instruction *I) { delete I; }
static iplist<Instruction> &getList(BasicBlock *BB);
};
template<> struct ilist_traits<BasicBlock>
: public SymbolTableListTraits<BasicBlock, Function, Function> {
- // createNode is used to create a node that marks the end of the list...
- static BasicBlock *createNode();
-
+ // createSentinal is used to create a node that marks the end of the list...
+ static BasicBlock *createSentinal();
+ static void destroySentinal(BasicBlock *BB) { delete BB; }
static iplist<BasicBlock> &getList(Function *F);
};
template<> struct ilist_traits<Argument>
: public SymbolTableListTraits<Argument, Function, Function> {
- // createNode is used to create a node that marks the end of the list...
- static Argument *createNode();
+ // createSentinal is used to create a node that marks the end of the list...
+ static Argument *createSentinal();
+ static void destroySentinal(Argument *A) { delete A; }
static iplist<Argument> &getList(Function *F);
};
template<> struct ilist_traits<Function>
: public SymbolTableListTraits<Function, Module, Module> {
- // createNode is used to create a node that marks the end of the list...
- static Function *createNode();
+ // createSentinal is used to create a node that marks the end of the list.
+ static Function *createSentinal();
+ static void destroySentinal(Function *F) { delete F; }
static iplist<Function> &getList(Module *M);
};
template<> struct ilist_traits<GlobalVariable>
: public SymbolTableListTraits<GlobalVariable, Module, Module> {
- // createNode is used to create a node that marks the end of the list...
- static GlobalVariable *createNode();
+ // createSentinal is used to create a node that marks the end of the list.
+ static GlobalVariable *createSentinal();
+ static void destroySentinal(GlobalVariable *GV) { delete GV; }
static iplist<GlobalVariable> &getList(Module *M);
};