NTScalr value is cached

This commit is contained in:
Matej Sekoranja
2014-08-22 22:56:05 +02:00
parent 379a132cd7
commit f27e741eca
2 changed files with 4 additions and 7 deletions

View File

@@ -206,11 +206,11 @@ PVStructurePtr NTScalar::getControl() const
PVFieldPtr NTScalar::getValue() const
{
return pvNTScalar->getSubField("value");
return pvValue;
}
NTScalar::NTScalar(PVStructurePtr const & pvStructure) :
pvNTScalar(pvStructure)
pvNTScalar(pvStructure), pvValue(pvNTScalar->getSubField("value"))
{}

View File

@@ -229,16 +229,13 @@ public:
template<typename PVT>
std::tr1::shared_ptr<PVT> getValue() const
{
epics::pvData::PVFieldPtr pvField = getValue();
if (pvField.get())
return std::tr1::dynamic_pointer_cast<PVT>(pvField);
else
return std::tr1::shared_ptr<PVT>();
return std::tr1::dynamic_pointer_cast<PVT>(pvValue);
}
private:
NTScalar(epics::pvData::PVStructurePtr const & pvStructure);
epics::pvData::PVStructurePtr pvNTScalar;
epics::pvData::PVFieldPtr pvValue;
friend class detail::NTScalarBuilder;
};