9 #define epicsExportSharedSymbols 16 namespace epics {
namespace nt {
28 add(
"value", ntField->createEnumerated());
31 builder->add(
"descriptor",
pvString);
34 builder->add(
"alarm", ntField->createAlarm());
37 builder->add(
"timeStamp", ntField->createTimeStamp());
39 size_t extraCount = extraFieldNames.size();
40 for (
size_t i = 0;
i< extraCount;
i++)
41 builder->add(extraFieldNames[
i], extraFields[i]);
50 NTEnumBuilder::shared_pointer NTEnumBuilder::addDescriptor()
53 return shared_from_this();
56 NTEnumBuilder::shared_pointer NTEnumBuilder::addAlarm()
59 return shared_from_this();
62 NTEnumBuilder::shared_pointer NTEnumBuilder::addTimeStamp()
65 return shared_from_this();
78 NTEnumBuilder::NTEnumBuilder()
83 void NTEnumBuilder::reset()
88 extraFieldNames.clear();
92 NTEnumBuilder::shared_pointer NTEnumBuilder::add(
string const & name,
FieldConstPtr const & field)
94 extraFields.push_back(field); extraFieldNames.push_back(name);
95 return shared_from_this();
101 const std::string NTEnum::URI(
"epics:nt/NTEnum:1.0");
105 if(!isCompatible(pvStructure))
return shared_pointer();
106 return wrapUnsafe(pvStructure);
111 return shared_pointer(
new NTEnum(pvStructure));
116 return NTUtils::is_a(structure->getID(), URI);
121 return is_a(pvStructure->getStructure());
133 .has<&NTField::isEnumerated, Structure>(
"value")
134 .maybeHas<
Scalar>(
"descriptor")
135 .maybeHas<&NTField::isAlarm, Structure>(
"alarm")
136 .maybeHas<&NTField::isTimeStamp,
Structure>(
"timeStamp")
142 if(!pvStructure)
return false;
144 return isCompatible(pvStructure->getStructure());
147 bool NTEnum::isValid()
161 return pvTimeStamp.
attach(ts);
166 bool NTEnum::attachAlarm(
PVAlarm &pvAlarm)
const 170 return pvAlarm.
attach(al);
182 return pvNTEnum->getSubField<
PVString>(
"descriptor");
187 return pvNTEnum->getSubField<
PVStructure>(
"timeStamp");
201 pvNTEnum(pvStructure), pvValue(pvNTEnum->getSubField<
PVStructure>(
"value"))
FORCE_INLINE std::tr1::shared_ptr< PVField > getSubField(A a)
This class implements introspection object for Scalar.
std::tr1::shared_ptr< detail::NTEnumBuilder > NTEnumBuilderPtr
Convenience Class for NTEnum.
bool attach(PVFieldPtr const &pvField)
Validation methods for NT types.
TODO only here because of the Lockable.
std::tr1::shared_ptr< const Structure > StructureConstPtr
std::tr1::shared_ptr< NTField > NTFieldPtr
std::tr1::shared_ptr< FieldBuilder > FieldBuilderPtr
Interface for in-line creating of NTEnum.
PVString is special case, since it implements SerializableArray.
This class implements introspection object for a structure.
Methods for accessing a timeStamp structure.
Methods for accessing an alarm structure.
Data interface for a structure,.
std::tr1::shared_ptr< const Field > FieldConstPtr
FORCE_INLINE const FieldCreatePtr & getFieldCreate()
std::tr1::shared_ptr< PVStructure > PVStructurePtr
std::tr1::shared_ptr< PVString > PVStringPtr
std::tr1::shared_ptr< NTEnum > NTEnumPtr
FORCE_INLINE const PVDataCreatePtr & getPVDataCreate()
bool attach(PVFieldPtr const &pvField)