DART  6.6.2
dart::common::detail::EmbeddedPropertiesAspect< BaseT, DerivedT, PropertiesDataT, PropertiesT, setEmbeddedProperties, getEmbeddedProperties > Class Template Reference

#include <EmbeddedAspect.hpp>

Inheritance diagram for dart::common::detail::EmbeddedPropertiesAspect< BaseT, DerivedT, PropertiesDataT, PropertiesT, setEmbeddedProperties, getEmbeddedProperties >:

Classes

struct  ConvertIfProperties
 Used to identify constructor arguments that can be used as Properties. More...
 

Public Types

using Base = BaseT
 
using Derived = DerivedT
 
using Properties = PropertiesT
 
using PropertiesData = PropertiesDataT
 

Public Member Functions

 EmbeddedPropertiesAspect (const EmbeddedPropertiesAspect &)=delete
 
virtual ~EmbeddedPropertiesAspect ()=default
 
 EmbeddedPropertiesAspect ()
 Construct this Aspect without affecting the Properties. More...
 
template<typename T , typename... RemainingArgs>
 EmbeddedPropertiesAspect (const T &arg1, RemainingArgs &&... remainingArgs)
 Construct this Aspect. More...
 
void setAspectProperties (const Aspect::Properties &properties) override final
 
void setProperties (const Properties &properties)
 
const Aspect::PropertiesgetAspectProperties () const override final
 
const PropertiesgetProperties () const
 
std::unique_ptr< AspectcloneAspect () const override
 

Static Public Attributes

constexpr static void(* SetEmbeddedProperties )(Derived *, const Properties &) = setEmbeddedProperties
 
constexpr static const Properties &(* GetEmbeddedProperties )(const Derived *) = getEmbeddedProperties
 

Protected Types

enum  DelegateTag { Delegate }
 

Protected Member Functions

template<typename... RemainingArgs>
 EmbeddedPropertiesAspect (DelegateTag, const PropertiesData &properties, RemainingArgs &&... remainingArgs)
 Construct this Aspect using the PropertiesData, and pass the remaining arguments into the constructor of the Base class. More...
 
template<typename... BaseArgs>
 EmbeddedPropertiesAspect (DelegateTag, BaseArgs &&... args)
 Construct this Aspect without affecting the Properties, and pass all the arguments into the constructor of the Base class. More...
 
void setComposite (Composite *newComposite) override
 Pass the temporary Properties of this Aspect into the new Composite. More...
 
void loseComposite (Composite *oldComposite) override
 Save the embedded Properties of this Composite before we remove the Aspect. More...
 

Protected Attributes

std::unique_ptr< PropertiesmTemporaryProperties
 After this Aspect is constructed and during transitions between Composite objects, this will hold the Properties of the Aspect. More...
 

Member Typedef Documentation

◆ Base

template<class BaseT , class DerivedT , typename PropertiesDataT , typename PropertiesT = common::Aspect::MakeProperties<PropertiesDataT>, void(*)(DerivedT *, const PropertiesT &) setEmbeddedProperties = &DefaultSetEmbeddedProperties<DerivedT, PropertiesT>, const PropertiesT &(*)(const DerivedT *) getEmbeddedProperties = &DefaultGetEmbeddedProperties<DerivedT, PropertiesT>>
using dart::common::detail::EmbeddedPropertiesAspect< BaseT, DerivedT, PropertiesDataT, PropertiesT, setEmbeddedProperties, getEmbeddedProperties >::Base = BaseT

◆ Derived

template<class BaseT , class DerivedT , typename PropertiesDataT , typename PropertiesT = common::Aspect::MakeProperties<PropertiesDataT>, void(*)(DerivedT *, const PropertiesT &) setEmbeddedProperties = &DefaultSetEmbeddedProperties<DerivedT, PropertiesT>, const PropertiesT &(*)(const DerivedT *) getEmbeddedProperties = &DefaultGetEmbeddedProperties<DerivedT, PropertiesT>>
using dart::common::detail::EmbeddedPropertiesAspect< BaseT, DerivedT, PropertiesDataT, PropertiesT, setEmbeddedProperties, getEmbeddedProperties >::Derived = DerivedT

