33 #ifndef DART_COMMON_ASPECTWITHVERSION_HPP_ 34 #define DART_COMMON_ASPECTWITHVERSION_HPP_ 36 #include "dart/common/detail/AspectWithVersion.hpp" 45 class CompositeT = Composite,
46 void (*updateState)(DerivedT*) = &detail::NoOp<DerivedT*> >
47 using AspectWithState = detail::AspectWithState<
48 CompositeTrackingAspect<CompositeT>,
57 typename PropertiesDataT,
58 class CompositeT = Composite,
59 void (*updateProperties)(DerivedT*) = &detail::NoOp<DerivedT*> >
60 using AspectWithVersionedProperties = detail::AspectWithVersionedProperties<
61 CompositeTrackingAspect<CompositeT>,
71 typename PropertiesDataT,
72 class CompositeT = Composite,
73 void (*updateState)(DerivedT*) = &detail::NoOp<DerivedT*>,
74 void (*updateProperties)(DerivedT*) = updateState>
84 using Derived = DerivedT;
85 using StateData = StateDataT;
86 using PropertiesData = PropertiesDataT;
87 using CompositeType = CompositeT;
90 constexpr
static void (*UpdateState)(Derived*) = updateState;
91 constexpr
static void (*UpdateProperties)(Derived*) = updateProperties;
117 const StateData& state = StateData(),
118 const PropertiesData& properties = PropertiesData())
126 const PropertiesData& properties,
const StateData& state = StateData())
133 std::unique_ptr<Aspect> cloneAspect()
const override 135 return std::make_unique<Derived>(this->getState(), this->getProperties());
149 typename PropertiesDataT,
151 void (*updateState)(DerivedT*),
152 void (*updateProperties)(DerivedT*)>
159 updateProperties>::UpdateState)(DerivedT*);
165 typename PropertiesDataT,
167 void (*updateState)(DerivedT*),
168 void (*updateProperties)(DerivedT*)>
175 updateProperties>::UpdateProperties)(DerivedT*);
180 #endif // DART_COMMON_ASPECTWITHVERSION_HPP_ The MakeCloneable class is used to easily create an Cloneable (such as Node::State) which simply take...
Definition: Cloneable.hpp:83
Definition: Aspect.cpp:40
Definition: AspectWithVersion.hpp:75
AspectWithProtectedProperties generates implementations of the Property managing functions for an Asp...
Definition: AspectWithVersion.hpp:108
AspectWithStateAndVersionedProperties(const PropertiesData &properties, const StateData &state=StateData())
Construct using a PropertiesData and a StateData instance.
Definition: AspectWithVersion.hpp:125
AspectWithProtectedState generates implementations of the State managing functions for an Aspect clas...
Definition: AspectWithVersion.hpp:53
AspectWithStateAndVersionedProperties(const StateData &state=StateData(), const PropertiesData &properties=PropertiesData())
Construct using a StateData and a PropertiesData instance.
Definition: AspectWithVersion.hpp:116