SOFA API  d3aee470
Open source framework for multi-physics simuation
sofa::helper::ReadAccessor< T > Class Template Reference

#include <accessor.h>

Inheritance diagram for sofa::helper::ReadAccessor< T >:

Detailed Description

template<class T>
class sofa::helper::ReadAccessor< T >

A ReadAccessor is a proxy class, holding a reference to a given container and providing access to its data, using an unified interface (similar to std::vector), hiding API differences within containers.

Other advantadges of using a ReadAccessor are :

  • It can be faster that the default methods and operators of the container, as verifications and changes notifications can be handled in the accessor's constructor and destructor instead of at each item access.
  • No modifications to the container will be done by mistake
  • Accesses can be logged for debugging or task dependencies analysis.

The default implementation provides only minimal set of methods and operators, sufficient for scalar types but which should be overloaded for more complex types. Various template specializations are typically used, especially for core::objectmodel::Data<T>

Protected Attributes

const container_typevref
 

Public Member Functions

 ReadAccessor (const container_type &container)
 
const_reference ref () const
 
 operator const_reference () const
 
const_pointer operator-> () const
 
const_reference operator* () const
 

Friends

std::ostream & operator<< (std::ostream &os, const ReadAccessor< T > &vec)
 

Attribute details

template<class T >
const container_type* sofa::helper::ReadAccessor< T >::vref
protected

Constructor details

template<class T >
sofa::helper::ReadAccessor< T >::ReadAccessor ( const container_type container)
inlineexplicit

Function details

template<class T >
sofa::helper::ReadAccessor< T >::operator const_reference ( ) const
inline
template<class T >
const_reference sofa::helper::ReadAccessor< T >::operator* ( ) const
inline
template<class T >
const_pointer sofa::helper::ReadAccessor< T >::operator-> ( ) const
inline
template<class T >
const_reference sofa::helper::ReadAccessor< T >::ref ( ) const
inline

Related details

template<class T >
std::ostream& operator<< ( std::ostream &  os,
const ReadAccessor< T > &  vec 
)
friend