◆ Properties

template<class BaseT , class DerivedT , typename PropertiesDataT , typename PropertiesT = common::Aspect::MakeProperties<PropertiesDataT>, void(*)(DerivedT *, const PropertiesT &) setEmbeddedProperties = &DefaultSetEmbeddedProperties<DerivedT, PropertiesT>, const PropertiesT &(*)(const DerivedT *) getEmbeddedProperties = &DefaultGetEmbeddedProperties<DerivedT, PropertiesT>>
using dart::common::detail::EmbeddedPropertiesAspect< BaseT, DerivedT, PropertiesDataT, PropertiesT, setEmbeddedProperties, getEmbeddedProperties >::Properties = PropertiesT

◆ PropertiesData

template<class BaseT , class DerivedT , typename PropertiesDataT , typename PropertiesT = common::Aspect::MakeProperties<PropertiesDataT>, void(*)(DerivedT *, const PropertiesT &) setEmbeddedProperties = &DefaultSetEmbeddedProperties<DerivedT, PropertiesT>, const PropertiesT &(*)(const DerivedT *) getEmbeddedProperties = &DefaultGetEmbeddedProperties<DerivedT, PropertiesT>>
using dart::common::detail::EmbeddedPropertiesAspect< BaseT, DerivedT, PropertiesDataT, PropertiesT, setEmbeddedProperties, getEmbeddedProperties >::PropertiesData = PropertiesDataT

Member Enumeration Documentation

◆ DelegateTag

template<class BaseT , class DerivedT , typename PropertiesDataT , typename PropertiesT = common::Aspect::MakeProperties<PropertiesDataT>, void(*)(DerivedT *, const PropertiesT &) setEmbeddedProperties = &DefaultSetEmbeddedProperties<DerivedT, PropertiesT>, const PropertiesT &(*)(const DerivedT *) getEmbeddedProperties = &DefaultGetEmbeddedProperties<DerivedT, PropertiesT>>
enum dart::common::detail::EmbeddedPropertiesAspect::DelegateTag
protected
Enumerator
Delegate 

Constructor & Destructor Documentation

◆ EmbeddedPropertiesAspect() [1/5]

template<class BaseT , class DerivedT , typename PropertiesDataT , typename PropertiesT = common::Aspect::MakeProperties<PropertiesDataT>, void(*)(DerivedT *, const PropertiesT &) setEmbeddedProperties = &DefaultSetEmbeddedProperties<DerivedT, PropertiesT>, const PropertiesT &(*)(const DerivedT *) getEmbeddedProperties = &DefaultGetEmbeddedProperties<DerivedT, PropertiesT>>
dart::common::detail::EmbeddedPropertiesAspect< BaseT, DerivedT, PropertiesDataT, PropertiesT, setEmbeddedProperties, getEmbeddedProperties >::EmbeddedPropertiesAspect ( const EmbeddedPropertiesAspect< BaseT, DerivedT, PropertiesDataT, PropertiesT, setEmbeddedProperties, getEmbeddedProperties > &  )
delete

◆ ~EmbeddedPropertiesAspect()

template<class BaseT , class DerivedT , typename PropertiesDataT , typename PropertiesT = common::Aspect::MakeProperties<PropertiesDataT>, void(*)(DerivedT *, const PropertiesT &) setEmbeddedProperties = &DefaultSetEmbeddedProperties<DerivedT, PropertiesT>, const PropertiesT &(*)(const DerivedT *) getEmbeddedProperties = &DefaultGetEmbeddedProperties<DerivedT, PropertiesT>>
virtual dart::common::detail::EmbeddedPropertiesAspect< BaseT, DerivedT, PropertiesDataT, PropertiesT, setEmbeddedProperties, getEmbeddedProperties >::~EmbeddedPropertiesAspect ( )
virtualdefault

