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

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

#include "ntscalar.h"

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

Public Member Functions

 POINTER_DEFINITIONS (NTScalarBuilder)
 
shared_pointer value (epics::pvData::ScalarType scalarType)
 
shared_pointer addDescriptor ()
 
shared_pointer addAlarm ()
 
shared_pointer addTimeStamp ()
 
shared_pointer addDisplay ()
 
shared_pointer addControl ()
 
epics::pvData::StructureConstPtr createStructure ()
 
epics::pvData::PVStructurePtr createPVStructure ()
 
NTScalarPtr create ()
 
shared_pointer add (std::string const &name, epics::pvData::FieldConstPtr const &field)
 

Friends

class ::epics::nt::NTScalar
 

Detailed Description

Interface for in-line creating of NTScalar.

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 40 of file ntscalar.h.

Member Function Documentation

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

Definition at line 123 of file ntscalar.cpp.

124 {
125  extraFields.push_back(field); extraFieldNames.push_back(name);
126  return shared_from_this();
127 }
NTScalarBuilder::shared_pointer epics::nt::detail::NTScalarBuilder::addAlarm ( )

Adds alarm field to the NTScalar.

Returns
this instance of NTScalarBuilder.

Definition at line 74 of file ntscalar.cpp.

75 {
76  alarm = true;
77  return shared_from_this();
78 }
NTScalarBuilder::shared_pointer epics::nt::detail::NTScalarBuilder::addControl ( )

Adds control field to the NTScalar.

Returns
this instance of NTScalarBuilder.

Definition at line 92 of file ntscalar.cpp.

93 {
94  control = true;
95  return shared_from_this();
96 }
NTScalarBuilder::shared_pointer epics::nt::detail::NTScalarBuilder::addDescriptor ( )

Adds descriptor field to the NTScalar.

Returns
this instance of NTScalarBuilder.

Definition at line 68 of file ntscalar.cpp.

69 {
70  descriptor = true;
71  return shared_from_this();
72 }
NTScalarBuilder::shared_pointer epics::nt::detail::NTScalarBuilder::addDisplay ( )

Adds display field to the NTScalar.

Returns
this instance of NTScalarBuilder.

Definition at line 86 of file ntscalar.cpp.

87 {
88  display = true;
89  return shared_from_this();
90 }
NTScalarBuilder::shared_pointer epics::nt::detail::NTScalarBuilder::addTimeStamp ( )

Adds timeStamp field to the NTScalar.

Returns
this instance of NTScalarBuilder.

Definition at line 80 of file ntscalar.cpp.

81 {
82  timeStamp = true;
83  return shared_from_this();
84 }
NTScalarPtr epics::nt::detail::NTScalarBuilder::create ( )

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

Returns
a new instance of a NTScalar.

Definition at line 103 of file ntscalar.cpp.

104 {
105  return NTScalarPtr(new NTScalar(createPVStructure()));
106 }
epics::pvData::PVStructurePtr createPVStructure()
Definition: ntscalar.cpp:98
std::tr1::shared_ptr< NTScalar > NTScalarPtr
Definition: ntscalar.h:28
PVStructurePtr epics::nt::detail::NTScalarBuilder::createPVStructure ( )

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

Returns
a new instance of a PVStructure.

Definition at line 98 of file ntscalar.cpp.

99 {
100  return getPVDataCreate()->createPVStructure(createStructure());
101 }
epics::pvData::StructureConstPtr createStructure()
Definition: ntscalar.cpp:32
FORCE_INLINE const PVDataCreatePtr & getPVDataCreate()
Definition: pvData.h:1648
StructureConstPtr epics::nt::detail::NTScalarBuilder::createStructure ( )

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

Returns
a new instance of a Structure.

Definition at line 32 of file ntscalar.cpp.

33 {
34  if (!valueTypeSet)
35  throw std::runtime_error("value type not set");
36 
37  FieldBuilderPtr builder =
38  getFieldCreate()->createFieldBuilder()->
39  setId(NTScalar::URI)->
40  add("value", valueType);
41 
42  if (descriptor)
43  builder->add("descriptor", pvString);
44 
45  if (alarm)
46  builder->add("alarm", ntField->createAlarm());
47 
48  if (timeStamp)
49  builder->add("timeStamp", ntField->createTimeStamp());
50 
51  if (display)
52  builder->add("display", ntField->createDisplay());
53 
54  if (control)
55  builder->add("control", ntField->createControl());
56 
57  size_t extraCount = extraFieldNames.size();
58  for (size_t i = 0; i< extraCount; i++)
59  builder->add(extraFieldNames[i], extraFields[i]);
60 
61 
62  StructureConstPtr s = builder->createStructure();
63 
64  reset();
65  return s;
66 }
int i
Definition: scan.c:967
std::tr1::shared_ptr< const Structure > StructureConstPtr
Definition: pvIntrospect.h:162
std::tr1::shared_ptr< FieldBuilder > FieldBuilderPtr
shared_pointer add(std::string const &name, epics::pvData::FieldConstPtr const &field)
Definition: ntscalar.cpp:123
static const std::string URI
Definition: ntscalar.h:149
FORCE_INLINE const FieldCreatePtr & getFieldCreate()
epics::nt::detail::NTScalarBuilder::POINTER_DEFINITIONS ( NTScalarBuilder  )
NTScalarBuilder::shared_pointer epics::nt::detail::NTScalarBuilder::value ( epics::pvData::ScalarType  scalarType)

Sets the value type of an NTScalar.

Parameters
scalarTypethe value type.
Returns
this instance of NTScalarBuilder.

Definition at line 22 of file ntscalar.cpp.

25 {
26  valueType = scalarType;
27  valueTypeSet = true;
28 
29  return shared_from_this();
30 }

Friends And Related Function Documentation

friend class ::epics::nt::NTScalar
friend

Definition at line 130 of file ntscalar.h.


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