5 #include <boost/call_traits.hpp> 15 template <
class TContainer,
typename T,
class TBinaryFunctor >
17 loop_cv(TContainer & c, T v, TBinaryFunctor f)
27 template <
class TContainer,
typename T,
class TBinaryFunctor >
28 typename boost::enable_if_c<
29 is_container<TContainer>::value &&
30 !is_container<T>::value
32 loop(TContainer & c, T v, TBinaryFunctor f)
39 template <
typename T1,
typename T2,
class TBinaryFunctor >
47 template <
typename T1,
typename T2,
class TBinaryFunctor >
49 typename boost::enable_if_c<
50 !is_container<T1>::value &&
51 !is_container<T2>::value
53 loop(T1 & x, T2 & y, TBinaryFunctor f)
60 template <
class TContainer1,
class TContainer2,
typename TBinaryFunctor >
62 loop_cc(TContainer1 & c1, TContainer2 &res, TBinaryFunctor f)
67 for (; iC1 != c1.end(); ++iC1, ++iRes)
75 template <
class TContainer1,
class TContainer2,
typename TBinaryFunctor >
76 typename boost::enable_if_c<
77 is_container<TContainer1>::value &&
78 is_container<TContainer2>::value
80 loop(
const TContainer1 & c1, TContainer2 &res, TBinaryFunctor f)
88 template <
typename T1,
typename T2,
typename T3,
class TBinaryFunctor >
96 template <
typename T1,
typename T2,
typename T3,
class TBinaryFunctor >
98 typename boost::enable_if_c<
99 !is_container<T1>::value &&
100 !is_container<T2>::value &&
101 !is_container<T3>::value
103 loop(T1 x, T2 y, T3 & z, TBinaryFunctor f)
110 template <
class TContainer1,
class TContainer2,
class TContainerRes,
class TBinaryFunctor >
112 loop_ccc(
const TContainer1 & c1,
const TContainer2 &c2, TContainerRes &res, TBinaryFunctor f)
116 typename TContainer1::const_iterator iC1 = c1.begin();
117 typename TContainer1::const_iterator cEnd = c1.end();
118 typename TContainer2::const_iterator iC2 = c2.begin();
119 typename TContainerRes::iterator iRes = res.begin();
120 for (; iC1 != cEnd; ++iC1, ++iC2, ++iRes)
122 loop(*iC1, *iC2, *iRes, f);
127 template <
class TContainer1,
class TContainer2,
class TContainerRes,
class TBinaryFunctor >
128 typename boost::enable_if_c<
129 is_container<TContainer1>::value &&
130 is_container<TContainer2>::value &&
131 is_container<TContainerRes>::value
133 loop(
const TContainer1 & c1,
const TContainer2 &c2,
const TContainerRes &res, TBinaryFunctor f)
140 template <
class TContainer,
class TBinaryFunctor >
142 loop_cvc(
const TContainer & c1,
typename boost::call_traits<typename TContainer::value_type>::param_type v, TContainer & res, TBinaryFunctor f)
145 typename TContainer::const_iterator iC1 = c1.begin();
146 typename TContainer::iterator iRes = res.begin();
147 for (; iC1 != c1.end(); ++iC1, ++iRes)
149 loop(*iC1, v, *iRes, f);
155 template <
class TContainer,
typename T,
class TBinaryFunctor >
156 typename boost::enable_if_c<
157 is_container<TContainer>::value &&
158 !is_container<T>::value
160 loop(
const TContainer & c1, T v, TContainer &res, TBinaryFunctor f)
Belongs to package Box Do not include directly, include til/Box.h instead.
void loop_vv(T1 &x, T2 &y, TBinaryFunctor f)
numeric_array< T, D > size(const Box< T, D > &box)
Return the size of a box.
void loop_ccc(const TContainer1 &c1, const TContainer2 &c2, TContainerRes &res, TBinaryFunctor f)
void loop_cv(TContainer &c, T v, TBinaryFunctor f)
void loop_cc(TContainer1 &c1, TContainer2 &res, TBinaryFunctor f)
boost::enable_if_c< is_container< TContainer >::value &&!is_container< T >::value >::type loop(TContainer &c, T v, TBinaryFunctor f)
Apply a binary functor to a collection and a constant.
void loop_vvv(T1 x, T2 y, T3 &z, TBinaryFunctor f)
void loop_cvc(const TContainer &c1, typename boost::call_traits< typename TContainer::value_type >::param_type v, TContainer &res, TBinaryFunctor f)