diff --git a/src/nt/ntscalar.cpp b/src/nt/ntscalar.cpp index 9bd935b..27eaf0e 100644 --- a/src/nt/ntscalar.cpp +++ b/src/nt/ntscalar.cpp @@ -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")) {} diff --git a/src/nt/ntscalar.h b/src/nt/ntscalar.h index cab4d7c..a6b6f12 100644 --- a/src/nt/ntscalar.h +++ b/src/nt/ntscalar.h @@ -229,16 +229,13 @@ public: template std::tr1::shared_ptr getValue() const { - epics::pvData::PVFieldPtr pvField = getValue(); - if (pvField.get()) - return std::tr1::dynamic_pointer_cast(pvField); - else - return std::tr1::shared_ptr(); + return std::tr1::dynamic_pointer_cast(pvValue); } private: NTScalar(epics::pvData::PVStructurePtr const & pvStructure); epics::pvData::PVStructurePtr pvNTScalar; + epics::pvData::PVFieldPtr pvValue; friend class detail::NTScalarBuilder; };