1 #ifndef TIL_VALUE_PROXY_H_ 2 #define TIL_VALUE_PROXY_H_ 8 #include "boost/call_traits.hpp" 9 #include "boost/type_traits.hpp" 32 template <
typename TContainer,
typename TIndex = std::
size_t,
typename AccessPolicy = policy::VPAccess_Default<TContainer,TIndex> >
48 template <
typename XContainer,
typename XIndex,
typename XAccessPolicy>
58 return AccessPolicy::getPointer(*m_pContainer, m_i);
65 return AccessPolicy::get(*m_pContainer, m_i);
72 typename boost::call_traits<TIndex>::const_reference
index()
const {
return m_i; }
73 typename boost::call_traits<TIndex>::reference
index() {
return m_i; }
76 const TContainer &
container()
const {
return *m_pContainer; }
89 TContainer * m_pContainer;
101 template <
typename TContainer,
typename TIndex = std::
size_t,
typename AccessPolicy = policy::VPAccess_Default<TContainer,TIndex> >
114 template <
typename XContainer,
typename XIndex,
typename XAccessPolicy >
127 void operator=(
typename boost::call_traits<value_type>::param_type value)
135 void operator+=(
typename boost::call_traits<value_type>::param_type value)
137 this->assignOp(value, std::plus<value_type>());
140 void operator-=(
typename boost::call_traits<value_type>::param_type value)
142 this->assignOp(value, std::minus<value_type>());
145 void operator*=(
typename boost::call_traits<value_type>::param_type value)
147 this->assignOp(value, std::multiplies<value_type>());
150 void operator/=(
typename boost::call_traits<value_type>::param_type value)
152 this->assignOp(value, std::divides<value_type>());
173 template <
typename TFunctor >
174 void assignOp(
typename boost::call_traits<value_type>::param_type value, TFunctor f)
const_value_proxy< TContainer, TIndex, AccessPolicy > Self
void operator/=(typename boost::call_traits< value_type >::param_type value)
Adds some left-value operations to const_value_proxy.
Belongs to package Box Do not include directly, include til/Box.h instead.
const_pointer operator->() const
void operator*=(typename boost::call_traits< value_type >::param_type value)
boost::call_traits< TIndex >::reference index()
const_value_proxy(TIndex i, TContainer &container)
AccessPolicy::const_reference const_reference
void operator-=(typename boost::call_traits< value_type >::param_type value)
void operator+=(typename boost::call_traits< value_type >::param_type value)
value_proxy< TContainer, TIndex, AccessPolicy > Self
value_proxy(const value_proxy< XContainer, XIndex, XAccessPolicy > &other)
void set(TImage &im, typename TImage::value_type value)
Base::value_type value_type
The value_proxy is designed to provide a simple access to container values that are in fact complicat...
value_type_of< TContainer >::type value_type
const_value_proxy< TContainer, TIndex, AccessPolicy > Base
void operator=(typename boost::call_traits< value_type >::param_type value)
AccessPolicy::const_pointer const_pointer
const TContainer & container() const
value_proxy(TIndex i, TContainer &container)
const_value_proxy(const const_value_proxy< XContainer, XIndex, XAccessPolicy > &other)
boost::call_traits< TIndex >::const_reference index() const