|
Go to the documentation of this file.
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;
void AdjusTimedGenerator(const Generator &rOldGen, const int i, Generator &rResGen)
std::vector< HioModule * > Children() const
void OpConstr(const HioConstraint &rOpConstr)
void TypeHioModule(int type[5])
void EncodeType(const std::string type)
HioController Controller() const
void ReadHioPlant(const std::string path)
void Index(const Idx Index)
void Environment(const HioEnvironment &rHioEnvironment)
void ReadHioEnv(const std::string path)
HioEnvironment Environment() const
void EnvConstr(const HioConstraint &rEnvConstr)
void Name(const std::string &rName)
void AdjustAlphabet(const EventSet &rOldAlph, const int i, EventSet &rResAlph)
void AdjustHioPlant(const HioPlant &rOldHioPlant, const int i, HioPlant &rResult)
HioConstraint OpConstr() const
HioEnvironment mEnvironment
HioConstraint EnvConstr() const
HioController mController
std::vector< std::string > ChooseSpec(const std::string path)
int * TypeHioModule() const
void Position(const int Xpos, const int Ypos)
void RenameHioModule(const int i)
void InsChild(HioModule *rChild)
std::vector< HioModule * > mChildren
void AdjustHioEnvironment(const HioEnvironment &rHioEnvX, const HioModule *rHioModule1, const HioModule *rHioModule2, HioEnvironment &rResEnv)
void Plant(const HioPlant &rHioPlant)
void Controller(const HioController &rHioController)
void SymbolicName(Idx index, const std::string &rName)
bool Insert(const Idx &rIndex)
void InsYeEvent(Idx index)
void InsUeEvent(Idx index)
void InsUlEvent(Idx index)
bool IsYe(Idx index) const
bool IsYl(Idx index) const
void InsYlEvent(Idx index)
EventSet UeEvents(void) const
void InsYpEvent(Idx index)
void InsUeEvent(Idx index)
EventSet UpEvents(void) const
void InsUpEvent(Idx index)
void InsYeEvent(Idx index)
EventSet YpEvents(void) const
EventSet YeEvents(void) const
TBaseSet< Transition, TransSort::X1EvX2 >::Iterator Iterator
const TaEventSet< EventAttr > & Alphabet(void) const
bool SetTransition(Idx x1, Idx ev, Idx x2)
std::string ReadString(void)
void ReadBegin(const std::string &rLabel)
@ End <\label> (end of section)
void SetString(const std::string &rName)
TokenType Type(void) const
void DWrite(const Type *pContext=0) const
void Read(const std::string &rFileName, const std::string &rLabel="", const Type *pContext=0)
void Write(const Type *pContext=0) const
void SWrite(TokenWriter &rTw) const
StateSet::Iterator StatesBegin(void) const
bool SetTransition(Idx x1, Idx ev, Idx x2)
const EventSet & Alphabet(void) const
virtual vGenerator & Assign(const Type &rSrc)
TransSet::Iterator TransRelBegin(void) const
EventSet::Iterator AlphabetBegin(void) const
void SetInitState(Idx index)
Idx EventIndex(const std::string &rName) const
StateSet::Iterator StatesEnd(void) const
TransSet::Iterator TransRelEnd(void) const
void SetMarkedState(Idx index)
std::string EventName(Idx index) const
EventSet::Iterator AlphabetEnd(void) const
bool ExistsInitState(Idx index) const
void InjectAlphabet(const EventSet &rNewalphabet)
Iterator Begin(void) const
void StateMin(const Generator &rGen, Generator &rResGen)
void Parallel(const Generator &rGen1, const Generator &rGen2, Generator &rResGen)
void CreateConstraint(int mType[5], Generator &constrP, Generator &constrE)
void GroupHioModules(const std::vector< HioModule * > &rChildren, HioModule &rParentModule)
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)
std::set< std::string > ReadDirectory(const std::string &rDirectory)
void HioShuffle_Musunoi(const HioPlant &rPlantA, const HioPlant &rPlantB, int depth, Generator &rIOShuffAB)
void CreateSpec(int mType[5], HioPlant &rHioSpec, Generator &constrP, Generator &constrE)
libFAUDES 2.33c
--- 2025.05.15
--- c++ api documentaion by doxygen
|