This is Unofficial EPICS BASE Doxygen Site
epics::pvData::detail::PVVectorStorage< T, Base > Class Template Referenceabstract

Common code for PV*Array. More...

#include "pvData.h"

+ Inheritance diagram for epics::pvData::detail::PVVectorStorage< T, Base >:
+ Collaboration diagram for epics::pvData::detail::PVVectorStorage< T, Base >:

Public Types

typedef T value_type
 
typedef T * pointer
 
typedef const T * const_pointer
 
typedef ::epics::pvData::shared_vector< T > svector
 
typedef ::epics::pvData::shared_vector< const T > const_svector
 

Public Member Functions

virtual ~PVVectorStorage ()
 
virtual const_svector view () const =0
 Fetch a read-only view of the current array data. More...
 
virtual void swap (const_svector &other)=0
 
virtual void replace (const const_svector &next)=0
 
svector reuse ()
 

Protected Member Functions

template<typename A >
 PVVectorStorage (A a)
 

Detailed Description

template<typename T, class Base>
class epics::pvData::detail::PVVectorStorage< T, Base >

Common code for PV*Array.

Definition at line 1105 of file pvData.h.

Member Typedef Documentation

template<typename T, class Base>
typedef const T* epics::pvData::detail::PVVectorStorage< T, Base >::const_pointer

Definition at line 1110 of file pvData.h.

template<typename T, class Base>
typedef ::epics::pvData::shared_vector<const T> epics::pvData::detail::PVVectorStorage< T, Base >::const_svector

Definition at line 1114 of file pvData.h.

template<typename T, class Base>
typedef T* epics::pvData::detail::PVVectorStorage< T, Base >::pointer

Definition at line 1109 of file pvData.h.

template<typename T, class Base>
typedef ::epics::pvData::shared_vector<T> epics::pvData::detail::PVVectorStorage< T, Base >::svector

Definition at line 1113 of file pvData.h.

template<typename T, class Base>
typedef T epics::pvData::detail::PVVectorStorage< T, Base >::value_type

Definition at line 1108 of file pvData.h.

Constructor & Destructor Documentation

template<typename T, class Base>
template<typename A >
epics::pvData::detail::PVVectorStorage< T, Base >::PVVectorStorage ( a)
inlineexplicitprotected

Definition at line 1119 of file pvData.h.

1119 : Base(a) {}
template<typename T, class Base>
virtual epics::pvData::detail::PVVectorStorage< T, Base >::~PVVectorStorage ( )
inlinevirtual

Definition at line 1121 of file pvData.h.

1121 {}

Member Function Documentation

template<typename T, class Base>
virtual void epics::pvData::detail::PVVectorStorage< T, Base >::replace ( const const_svector next)
pure virtual

Discard current contents and replaced with the provided. Fails for Immutable arrays calls postPut()

Implemented in epics::pvData::PVValueArray< PVUnionPtr >, epics::pvData::PVValueArray< PVStructurePtr >, and epics::pvData::PVValueArray< T >.

template<typename T, class Base>
svector epics::pvData::detail::PVVectorStorage< T, Base >::reuse ( )
inline

Remove and return the current array data or an unique copy if shared.

Does not (and should not) call postPut()

The returned shared_vector<T> will have unique()==true.

Definition at line 1155 of file pvData.h.

1156  {
1158  this->swap(result);
1159  return thaw(result);
1160  }
pvac::PutEvent result
Definition: clientSync.cpp:117
::epics::pvData::shared_vector< const T > const_svector
Definition: pvData.h:1114
virtual void swap(const_svector &other)=0
template<typename T, class Base>
virtual void epics::pvData::detail::PVVectorStorage< T, Base >::swap ( const_svector other)
pure virtual

Exchange our contents for the provided.

Exceptions
std::logic_errorfor Immutable arrays.

Callers must ensure that postPut() is called after the last swap() operation.

Before you call this directly, consider using the reuse(), or replace() methods.

Implemented in epics::pvData::PVValueArray< PVUnionPtr >, epics::pvData::PVValueArray< PVStructurePtr >, and epics::pvData::PVValueArray< T >.

template<typename T, class Base>
virtual const_svector epics::pvData::detail::PVVectorStorage< T, Base >::view ( ) const
pure virtual

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