ClearBlue
SEGUndefNode.h
1 /*
2  * SEGUndefNode.h
3  *
4  * This node is to model a value that is not defined in the checked code.
5  *
6  * Created on: 2016.5.11
7  * Author: andyzhou
8  */
9 
10 #ifndef LIB_IR_SEG_SEGUNDEFNODE_H
11 #define LIB_IR_SEG_SEGUNDEFNODE_H
12 
13 #include "IR/SEG/SymbolicExprGraph.h"
14 
15 using namespace llvm;
16 
17 class PersistedSEGUndefNode;
18 
19 class SEGUndefNode : public SEGOperandNode {
20 public:
23  SEGUndefNode(PersistedSEGUndefNode *Node, SymbolicExprGraph *SEG);
24 
25  virtual void assembleSEGObject(std::map<int, SEGObject *> &FuncSEGObjMap) {
26  SEGOperandNode::assembleSEGObject(FuncSEGObjMap);
27  }
28 
29 private:
30  SEGUndefNode(Type *ty, SymbolicExprGraph *seg, BasicBlock *bb);
31 
32 public:
33  ~SEGUndefNode();
34 
35  virtual PersistedSEGObject *createPersistedObject() const;
36 
37 public:
38  static bool classof(const SEGObject *N) {
39  return N->getKind() == SEGOBJK_Undef;
40  }
41 
42  friend class SymbolicExprGraph;
43 };
44 
45 #endif /* LIB_IR_SEG_SEGUNDEFNODE_H */
SEGOperandNode
Definition: SymbolicExprGraph.h:539
SymbolicExprGraph
Definition: SymbolicExprGraph.h:855
SEGObject
Definition: SymbolicExprGraph.h:87
SEGUndefNode::assembleSEGObject
virtual void assembleSEGObject(std::map< int, SEGObject * > &FuncSEGObjMap)
Assemble the SEG object's related objects.
Definition: SEGUndefNode.h:25
SEGUndefNode
Definition: SEGUndefNode.h:19
SEGOperandNode::assembleSEGObject
virtual void assembleSEGObject(std::map< int, SEGObject * > &FuncSEGObjMap)
Assemble the SEG object's related objects.
Definition: SymbolicExprGraph.h:545