(
const std :: string & name,
const assoccontr_t & assoccontr,
pcustomfuncupr_t pcustomfuncupr
);
// деструктор
~ Polzovatcontrol () {}
protected:
// додавання клапана для випадкового управління (реалізація)
virtual void _DobavKlapan (int klapanid, float reserved);
// обчислення станів клапанів в поточному такті
virtual void _VichislSostUprKlapana ();
private:
// зв'язок з асоційованими контролерами
assoccontr_t __ assoccontr;
// покажчик на функцію керування користувача
pcustomfuncupr_t __ pcustomfuncupr;};
template class uprgeneratorzayavok: public generatorzayavok , public objectupr
{
public:
// конструктор і деструктор
explicit __ fastcall uprgeneratorzayavok
(const std :: string & name, funcupr_t pfuncupr = NachFuncUpr):
structelem (name), obyavZayav (name),
generatorzayavok (name), objectupr (name, pfuncupr)
{
;
}
~ uprgeneratorzayavok () {}
protected:
// поведінка
// готовність до видачі заявки
virtual bool _GotovKPeredache () const {
if (! _Razresh ())
const_cast *> (this) -> __OprVremyaVidachi = false;
return
__ OprVremyaVidachi && this-> generatorzayavok :: _GotovKPeredache ();
}
private:
};
class KanalSPrerObslug: public kanal , public ObjectOfControl
{
// керований канал (елемент, який обслуговує заявки випадковий час
public:
// конструктор і деструктор
explicit __ fastcall KanalSPrerObslug
(const std :: string & name, funcupr_t pfuncupr = NachFunсUpr):
structelem (name), ObyavZayav (name),
kanal (name), ObjectOfControl (name, pfuncupr)
~ KanalSPrerObslug () {}
protected:
// готовність до видачі заявки
virtual bool _GotovKPeredache () const {
// при заборонному керуючому сигналі заявка видається відразу
if (! _Razresh ()) return _ObrZayavka! = NULL;
return this-> kanal :: _GotovKPeredache ();
}
private:
};
razvetvitel: public peredatchik, public priemnik, public objectupr
public: explicit __ fastcall razvetvitel (const std :: string & name):
structelem (name), objectupr (name, pfuncupr), obyavZayav (name),
priemnik (name), peredatchik (name) {}
~ razvetvitel () {}
private:
};
};