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

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

#include "ntmultiChannel.h"

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

Public Member Functions

 POINTER_DEFINITIONS (NTMultiChannelBuilder)
 
shared_pointer value (epics::pvData::UnionConstPtr valuePtr)
 
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 ()
 
NTMultiChannelPtr create ()
 
shared_pointer add (std::string const &name, epics::pvData::FieldConstPtr const &field)
 

Friends

class ::epics::nt::NTMultiChannel
 

Detailed Description

Interface for in-line creating of NTMultiChannel.

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
mse

Definition at line 45 of file ntmultiChannel.h.

Member Function Documentation

NTMultiChannelBuilder::shared_pointer epics::nt::detail::NTMultiChannelBuilder::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 NTMultiChannelBuilder

Definition at line 204 of file ntmultiChannel.cpp.

205 {
206  extraFields.push_back(field); extraFieldNames.push_back(name);
207  return shared_from_this();
208 }
NTMultiChannelBuilder::shared_pointer epics::nt::detail::NTMultiChannelBuilder::addAlarm ( )

Adds alarm field to the NTMultiChannel.

Returns
this instance of NTMultiChannelBuilder.

Definition at line 40 of file ntmultiChannel.cpp.

41 {
42  alarm = true;
43  return shared_from_this();
44 }
NTMultiChannelBuilder::shared_pointer epics::nt::detail::NTMultiChannelBuilder::addDescriptor ( )

Adds descriptor field to the NTMultiChannel.

Returns
this instance of NTMultiChannelBuilder.

Definition at line 34 of file ntmultiChannel.cpp.

35 {
36  descriptor = true;
37  return shared_from_this();
38 }
NTMultiChannelBuilder::shared_pointer epics::nt::detail::NTMultiChannelBuilder::addIsConnected ( )

Adds isConnected array to the NTMultiChannel.

Returns
this instance of NTMultiChannelBuilder.

Definition at line 88 of file ntmultiChannel.cpp.

89 {
90  isConnected = true;
91  return shared_from_this();
92 }
NTMultiChannelBuilder::shared_pointer epics::nt::detail::NTMultiChannelBuilder::addMessage ( )

Adds message array to the NTMultiChannel.

Returns
this instance of NTMultiChannelBuilder.

Definition at line 64 of file ntmultiChannel.cpp.

65 {
66  message = true;
67  return shared_from_this();
68 }
NTMultiChannelBuilder::shared_pointer epics::nt::detail::NTMultiChannelBuilder::addNanoseconds ( )

Adds nanoseconds array to the NTMultiChannel.

Returns
this instance of NTMultiChannelBuilder.

Definition at line 76 of file ntmultiChannel.cpp.

77 {
78  nanoseconds = true;
79  return shared_from_this();
80 }
NTMultiChannelBuilder::shared_pointer epics::nt::detail::NTMultiChannelBuilder::addSecondsPastEpoch ( )

Adds secondsPastEpoch array to the NTMultiChannel.

Returns
this instance of NTMultiChannelBuilder.

Definition at line 70 of file ntmultiChannel.cpp.

71 {
72  secondsPastEpoch = true;
73  return shared_from_this();
74 }
NTMultiChannelBuilder::shared_pointer epics::nt::detail::NTMultiChannelBuilder::addSeverity ( )

Adds severity array to the NTMultiChannel.

Returns
this instance of NTMultiChannelBuilder.

Definition at line 52 of file ntmultiChannel.cpp.

53 {
54  severity = true;
55  return shared_from_this();
56 }
NTMultiChannelBuilder::shared_pointer epics::nt::detail::NTMultiChannelBuilder::addStatus ( )

Adds status array to the NTMultiChannel.

Returns
this instance of NTMultiChannelBuilder.

Definition at line 58 of file ntmultiChannel.cpp.

59 {
60  status = true;
61  return shared_from_this();
62 }
NTMultiChannelBuilder::shared_pointer epics::nt::detail::NTMultiChannelBuilder::addTimeStamp ( )

Adds timeStamp field to the NTMultiChannel.

Returns
this instance of NTMultiChannelBuilder.

Definition at line 46 of file ntmultiChannel.cpp.

47 {
48  timeStamp = true;
49  return shared_from_this();
50 }
NTMultiChannelBuilder::shared_pointer epics::nt::detail::NTMultiChannelBuilder::addUserTag ( )

Adds userTag array to the NTMultiChannel.

Returns
this instance of NTMultiChannelBuilder.

Definition at line 82 of file ntmultiChannel.cpp.

