9#define epicsExportSharedSymbols
14using namespace epics::pvData;
16namespace epics {
namespace nt {
24 FieldBuilderPtr builder =
25 getFieldCreate()->createFieldBuilder()->
27 addArray(
"base", pvDouble)->
28 addArray(
"value", pvDouble)->
29 addArray(
"units", pvString);
32 builder->add(
"descriptor", pvString);
35 builder->add(
"alarm", ntField->createAlarm());
38 builder->add(
"timeStamp", ntField->createTimeStamp());
40 size_t extraCount = extraFieldNames.size();
41 for (
size_t i = 0; i< extraCount; i++)
42 builder->add(extraFieldNames[i], extraFields[i]);
45 StructureConstPtr s = builder->createStructure();
54 return shared_from_this();
60 return shared_from_this();
66 return shared_from_this();
80NTContinuumBuilder::NTContinuumBuilder()
85void NTContinuumBuilder::reset()
90 extraFieldNames.clear();
96 extraFields.push_back(field); extraFieldNames.push_back(name);
97 return shared_from_this();
112 return shared_pointer(
new NTContinuum(pvStructure));
122 return is_a(pvStructure->getStructure());
130 Result result(structure);
134 .has<ScalarArray>(
"base")
135 .has<ScalarArray>(
"value")
136 .has<ScalarArray>(
"units")
137 .maybeHas<Scalar>(
"descriptor")
138 .maybeHas<&NTField::isAlarm, Structure>(
"alarm")
145 if(!pvStructure)
return false;
165 return pvTimeStamp.attach(ts);
174 return pvAlarm.attach(al);
181 return pvNTContinuum;
186 return pvNTContinuum->getSubField<PVString>(
"descriptor");
191 return pvNTContinuum->getSubField<PVStructure>(
"timeStamp");
196 return pvNTContinuum->getSubField<PVStructure>(
"alarm");
201 return pvNTContinuum->getSubField<PVDoubleArray>(
"base");
211 return pvNTContinuum->getSubField<PVStringArray>(
"units");
214NTContinuum::NTContinuum(PVStructurePtr
const & pvStructure) :
215 pvNTContinuum(pvStructure),
216 pvValue(pvNTContinuum->getSubField<PVDoubleArray>(
"value"))
Convenience Class for NTContinuum.
epics::pvData::PVDoubleArrayPtr getValue() const
epics::pvData::PVDoubleArrayPtr getBase() const
epics::pvData::PVStructurePtr getAlarm() const
static const std::string URI
static shared_pointer wrapUnsafe(epics::pvData::PVStructurePtr const &pvStructure)
epics::pvData::PVStructurePtr getTimeStamp() const
epics::pvData::PVStructurePtr getPVStructure() const
static bool isCompatible(epics::pvData::StructureConstPtr const &structure)
bool attachTimeStamp(epics::pvData::PVTimeStamp &pvTimeStamp) const
static bool is_a(epics::pvData::StructureConstPtr const &structure)
bool attachAlarm(epics::pvData::PVAlarm &pvAlarm) const
static shared_pointer wrap(epics::pvData::PVStructurePtr const &pvStructure)
epics::pvData::PVStringArrayPtr getUnits() const
epics::pvData::PVStringPtr getDescriptor() const
static NTContinuumBuilderPtr createBuilder()
bool isTimeStamp(epics::pvData::FieldConstPtr const &field)
static bool is_a(const std::string &u1, const std::string &u2)
Interface for in-line creating of NTContinuum.
epics::pvData::PVStructurePtr createPVStructure()
friend class ::epics::nt::NTContinuum
shared_pointer addAlarm()
shared_pointer addTimeStamp()
shared_pointer addDescriptor()
epics::pvData::StructureConstPtr createStructure()
shared_pointer add(std::string const &name, epics::pvData::FieldConstPtr const &field)
std::tr1::shared_ptr< NTField > NTFieldPtr
std::tr1::shared_ptr< NTContinuum > NTContinuumPtr
std::tr1::shared_ptr< detail::NTContinuumBuilder > NTContinuumBuilderPtr