This is Unofficial EPICS BASE Doxygen Site
epics::pvData::UnionArray Class Reference

This class implements introspection object for a unionArray. More...

#include "pvIntrospect.h"

+ Inheritance diagram for epics::pvData::UnionArray:
+ Collaboration diagram for epics::pvData::UnionArray:

Public Types

typedef UnionArrayreference
 
typedef const UnionArrayconst_reference
 
- Public Types inherited from epics::pvData::Array
enum  ArraySizeType { variable, fixed, bounded }
 
typedef Arrayreference
 
typedef const Arrayconst_reference
 
- Public Types inherited from epics::pvData::Field
enum  { isField =1 }
 

Public Member Functions

 POINTER_DEFINITIONS (UnionArray)
 
UnionConstPtr getUnion () const
 
virtual ArraySizeType getArraySizeType () const OVERRIDE FINAL
 
virtual std::size_t getMaximumCapacity () const OVERRIDE FINAL
 
virtual std::string getID () const OVERRIDE FINAL
 
virtual std::ostream & dump (std::ostream &o) const OVERRIDE FINAL
 
virtual void serialize (ByteBuffer *buffer, SerializableControl *control) const OVERRIDE FINAL
 
virtual void deserialize (ByteBuffer *buffer, DeserializableControl *control) OVERRIDE FINAL
 
std::tr1::shared_ptr< PVValueArray< std::tr1::shared_ptr< PVUnion > > > build () const
 
virtual ~UnionArray ()
 
- Public Member Functions inherited from epics::pvData::Array
 POINTER_DEFINITIONS (Array)
 
virtual ~Array ()
 
- Public Member Functions inherited from epics::pvData::Field
 POINTER_DEFINITIONS (Field)
 
virtual ~Field ()
 
Type getType () const
 
std::tr1::shared_ptr< PVFieldbuild () const
 
- Public Member Functions inherited from epics::pvData::Serializable
virtual ~Serializable ()
 

Protected Member Functions

 UnionArray (UnionConstPtr const &_punion)
 
- Protected Member Functions inherited from epics::pvData::Array
 Array (Type type)
 
- Protected Member Functions inherited from epics::pvData::Field
 Field (Type type)
 
void cacheCleanup ()
 

Friends

class FieldCreate
 

Additional Inherited Members

- Static Public Attributes inherited from epics::pvData::Field
static size_t num_instances
 

Detailed Description

This class implements introspection object for a unionArray.

Definition at line 652 of file pvIntrospect.h.

Member Typedef Documentation

Definition at line 656 of file pvIntrospect.h.

Definition at line 655 of file pvIntrospect.h.

Constructor & Destructor Documentation

epics::pvData::UnionArray::UnionArray ( UnionConstPtr const &  _punion)
protected

Constructor.

Parameters
_punionThe introspection interface for the elements.

Definition at line 458 of file FieldCreateFactory.cpp.

459 : Array(unionArray),punion(_punion)
460 {
461 }
epics::pvData::UnionArray::~UnionArray ( )
virtual

Definition at line 463 of file FieldCreateFactory.cpp.

464 {
465  cacheCleanup();
466 }

Member Function Documentation

std::tr1::shared_ptr< PVValueArray< std::tr1::shared_ptr< PVUnion > > > epics::pvData::UnionArray::build ( ) const

Allocate a new instance

Version
Added after 7.0.0

Definition at line 501 of file FieldCreateFactory.cpp.

502 {
503  return getPVDataCreate()->createPVUnionArray(std::tr1::static_pointer_cast<const UnionArray>(shared_from_this()));
504 }
FORCE_INLINE const PVDataCreatePtr & getPVDataCreate()
Definition: pvData.h:1648
void epics::pvData::UnionArray::deserialize ( ByteBuffer buffer,
DeserializableControl flusher 
)
virtual

Deserialize buffer.

Parameters
bufferserialization buffer.
flusherdeserialization control.

Implements epics::pvData::Serializable.

Definition at line 497 of file FieldCreateFactory.cpp.

497  {
498  throw std::runtime_error("not valid operation, use FieldCreate::deserialize instead");
499 }
std::ostream & epics::pvData::UnionArray::dump ( std::ostream &  o) const
virtual

Puts the string representation to the stream.

Parameters
ooutput stream.
Returns
The output stream.

Implements epics::pvData::Field.

Definition at line 473 of file FieldCreateFactory.cpp.

474 {
475  o << format::indent() << getID() << std::endl;
476  {
477  format::indent_scope s(o);
478  o << *punion;
479  }
480  return o;
481 }
virtual std::string getID() const OVERRIDE FINAL
virtual ArraySizeType epics::pvData::UnionArray::getArraySizeType ( ) const
inlinevirtual

Get array size type (i.e. variable/fixed/bounded size array).

Returns
array size type enum.

Implements epics::pvData::Array.

Definition at line 664 of file pvIntrospect.h.

string epics::pvData::UnionArray::getID ( ) const
virtual

Get the identification string.

Returns
The identification string, can be empty.

Implements epics::pvData::Field.

Definition at line 468 of file FieldCreateFactory.cpp.

469 {
470  return punion->getID() + "[]";
471 }
virtual std::size_t epics::pvData::UnionArray::getMaximumCapacity ( ) const
inlinevirtual

Get maximum capacity of the array.

Returns
maximum capacity of the array, 0 indicates variable size array.

Implements epics::pvData::Array.

Definition at line 666 of file pvIntrospect.h.

666 {return 0;}
UnionConstPtr epics::pvData::UnionArray::getUnion ( ) const
inline

Get the introspection interface for the array elements.

Returns
The introspection interface.

Definition at line 662 of file pvIntrospect.h.

662 {return punion;}
epics::pvData::UnionArray::POINTER_DEFINITIONS ( UnionArray  )
void epics::pvData::UnionArray::serialize ( ByteBuffer buffer,
SerializableControl flusher 
) const
virtual

Serialize field into given buffer.

Parameters
bufferserialization buffer.
flusherflush interface.

Implements epics::pvData::Serializable.

Definition at line 483 of file FieldCreateFactory.cpp.

483  {
484  control->ensureBuffer(1);
485  if (punion->isVariant())
486  {
487  // unrestricted/variant union
488  buffer->putByte((int8)0x8A);
489  }
490  else
491  {
492  buffer->putByte((int8)0x89);
493  control->cachedSerialize(punion, buffer);
494  }
495 }
int8_t int8
Definition: pvType.h:75

Friends And Related Function Documentation

friend class FieldCreate
friend

Definition at line 689 of file pvIntrospect.h.


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