83 {
84  userTag = true;
85  return shared_from_this();
86 }
NTMultiChannelPtr epics::nt::detail::NTMultiChannelBuilder::create ( )

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

Returns
a new instance of a NTMultiChannel

Definition at line 176 of file ntmultiChannel.cpp.

177 {
178  return NTMultiChannelPtr(new NTMultiChannel(createPVStructure()));
179 }
std::tr1::shared_ptr< NTMultiChannel > NTMultiChannelPtr
epics::pvData::PVStructurePtr createPVStructure()
PVStructurePtr epics::nt::detail::NTMultiChannelBuilder::createPVStructure ( )

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

Returns
a new instance of a PVStructure

Definition at line 171 of file ntmultiChannel.cpp.

172 {
173  return pvDataCreate->createPVStructure(createStructure());
174 }
epics::pvData::StructureConstPtr createStructure()
StructureConstPtr epics::nt::detail::NTMultiChannelBuilder::createStructure ( )

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

Returns
a new instance of a Structure.

Definition at line 94 of file ntmultiChannel.cpp.

95 {
96  StandardFieldPtr standardField = getStandardField();
97  size_t nfields = 2;
98  size_t extraCount = extraFieldNames.size();
99  nfields += extraCount;
100  if(descriptor) ++nfields;
101  if(alarm) ++nfields;
102  if(timeStamp) ++nfields;
103  if(severity) ++nfields;
104  if(status) ++nfields;
105  if(message) ++nfields;
106  if(secondsPastEpoch) ++nfields;
107  if(nanoseconds) ++nfields;
108  if(userTag) ++nfields;
109  if(isConnected) ++nfields;
110  FieldConstPtrArray fields(nfields);
111  StringArray names(nfields);
112  size_t ind = 0;
113  names[ind] = "value";
114  if(valueType) {
115  fields[ind++] = fieldCreate->createUnionArray(valueType);
116  } else {
117  fields[ind++] = fieldCreate->createVariantUnionArray();
118  }
119  names[ind] = "channelName";
120  fields[ind++] = fieldCreate->createScalarArray(pvString);
121  if(descriptor) {
122  names[ind] = "descriptor";
123  fields[ind++] = fieldCreate->createScalar(pvString);
124  }
125  if(alarm) {
126  names[ind] = "alarm";
127  fields[ind++] = standardField->alarm();
128  }
129  if(timeStamp) {
130  names[ind] = "timeStamp";
131  fields[ind++] = standardField->timeStamp();
132  }
133  if(severity) {
134  names[ind] = "severity";
135  fields[ind++] = fieldCreate->createScalarArray(pvInt);
136  }
137  if(status) {
138  names[ind] = "status";
139  fields[ind++] = fieldCreate->createScalarArray(pvInt);
140  }
141  if(message) {
142  names[ind] = "message";
143  fields[ind++] = fieldCreate->createScalarArray(pvString);
144  }
145  if(secondsPastEpoch) {
146  names[ind] = "secondsPastEpoch";
147  fields[ind++] = fieldCreate->createScalarArray(pvLong);
148  }
149  if(nanoseconds) {
150  names[ind] = "nanoseconds";
151  fields[ind++] = fieldCreate->createScalarArray(pvInt);
152  }
153  if(userTag) {
154  names[ind] = "userTag";
155  fields[ind++] = fieldCreate->createScalarArray(pvInt);
156  }
157  if(isConnected) {
158  names[ind] = "isConnected";
159  fields[ind++] = fieldCreate->createScalarArray(pvBoolean);
160  }
161  for (size_t i = 0; i< extraCount; i++) {
162  names[ind] = extraFieldNames[i];
163  fields[ind++] = extraFields[i];
164  }
165 
166  StructureConstPtr st = fieldCreate->createStructure(NTMultiChannel::URI,names,fields);
167  reset();
168  return st;
169 }
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
static const std::string URI
std::vector< std::string > StringArray
Definition: pvType.h:110
epics::nt::detail::NTMultiChannelBuilder::POINTER_DEFINITIONS ( NTMultiChannelBuilder  )
NTMultiChannelBuilder::shared_pointer epics::nt::detail::NTMultiChannelBuilder::value ( epics::pvData::UnionConstPtr  valuePtr)

specify the union for the value field. If this is not called then a variantUnion is the default.

Returns
this instance of NTMultiChannelBuilder.

Definition at line 27 of file ntmultiChannel.cpp.

28 {
29  valueType = valuePtr;
30  return shared_from_this();
31 }

Friends And Related Function Documentation

friend class ::epics::nt::NTMultiChannel
friend

Definition at line 167 of file ntmultiChannel.h.


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