46 lines
2.8 KiB
C++
46 lines
2.8 KiB
C++
#include "phasefactory.h"
|
|
#include <exception>
|
|
#include "phase.h"
|
|
#include "businessObjects/transaction.h"
|
|
#include "data/tracedb.h"
|
|
#include "businessObjects/timespan.h"
|
|
|
|
using namespace std;
|
|
|
|
shared_ptr<Phase> PhaseFactory::CreatePhase(ID id, const QString& dbPhaseName,const Timespan& span, const shared_ptr<Transaction>& trans, TraceDB& database)
|
|
{
|
|
traceTime clk = database.getGeneralInfo().clkPeriod;
|
|
|
|
if(dbPhaseName == "REQ")
|
|
return shared_ptr<Phase>(new REQ(id, span,trans,{},std::shared_ptr<Timespan>()));
|
|
else if(dbPhaseName == "RESP")
|
|
return shared_ptr<Phase>(new RESP(id, span,trans,{},std::shared_ptr<Timespan>()));
|
|
|
|
else if(dbPhaseName == "PRE")
|
|
return shared_ptr<Phase>(new PRE(id, span,trans,{Timespan(span.Begin(),span.Begin()+clk)},std::shared_ptr<Timespan>()));
|
|
else if(dbPhaseName == "ACT")
|
|
return shared_ptr<Phase>(new ACT(id, span,trans,{Timespan(span.Begin(),span.Begin()+clk)},std::shared_ptr<Timespan>()));
|
|
else if(dbPhaseName == "PRE_ALL")
|
|
return shared_ptr<Phase>(new PRECHARGE_ALL(id,span,trans,{Timespan(span.Begin(),span.Begin()+clk)},std::shared_ptr<Timespan>()));
|
|
else if(dbPhaseName == "AUTO_REFRESH")
|
|
return shared_ptr<Phase>(new AUTO_REFRESH(id, span,trans,{Timespan(span.Begin(),span.Begin()+clk)},std::shared_ptr<Timespan>()));
|
|
|
|
else if(dbPhaseName == "RD")
|
|
return shared_ptr<Phase>(new RD(id, span,trans,{Timespan(span.Begin(),span.Begin()+clk)},std::shared_ptr<Timespan>(new Timespan(trans->SpanOnDataStrobe()))));
|
|
else if(dbPhaseName == "RDA")
|
|
return shared_ptr<Phase>(new RDA(id, span,trans,{Timespan(span.Begin(),span.Begin()+clk)},std::shared_ptr<Timespan>(new Timespan(trans->SpanOnDataStrobe()))));
|
|
else if(dbPhaseName == "WR")
|
|
return shared_ptr<Phase>(new WR(id, span,trans,{Timespan(span.Begin(),span.Begin()+clk)},std::shared_ptr<Timespan>(new Timespan(trans->SpanOnDataStrobe()))));
|
|
else if(dbPhaseName == "WRA")
|
|
return shared_ptr<Phase>(new WRA(id, span,trans,{Timespan(span.Begin(),span.Begin()+clk)},std::shared_ptr<Timespan>(new Timespan(trans->SpanOnDataStrobe()))));
|
|
|
|
else if(dbPhaseName == "SREF")
|
|
return shared_ptr<Phase>(new SREF(id, span, trans,{Timespan(span.Begin(),span.Begin()+clk),Timespan(span.End()-clk,span.End())},std::shared_ptr<Timespan>()));
|
|
else if(dbPhaseName == "PDNA")
|
|
return shared_ptr<Phase>(new PDNA(id, span,trans, {Timespan(span.Begin(),span.Begin()+clk),Timespan(span.End()-clk,span.End())},std::shared_ptr<Timespan>()));
|
|
else if(dbPhaseName == "PDNP")
|
|
return shared_ptr<Phase>(new PDNP(id, span,trans, {Timespan(span.Begin(),span.Begin()+clk),Timespan(span.End()-clk,span.End())},std::shared_ptr<Timespan>()));
|
|
else
|
|
throw std::runtime_error("DB phasename " + dbPhaseName.toStdString() + " unkown to phasefactory");
|
|
}
|