9#define epicsExportSharedSymbols
14using namespace epics::pvData;
16namespace epics {
namespace nt {
23 epics::pvData::ScalarType scalarType
26 valueType = scalarType;
29 return shared_from_this();
35 throw std::runtime_error(
"value type not set");
37 FieldBuilderPtr builder =
38 getFieldCreate()->createFieldBuilder()->
40 addArray(
"name", pvString)->
41 addArray(
"value", valueType);
44 builder->add(
"descriptor", pvString);
47 builder->add(
"alarm", ntField->createAlarm());
50 builder->add(
"timeStamp", ntField->createTimeStamp());
52 size_t extraCount = extraFieldNames.size();
53 for (
size_t i = 0; i< extraCount; i++)
54 builder->add(extraFieldNames[i], extraFields[i]);
56 StructureConstPtr s = builder->createStructure();
65 return shared_from_this();
71 return shared_from_this();
77 return shared_from_this();
90NTNameValueBuilder::NTNameValueBuilder()
95void NTNameValueBuilder::reset()
101 extraFieldNames.clear();
107 extraFields.push_back(field); extraFieldNames.push_back(name);
108 return shared_from_this();
134 return is_a(pvStructure->getStructure());
142 Result result(structure);
146 .has<ScalarArray>(
"name")
147 .has<ScalarArray>(
"value")
148 .maybeHas<Scalar>(
"descriptor")
150 .maybeHas<&NTField::isTimeStamp, Structure>(
"timeStamp")
156 if(!pvStructure)
return false;
175 return pvTimeStamp.attach(ts);
184 return pvAlarm.attach(al);
191 return pvNTNameValue;
196 return pvNTNameValue->getSubField<PVString>(
"descriptor");
201 return pvNTNameValue->getSubField<PVStructure>(
"timeStamp");
206 return pvNTNameValue->getSubField<PVStructure>(
"alarm");
211 return pvNTNameValue->getSubField<PVStringArray>(
"name");
216 return pvNTNameValue->getSubField(
"value");
219NTNameValue::NTNameValue(PVStructurePtr
const & pvStructure) :
220 pvNTNameValue(pvStructure)
bool isAlarm(epics::pvData::FieldConstPtr const &field)
Convenience Class for NTNameValue.
static shared_pointer wrapUnsafe(epics::pvData::PVStructurePtr const &pvStructure)
epics::pvData::PVStructurePtr getPVStructure() const
epics::pvData::PVStringArrayPtr getName() const
bool attachTimeStamp(epics::pvData::PVTimeStamp &pvTimeStamp) const
static NTNameValueBuilderPtr createBuilder()
static bool isCompatible(epics::pvData::StructureConstPtr const &structure)
bool attachAlarm(epics::pvData::PVAlarm &pvAlarm) const
epics::pvData::PVFieldPtr getValue() const
static const std::string URI
static bool is_a(epics::pvData::StructureConstPtr const &structure)
static shared_pointer wrap(epics::pvData::PVStructurePtr const &pvStructure)
epics::pvData::PVStructurePtr getAlarm() const
epics::pvData::PVStructurePtr getTimeStamp() const
epics::pvData::PVStringPtr getDescriptor() const
static bool is_a(const std::string &u1, const std::string &u2)
Interface for in-line creating of NTNameValue.
shared_pointer addTimeStamp()
shared_pointer addAlarm()
shared_pointer value(epics::pvData::ScalarType scalarType)
epics::pvData::PVStructurePtr createPVStructure()
epics::pvData::StructureConstPtr createStructure()
friend class ::epics::nt::NTNameValue
shared_pointer addDescriptor()
shared_pointer add(std::string const &name, epics::pvData::FieldConstPtr const &field)
std::tr1::shared_ptr< NTField > NTFieldPtr
std::tr1::shared_ptr< NTNameValue > NTNameValuePtr
std::tr1::shared_ptr< detail::NTNameValueBuilder > NTNameValueBuilderPtr