OpenLexocad  28.0
Algorithms.h File Reference
#include <algorithm>
#include <numeric>
#include <Base/Type.h>

Go to the source code of this file.

Namespaces

 Base
 

Functions

template<class InputIt , class OutputIt , class Pred , class Fct >
void Base::transform_if (InputIt first, InputIt last, OutputIt dest, Pred pred, Fct transform)
 
template<class Cont , class OutputIt , class Pred , class Fct >
void Base::transform_if (Cont container, OutputIt dest, Pred pred, Fct transform)
 
template<typename Container , typename OutputIt , typename BinaryFunction >
void Base::transform (Container container, OutputIt out, BinaryFunction function)
 
template<typename Container , typename T , typename BinaryFunction >
Base::accumulate (Container container, T init, BinaryFunction function)
 
template<typename To , template< typename... > class Cont, typename FromPtr >
const Cont< To * > & Base::castToBaseContainer (const Cont< FromPtr > &v)
 
template<typename To , template< typename... > class Cont, typename FromPtr >
Cont< To * > & Base::castToBaseContainer (Cont< FromPtr > &v)
 
template<typename Val , typename Cont >
bool Base::allSubtype (const Cont &cont)
 
template<typename BaseClass , template< typename... > class Cont, typename... Derivates>
bool Base::isAnyDerivedFrom (const Cont< BaseClass * > &container)
 Tests if at least one element of the container is a subclass (dynamic castable) of at least one of the Derivates. E.g. we have a vector<Element*> elems and we want to know if any of the elements is a subclass of either one of those: App::CrossSectionElement, App::CrossPlaneElement, App::ElevationElement. We tests is like this: isAnyDerivedFrom<App::Element,vector,App::CrossSectionElement, App::CrossPlaneElement, App::ElevationElement>(elems). There is a couple of specializations in App/ContainerTool.h for more call convenience. More...