This is Unofficial EPICS BASE Doxygen Site
epics::nt::detail::NTScalarMultiChannelBuilder Class Reference

Interface for in-line creating of NTScalarMultiChannel. More...

#include "ntscalarMultiChannel.h"

+ Inheritance diagram for epics::nt::detail::NTScalarMultiChannelBuilder:
+ Collaboration diagram for epics::nt::detail::NTScalarMultiChannelBuilder:

Public Member Functions

 POINTER_DEFINITIONS (NTScalarMultiChannelBuilder)
 
shared_pointer value (epics::pvData::ScalarType scalarType)
 
shared_pointer addDescriptor ()
 
shared_pointer addAlarm ()
 
shared_pointer addTimeStamp ()
 
shared_pointer addSeverity ()
 
shared_pointer addStatus ()
 
shared_pointer addMessage ()
 
shared_pointer addSecondsPastEpoch ()
 
shared_pointer addNanoseconds ()
 
shared_pointer addUserTag ()
 
shared_pointer addIsConnected ()
 
epics::pvData::StructureConstPtr createStructure ()
 
epics::pvData::PVStructurePtr createPVStructure ()
 
NTScalarMultiChannelPtr create ()
 
shared_pointer add (std::string const &name, epics::pvData::FieldConstPtr const &field)
 

Friends

class ::epics::nt::NTScalarMultiChannel
 

Detailed Description

Interface for in-line creating of NTScalarMultiChannel.

One instance can be used to create multiple instances. An instance of this object must not be used concurrently (an object has a state).

Author
dgh
mse

Definition at line 46 of file ntscalarMultiChannel.h.

Member Function Documentation

NTScalarMultiChannelBuilder::shared_pointer epics::nt::detail::NTScalarMultiChannelBuilder::add ( std::string const &  name,
epics::pvData::FieldConstPtr const &  field 
)

Adds extra Field to the type.

Parameters
namethe name of the field.
fieldthe field to be added.
Returns
this instance of a NTScalarMultiChannelBuilder

Definition at line 199 of file ntscalarMultiChannel.cpp.

200 {
201  extraFields.push_back(field); extraFieldNames.push_back(name);
202  return shared_from_this();
203 }
NTScalarMultiChannelBuilder::shared_pointer epics::nt::detail::NTScalarMultiChannelBuilder::addAlarm ( )

Adds alarm field to the NTScalarMultiChannel.

Returns
this instance of NTScalarMultiChannelBuilder.

Definition at line 38 of file ntscalarMultiChannel.cpp.

39 {
40  alarm = true;
41  return shared_from_this();
42 }
NTScalarMultiChannelBuilder::shared_pointer epics::nt::detail::NTScalarMultiChannelBuilder::addDescriptor ( )

Adds descriptor field to the NTScalarMultiChannel.

Returns
this instance of NTScalarMultiChannelBuilder.

Definition at line 32 of file ntscalarMultiChannel.cpp.

33 {
34  descriptor = true;
35  return shared_from_this();
36 }
NTScalarMultiChannelBuilder::shared_pointer epics::nt::detail::NTScalarMultiChannelBuilder::addIsConnected ( )

Adds isConnected array to the NTScalarMultiChannel.

Returns
this instance of NTScalarMultiChannelBuilder.

Definition at line 86 of file ntscalarMultiChannel.cpp.

87 {
88  isConnected = true;
89  return shared_from_this();
90 }
NTScalarMultiChannelBuilder::shared_pointer epics::nt::detail::NTScalarMultiChannelBuilder::addMessage ( )

Adds message array to the NTScalarMultiChannel.

Returns
this instance of NTScalarMultiChannelBuilder.

Definition at line 62 of file ntscalarMultiChannel.cpp.

63 {
64  message = true;
65  return shared_from_this();
66 }
NTScalarMultiChannelBuilder::shared_pointer epics::nt::detail::NTScalarMultiChannelBuilder::addNanoseconds ( )

Adds nanoseconds array to the NTScalarMultiChannel.

Returns
this instance of NTScalarMultiChannelBuilder.

Definition at line 74 of file ntscalarMultiChannel.cpp.

75 {
76  nanoseconds = true;
77  return shared_from_this();
78 }
NTScalarMultiChannelBuilder::shared_pointer epics::nt::detail::NTScalarMultiChannelBuilder::addSecondsPastEpoch ( )

Adds secondsPastEpoch array to the NTScalarMultiChannel.

Returns
this instance of NTScalarMultiChannelBuilder.

Definition at line 68 of file ntscalarMultiChannel.cpp.

69 {
70  secondsPastEpoch = true;
71  return shared_from_this();
72 }
NTScalarMultiChannelBuilder::shared_pointer epics::nt::detail::NTScalarMultiChannelBuilder::addSeverity ( )

Adds severity array to the NTScalarMultiChannel.

Returns
this instance of NTScalarMultiChannelBuilder.

Definition at line 50 of file ntscalarMultiChannel.cpp.

51 {
52  severity = true;
53  return shared_from_this();
54 }
NTScalarMultiChannelBuilder::shared_pointer epics::nt::detail::NTScalarMultiChannelBuilder::addStatus ( )

Adds status array to the NTScalarMultiChannel.

Returns
this instance of NTScalarMultiChannelBuilder.

Definition at line 56 of file ntscalarMultiChannel.cpp.

57 {
58  status = true;
59  return shared_from_this();
60 }
NTScalarMultiChannelBuilder::shared_pointer epics::nt::detail::NTScalarMultiChannelBuilder::addTimeStamp ( )

Adds timeStamp field to the NTScalarMultiChannel.

Returns
this instance of NTScalarMultiChannelBuilder.

Definition at line 44 of file ntscalarMultiChannel.cpp.

