#include "lfsaappl.h"
class FTskSimple : public LFsaAppl
{
public:
LFsaAppl* Create(CVarFSA *pCVF) { Q_UNUSED(pCVF)return new FTskSimple(nameFsa); }
bool FCreationOfLinksForVariables();
FTskSimple(string strNam);
virtual ~FTskSimple();
CVar *pVarF;
CVar *pVarN;
CVar *pVarStart;
LFsaAppl *pFCall{nullptr};
protected:
int x1();
void y1(); void y2(); void y3();
};
#include "stdafx.h"
#include "FTskSimple.h"
#include "FSimpleFactorial.h"
LArc TT_Task[] = {
LArc("st", "t1", "--", "y1"),
LArc("t1", "t2", "x1", "y3"),
LArc("t2", "t1", "--", "y2"),
};
FTskSimple::FTskSimple(string strNam)
:LFsaAppl(TT_Task, strNam)
{
}
FTskSimple::~FTskSimple() { if (pFCall) delete pFCall; }
bool FTskSimple::FCreationOfLinksForVariables() {
pVarF = CreateLocVar("dF", CLocVar::vtDouble, "factorial value");
pVarN = CreateLocVar("nN", CLocVar::vtInteger, "input value");
pVarStart = CreateLocVar("bStart", CLocVar::vtBool, "start?");
return true;
}
int FTskSimple::x1() { return pVarStart->GetDataSrc(); }
void FTskSimple::y1()
{
pVarStart->SetDataSrc(this, 0.0);
pFCall = new FSimpleFactorial(pVarN->GetDataSrc());
}
void FTskSimple::y2()
{
pVarF->SetDataSrc(this, static_cast<FSimpleFactorial*>(pFCall)->dF);
}
void FTskSimple::y3()
{
pVarStart->SetDataSrc(this, 0.0);
static_cast<FSimpleFactorial*>(pFCall)->nN = pVarN->GetDataSrc();
pFCall->FCall(this);
}