10 #define epicsExportSharedSymbols 14 using std::tr1::static_pointer_cast;
16 namespace epics {
namespace nt {
23 if(ntstructureField.get()==NULL) {
26 return ntstructureField;
30 : fieldCreate(getFieldCreate()),
31 standardField(getStandardField())
39 .has<ScalarArray>(
"choices");
42 bool NTField::isEnumerated(FieldConstPtr
const & field)
45 return isEnumerated(result.
is<Structure>()).valid();
51 .
has<Scalar>(
"secondsPastEpoch")
52 .has<Scalar>(
"nanoseconds")
53 .
has<Scalar>(
"userTag");
56 bool NTField::isTimeStamp(FieldConstPtr
const & field)
59 return isTimeStamp(result.
is<Structure>()).valid();
65 .
has<Scalar>(
"severity")
66 .has<Scalar>(
"status")
67 .
has<Scalar>(
"message");
70 bool NTField::isAlarm(FieldConstPtr
const & field)
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");
87 bool NTField::isDisplay(FieldConstPtr
const & field)
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");
108 bool NTField::isAlarmLimit(FieldConstPtr
const & field)
111 return isAlarmLimit(result.
is<Structure>()).valid();
117 .
has<Scalar>(
"limitLow")
118 .has<Scalar>(
"limitHigh")
119 .
has<Scalar>(
"minStep");
122 bool NTField::isControl(FieldConstPtr
const & field)
125 return isControl(result.
is<Structure>()).valid();
128 StructureConstPtr NTField::createEnumerated()
130 return standardField->enumerated();
133 StructureConstPtr NTField::createTimeStamp()
135 return standardField->timeStamp();
138 StructureConstPtr NTField::createAlarm()
140 return standardField->alarm();
143 StructureConstPtr NTField::createDisplay()
145 return standardField->display();
148 StructureConstPtr NTField::createControl()
150 return standardField->control();
153 StructureArrayConstPtr NTField::createEnumeratedArray()
155 return fieldCreate->createStructureArray(createEnumerated());
158 StructureArrayConstPtr NTField::createTimeStampArray()
160 StructureConstPtr st = createTimeStamp();
161 return fieldCreate->createStructureArray(st);
164 StructureArrayConstPtr NTField::createAlarmArray()
166 StructureConstPtr st = createAlarm();
167 return fieldCreate->createStructureArray(st);
175 if(pvntstructureField.get()==NULL) {
178 return pvntstructureField;
181 PVNTField::PVNTField()
182 : pvDataCreate(getPVDataCreate()),
183 standardField(getStandardField()),
184 standardPVField(getStandardPVField()),
185 ntstructureField(NTField::get())
190 PVStructurePtr PVNTField::createEnumerated(
191 StringArray
const & choices)
193 return standardPVField->enumerated(choices);
196 PVStructurePtr PVNTField::createTimeStamp()
198 StructureConstPtr timeStamp = standardField->timeStamp();
199 return pvDataCreate->createPVStructure(timeStamp);
202 PVStructurePtr PVNTField::createAlarm()
204 StructureConstPtr alarm = standardField->alarm();
205 return pvDataCreate->createPVStructure(alarm);
208 PVStructurePtr PVNTField::createDisplay()
210 StructureConstPtr display = standardField->display();
211 return pvDataCreate->createPVStructure(display);
215 PVStructurePtr PVNTField::createControl()
217 StructureConstPtr control = standardField->control();
218 return pvDataCreate->createPVStructure(control);
221 PVStructureArrayPtr PVNTField::createEnumeratedArray()
223 StructureArrayConstPtr sa =
224 ntstructureField->createEnumeratedArray();
225 return pvDataCreate->createPVStructureArray(sa);
228 PVStructureArrayPtr PVNTField::createTimeStampArray()
230 StructureArrayConstPtr sa =
231 ntstructureField->createTimeStampArray();
232 return pvDataCreate->createPVStructureArray(sa);
235 PVStructureArrayPtr PVNTField::createAlarmArray()
237 StructureArrayConstPtr sa = ntstructureField->createAlarmArray();
238 return pvDataCreate->createPVStructureArray(sa);
Convenience Class for data fields of a Normative Type.
Validation methods for NT types.
std::tr1::shared_ptr< NTField > NTFieldPtr
std::tr1::shared_ptr< PVNTField > PVNTFieldPtr
Result & has(const std::string &name)
Convenience Class for introspection fields of a Normative Type.