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

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

#include "ntunion.h"

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

Public Member Functions

 POINTER_DEFINITIONS (NTUnionBuilder)
 
shared_pointer value (epics::pvData::UnionConstPtr unionType)
 
shared_pointer addDescriptor ()
 
shared_pointer addAlarm ()
 
shared_pointer addTimeStamp ()
 
epics::pvData::StructureConstPtr createStructure ()
 
epics::pvData::PVStructurePtr createPVStructure ()
 
NTUnionPtr create ()
 
shared_pointer add (std::string const &name, epics::pvData::FieldConstPtr const &field)
 

Friends

class ::epics::nt::NTUnion
 

Detailed Description

Interface for in-line creating of NTUnion.

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

Member Function Documentation

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

Definition at line 99 of file ntunion.cpp.

100 {
101  extraFields.push_back(field); extraFieldNames.push_back(name);
102  return shared_from_this();
103 }
NTUnionBuilder::shared_pointer epics::nt::detail::NTUnionBuilder::addAlarm ( )

Adds alarm field to the NTUnion.

Returns
this instance of NTUnionBuilder.

Definition at line 62 of file ntunion.cpp.

63 {
64  alarm = true;
65  return shared_from_this();
66 }
NTUnionBuilder::shared_pointer epics::nt::detail::NTUnionBuilder::addDescriptor ( )

Adds descriptor field to the NTUnion.

Returns
this instance of NTUnionBuilder.

Definition at line 56 of file ntunion.cpp.

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

Adds timeStamp field to the NTUnion.

Returns
this instance of NTUnionBuilder.

Definition at line 68 of file ntunion.cpp.

69 {
70  timeStamp = true;
71  return shared_from_this();
72 }
NTUnionPtr epics::nt::detail::NTUnionBuilder::create ( )

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

Returns
a new instance of a NTUnion.

Definition at line 79 of file ntunion.cpp.

80 {
81  return NTUnionPtr(new NTUnion(createPVStructure()));
82 }
std::tr1::shared_ptr< NTUnion > NTUnionPtr
Definition: ntunion.h:25
epics::pvData::PVStructurePtr createPVStructure()
Definition: ntunion.cpp:74
PVStructurePtr epics::nt::detail::NTUnionBuilder::createPVStructure ( )

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

Returns
a new instance of a PVStructure.

Definition at line 74 of file ntunion.cpp.

75 {
76  return getPVDataCreate()->createPVStructure(createStructure());
77 }
epics::pvData::StructureConstPtr createStructure()
Definition: ntunion.cpp:29
FORCE_INLINE const PVDataCreatePtr & getPVDataCreate()
Definition: pvData.h:1648
StructureConstPtr epics::nt::detail::NTUnionBuilder::createStructure ( )

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

Returns
a new instance of a Structure.

Definition at line 29 of file ntunion.cpp.

30 {
31  FieldBuilderPtr builder =
32  getFieldCreate()->createFieldBuilder()->
33  setId(NTUnion::URI)->
34  add("value", valueType);
35 
36  if (descriptor)
37  builder->add("descriptor", pvString);
38 
39  if (alarm)
40  builder->add("alarm", ntField->createAlarm());
41 
42  if (timeStamp)
43  builder->add("timeStamp", ntField->createTimeStamp());
44 
45  size_t extraCount = extraFieldNames.size();
46  for (size_t i = 0; i< extraCount; i++)
47  builder->add(extraFieldNames[i], extraFields[i]);
48 
49 
50  StructureConstPtr s = builder->createStructure();
51 
52  reset();
53  return s;
54 }
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: ntunion.h:131
FORCE_INLINE const FieldCreatePtr & getFieldCreate()
shared_pointer add(std::string const &name, epics::pvData::FieldConstPtr const &field)
Definition: ntunion.cpp:99
epics::nt::detail::NTUnionBuilder::POINTER_DEFINITIONS ( NTUnionBuilder  )
NTUnionBuilder::shared_pointer epics::nt::detail::NTUnionBuilder::value ( epics::pvData::UnionConstPtr  unionType)

Specifies the union for the value field. If this is not called then a variant union is the default.

Parameters
unionTypethe introspection object for the union value field
Returns
this instance of NTUnionBuilder

Definition at line 23 of file ntunion.cpp.

24 {
25  valueType = unionType;
26  return shared_from_this();
27 }

Friends And Related Function Documentation

friend class ::epics::nt::NTUnion
friend

Definition at line 112 of file ntunion.h.


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