00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00027
#ifndef SHBASICBLOCK_HPP
00028
#define SHBASICBLOCK_HPP
00029
00030
#include <list>
00031
#include "ShBlock.hpp"
00032
#include "ShStatement.hpp"
00033
00034
namespace SH {
00035
00042 class
00043
SH_DLLEXPORT
00044 ShBasicBlock :
public ShBlock {
00045
public:
00046 ~ShBasicBlock();
00047
00048
void print(std::ostream& out,
int indent)
const;
00049
void graphvizDump(std::ostream& out)
const;
00050
00051
void addStatement(
const ShStatement& stmt);
00052
00053
typedef std::list<ShStatement> ShStmtList;
00054
00055 ShStmtList::const_iterator begin()
const;
00056 ShStmtList::const_iterator end()
const;
00057 ShStmtList::iterator begin();
00058 ShStmtList::iterator end();
00059
00060 ShStmtList::iterator erase(ShStmtList::iterator I) {
00061
return m_statements.erase(I);
00062 }
00063
00064
void splice(ShStmtList::iterator I, ShStmtList &l) {
00065 m_statements.splice(I, l);
00066 }
00067
00068
private:
00069 ShStmtList m_statements;
00070 };
00071
00072
typedef ShPointer<ShBasicBlock> ShBasicBlockPtr;
00073
typedef ShPointer<const ShBasicBlock> ShBasicBlockCPtr;
00074
00075 }
00076
00077
#endif