blob: 5d5f0cb287a62ac6eef2e8f9cb79fd158006824d [file] [log] [blame]
//===-- DSGraphDrawer.h - DSGraph viewing ------------------------*- C++ -*-==//
//
// Classes for viewing DataStructure analysis graphs
//
//===----------------------------------------------------------------------===//
#ifndef DSAGRAPHDRAWER_H
#define DSAGRAPHDRAWER_H
#include "GraphDrawer.h"
#include <wx/wx.h>
#include <string>
namespace llvm {
class Function;
class Module;
class Pass;
}
//===----------------------------------------------------------------------===//
// DSGraphDrawer abstract class
//
class DSGraphDrawer : public GraphDrawer {
protected:
llvm::Function *F;
llvm::Module *M;
DSGraphDrawer (wxWindow *parent) : GraphDrawer (parent) { }
virtual llvm::Pass *getFunctionPass(llvm::Function *F) = 0;
virtual llvm::Pass *getModulePass() = 0;
virtual std::string getFilename(llvm::Function *F) = 0;
virtual std::string getFilename(llvm::Module *M) = 0;
public:
wxImage *drawFunctionGraph(llvm::Function *F);
wxImage *drawModuleGraph(llvm::Module *M);
};
//===----------------------------------------------------------------------===//
// BUGraphDrawer
//
class BUGraphDrawer : public DSGraphDrawer {
llvm::Pass *getFunctionPass(llvm::Function *F);
llvm::Pass *getModulePass();
std::string getFilename(llvm::Function *F);
std::string getFilename(llvm::Module *M);
public:
BUGraphDrawer (wxWindow *parent) : DSGraphDrawer (parent) { }
std::string getDisplayTitle (TVTreeItemData *item);
};
//===----------------------------------------------------------------------===//
// TDGraphDrawer
//
class TDGraphDrawer : public DSGraphDrawer {
llvm::Pass *getFunctionPass(llvm::Function *F);
llvm::Pass *getModulePass();
std::string getFilename(llvm::Function *F);
std::string getFilename(llvm::Module *M);
public:
TDGraphDrawer (wxWindow *parent) : DSGraphDrawer (parent) { }
std::string getDisplayTitle (TVTreeItemData *item);
};
//===----------------------------------------------------------------------===//
// LocalGraphDrawer
//
class LocalGraphDrawer : public DSGraphDrawer {
llvm::Pass *getFunctionPass(llvm::Function *F);
llvm::Pass *getModulePass();
std::string getFilename(llvm::Function *F);
std::string getFilename(llvm::Module *M);
public:
LocalGraphDrawer (wxWindow *parent) : DSGraphDrawer (parent) { }
std::string getDisplayTitle (TVTreeItemData *item);
};
#endif // DSAGRAPHDRAWER_H