ROSE  0.9.6a
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
RoseBin_Graph.h
Go to the documentation of this file.
1 /****************************************************
2  * RoseBin :: Binary Analysis for ROSE
3  * Author : tps
4  * Date : Sep26 07
5  * Decription : Visualization in DOT
6  ****************************************************/
7 
8 #ifndef __RoseBin_Graph__
9 #define __RoseBin_Graph__
10 
11 //#include <mysql.h>
12 #include <stdio.h>
13 #include <iostream>
14 
15 #include "SB_Graph.h"
16 //#include "RoseBin_support.h"
17 #include "MyAstAttribute.h"
18 //#include "RoseBin_unparse_visitor.h"
19 
20 //#include "RoseBin.h"
21 
22 class RoseBin_FlowAnalysis;
23 
24 
25 
26 
27 
28 //class RoseBin_FlowAnalysis;
29 
31  protected:
32  bool grouping;
33  // specifies that this node has no destination address
34  bool nodest_jmp ;
35  // specifies that there is a node that has a call error (calling itself)
36  bool error ;
37  // specifies a call to a unknown location
39  // specifies where its an int instruction
40  bool interrupt;
41  // specifies wheather a node has been visited by the dfa successfully
42  bool checked;
43 
44  bool dfa_standard ;
48 
49  //rose_graph_node_edge_hash_multimap unique_edges;
51  public:
52 
53 
54  //RoseBin_Graph(VirtualBinCFG::AuxiliaryInformation* info):SB_DirectedGraph(info) {grouping = true;}
55  RoseBin_Graph() {grouping = true;}
56  virtual ~RoseBin_Graph() {}
57  //RoseBin_unparse_visitor* unparser;
59  void setGrouping(bool val) {grouping = val;}
60 
62  bool forward_analysis, std::ofstream& myfile, bool mergedEdges) =0;
63  virtual void printNodes( bool dfg, RoseBin_FlowAnalysis* flow, bool forward_analysis,
64  std::ofstream &myfile, std::string& recursiveFunctionName) =0;
65 
66  virtual void printProlog( std::ofstream& myfile, std::string& fileType) =0;
67  virtual void printEpilog( std::ofstream& myfile) =0;
68 
69  void createUniqueEdges();
70 
71 };
72 
73 #endif