typedef DSScalarMap ScalarMapTy;
typedef hash_map<Function*, DSNodeHandle> ReturnNodesTy;
typedef hash_set<GlobalValue*> GlobalSetTy;
+ typedef std::vector<DSNode*> NodeListTy;
/// NodeMapTy - This data type is used when cloning one graph into another to
/// keep track of the correspondence between the nodes in the old and new
DSGraph *GlobalsGraph; // Pointer to the common graph of global objects
bool PrintAuxCalls; // Should this graph print the Aux calls vector?
- std::vector<DSNode*> Nodes;
+ NodeListTy Nodes;
ScalarMapTy ScalarMap;
// ReturnNodes - A return value for every function merged into this graph.
/// getNodes - Get a vector of all the nodes in the graph
///
- const std::vector<DSNode*> &getNodes() const { return Nodes; }
- std::vector<DSNode*> &getNodes() { return Nodes; }
+ typedef NodeListTy::const_iterator node_iterator;
+ node_iterator node_begin() const { return Nodes.begin(); }
+ node_iterator node_end() const { return Nodes.end(); }
/// getFunctionNames - Return a space separated list of the name of the
/// functions in this graph (if any)
typedef std::pointer_to_unary_function<DSNode *, DSNode&> DerefFun;
// nodes_iterator/begin/end - Allow iteration over all nodes in the graph
- typedef mapped_iterator<std::vector<DSNode*>::iterator,
- DerefFun> nodes_iterator;
+ typedef mapped_iterator<DSGraph::node_iterator, DerefFun> nodes_iterator;
static nodes_iterator nodes_begin(DSGraph *G) {
- return map_iterator(G->getNodes().begin(), DerefFun(dereference));
+ return map_iterator(G->node_begin(), DerefFun(dereference));
}
static nodes_iterator nodes_end(DSGraph *G) {
- return map_iterator(G->getNodes().end(), DerefFun(dereference));
+ return map_iterator(G->node_end(), DerefFun(dereference));
}
static ChildIteratorType child_begin(NodeType *N) { return N->begin(); }
typedef std::pointer_to_unary_function<const DSNode *,const DSNode&> DerefFun;
// nodes_iterator/begin/end - Allow iteration over all nodes in the graph
- typedef mapped_iterator<std::vector<DSNode*>::const_iterator,
- DerefFun> nodes_iterator;
+ typedef mapped_iterator<DSGraph::node_iterator, DerefFun> nodes_iterator;
static nodes_iterator nodes_begin(const DSGraph *G) {
- return map_iterator(G->getNodes().begin(), DerefFun(dereferenceC));
+ return map_iterator(G->node_begin(), DerefFun(dereferenceC));
}
static nodes_iterator nodes_end(const DSGraph *G) {
- return map_iterator(G->getNodes().end(), DerefFun(dereferenceC));
+ return map_iterator(G->node_end(), DerefFun(dereferenceC));
}
static ChildIteratorType child_begin(const NodeType *N) { return N->begin(); }
typedef DSScalarMap ScalarMapTy;
typedef hash_map<Function*, DSNodeHandle> ReturnNodesTy;
typedef hash_set<GlobalValue*> GlobalSetTy;
+ typedef std::vector<DSNode*> NodeListTy;
/// NodeMapTy - This data type is used when cloning one graph into another to
/// keep track of the correspondence between the nodes in the old and new
DSGraph *GlobalsGraph; // Pointer to the common graph of global objects
bool PrintAuxCalls; // Should this graph print the Aux calls vector?
- std::vector<DSNode*> Nodes;
+ NodeListTy Nodes;
ScalarMapTy ScalarMap;
// ReturnNodes - A return value for every function merged into this graph.
/// getNodes - Get a vector of all the nodes in the graph
///
- const std::vector<DSNode*> &getNodes() const { return Nodes; }
- std::vector<DSNode*> &getNodes() { return Nodes; }
+ typedef NodeListTy::const_iterator node_iterator;
+ node_iterator node_begin() const { return Nodes.begin(); }
+ node_iterator node_end() const { return Nodes.end(); }
/// getFunctionNames - Return a space separated list of the name of the
/// functions in this graph (if any)
typedef std::pointer_to_unary_function<DSNode *, DSNode&> DerefFun;
// nodes_iterator/begin/end - Allow iteration over all nodes in the graph
- typedef mapped_iterator<std::vector<DSNode*>::iterator,
- DerefFun> nodes_iterator;
+ typedef mapped_iterator<DSGraph::node_iterator, DerefFun> nodes_iterator;
static nodes_iterator nodes_begin(DSGraph *G) {
- return map_iterator(G->getNodes().begin(), DerefFun(dereference));
+ return map_iterator(G->node_begin(), DerefFun(dereference));
}
static nodes_iterator nodes_end(DSGraph *G) {
- return map_iterator(G->getNodes().end(), DerefFun(dereference));
+ return map_iterator(G->node_end(), DerefFun(dereference));
}
static ChildIteratorType child_begin(NodeType *N) { return N->begin(); }
typedef std::pointer_to_unary_function<const DSNode *,const DSNode&> DerefFun;
// nodes_iterator/begin/end - Allow iteration over all nodes in the graph
- typedef mapped_iterator<std::vector<DSNode*>::const_iterator,
- DerefFun> nodes_iterator;
+ typedef mapped_iterator<DSGraph::node_iterator, DerefFun> nodes_iterator;
static nodes_iterator nodes_begin(const DSGraph *G) {
- return map_iterator(G->getNodes().begin(), DerefFun(dereferenceC));
+ return map_iterator(G->node_begin(), DerefFun(dereferenceC));
}
static nodes_iterator nodes_end(const DSGraph *G) {
- return map_iterator(G->getNodes().end(), DerefFun(dereferenceC));
+ return map_iterator(G->node_end(), DerefFun(dereferenceC));
}
static ChildIteratorType child_begin(const NodeType *N) { return N->begin(); }