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

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

#include "ntenum.h"

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

Public Member Functions

 POINTER_DEFINITIONS (NTEnumBuilder)
 
shared_pointer addDescriptor ()
 
shared_pointer addAlarm ()
 
shared_pointer addTimeStamp ()
 
epics::pvData::StructureConstPtr createStructure ()
 
epics::pvData::PVStructurePtr createPVStructure ()
 
NTEnumPtr create ()
 
shared_pointer add (std::string const &name, epics::pvData::FieldConstPtr const &field)
 

Friends

class ::epics::nt::NTEnum
 

Detailed Description

Interface for in-line creating of NTEnum.

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

Definition at line 37 of file ntenum.h.

Member Function Documentation

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

Definition at line 92 of file ntenum.cpp.

93 {
94  extraFields.push_back(field); extraFieldNames.push_back(name);
95  return shared_from_this();
96 }
NTEnumBuilder::shared_pointer epics::nt::detail::NTEnumBuilder::addAlarm ( )

Adds alarm field to the NTEnum.

Returns
this instance of NTEnumBuilder.

Definition at line 56 of file ntenum.cpp.

57 {
58  alarm = true;
59  return shared_from_this();
60 }
NTEnumBuilder::shared_pointer epics::nt::detail::NTEnumBuilder::addDescriptor ( )

Adds descriptor field to the NTEnum.

Returns
this instance of NTEnumBuilder.

Definition at line 50 of file ntenum.cpp.

51 {
52  descriptor = true;
53  return shared_from_this();
54 }
NTEnumBuilder::shared_pointer epics::nt::detail::NTEnumBuilder::addTimeStamp ( )

Adds timeStamp field to the NTEnum.

Returns
this instance of NTEnumBuilder.

Definition at line 62 of file ntenum.cpp.

63 {
64  timeStamp = true;
65  return shared_from_this();
66 }
NTEnumPtr epics::nt::detail::NTEnumBuilder::create ( )

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

Returns
a new instance of a NTEnum.

Definition at line 73 of file ntenum.cpp.

74 {
75  return NTEnumPtr(new NTEnum(createPVStructure()));
76 }
std::tr1::shared_ptr< NTEnum > NTEnumPtr
Definition: ntenum.h:25
epics::pvData::PVStructurePtr createPVStructure()
Definition: ntenum.cpp:68
PVStructurePtr epics::nt::detail::NTEnumBuilder::createPVStructure ( )

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

Returns
a new instance of a PVStructure.

Definition at line 68 of file ntenum.cpp.

69 {
70  return getPVDataCreate()->createPVStructure(createStructure());
71 }
epics::pvData::StructureConstPtr createStructure()
Definition: ntenum.cpp:23
FORCE_INLINE const PVDataCreatePtr & getPVDataCreate()
Definition: pvData.h:1648
StructureConstPtr epics::nt::detail::NTEnumBuilder::createStructure ( )

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

Returns
a new instance of a Structure.

Definition at line 23 of file ntenum.cpp.

24 {
25  FieldBuilderPtr builder =
26  getFieldCreate()->createFieldBuilder()->
27  setId(NTEnum::URI)->
28  add("value", ntField->createEnumerated());
29 
30  if (descriptor)
31  builder->add("descriptor", pvString);
32 
33  if (alarm)
34  builder->add("alarm", ntField->createAlarm());
35 
36  if (timeStamp)
37  builder->add("timeStamp", ntField->createTimeStamp());
38 
39  size_t extraCount = extraFieldNames.size();
40  for (size_t i = 0; i< extraCount; i++)
41  builder->add(extraFieldNames[i], extraFields[i]);
42 
43 
44  StructureConstPtr s = builder->createStructure();
45 
46  reset();
47  return s;
48 }
shared_pointer add(std::string const &name, epics::pvData::FieldConstPtr const &field)
Definition: ntenum.cpp:92
int i
Definition: scan.c:967
std::tr1::shared_ptr< const Structure > StructureConstPtr
Definition: pvIntrospect.h:162
std::tr1::shared_ptr< FieldBuilder > FieldBuilderPtr
static const std::string URI
Definition: ntenum.h:122
FORCE_INLINE const FieldCreatePtr & getFieldCreate()
epics::nt::detail::NTEnumBuilder::POINTER_DEFINITIONS ( NTEnumBuilder  )

Friends And Related Function Documentation

friend class ::epics::nt::NTEnum
friend

Definition at line 103 of file ntenum.h.


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