00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00024 #ifndef SHBASICBLOCK_HPP
00025 #define SHBASICBLOCK_HPP
00026
00027 #include <list>
00028 #include "ShBlock.hpp"
00029 #include "ShStatement.hpp"
00030
00031 namespace SH {
00032
00039 class
00040 SH_DLLEXPORT
00041 ShBasicBlock : public ShBlock {
00042 public:
00043 typedef std::list<ShStatement> ShStmtList;
00044 typedef ShStmtList::iterator iterator;
00045 typedef ShStmtList::const_iterator const_iterator;
00046 typedef ShStmtList::reverse_iterator reverse_iterator;
00047 typedef ShStmtList::const_reverse_iterator const_reverse_iterator;
00048
00049 ~ShBasicBlock();
00050
00051 void print(std::ostream& out, int indent) const;
00052 void graphvizDump(std::ostream& out) const;
00053
00056 void addStatement(const ShStatement& stmt);
00057
00060 void prependStatement(const ShStatement& stmt);
00061
00062
00063
00064 bool empty() { return m_statements.empty(); }
00065
00066 const_iterator begin() const { return m_statements.begin(); }
00067 const_iterator end() const { return m_statements.end(); }
00068 iterator begin() { return m_statements.begin(); }
00069 iterator end() { return m_statements.end(); }
00070
00071 const_reverse_iterator rbegin() const { return m_statements.rbegin(); }
00072 const_reverse_iterator rend() const { return m_statements.rend(); }
00073 reverse_iterator rbegin() { return m_statements.rbegin(); }
00074 reverse_iterator rend() { return m_statements.rend(); }
00075
00076 iterator erase(iterator I) { return m_statements.erase(I); }
00077
00078
00079
00080 void splice(iterator I, ShStmtList &l) { m_statements.splice(I, l); }
00081
00082
00083
00084 void splice(iterator I, ShStmtList &l, iterator lI) {
00085 m_statements.splice(I, l, lI, l.end());
00086 }
00087
00088 ShStmtList m_statements;
00089
00090 };
00091
00092 typedef ShPointer<ShBasicBlock> ShBasicBlockPtr;
00093 typedef ShPointer<const ShBasicBlock> ShBasicBlockCPtr;
00094
00095 }
00096
00097 #endif