|
Go to the documentation of this file.
25 #ifndef FAUDES_TRANSSET_H
76 if ( X1 < othertrans. X1) return true;
77 if ( X1 > othertrans. X1) return false;
78 if ( Ev < othertrans. Ev) return true;
79 if ( Ev > othertrans. Ev) return false;
80 if ( X2 < othertrans. X2) return true;
86 return (( X1 == othertrans. X1) && ( Ev == othertrans. Ev) && ( X2 == othertrans. X2));
91 return (( X1 != othertrans. X1) || ( Ev != othertrans. Ev) || ( X2 != othertrans. X2));
96 return ( X1!=0) && ( Ev!=0) && ( X2!=0);
109 std::string Str( void) const {
128 if (left. Ev < right. Ev) return true;
129 if (left. Ev > right. Ev) return false;
130 if (left. X1 < right. X1) return true;
131 if (left. X1 > right. X1) return false;
132 if (left. X2 < right. X2) return true;
140 if (left. Ev < right. Ev) return true;
141 if (left. Ev > right. Ev) return false;
142 if (left. X2 < right. X2) return true;
143 if (left. X2 > right. X2) return false;
144 if (left. X1 < right. X1) return true;
152 if (left. X2 < right. X2) return true;
153 if (left. X2 > right. X2) return false;
154 if (left. Ev < right. Ev) return true;
155 if (left. Ev > right. Ev) return false;
156 if (left. X1 < right. X1) return true;
164 if (left. X2 < right. X2) return true;
165 if (left. X2 > right. X2) return false;
166 if (left. X1 < right. X1) return true;
167 if (left. X1 > right. X1) return false;
168 if (left. Ev < right. Ev) return true;
176 if (left. X1 < right. X1) return true;
177 if (left. X1 > right. X1) return false;
178 if (left. X2 < right. X2) return true;
179 if (left. X2 > right. X2) return false;
180 if (left. Ev < right. Ev) return true;
188 if (left. X1 < right. X1) return true;
189 if (left. X1 > right. X1) return false;
190 if (left. Ev < right. Ev) return true;
191 if (left. Ev > right. Ev) return false;
192 if (left. X2 < right. X2) return true;
234 template < class Cmp=TransSort::X1EvX2>
256 template< class OtherCmp>
785 template< class OtherCmp>
946 template < class Attr>
1224 #define THIS TTransSet<Cmp>
1225 #define TEMP template<class Cmp>
1226 #define BASE TBaseSet<Transition,Cmp>
1234 FD_DC( "TTransSet(" << this << ")::TTransSet()");
1241 FD_DC( "TTransSet(" << this << ")::TTransSet(rOtherSet "<< &rOtherSet << ")");
1246 TEMP template< class OtherCmp>
1250 FD_DC( "TTransSet(" << this << ")::TTransSet(rOtherSet/ReSort "<< &rOtherSet << ")");
1256 FD_DC( "TTransSet(" << this << ")::DoAssign(..)");
1258 BASE::DoAssign(rSourceSet);
1262 TEMP typename THIS::Iterator THIS::Begin( void) const {
1263 return BASE::Begin();
1267 TEMP typename THIS::Iterator THIS::End( void) const {
1273 #define SORT_EXCEPTION { std::stringstream errstr; \
1274 errstr << "Transition set order mismatch " << std::endl; \
1275 throw Exception("TransSet::Iterator()", errstr.str(), 68); }
1279 TEMP typename THIS::Iterator THIS::Begin( Idx x1) const {
1280 #ifdef FAUDES_CHECKED
1286 return THIS::ThisIterator(BASE::pSet->lower_bound(tlx));
1290 TEMP typename THIS::Iterator THIS::End( Idx x1) const {
1291 #ifdef FAUDES_CHECKED
1297 return THIS::ThisIterator(BASE::pSet->lower_bound(tlx));
1302 #ifdef FAUDES_CHECKED
1307 return THIS::ThisIterator(BASE::pSet->lower_bound(tlx));
1312 #ifdef FAUDES_CHECKED
1317 return THIS::ThisIterator(BASE::pSet->lower_bound(tlx));
1321 TEMP typename THIS::Iterator THIS::BeginByEv( Idx ev) const {
1322 #ifdef FAUDES_CHECKED
1328 return THIS::ThisIterator(BASE::pSet->lower_bound(tlx));
1332 TEMP typename THIS::Iterator THIS::EndByEv( Idx ev) const {
1333 #ifdef FAUDES_CHECKED
1339 return THIS::ThisIterator(BASE::pSet->lower_bound(tlx));
1343 TEMP typename THIS::Iterator THIS::BeginByEvX1( Idx ev, Idx x1) const {
1344 #ifdef FAUDES_CHECKED
1349 return THIS::ThisIterator(BASE::pSet->lower_bound(tlx));
1353 TEMP typename THIS::Iterator THIS::EndByEvX1( Idx ev, Idx x1) const {
1354 #ifdef FAUDES_CHECKED
1359 return THIS::ThisIterator(BASE::pSet->lower_bound(tlx));
1363 TEMP typename THIS::Iterator THIS::BeginByEvX2( Idx ev, Idx x2) const {
1364 #ifdef FAUDES_CHECKED
1369 return THIS::ThisIterator(BASE::pSet->lower_bound(tlx));
1373 TEMP typename THIS::Iterator THIS::EndByEvX2( Idx ev, Idx x2) const {
1374 #ifdef FAUDES_CHECKED
1379 return THIS::ThisIterator(BASE::pSet->lower_bound(tlx));
1383 TEMP typename THIS::Iterator THIS::BeginByX2( Idx x2) const {
1384 #ifdef FAUDES_CHECKED
1390 return THIS::ThisIterator(BASE::pSet->lower_bound(tlx));
1394 TEMP typename THIS::Iterator THIS::EndByX2( Idx x2) const {
1395 #ifdef FAUDES_CHECKED
1401 return THIS::ThisIterator(BASE::pSet->lower_bound(tlx));
1405 TEMP typename THIS::Iterator THIS::BeginByX2Ev( Idx x2, Idx ev) const {
1406 #ifdef FAUDES_CHECKED
1411 return THIS::ThisIterator(BASE::pSet->lower_bound(tlx));
1415 TEMP typename THIS::Iterator THIS::EndByX2Ev( Idx x2, Idx ev) const {
1416 #ifdef FAUDES_CHECKED
1421 return THIS::ThisIterator(BASE::pSet->lower_bound(tlx));
1430 std::string label=rLabel;
1431 if(label== "") label=BASE::Name();
1433 int oldcolumns = rTw. Columns();
1437 for (tit = Begin(); tit != End(); ++tit) {
1438 rTw << tit->X1; rTw << tit->Ev; rTw << tit->X2;
1448 return BASE::Insert(t);
1453 FD_DC( "TTransSet(" << this << ")::Insert(" << x1 << "-" << ev << "-" << x2 << ")");
1459 return BASE::Inject(pos,t);
1470 return BASE::Erase(t);
1475 FD_DC( "TTransSet(" << this << ")::Erase(" << x1 << "-" << ev << "-" << x2 << ")");
1481 FD_DC( "TTransSet(" << this << ")::Erase(" << it->X1 << "-" << it->Ev
1482 << "-" << it->X2 << ")");
1483 return BASE::Erase(it);
1488 FD_DC( "TTransSet(" << this << ")::EraseByX1(" << x1 << ")");
1489 #ifdef FAUDES_CHECKED
1495 typename BASE::iterator lower, upper, it;
1498 lower = BASE::pSet->lower_bound(tl);
1499 upper = BASE::pSet->upper_bound(tu);
1500 BASE::pSet->erase(lower, upper);
1505 FD_DC( "TTransSet(" << this << ")::EraseByX1Ev(" << x1 << "," << ev << ")");
1506 #ifdef FAUDES_CHECKED
1511 typename BASE::iterator lower, upper, it;
1514 lower = BASE::pSet->lower_bound(tl);
1515 upper = BASE::pSet->upper_bound(tu);
1516 BASE::pSet->erase(lower, upper);
1521 FD_DC( "TTransSet(" << this << ")::EraseByX2(" << x2 << ")");
1523 typename BASE::iterator it, tmpit;
1524 for(it = BASE::pSet->begin(); it != BASE::pSet->end();) {
1528 BASE::pSet->erase(tmpit);
1537 FD_DC( "TTransSet(" << this << ")::EraseByEv(" << ev << ")");
1539 typename BASE::iterator it, tmpit;
1540 for(it = BASE::pSet->begin(); it != BASE::pSet->end();) {
1544 BASE::pSet->erase(tmpit);
1555 FD_DC( "TTransSet(" << this << ")::EraseByX1OrX2(" << x << ")");
1557 typename BASE::iterator it, tmpit;
1558 for(it = BASE::pSet->begin(); it != BASE::pSet->end();) {
1559 if ((it->X1 == x) || (it->X2 == x)) {
1562 BASE::pSet->erase(tmpit);
1567 FD_DC( "TTransSet(" << this << ")::EraseByX1OrX2(" << x << "): done");
1573 FD_DC( "TTransSet(" << this << ")::EraseByX1OrX2(#" << rStates. Size() << ")");
1575 typename BASE::iterator it=BASE::pSet->begin();
1576 while(it != BASE::pSet->end()) {
1577 if(!rStates. Exists(it->X1) && !rStates. Exists(it->X2)) { ++it; continue;}
1578 BASE::pSet->erase(it++);
1580 FD_DC( "TTransSet(" << this << ")::EraseByX1OrX2(): done");
1586 FD_DC( "TTransSet(" << this << ")::RestrictByX1AndX2(#" << rStates. Size() << ")");
1588 typename BASE::iterator it;
1589 it = BASE::pSet->begin();
1590 while(it != BASE::pSet->end()) {
1591 if(rStates. Exists(it->X1) && rStates. Exists(it->X2)) { ++it; continue;}
1592 BASE::pSet->erase(it++);
1594 FD_DC( "TTransSet(" << this << ")::EraseByX1OrX2(): done");
1600 FD_DC( "TTransSet(" << this << ")::RestrictEvents(#" << rEvents. Size() << ")");
1602 typename BASE::iterator it;
1603 it = BASE::pSet->begin();
1604 while(it != BASE::pSet->end()) {
1605 if(rEvents. Exists(it->Ev)) { ++it; continue;}
1606 BASE::pSet->erase(it++);
1608 FD_DC( "TTransSet(" << this << ")::RestrictEvents(): done");
1620 return BASE::Find(t);
1625 return BASE::Exists(t);
1635 typename BASE::iterator it;
1636 for(it = BASE::pSet->begin(); it != BASE::pSet->end(); ++it) {
1637 if ((it->X1 == x) || (it->X2 == x)) {
1646 FD_DC( "TTransSet(" << this << ")::ExistsByX1Ev(" << x1 << "," << ev << ")");
1647 #ifdef FAUDES_CHECKED
1652 typename BASE::iterator lower, upper, it;
1655 lower = BASE::pSet->lower_bound(tl);
1656 upper = BASE::pSet->upper_bound(tu);
1657 return lower != upper;
1662 FD_DC( "TTransSet(" << this << ")::ExistsByX1(" << x1 << ")");
1663 #ifdef FAUDES_CHECKED
1669 typename BASE::iterator lower, upper, it;
1672 lower = BASE::pSet->lower_bound(tl);
1673 upper = BASE::pSet->upper_bound(tu);
1674 return lower != upper;
1679 TEMP template< class OtherCmp>
1683 for (it = Begin(); it != End(); ++it) {
1692 for (it=Begin(); it!=End(); ++it) {
1701 #ifdef FAUDES_CHECKED
1709 while (it != it_end) {
1718 #ifdef FAUDES_CHECKED
1724 StateSet::Iterator sit= rX1Set. Begin();
1725 StateSet::Iterator sit_end= rX1Set. End();
1726 for(;sit!=sit_end; ++sit) {
1729 while(tit!=tit_end) {
1739 #ifdef FAUDES_CHECKED
1746 while (it != it_end) {
1755 #ifdef FAUDES_CHECKED
1760 if(rEvSet. Empty()) return states;
1761 StateSet::Iterator sit= rX1Set. Begin();
1762 StateSet::Iterator sit_end= rX1Set. End();
1763 for(;sit!=sit_end; ++sit) {
1764 EventSet::Iterator eit= rEvSet. Begin();
1765 EventSet::Iterator eit_end= rEvSet. End();
1768 while(tit!=tit_end) {
1770 if(tit->Ev == *eit) {
1776 if(tit->Ev < *eit) {
1782 if(eit==eit_end) break;
1794 for (; it != it_end; ++it) {
1815 #define THIS TaTransSet<Attr>
1816 #define TEMP template <class Attr>
1817 #define BASE TTransSet<TransSort::X1EvX2>
1818 #define ABASE TaBaseSet<Transition,Attr,TransSort::X1EvX2>
1819 #define VBASE TBaseSet<Transition,TransSort::X1EvX2>
1830 FD_DC( "TaTransSet(" << this << ")::TaTransSet()");
1839 FD_DC( "TaTransSet(" << this << ")::TaTransSet(rOtherSet "<< &rOtherSet << ")");
1850 FD_DC( "TaTransSet(" << this << ")::TaTransSet(rOtherSet "<< &rOtherSet << ")");
1858 ABASE::DoAssign(rSourceSet);
1863 FD_DC( "TaTransSet(" << this << ")::Assign([v] " << &rSourceSet<< ")");
1864 FD_DC( "TaTransSet(" << this << ")::Assign(): src type " << typeid(rSourceSet).name());
1865 FD_DC( "TaTransSet(" << this << ")::Assign(): dst type " << typeid(*this).name());
1867 ABASE::Assign(rSourceSet);
1874 return Assign(rSourceSet);
1879 FD_DC( "TaTransSet(" << this << ")::Clear()");
1885 FD_DC( "TaTransSet(" << this << ")::Insert(" << t. Str() << ")");
1886 return ABASE::Insert(t);
1891 FD_DC( "TaTransSet(" << this << ")::Insert(" << x1 << "-" << ev << "-" << x2 << ")");
1893 return ABASE::Insert(t);
1898 return ABASE::Insert(t,attr);
1903 FD_DC( "TaIndexSet(" << this << ")::InsertSet( [v] " << &rOtherSet << ")");
1904 ABASE::InsertSet(rOtherSet);
1909 FD_DC( "TaIndexSet(" << this << ")::InsertSet( [a] " << &rOtherSet << ")");
1910 ABASE::InsertSet(rOtherSet);
1916 return ABASE::Erase(t);
1921 FD_DC( "TaTransSet(" << this << ")::Erase(" << x1 << "-" << ev << "-" << x2 << ")");
1923 return ABASE::Erase(t);
1928 #ifdef FAUDES_CHECKED
1930 std::stringstream errstr;
1931 errstr << "iterator out of range " << std::endl;
1932 throw Exception( "TTransSet::Erase", errstr.str(), 69);
1935 return ABASE::Erase(it);
1940 FD_DC( "TaTransSet(" << this << ")::EraseByX1(" << x1 << ")");
1944 BASE::iterator lower = BASE::pSet->lower_bound(tl);
1945 BASE::iterator upper = BASE::pSet->upper_bound(tu);
1947 if(this->AttributeSize()!=0)
1948 for(it=lower; it!=upper; ++it)
1949 ABASE::ClrAttribute(*it);
1950 BASE::pSet->erase(lower, upper);
1955 FD_DC( "TaTransSet(" << this << ")::EraseByX2(" << x2 << ")");
1957 BASE::iterator it, tmpit;
1958 for(it = BASE::pSet->begin(); it !=BASE::pSet->end();) {
1962 ABASE::ClrAttribute(*tmpit);
1963 BASE::pSet->erase(tmpit);
1972 FD_DC( "TaTransSet(" << this << ")::EraseByEv(" << ev << ")");
1974 BASE::iterator it, tmpit;
1975 for(it = BASE::pSet->begin(); it !=BASE::pSet->end();) {
1979 ABASE::ClrAttribute(*tmpit);
1980 BASE::pSet->erase(tmpit);
1990 FD_DC( "TaTransSet(" << this << ")::EraseByX1OrX2(" << x << ")");
1992 BASE::iterator it, tmpit;
1993 for(it = BASE::pSet->begin(); it !=BASE::pSet->end();) {
1994 if ((it->X1 == x) || (it->X2 == x)) {
1997 ABASE::ClrAttribute(*tmpit);
1998 BASE::pSet->erase(tmpit);
2008 FD_DC( "TaTransSet(" << this << ")::EraseByX1OrX2(#" << rStates. Size() << ")");
2010 typename BASE::iterator it = BASE::pSet->begin();
2011 while(it != BASE::pSet->end()) {
2012 if(!rStates. Exists(it->X1) && !rStates. Exists(it->X2)) { ++it; continue;}
2013 ABASE::ClrAttribute(*it);
2014 BASE::pSet->erase(it++);
2016 FD_DC( "TaTransSet(" << this << ")::EraseByX1OrX2(): done");
2021 FD_DC( "TaTransSet(" << this << ")::RestrictByX1AndX2(#" << rStates. Size() << ")");
2023 typename BASE::iterator it=BASE::pSet->begin();
2024 while(it != BASE::pSet->end()) {
2025 if(rStates. Exists(it->X1) && rStates. Exists(it->X2)) { ++it; continue;}
2026 ABASE::ClrAttribute(*it);
2027 BASE::pSet->erase(it++);
2029 FD_DC( "TaTransSet(" << this << ")::EraseByX1OrX2(): done");
2034 FD_DC( "TaTransSet(" << this << ")::RestrictEvents(#" << rEvents. Size() << ")");
2036 typename BASE::iterator it;
2037 it = BASE::pSet->begin();
2038 while(it != BASE::pSet->end()) {
2039 if(rEvents. Exists(it->Ev)) { ++it; continue;}
2040 ABASE::ClrAttribute(*it);
2041 BASE::pSet->erase(it++);
2043 FD_DC( "TaTransSet(" << this << ")::RestrictEvents(): done");
2052 FD_DC( "TaTransSet(" << this << ")::Attributes(set) with type " << typeid(rOtherSet. Attribute()).name());
2053 ABASE::Attributes(rOtherSet);
2058 FD_DC( "TaTransSet(" << this << ")::Attributes(set) with type " << typeid(rOtherSet. Attribute()).name());
2059 ABASE::Attributes(rOtherSet);
2068 #undef SORT_EXECPTION
2075 #define FAUDES_TRANSSET_H
libFAUDES 2.24g
--- 2014.09.15
--- c++ api documentaion by doxygen
|