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

#include <accessor.h>

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

Detailed Description

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

A WriteAccessor 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 some containers.

Other advantadges of using a WriteAccessor 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.
  • 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

container_typevref
 

Public Member Functions

 WriteAccessor (container_type &container)
 
const_reference ref () const
 
reference wref ()
 
 operator const_reference () const
 
const_pointer operator-> () const
 
const_reference operator* () const
 
 operator reference ()
 
pointer operator-> ()
 
reference operator* ()
 
template<class T2 >
void operator= (const T2 &v)
 

Friends

std::ostream & operator<< (std::ostream &os, const WriteAccessor< T > &vec)
 
std::istream & operator>> (std::istream &in, WriteAccessor< T > &vec)
 

Attribute details

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

Constructor details

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

Function details

template<class T>
sofa::helper::WriteAccessor< T >::operator const_reference ( ) const
inline
template<class T>
sofa::helper::WriteAccessor< T >::operator reference ( )
inline
template<class T>
const_reference sofa::helper::WriteAccessor< T >::operator* ( ) const
inline
template<class T>
reference sofa::helper::WriteAccessor< T >::operator* ( )
inline
template<class T>
const_pointer sofa::helper::WriteAccessor< T >::operator-> ( ) const
inline
template<class T>
pointer sofa::helper::WriteAccessor< T >::operator-> ( )
inline
template<class T>
template<class T2 >
void sofa::helper::WriteAccessor< T >::operator= ( const T2 &  v)
inline
template<class T>
const_reference sofa::helper::WriteAccessor< T >::ref ( ) const
inline
template<class T>
reference sofa::helper::WriteAccessor< T >::wref ( )
inline

Related details

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