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

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

#include "ntattribute.h"

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

Public Member Functions

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

Protected Member Functions

 NTAttributeBuilder ()
 
void reset ()
 

Protected Attributes

bool tags
 
bool descriptor
 
bool alarm
 
bool timeStamp
 
epics::pvData::StringArray extraFieldNames
 
epics::pvData::FieldConstPtrArray extraFields
 

Friends

class ::epics::nt::NTAttribute
 

Detailed Description

Interface for in-line creating of NTAttribute.

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 ntattribute.h.

Constructor & Destructor Documentation

epics::nt::detail::NTAttributeBuilder::NTAttributeBuilder ( )
protected

Definition at line 88 of file ntattribute.cpp.

89 {
90  reset();
91 }

Member Function Documentation

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

Definition at line 102 of file ntattribute.cpp.

103 {
104  extraFields.push_back(field); extraFieldNames.push_back(name);
105  return shared_from_this();
106 }
epics::pvData::StringArray extraFieldNames
Definition: ntattribute.h:107
epics::pvData::FieldConstPtrArray extraFields
Definition: ntattribute.h:108
NTAttributeBuilder::shared_pointer epics::nt::detail::NTAttributeBuilder::addAlarm ( )

Adds alarm field to the NTAttribute.

Returns
this instance of NTAttributeBuilder.

Definition at line 66 of file ntattribute.cpp.

67 {
68  alarm = true;
69  return shared_from_this();
70 }
NTAttributeBuilder::shared_pointer epics::nt::detail::NTAttributeBuilder::addDescriptor ( )

Adds descriptor field to the NTAttribute.

Returns
this instance of NTAttributeBuilder.

Definition at line 60 of file ntattribute.cpp.

61 {
62  descriptor = true;
63  return shared_from_this();
64 }
NTAttributeBuilder::shared_pointer epics::nt::detail::NTAttributeBuilder::addTags ( )

Adds tags field to the NTAttribute.

Returns
this instance of NTAttributeBuilder.

Definition at line 54 of file ntattribute.cpp.

55 {
56  tags = true;
57  return shared_from_this();
58 }
NTAttributeBuilder::shared_pointer epics::nt::detail::NTAttributeBuilder::addTimeStamp ( )

Adds timeStamp field to the NTAttribute.

Returns
this instance of NTAttributeBuilder.

Definition at line 72 of file ntattribute.cpp.

73 {
74  timeStamp = true;
75  return shared_from_this();
76 }
NTAttributePtr epics::nt::detail::NTAttributeBuilder::create ( )

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

Returns
a new instance of a NTAttribute.

Definition at line 83 of file ntattribute.cpp.

84 {
85  return NTAttributePtr(new NTAttribute(createPVStructure()));
86 }
epics::pvData::PVStructurePtr createPVStructure()
Definition: ntattribute.cpp:78
std::tr1::shared_ptr< NTAttribute > NTAttributePtr
Definition: ntattribute.h:25
PVStructurePtr epics::nt::detail::NTAttributeBuilder::createPVStructure ( )

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

Returns
a new instance of a PVStructure.

Definition at line 78 of file ntattribute.cpp.

79 {
80  return getPVDataCreate()->createPVStructure(createStructure());
81 }
epics::pvData::StructureConstPtr createStructure()
Definition: ntattribute.cpp:23
FORCE_INLINE const PVDataCreatePtr & getPVDataCreate()
Definition: pvData.h:1648
StructureConstPtr epics::nt::detail::NTAttributeBuilder::createStructure ( )

Creates a Structure that represents NTAttribute. 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 ntattribute.cpp.

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

Definition at line 93 of file ntattribute.cpp.

94 {
95  descriptor = false;
96  alarm = false;
97  timeStamp = false;
98  extraFieldNames.clear();
99  extraFields.clear();
100 }
epics::pvData::StringArray extraFieldNames
Definition: ntattribute.h:107
epics::pvData::FieldConstPtrArray extraFields
Definition: ntattribute.h:108

Friends And Related Function Documentation

friend class ::epics::nt::NTAttribute
friend

Definition at line 110 of file ntattribute.h.

Member Data Documentation

bool epics::nt::detail::NTAttributeBuilder::alarm
protected

Definition at line 103 of file ntattribute.h.

bool epics::nt::detail::NTAttributeBuilder::descriptor
protected

Definition at line 102 of file ntattribute.h.

epics::pvData::StringArray epics::nt::detail::NTAttributeBuilder::extraFieldNames
protected

Definition at line 107 of file ntattribute.h.

epics::pvData::FieldConstPtrArray epics::nt::detail::NTAttributeBuilder::extraFields
protected

Definition at line 108 of file ntattribute.h.

bool epics::nt::detail::NTAttributeBuilder::tags
protected

Definition at line 101 of file ntattribute.h.

bool epics::nt::detail::NTAttributeBuilder::timeStamp
protected

Definition at line 104 of file ntattribute.h.


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