45 {
46  timeStamp = true;
47  return shared_from_this();
48 }
NTScalarMultiChannelBuilder::shared_pointer epics::nt::detail::NTScalarMultiChannelBuilder::addUserTag ( )

Adds userTag array to the NTScalarMultiChannel.

Returns
this instance of NTScalarMultiChannelBuilder.

Definition at line 80 of file ntscalarMultiChannel.cpp.

81 {
82  userTag = true;
83  return shared_from_this();
84 }
NTScalarMultiChannelPtr epics::nt::detail::NTScalarMultiChannelBuilder::create ( )

Creates a NTScalarMultiChannel instance. This resets this instance state and allows new instance to be created.

Returns
a new instance of a NTScalarMultiChannel

Definition at line 170 of file ntscalarMultiChannel.cpp.

171 {
172  return NTScalarMultiChannelPtr(new NTScalarMultiChannel(createPVStructure()));
173 }
std::tr1::shared_ptr< NTScalarMultiChannel > NTScalarMultiChannelPtr
PVStructurePtr epics::nt::detail::NTScalarMultiChannelBuilder::createPVStructure ( )

Creates a PVStructure that represents NTScalarMultiChannel. This resets this instance state and allows new instance to be created.

Returns
a new instance of a PVStructure

Definition at line 165 of file ntscalarMultiChannel.cpp.

166 {
167  return pvDataCreate->createPVStructure(createStructure());
168 }
epics::pvData::StructureConstPtr createStructure()
StructureConstPtr epics::nt::detail::NTScalarMultiChannelBuilder::createStructure ( )

Creates a Structure that represents NTScalarMultiChannel. This resets this instance state and allows new instance to be created.

Returns
a new instance of a Structure.

Definition at line 92 of file ntscalarMultiChannel.cpp.

93 {
94  StandardFieldPtr standardField = getStandardField();
95  size_t nfields = 2;
96  size_t extraCount = extraFieldNames.size();
97  nfields += extraCount;
98  if(descriptor) ++nfields;
99  if(alarm) ++nfields;
100  if(timeStamp) ++nfields;
101  if(severity) ++nfields;
102  if(status) ++nfields;
103  if(message) ++nfields;
104  if(secondsPastEpoch) ++nfields;
105  if(nanoseconds) ++nfields;
106  if(userTag) ++nfields;
107  if(isConnected) ++nfields;
108  FieldConstPtrArray fields(nfields);
109  StringArray names(nfields);
110  size_t ind = 0;
111  names[ind] = "value";
112  fields[ind++] = fieldCreate->createScalarArray(valueType);
113  names[ind] = "channelName";
114  fields[ind++] = fieldCreate->createScalarArray(pvString);
115  if(descriptor) {
116  names[ind] = "descriptor";
117  fields[ind++] = fieldCreate->createScalar(pvString);
118  }
119  if(alarm) {
120  names[ind] = "alarm";
121  fields[ind++] = standardField->alarm();
122  }
123  if(timeStamp) {
124  names[ind] = "timeStamp";
125  fields[ind++] = standardField->timeStamp();
126  }
127  if(severity) {
128  names[ind] = "severity";
129  fields[ind++] = fieldCreate->createScalarArray(pvInt);
130  }
131  if(status) {
132  names[ind] = "status";
133  fields[ind++] = fieldCreate->createScalarArray(pvInt);
134  }
135  if(message) {
136  names[ind] = "message";
137  fields[ind++] = fieldCreate->createScalarArray(pvString);
138  }
139  if(secondsPastEpoch) {
140  names[ind] = "secondsPastEpoch";
141  fields[ind++] = fieldCreate->createScalarArray(pvLong);
142  }
143  if(nanoseconds) {
144  names[ind] = "nanoseconds";
145  fields[ind++] = fieldCreate->createScalarArray(pvInt);
146  }
147  if(userTag) {
148  names[ind] = "userTag";
149  fields[ind++] = fieldCreate->createScalarArray(pvInt);
150  }
151  if(isConnected) {
152  names[ind] = "isConnected";
153  fields[ind++] = fieldCreate->createScalarArray(pvBoolean);
154  }
155  for (size_t i = 0; i< extraCount; i++) {
156  names[ind] = extraFieldNames[i];
157  fields[ind++] = extraFields[i];
158  }
159 
160  StructureConstPtr st = fieldCreate->createStructure(NTScalarMultiChannel::URI,names,fields);
161  reset();
162  return st;
163 }
int i
Definition: scan.c:967
std::tr1::shared_ptr< const Structure > StructureConstPtr
Definition: pvIntrospect.h:162
std::tr1::shared_ptr< StandardField > StandardFieldPtr
Definition: standardField.h:22
FORCE_INLINE const StandardFieldPtr & getStandardField()
std::vector< FieldConstPtr > FieldConstPtrArray
Definition: pvIntrospect.h:146
std::vector< std::string > StringArray
Definition: pvType.h:110
epics::nt::detail::NTScalarMultiChannelBuilder::POINTER_DEFINITIONS ( NTScalarMultiChannelBuilder  )
NTScalarMultiChannelBuilder::shared_pointer epics::nt::detail::NTScalarMultiChannelBuilder::value ( epics::pvData::ScalarType  scalarType)

Sets the scalar type for the value field. If this is not called then pvDouble is the default.

Parameters
scalarTypethe value field element ScalarType.
Returns
this instance of NTScalarMultiChannelBuilder.

Definition at line 25 of file ntscalarMultiChannel.cpp.

26 {
27  valueType = scalarType;
28  return shared_from_this();
29 }

Friends And Related Function Documentation

friend class ::epics::nt::NTScalarMultiChannel
friend

Definition at line 170 of file ntscalarMultiChannel.h.


The documentation for this class was generated from the following files: