25 #ifndef FAUDES_TRANSSET_H
26 #define FAUDES_TRANSSET_H
74 X1(x1), Ev(ev), X2(x2) {}
77 inline bool operator < (
const Transition& othertrans)
const {
78 if (X1 < othertrans.
X1)
return true;
79 if (X1 > othertrans.
X1)
return false;
80 if (Ev < othertrans.
Ev)
return true;
81 if (Ev > othertrans.
Ev)
return false;
82 if (X2 < othertrans.
X2)
return true;
87 inline bool operator == (
const Transition& othertrans)
const {
88 return ((X1 == othertrans.
X1) && (Ev == othertrans.
Ev) && (X2 == othertrans.
X2));
92 inline bool operator != (
const Transition& othertrans)
const {
93 return ((X1 != othertrans.
X1) || (Ev != othertrans.
Ev) || (X2 != othertrans.
X2));
98 return (X1!=0) && (Ev!=0) && (X2!=0);
111 std::string
Str(
void)
const {
130 if (left.
Ev < right.
Ev)
return true;
131 if (left.
Ev > right.
Ev)
return false;
132 if (left.
X1 < right.
X1)
return true;
133 if (left.
X1 > right.
X1)
return false;
134 if (left.
X2 < right.
X2)
return true;
142 if (left.
Ev < right.
Ev)
return true;
143 if (left.
Ev > right.
Ev)
return false;
144 if (left.
X2 < right.
X2)
return true;
145 if (left.
X2 > right.
X2)
return false;
146 if (left.
X1 < right.
X1)
return true;
154 if (left.
X2 < right.
X2)
return true;
155 if (left.
X2 > right.
X2)
return false;
156 if (left.
Ev < right.
Ev)
return true;
157 if (left.
Ev > right.
Ev)
return false;
158 if (left.
X1 < right.
X1)
return true;
166 if (left.
X2 < right.
X2)
return true;
167 if (left.
X2 > right.
X2)
return false;
168 if (left.
X1 < right.
X1)
return true;
169 if (left.
X1 > right.
X1)
return false;
170 if (left.
Ev < right.
Ev)
return true;
178 if (left.
X1 < right.
X1)
return true;
179 if (left.
X1 > right.
X1)
return false;
180 if (left.
X2 < right.
X2)
return true;
181 if (left.
X2 > right.
X2)
return false;
182 if (left.
Ev < right.
Ev)
return true;
190 if (left.
X1 < right.
X1)
return true;
191 if (left.
X1 > right.
X1)
return false;
192 if (left.
Ev < right.
Ev)
return true;
193 if (left.
Ev > right.
Ev)
return false;
194 if (left.
X2 < right.
X2)
return true;
241 template <
class Cmp=TransSort::X1EvX2>
269 template<
class OtherCmp>
833 template<
class OtherCmp>
983 virtual std::string
Str(
void)
const;
1055 template <
class Attr>
1062 using TransSet::operator=;
1063 using TransSet::operator==;
1064 using TransSet::operator!=;
1155 bool Insert(
const Transition& rTransition,
const Attr& rAttr);
1167 virtual void InsertSet(
const TransSet& rOtherSet);
1214 virtual void EraseSet(
const TransSet& rOtherSet);
1239 void RestrictSet(
const TransSet& rOtherSet);
1312 #define THIS TTransSet<Cmp>
1313 #define TEMP template<class Cmp>
1314 #define BASE TBaseSet<Transition,Cmp>
1322 FD_DC(
"TTransSet(" <<
this <<
")::TTransSet()");
1330 FD_DC(
"TTransSet(" <<
this <<
")::TTransSet(rOtherSet "<< &rOtherSet <<
")");
1335 TEMP template<
class OtherCmp>
1339 FD_DC(
"TTransSet(" <<
this <<
")::TTransSet(rOtherSet/ReSort "<< &rOtherSet <<
")");
1345 FD_DC(
"TTransSet(" <<
this <<
")::DoAssign(..)");
1347 BASE::DoAssign(rSourceSet);
1351 TEMP typename THIS::Iterator THIS::Begin(
void)
const {
1352 return BASE::Begin();
1356 TEMP typename THIS::Iterator THIS::End(
void)
const {
1362 #define SORT_EXCEPTION { std::stringstream errstr; \
1363 errstr << "Transition set order mismatch " << std::endl; \
1364 throw Exception("TransSet::Iterator()", errstr.str(), 68); }
1368 TEMP typename THIS::Iterator THIS::Begin(
Idx x1)
const {
1369 #ifdef FAUDES_CHECKED
1375 return THIS::ThisIterator(BASE::pSet->lower_bound(tlx));
1379 TEMP typename THIS::Iterator THIS::End(
Idx x1)
const {
1380 #ifdef FAUDES_CHECKED
1386 return THIS::ThisIterator(BASE::pSet->lower_bound(tlx));
1391 #ifdef FAUDES_CHECKED
1396 return THIS::ThisIterator(BASE::pSet->lower_bound(tlx));
1401 #ifdef FAUDES_CHECKED
1406 return THIS::ThisIterator(BASE::pSet->lower_bound(tlx));
1410 TEMP typename THIS::Iterator THIS::BeginByEv(
Idx ev)
const {
1411 #ifdef FAUDES_CHECKED
1417 return THIS::ThisIterator(BASE::pSet->lower_bound(tlx));
1421 TEMP typename THIS::Iterator THIS::EndByEv(
Idx ev)
const {
1422 #ifdef FAUDES_CHECKED
1428 return THIS::ThisIterator(BASE::pSet->lower_bound(tlx));
1432 TEMP typename THIS::Iterator THIS::BeginByEvX1(
Idx ev,
Idx x1)
const {
1433 #ifdef FAUDES_CHECKED
1438 return THIS::ThisIterator(BASE::pSet->lower_bound(tlx));
1442 TEMP typename THIS::Iterator THIS::EndByEvX1(
Idx ev,
Idx x1)
const {
1443 #ifdef FAUDES_CHECKED
1448 return THIS::ThisIterator(BASE::pSet->lower_bound(tlx));
1452 TEMP typename THIS::Iterator THIS::BeginByEvX2(
Idx ev,
Idx x2)
const {
1453 #ifdef FAUDES_CHECKED
1458 return THIS::ThisIterator(BASE::pSet->lower_bound(tlx));
1462 TEMP typename THIS::Iterator THIS::EndByEvX2(
Idx ev,
Idx x2)
const {
1463 #ifdef FAUDES_CHECKED
1468 return THIS::ThisIterator(BASE::pSet->lower_bound(tlx));
1472 TEMP typename THIS::Iterator THIS::BeginByX2(
Idx x2)
const {
1473 #ifdef FAUDES_CHECKED
1479 return THIS::ThisIterator(BASE::pSet->lower_bound(tlx));
1483 TEMP typename THIS::Iterator THIS::EndByX2(
Idx x2)
const {
1484 #ifdef FAUDES_CHECKED
1490 return THIS::ThisIterator(BASE::pSet->lower_bound(tlx));
1494 TEMP typename THIS::Iterator THIS::BeginByX2Ev(
Idx x2,
Idx ev)
const {
1495 #ifdef FAUDES_CHECKED
1500 return THIS::ThisIterator(BASE::pSet->lower_bound(tlx));
1504 TEMP typename THIS::Iterator THIS::EndByX2Ev(
Idx x2,
Idx ev)
const {
1505 #ifdef FAUDES_CHECKED
1510 return THIS::ThisIterator(BASE::pSet->lower_bound(tlx));
1540 std::string label=rLabel;
1541 if(label==
"") label=BASE::Name();
1543 int oldcolumns = rTw.
Columns();
1547 for (tit = Begin(); tit != End(); ++tit) {
1548 rTw << tit->X1; rTw << tit->Ev; rTw << tit->X2;
1558 return BASE::Insert(t);
1563 FD_DC(
"TTransSet(" <<
this <<
")::Insert(" << x1 <<
"-" << ev <<
"-" << x2 <<
")");
1569 return BASE::Inject(pos,t);
1580 FD_DC(
"TTransSet(" <<
this <<
")::Erase(" << t.
Str() <<
" [t])");
1581 return BASE::Erase(t);
1586 FD_DC(
"TTransSet(" <<
this <<
")::Erase(" << x1 <<
"-" << ev <<
"-" << x2 <<
")");
1592 FD_DC(
"TTransSet(" <<
this <<
")::Erase(" << this->EStr(*it) <<
" [it])");
1593 return BASE::Erase(it);
1598 FD_DC(
"TTransSet(" <<
this <<
")::EraseByX1(" << x1 <<
")");
1599 #ifdef FAUDES_CHECKED
1605 typename BASE::iterator lower, upper, it;
1608 lower = BASE::pSet->lower_bound(tl);
1609 upper = BASE::pSet->upper_bound(tu);
1610 if(this->AttributesSize()!=0)
1611 for(it=lower; it!=upper; ++it)
1612 BASE::ClrAttribute(*it);
1613 BASE::pSet->erase(lower, upper);
1618 FD_DC(
"TTransSet(" <<
this <<
")::EraseByX1Ev(" << x1 <<
"," << ev <<
")");
1619 #ifdef FAUDES_CHECKED
1624 typename BASE::iterator lower, upper, it;
1627 lower = BASE::pSet->lower_bound(tl);
1628 upper = BASE::pSet->upper_bound(tu);
1629 if(this->AttributesSize()!=0)
1630 for(it=lower; it!=upper; ++it)
1631 BASE::ClrAttribute(*it);
1632 BASE::pSet->erase(lower, upper);
1637 FD_DC(
"TTransSet(" <<
this <<
")::EraseByX2(" << x2 <<
")");
1639 bool doattr = (this->AttributesSize()!=0);
1640 typename BASE::iterator it;
1641 for(it = BASE::pSet->begin(); it != BASE::pSet->end();) {
1643 if(doattr) BASE::ClrAttribute(*it);
1644 BASE::pSet->erase(it++);
1653 FD_DC(
"TTransSet(" <<
this <<
")::EraseByEv(" << ev <<
")");
1655 bool doattr = (this->AttributesSize()!=0);
1656 typename BASE::iterator it;
1657 for(it = BASE::pSet->begin(); it != BASE::pSet->end();) {
1659 if(doattr) BASE::ClrAttribute(*it);
1660 BASE::pSet->erase(it++);
1670 FD_DC(
"TTransSet(" <<
this <<
")::EraseByX1OrX2(" << x <<
")");
1672 bool doattr = (this->AttributesSize()!=0);
1673 typename BASE::iterator it;
1674 for(it = BASE::pSet->begin(); it != BASE::pSet->end();) {
1675 if ((it->X1 == x) || (it->X2 == x)) {
1676 if(doattr) BASE::ClrAttribute(*it);
1677 BASE::pSet->erase(it++);
1682 FD_DC(
"TTransSet(" <<
this <<
")::EraseByX1OrX2(" << x <<
"): done");
1688 FD_DC(
"TTransSet(" <<
this <<
")::EraseByX1OrX2(#" << rStates.
Size() <<
")");
1690 bool doattr = (this->AttributesSize()!=0);
1691 typename BASE::iterator it=BASE::pSet->begin();
1692 while(it != BASE::pSet->end()) {
1693 if(!rStates.
Exists(it->X1) && !rStates.
Exists(it->X2)) { ++it;
continue;}
1694 if(doattr) BASE::ClrAttribute(*it);
1695 BASE::pSet->erase(it++);
1697 FD_DC(
"TTransSet(" <<
this <<
")::EraseByX1OrX2(): done");
1703 FD_DC(
"TTransSet(" <<
this <<
")::RestrictByX1AndX2(#" << rStates.
Size() <<
")");
1705 bool doattr = (this->AttributesSize()!=0);
1706 typename BASE::iterator it;
1707 it = BASE::pSet->begin();
1708 while(it != BASE::pSet->end()) {
1709 if(rStates.
Exists(it->X1) && rStates.
Exists(it->X2)) { ++it;
continue;}
1710 if(doattr) BASE::ClrAttribute(*it);
1711 BASE::pSet->erase(it++);
1713 FD_DC(
"TTransSet(" <<
this <<
")::EraseByX1OrX2(): done");
1719 FD_DC(
"TTransSet(" <<
this <<
")::RestrictEvents(#" << rEvents.
Size() <<
")");
1721 bool doattr = (this->AttributesSize()!=0);
1722 typename BASE::iterator it;
1723 it = BASE::pSet->begin();
1724 while(it != BASE::pSet->end()) {
1725 if(rEvents.
Exists(it->Ev)) { ++it;
continue;}
1726 if(doattr) BASE::ClrAttribute(*it);
1727 BASE::pSet->erase(it++);
1729 FD_DC(
"TTransSet(" <<
this <<
")::RestrictEvents(): done");
1741 return BASE::Find(t);
1746 return BASE::Exists(t);
1756 typename BASE::iterator it;
1757 for(it = BASE::pSet->begin(); it != BASE::pSet->end(); ++it) {
1758 if ((it->X1 == x) || (it->X2 == x)) {
1767 FD_DC(
"TTransSet(" <<
this <<
")::ExistsByX1Ev(" << x1 <<
"," << ev <<
")");
1768 #ifdef FAUDES_CHECKED
1773 typename BASE::iterator lower, upper, it;
1776 lower = BASE::pSet->lower_bound(tl);
1777 upper = BASE::pSet->upper_bound(tu);
1778 return lower != upper;
1783 FD_DC(
"TTransSet(" <<
this <<
")::ExistsByX1(" << x1 <<
")");
1784 #ifdef FAUDES_CHECKED
1790 typename BASE::iterator lower, upper, it;
1793 lower = BASE::pSet->lower_bound(tl);
1794 upper = BASE::pSet->upper_bound(tu);
1795 return lower != upper;
1800 TEMP template<
class OtherCmp>
1804 for (it = Begin(); it != End(); ++it) {
1813 for (it=Begin(); it!=End(); ++it) {
1822 #ifdef FAUDES_CHECKED
1830 while (it != it_end) {
1839 #ifdef FAUDES_CHECKED
1845 StateSet::Iterator sit= rX1Set.
Begin();
1846 StateSet::Iterator sit_end= rX1Set.
End();
1847 for(;sit!=sit_end; ++sit) {
1850 while(tit!=tit_end) {
1860 #ifdef FAUDES_CHECKED
1867 while (it != it_end) {
1876 #ifdef FAUDES_CHECKED
1881 if(rEvSet.
Empty())
return states;
1882 StateSet::Iterator sit= rX1Set.
Begin();
1883 StateSet::Iterator sit_end= rX1Set.
End();
1884 for(;sit!=sit_end; ++sit) {
1885 EventSet::Iterator eit= rEvSet.
Begin();
1886 EventSet::Iterator eit_end= rEvSet.
End();
1889 while(tit!=tit_end) {
1891 if(tit->Ev == *eit) {
1897 if(tit->Ev < *eit) {
1903 if(eit==eit_end)
break;
1911 #ifdef FAUDES_CHECKED
1919 while (it != it_end) {
1929 #ifdef FAUDES_CHECKED
1935 StateSet::Iterator sit= rX2Set.
Begin();
1936 StateSet::Iterator sit_end= rX2Set.
End();
1937 for(;sit!=sit_end; ++sit) {
1940 while(tit!=tit_end) {
1950 #ifdef FAUDES_CHECKED
1956 Iterator it_end = EndByX2Ev(x2, ev);
1957 while (it != it_end) {
1966 #ifdef FAUDES_CHECKED
1971 if(rEvSet.
Empty())
return states;
1972 StateSet::Iterator sit= rX2Set.
Begin();
1973 StateSet::Iterator sit_end= rX2Set.
End();
1974 for(;sit!=sit_end; ++sit) {
1975 EventSet::Iterator eit= rEvSet.
Begin();
1976 EventSet::Iterator eit_end= rEvSet.
End();
1977 Iterator tit = BeginByX2Ev(*sit,*eit);
1979 while(tit!=tit_end) {
1981 if(tit->Ev == *eit) {
1987 if(tit->Ev < *eit) {
1993 if(eit==eit_end)
break;
2006 for (; it != it_end; ++it) {
2014 return rTrans.
Str();
2018 TEMP std::string THIS::Str(
void)
const {
2019 std::stringstream str;
2020 str <<
"[" << THIS::Name() <<
"]" << std::endl;
2023 if(THIS::Size()>0)
while(
true) {
2024 str << Str(*(eit++));
2025 if(eit==eit_end)
break;
2047 #define THIS TaTransSet<Attr>
2048 #define TEMP template <class Attr>
2049 #define BASE TTransSet<TransSort::X1EvX2>
2050 #define ABASE TAttrMap<Transition,Attr,TransSort::X1EvX2>
2060 FD_DC(
"TaTransSet(" <<
this <<
")::TaTransSet()");
2068 FD_DC(
"TaTransSet(" <<
this <<
")::TaTransSet(rOtherSet "<< &rOtherSet <<
")");
2078 FD_DC(
"TaTransSet(" <<
this <<
")::TaTransSet(rOtherSet "<< &rOtherSet <<
")");
2086 BASE::DoAssign(rSourceSet);
2091 FD_DC(
"TaTransSet(" <<
this <<
")::Assign([v] " << &rSourceSet<<
")");
2092 #ifdef FAUDES_CHECKED
2093 FD_DC(
"TaTransSet(" <<
this <<
")::Assign(): src at " << &rSourceSet);
2094 FD_DC(
"TaTransSet(" <<
this <<
")::Assign(): src type " <<
typeid(rSourceSet).name());
2095 FD_DC(
"TaTransSet(" <<
this <<
")::Assign(): dst type " <<
typeid(*this).name());
2098 std::stringstream errstr;
2099 errstr <<
"cannot cast " <<
typeid(rSourceSet).name() <<
" to TransSet" << std::endl;
2100 throw Exception(
"TaTransSet::Assign", errstr.str(), 67);
2104 ABASE::AssignWithAttributes(rSourceSet);
2112 FD_DC(
"TaTransSet(" <<
this <<
")::Insert(" << t.
Str() <<
")");
2113 return ABASE::Insert(t);
2118 FD_DC(
"TaTransSet(" <<
this <<
")::Insert(" << x1 <<
"-" << ev <<
"-" << x2 <<
")");
2120 return ABASE::Insert(t);
2125 return ABASE::Insert(t,attr);
2131 FD_DC(
"TaTransSet(" <<
this <<
")::InsertSet( [a] " << &rOtherSet <<
")");
2132 ABASE::InsertSet(rOtherSet);
2137 #ifdef FAUDES_CHECKED
2138 FD_DC(
"TaTransSet(" <<
this <<
")::InsertSet(" << rOtherSet.
ToString() <<
")");
2141 std::stringstream errstr;
2142 errstr <<
"cannot cast " <<
typeid(rOtherSet).name() <<
" to TransSet" << std::endl;
2143 throw Exception(
"TaTransSet::InsertSet", errstr.str(), 67);
2146 ABASE::InsertSet(rOtherSet);
2152 return ABASE::Erase(t);
2157 FD_DC(
"TaTransSet(" <<
this <<
")::Erase(" << x1 <<
"-" << ev <<
"-" << x2 <<
")");
2159 return ABASE::Erase(t);
2164 #ifdef FAUDES_CHECKED
2166 std::stringstream errstr;
2167 errstr <<
"iterator out of range " << std::endl;
2168 throw Exception(
"TTransSet::Erase", errstr.str(), 69);
2171 return ABASE::Erase(it);
2176 FD_DC(
"TaTransSet(" <<
this <<
")::RestrictSet( [a] " << &rOtherSet <<
")");
2177 ABASE::EraseSet(rOtherSet);
2182 #ifdef FAUDES_CHECKED
2183 FD_DC(
"TaTransSet(" <<
this <<
")::EraseSet(" << rOtherSet.
ToString() <<
")");
2186 std::stringstream errstr;
2187 errstr <<
"cannot cast " <<
typeid(rOtherSet).name() <<
" to TransSet" << std::endl;
2188 throw Exception(
"TaTransSet::EraseSet", errstr.str(), 67);
2191 ABASE::EraseSet(rOtherSet);
2196 FD_DC(
"TaTransSet(" <<
this <<
")::RestrictSet( [a] " << &rOtherSet <<
")");
2197 ABASE::RestrictSet(rOtherSet);
2203 #ifdef FAUDES_CHECKED
2204 FD_DC(
"TaTransSet(" <<
this <<
")::RestrictSet(" << rOtherSet.
ToString() <<
")");
2207 std::stringstream errstr;
2208 errstr <<
"cannot cast " <<
typeid(rOtherSet).name() <<
" to TransSet" << std::endl;
2209 throw Exception(
"TaTransSet::RestrictSet", errstr.str(), 67);
2212 ABASE::RestrictSet(rOtherSet);
2222 #undef SORT_EXECPTION
Classes IndexSet, TaIndexSet.
Classes NameSet, TaNameSet.
#define FAUDES_TYPE_DECLARATION(ftype, ctype, cbase)
#define FAUDES_TYPE_TIMPLEMENTATION(ftype, ctype, cbase, ctemp)
bool Exists(const Idx &rIndex) const
SymbolTable * SymbolTablep(void) const
bool Insert(const Idx &rIndex)
const Attr & Attribute(const T &rElem) const
Attr * Attributep(const T &rElem)
void AttributeTry(const T &rElem, const Type &attr)
const Attr * AttributeType(void) const
StateSet PredecessorStates(Idx x2) const
Iterator EndByEvX2(Idx ev, Idx x2) const
Iterator Begin(void) const
bool ExistsByX1OrX2(Idx x) const
bool Insert(Idx x1, Idx ev, Idx x2)
Iterator Find(Idx x1, Idx ev, Idx x2) const
bool Erase(Idx x1, Idx ev, Idx x2)
Iterator Find(const Transition &t) const
Iterator BeginByX2Ev(Idx x2, Idx ev) const
Iterator Begin(Idx x1) const
virtual void DoWrite(TokenWriter &rTw, const std::string &rLabel="", const Type *pContext=0) const
EventSet ActiveEvents(Idx x1, SymbolTable *pSymTab=NULL) const
Iterator Begin(Idx x1, Idx ev) const
StateSet SuccessorStates(const StateSet &rX1Set) const
TTransSet(const TTransSet< Cmp > &rOtherSet)
virtual std::string Str(void) const
StateSet PredecessorStates(const StateSet &rX2Set) const
bool Exists(const Transition &t) const
Iterator BeginByEvX1(Idx ev, Idx x1) const
Iterator End(Idx x1, Idx ev) const
StateSet SuccessorStates(Idx x1, Idx ev) const
void RestrictStates(const StateSet &rStateSet)
Iterator EndByEv(Idx ev) const
Iterator EndByEvX1(Idx ev, Idx x1) const
Iterator EndByX2Ev(Idx x2, Idx ev) const
StateSet States(void) const
Iterator BeginByX2(Idx x2) const
TTransSet(const TTransSet< OtherCmp > &res)
void EraseByX1Ev(Idx x1, Idx ev)
Iterator BeginByEv(Idx ev) const
bool Insert(const Transition &rTransition)
Iterator EndByX2(Idx x2) const
bool ExistsByX1Ev(Idx x1, Idx ev) const
Iterator Inject(const Iterator &pos, const Transition &rTransition)
bool Exists(Idx x1, Idx ev, Idx x2) const
Iterator Erase(const Iterator &it)
void DoAssign(const TTransSet &rSource)
void Inject(const Transition &rTransition)
bool Erase(const Transition &t)
StateSet SuccessorStates(Idx x1) const
void EraseByX1OrX2(const StateSet &rStates)
void RestrictEvents(const EventSet &rEventSet)
void EraseByX1OrX2(Idx x)
TBaseSet< Transition, Cmp >::Iterator Iterator
StateSet PredecessorStates(Idx x2, Idx ev) const
Iterator End(Idx x1) const
StateSet SuccessorStates(const StateSet &rX1Set, const EventSet &rEvSet) const
virtual std::string Str(const Transition &rTrans) const
void ReSort(TTransSet< OtherCmp > &res) const
StateSet PredecessorStates(const StateSet &rX2Set, const EventSet &rEvSet) const
bool ExistsByX1(Idx x1) const
Iterator BeginByEvX2(Idx ev, Idx x2) const
virtual TaTransSet & Assign(const TBaseSet< Transition, TransSort::X1EvX2 > &rSrc)
virtual TaTransSet & operator=(const TransSet &rSrc)
Attr * Attributep(const Transition &rElem)
TTransSet< TransSort::X1EvX2 >::Iterator Iterator
void DoAssign(const TaTransSet &rSource)
void AttributeTry(const Transition &rElem, const Type &rAttr)
void Attribute(const Transition &rElem, const Attr &rAttr)
const Attr * AttributeType(void) const
void Attribute(const Transition &rElem, const Type &rAttr)
const Attr & Attribute(const Transition &rElem) const
void WriteEnd(const std::string &rLabel)
void WriteBegin(const std::string &rLabel)
Transition(Idx x1, Idx ev, Idx x2)
std::string Str(void) const
std::string ToString(const std::string &rLabel="", const Type *pContext=0) const
virtual Type & Assign(const Type &rSrc)
TTransSet< TransSort::EvX2X1 > TransSetEvX2X1
TTransSet< TransSort::X1EvX2 > TransSetX1EvX2
bool Exists(const T &rElem) const
TTransSet< TransSort::X1EvX2 > TransSet
TTransSet< TransSort::X2EvX1 > TransSetX2EvX1
TTransSet< TransSort::X1X2Ev > TransSetX1X2Ev
virtual void RestrictSet(const TBaseSet &rOtherSet)
virtual void InsertSet(const TBaseSet &rOtherSet)
Iterator Begin(void) const
TTransSet< TransSort::EvX1X2 > TransSetEvX1X2
TTransSet< TransSort::X2X1Ev > TransSetX2X1Ev
virtual void EraseSet(const TBaseSet &rOtherSet)
void ApplyRelabelMap(const RelabelMap &rMap, const vGenerator &rGen, vGenerator &rRes)
std::string ToStringInteger(Int number)