11 #ifndef FAUDES_HIO_PLANT_H
12 #define FAUDES_HIO_PLANT_H
46 template <
class GlobalAttr,
class StateAttr,
class EventAttr,
class TransAttr>
191 void SetYp(
const std::string& rName);
215 void SetUp(
const std::string& rName);
245 bool IsYp(
const std::string& rName)
const;
267 bool IsUp(
const std::string& rName)
const;
341 void SetYe(
const std::string& rName);
365 void SetUe(
const std::string& rName);
395 bool IsYe(
const std::string& rName)
const;
417 bool IsUe(
const std::string& rName)
const;
457 bool IsY(
const std::string& rName)
const;
487 bool IsU(
const std::string& rName)
const;
517 bool IsP(
const std::string& rName)
const;
547 bool IsE(
const std::string& rName)
const;
703 bool IsQUp(
const std::string& rName)
const;
779 bool IsQUe(
const std::string& rName)
const;
855 bool IsErr(
const std::string& rName)
const;
883 #define THIS THioPlant<GlobalAttr, StateAttr, EventAttr, TransAttr>
884 #define BASE TaGenerator<GlobalAttr, StateAttr, EventAttr, TransAttr>
885 #define TEMP template <class GlobalAttr, class StateAttr, class EventAttr, class TransAttr>
890 FD_DG(
"HioPlant(" <<
this <<
")::HioPlant()");
895 FD_DG(
"HioPlant(" <<
this <<
")::HioPlant(rOtherGen)");
900 FD_DG(
"HioPlant(" <<
this <<
")::HioPlant(rOtherGen)");
910 ) :
BASE(rOtherGen) {
911 FD_DG(
"HioPlant(" <<
this <<
")::HioPlant(rOtherGen)");
919 TEMP THIS::THioPlant(
const std::string& rFileName) :
BASE(rFileName) {
920 FD_DG(
"HioPlant(" <<
this <<
")::HioPlant(rFilename) : done");
928 res->EventSymbolTablep(BASE::mpEventSymbolTable);
929 res->mStateNamesEnabled=BASE::mStateNamesEnabled;
935 return new THIS(*
this);
941 THIS res= BASE::NewAGen();
950 EventAttr attr=BASE::EventAttribute(index);
955 TEMP bool THIS::IsY(
const std::string& rName)
const {
956 EventAttr attr=BASE::EventAttribute(rName);
962 EventAttr attr=BASE::EventAttribute(index);
967 TEMP bool THIS::IsU(
const std::string& rName)
const {
968 EventAttr attr=BASE::EventAttribute(rName);
974 FD_DG(
"HioPlant(" <<
this <<
")::YEvents()");
976 EventSet::Iterator it;
977 for(it=BASE::AlphabetBegin(); it!=BASE::AlphabetEnd(); it++) {
978 if(IsY(*it)) res.
Insert(*it);
985 FD_DG(
"HioPlant(" <<
this <<
")::UEvents()");
987 EventSet::Iterator it;
988 for(it=BASE::AlphabetBegin(); it!=BASE::AlphabetEnd(); it++) {
989 if(IsU(*it)) res.
Insert(*it);
998 FD_DG(
"HioPlant(" <<
this <<
")::InsYpEvent(" << index <<
")");
1002 BASE::InsEvent(index,attr);
1006 TEMP Idx THIS::InsYpEvent(
const std::string& rName) {
1007 FD_DG(
"HioPlant(" <<
this <<
")::InsYpEvent(" << rName <<
")");
1011 return BASE::InsEvent(rName,attr);
1016 FD_DG(
"HioPlant(" <<
this <<
")::InsUpEvent(" << index <<
")");
1020 BASE::InsEvent(index,attr);
1024 TEMP Idx THIS::InsUpEvent(
const std::string& rName) {
1025 FD_DG(
"HioPlant(" <<
this <<
")::InsUpEvent(" << rName <<
")");
1029 return BASE::InsEvent(rName,attr);
1034 FD_DG(
"HioPlant(" <<
this <<
")::SetYp(" << index <<
")");
1035 EventAttr attr=BASE::EventAttribute(index);
1038 BASE::pAlphabet->Attribute(index,attr);
1042 TEMP void THIS::SetYp(
const std::string& rName) {
1043 FD_DG(
"HioPlant(" <<
this <<
")::SetYp(" << rName <<
")");
1044 Idx index = BASE::EventIndex(rName);
1050 FD_DG(
"HioPlant(" <<
this <<
")::SetYp(rEvents)");
1051 EventSet::Iterator it;
1052 for(it=rEvents.
Begin(); it!=rEvents.
End(); it++) {
1059 FD_DG(
"HioPlant(" <<
this <<
")::SetUp(" << index <<
")");
1060 EventAttr attr=BASE::EventAttribute(index);
1063 BASE::pAlphabet->Attribute(index,attr);
1067 TEMP void THIS::SetUp(
const std::string& rName) {
1068 FD_DG(
"HioPlant(" <<
this <<
")::SetUp(" << rName <<
")");
1069 Idx index = BASE::EventIndex(rName);
1075 FD_DG(
"HioPlant(" <<
this <<
")::SetUp(rEvents)");
1076 EventSet::Iterator it;
1077 for(it=rEvents.
Begin(); it!=rEvents.
End(); it++) {
1084 EventAttr attr=BASE::EventAttribute(index);
1085 return (attr.IsY() && attr.IsP());
1089 TEMP bool THIS::IsYp(
const std::string& rName)
const {
1090 EventAttr attr=BASE::EventAttribute(rName);
1091 return (attr.IsY() && attr.IsP());
1096 EventAttr attr=BASE::EventAttribute(index);
1097 return (attr.IsU() && attr.IsP());
1101 TEMP bool THIS::IsUp(
const std::string& rName)
const {
1102 EventAttr attr=BASE::EventAttribute(rName);
1103 return (attr.IsU() && attr.IsP());
1108 FD_DG(
"HioPlant(" <<
this <<
")::YpEvents()");
1110 EventSet::Iterator it;
1111 for(it=BASE::AlphabetBegin(); it!=BASE::AlphabetEnd(); it++) {
1112 if(IsYp(*it)) res.
Insert(*it);
1119 FD_DG(
"HioPlant(" <<
this <<
")::UpEvents()");
1121 EventSet::Iterator it;
1122 for(it=BASE::AlphabetBegin(); it!=BASE::AlphabetEnd(); it++) {
1123 if(IsUp(*it)) res.
Insert(*it);
1132 FD_DG(
"HioPlant(" <<
this <<
")::InsYeEvent(" << index <<
")");
1136 BASE::InsEvent(index,attr);
1140 TEMP Idx THIS::InsYeEvent(
const std::string& rName) {
1141 FD_DG(
"HioPlant(" <<
this <<
")::InsYeEvent(" << rName <<
")");
1145 return BASE::InsEvent(rName,attr);
1150 FD_DG(
"HioPlant(" <<
this <<
")::InsUeEvent(" << index <<
")");
1154 BASE::InsEvent(index,attr);
1158 TEMP Idx THIS::InsUeEvent(
const std::string& rName) {
1159 FD_DG(
"HioPlant(" <<
this <<
")::InsUeEvent(" << rName <<
")");
1163 return BASE::InsEvent(rName,attr);
1168 FD_DG(
"HioPlant(" <<
this <<
")::SetYe(" << index <<
")");
1169 EventAttr attr=BASE::EventAttribute(index);
1172 BASE::pAlphabet->Attribute(index,attr);
1176 TEMP void THIS::SetYe(
const std::string& rName) {
1177 FD_DG(
"HioPlant(" <<
this <<
")::SetYe(" << rName <<
")");
1178 Idx index = BASE::EventIndex(rName);
1184 FD_DG(
"HioPlant(" <<
this <<
")::SetYe(rEvents)");
1185 EventSet::Iterator it;
1186 for(it=rEvents.
Begin(); it!=rEvents.
End(); it++) {
1193 FD_DG(
"HioPlant(" <<
this <<
")::SetUe(" << index <<
")");
1194 EventAttr attr=BASE::EventAttribute(index);
1197 BASE::pAlphabet->Attribute(index,attr);
1201 TEMP void THIS::SetUe(
const std::string& rName) {
1202 FD_DG(
"HioPlant(" <<
this <<
")::SetUe(" << rName <<
")");
1203 Idx index = BASE::EventIndex(rName);
1209 FD_DG(
"HioPlant(" <<
this <<
")::SetUe(rEvents)");
1210 EventSet::Iterator it;
1211 for(it=rEvents.
Begin(); it!=rEvents.
End(); it++) {
1218 EventAttr attr=BASE::EventAttribute(index);
1219 return (attr.IsY() && attr.IsE());
1223 TEMP bool THIS::IsYe(
const std::string& rName)
const {
1224 EventAttr attr=BASE::EventAttribute(rName);
1225 return (attr.IsY() && attr.IsE());
1230 EventAttr attr=BASE::EventAttribute(index);
1231 return (attr.IsU() && attr.IsE());
1235 TEMP bool THIS::IsUe(
const std::string& rName)
const {
1236 EventAttr attr=BASE::EventAttribute(rName);
1237 return (attr.IsU() && attr.IsE());
1242 FD_DG(
"HioPlant(" <<
this <<
")::YeEvents()");
1244 EventSet::Iterator it;
1245 for(it=BASE::AlphabetBegin(); it!=BASE::AlphabetEnd(); it++) {
1246 if(IsYe(*it)) res.
Insert(*it);
1253 FD_DG(
"HioPlant(" <<
this <<
")::UeEvents()");
1255 EventSet::Iterator it;
1256 for(it=BASE::AlphabetBegin(); it!=BASE::AlphabetEnd(); it++) {
1257 if(IsUe(*it)) res.
Insert(*it);
1266 EventAttr attr=BASE::EventAttribute(index);
1271 TEMP bool THIS::IsP(
const std::string& rName)
const {
1272 EventAttr attr=BASE::EventAttribute(rName);
1278 EventAttr attr=BASE::EventAttribute(index);
1283 TEMP bool THIS::IsE(
const std::string& rName)
const {
1284 EventAttr attr=BASE::EventAttribute(rName);
1290 FD_DG(
"HioPlant(" <<
this <<
")::PEvents()");
1292 EventSet::Iterator it;
1293 for(it=BASE::AlphabetBegin(); it!=BASE::AlphabetEnd(); it++) {
1294 if(IsP(*it)) res.
Insert(*it);
1301 FD_DG(
"HioPlant(" <<
this <<
")::EEvents()");
1303 EventSet::Iterator it;
1304 for(it=BASE::AlphabetBegin(); it!=BASE::AlphabetEnd(); it++) {
1305 if(IsE(*it)) res.
Insert(*it);
1318 FD_DG(
"HioPlant(" <<
this <<
")::SetQYpYe(" << index <<
")");
1319 StateAttr attr=BASE::StateAttribute(index);
1328 BASE::pStates->Attribute(index,attr);
1332 TEMP void THIS::SetQYpYe(
const std::string& rName) {
1333 FD_DG(
"HioPlant(" <<
this <<
")::SetQYpYe(" << rName <<
")");
1334 Idx index = BASE::StateIndex(rName);
1340 FD_DG(
"HioPlant(" <<
this <<
")::SetQYpYe(rStates)");
1341 StateSet::Iterator sit;
1342 for(sit=rStates.
Begin(); sit!=rStates.
End(); sit++) {
1349 FD_DG(
"HioPlant(" <<
this <<
")::ClrQYpYe(" << index <<
")");
1350 StateAttr attr=BASE::StateAttribute(index);
1354 BASE::pStates->Attribute(index,attr);
1358 TEMP void THIS::ClrQYpYe(
const std::string& rName) {
1359 FD_DG(
"HioPlant(" <<
this <<
")::ClrQYpYe(" << rName <<
")");
1360 Idx index = BASE::StateIndex(rName);
1366 FD_DG(
"HioPlant(" <<
this <<
")::ClrQYpYe(rStates)");
1367 StateSet::Iterator sit;
1368 for(sit=rStates.
Begin(); sit!=rStates.
End(); sit++) {
1375 StateAttr attr=BASE::StateAttribute(index);
1376 return attr.IsQY() && attr.IsQP() && attr.IsQE();
1380 TEMP bool THIS::IsQYpYe(
const std::string& rName)
const {
1381 Idx index = BASE::StateIndex(rName);
1382 return IsQYpYe(index);
1387 FD_DG(
"HioPlant(" <<
this <<
")::QYpYeStates()");
1389 StateSet::Iterator sit;
1390 for(sit=BASE::StatesBegin(); sit!=BASE::StatesEnd(); sit++) {
1391 if(IsQYpYe(*sit)) res.
Insert(*sit);
1399 FD_DG(
"HioPlant(" <<
this <<
")::SetQUp(" << index <<
")");
1400 StateAttr attr=BASE::StateAttribute(index);
1409 BASE::pStates->Attribute(index,attr);
1413 TEMP void THIS::SetQUp(
const std::string& rName) {
1414 FD_DG(
"HioPlant(" <<
this <<
")::SetQUp(" << rName <<
")");
1415 Idx index = BASE::StateIndex(rName);
1421 FD_DG(
"HioPlant(" <<
this <<
")::SetQUp(rStates)");
1422 StateSet::Iterator sit;
1423 for(sit=rStates.
Begin(); sit!=rStates.
End(); sit++) {
1430 FD_DG(
"HioPlant(" <<
this <<
")::ClrQUp(" << index <<
")");
1431 StateAttr attr=BASE::StateAttribute(index);
1434 BASE::pStates->Attribute(index,attr);
1438 TEMP void THIS::ClrQUp(
const std::string& rName) {
1439 FD_DG(
"HioPlant(" <<
this <<
")::ClrQUp(" << rName <<
")");
1440 Idx index = BASE::StateIndex(rName);
1446 FD_DG(
"HioPlant(" <<
this <<
")::ClrQUp(rStates)");
1447 StateSet::Iterator sit;
1448 for(sit=rStates.
Begin(); sit!=rStates.
End(); sit++) {
1455 StateAttr attr=BASE::StateAttribute(index);
1456 return attr.IsQU() && attr.IsQP();
1460 TEMP bool THIS::IsQUp(
const std::string& rName)
const {
1461 Idx index = BASE::StateIndex(rName);
1462 return IsQUp(index);
1467 FD_DG(
"HioPlant(" <<
this <<
")::QUpStates()");
1469 StateSet::Iterator sit;
1470 for(sit=BASE::StatesBegin(); sit!=BASE::StatesEnd(); sit++) {
1471 if(IsQUp(*sit)) res.
Insert(*sit);
1481 FD_DG(
"HioPlant(" <<
this <<
")::SetQUe(" << index <<
")");
1482 StateAttr attr=BASE::StateAttribute(index);
1491 BASE::pStates->Attribute(index,attr);
1495 TEMP void THIS::SetQUe(
const std::string& rName) {
1496 FD_DG(
"HioPlant(" <<
this <<
")::SetQUe(" << rName <<
")");
1497 Idx index = BASE::StateIndex(rName);
1503 FD_DG(
"HioPlant(" <<
this <<
")::SetQUe(rStates)");
1504 StateSet::Iterator sit;
1505 for(sit=rStates.
Begin(); sit!=rStates.
End(); sit++) {
1512 FD_DG(
"HioPlant(" <<
this <<
")::ClrQUe(" << index <<
")");
1513 StateAttr attr=BASE::StateAttribute(index);
1516 BASE::pStates->Attribute(index,attr);
1520 TEMP void THIS::ClrQUe(
const std::string& rName) {
1521 FD_DG(
"HioPlant(" <<
this <<
")::ClrQUe(" << rName <<
")");
1522 Idx index = BASE::StateIndex(rName);
1528 FD_DG(
"HioPlant(" <<
this <<
")::ClrQUe(rStates)");
1529 StateSet::Iterator sit;
1530 for(sit=rStates.
Begin(); sit!=rStates.
End(); sit++) {
1537 StateAttr attr=BASE::StateAttribute(index);
1538 return attr.IsQU() && attr.IsQE();
1542 TEMP bool THIS::IsQUe(
const std::string& rName)
const {
1543 Idx index = BASE::StateIndex(rName);
1544 return IsQUe(index);
1549 FD_DG(
"HioPlant(" <<
this <<
")::QUeStates()");
1551 StateSet::Iterator sit;
1552 for(sit=BASE::StatesBegin(); sit!=BASE::StatesEnd(); sit++) {
1553 if(IsQUe(*sit)) res.
Insert(*sit);
1560 FD_DG(
"HioPlant(" <<
this <<
")::SetErr(" << index <<
")");
1561 StateAttr attr=BASE::StateAttribute(index);
1563 BASE::pStates->Attribute(index,attr);
1567 TEMP void THIS::SetErr(
const std::string& rName) {
1568 FD_DG(
"HioPlant(" <<
this <<
")::SetErr(" << rName <<
")");
1569 Idx index = BASE::StateIndex(rName);
1575 FD_DG(
"HioPlant(" <<
this <<
")::SetErr(rStates)");
1576 StateSet::Iterator sit;
1577 for(sit=rStates.
Begin(); sit!=rStates.
End(); sit++) {
1584 FD_DG(
"HioPlant(" <<
this <<
")::ClrErr(" << index <<
")");
1585 StateAttr attr=BASE::StateAttribute(index);
1587 BASE::pStates->Attribute(index,attr);
1591 TEMP void THIS::ClrErr(
const std::string& rName) {
1592 FD_DG(
"HioPlant(" <<
this <<
")::ClrErr(" << rName <<
")");
1593 Idx index = BASE::StateIndex(rName);
1599 FD_DG(
"HioPlant(" <<
this <<
")::ClrErr(rStates)");
1600 StateSet::Iterator sit;
1601 for(sit=rStates.
Begin(); sit!=rStates.
End(); sit++) {
1608 StateAttr attr=BASE::StateAttribute(index);
1609 return attr.IsErr();
1613 TEMP bool THIS::IsErr(
const std::string& rName)
const {
1614 Idx index = BASE::StateIndex(rName);
1615 return IsErr(index);
1620 FD_DG(
"HioPlant(" <<
this <<
")::ErrStates()");
1622 StateSet::Iterator sit;
1623 for(sit=BASE::StatesBegin(); sit!=BASE::StatesEnd(); sit++) {
1624 if(IsErr(*sit)) res.
Insert(*sit);
1675 std::string& rReportStr);
1742 std::string& rReportStr);
#define FD_DG(message)
Debug: optional report on generator operations.
Idx Insert(void)
Insert new index to set.
Set of indices with symbolic names.
bool Insert(const Idx &rIndex)
Add an element by index.
Generator with I/O-plant attributes.
bool IsE(const std::string &rName) const
Is event E-event? (by name)
void SetUp(const EventSet &rEvents)
Mark set of events as Up-events.
bool IsUp(Idx index) const
Is event Up-event(by index)
void ClrQUp(const StateSet &rStates)
Mark set of states as NOT QUp-states (by index)
bool IsQUp(const std::string &rName) const
Is state QUp-state (by name)
void SetQYpYe(const StateSet &rStates)
Mark set of states as QYpYe-states.
void SetYp(const EventSet &rEvents)
Mark set of events as Yp-events.
void SetQUe(const std::string &rName)
Mark state as QUe-state (by name)
void SetYp(Idx index)
Mark event as Yp-event (by index)
void SetQYpYe(Idx index)
Mark state as QYpYe-state (by index)
void SetErr(const std::string &rName)
Mark state as Err-state (by name)
virtual bool UpdateAttributes(void)
Updates internal attributes.
bool IsP(const std::string &rName) const
Is event P-event? (by name)
void ClrQUe(Idx index)
Mark state as NOT QUe-state (by index)
void SetQYpYe(const std::string &rName)
Mark state as QYpYe-state (by name)
EventSet EEvents(void) const
Get EventSet with E-events.
bool IsUe(Idx index) const
Is event Ue-event (by index)
bool IsY(Idx index) const
Is event Y-event? (by index)
Idx InsYeEvent(const std::string &rName)
Add new named Ye-event to generator.
Idx InsUpEvent(const std::string &rName)
Add new named Up-event to generator.
THioPlant NewHioPlant(void) const
Create empty HioPlant with same symboltable as this.
void SetErr(Idx index)
Mark state as Err-state (by index)
void ClrQUe(const std::string &rName)
Mark state as NOT QUe-state (by name)
void SetYe(Idx index)
Mark event as Ye-event (by index)
void ClrErr(const StateSet &rStates)
Mark set of states as NOT Err-states (by index)
void SetQUe(Idx index)
Mark state as QUe-state (by index)
StateSet ErrStates(void) const
Get StateSet with Err-states.
THioPlant(const Generator &rOtherGen)
HioPlant from a std Generator.
void SetUe(const EventSet &rEvents)
Mark set of events as Ue-events.
bool IsP(Idx index) const
Is event P-event? (by index)
void SetYe(const EventSet &rEvents)
Mark set of events as Ye-events.
EventSet YEvents(void) const
Get EventSet with Y-events.
EventSet UeEvents(void) const
Get EventSet with Ue-events.
THioPlant(void)
Creates an empty HioPlant object.
void SetUe(const std::string &rName)
Mark event as Ue-event (by name)
bool IsErr(Idx index) const
Is state Err-state (by index)
bool IsUp(const std::string &rName) const
Is event Up-event(by name)
bool IsQUe(const std::string &rName) const
Is state QUe-state (by name)
void ClrQUp(const std::string &rName)
Mark state as NOT QUp-state (by name)
Idx InsUeEvent(const std::string &rName)
Add new named Ue-event to generator.
virtual THioPlant * Copy(void) const
Construct copy on heap.
bool IsYp(const std::string &rName) const
Is event Yp-event(by name)
void InsYpEvent(Idx index)
Add an existing Yp-event to generator.
void InsUeEvent(Idx index)
Add an existing Ue-event to generator.
StateSet QUpStates(void) const
Get StateSet with QUp-states.
Idx InsYpEvent(const std::string &rName)
Add new named Yp-event to generator.
void SetQUe(const StateSet &rStates)
Mark set of states as QUe-states.
bool IsQYpYe(Idx index) const
Is state QYpYe-state (by index)
bool IsUe(const std::string &rName) const
Is event Ue-event (by name)
EventSet UpEvents(void) const
Get EventSet with Up-events.
StateSet QUeStates(void) const
Get StateSet with QUe-states.
void InsUpEvent(Idx index)
Add an existing Up-event to generator.
void ClrErr(const std::string &rName)
Mark state as NOT Err-state (by name)
bool IsQUe(Idx index) const
Is state QUe-state (by index)
bool IsQUp(Idx index) const
Is state QUp-state (by index)
void SetQUp(const std::string &rName)
Mark state as QUp-state (by name)
void SetUp(const std::string &rName)
Mark event Up-event(by name)
void ClrErr(Idx index)
Mark state as NOT Err-state (by index)
bool IsQYpYe(const std::string &rName) const
Is state QYpYe-state (by name)
void ClrQUe(const StateSet &rStates)
Mark set of states as NOT QUe-states (by index)
THioPlant(const THioPlant &rOtherGen)
HioPlant from a HioPlant.
void InsYeEvent(Idx index)
Add an existing Ye-event to generator.
void SetUp(Idx index)
Mark event Up-event(by index)
bool IsU(const std::string &rName) const
Is event U-event? (by name)
void ClrQYpYe(const StateSet &rStates)
Mark set of states as NOT QYpYe-states (by index)
void SetYp(const std::string &rName)
Mark event as Yp-event(by name)
void ClrQYpYe(Idx index)
Mark state as NOT QYpYe-state (by index)
bool IsYp(Idx index) const
Is event Yp-event(by index)
void SetQUp(const StateSet &rStates)
Mark set of states as QUp-states.
void ClrQUp(Idx index)
Mark state as NOT QUp-state (by index)
bool IsYe(Idx index) const
Is event Ye-event (by index)
StateSet QYpYeStates(void) const
Get StateSet with QYpYe-states.
EventSet UEvents(void) const
Get EventSet with U-events.
void SetYe(const std::string &rName)
Mark event as Ye-event (by name)
EventSet PEvents(void) const
Get EventSet with P-events.
THioPlant(const std::string &rFileName)
construct a HioPlant from file
void SetErr(const StateSet &rStates)
Mark set of states as Err-states.
void SetQUp(Idx index)
Mark state as QUp-state (by index)
virtual THioPlant * New(void) const
Construct on heap.
bool IsErr(const std::string &rName) const
Is state Err-state (by name)
EventSet YpEvents(void) const
Get EventSet with Yp-events.
bool IsU(Idx index) const
Is event U-event? (by index)
bool IsYe(const std::string &rName) const
Is event Ye-event (by name)
bool IsY(const std::string &rName) const
Is event Y-event? (by name)
EventSet YeEvents(void) const
Get EventSet with Ye-events.
void SetUe(Idx index)
Mark event as Ue-event (by index)
THioPlant(const Generator &rOtherGen, const EventSet &rYp, const EventSet &rUp, const EventSet &rYe, const EventSet &rUe)
HioPlant from a std Generator and event sets.
bool IsE(Idx index) const
Is event E-event? (by index)
void ClrQYpYe(const std::string &rName)
Mark state as NOT QYpYe-state (by name)
Generator with specified attribute types.
Base class of all FAUDES generators.
Includes all libFAUDES headers, no plugins.
Iterator End(void) const
Iterator to the end of set.
Iterator Begin(void) const
Iterator to the begin of set.
Event and state attributes for hierarchical I/O systems.
libFAUDES resides within the namespace faudes.
uint32_t Idx
Type definition for index type (allways 32bit)
void HioStatePartition(HioConstraint &rHioConstraint)
Function definition for run-time interface.
THioPlant< AttributeVoid, HioStateFlags, HioEventFlags, AttributeVoid > HioPlant
bool IsHioPlantForm(HioPlant &rHioPlant, StateSet &rQYpYe, StateSet &rQUp, StateSet &rQUe, EventSet &rErrEvSet, TransSet &rErrTrSet, StateSet &rErrStSet, std::string &rReportStr)
IsHioPlantForm: check if rHioPlant is in I/O-plant form and assign state attributes.