Scine::Core  3.0.0
Module management and core interface definitions
 All Classes Files Functions Variables Typedefs Pages
DerivedModule.h File Reference

Provides helpers for the general implementation of classes deriving from Module. More...

#include "boost/any.hpp"
#include "boost/mpl/at.hpp"
#include "boost/mpl/find_if.hpp"
#include "boost/mpl/for_each.hpp"
#include "boost/mpl/map.hpp"
#include "boost/mpl/size.hpp"
#include "boost/mpl/size_t.hpp"
#include "boost/mpl/vector.hpp"
#include <algorithm>
#include <array>
#include <memory>
#include <stdexcept>
#include <string>
#include <vector>
Include dependency graph for DerivedModule.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  Scine::Core::DerivedModule::detail::exec_if_impl< done >
 
struct  Scine::Core::DerivedModule::detail::exec_if_impl< false >
 
struct  Scine::Core::DerivedModule::detail::MapPairInterfaceIdentifierMatches
 
struct  Scine::Core::DerivedModule::detail::ModelTypeIdentifierMatches
 
struct  Scine::Core::DerivedModule::detail::CreateInterfacePointer< InterfaceType >
 
struct  Scine::Core::DerivedModule::detail::ResolveModel
 
struct  Scine::Core::DerivedModule::detail::MatchFoundExecutor
 
struct  Scine::Core::DerivedModule::detail::ModelExists
 
struct  Scine::Core::DerivedModule::detail::ListModels
 
struct  Scine::Core::DerivedModule::detail::IdentifierOverlapPredicate
 
struct  Scine::Core::DerivedModule::detail::IdentifierOverlapPredicate::apply< MPLMapIterPair >
 
struct  Scine::Core::DerivedModule::detail::ModelTypeListIsEmpty
 
struct  Scine::Core::DerivedModule::detail::ModelTypeListIsEmpty::apply< MPLMapIterPair >
 
struct  Scine::Core::DerivedModule::detail::none_of< Sequence, Predicate >
 
struct  Scine::Core::DerivedModule::detail::ModelListsAreNotEmpty< MPLMap >
 
struct  Scine::Core::DerivedModule::detail::NoModelIdentifiersOverlap< MPLMap >
 

Functions

bool Scine::Core::DerivedModule::detail::caseInsensitiveEqual (const std::string &a, const std::string &b)
 
template<typename Sequence , typename Predicate , typename Executable >
auto Scine::Core::DerivedModule::detail::exec_if (const Predicate &p, const Executable &e, Sequence *=0) -> typename Executable::ResultType
 Run-time "iteration" through type list, if predicate matches, call another function, otherwise return its none. More...
 
constexpr bool Scine::Core::DerivedModule::detail::strEqual (const char *a, const char *b)
 
template<typename... ModelTypes>
constexpr bool Scine::Core::DerivedModule::detail::identifiersOverlap ()
 
template<typename MPLVector , std::size_t... Inds>
constexpr bool Scine::Core::DerivedModule::detail::identifierOverlapForwarder (std::index_sequence< Inds...>)
 
template<typename MPLMap >
boost::any Scine::Core::DerivedModule::resolve (const std::string &interface, const std::string &model)
 Creates an InterfaceType shared_ptr of a matching model to an interface. More...
 
template<typename MPLMap >
bool Scine::Core::DerivedModule::has (const std::string &interface, const std::string &model) noexcept
 Checks whether a module has a particular model for a particular interface. More...
 
template<typename MPLMap >
std::vector< std::string > Scine::Core::DerivedModule::announceInterfaces () noexcept
 Announces all interface names. More...
 
template<typename MPLMap >
std::vector< std::string > Scine::Core::DerivedModule::announceModels (const std::string &interface) noexcept
 Announces all model names for a particular interface. More...
 

Detailed Description

Provides helpers for the general implementation of classes deriving from Module.