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
30namespace epics {
namespace nt {
33class NTScalarMultiChannel;
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();
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);
251 epics::pvData::StructureConstPtr
const &structure);
262 epics::pvData::PVStructurePtr
const &pvStructure);
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;
Convenience Class for NTScalarMultiChannel.
static bool is_a(epics::pvData::StructureConstPtr const &structure)
static const std::string URI
static bool is_a(epics::pvData::PVStructurePtr const &pvStructure)
epics::pvData::PVBooleanArrayPtr getIsConnected() const
epics::pvData::PVScalarArrayPtr getValue() const
epics::pvData::PVIntArrayPtr getNanoseconds() const
epics::pvData::PVStructurePtr getPVStructure() const
epics::pvData::PVStructurePtr getTimeStamp() const
std::tr1::shared_ptr< PVT > getValue() const
POINTER_DEFINITIONS(NTScalarMultiChannel)
epics::pvData::PVIntArrayPtr getStatus() const
static bool isCompatible(epics::pvData::PVStructurePtr const &pvStructure)
epics::pvData::PVIntArrayPtr getUserTag() const
epics::pvData::PVIntArrayPtr getSeverity() const
epics::pvData::PVLongArrayPtr getSecondsPastEpoch() const
epics::pvData::PVStructurePtr getAlarm() const
epics::pvData::PVStringPtr getDescriptor() const
static bool isCompatible(epics::pvData::StructureConstPtr const &structure)
epics::pvData::PVStringArrayPtr getMessage() const
epics::pvData::PVStringArrayPtr getChannelName() const
Interface for in-line creating of NTScalarMultiChannel.
POINTER_DEFINITIONS(NTScalarMultiChannelBuilder)
std::tr1::shared_ptr< NTScalarMultiChannel > NTScalarMultiChannelPtr
std::tr1::shared_ptr< detail::NTScalarMultiChannelBuilder > NTScalarMultiChannelBuilderPtr