◆ EmbeddedPropertiesAspect() [2/5]

template<class BaseT , class DerivedT , typename PropertiesDataT , typename PropertiesT = common::Aspect::MakeProperties<PropertiesDataT>, void(*)(DerivedT *, const PropertiesT &) setEmbeddedProperties = &DefaultSetEmbeddedProperties<DerivedT, PropertiesT>, const PropertiesT &(*)(const DerivedT *) getEmbeddedProperties = &DefaultGetEmbeddedProperties<DerivedT, PropertiesT>>
dart::common::detail::EmbeddedPropertiesAspect< BaseT, DerivedT, PropertiesDataT, PropertiesT, setEmbeddedProperties, getEmbeddedProperties >::EmbeddedPropertiesAspect ( )
inline

Construct this Aspect without affecting the Properties.

◆ EmbeddedPropertiesAspect() [3/5]

template<class BaseT , class DerivedT , typename PropertiesDataT , typename PropertiesT = common::Aspect::MakeProperties<PropertiesDataT>, void(*)(DerivedT *, const PropertiesT &) setEmbeddedProperties = &DefaultSetEmbeddedProperties<DerivedT, PropertiesT>, const PropertiesT &(*)(const DerivedT *) getEmbeddedProperties = &DefaultGetEmbeddedProperties<DerivedT, PropertiesT>>
template<typename T , typename... RemainingArgs>
dart::common::detail::EmbeddedPropertiesAspect< BaseT, DerivedT, PropertiesDataT, PropertiesT, setEmbeddedProperties, getEmbeddedProperties >::EmbeddedPropertiesAspect ( const T &  arg1,
RemainingArgs &&...  remainingArgs 
)
inline

Construct this Aspect.

If the first argument contains PropertiesData, then it will be used by this Aspect. Otherwise, all arguments will be forwarded to the Base class.

◆ EmbeddedPropertiesAspect() [4/5]

template<class BaseT , class DerivedT , typename PropertiesDataT , typename PropertiesT = common::Aspect::MakeProperties<PropertiesDataT>, void(*)(DerivedT *, const PropertiesT &) setEmbeddedProperties = &DefaultSetEmbeddedProperties<DerivedT, PropertiesT>, const PropertiesT &(*)(const DerivedT *) getEmbeddedProperties = &DefaultGetEmbeddedProperties<DerivedT, PropertiesT>>
template<typename... RemainingArgs>
dart::common::detail::EmbeddedPropertiesAspect< BaseT, DerivedT, PropertiesDataT, PropertiesT, setEmbeddedProperties, getEmbeddedProperties >::EmbeddedPropertiesAspect ( DelegateTag  ,
const PropertiesData properties,
RemainingArgs &&...  remainingArgs 
)
inlineprotected

Construct this Aspect using the PropertiesData, and pass the remaining arguments into the constructor of the Base class.

◆ EmbeddedPropertiesAspect() [5/5]

template<class BaseT , class DerivedT , typename PropertiesDataT , typename PropertiesT = common::Aspect::MakeProperties<PropertiesDataT>, void(*)(DerivedT *, const PropertiesT &) setEmbeddedProperties = &DefaultSetEmbeddedProperties<DerivedT, PropertiesT>, const PropertiesT &(*)(const DerivedT *) getEmbeddedProperties = &DefaultGetEmbeddedProperties<DerivedT, PropertiesT>>
template<typename... BaseArgs>
dart::common::detail::EmbeddedPropertiesAspect< BaseT, DerivedT, PropertiesDataT, PropertiesT, setEmbeddedProperties, getEmbeddedProperties >::EmbeddedPropertiesAspect ( DelegateTag  ,
BaseArgs &&...  args 
)
inlineprotected

Construct this Aspect without affecting the Properties, and pass all the arguments into the constructor of the Base class.

Member Function Documentation

◆ cloneAspect()

