6 #ifndef NTSCALARMULTICHANNEL_H 7 #define NTSCALARMULTICHANNEL_H 12 #ifdef epicsExportSharedSymbols 13 # define ntscalarMultiChannelEpicsExportSharedSymbols 14 # undef epicsExportSharedSymbols 17 #include <pv/pvDisplay.h> 18 #include <pv/pvControl.h> 20 #ifdef ntscalarMultiChannelEpicsExportSharedSymbols 21 # define epicsExportSharedSymbols 22 # undef ntscalarMultiChannelEpicsExportSharedSymbols 30 namespace epics {
namespace nt {
47 public std::tr1::enable_shared_from_this<NTScalarMultiChannelBuilder>
58 shared_pointer value(epics::pvData::ScalarType scalarType);
64 shared_pointer addDescriptor();
70 shared_pointer addAlarm();
76 shared_pointer addTimeStamp();
82 shared_pointer addSeverity();
88 shared_pointer addStatus();
94 shared_pointer addMessage();
100 shared_pointer addSecondsPastEpoch();
106 shared_pointer addNanoseconds();
112 shared_pointer addUserTag();
118 shared_pointer addIsConnected();
125 epics::pvData::StructureConstPtr createStructure();
132 epics::pvData::PVStructurePtr createPVStructure();
139 NTScalarMultiChannelPtr create();
147 shared_pointer add(std::string
const & name, epics::pvData::FieldConstPtr
const & field);
154 epics::pvData::ScalarType valueType;
161 bool secondsPastEpoch;
167 epics::pvData::StringArray extraFieldNames;
168 epics::pvData::FieldConstPtrArray extraFields;
170 friend class ::epics::nt::NTScalarMultiChannel;
189 static const std::string
URI;
202 static shared_pointer wrap(epics::pvData::PVStructurePtr
const & pvStructure);
213 static shared_pointer wrapUnsafe(epics::pvData::PVStructurePtr
const & pvStructure);
226 static bool is_a(epics::pvData::StructureConstPtr
const & structure);
239 static bool is_a(epics::pvData::PVStructurePtr
const & pvStructure);
250 static bool isCompatible(
251 epics::pvData::StructureConstPtr
const &structure);
261 static bool isCompatible(
262 epics::pvData::PVStructurePtr
const &pvStructure);
278 static NTScalarMultiChannelBuilderPtr createBuilder();
290 bool attachTimeStamp(epics::pvData::PVTimeStamp &pvTimeStamp)
const;
298 bool attachAlarm(epics::pvData::PVAlarm &pvAlarm)
const;
305 {
return pvNTScalarMultiChannel;}
312 {
return pvDescriptor;}
319 {
return pvTimeStamp;}
342 template<
typename PVT>
345 return std::tr1::dynamic_pointer_cast<PVT>(pvValue);
353 {
return pvChannelName;};
360 {
return pvIsConnected;};
388 {
return pvSecondsPastEpoch;}
395 {
return pvNanoseconds;}
406 epics::pvData::PVStructurePtr pvNTScalarMultiChannel;
407 epics::pvData::PVStructurePtr pvTimeStamp;
408 epics::pvData::PVStructurePtr pvAlarm;
409 epics::pvData::PVScalarArrayPtr pvValue;
410 epics::pvData::PVStringArrayPtr pvChannelName;
411 epics::pvData::PVBooleanArrayPtr pvIsConnected;
412 epics::pvData::PVIntArrayPtr pvSeverity;
413 epics::pvData::PVIntArrayPtr pvStatus;
414 epics::pvData::PVStringArrayPtr pvMessage;
415 epics::pvData::PVLongArrayPtr pvSecondsPastEpoch;
416 epics::pvData::PVIntArrayPtr pvNanoseconds;
417 epics::pvData::PVIntArrayPtr pvUserTag;
418 epics::pvData::PVStringPtr pvDescriptor;
epics::pvData::PVStructurePtr getTimeStamp() const
epics::pvData::PVIntArrayPtr getUserTag() const
epics::pvData::PVStringArrayPtr getChannelName() const
std::tr1::shared_ptr< PVT > getValue() const
epics::pvData::PVStringPtr getDescriptor() const
Interface for in-line creating of NTScalarMultiChannel.
std::tr1::shared_ptr< detail::NTScalarMultiChannelBuilder > NTScalarMultiChannelBuilderPtr
epics::pvData::PVScalarArrayPtr getValue() const
epics::pvData::PVBooleanArrayPtr getIsConnected() const
epics::pvData::PVStringArrayPtr getMessage() const
epics::pvData::PVIntArrayPtr getStatus() const
epics::pvData::PVIntArrayPtr getSeverity() const
epics::pvData::PVStructurePtr getPVStructure() const
epics::pvData::PVIntArrayPtr getNanoseconds() const
static const std::string URI
Convenience Class for NTScalarMultiChannel.
epics::pvData::PVLongArrayPtr getSecondsPastEpoch() const
epics::pvData::PVStructurePtr getAlarm() const
std::tr1::shared_ptr< NTScalarMultiChannel > NTScalarMultiChannelPtr