10#define epicsExportSharedSymbols
13using namespace epics::pvData;
14using std::tr1::static_pointer_cast;
16namespace epics {
namespace nt {
23 if(ntstructureField.get()==NULL) {
26 return ntstructureField;
30: fieldCreate(getFieldCreate()),
31 standardField(getStandardField())
39 .has<ScalarArray>(
"choices");
51 .has<Scalar>(
"secondsPastEpoch")
52 .has<Scalar>(
"nanoseconds")
53 .has<Scalar>(
"userTag");
65 .has<Scalar>(
"severity")
66 .has<Scalar>(
"status")
67 .has<Scalar>(
"message");
73 return isAlarm(result.is<Structure>()).valid();
79 .has<Scalar>(
"limitLow")
80 .has<Scalar>(
"limitHigh")
81 .has<Scalar>(
"description")
82 .has<Scalar>(
"format")
83 .has<Scalar>(
"units");
90 return isDisplay(result.is<Structure>()).valid();
96 .has<Scalar>(
"active")
97 .has<Scalar>(
"lowAlarmLimit")
98 .has<Scalar>(
"lowWarningLimit")
99 .has<Scalar>(
"highWarningLimit")
100 .has<Scalar>(
"highAlarmLimit")
101 .has<Scalar>(
"lowAlarmSeverity")
102 .has<Scalar>(
"lowWarningSeverity")
103 .has<Scalar>(
"highWarningSeverity")
104 .has<Scalar>(
"highAlarmSeverity")
105 .has<Scalar>(
"hysteresis");
110 Result result(field);
117 .has<Scalar>(
"limitLow")
118 .has<Scalar>(
"limitHigh")
119 .has<Scalar>(
"minStep");
124 Result result(field);
125 return isControl(result.is<Structure>()).valid();
130 return standardField->enumerated();
135 return standardField->timeStamp();
140 return standardField->alarm();
145 return standardField->display();
150 return standardField->control();
161 return fieldCreate->createStructureArray(st);
167 return fieldCreate->createStructureArray(st);
175 if(pvntstructureField.get()==NULL) {
178 return pvntstructureField;
181PVNTField::PVNTField()
182: pvDataCreate(getPVDataCreate()),
183 standardField(getStandardField()),
184 standardPVField(getStandardPVField()),
185 ntstructureField(
NTField::get())
191 StringArray
const & choices)
193 return standardPVField->enumerated(choices);
198 StructureConstPtr timeStamp = standardField->timeStamp();
199 return pvDataCreate->createPVStructure(timeStamp);
204 StructureConstPtr alarm = standardField->alarm();
205 return pvDataCreate->createPVStructure(alarm);
210 StructureConstPtr display = standardField->display();
211 return pvDataCreate->createPVStructure(display);
217 StructureConstPtr control = standardField->control();
218 return pvDataCreate->createPVStructure(control);
223 StructureArrayConstPtr sa =
224 ntstructureField->createEnumeratedArray();
225 return pvDataCreate->createPVStructureArray(sa);
230 StructureArrayConstPtr sa =
231 ntstructureField->createTimeStampArray();
232 return pvDataCreate->createPVStructureArray(sa);
237 StructureArrayConstPtr sa = ntstructureField->createAlarmArray();
238 return pvDataCreate->createPVStructureArray(sa);
Convenience Class for introspection fields of a Normative Type.
epics::pvData::StructureConstPtr createControl()
epics::pvData::StructureArrayConstPtr createEnumeratedArray()
bool isAlarm(epics::pvData::FieldConstPtr const &field)
epics::pvData::StructureArrayConstPtr createAlarmArray()
epics::pvData::StructureConstPtr createDisplay()
bool isControl(epics::pvData::FieldConstPtr const &field)
bool isDisplay(epics::pvData::FieldConstPtr const &field)
epics::pvData::StructureArrayConstPtr createTimeStampArray()
epics::pvData::StructureConstPtr createTimeStamp()
bool isEnumerated(epics::pvData::FieldConstPtr const &field)
epics::pvData::StructureConstPtr createAlarm()
epics::pvData::StructureConstPtr createEnumerated()
bool isAlarmLimit(epics::pvData::FieldConstPtr const &field)
bool isTimeStamp(epics::pvData::FieldConstPtr const &field)
Convenience Class for data fields of a Normative Type.
epics::pvData::PVStructurePtr createDisplay()
epics::pvData::PVStructurePtr createEnumerated(epics::pvData::StringArray const &choices)
epics::pvData::PVStructurePtr createAlarm()
epics::pvData::PVStructurePtr createControl()
static PVNTFieldPtr get()
epics::pvData::PVStructureArrayPtr createAlarmArray()
epics::pvData::PVStructureArrayPtr createEnumeratedArray()
epics::pvData::PVStructureArrayPtr createTimeStampArray()
epics::pvData::PVStructurePtr createTimeStamp()
std::tr1::shared_ptr< NTField > NTFieldPtr
std::tr1::shared_ptr< PVNTField > PVNTFieldPtr