9#define epicsExportSharedSymbols
15using namespace epics::pvData;
17namespace epics {
namespace nt {
25 FieldBuilderPtr builder =
26 getFieldCreate()->createFieldBuilder()->
28 add(
"name", pvString)->
29 add(
"value", getFieldCreate()->createVariantUnion());
32 builder->addArray(
"tags", pvString);
34 builder->add(
"descriptor", pvString);
36 builder->add(
"sourceType", pvInt);
38 builder->add(
"source", pvString);
41 builder->add(
"alarm", ntField->createAlarm());
44 builder->add(
"timeStamp", ntField->createTimeStamp());
47 for (
size_t i = 0; i< extraCount; i++)
51 StructureConstPtr s = builder->createStructure();
60 return shared_from_this();
66 return shared_from_this();
72 return shared_from_this();
78 return shared_from_this();
109 return shared_from_this();
134 return is_a(pvStructure->getStructure());
137Result& NTNDArrayAttribute::isAttribute(Result& result) {
141 .maybeHas<ScalarArray>(
"tags")
142 .has<Scalar>(
"descriptor")
144 .maybeHas<&NTField::isTimeStamp, Structure>(
"timeStamp")
145 .has<Scalar>(
"sourceType")
146 .has<Scalar>(
"source");
154 Result result(structure);
155 return isAttribute(result.is<Structure>()).
valid();
160 if(!pvStructure)
return false;
179 return pvTimeStamp.attach(ts);
188 return pvAlarm.attach(al);
195 return pvNTNDArrayAttribute;
200 return pvNTNDArrayAttribute->getSubField<PVString>(
"descriptor");
205 return pvNTNDArrayAttribute->getSubField<PVStructure>(
"timeStamp");
210 return pvNTNDArrayAttribute->getSubField<PVStructure>(
"alarm");
216 return pvNTNDArrayAttribute->getSubField<PVString>(
"name");
226 return pvNTNDArrayAttribute->getSubField<PVStringArray>(
"tags");
231 return pvNTNDArrayAttribute->getSubField<PVInt>(
"sourceType");
236 return pvNTNDArrayAttribute->getSubField<PVString>(
"source");
239NTNDArrayAttribute::NTNDArrayAttribute(PVStructurePtr
const & pvStructure) :
240 pvNTNDArrayAttribute(pvStructure), pvValue(pvNTNDArrayAttribute->getSubField<PVUnion>(
"value"))
bool isAlarm(epics::pvData::FieldConstPtr const &field)
Convenience Class for NTNDArrayAttribute.
static shared_pointer wrap(epics::pvData::PVStructurePtr const &pvStructure)
epics::pvData::PVIntPtr getSourceType() const
static const std::string URI
epics::pvData::PVStringPtr getDescriptor() const
epics::pvData::PVStructurePtr getAlarm() const
epics::pvData::PVStructurePtr getTimeStamp() const
bool attachTimeStamp(epics::pvData::PVTimeStamp &pvTimeStamp) const
epics::pvData::PVStringPtr getName() const
epics::pvData::PVUnionPtr getValue() const
epics::pvData::PVStructurePtr getPVStructure() const
bool attachAlarm(epics::pvData::PVAlarm &pvAlarm) const
static NTNDArrayAttributeBuilderPtr createBuilder()
epics::pvData::PVStringPtr getSource() const
static shared_pointer wrapUnsafe(epics::pvData::PVStructurePtr const &pvStructure)
static bool isCompatible(epics::pvData::StructureConstPtr const &structure)
epics::pvData::PVStringArrayPtr getTags() const
static bool is_a(epics::pvData::StructureConstPtr const &structure)
static bool is_a(const std::string &u1, const std::string &u2)
Interface for in-line creating of NTAttribute extended as required by NTNDArray.
shared_pointer addDescriptor()
shared_pointer addAlarm()
NTNDArrayAttributePtr create()
friend class ::epics::nt::NTNDArrayAttribute
shared_pointer addTimeStamp()
epics::pvData::StringArray extraFieldNames
NTNDArrayAttributeBuilder()
epics::pvData::StructureConstPtr createStructure()
epics::pvData::FieldConstPtrArray extraFields
epics::pvData::PVStructurePtr createPVStructure()
shared_pointer add(std::string const &name, epics::pvData::FieldConstPtr const &field)
std::tr1::shared_ptr< NTField > NTFieldPtr
std::tr1::shared_ptr< NTNDArrayAttribute > NTNDArrayAttributePtr
std::tr1::shared_ptr< detail::NTNDArrayAttributeBuilder > NTNDArrayAttributeBuilderPtr