template<class BaseT , class DerivedT , typename PropertiesDataT , typename PropertiesT = common::Aspect::MakeProperties<PropertiesDataT>, void(*)(DerivedT *, const PropertiesT &) setEmbeddedProperties = &DefaultSetEmbeddedProperties<DerivedT, PropertiesT>, const PropertiesT &(*)(const DerivedT *) getEmbeddedProperties = &DefaultGetEmbeddedProperties<DerivedT, PropertiesT>>
std::unique_ptr<Aspect> dart::common::detail::EmbeddedPropertiesAspect< BaseT, DerivedT, PropertiesDataT, PropertiesT, setEmbeddedProperties, getEmbeddedProperties >::cloneAspect ( ) const
inlineoverride

◆ getAspectProperties()

template<class BaseT , class DerivedT , typename PropertiesDataT , typename PropertiesT = common::Aspect::MakeProperties<PropertiesDataT>, void(*)(DerivedT *, const PropertiesT &) setEmbeddedProperties = &DefaultSetEmbeddedProperties<DerivedT, PropertiesT>, const PropertiesT &(*)(const DerivedT *) getEmbeddedProperties = &DefaultGetEmbeddedProperties<DerivedT, PropertiesT>>
const Aspect::Properties* dart::common::detail::EmbeddedPropertiesAspect< BaseT, DerivedT, PropertiesDataT, PropertiesT, setEmbeddedProperties, getEmbeddedProperties >::getAspectProperties ( ) const
inlinefinaloverride

◆ getProperties()

template<class BaseT , class DerivedT , typename PropertiesDataT , typename PropertiesT = common::Aspect::MakeProperties<PropertiesDataT>, void(*)(DerivedT *, const PropertiesT &) setEmbeddedProperties = &DefaultSetEmbeddedProperties<DerivedT, PropertiesT>, const PropertiesT &(*)(const DerivedT *) getEmbeddedProperties = &DefaultGetEmbeddedProperties<DerivedT, PropertiesT>>
const Properties& dart::common::detail::EmbeddedPropertiesAspect< BaseT, DerivedT, PropertiesDataT, PropertiesT, setEmbeddedProperties, getEmbeddedProperties >::getProperties ( ) const
inline

◆ loseComposite()

template<class BaseT , class DerivedT , typename PropertiesDataT , typename PropertiesT = common::Aspect::MakeProperties<PropertiesDataT>, void(*)(DerivedT *, const PropertiesT &) setEmbeddedProperties = &DefaultSetEmbeddedProperties<DerivedT, PropertiesT>, const PropertiesT &(*)(const DerivedT *) getEmbeddedProperties = &DefaultGetEmbeddedProperties<DerivedT, PropertiesT>>
void dart::common::detail::EmbeddedPropertiesAspect< BaseT, DerivedT, PropertiesDataT, PropertiesT, setEmbeddedProperties, getEmbeddedProperties >::loseComposite ( Composite oldComposite)
inlineoverrideprotected

Save the embedded Properties of this Composite before we remove the Aspect.

◆ setAspectProperties()

template<class BaseT , class DerivedT , typename PropertiesDataT , typename PropertiesT = common::Aspect::MakeProperties<PropertiesDataT>, void(*)(DerivedT *, const PropertiesT &) setEmbeddedProperties = &DefaultSetEmbeddedProperties<DerivedT, PropertiesT>, const PropertiesT &(*)(const DerivedT *) getEmbeddedProperties = &DefaultGetEmbeddedProperties<DerivedT, PropertiesT>>
void dart::common::detail::EmbeddedPropertiesAspect< BaseT, DerivedT, PropertiesDataT, PropertiesT, setEmbeddedProperties, getEmbeddedProperties >::setAspectProperties ( const Aspect::Properties properties)
inlinefinaloverride

◆ setComposite()

