00001 00002 00003 #ifndef __RoseBin_GraphAlgorithms__ 00004 #define __RoseBin_GraphAlgorithms__ 00005 00006 #include "RoseBin_Graph.h" 00007 00008 class GraphAlgorithms { 00009 private: 00010 00011 public: 00012 //remove later! 00013 //typedef rose_hash::unordered_map <std::string, SgGraphNode*,rose_hash::hash_string,rose_hash::eqstr_string> nodeType; 00014 // typedef rose_graph_node_edge_hash_multimap edgeType; 00015 // typedef rose_graph_hash_multimap nodeType; 00016 00017 VirtualBinCFG::AuxiliaryInformation* info; 00018 00019 //VirtualBinCFG::AuxiliaryInformation* get_bininfo() {return info;} 00020 //void set_bininfo(VirtualBinCFG::AuxiliaryInformation* in) { info=in;} 00021 00022 GraphAlgorithms(VirtualBinCFG::AuxiliaryInformation* info): 00023 #ifdef _MSC_VER 00024 //#define __builtin_constant_p(exp) (0) 00025 #endif 00026 info(info) {ROSE_ASSERT(info);} 00027 virtual ~GraphAlgorithms() {} 00028 00029 SgGraphNode* getDefinitionForUsage(RoseBin_Graph* vizzGraph,SgGraphNode* def); 00030 00031 void getDirectCFGSuccessors(RoseBin_Graph* vizzGraph,SgGraphNode* node, std::vector <SgGraphNode*>& vec ); 00032 void getDirectCFGPredecessors(RoseBin_Graph* vizzGraph,SgGraphNode* node, std::vector <SgGraphNode*>& vec ); 00033 bool isValidCFGEdge(SgGraphNode* sgNode, SgGraphNode* sgNodeBefore); 00034 bool isDirectCFGEdge(SgGraphNode* sgNode, SgGraphNode* sgNodeBefore); 00035 00036 }; 00037 00038 00039 #endif
1.4.7