1 #ifndef __DIADES_UTILS_FUNCTORS_HH 2 #define __DIADES_UTILS_FUNCTORS_HH 19 template<
typename _Object>
28 template<
typename _Object>
38 template<
typename Object>
62 template<
typename Object>
83 template<
typename Object>
104 template<
typename InputIterator>
115 IsIn(InputIterator first, InputIterator last) : _first(first), _last(last)
124 bool operator()(
const typename InputIterator::value_type & obj)
const 126 return std::find(_first, _last, obj) != _last;
138 template<
typename InputIterator>
141 isIn(InputIterator first, InputIterator last)
153 template<
typename _Object>
154 struct Is :
public std::unary_function<_Object, _Object>
189 template<
typename InputIterator>
200 IsNotIn(InputIterator first, InputIterator last) : _first(first), _last(last)
209 bool operator()(
const typename InputIterator::value_type & obj)
const 223 template<
typename InputIterator>
226 isNotIn(InputIterator first, InputIterator last)
242 template<
typename InputIterator,
typename OutputIterator1,
243 typename OutputIterator2,
typename _UnaryPredicate >
247 OutputIterator1 output1,
248 OutputIterator2 output2,
249 _UnaryPredicate predicate)
251 for(; first != last; ++first)
253 if(predicate(*first))
274 template <
class F,
class G,
class H>
276 :
public std::unary_function<typename G::argument_type,
277 typename F::result_type>
292 : _f(f), _g(g), _h(h)
301 typename F::result_type
304 return _f(_g(x), _h(x));
317 template <
class F,
class G,
class H>
319 fgxhx(
const F& f,
const G& g,
const H& h)
330 template <
class F,
class G>
332 :
public std::unary_function<typename G::argument_type,
333 typename F::result_type>
355 typename F::result_type
371 template <
class F,
class G>
373 fgx(
const F& f,
const G & g)
384 template <
class F,
class G,
class H>
386 :
public std::binary_function<typename G::argument_type, typename H::argument_type,
387 typename F::result_type>
402 : _f(f), _g(g), _h(h)
411 typename F::result_type
412 operator()(
const typename G::argument_type& x,
const typename H::argument_type& y)
const 414 return _f.operator()(_g.operator()(x), _h.operator()(y));
427 template <
class F,
class G,
class H>
429 fgxhy(
const F& f,
const G& g,
const H& h)
441 template<
typename UnaryPredicate1,
typename UnaryPredicate2>
444 UnaryAnd(
const UnaryPredicate1 & p1,
const UnaryPredicate2 & p2)
455 template<
typename UnaryPredicate1,
typename UnaryPredicate2>
458 UnaryOr(
const UnaryPredicate1 & p1,
const UnaryPredicate2 & p2)
474 template <
class Predicate1,
class Predicate2>
477 unaryAnd(
const Predicate1& p1,
const Predicate2& p2)
488 template <
class Predicate1,
class Predicate2>
491 unaryOr(
const Predicate1& p1,
const Predicate2& p2)
503 template<
typename UnaryPredicate1,
typename UnaryPredicate2>
506 BinaryAnd(
const UnaryPredicate1 & p1,
const UnaryPredicate2 & p2)
517 template<
typename UnaryPredicate1,
typename UnaryPredicate2>
520 BinaryOr(
const UnaryPredicate1 & p1,
const UnaryPredicate2 & p2)
537 template <
class Predicate1,
class Predicate2>
551 template <
class Predicate1,
class Predicate2>
554 binaryOr(
const Predicate1& p1,
const Predicate2& p2)
585 template<
typename Object>
CompositionFunctorFGxHy(const F &f, const G &g, const H &h)
bool operator()(const Object &obj) const
CompositionFunctorFGx< F, G > fgx(const F &f, const G &g)
CompositionFunctorFGx(const F &f, const G &g)
BinaryAnd< Predicate1, Predicate2 > binaryAnd(const Predicate1 &p1, const Predicate2 &p2)
bool operator()(const Object &obj) const
UnaryOr< Predicate1, Predicate2 > unaryOr(const Predicate1 &p1, const Predicate2 &p2)
Object & operator()(Object &obj)
bool operator()(const typename InputIterator::value_type &obj) const
F::result_type operator()(const typename G::argument_type &x) const
CompositionFunctorFGxHx< F, G, H > fgxhx(const F &f, const G &g, const H &h)
BinaryOr< Predicate1, Predicate2 > binaryOr(const Predicate1 &p1, const Predicate2 &p2)
IsNotIn< InputIterator > isNotIn(InputIterator first, InputIterator last)
const Object & operator()(const Object &obj) const
IsNotIn(InputIterator first, InputIterator last)
F::result_type operator()(const typename G::argument_type &x) const
IsIn< InputIterator > isIn(InputIterator first, InputIterator last)
Namespace of the Diades project.
IsIn(InputIterator first, InputIterator last)
void dispatch(InputIterator first, InputIterator last, OutputIterator1 output1, OutputIterator2 output2, _UnaryPredicate predicate)
bool operator()(const Object &obj) const
CompositionFunctorFGxHy< F, G, H > fgxhy(const F &f, const G &g, const H &h)
UnaryOr(const UnaryPredicate1 &p1, const UnaryPredicate2 &p2)
UnaryAnd< Predicate1, Predicate2 > unaryAnd(const Predicate1 &p1, const Predicate2 &p2)
InputIterator::value_type Object
F::result_type operator()(const typename G::argument_type &x, const typename H::argument_type &y) const
CompositionFunctorFGxHx(const F &f, const G &g, const H &h)
UnaryAnd(const UnaryPredicate1 &p1, const UnaryPredicate2 &p2)
BinaryOr(const UnaryPredicate1 &p1, const UnaryPredicate2 &p2)
bool operator()(const typename InputIterator::value_type &obj) const
BinaryAnd(const UnaryPredicate1 &p1, const UnaryPredicate2 &p2)