9 #define epicsExportSharedSymbols 16 namespace epics {
namespace nt {
26 setId(NTContinuum::URI)->
32 builder->add(
"descriptor",
pvString);
35 builder->add(
"alarm", ntField->createAlarm());
38 builder->add(
"timeStamp", ntField->createTimeStamp());
40 size_t extraCount = extraFieldNames.size();
41 for (
size_t i = 0;
i< extraCount;
i++)
42 builder->add(extraFieldNames[
i], extraFields[i]);
51 NTContinuumBuilder::shared_pointer NTContinuumBuilder::addDescriptor()
54 return shared_from_this();
57 NTContinuumBuilder::shared_pointer NTContinuumBuilder::addAlarm()
60 return shared_from_this();
63 NTContinuumBuilder::shared_pointer NTContinuumBuilder::addTimeStamp()
66 return shared_from_this();
80 NTContinuumBuilder::NTContinuumBuilder()
85 void NTContinuumBuilder::reset()
90 extraFieldNames.clear();
94 NTContinuumBuilder::shared_pointer NTContinuumBuilder::add(
string const & name,
FieldConstPtr const & field)
96 extraFields.push_back(field); extraFieldNames.push_back(name);
97 return shared_from_this();
102 const std::string NTContinuum::URI(
"epics:nt/NTContinuum:1.0");
104 NTContinuum::shared_pointer NTContinuum::wrap(
PVStructurePtr const & pvStructure)
106 if(!isCompatible(pvStructure))
return shared_pointer();
107 return wrapUnsafe(pvStructure);
110 NTContinuum::shared_pointer NTContinuum::wrapUnsafe(
PVStructurePtr const & pvStructure)
112 return shared_pointer(
new NTContinuum(pvStructure));
117 return NTUtils::is_a(structure->getID(), URI);
122 return is_a(pvStructure->getStructure());
134 .has<ScalarArray>(
"base")
136 .has<ScalarArray>(
"units")
137 .maybeHas<
Scalar>(
"descriptor")
138 .maybeHas<&NTField::isAlarm, Structure>(
"alarm")
139 .maybeHas<&NTField::isTimeStamp,
Structure>(
"timeStamp")
145 if(!pvStructure)
return false;
147 return isCompatible(pvStructure->getStructure());
150 bool NTContinuum::isValid()
152 return ((getUnits()->getLength()-1)*getBase()->getLength() ==
153 getValue()->getLength());
165 return pvTimeStamp.
attach(ts);
170 bool NTContinuum::attachAlarm(
PVAlarm &pvAlarm)
const 174 return pvAlarm.
attach(al);
181 return pvNTContinuum;
186 return pvNTContinuum->getSubField<
PVString>(
"descriptor");
191 return pvNTContinuum->getSubField<
PVStructure>(
"timeStamp");
215 pvNTContinuum(pvStructure),
FORCE_INLINE std::tr1::shared_ptr< PVField > getSubField(A a)
This class implements introspection object for Scalar.
std::tr1::shared_ptr< detail::NTContinuumBuilder > NTContinuumBuilderPtr
Convenience Class for NTContinuum.
Interface for in-line creating of NTContinuum.
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< NTContinuum > NTContinuumPtr
std::tr1::shared_ptr< NTField > NTFieldPtr
std::tr1::shared_ptr< PVStringArray > PVStringArrayPtr
std::tr1::shared_ptr< FieldBuilder > FieldBuilderPtr
PVString is special case, since it implements SerializableArray.
This class implements introspection object for a structure.
template class for all extensions of PVArray.
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()
This class implements introspection object for scalar array.
std::tr1::shared_ptr< PVStructure > PVStructurePtr
std::tr1::shared_ptr< PVString > PVStringPtr
std::tr1::shared_ptr< PVDoubleArray > PVDoubleArrayPtr
FORCE_INLINE const PVDataCreatePtr & getPVDataCreate()
bool attach(PVFieldPtr const &pvField)