11 #ifndef FAUDES_HIO_CONSTRAINT_H 
   12 #define FAUDES_HIO_CONSTRAINT_H 
   42 template <
class GlobalAttr, 
class StateAttr, 
class EventAttr, 
class TransAttr>
 
  182     void SetY(
const std::string& rName);
 
  206     void SetU(
const std::string& rName);
 
  236     bool IsY(
const std::string& rName) 
const;
 
  258     bool IsU(
const std::string& rName) 
const;
 
  292     void SetQY(
const std::string& rName);
 
  315     void ClrQY(
const std::string& rName);
 
  344     bool IsQY(
const std::string& rName) 
const;
 
  368     void SetQU(
const std::string& rName);
 
  391     void ClrQU(
const std::string& rName);
 
  420     bool IsQU(
const std::string& rName) 
const;
 
  496     bool IsErr(
const std::string& rName) 
const;
 
  525 #define THIS THioConstraint<GlobalAttr, StateAttr, EventAttr, TransAttr> 
  526 #define BASE TaGenerator<GlobalAttr, StateAttr, EventAttr, TransAttr> 
  527 #define TEMP template <class GlobalAttr, class StateAttr, class EventAttr, class TransAttr> 
  532   FD_DG(
"HioConstraint(" << 
this << 
")::HioConstraint()");
 
  537   FD_DG(
"HioConstraint(" << 
this << 
")::HioConstraint(rOtherGen)");
 
  542   FD_DG(
"HioConstraint(" << 
this << 
")::HioConstraint(rOtherGen)");
 
  550 ) : 
