provider.h File Reference
#include <memory>
#include <sstream>
#include <string>
#include <type_traits>
#include "mpqc/util/core/exception.h"
#include "mpqc/util/keyval/keyval.h"
Include dependency graph for provider.h:
This graph shows which files directly or indirectly include this file:

Classes

struct  mpqc::detail::ProviderBase
 utility class to support runtime casting to property providers More...
 
class  mpqc::Provides< Properties >
 Base for classes that provide Properties . More...
 
class  mpqc::Provides< Property >
 
struct  mpqc::detail::has_provider< T >
 has_provider<T>::value is true if T::Provider is a valid type More...
 

Namespaces

 mpqc
 The top-level namespace for all Massively Parallel Quantum Chemistry package.
 
 mpqc::detail
 

Functions

template<typename Property , typename Provider >
bool mpqc::provides (const std::shared_ptr< Provider > &provider)
 
template<typename T >
T * mpqc::detail::to_pointer (T *obj)
 
template<typename T >
auto mpqc::detail::to_pointer (T &obj) -> std::enable_if_t< utility::meta::is_shared_ptr< typename std::decay< T >::type >::value, decltype(obj.get())>
 
template<typename T >
std::enable_if_t< !utility::meta::is_shared_ptr< typename std::decay< T >::type >::value, typename std::decay< T >::type * > mpqc::detail::to_pointer (T &obj)
 
template<typename T >
std::string mpqc::detail::description (T *obj_ptr)
 obtains a description of the object pointer to by obj_ptr More...
 
template<typename Property , typename Object >
std::enable_if_t< detail::has_provider< Property >::value, typename Property::Provider * > mpqc::as_provider_of (Object *ptr)
 
template<typename Property , typename Object >
std::enable_if_t< detail::has_provider< Property >::value, typename Property::Provider * > mpqc::as_provider_of (const std::shared_ptr< Object > &ptr)
 
template<typename Property , typename Provider , typename... EvaluateArgs>
std::enable_if_t<(detail::has_provider< Property >::value &&!std::is_const< Property >::value), void > mpqc::evaluate (Property &property, Provider &provider, EvaluateArgs... eval_args)
 Evaluates property using provider. More...
 
template<typename Property , typename Provider >
std::enable_if_t< detail::has_provider< Property >::value, Property & > mpqc::operator<< (Property &property, Provider &provider)
 Evaluates property using provider. More...