copy() use copy constructors

Signed-off-by: James Cherry <cherry@parallaxsw.com>
This commit is contained in:
James Cherry 2026-05-05 17:25:09 -07:00
parent 801d621d6b
commit 9065d915db
4 changed files with 27 additions and 4 deletions

View File

@ -127,6 +127,7 @@ class ArnoldiDelayCalc : public LumpedCapDelayCalc
{
public:
ArnoldiDelayCalc(StaState *sta);
ArnoldiDelayCalc(const ArnoldiDelayCalc &dcalc);
~ArnoldiDelayCalc() override;
ArcDelayCalc *copy() override;
std::string_view name() const override { return "arnoldi"; }
@ -262,10 +263,20 @@ ArnoldiDelayCalc::ArnoldiDelayCalc(StaState *sta) :
_slewV = (double*)malloc(_pinNmax * sizeof(double));
}
ArnoldiDelayCalc::ArnoldiDelayCalc(const ArnoldiDelayCalc &dcalc) :
LumpedCapDelayCalc(dcalc),
reduce_(new ArnoldiReduce(this)),
delay_work_(delay_work_create())
{
_pinNmax = dcalc._pinNmax;
_delayV = (double*)malloc(_pinNmax * sizeof(double));
_slewV = (double*)malloc(_pinNmax * sizeof(double));
}
ArcDelayCalc *
ArnoldiDelayCalc::copy()
{
return new ArnoldiDelayCalc(this);
return new ArnoldiDelayCalc(*this);
}
ArnoldiDelayCalc::~ArnoldiDelayCalc()

View File

@ -60,12 +60,23 @@ CcsCeffDelayCalc::CcsCeffDelayCalc(StaState *sta) :
{
}
CcsCeffDelayCalc::~CcsCeffDelayCalc() { delete table_dcalc_; }
CcsCeffDelayCalc::CcsCeffDelayCalc(const CcsCeffDelayCalc &dcalc) :
LumpedCapDelayCalc(dcalc),
watch_pin_values_(dcalc.network_),
capacitance_unit_(dcalc.capacitance_unit_),
table_dcalc_(makeDmpCeffElmoreDelayCalc(this))
{
}
CcsCeffDelayCalc::~CcsCeffDelayCalc()
{
delete table_dcalc_;
}
ArcDelayCalc *
CcsCeffDelayCalc::copy()
{
return new CcsCeffDelayCalc(this);
return new CcsCeffDelayCalc(*this);
}
ArcDcalcResult

View File

@ -39,6 +39,7 @@ class CcsCeffDelayCalc : public LumpedCapDelayCalc,
{
public:
CcsCeffDelayCalc(StaState *sta);
CcsCeffDelayCalc(const CcsCeffDelayCalc &dcalc);
~CcsCeffDelayCalc() override;
ArcDelayCalc *copy() override;
std::string_view name() const override { return "ccs_ceff"; }

View File

@ -54,7 +54,7 @@ LumpedCapDelayCalc::LumpedCapDelayCalc(StaState *sta) :
ArcDelayCalc *
LumpedCapDelayCalc::copy()
{
return new LumpedCapDelayCalc(this);
return new LumpedCapDelayCalc(*this);
}
Parasitic *