9#define epicsExportSharedSymbols
14using namespace epics::pvData;
16namespace epics {
namespace nt {
25 FieldBuilderPtr builder =
26 getFieldCreate()->createFieldBuilder()->
28 add(
"name", pvString)->
29 add(
"value", getFieldCreate()->createVariantUnion());
32 builder->addArray(
"tags", pvString);
35 builder->add(
"descriptor", pvString);
38 builder->add(
"alarm", ntField->createAlarm());
41 builder->add(
"timeStamp", ntField->createTimeStamp());
44 for (
size_t i = 0; i< extraCount; i++)
48 StructureConstPtr s = builder->createStructure();
57 return shared_from_this();
63 return shared_from_this();
69 return shared_from_this();
75 return shared_from_this();
105 return shared_from_this();
120 return shared_pointer(
new NTAttribute(pvStructure));
130 return is_a(pvStructure->getStructure());
138 Result result(structure);
144 .maybeHas<ScalarArray>(
"tags")
145 .maybeHas<Scalar>(
"descriptor")
146 .maybeHas<&NTField::isAlarm, Structure>(
"alarm")
153 if(!pvStructure)
return false;
172 return pvTimeStamp.attach(ts);
181 return pvAlarm.attach(al);
188 return pvNTAttribute;
193 return pvNTAttribute->getSubField<PVString>(
"descriptor");
198 return pvNTAttribute->getSubField<PVStructure>(
"timeStamp");
203 return pvNTAttribute->getSubField<PVStructure>(
"alarm");
209 return pvNTAttribute->getSubField<PVString>(
"name");
219 return pvNTAttribute->getSubField<PVStringArray>(
"tags");
222NTAttribute::NTAttribute(PVStructurePtr
const & pvStructure) :
223 pvNTAttribute(pvStructure), pvValue(pvNTAttribute->getSubField<PVUnion>(
"value"))
Convenience Class for NTAttribute.
epics::pvData::PVStringPtr getName() const
epics::pvData::PVStructurePtr getAlarm() const
static shared_pointer wrapUnsafe(epics::pvData::PVStructurePtr const &pvStructure)
epics::pvData::PVStructurePtr getTimeStamp() const
bool attachTimeStamp(epics::pvData::PVTimeStamp &pvTimeStamp) const
epics::pvData::PVStructurePtr getPVStructure() const
static shared_pointer wrap(epics::pvData::PVStructurePtr const &pvStructure)
static const std::string URI
epics::pvData::PVUnionPtr getValue() const
static NTAttributeBuilderPtr createBuilder()
static bool isCompatible(epics::pvData::StructureConstPtr const &structure)
epics::pvData::PVStringPtr getDescriptor() const
epics::pvData::PVStringArrayPtr getTags() const
static bool is_a(epics::pvData::StructureConstPtr const &structure)
bool attachAlarm(epics::pvData::PVAlarm &pvAlarm) const
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 NTAttribute.
shared_pointer addDescriptor()
epics::pvData::StringArray extraFieldNames
shared_pointer addTimeStamp()
epics::pvData::FieldConstPtrArray extraFields
shared_pointer addAlarm()
epics::pvData::StructureConstPtr createStructure()
shared_pointer add(std::string const &name, epics::pvData::FieldConstPtr const &field)
epics::pvData::PVStructurePtr createPVStructure()
friend class ::epics::nt::NTAttribute
std::tr1::shared_ptr< detail::NTAttributeBuilder > NTAttributeBuilderPtr
std::tr1::shared_ptr< NTField > NTFieldPtr
std::tr1::shared_ptr< NTAttribute > NTAttributePtr