00001
00002
00003
00004
00005
00006
00007
00008 #ifndef SUMMARYUNIT_H_
00009 #define SUMMARYUNIT_H_
00010
00011 #include <string>
00012 #include "../Identifier.h"
00013 using namespace std;
00014
00015
00016
00017
00018 namespace sail{
00019 class BasicBlock;
00020 class Variable;
00021
00026 class SummaryUnit {
00027 friend class boost::serialization::access;
00028
00029 template<class Archive>
00030 void serialize(Archive & ar, const unsigned int version)
00031 {
00032 }
00033 public:
00034 SummaryUnit();
00035 virtual ~SummaryUnit();
00036
00037 virtual Identifier get_identifier() = 0;
00038
00039
00040
00041 virtual bool is_function() = 0;
00042 virtual bool is_superblock() = 0;
00043
00044 virtual BasicBlock* get_entry_block() = 0;
00045 virtual BasicBlock* get_exit_block() = 0;
00046 virtual BasicBlock* get_exception_block() = 0;
00047
00048
00049
00050
00051
00052 bool is_local(sail::Variable* v);
00053
00054 };
00055 }
00056
00057 #endif