template<class BaseT , class DerivedT , typename PropertiesDataT , typename PropertiesT = common::Aspect::MakeProperties<PropertiesDataT>, void(*)(DerivedT *, const PropertiesT &) setEmbeddedProperties = &DefaultSetEmbeddedProperties<DerivedT, PropertiesT>, const PropertiesT &(*)(const DerivedT *) getEmbeddedProperties = &DefaultGetEmbeddedProperties<DerivedT, PropertiesT>>
void dart::common::detail::EmbeddedPropertiesAspect< BaseT, DerivedT, PropertiesDataT, PropertiesT, setEmbeddedProperties, getEmbeddedProperties >::setComposite ( Composite newComposite)
inlineoverrideprotected

Pass the temporary Properties of this Aspect into the new Composite.

◆ setProperties()

template<class BaseT , class DerivedT , typename PropertiesDataT , typename PropertiesT = common::Aspect::MakeProperties<PropertiesDataT>, void(*)(DerivedT *, const PropertiesT &) setEmbeddedProperties = &DefaultSetEmbeddedProperties<DerivedT, PropertiesT>, const PropertiesT &(*)(const DerivedT *) getEmbeddedProperties = &DefaultGetEmbeddedProperties<DerivedT, PropertiesT>>
void dart::common::detail::EmbeddedPropertiesAspect< BaseT, DerivedT, PropertiesDataT, PropertiesT, setEmbeddedProperties, getEmbeddedProperties >::setProperties ( const Properties properties)
inline

Member Data Documentation

◆ GetEmbeddedProperties

template<class BaseT , class DerivedT , typename PropertiesDataT , typename PropertiesT = common::Aspect::MakeProperties<PropertiesDataT>, void(*)(DerivedT *, const PropertiesT &) setEmbeddedProperties = &DefaultSetEmbeddedProperties<DerivedT, PropertiesT>, const PropertiesT &(*)(const DerivedT *) getEmbeddedProperties = &DefaultGetEmbeddedProperties<DerivedT, PropertiesT>>
constexpr static const Properties&(* dart::common::detail::EmbeddedPropertiesAspect< BaseT, DerivedT, PropertiesDataT, PropertiesT, setEmbeddedProperties, getEmbeddedProperties >::GetEmbeddedProperties) (const Derived *) = getEmbeddedProperties
staticconstexpr

◆ mTemporaryProperties

template<class BaseT , class DerivedT , typename PropertiesDataT , typename PropertiesT = common::Aspect::MakeProperties<PropertiesDataT>, void(*)(DerivedT *, const PropertiesT &) setEmbeddedProperties = &DefaultSetEmbeddedProperties<DerivedT, PropertiesT>, const PropertiesT &(*)(const DerivedT *) getEmbeddedProperties = &DefaultGetEmbeddedProperties<DerivedT, PropertiesT>>
std::unique_ptr<Properties> dart::common::detail::EmbeddedPropertiesAspect< BaseT, DerivedT, PropertiesDataT, PropertiesT, setEmbeddedProperties, getEmbeddedProperties >::mTemporaryProperties
protected

After this Aspect is constructed and during transitions between Composite objects, this will hold the Properties of the Aspect.

Once the Aspect has been moved into a new Composite, these Properties will be pushed into the Composite and cleared.

◆ SetEmbeddedProperties

template<class BaseT , class DerivedT , typename PropertiesDataT , typename PropertiesT = common::Aspect::MakeProperties<PropertiesDataT>, void(*)(DerivedT *, const PropertiesT &) setEmbeddedProperties = &DefaultSetEmbeddedProperties<DerivedT, PropertiesT>, const PropertiesT &(*)(const DerivedT *) getEmbeddedProperties = &DefaultGetEmbeddedProperties<DerivedT, PropertiesT>>
constexpr static void(* dart::common::detail::EmbeddedPropertiesAspect< BaseT, DerivedT, PropertiesDataT, PropertiesT, setEmbeddedProperties, getEmbeddedProperties >::SetEmbeddedProperties) (Derived *, const Properties &) = setEmbeddedProperties
staticconstexpr