42 for (
int i=0; i<5; i++)
150 for (
int i=0; i<=4; i++)
167 std::string HioPlantFile = path+
"plant.gen";
175 while(tReader.
Peek(token)) {
185 for(
int i=0 ;i<=4;i++)
187 char tmpChar = myType.at(i);
188 std::stringstream Str;
197 std::string LpFile = path+
"constrP.gen";
202 std::string LeFile = path+
"constrE.gen";
213 std::string EnvFile = path+
"environment.gen";
226 StateSet::Iterator sit;
227 EventSet::Iterator evit;
229 std::string toSet =
"CB"+toSeti+
"_";
240 if( oldName.find(toSet, 0) != std::string::npos )
242 std::cout<<
"At least one event already converted";
273 std::string oldName = rOldGen.
EventName(tit->Ev);
274 int loc1 = oldName.find(
"_", 0);
275 std::string newName = oldName.erase(0,loc1+1);
276 newName = toSet + oldName;
294 EventSet::Iterator evit;
296 StateSet::Iterator sit;
298 std::string toSet =
"CB"+toSeti+
"_";
304 std::string oldName = rOldHioPlant.
Alphabet().SymbolicName(*evit);
307 if( oldName.find(toSet, 0) != std::string::npos )
309 std::cout<<
"At least one event already converted";
310 rResGen = rOldHioPlant;
320 for(evit = newAlph.
Begin(); evit != newAlph.
End(); ++evit)
326 for(evit = newAlph.
Begin(); evit != newAlph.
End(); ++evit)
332 for(evit = newAlph.
Begin(); evit != newAlph.
End(); ++evit)
338 for(evit = newAlph.
Begin(); evit != newAlph.
End(); ++evit)
359 std::string oldName = rOldHioPlant.
EventName(tit->Ev);
360 int loc1 = oldName.find(
"_", 0);
361 std::string newName = oldName.erase(0,loc1+1);
362 newName = toSet + oldName;
379 EventSet::Iterator evit;
381 std::string toSet =
"CB"+toSeti+
"_";
384 for (evit = rOldAlph.
Begin(); evit != rOldAlph.
End(); ++evit)
389 if( oldName.find(toSet, 0) != std::string::npos )
391 std::cout<<
"At least one event already converted";
398 for (evit = rOldAlph.
Begin(); evit != rOldAlph.
End(); ++evit)
401 int loc1 = oldName.find(
"_", 0);
402 std::string newName1 = oldName.erase(0,loc1+1);
403 std::string newName = toSet + oldName;
420 EventSet::Iterator evit;
421 StateSet::Iterator sit;
430 std::string toRepl_left, toRepl_right, toRepl_ext;
434 if (rHioModule1->
Xpos() <= rHioModule2->
Xpos())
437 leftId = rHioModule1->
Index();
440 rightId = rHioModule2->
Index();
449 leftId = rHioModule2->
Index();
452 rightId = rHioModule1->
Index();
463 std::string oldName = rHioEnvX.
Alphabet().SymbolicName(*evit);
466 if( oldName.find(toRepl_ext, 0) != std::string::npos )
468 std::cout<<
"At least one event already converted";
479 for (evit = tmpAlph.
Begin(); evit != tmpAlph.
End(); ++evit)
485 std::string::size_type loc1 = eventName.find(
"CBx_", 0);
486 if (loc1 != std::string::npos)
488 eventName.erase(0, 4);
489 std::string newEvent = toRepl_left+eventName;
491 if(rHioEnvX.
IsYe(*evit))
503 std::string::size_type loc2 = eventName.find(
"CBy_", 0);
504 if (loc2 != std::string::npos)
506 eventName.erase(0, 4);
507 std::string newEvent = toRepl_right+eventName;
508 if(rHioEnvX.
IsYe(*evit))
521 std::string::size_type loc3 = eventName.find(
"CBxy_", 0);
522 if (loc3 != std::string::npos)
524 eventName.erase(0, 5);
525 std::string newEvent = toRepl_ext+eventName;
526 if(rHioEnvX.
IsYl(*evit))
560 std::string eventName = rHioEnvX.
EventName(tit->Ev);
563 std::string::size_type loc1 = eventName.find(
"CBx_", 0);
564 if (loc1 != std::string::npos)
566 eventName.erase(0, 4);
567 std::string newEvent = toRepl_left+eventName;
568 eventName = newEvent;
573 std::string::size_type loc2 = eventName.find(
"CBy_", 0);
574 if (loc2 != std::string::npos)
576 eventName.erase(0, 4);
577 std::string newEvent = toRepl_right+eventName;
578 eventName = newEvent;
583 std::string::size_type loc3 = eventName.find(
"CBxy_", 0);
584 if (loc3 != std::string::npos)
586 eventName.erase(0, 5);
587 std::string newEvent = toRepl_ext+eventName;
588 eventName = newEvent;
611 EventSet::Iterator evit;
612 StateSet::Iterator sit;
615 tmpAlph = rHioController.
Alphabet();
620 std::string toRepl_left, toRepl_right, toRepl_ext;
625 if (rHioModule1->
Xpos() <= rHioModule2->
Xpos())
628 leftId = rHioModule1->
Index();
631 rightId = rHioModule2->
Index();
640 leftId = rHioModule2->
Index();
643 rightId = rHioModule1->
Index();
654 std::string oldName = rHioController.
Alphabet().SymbolicName(*evit);
657 if( oldName.find(toRepl_ext, 0) != std::string::npos )
659 std::cout<<
"At least one event already converted";
660 rResEnv = rHioController;
670 for (evit = tmpAlph.
Begin(); evit != tmpAlph.
End(); ++evit)
676 std::string::size_type loc1 = eventName.find(
"CBx_", 0);
677 if (loc1 != std::string::npos)
679 eventName.erase(0, 4);
680 std::string newEvent = toRepl_left+eventName;
686 std::string::size_type loc2 = eventName.find(
"CBy_", 0);
687 if (loc2 != std::string::npos)
689 eventName.erase(0, 4);
690 std::string newEvent = toRepl_right+eventName;
696 std::string::size_type loc3 = eventName.find(
"CBxy_", 0);
697 if (loc3 != std::string::npos)
699 eventName.erase(0, 5);
700 std::string newEvent = toRepl_ext+eventName;
727 std::string eventName = rHioController.
EventName(tit->Ev);
730 std::string::size_type loc1 = eventName.find(
"CBx_", 0);
731 if (loc1 != std::string::npos)
733 eventName.erase(0, 4);
734 std::string newEvent = toRepl_left+eventName;
735 eventName = newEvent;
740 std::string::size_type loc2 = eventName.find(
"CBy_", 0);
741 if (loc2 != std::string::npos)
743 eventName.erase(0, 4);
744 std::string newEvent = toRepl_right+eventName;
745 eventName = newEvent;
750 std::string::size_type loc3 = eventName.find(
"CBxy_", 0);
751 if (loc3 != std::string::npos)
753 eventName.erase(0, 5);
754 std::string newEvent = toRepl_ext+eventName;
755 eventName = newEvent;
808 const std::string path)
812 std::string loc_path =
"";
813 std::set<std::string> tmpSpecSet;
814 std::vector<std::string> listSpec, pathList;
815 std::list<std::string>::iterator itstr;
819 std::cout<<
"Number of children: "<<size<<std::endl;
820 for(
int i=0; i<size; i++)
823 capacity =
mChildren[i]->TypeHioModule()[0] + capacity;
827 std::string cap =
"SpecCB";
828 std::vector<std::string> allPath;
829 for (
int i=1; i<=capacity;i++)
832 loc_path = path+cap+
"/";
833 allPath.push_back(loc_path);
836 for (
int i=0; i<capacity;i++)
839 loc_path = allPath[i];
840 std::cout<<
"Final path: "<<loc_path<<std::endl;
843 std::set< std::string >:: iterator fit=tmpSpecSet.begin();
844 for(; fit!=tmpSpecSet.end(); fit++)
846 listSpec.push_back(*fit);
848 tmpPath = loc_path+*fit+
"/";
849 pathList.push_back(tmpPath);
853 std::cout<<
"There are "<<listSpec.size()<<
" spec. available"<<std::endl;
854 size = listSpec.size();
855 for(
int i=0; i<size;i++)
857 std::cout<<
"Option: "<<i+1<<
":"<<listSpec[i]<<std::endl;
889 std::string loc_path, choice;
891 loc_path =
MyPath()+
"ioController.gen";
892 tmpHioController.
Read(loc_path.c_str());
893 tmpHioController.
SWrite();
894 std::cout<<
"Controller found..! Accept(Y)? / New controller(N)?"<<std::endl;
897 if(choice ==
"y" || choice ==
"Y")
906 std::cout<<
"Controller NOT found..!"<<std::endl;
909 std::cout.flush()<<
"Starting IOShuffle...1"<<std::endl;
912 std::cout.flush()<<
" ...done!"<<std::endl;
939 std::cout<<
"**********************//////\\\\\\*******************"<<std::endl;
940 std::cout<<
"Everything went fine so far...startig HIO_SYNTHESIS..."<<std::endl;
941 std::cout<<
"**********************\\\\\\//////*******************"<<std::endl;
962 EventSet::Iterator evit;
965 for(evit = Yc.
Begin(); evit != Yc.
End(); ++evit)
968 for(evit = Uc.
Begin(); evit != Uc.
End(); ++evit)
972 for(evit = Yp.
Begin(); evit != Yp.
End(); ++evit)
975 for(evit = Up.
Begin(); evit != Up.
End(); ++evit)
978 std::cout.flush()<<
"...Done"<<std::endl;
995 std::set<std::string> folderContent;
996 std::string loc_path;
1001 std::set< std::string >:: iterator fit=folderContent.begin();
1002 for(; fit!=folderContent.end(); fit++)
1003 if (*fit==
"ioController.gen")
1014 std::string loc_path;
1016 loc_path = loc_path+
"ioController.gen";
1026 int capacity =
mType[0];
1027 std::vector<std::string> folderContent;
1028 std::string cap, loc_path, sub_folder;
1031 for (
int i=1; i<=capacity; i++)
1036 for (
int i=0; i<5;i++)
1042 loc_path =
"Data/Spec/SpecCB"+cap+
"/"+sub_folder+
"/";
1070 int* type =
new int[5];
1071 for (
int i=0; i<=4; i++)
1081 std::cout<<
"***********Capacity: "<<type.at(0)<<
"******"<<std::endl;
1082 std::cout<<
"*Take from left: "<<type.at(1)<<
"* "<<
" *Take from right: "<<type.at(2)<<
"*"<<std::endl;
1083 std::cout<<
"*Deliver to left: "<<type.at(3)<<
"* "<<
" *Deliver to right: "<<type.at(4)<<
"*"<<std::endl;
1094 const std::vector<HioModule*>& rChildren,
1097 int size = rChildren.size();
1099 for (
int i =0; i < size; i++)
1101 rParentModule.
InsChild(rChildren[i]);
1102 std::cout<<
"insert #"<<i<<
"- ModuleID: "<<rChildren[i]->Index();
1104 Id = pow(10, size-i-1)*rChildren[i]->Index()+Id;
1105 std::cout<<
".."<<Id<<std::endl;
1107 std::cout<<
"Id set!"<<std::endl;
1112 int intId = int(Id);
1125 int loaded, fl, fr, tol, tor, i_lastState, index;
1126 std::string s_lastQy, s_lastQup, s_lastQue, s_lastState, s_lastQy_stby, s_newQy_stby;
1127 std::string s_lastQupFL, s_lastQupFR, s_lastQup2L, s_lastQup2R, s_newQy_FR, s_newQy_FL, s_newQy_2L, s_newQy_2R;
1129 s_lastQup = s_lastQupFL = s_lastQupFR = s_newQy_stby =
"ErrQy";
1130 fl=fr=tol=tor=i_lastState=index=loaded=0;
1178 for(
int i=0; i<mType[0]; i++)
1180 s_lastQy_stby = s_newQy_stby;
1187 s_lastQup2L =
"ErrQy";
1189 s_lastQup2R =
"ErrQy";
1209 s_lastState = s_newQy_FL;
1214 s_lastQy = s_lastState;
1221 rHioSpec.
SetTransition(s_lastQy,
"CBx_req_fl", s_lastState);
1222 s_lastQue = s_lastState;
1230 s_lastQy = s_lastState;
1241 s_lastQupFL = s_lastState;
1254 s_lastQupFL =
"ErrQy";
1277 s_lastState = s_newQy_FR;
1282 s_lastQy = s_lastState;
1289 rHioSpec.
SetTransition(s_lastQy,
"CBx_req_fr", s_lastState);
1290 s_lastQue = s_lastState;
1298 s_lastQy = s_lastState;
1309 s_lastQupFR = s_lastState;
1321 s_lastQupFR =
"ErrQy";
1327 if((s_lastQupFL !=
"ErrQy") ||(s_lastQupFR !=
"ErrQy"))
1331 s_newQy_stby = s_lastState;
1337 if(s_lastQupFL !=
"ErrQy")
1342 rHioSpec.
SetTransition(s_lastQupFL,
"CBx_stby", s_lastState);
1343 s_lastQy = s_lastState;
1349 rHioSpec.
SetTransition(s_lastQy,
"CBx_wpar_fl", s_lastState);
1350 s_lastQue = s_lastState;
1353 rHioSpec.
SetTransition(s_lastQue,
"CBx_pack", s_newQy_stby);
1360 if(s_lastQupFR !=
"ErrQy")
1365 rHioSpec.
SetTransition(s_lastQupFR,
"CBx_stby", s_lastState);
1366 s_lastQy = s_lastState;
1372 rHioSpec.
SetTransition(s_lastQy,
"CBx_wpar_fr", s_lastState);
1373 s_lastQue = s_lastState;
1376 rHioSpec.
SetTransition(s_lastQue,
"CBx_pack", s_newQy_stby);
1382 if((s_lastQupFL !=
"ErrQy") ||(s_lastQupFR !=
"ErrQy"))
1386 rHioSpec.
SetTransition(s_newQy_stby,
"CBx_busy", s_lastState);
1387 s_lastQup = s_lastState;
1389 rHioSpec.
SetTransition(s_lastState,
"CBx_stby", s_newQy_stby);
1401 s_newQy_2L = s_lastState;
1413 s_newQy_2R = s_lastState;
1420 if(tol<mType[3] && (fl !=0 ||fr !=0))
1425 if(s_lastQupFL !=
"ErrQy")
1431 s_lastQy = s_lastState;
1437 rHioSpec.
SetTransition(s_lastQy,
"CBx_wpar_fl", s_lastState);
1438 s_lastQue = s_lastState;
1450 if(s_lastQupFR !=
"ErrQy")
1456 s_lastQy = s_lastState;
1462 rHioSpec.
SetTransition(s_lastQy,
"CBx_wpar_fr", s_lastState);
1463 s_lastQue = s_lastState;
1478 rHioSpec.
SetTransition(s_newQy_2L,
"CBx_wpar_tl", s_lastState);
1479 s_lastQue = s_lastState;
1491 rHioSpec.
SetTransition(s_lastQue,
"CBx_pack", s_lastQy_stby);
1505 if(s_lastQupFL !=
"ErrQy")
1509 if(s_lastQupFR !=
"ErrQy")
1517 if(tor<mType[4] && (fl !=0 ||fr !=0))
1522 if(s_lastQupFL !=
"ErrQy")
1528 s_lastQy = s_lastState;
1534 rHioSpec.
SetTransition(s_lastQy,
"CBx_wpar_fl", s_lastState);
1535 s_lastQue = s_lastState;
1548 if(s_lastQupFR !=
"ErrQy")
1554 s_lastQy = s_lastState;
1560 rHioSpec.
SetTransition(s_lastQy,
"CBx_wpar_fr", s_lastState);
1561 s_lastQue = s_lastState;
1575 rHioSpec.
SetTransition(s_newQy_2R,
"CBx_wpar_tr", s_lastState);
1576 s_lastQue = s_lastState;
1588 rHioSpec.
SetTransition(s_lastQue,
"CBx_pack", s_lastQy_stby);
1602 if(s_lastQupFL !=
"ErrQy")
1606 if(s_lastQupFR !=
"ErrQy")
1617 s_newQy_FL = s_lastState;
1626 s_newQy_FR = s_lastState;
1632 if((s_lastQupFL !=
"ErrQy") && fl <mType[1])
1639 s_lastQy = s_lastState;
1645 rHioSpec.
SetTransition(s_lastQy,
"CBx_wpar_fl", s_lastState);
1646 s_lastQue = s_lastState;
1662 if((s_lastQupFL !=
"ErrQy") && fr <mType[2])
1669 s_lastQy = s_lastState;
1675 rHioSpec.
SetTransition(s_lastQy,
"CBx_wpar_fl", s_lastState);
1676 s_lastQue = s_lastState;
1694 if((s_lastQupFR !=
"ErrQy") && fl <mType[1])
1701 s_lastQy = s_lastState;
1707 rHioSpec.
SetTransition(s_lastQy,
"CBx_wpar_fr", s_lastState);
1708 s_lastQue = s_lastState;
1725 if((s_lastQupFR !=
"ErrQy") && fr <mType[2])
1732 s_lastQy = s_lastState;
1738 rHioSpec.
SetTransition(s_lastQy,
"CBx_wpar_fr", s_lastState);
1739 s_lastQue = s_lastState;
1771 if(index == mType[0])
1773 if(s_lastQup !=
"ErrQy")
1779 if(s_lastQupFL !=
"ErrQy")
1785 if(s_lastQupFR !=
"ErrQy")
1813 int i_lastState, fl, fr, tol, tor;
1814 i_lastState = fl = fr = tol = tor = 0;
1816 std::string s_lastState, s_lastQup, s_lastQy, s_newQy, s_return;
1817 s_lastState = s_lastQup = s_lastQy = s_newQy = s_return =
"";
1847 for (
int i=0; i<mType[0]; i++)
1851 if(fl<mType[1] || fr<mType[2])
1855 s_newQy = s_lastState;
1901 s_return = s_lastQy;
1910 s_lastQup = s_lastState;
Recurring structure in hierarchies designed according to the I/O based DES framework.
std::string Name() const
Return name of HioModule.
void AdjusTimedGenerator(const Generator &rOldGen, const int i, Generator &rResGen)
This function converts a generator by renaming all events from "CBx_..." to "CBi_....
std::vector< HioModule * > Children() const
Return Children of HioModule.
int Xpos() const
function to call the x-Position of the HioModule
void OpConstr(const HioConstraint &rOpConstr)
Set Operator-Constraint of HioModule.
void TypeHioModule(int type[5])
This is a function to set the type of the HioModule; by type we mean an array of length 5 where each ...
void EncodeType(const std::string type)
function to encode to Type of the HioModule (function has only an informational character).
HioModule(void)
constructor
HioController Controller() const
Return HioController of HioModule.
void ReadHioPlant(const std::string path)
This function reads the model from the given library and sets the following private variables of the ...
int Ypos() const
function to call the y-Position of the HioModule
void Index(const Idx Index)
Set index of HioModule.
void Environment(const HioEnvironment &rHioEnvironment)
Set HioEnvironment of HioModule.
void ReadHioEnv(const std::string path)
This function reads the model describing the interaction of IO-Plants with the environment and sets t...
HioEnvironment Environment() const
Return HioEnvironment of HioModule.
void EnvConstr(const HioConstraint &rEnvConstr)
Set Environment-Constraint of HioModule.
void Name(const std::string &rName)
Set name of HioModule.
HioPlant Plant() const
Return HioPlant of HioModule.
void AdjustAlphabet(const EventSet &rOldAlph, const int i, EventSet &rResAlph)
This function converts an alphabet by renaming all events from "CBx_..." to "CBi_....
void AdjustHioPlant(const HioPlant &rOldHioPlant, const int i, HioPlant &rResult)
AdjustHioPlant(): convenience function (derived from AdjusTimedGenerator())to allow also the conversi...
HioConstraint OpConstr() const
Return Operator-Constraint of HioModule.
bool FindController()
FindController(): this function searches in the folder of a chosen specification for an already compu...
HioEnvironment mEnvironment
HioConstraint EnvConstr() const
Return Environment-Constraint of HioModule.
HioController mController
std::vector< std::string > ChooseSpec(const std::string path)
chooseSpec: this function searches through an appropriate folder (based on the maximal capacity resul...
int * TypeHioModule() const
function to call the Type of the HioModule
void Position(const int Xpos, const int Ypos)
This is a function to set the x and y position of the HioModule.
void SaveController()
Save: this function saves the computed controller in the same folder with the specification that this...
std::string MyPath()
MyPath(): based on the type of the HioModule, this is a convenience function to establish the local p...
void RenameHioModule(const int i)
this function renames all relevant member of the HioModule.
void Clear()
Clear all members of the HioModule.
void InsChild(HioModule *rChild)
Insert HioModule to list of children.
std::vector< HioModule * > mChildren
void AdjustHioEnvironment(const HioEnvironment &rHioEnvX, const HioModule *rHioModule1, const HioModule *rHioModule2, HioEnvironment &rResEnv)
AdjustEnvironment(): In order to describe the interaction between two IO-Plants we use the IO-Environ...
void Plant(const HioPlant &rHioPlant)
Set HioPlant of HioModule.
Idx Index() const
Return index of HioModule.
void Compute()
Compute: this function prepares the data required for HioSynth() function.
void Controller(const HioController &rHioController)
Set HioController of HioModule.
Set of indices with symbolic names.
void SymbolicName(Idx index, const std::string &rName)
Set new name for existing index.
bool Insert(const Idx &rIndex)
Add an element by index.
void SetYp(Idx index)
Mark event as Yp-event (by index)
void SetYc(Idx index)
Mark event as Yc-event (by index)
void SetUc(Idx index)
Mark event as Uc-event (by index)
void SetUp(Idx index)
Mark event Up-event(by index)
void InsYeEvent(Idx index)
Add an existing Ye-event to generator.
void InsUeEvent(Idx index)
Add an existing Ue-event to generator.
void InsUlEvent(Idx index)
Add an existing Ul-event to generator.
bool IsYe(Idx index) const
Is event Ye-event(by index)
bool IsYl(Idx index) const
Is event Yl-event (by index)
void InsYlEvent(Idx index)
Add an existing Yl-event to generator.
EventSet UeEvents(void) const
Get EventSet with Ue-events.
void InsYpEvent(Idx index)
Add an existing Yp-event to generator.
void InsUeEvent(Idx index)
Add an existing Ue-event to generator.
EventSet UpEvents(void) const
Get EventSet with Up-events.
void InsUpEvent(Idx index)
Add an existing Up-event to generator.
void InsYeEvent(Idx index)
Add an existing Ye-event to generator.
EventSet YpEvents(void) const
Get EventSet with Yp-events.
EventSet YeEvents(void) const
Get EventSet with Ye-events.
TBaseSet< Transition, TransSort::X1EvX2 >::Iterator Iterator
Iterator on transition.
virtual void Clear(void)
Clear generator data.
bool InsEvent(Idx index)
Add an existing event to alphabet by index.
const TaEventSet< EventAttr > & Alphabet(void) const
Return const reference to alphabet.
bool SetTransition(Idx x1, Idx ev, Idx x2)
Add a transition to generator by indices.
A TokenReader reads sequential tokens from a file or string.
std::string ReadString(void)
Read string token.
void ReadBegin(const std::string &rLabel)
Open a section by specified label.
bool Peek(Token &token)
Peek next token.
Tokens model atomic data for stream IO.
@ End
<\label> (end of section)
void SetString(const std::string &rName)
Initialize as String token.
TokenType Type(void) const
Get token Type.
void DWrite(const Type *pContext=0) const
Write configuration data to console, debugging format.
void Read(const std::string &rFileName, const std::string &rLabel="", const Type *pContext=0)
Read configuration data from file with label specified.
void Write(const Type *pContext=0) const
Write configuration data to console.
void SWrite(TokenWriter &rTw) const
Write statistics comment to TokenWriter.
Base class of all FAUDES generators.
StateSet::Iterator StatesBegin(void) const
Iterator to Begin() of state set.
bool SetTransition(Idx x1, Idx ev, Idx x2)
Add a transition to generator by indices.
const EventSet & Alphabet(void) const
Return const reference to alphabet.
Idx InsMarkedState(void)
Create new anonymous state and set as marked state.
virtual vGenerator & Assign(const Type &rSrc)
Copy from other faudes type.
TransSet::Iterator TransRelBegin(void) const
Iterator to Begin() of transition relation.
EventSet::Iterator AlphabetBegin(void) const
Iterator to Begin() of alphabet.
void SetInitState(Idx index)
Set an existing state as initial state by index.
Idx EventIndex(const std::string &rName) const
Event index lookup.
StateSet::Iterator StatesEnd(void) const
Iterator to End() of state set.
TransSet::Iterator TransRelEnd(void) const
Iterator to End() of transition relation.
void SetMarkedState(Idx index)
Set an existing state as marked state by index.
Idx InsInitState(void)
Create new anonymous state and set as initial state.
bool InsEvent(Idx index)
Add an existing event to alphabet by index.
std::string EventName(Idx index) const
Event name lookup.
EventSet::Iterator AlphabetEnd(void) const
Iterator to End() of alphabet.
bool ExistsInitState(Idx index) const
Test existence of state in mInitStates.
virtual void Clear(void)
Clear generator data.
void InjectAlphabet(const EventSet &rNewalphabet)
Set mpAlphabet without consistency check.
virtual void Clear(void)
Clear all set.
Iterator End(void) const
Iterator to the end of set.
Iterator Begin(void) const
Iterator to the begin of set.
void StateMin(const Generator &rGen, Generator &rResGen)
State set minimization.
void Parallel(const Generator &rGen1, const Generator &rGen2, Generator &rResGen)
Parallel composition.
Class describing the I/O based hierarchy.
libFAUDES resides within the namespace faudes.
uint32_t Idx
Type definition for index type (allways 32bit)
void CreateConstraint(int mType[5], Generator &constrP, Generator &constrE)
This function creates constraints which describe the condition of completeness and Yp-liveness of a S...
void GroupHioModules(const std::vector< HioModule * > &rChildren, HioModule &rParentModule)
GroupHioModules: This function groups two or more HioModules to a new HioModule.
void AdjustHioController(const HioController &rHioController, const HioModule *rHioModule1, const HioModule *rHioModule2, HioController &rResEnv)
void HioSynth_Musunoi(const Generator &rPlant, const HioPlant &rSpec, const Generator &rConstr, const Generator &rLocConstr, const EventSet &rYp, const EventSet &rUp, Generator &rController)
std::string ToStringInteger(Int number)
integer to string
std::set< std::string > ReadDirectory(const std::string &rDirectory)
Read the contents of the specified directors.
void HioShuffle_Musunoi(const HioPlant &rPlantA, const HioPlant &rPlantB, int depth, Generator &rIOShuffAB)
void CreateSpec(int mType[5], HioPlant &rHioSpec, Generator &constrP, Generator &constrE)
This function creates new specification given by the type ("xxxxx") Note: The core of this function i...