Namespace Scine::Core::DerivedModule::detail

namespace detail

Functions

bool caseInsensitiveEqual(const std::string &a, const std::string &b)
template<typename Sequence, typename Predicate, typename Executable>
auto exec_if(const Predicate &p, const Executable &e, Sequence * = 0)

Run-time “iteration” through type list, if predicate matches, call another function, otherwise return its none.

Return

Executable::none() if Predicate never matches, otherwise Executable(T) for the first T in Sequence that matches Predicate.

Template Parameters
  • Sequence: a boost::mpl compatible sequence type

  • Predicate: A type with a template<T> bool operator() (T* = 0) const member specifying whether to execute Executable for the type T in Sequence

  • Executable: A type fulfilling the following requirements:

    • Has a ResultType typedef

    • Has a template<T> ResultType operator() (T* = 0) const member which is executed if returns true for a type in Sequence

    • Has a static ResultType none() const member returning the base case

constexpr bool strEqual(const char *a, const char *b)
template<typename ...ModelTypes>
constexpr bool identifiersOverlap()
template<typename MPLVector, std::size_t... Inds>
constexpr bool identifierOverlapForwarder(std::index_sequence<Inds...>)