diff --git a/source/RobotAPI/libraries/armem/core/wm/memory_definitions.h b/source/RobotAPI/libraries/armem/core/wm/memory_definitions.h index ae338328d4bf0bbf38a89e3d2d32e2fa247a187d..dcc82878286cf3387e0381ca21312f76bff89bcb 100644 --- a/source/RobotAPI/libraries/armem/core/wm/memory_definitions.h +++ b/source/RobotAPI/libraries/armem/core/wm/memory_definitions.h @@ -47,6 +47,32 @@ namespace armarx::armem::wm bool equalsDeep(const EntityInstance& other) const; }; + /** + * @brief Entity instance with a concrete ARON DTO type as data. + * + * This is the return type of EntityInstance::withDataAs<AronDtoT>(). + * + * Usage example: + * @code + * #include <RobotAPI/libraries/aron/common/aron/time.aron.generated.h> + * + * armarx::arondto::Duration duration; + * duration.microSeconds = 1000; + * + * armarx::armem::wm::EntityInstance instance; + * instance.data() = duration.toAron(); + * + * const armarx::armem::wm::EntityInstanceBase<armarx::arondto::Duration> cast = + * instance.withDataAs<armarx::arondto::Duration>(); + * + * const armarx::arondto::Duration& durationOut = cast.data(); + * + * assert(durationOut.microseconds == 1000); + * @endcode + */ + template <class AronDtoT> + using EntityInstanceBase = base::EntityInstanceBase<AronDtoT, EntityInstanceMetadata>; + /** * @brief Client-side working memory entity snapshot. * @see base::EntitySnapshotBase @@ -54,6 +80,7 @@ namespace armarx::armem::wm class EntitySnapshot : public base::EntitySnapshotBase<EntityInstance, EntitySnapshot>, public detail::FindInstanceDataMixinForSnapshot<EntitySnapshot> + { public: using base::EntitySnapshotBase<EntityInstance, EntitySnapshot>::EntitySnapshotBase;