|
|
Go to the documentation of this file.
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;
241template < class Cmp=TransSort::X1EvX2>
268 template< class OtherCmp>
832 template< class OtherCmp>
1000 virtual std::string Str( void) const;
1098template < class Attr>
1105 using TransSet::operator=;
1106 using TransSet::operator==;
1107 using TransSet::operator!=;
1198 bool Insert( const Transition& rTransition, const Attr& rAttr);
1210 virtual void InsertSet( const TransSet& rOtherSet);
1257 virtual void EraseSet( const TransSet& rOtherSet);
1282 void RestrictSet( const TransSet& rOtherSet);
1364#define THIS TTransSet<Cmp>
1365#define TEMP template<class Cmp>
1366#define BASE TBaseSet<Transition,Cmp>
1374 FD_DC( "TTransSet(" << this << ")::TTransSet()");
1382 FD_DC( "TTransSet(" << this << ")::TTransSet(rOtherSet "<< &rOtherSet << ")");
1387TEMP template< class OtherCmp>
1391 FD_DC( "TTransSet(" << this << ")::TTransSet(rOtherSet/ReSort "<< &rOtherSet << ")");
1397 FD_DC( "TTransSet(" << this << ")::DoCopy(..)");
1399 BASE::DoCopy(rSourceSet);
1404 FD_DC( "TTransSet(" << this << ")::DoMove(..): not implemented");
1406 BASE::DoMove(rSourceSet);
1410TEMP typename THIS::Iterator THIS::Begin( void) const {
1411 return BASE::Begin();
1415TEMP typename THIS::Iterator THIS::End( void) const {
1421#define SORT_EXCEPTION { std::stringstream errstr; \
1422 errstr << "Transition set order mismatch " << std::endl; \
1423 throw Exception("TransSet::Iterator()", errstr.str(), 68); }
1427TEMP typename THIS::Iterator THIS::Begin( Idx x1) const {
1428#ifdef FAUDES_CHECKED
1434 return THIS::ThisIterator(BASE::pSet->lower_bound(tlx));
1438TEMP typename THIS::Iterator THIS::End( Idx x1) const {
1439#ifdef FAUDES_CHECKED
1445 return THIS::ThisIterator(BASE::pSet->lower_bound(tlx));
1450#ifdef FAUDES_CHECKED
1455 return THIS::ThisIterator(BASE::pSet->lower_bound(tlx));
1460#ifdef FAUDES_CHECKED
1465 return THIS::ThisIterator(BASE::pSet->lower_bound(tlx));
1469TEMP typename THIS::Iterator THIS::BeginByEv( Idx ev) const {
1470#ifdef FAUDES_CHECKED
1476 return THIS::ThisIterator(BASE::pSet->lower_bound(tlx));
1480TEMP typename THIS::Iterator THIS::EndByEv( Idx ev) const {
1481#ifdef FAUDES_CHECKED
1487 return THIS::ThisIterator(BASE::pSet->lower_bound(tlx));
1491TEMP typename THIS::Iterator THIS::BeginByEvX1( Idx ev, Idx x1) const {
1492#ifdef FAUDES_CHECKED
1497 return THIS::ThisIterator(BASE::pSet->lower_bound(tlx));
1501TEMP typename THIS::Iterator THIS::EndByEvX1( Idx ev, Idx x1) const {
1502#ifdef FAUDES_CHECKED
1507 return THIS::ThisIterator(BASE::pSet->lower_bound(tlx));
1511TEMP typename THIS::Iterator THIS::BeginByEvX2( Idx ev, Idx x2) const {
1512#ifdef FAUDES_CHECKED
1517 return THIS::ThisIterator(BASE::pSet->lower_bound(tlx));
1521TEMP typename THIS::Iterator THIS::EndByEvX2( Idx ev, Idx x2) const {
1522#ifdef FAUDES_CHECKED
1527 return THIS::ThisIterator(BASE::pSet->lower_bound(tlx));
1531TEMP typename THIS::Iterator THIS::BeginByX2( Idx x2) const {
1532#ifdef FAUDES_CHECKED
1538 return THIS::ThisIterator(BASE::pSet->lower_bound(tlx));
1542TEMP typename THIS::Iterator THIS::EndByX2( Idx x2) const {
1543#ifdef FAUDES_CHECKED
1549 return THIS::ThisIterator(BASE::pSet->lower_bound(tlx));
1553TEMP typename THIS::Iterator THIS::BeginByX2Ev( Idx x2, Idx ev) const {
1554#ifdef FAUDES_CHECKED
1559 return THIS::ThisIterator(BASE::pSet->lower_bound(tlx));
1563TEMP typename THIS::Iterator THIS::EndByX2Ev( Idx x2, Idx ev) const {
1564#ifdef FAUDES_CHECKED
1569 return THIS::ThisIterator(BASE::pSet->lower_bound(tlx));
1599 std::string label=rLabel;
1600 if(label== "") label=BASE::Name();
1602 int oldcolumns = rTw. Columns();
1606 for (tit = Begin(); tit != End(); ++tit) {
1607 rTw << tit->X1; rTw << tit->Ev; rTw << tit->X2;
1619 std::string label=rLabel;
1620 std::string ftype=BASE::TypeName();
1627 if(label== "") label=ftype;
1633 FD_DC( "TransSet(" << typeid(*this).name() << ")::DoRead(..): section " << label << " elements " << etstr);
1635 while(!rTr. Eos(label)) {
1647 std::stringstream errstr;
1648 errstr << "Reading TransRel failed in " << rTr. FileLine() << ": invalid token " << token. Str();
1649 throw Exception( "TransRel::DoRead", errstr.str(), 50);
1662 FD_DC( "TransRel(" << this << ")::DoRead(\"" << rTr. FileName() << "\"): done");
1668 return BASE::Insert(t);
1673 FD_DC( "TTransSet(" << this << ")::Insert(" << x1 << "-" << ev << "-" << x2 << ")");
1679 return BASE::Inject(pos,t);
1690 FD_DC( "TTransSet(" << this << ")::Erase(" << t. Str() << " [t])");
1691 return BASE::Erase(t);
1696 FD_DC( "TTransSet(" << this << ")::Erase(" << x1 << "-" << ev << "-" << x2 << ")");
1702 FD_DC( "TTransSet(" << this << ")::Erase(" << this->EStr(*it) << " [it])");
1703 return BASE::Erase(it);
1708 FD_DC( "TTransSet(" << this << ")::EraseByX1(" << x1 << ")");
1709#ifdef FAUDES_CHECKED
1715 typename BASE::iterator lower, upper, it;
1718 lower = BASE::pSet->lower_bound(tl);
1719 upper = BASE::pSet->upper_bound(tu);
1720 if(this->AttributesSize()!=0)
1721 for(it=lower; it!=upper; ++it)
1722 BASE::ClrAttribute(*it);
1723 BASE::pSet->erase(lower, upper);
1728 FD_DC( "TTransSet(" << this << ")::EraseByX1Ev(" << x1 << "," << ev << ")");
1729#ifdef FAUDES_CHECKED
1734 typename BASE::iterator lower, upper, it;
1737 lower = BASE::pSet->lower_bound(tl);
1738 upper = BASE::pSet->upper_bound(tu);
1739 if(this->AttributesSize()!=0)
1740 for(it=lower; it!=upper; ++it)
1741 BASE::ClrAttribute(*it);
1742 BASE::pSet->erase(lower, upper);
1747 FD_DC( "TTransSet(" << this << ")::EraseByX2(" << x2 << ")");
1749 bool doattr = (this->AttributesSize()!=0);
1750 typename BASE::iterator it;
1751 for(it = BASE::pSet->begin(); it != BASE::pSet->end();) {
1753 if(doattr) BASE::ClrAttribute(*it);
1754 BASE::pSet->erase(it++);
1763 FD_DC( "TTransSet(" << this << ")::EraseByEv(" << ev << ")");
1765 bool doattr = (this->AttributesSize()!=0);
1766 typename BASE::iterator it;
1767 for(it = BASE::pSet->begin(); it != BASE::pSet->end();) {
1769 if(doattr) BASE::ClrAttribute(*it);
1770 BASE::pSet->erase(it++);
1780 FD_DC( "TTransSet(" << this << ")::EraseByX1OrX2(" << x << ")");
1782 bool doattr = (this->AttributesSize()!=0);
1783 typename BASE::iterator it;
1784 for(it = BASE::pSet->begin(); it != BASE::pSet->end();) {
1785 if ((it->X1 == x) || (it->X2 == x)) {
1786 if(doattr) BASE::ClrAttribute(*it);
1787 BASE::pSet->erase(it++);
1792 FD_DC( "TTransSet(" << this << ")::EraseByX1OrX2(" << x << "): done");
1798 FD_DC( "TTransSet(" << this << ")::EraseByX1OrX2(#" << rStates. Size() << ")");
1800 bool doattr = (this->AttributesSize()!=0);
1801 typename BASE::iterator it=BASE::pSet->begin();
1802 while(it != BASE::pSet->end()) {
1803 if(!rStates. Exists(it->X1) && !rStates. Exists(it->X2)) { ++it; continue;}
1804 if(doattr) BASE::ClrAttribute(*it);
1805 BASE::pSet->erase(it++);
1807 FD_DC( "TTransSet(" << this << ")::EraseByX1OrX2(): done");
1813 FD_DC( "TTransSet(" << this << ")::RestrictByX1AndX2(#" << rStates. Size() << ")");
1815 bool doattr = (this->AttributesSize()!=0);
1816 typename BASE::iterator it;
1817 it = BASE::pSet->begin();
1818 while(it != BASE::pSet->end()) {
1819 if(rStates. Exists(it->X1) && rStates. Exists(it->X2)) { ++it; continue;}
1820 if(doattr) BASE::ClrAttribute(*it);
1821 BASE::pSet->erase(it++);
1823 FD_DC( "TTransSet(" << this << ")::EraseByX1OrX2(): done");
1829 FD_DC( "TTransSet(" << this << ")::RestrictEvents(#" << rEvents. Size() << ")");
1831 bool doattr = (this->AttributesSize()!=0);
1832 typename BASE::iterator it;
1833 it = BASE::pSet->begin();
1834 while(it != BASE::pSet->end()) {
1835 if(rEvents. Exists(it->Ev)) { ++it; continue;}
1836 if(doattr) BASE::ClrAttribute(*it);
1837 BASE::pSet->erase(it++);
1839 FD_DC( "TTransSet(" << this << ")::RestrictEvents(): done");
1851 return BASE::Find(t);
1856 return BASE::Exists(t);
1866 typename BASE::iterator it;
1867 for(it = BASE::pSet->begin(); it != BASE::pSet->end(); ++it) {
1868 if ((it->X1 == x) || (it->X2 == x)) {
1877 FD_DC( "TTransSet(" << this << ")::ExistsByX1Ev(" << x1 << "," << ev << ")");
1878#ifdef FAUDES_CHECKED
1883 typename BASE::iterator lower, upper, it;
1886 lower = BASE::pSet->lower_bound(tl);
1887 upper = BASE::pSet->upper_bound(tu);
1888 return lower != upper;
1893 FD_DC( "TTransSet(" << this << ")::ExistsByX1(" << x1 << ")");
1894#ifdef FAUDES_CHECKED
1900 typename BASE::iterator lower, upper, it;
1903 lower = BASE::pSet->lower_bound(tl);
1904 upper = BASE::pSet->upper_bound(tu);
1905 return lower != upper;
1910TEMP template< class OtherCmp>
1914 for (it = Begin(); it != End(); ++it) {
1923 for (it=Begin(); it!=End(); ++it) {
1932#ifdef FAUDES_CHECKED
1940 while (it != it_end) {
1949#ifdef FAUDES_CHECKED
1955 StateSet::Iterator sit= rX1Set. Begin();
1956 StateSet::Iterator sit_end= rX1Set. End();
1957 for(;sit!=sit_end; ++sit) {
1960 while(tit!=tit_end) {
1970#ifdef FAUDES_CHECKED
1977 while (it != it_end) {
1986#ifdef FAUDES_CHECKED
1991 if(rEvSet. Empty()) return states;
1992 StateSet::Iterator sit= rX1Set. Begin();
1993 StateSet::Iterator sit_end= rX1Set. End();
1994 for(;sit!=sit_end; ++sit) {
1995 EventSet::Iterator eit= rEvSet. Begin();
1996 EventSet::Iterator eit_end= rEvSet. End();
1999 while(tit!=tit_end) {
2001 if(tit->Ev == *eit) {
2007 if(tit->Ev < *eit) {
2013 if(eit==eit_end) break;
2021#ifdef FAUDES_CHECKED
2029 while (it != it_end) {
2039#ifdef FAUDES_CHECKED
2045 StateSet::Iterator sit= rX2Set. Begin();
2046 StateSet::Iterator sit_end= rX2Set. End();
2047 for(;sit!=sit_end; ++sit) {
2050 while(tit!=tit_end) {
2060#ifdef FAUDES_CHECKED
2066 Iterator it_end = EndByX2Ev(x2, ev);
2067 while (it != it_end) {
2076#ifdef FAUDES_CHECKED
2081 if(rEvSet. Empty()) return states;
2082 StateSet::Iterator sit= rX2Set. Begin();
2083 StateSet::Iterator sit_end= rX2Set. End();
2084 for(;sit!=sit_end; ++sit) {
2085 EventSet::Iterator eit= rEvSet. Begin();
2086 EventSet::Iterator eit_end= rEvSet. End();
2087 Iterator tit = BeginByX2Ev(*sit,*eit);
2089 while(tit!=tit_end) {
2091 if(tit->Ev == *eit) {
2097 if(tit->Ev < *eit) {
2103 if(eit==eit_end) break;
2116 for (; it != it_end; ++it) {
2128 for (; it != it_end; ++it) {
2136 return rTrans. Str();
2140TEMP std::string THIS::Str( void) const {
2141 std::stringstream str;
2142 str << "[" << THIS::Name() << "]" << std::endl;
2145 if(THIS::Size()>0) while( true) {
2146 str << Str(*(eit++));
2147 if(eit==eit_end) break;
2169#define THIS TaTransSet<Attr>
2170#define TEMP template <class Attr>
2171#define BASE TTransSet<TransSort::X1EvX2>
2172#define ABASE TAttrMap<Transition,Attr,TransSort::X1EvX2>
2182 FD_DC( "TaTransSet(" << this << ")::TaTransSet()");
2190 FD_DC( "TaTransSet(" << this << ")::TaTransSet(rOtherSet "<< &rOtherSet << ")");
2200 FD_DC( "TaTransSet(" << this << ")::TaTransSet(rOtherSet "<< &rOtherSet << ")");
2208 BASE::DoCopy(rSourceSet);
2213 FD_WARN( "TaTransSet(" << this << ")::DoMove(" << &rSourceSet<< "): fallback to DoCopy");
2215 BASE::DoCopy(rSourceSet);
2220 FD_DC( "TaTransSet(" << this << ")::Copy([v] " << &rSourceSet<< ")");
2221#ifdef FAUDES_CHECKED
2222 FD_DC( "TaTransSet(" << this << ")::Copy(): src at " << &rSourceSet);
2223 FD_DC( "TaTransSet(" << this << ")::Copy(): src type " << typeid(rSourceSet).name());
2224 FD_DC( "TaTransSet(" << this << ")::Copy(): dst type " << typeid(*this).name());
2227 std::stringstream errstr;
2228 errstr << "cannot cast " << typeid(rSourceSet).name() << " to TransSet" << std::endl;
2229 throw Exception( "TaTransSet::Copy", errstr.str(), 67);
2233 ABASE::CopyWithAttributes(rSourceSet);
2241 FD_DC( "TaTransSet(" << this << ")::Insert(" << t. Str() << ")");
2242 return ABASE::Insert(t);
2247 FD_DC( "TaTransSet(" << this << ")::Insert(" << x1 << "-" << ev << "-" << x2 << ")");
2249 return ABASE::Insert(t);
2254 return ABASE::Insert(t,attr);
2260 FD_DC( "TaTransSet(" << this << ")::InsertSet( [a] " << &rOtherSet << ")");
2261 ABASE::InsertSet(rOtherSet);
2266#ifdef FAUDES_CHECKED
2267 FD_DC( "TaTransSet(" << this << ")::InsertSet(" << rOtherSet. ToString() << ")");
2270 std::stringstream errstr;
2271 errstr << "cannot cast " << typeid(rOtherSet).name() << " to TransSet" << std::endl;
2272 throw Exception( "TaTransSet::InsertSet", errstr.str(), 67);
2275 ABASE::InsertSet(rOtherSet);
2281 return ABASE::Erase(t);
2286 FD_DC( "TaTransSet(" << this << ")::Erase(" << x1 << "-" << ev << "-" << x2 << ")");
2288 return ABASE::Erase(t);
2293#ifdef FAUDES_CHECKED
2295 std::stringstream errstr;
2296 errstr << "iterator out of range " << std::endl;
2297 throw Exception( "TTransSet::Erase", errstr.str(), 69);
2300 return ABASE::Erase(it);
2305 FD_DC( "TaTransSet(" << this << ")::RestrictSet( [a] " << &rOtherSet << ")");
2306 ABASE::EraseSet(rOtherSet);
2311#ifdef FAUDES_CHECKED
2312 FD_DC( "TaTransSet(" << this << ")::EraseSet(" << rOtherSet. ToString() << ")");
2315 std::stringstream errstr;
2316 errstr << "cannot cast " << typeid(rOtherSet).name() << " to TransSet" << std::endl;
2317 throw Exception( "TaTransSet::EraseSet", errstr.str(), 67);
2320 ABASE::EraseSet(rOtherSet);
2325 FD_DC( "TaTransSet(" << this << ")::RestrictSet( [a] " << &rOtherSet << ")");
2326 ABASE::RestrictSet(rOtherSet);
2332#ifdef FAUDES_CHECKED
2333 FD_DC( "TaTransSet(" << this << ")::RestrictSet(" << rOtherSet. ToString() << ")");
2336 std::stringstream errstr;
2337 errstr << "cannot cast " << typeid(rOtherSet).name() << " to TransSet" << std::endl;
2338 throw Exception( "TaTransSet::RestrictSet", errstr.str(), 67);
2341 ABASE::RestrictSet(rOtherSet);
2351#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)
StateSet PredecessorStates(Idx x2) const
Iterator EndByEvX2(Idx ev, Idx x2) const
void DoMove(TTransSet &rSource)
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
TBaseSet< Transition, Cmp >::Iterator Iterator
Iterator Begin(Idx x1) const
virtual void DoRead(TokenReader &rTr, const std::string &rLabel="", const Type *pContext=0)
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)
EventSet IncommingEvents(Idx x2, SymbolTable *pSymTab=NULL) const
void Inject(const Transition &rTransition)
bool Erase(const Transition &t)
StateSet SuccessorStates(Idx x1) const
void DoCopy(const TTransSet &rSource)
void EraseByX1OrX2(const StateSet &rStates)
void RestrictEvents(const EventSet &rEventSet)
void EraseByX1OrX2(Idx x)
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 & Copy(const TBaseSet< Transition, TransSort::X1EvX2 > &rSrc)
TTransSet< TransSort::X1EvX2 >::Iterator Iterator
const Attr * AttributeType(void) const
void AttributeTry(const Transition &rElem, const Type &rAttr)
void Attribute(const Transition &rElem, const Attr &rAttr)
virtual TaTransSet & operator=(const TransSet &rSrc)
Attr * Attributep(const Transition &rElem)
const Attr & Attribute(const Transition &rElem) const
void Attribute(const Transition &rElem, const Type &rAttr)
void DoCopy(const TaTransSet &rSource)
long int ReadInteger(void)
std::string FileLine(void) const
bool Eos(const std::string &rLabel)
void ReadEnd(const std::string &rLabel)
void ReadBegin(const std::string &rLabel)
std::string FileName(void) const
void WriteEnd(const std::string &rLabel)
void WriteBegin(const std::string &rLabel)
std::string Str(void) const
const std::string & StringValue(void) const
@ Integer 1234 (non-negative integer)
@ Begin <label> (begin of section)
bool ExistsAttributeString(const std::string &name)
const std::string & AttributeStringValue(const std::string &name)
TokenType Type(void) const
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 & Copy(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)
libFAUDES 2.34g
--- 2026.03.30
--- c++ api documentaion by doxygen
|