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>
1046 template <
class Attr>
1053 using TransSet::operator=;
1054 using TransSet::operator==;
1055 using TransSet::operator!=;
1146 bool Insert(
const Transition& rTransition,
const Attr& rAttr);
1158 virtual void InsertSet(
const TransSet& rOtherSet);
1205 virtual void EraseSet(
const TransSet& rOtherSet);
1230 void RestrictSet(
const TransSet& rOtherSet);
1283 #define THIS TTransSet<Cmp>
1284 #define TEMP template<class Cmp>
1285 #define BASE TBaseSet<Transition,Cmp>
1293 FD_DC(
"TTransSet(" <<
this <<
")::TTransSet()");
1301 FD_DC(
"TTransSet(" <<
this <<
")::TTransSet(rOtherSet "<< &rOtherSet <<
")");
1306 TEMP template<
class OtherCmp>
1310 FD_DC(
"TTransSet(" <<
this <<
")::TTransSet(rOtherSet/ReSort "<< &rOtherSet <<
")");
1316 FD_DC(
"TTransSet(" <<
this <<
")::DoAssign(..)");
1318 BASE::DoAssign(rSourceSet);
1322 TEMP typename THIS::Iterator THIS::Begin(
void)
const {
1323 return BASE::Begin();
1327 TEMP typename THIS::Iterator THIS::End(
void)
const {
1333 #define SORT_EXCEPTION { std::stringstream errstr; \
1334 errstr << "Transition set order mismatch " << std::endl; \
1335 throw Exception("TransSet::Iterator()", errstr.str(), 68); }
1339 TEMP typename THIS::Iterator THIS::Begin(
Idx x1)
const {
1340 #ifdef FAUDES_CHECKED
1346 return THIS::ThisIterator(BASE::pSet->lower_bound(tlx));
1350 TEMP typename THIS::Iterator THIS::End(
Idx x1)
const {
1351 #ifdef FAUDES_CHECKED
1357 return THIS::ThisIterator(BASE::pSet->lower_bound(tlx));
1362 #ifdef FAUDES_CHECKED
1367 return THIS::ThisIterator(BASE::pSet->lower_bound(tlx));
1372 #ifdef FAUDES_CHECKED
1377 return THIS::ThisIterator(BASE::pSet->lower_bound(tlx));
1381 TEMP typename THIS::Iterator THIS::BeginByEv(
Idx ev)
const {
1382 #ifdef FAUDES_CHECKED
1388 return THIS::ThisIterator(BASE::pSet->lower_bound(tlx));
1392 TEMP typename THIS::Iterator THIS::EndByEv(
Idx ev)
const {
1393 #ifdef FAUDES_CHECKED
1399 return THIS::ThisIterator(BASE::pSet->lower_bound(tlx));
1403 TEMP typename THIS::Iterator THIS::BeginByEvX1(
Idx ev,
Idx x1)
const {
1404 #ifdef FAUDES_CHECKED
1409 return THIS::ThisIterator(BASE::pSet->lower_bound(tlx));
1413 TEMP typename THIS::Iterator THIS::EndByEvX1(
Idx ev,
Idx x1)
const {
1414 #ifdef FAUDES_CHECKED
1419 return THIS::ThisIterator(BASE::pSet->lower_bound(tlx));
1423 TEMP typename THIS::Iterator THIS::BeginByEvX2(
Idx ev,
Idx x2)
const {
1424 #ifdef FAUDES_CHECKED
1429 return THIS::ThisIterator(BASE::pSet->lower_bound(tlx));
1433 TEMP typename THIS::Iterator THIS::EndByEvX2(
Idx ev,
Idx x2)
const {
1434 #ifdef FAUDES_CHECKED
1439 return THIS::ThisIterator(BASE::pSet->lower_bound(tlx));
1443 TEMP typename THIS::Iterator THIS::BeginByX2(
Idx x2)
const {
1444 #ifdef FAUDES_CHECKED
1450 return THIS::ThisIterator(BASE::pSet->lower_bound(tlx));
1454 TEMP typename THIS::Iterator THIS::EndByX2(
Idx x2)
const {
1455 #ifdef FAUDES_CHECKED
1461 return THIS::ThisIterator(BASE::pSet->lower_bound(tlx));
1465 TEMP typename THIS::Iterator THIS::BeginByX2Ev(
Idx x2,
Idx ev)
const {
1466 #ifdef FAUDES_CHECKED
1471 return THIS::ThisIterator(BASE::pSet->lower_bound(tlx));
1475 TEMP typename THIS::Iterator THIS::EndByX2Ev(
Idx x2,
Idx ev)
const {
1476 #ifdef FAUDES_CHECKED
1481 return THIS::ThisIterator(BASE::pSet->lower_bound(tlx));
1511 std::string label=rLabel;
1512 if(label==
"") label=BASE::Name();
1514 int oldcolumns = rTw.
Columns();
1518 for (tit = Begin(); tit != End(); ++tit) {
1519 rTw << tit->X1; rTw << tit->Ev; rTw << tit->X2;
1529 return BASE::Insert(t);
1534 FD_DC(
"TTransSet(" <<
this <<
")::Insert(" << x1 <<
"-" << ev <<
"-" << x2 <<
")");
1540 return BASE::Inject(pos,t);
1551 FD_DC(
"TTransSet(" <<
this <<
")::Erase(" << t.
Str() <<
" [t])");
1552 return BASE::Erase(t);
1557 FD_DC(
"TTransSet(" <<
this <<
")::Erase(" << x1 <<
"-" << ev <<
"-" << x2 <<
")");
1563 FD_DC(
"TTransSet(" <<
this <<
")::Erase(" << this->Str(*it) <<
" [it])");
1564 return BASE::Erase(it);
1569 FD_DC(
"TTransSet(" <<
this <<
")::EraseByX1(" << x1 <<
")");
1570 #ifdef FAUDES_CHECKED
1576 typename BASE::iterator lower, upper, it;
1579 lower = BASE::pSet->lower_bound(tl);
1580 upper = BASE::pSet->upper_bound(tu);
1581 if(this->AttributesSize()!=0)
1582 for(it=lower; it!=upper; ++it)
1583 BASE::ClrAttribute(*it);
1584 BASE::pSet->erase(lower, upper);
1589 FD_DC(
"TTransSet(" <<
this <<
")::EraseByX1Ev(" << x1 <<
"," << ev <<
")");
1590 #ifdef FAUDES_CHECKED
1595 typename BASE::iterator lower, upper, it;
1598 lower = BASE::pSet->lower_bound(tl);
1599 upper = BASE::pSet->upper_bound(tu);
1600 if(this->AttributesSize()!=0)
1601 for(it=lower; it!=upper; ++it)
1602 BASE::ClrAttribute(*it);
1603 BASE::pSet->erase(lower, upper);
1608 FD_DC(
"TTransSet(" <<
this <<
")::EraseByX2(" << x2 <<
")");
1610 bool doattr = (this->AttributesSize()!=0);
1611 typename BASE::iterator it;
1612 for(it = BASE::pSet->begin(); it != BASE::pSet->end();) {
1614 if(doattr) BASE::ClrAttribute(*it);
1615 BASE::pSet->erase(it++);
1624 FD_DC(
"TTransSet(" <<
this <<
")::EraseByEv(" << ev <<
")");
1626 bool doattr = (this->AttributesSize()!=0);
1627 typename BASE::iterator it;
1628 for(it = BASE::pSet->begin(); it != BASE::pSet->end();) {
1630 if(doattr) BASE::ClrAttribute(*it);
1631 BASE::pSet->erase(it++);
1641 FD_DC(
"TTransSet(" <<
this <<
")::EraseByX1OrX2(" << x <<
")");
1643 bool doattr = (this->AttributesSize()!=0);
1644 typename BASE::iterator it;
1645 for(it = BASE::pSet->begin(); it != BASE::pSet->end();) {
1646 if ((it->X1 == x) || (it->X2 == x)) {
1647 if(doattr) BASE::ClrAttribute(*it);
1648 BASE::pSet->erase(it++);
1653 FD_DC(
"TTransSet(" <<
this <<
")::EraseByX1OrX2(" << x <<
"): done");
1659 FD_DC(
"TTransSet(" <<
this <<
")::EraseByX1OrX2(#" << rStates.
Size() <<
")");
1661 bool doattr = (this->AttributesSize()!=0);
1662 typename BASE::iterator it=BASE::pSet->begin();
1663 while(it != BASE::pSet->end()) {
1664 if(!rStates.
Exists(it->X1) && !rStates.
Exists(it->X2)) { ++it;
continue;}
1665 if(doattr) BASE::ClrAttribute(*it);
1666 BASE::pSet->erase(it++);
1668 FD_DC(
"TTransSet(" <<
this <<
")::EraseByX1OrX2(): done");
1674 FD_DC(
"TTransSet(" <<
this <<
")::RestrictByX1AndX2(#" << rStates.
Size() <<
")");
1676 bool doattr = (this->AttributesSize()!=0);
1677 typename BASE::iterator it;
1678 it = BASE::pSet->begin();
1679 while(it != BASE::pSet->end()) {
1680 if(rStates.
Exists(it->X1) && rStates.
Exists(it->X2)) { ++it;
continue;}
1681 if(doattr) BASE::ClrAttribute(*it);
1682 BASE::pSet->erase(it++);
1684 FD_DC(
"TTransSet(" <<
this <<
")::EraseByX1OrX2(): done");
1690 FD_DC(
"TTransSet(" <<
this <<
")::RestrictEvents(#" << rEvents.
Size() <<
")");
1692 bool doattr = (this->AttributesSize()!=0);
1693 typename BASE::iterator it;
1694 it = BASE::pSet->begin();
1695 while(it != BASE::pSet->end()) {
1696 if(rEvents.
Exists(it->Ev)) { ++it;
continue;}
1697 if(doattr) BASE::ClrAttribute(*it);
1698 BASE::pSet->erase(it++);
1700 FD_DC(
"TTransSet(" <<
this <<
")::RestrictEvents(): done");
1712 return BASE::Find(t);
1717 return BASE::Exists(t);
1727 typename BASE::iterator it;
1728 for(it = BASE::pSet->begin(); it != BASE::pSet->end(); ++it) {
1729 if ((it->X1 == x) || (it->X2 == x)) {
1738 FD_DC(
"TTransSet(" <<
this <<
")::ExistsByX1Ev(" << x1 <<
"," << ev <<
")");
1739 #ifdef FAUDES_CHECKED
1744 typename BASE::iterator lower, upper, it;
1747 lower = BASE::pSet->lower_bound(tl);
1748 upper = BASE::pSet->upper_bound(tu);
1749 return lower != upper;
1754 FD_DC(
"TTransSet(" <<
this <<
")::ExistsByX1(" << x1 <<
")");
1755 #ifdef FAUDES_CHECKED
1761 typename BASE::iterator lower, upper, it;
1764 lower = BASE::pSet->lower_bound(tl);
1765 upper = BASE::pSet->upper_bound(tu);
1766 return lower != upper;
1771 TEMP template<
class OtherCmp>
1775 for (it = Begin(); it != End(); ++it) {
1784 for (it=Begin(); it!=End(); ++it) {
1793 #ifdef FAUDES_CHECKED
1801 while (it != it_end) {
1810 #ifdef FAUDES_CHECKED
1816 StateSet::Iterator sit= rX1Set.
Begin();
1817 StateSet::Iterator sit_end= rX1Set.
End();
1818 for(;sit!=sit_end; ++sit) {
1821 while(tit!=tit_end) {
1831 #ifdef FAUDES_CHECKED
1838 while (it != it_end) {
1847 #ifdef FAUDES_CHECKED
1852 if(rEvSet.
Empty())
return states;
1853 StateSet::Iterator sit= rX1Set.
Begin();
1854 StateSet::Iterator sit_end= rX1Set.
End();
1855 for(;sit!=sit_end; ++sit) {
1856 EventSet::Iterator eit= rEvSet.
Begin();
1857 EventSet::Iterator eit_end= rEvSet.
End();
1860 while(tit!=tit_end) {
1862 if(tit->Ev == *eit) {
1868 if(tit->Ev < *eit) {
1874 if(eit==eit_end)
break;
1882 #ifdef FAUDES_CHECKED
1890 while (it != it_end) {
1900 #ifdef FAUDES_CHECKED
1906 StateSet::Iterator sit= rX2Set.
Begin();
1907 StateSet::Iterator sit_end= rX2Set.
End();
1908 for(;sit!=sit_end; ++sit) {
1911 while(tit!=tit_end) {
1921 #ifdef FAUDES_CHECKED
1927 Iterator it_end = EndByX2Ev(x2, ev);
1928 while (it != it_end) {
1937 #ifdef FAUDES_CHECKED
1942 if(rEvSet.
Empty())
return states;
1943 StateSet::Iterator sit= rX2Set.
Begin();
1944 StateSet::Iterator sit_end= rX2Set.
End();
1945 for(;sit!=sit_end; ++sit) {
1946 EventSet::Iterator eit= rEvSet.
Begin();
1947 EventSet::Iterator eit_end= rEvSet.
End();
1948 Iterator tit = BeginByX2Ev(*sit,*eit);
1950 while(tit!=tit_end) {
1952 if(tit->Ev == *eit) {
1958 if(tit->Ev < *eit) {
1964 if(eit==eit_end)
break;
1977 for (; it != it_end; ++it) {
1985 return rTrans.
Str();
2004 #define THIS TaTransSet<Attr>
2005 #define TEMP template <class Attr>
2006 #define BASE TTransSet<TransSort::X1EvX2>
2007 #define ABASE TAttrMap<Transition,Attr,TransSort::X1EvX2>
2017 FD_DC(
"TaTransSet(" <<
this <<
")::TaTransSet()");
2025 FD_DC(
"TaTransSet(" <<
this <<
")::TaTransSet(rOtherSet "<< &rOtherSet <<
")");
2035 FD_DC(
"TaTransSet(" <<
this <<
")::TaTransSet(rOtherSet "<< &rOtherSet <<
")");
2043 BASE::DoAssign(rSourceSet);
2048 FD_DC(
"TaTransSet(" <<
this <<
")::Assign([v] " << &rSourceSet<<
")");
2049 #ifdef FAUDES_CHECKED
2050 FD_DC(
"TaTransSet(" <<
this <<
")::Assign(): src at " << &rSourceSet);
2051 FD_DC(
"TaTransSet(" <<
this <<
")::Assign(): src type " <<
typeid(rSourceSet).name());
2052 FD_DC(
"TaTransSet(" <<
this <<
")::Assign(): dst type " <<
typeid(*this).name());
2055 std::stringstream errstr;
2056 errstr <<
"cannot cast " <<
typeid(rSourceSet).name() <<
" to TransSet" << std::endl;
2057 throw Exception(
"TaTransSet::Assign", errstr.str(), 67);
2061 ABASE::AssignWithAttributes(rSourceSet);
2069 FD_DC(
"TaTransSet(" <<
this <<
")::Insert(" << t.
Str() <<
")");
2070 return ABASE::Insert(t);
2075 FD_DC(
"TaTransSet(" <<
this <<
")::Insert(" << x1 <<
"-" << ev <<
"-" << x2 <<
")");
2077 return ABASE::Insert(t);
2082 return ABASE::Insert(t,attr);
2088 FD_DC(
"TaTransSet(" <<
this <<
")::InsertSet( [a] " << &rOtherSet <<
")");
2089 ABASE::InsertSet(rOtherSet);
2094 #ifdef FAUDES_CHECKED
2095 FD_DC(
"TaTransSet(" <<
this <<
")::InsertSet(" << rOtherSet.
ToString() <<
")");
2098 std::stringstream errstr;
2099 errstr <<
"cannot cast " <<
typeid(rOtherSet).name() <<
" to TransSet" << std::endl;
2100 throw Exception(
"TaTransSet::InsertSet", errstr.str(), 67);
2103 ABASE::InsertSet(rOtherSet);
2109 return ABASE::Erase(t);
2114 FD_DC(
"TaTransSet(" <<
this <<
")::Erase(" << x1 <<
"-" << ev <<
"-" << x2 <<
")");
2116 return ABASE::Erase(t);
2121 #ifdef FAUDES_CHECKED
2123 std::stringstream errstr;
2124 errstr <<
"iterator out of range " << std::endl;
2125 throw Exception(
"TTransSet::Erase", errstr.str(), 69);
2128 return ABASE::Erase(it);
2133 FD_DC(
"TaTransSet(" <<
this <<
")::RestrictSet( [a] " << &rOtherSet <<
")");
2134 ABASE::EraseSet(rOtherSet);
2139 #ifdef FAUDES_CHECKED
2140 FD_DC(
"TaTransSet(" <<
this <<
")::EraseSet(" << rOtherSet.
ToString() <<
")");
2143 std::stringstream errstr;
2144 errstr <<
"cannot cast " <<
typeid(rOtherSet).name() <<
" to TransSet" << std::endl;
2145 throw Exception(
"TaTransSet::EraseSet", errstr.str(), 67);
2148 ABASE::EraseSet(rOtherSet);
2153 FD_DC(
"TaTransSet(" <<
this <<
")::RestrictSet( [a] " << &rOtherSet <<
")");
2154 ABASE::RestrictSet(rOtherSet);
2160 #ifdef FAUDES_CHECKED
2161 FD_DC(
"TaTransSet(" <<
this <<
")::RestrictSet(" << rOtherSet.
ToString() <<
")");
2164 std::stringstream errstr;
2165 errstr <<
"cannot cast " <<
typeid(rOtherSet).name() <<
" to TransSet" << std::endl;
2166 throw Exception(
"TaTransSet::RestrictSet", errstr.str(), 67);
2169 ABASE::RestrictSet(rOtherSet);
2179 #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)
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
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)
std::string ToStringInteger(Int number)