BASE(rOtherGen) {
 
  551   FD_DG(
"HioConstraint(" << 
this << 
")::HioConstraint(rOtherGen)");
 
  557 TEMP THIS::THioConstraint(
const std::string& rFileName) : 
BASE(rFileName) {
 
  558   FD_DG(
"HioConstraint(" << 
this << 
")::HioConstraint(rFilename) : done");
 
  566   res->EventSymbolTablep(BASE::mpEventSymbolTable);
 
  567   res->mStateNamesEnabled=BASE::mStateNamesEnabled;
 
  573   return new THIS(*
this);
 
  579   THIS res= BASE::NewAGen();
 
  587     EventAttr attr=BASE::EventAttribute(index);
 
  592   TEMP bool THIS::IsY(
const std::string& rName)
 const {
 
  593     EventAttr attr=BASE::EventAttribute(rName);
 
  599     EventAttr attr=BASE::EventAttribute(index);
 
  604   TEMP bool THIS::IsU(
const std::string& rName)
 const {
 
  605     EventAttr attr=BASE::EventAttribute(rName);
 
  611     FD_DG(
"HioConstraint(" << 
this << 
")::YEvents()");
 
  613     EventSet::Iterator it;
 
  614     for(it=BASE::AlphabetBegin(); it!=BASE::AlphabetEnd(); it++) {
 
  615       if(IsY(*it)) res.
Insert(*it);
 
  622     FD_DG(
"HioConstraint(" << 
this << 
")::UEvents()");
 
  624     EventSet::Iterator it;
 
  625     for(it=BASE::AlphabetBegin(); it!=BASE::AlphabetEnd(); it++) {
 
  626       if(IsU(*it)) res.
Insert(*it);
 
  635     FD_DG(
"HioConstraint(" << 
this << 
")::InsYEvent(" << index << 
")");
 
  638     BASE::InsEvent(index,attr);
 
  642   TEMP Idx THIS::InsYEvent(
const std::string& rName) {
 
  643     FD_DG(
"HioConstraint(" << 
this << 
")::InsYEvent(" << rName << 
")");
 
  646     return BASE::InsEvent(rName,attr);
 
  651     FD_DG(
"HioConstraint(" << 
this << 
")::InsUEvent(" << index << 
")");
 
  654     BASE::InsEvent(index,attr);
 
  658   TEMP Idx THIS::InsUEvent(
const std::string& rName) {
 
  659     FD_DG(
"HioConstraint(" << 
this << 
")::InsUEvent(" << rName << 
")");
 
  662     return BASE::InsEvent(rName,attr);
 
  667     FD_DG(
"HioConstraint(" << 
this << 
")::SetY(" << index << 
")");
 
  668     EventAttr attr=BASE::EventAttribute(index);
 
  670     BASE::pAlphabet->Attribute(index,attr);
 
  674   TEMP void THIS::SetY(
const std::string& rName) {
 
  675     FD_DG(
"HioConstraint(" << 
this << 
")::SetY(" << rName << 
")");
 
  676     Idx index = BASE::EventIndex(rName);
 
  682     FD_DG(
"HioConstraint(" << 
this << 
")::SetY(rEvents)");
 
  683     EventSet::Iterator it;
 
  684     for(it=rEvents.
Begin(); it!=rEvents.
End(); it++) {
 
  691     FD_DG(
"HioConstraint(" << 
this << 
")::SetU(" << index << 
")");
 
  692     EventAttr attr=BASE::EventAttribute(index);
 
  694     BASE::pAlphabet->Attribute(index,attr);
 
  698   TEMP void THIS::SetU(
const std::string& rName) {
 
  699     FD_DG(
"HioConstraint(" << 
this << 
")::SetU(" << rName << 
")");
 
  700     Idx index = BASE::EventIndex(rName);
 
  706     FD_DG(
"HioConstraint(" << 
this << 
")::SetU(rEvents)");
 
  707     EventSet::Iterator it;
 
  708     for(it=rEvents.
Begin(); it!=rEvents.
End(); it++) {
 
  719     FD_DG(
"HioConstraint(" << 
this << 
")::SetQY(" << index << 
")");
 
  720     StateAttr attr=BASE::StateAttribute(index);
 
  729     BASE::pStates->Attribute(index,attr);
 
  733   TEMP void THIS::SetQY(
const std::string& rName) {
 
  734     FD_DG(
"HioConstraint(" << 
this << 
")::SetQY(" << rName << 
")");
 
  735     Idx index = BASE::StateIndex(rName);
 
  741     FD_DG(
"HioConstraint(" << 
this << 
")::SetQY(rStates)");
 
  742     StateSet::Iterator sit;
 
  743     for(sit=rStates.
Begin(); sit!=rStates.
End(); sit++) {
 
  750     FD_DG(
"HioConstraint(" << 
this << 
")::ClrQY(" << index << 
")");
 
  751     StateAttr attr=BASE::StateAttribute(index);
 
  753     BASE::pStates->Attribute(index,attr);
 
  757   TEMP void THIS::ClrQY(
const std::string& rName) {
 
  758     FD_DG(
"HioConstraint(" << 
this << 
")::ClrQY(" << rName << 
")");
 
  759     Idx index = BASE::StateIndex(rName);
 
  765     FD_DG(
"HioConstraint(" << 
this << 
")::ClrQY(rStates)");
 
  766     StateSet::Iterator sit;
 
  767     for(sit=rStates.
Begin(); sit!=rStates.
End(); sit++) {
 
  774     StateAttr attr=BASE::StateAttribute(index);
 
  779   TEMP bool THIS::IsQY(
const std::string& rName)
 const {
 
  780     Idx index = BASE::StateIndex(rName);
 
  786     FD_DG(
"HioConstraint(" << 
this << 
")::QYStates()");
 
  788     StateSet::Iterator sit;
 
  789     for(sit=BASE::StatesBegin(); sit!=BASE::StatesEnd(); sit++) {
 
  790       if(IsQY(*sit)) res.
Insert(*sit);
 
  798     FD_DG(
"HioConstraint(" << 
this << 
")::SetQU(" << index << 
")");
 
  799     StateAttr attr=BASE::StateAttribute(index);
 
  808     BASE::pStates->Attribute(index,attr);
 
  812   TEMP void THIS::SetQU(
const std::string& rName) {
 
  813     FD_DG(
"HioConstraint(" << 
this << 
")::SetQU(" << rName << 
")");
 
  814     Idx index = BASE::StateIndex(rName);
 
  820     FD_DG(
"HioConstraint(" << 
this << 
")::SetQU(rStates)");
 
  821     StateSet::Iterator sit;
 
  822     for(sit=rStates.
Begin(); sit!=rStates.
End(); sit++) {
 
  829     FD_DG(
"HioConstraint(" << 
this << 
")::ClrQU(" << index << 
")");
 
  830     StateAttr attr=BASE::StateAttribute(index);
 
  832     BASE::pStates->Attribute(index,attr);
 
  836   TEMP void THIS::ClrQU(
const std::string& rName) {
 
  837     FD_DG(
"HioConstraint(" << 
this << 
")::ClrQU(" << rName << 
")");
 
  838     Idx index = BASE::StateIndex(rName);
 
  844     FD_DG(
"HioConstraint(" << 
this << 
")::ClrQU(rStates)");
 
  845     StateSet::Iterator sit;
 
  846     for(sit=rStates.
Begin(); sit!=rStates.
End(); sit++) {
 
  853     StateAttr attr=BASE::StateAttribute(index);
 
  858   TEMP bool THIS::IsQU(
const std::string& rName)
 const {
 
  859     Idx index = BASE::StateIndex(rName);
 
  865     FD_DG(
"HioConstraint(" << 
this << 
")::QUStates()");
 
  867     StateSet::Iterator sit;
 
  868     for(sit=BASE::StatesBegin(); sit!=BASE::StatesEnd(); sit++) {
 
  869       if(IsQU(*sit)) res.
Insert(*sit);
 
  876     FD_DG(
"HioPlant(" << 
this << 
")::SetErr(" << index << 
")");
 
  877     StateAttr attr=BASE::StateAttribute(index);
 
  879     BASE::pStates->Attribute(index,attr);
 
  883   TEMP void THIS::SetErr(
const std::string& rName) {
 
  884     FD_DG(
"HioPlant(" << 
this << 
")::SetErr(" << rName << 
")");
 
  885     Idx index = BASE::StateIndex(rName);
 
  891     FD_DG(
"HioPlant(" << 
this << 
")::SetErr(rStates)");
 
  892     StateSet::Iterator sit;
 
  893     for(sit=rStates.
Begin(); sit!=rStates.
End(); sit++) {
 
  900     FD_DG(
"HioPlant(" << 
this << 
")::ClrErr(" << index << 
")");
 
  901     StateAttr attr=BASE::StateAttribute(index);
 
  903     BASE::pStates->Attribute(index,attr);
 
  907   TEMP void THIS::ClrErr(
const std::string& rName) {
 
  908     FD_DG(
"HioPlant(" << 
this << 
")::ClrErr(" << rName << 
")");
 
  909     Idx index = BASE::StateIndex(rName);
 
  915     FD_DG(
"HioPlant(" << 
this << 
")::ClrErr(rStates)");
 
  916     StateSet::Iterator sit;
 
  917     for(sit=rStates.
Begin(); sit!=rStates.
End(); sit++) {
 
  924     StateAttr attr=BASE::StateAttribute(index);
 
  929   TEMP bool THIS::IsErr(
const std::string& rName)
 const {
 
  930     Idx index = BASE::StateIndex(rName);
 
  936     FD_DG(
"HioPlant(" << 
this << 
")::ErrStates()");
 
  938     StateSet::Iterator sit;
 
  939     for(sit=BASE::StatesBegin(); sit!=BASE::StatesEnd(); sit++) {
 
  940       if(IsErr(*sit)) res.
Insert(*sit);
 
  989                 std::string& rReportStr);
 
bool Insert(const Idx &rIndex)
 
bool IsU(Idx index) const
 
bool IsQY(const std::string &rName) const
 
void SetY(const EventSet &rEvents)
 
bool IsErr(const std::string &rName) const
 
virtual bool UpdateAttributes(void)
 
void ClrQY(const StateSet &rStates)
 
StateSet ErrStates(void) const
 
bool IsY(Idx index) const
 
bool IsQY(Idx index) const
 
void SetQU(const std::string &rName)
 
bool IsY(const std::string &rName) const
 
EventSet UEvents(void) const
 
StateSet QUStates(void) const
 
THioConstraint(const Generator &rOtherGen, const EventSet &rY, const EventSet &rU)
 
bool IsU(const std::string &rName) const
 
THioConstraint(const std::string &rFileName)
 
bool IsQU(Idx index) const
 
void ClrQY(const std::string &rName)
 
void SetQY(const StateSet &rStates)
 
void SetU(const EventSet &rEvents)
 
void SetQY(const std::string &rName)
 
void InsUEvent(Idx index)
 
virtual THioConstraint * Copy(void) const
 
void ClrErr(const std::string &rName)
 
THioConstraint NewHioConstraint(void) const
 
bool IsErr(Idx index) const
 
THioConstraint(const Generator &rOtherGen)
 
void InsYEvent(Idx index)
 
Idx InsYEvent(const std::string &rName)
 
THioConstraint * New(void) const
 
StateSet QYStates(void) const
 
void SetU(const std::string &rName)
 
void SetQU(const StateSet &rStates)
 
void ClrQU(const std::string &rName)
 
bool IsQU(const std::string &rName) const
 
void SetErr(const std::string &rName)
 
void ClrErr(const StateSet &rStates)
 
void ClrQU(const StateSet &rStates)
 
void SetErr(const StateSet &rStates)
 
EventSet YEvents(void) const
 
THioConstraint(const THioConstraint &rOtherGen)
 
void SetY(const std::string &rName)
 
Idx InsUEvent(const std::string &rName)
 
Iterator Begin(void) const
 
bool IsHioConstraintForm(HioConstraint &rHioConstraint, StateSet &rQY, StateSet &rQU, EventSet &rErrEvSet, TransSet &rErrTrSet, StateSet &rErrStSet, std::string &rReportStr)
 
void HioStatePartition(HioConstraint &rHioConstraint)
 
THioConstraint< AttributeVoid, HioStateFlags, HioEventFlags, AttributeVoid > HioConstraint