SUNphi  1.0
RelBind.hpp File Reference

Defines a class which binds a component of a SmET w.r.t another. More...

Go to the source code of this file.

Classes

struct  SUNphi::BaseRelBinder
 
struct  SUNphi::ConstrainAreRelBinders< Args >
 
class  SUNphi::RelBinder< _BoundType, _BoundToType, _Ad, _Refs >
 
struct  SUNphi::_RelBindInternalChecks::Tc1
 
struct  SUNphi::_RelBindInternalChecks::Tc2
 

Namespaces

 SUNphi::_RelBindInternalChecks
 Internal checks.
 

Macros

#define REL_BIND_PROTOTYPE
 Define the prototype for relBind function. More...
 

Typedefs

template<typename T , typename Ret = void>
using SUNphi::EnableIfIsRelBinder = EnableIf< isRelBinder< T >,Ret >
 
template<typename T >
using SUNphi::ConstrainIsRelBinder = ConstrainIsBaseOf< BaseRelBinder,T >
 
template<typename T >
using SUNphi::ConstrainIsNotRelBinder = ConstrainIsNotBaseOf< BaseRelBinder,T >
 
using SUNphi::_RelBindInternalChecks::Tk = TensKind< Tc1, Tc2 >
 TensorKind of the expression.
 
using SUNphi::_RelBindInternalChecks::T = Tens< Tk, double >
 Tensor class of the expression.
 

Functions

template<typename _BoundType , typename _BoundToType , typename SMET , typename _Ad , typename... DummyTypes>
decltype(auto) SUNphi::relBind (SMET &&smet, _Ad adapter, DummyTypes...)
 
Conditional< 0, decltype(maybeUnused(NNTC1)), void > SUNphi::_RelBindInternalChecks::maybeUnusedFD ()
 
template<typename T >
decltype(auto) SUNphi::_RelBindInternalChecks::tc1 (T &&ref, const int id)
 
template<typename T >
decltype(auto) SUNphi::_RelBindInternalChecks::tc2 (T &&ref, const int id)
 
template<typename T >
SUNphi::_RelBindInternalChecks::wire (T t)
 Function returning the argument. More...
 

Variables

template<typename T >
constexpr bool SUNphi::isRelBinder = isBaseOf<BaseRelBinder ,T>
 
constexpr const int SUNphi::_RelBindInternalChecks::NNTC1 = 1
 
constexpr const int SUNphi::_RelBindInternalChecks::NNTC2 = 2
 

Detailed Description

Defines a class which binds a component of a SmET w.r.t another.

Definition in file RelBind.hpp.

Macro Definition Documentation

#define REL_BIND_PROTOTYPE
Value:
template <typename _BoundType, /* TensKind to bind */ \
typename _BoundToType, /* TensKind to which bind */ \
typename SMET, /* Type to bind, deduced from argument */ \
typename _Ad, /* Adapter of the bound component */ \
DECLAUTO relBind(SMET&& smet, \
_Ad adapter, \
#define SFINAE_WORSEN_DEFAULT_VERSION_TEMPLATE_PARS
Definition: SFINAE.hpp:58
#define SFINAE_WORSEN_DEFAULT_VERSION_ARGS
Provide empty list of args, used to unprioritize default version.
Definition: SFINAE.hpp:62
#define DECLAUTO
Short name for decltype(auto)
decltype(auto) relBind(SMET &&smet, _Ad adapter, DummyTypes...)
Definition: RelBind.hpp:222

Define the prototype for relBind function.

Definition at line 18 of file RelBind.hpp.

Typedef Documentation

template<typename T >
using SUNphi::ConstrainIsNotRelBinder = typedef ConstrainIsNotBaseOf<BaseRelBinder ,T>

Class forcing T not to inherits from BaseRelBinder

Definition at line 32 of file RelBind.hpp.

template<typename T >
using SUNphi::ConstrainIsRelBinder = typedef ConstrainIsBaseOf<BaseRelBinder ,T>

Class forcing T to inherits from BaseRelBinder

Definition at line 32 of file RelBind.hpp.

template<typename T , typename Ret = void>
using SUNphi::EnableIfIsRelBinder = typedef EnableIf< isRelBinder <T> ,Ret>

Provides the class itself if T is of the given type

Provides the class itself if T satisfies the condition

Definition at line 32 of file RelBind.hpp.

Function Documentation

template<typename _BoundType , typename _BoundToType , typename SMET , typename _Ad , typename... DummyTypes>
decltype(auto) SUNphi::relBind ( SMET &&  smet,
_Ad  adapter,
DummyTypes...   
)

Bind the component of type _BoundType to _BoundToType

Returns a relative binder getting from an unbind expression. Checks demanded to RelBinder

Check that the two components are not twinned of each other

Definition at line 222 of file RelBind.hpp.

Variable Documentation

template<typename T >
constexpr bool SUNphi::isRelBinder = isBaseOf<BaseRelBinder ,T>

Expression which is true if T inherits from BaseRelBinder

Definition at line 32 of file RelBind.hpp.