EntityBase< _EntitySnapshotT, _Derived > Class Template Reference

An entity over a period of time. More...

#include <RobotAPI/libraries/armem/core/base/EntityBase.h>

+ Inheritance diagram for EntityBase< _EntitySnapshotT, _Derived >:

Classes

struct  UpdateResult
 

Public Types

using ChildT = EntitySnapshotT
 
using EntityInstanceT = typename EntitySnapshotT::EntityInstanceT
 
using EntitySnapshotT = _EntitySnapshotT
 
- Public Types inherited from MemoryContainerBase< std::map< Time, _EntitySnapshotT >, _Derived >
using ContainerT = std::map< Time, _EntitySnapshotT >
 
using DerivedT = _Derived
 

Public Member Functions

EntitySnapshotTaddSnapshot (const EntitySnapshotT &snapshot)
 Copy and insert a snapshot. More...
 
EntitySnapshotTaddSnapshot (const Time &timestamp)
 Add a snapshot at the given time. More...
 
template<class... Args>
EntitySnapshotTaddSnapshot (const Time &timestamp, Args... args)
 Insert a snapshot in-place. More...
 
EntitySnapshotTaddSnapshot (EntitySnapshotT &&snapshot)
 Move and insert a snapshot. More...
 
template<class OtherDerivedT >
void append (const OtherDerivedT &other)
 
 EntityBase ()
 
 EntityBase (const EntityBase &other)=default
 
 EntityBase (const MemoryID &id)
 
 EntityBase (const std::string &name, const MemoryID &parentID={})
 
 EntityBase (EntityBase &&other)=default
 
bool equalsDeep (const DerivedT &other) const
 
EntitySnapshotTfindFirstSnapshot ()
 Return the snapshot with the least recent timestamp. More...
 
const EntitySnapshotTfindFirstSnapshot () const
 
const EntitySnapshotTfindFirstSnapshotAfter (const Time &time) const
 Return first snapshot after time. More...
 
const EntitySnapshotTfindFirstSnapshotAfterOrAt (const Time &time) const
 Return first snapshot after or at time. More...
 
auto * findLatestInstance (int instanceIndex=0)
 
const auto * findLatestInstance (int instanceIndex=0) const
 
EntitySnapshotTfindLatestSnapshot ()
 Return the snapshot with the most recent timestamp. More...
 
const EntitySnapshotTfindLatestSnapshot () const
 
const EntitySnapshotTfindLatestSnapshotBefore (const Time &time) const
 Return the lastest snapshot before time. More...
 
const EntitySnapshotTfindLatestSnapshotBeforeOrAt (const Time &time) const
 Return the latest snapshot before or at time. More...
 
EntitySnapshotTfindSnapshot (const MemoryID &snapshotID)
 
const EntitySnapshotTfindSnapshot (const MemoryID &snapshotID) const
 
EntitySnapshotTfindSnapshot (const Time &timestamp)
 
const EntitySnapshotTfindSnapshot (const Time &timestamp) const
 
template<class InstanceFunctionT >
bool forEachInstanceIn (const MemoryID &id, InstanceFunctionT &&func)
 
template<class InstanceFunctionT >
bool forEachInstanceIn (const MemoryID &id, InstanceFunctionT &&func) const
 
template<class SnapshotFunctionT >
bool forEachSnapshot (SnapshotFunctionT &&func)
 
template<class SnapshotFunctionT >
bool forEachSnapshot (SnapshotFunctionT &&func) const
 
template<class FunctionT >
void forEachSnapshotBefore (const Time &time, FunctionT &&func) const
 Return all snapshots before (excluding) time. More...
 
template<class FunctionT >
void forEachSnapshotBeforeOrAt (const Time &time, FunctionT &&func) const
 Return all snapshots before or at time. More...
 
template<class SnapshotFunctionT >
bool forEachSnapshotIn (const MemoryID &id, SnapshotFunctionT &&func)
 
template<class SnapshotFunctionT >
bool forEachSnapshotIn (const MemoryID &id, SnapshotFunctionT &&func) const
 
template<class FunctionT >
void forEachSnapshotInIndexRange (long first, long last, FunctionT &&func) const
 Return all snapshots from first to last index. More...
 
template<class FunctionT >
void forEachSnapshotInTimeRange (const Time &min, const Time &max, FunctionT &&func) const
 Return all snapshots between, including, min and max. More...
 
EntitySnapshotTgetFirstSnapshot ()
 Return the snapshot with the least recent timestamp. More...
 
const EntitySnapshotTgetFirstSnapshot () const
 
Time getFirstTimestamp () const
 Get the oldest timestamp. More...
 
std::string getKeyString () const
 
Time getLatestTimestamp () const
 Get the latest timestamp. More...
 
EntitySnapshotTgetSnapshot (const MemoryID &snapshotID)
 
const EntitySnapshotTgetSnapshot (const MemoryID &snapshotID) const
 
EntitySnapshotTgetSnapshot (const Time &time)
 Get a snapshot. More...
 
const EntitySnapshotTgetSnapshot (const Time &time) const
 
std::vector< TimegetTimestamps () const
 Get all timestamps in the history. More...
 
bool hasSnapshot (const MemoryID &snapshotID) const
 Indicate whether a snapshot with the given ID exists. More...
 
bool hasSnapshot (const Time &time) const
 Indicate whether a snapshot at the given time exists. More...
 
bool hasSnapshots () const
 Indicate whether the entity has any snapshots. More...
 
std::string & name ()
 
const std::string & name () const
 
EntityBaseoperator= (const EntityBase &other)=default
 
EntityBaseoperator= (EntityBase &&other)=default
 
UpdateResult update (const EntityUpdate &update)
 Add the given update to this entity's history. More...
 
- Public Member Functions inherited from MemoryContainerBase< std::map< Time, _EntitySnapshotT >, _Derived >
ContainerT::iterator begin ()
 
ContainerT::const_iterator begin () const
 
void clear ()
 
bool empty () const
 
ContainerT::iterator end ()
 
ContainerT::const_iterator end () const
 
bool forEachChild (ChildFunctionT &&func)
 
bool forEachChild (ChildFunctionT &&func) const
 
 MemoryContainerBase ()
 
 MemoryContainerBase (const MemoryContainerBase &other)=default
 
 MemoryContainerBase (const MemoryID &id)
 
 MemoryContainerBase (MemoryContainerBase &&other)=default
 
MemoryContainerBaseoperator= (const MemoryContainerBase &other)=default
 
MemoryContainerBaseoperator= (MemoryContainerBase &&other)=default
 
std::size_t size () const
 
- Public Member Functions inherited from MemoryItem
MemoryIDid ()
 
const MemoryIDid () const
 
 MemoryItem ()
 
 MemoryItem (const MemoryID &id)
 
 MemoryItem (const MemoryItem &other)=default
 
 MemoryItem (MemoryItem &&other)=default
 
MemoryItemoperator= (const MemoryItem &other)=default
 
MemoryItemoperator= (MemoryItem &&other)=default
 
- Public Member Functions inherited from ForEachEntityInstanceMixin< _Derived >
bool forEachInstance (InstanceFunctionT &&func)
 
bool forEachInstance (InstanceFunctionT &&func) const
 
bool forEachInstanceAs (AronDtoFunctionT &&func) const
 Call func on the data of each instance converted to Aron DTO class. More...
 
bool forEachInstanceWithDataAs (EntityInstanceBaseAronDtoFunctionT &&func) const
 Call func on each instance with its data converted to Aron DTO class. More...
 
- Public Member Functions inherited from GetFindInstanceMixin< _Derived >
auto * findInstance (const MemoryID &instanceID)
 Find an entity instance. More...
 
const auto * findInstance (const MemoryID &instanceID) const
 
auto & getInstance (const MemoryID &instanceID)
 Retrieve an entity instance. More...
 
const auto & getInstance (const MemoryID &instanceID) const
 
bool hasInstance (const MemoryID &instanceID) const
 Indicate whether this container has an instance with the given ID. More...
 
bool hasInstances () const
 Indicate whether this container contains at least one entity instance. More...
 
- Public Member Functions inherited from GetLatestInstanceMixin< _Derived >
auto & getLatestInstance (int instanceIndex=0)
 Retrieve the latest entity instance. More...
 
const auto & getLatestInstance (int instanceIndex=0) const
 
- Public Member Functions inherited from GetLatestSnapshotMixin< _Derived >
auto & getLatestSnapshot (int snapshotIndex=0)
 Retrieve the latest entity snapshot. More...
 
const auto & getLatestSnapshot (int snapshotIndex=0) const
 

Static Public Member Functions

static std::string getLevelName ()
 

Additional Inherited Members

- Protected Member Functions inherited from MemoryContainerBase< std::map< Time, _EntitySnapshotT >, _Derived >
ChildT & _addChild (const KeyT &key, ChildArgs... childArgs)
 
void _checkContainerName (const std::string &gottenName, const std::string &actualName, bool emptyOk=true) const
 
DerivedT_derived ()
 
const DerivedT_derived () const
 
ContainerTcontainer ()
 
const ContainerTcontainer () const
 
- Protected Member Functions inherited from MemoryItem
 ~MemoryItem ()
 
- Protected Attributes inherited from MemoryContainerBase< std::map< Time, _EntitySnapshotT >, _Derived >
ContainerT _container
 
- Protected Attributes inherited from MemoryItem
MemoryID _id
 

Detailed Description

template<class _EntitySnapshotT, class _Derived>
class armarx::armem::base::EntityBase< _EntitySnapshotT, _Derived >

An entity over a period of time.

An entity should be a physical thing or abstract concept existing (and potentially evolving) over time.

Examples are:

  • objects (the green box)
  • agents (robot, human)
  • locations (frige, sink)
  • grasp affordances (general, or for a specific object)
  • images
  • point clouds
  • other sensory values

At each point in time (EntitySnapshot), the entity can have a (potentially variable) number of instances (EntityInstance), each containing a single AronData object of a specific AronType.

Definition at line 43 of file EntityBase.h.

Member Typedef Documentation

◆ ChildT

Definition at line 59 of file EntityBase.h.

◆ EntityInstanceT

using EntityInstanceT = typename EntitySnapshotT::EntityInstanceT

Definition at line 57 of file EntityBase.h.

◆ EntitySnapshotT

using EntitySnapshotT = _EntitySnapshotT

Definition at line 56 of file EntityBase.h.

Constructor & Destructor Documentation

◆ EntityBase() [1/5]

EntityBase ( )
inline

Definition at line 71 of file EntityBase.h.

◆ EntityBase() [2/5]

EntityBase ( const std::string &  name,
const MemoryID parentID = {} 
)
inlineexplicit

Definition at line 75 of file EntityBase.h.

◆ EntityBase() [3/5]

EntityBase ( const MemoryID id)
inlineexplicit

Definition at line 80 of file EntityBase.h.

◆ EntityBase() [4/5]

EntityBase ( const EntityBase< _EntitySnapshotT, _Derived > &  other)
default

◆ EntityBase() [5/5]

EntityBase ( EntityBase< _EntitySnapshotT, _Derived > &&  other)
default

Member Function Documentation

◆ addSnapshot() [1/4]

EntitySnapshotT& addSnapshot ( const EntitySnapshotT snapshot)
inline

Copy and insert a snapshot.

Definition at line 636 of file EntityBase.h.

◆ addSnapshot() [2/4]

EntitySnapshotT& addSnapshot ( const Time timestamp)
inline

Add a snapshot at the given time.

Definition at line 629 of file EntityBase.h.

+ Here is the caller graph for this function:

◆ addSnapshot() [3/4]

EntitySnapshotT& addSnapshot ( const Time timestamp,
Args...  args 
)
inline

Insert a snapshot in-place.

Definition at line 652 of file EntityBase.h.

◆ addSnapshot() [4/4]

EntitySnapshotT& addSnapshot ( EntitySnapshotT &&  snapshot)
inline

Move and insert a snapshot.

Definition at line 643 of file EntityBase.h.

◆ append()

void append ( const OtherDerivedT &  other)
inline

Definition at line 608 of file EntityBase.h.

◆ equalsDeep()

bool equalsDeep ( const DerivedT other) const
inline

Definition at line 662 of file EntityBase.h.

◆ findFirstSnapshot() [1/2]

EntitySnapshotT* findFirstSnapshot ( )
inline

Return the snapshot with the least recent timestamp.

Returns
The first snapshot or nullptr if the entity is empty.

Definition at line 244 of file EntityBase.h.

+ Here is the caller graph for this function:

◆ findFirstSnapshot() [2/2]

const EntitySnapshotT* findFirstSnapshot ( ) const
inline

Definition at line 250 of file EntityBase.h.

◆ findFirstSnapshotAfter()

const EntitySnapshotT* findFirstSnapshotAfter ( const Time time) const
inline

Return first snapshot after time.

Parameters
timeThe time.
Returns
The first snapshot >= time or nullptr if none was found.

Definition at line 349 of file EntityBase.h.

+ Here is the caller graph for this function:

◆ findFirstSnapshotAfterOrAt()

const EntitySnapshotT* findFirstSnapshotAfterOrAt ( const Time time) const
inline

Return first snapshot after or at time.

Parameters
timeThe time.
Returns
The first snapshot >= time or nullptr if none was found.

Definition at line 330 of file EntityBase.h.

◆ findLatestInstance() [1/2]

auto* findLatestInstance ( int  instanceIndex = 0)
inline

Definition at line 355 of file EntityBase.h.

+ Here is the caller graph for this function:

◆ findLatestInstance() [2/2]

const auto* findLatestInstance ( int  instanceIndex = 0) const
inline

Definition at line 362 of file EntityBase.h.

◆ findLatestSnapshot() [1/2]

EntitySnapshotT* findLatestSnapshot ( )
inline

Return the snapshot with the most recent timestamp.

Returns
The latest snapshot or nullptr if the entity is empty.

Definition at line 228 of file EntityBase.h.

+ Here is the caller graph for this function:

◆ findLatestSnapshot() [2/2]

const EntitySnapshotT* findLatestSnapshot ( ) const
inline

Definition at line 234 of file EntityBase.h.

◆ findLatestSnapshotBefore()

const EntitySnapshotT* findLatestSnapshotBefore ( const Time time) const
inline

Return the lastest snapshot before time.

Parameters
timeThe time.
Returns
The latest snapshot < time or nullptr if none was found.

Definition at line 286 of file EntityBase.h.

+ Here is the caller graph for this function:

◆ findLatestSnapshotBeforeOrAt()

const EntitySnapshotT* findLatestSnapshotBeforeOrAt ( const Time time) const
inline

Return the latest snapshot before or at time.

Parameters
timeThe time.
Returns
The latest snapshot <= time or nullptr if none was found.

Definition at line 319 of file EntityBase.h.

+ Here is the caller graph for this function:

◆ findSnapshot() [1/4]

EntitySnapshotT* findSnapshot ( const MemoryID snapshotID)
inline

Definition at line 170 of file EntityBase.h.

◆ findSnapshot() [2/4]

const EntitySnapshotT* findSnapshot ( const MemoryID snapshotID) const
inline

Definition at line 177 of file EntityBase.h.

◆ findSnapshot() [3/4]

EntitySnapshotT* findSnapshot ( const Time timestamp)
inline

Definition at line 129 of file EntityBase.h.

+ Here is the caller graph for this function:

◆ findSnapshot() [4/4]

const EntitySnapshotT* findSnapshot ( const Time timestamp) const
inline

Definition at line 135 of file EntityBase.h.

◆ forEachInstanceIn() [1/2]

bool forEachInstanceIn ( const MemoryID id,
InstanceFunctionT &&  func 
)
inline
Parameters
funcFunction like void process(EntityInstanceT& instance)>

Definition at line 538 of file EntityBase.h.

◆ forEachInstanceIn() [2/2]

bool forEachInstanceIn ( const MemoryID id,
InstanceFunctionT &&  func 
) const
inline
Parameters
funcFunction like void process(EntityInstanceT& instance)>

Definition at line 553 of file EntityBase.h.

◆ forEachSnapshot() [1/2]

bool forEachSnapshot ( SnapshotFunctionT &&  func)
inline
Parameters
funcFunction like: bool process(EntitySnapshotT& snapshot)

Definition at line 390 of file EntityBase.h.

+ Here is the caller graph for this function:

◆ forEachSnapshot() [2/2]

bool forEachSnapshot ( SnapshotFunctionT &&  func) const
inline
Parameters
funcFunction like void process(const EntitySnapshotT& snapshot)

Definition at line 400 of file EntityBase.h.

◆ forEachSnapshotBefore()

void forEachSnapshotBefore ( const Time time,
FunctionT &&  func 
) const
inline

Return all snapshots before (excluding) time.

Parameters
timeThe time.
Returns
The latest snapshots.

Definition at line 442 of file EntityBase.h.

◆ forEachSnapshotBeforeOrAt()

void forEachSnapshotBeforeOrAt ( const Time time,
FunctionT &&  func 
) const
inline

Return all snapshots before or at time.

Parameters
timeThe time.
Returns
The latest snapshots.

Definition at line 464 of file EntityBase.h.

◆ forEachSnapshotIn() [1/2]

bool forEachSnapshotIn ( const MemoryID id,
SnapshotFunctionT &&  func 
)
inline
Parameters
funcFunction like: bool process(EntitySnapshotT& snapshot)

Definition at line 410 of file EntityBase.h.

◆ forEachSnapshotIn() [2/2]

bool forEachSnapshotIn ( const MemoryID id,
SnapshotFunctionT &&  func 
) const
inline
Parameters
funcFunction like void process(const EntitySnapshotT& snapshot)

Definition at line 420 of file EntityBase.h.

◆ forEachSnapshotInIndexRange()

void forEachSnapshotInIndexRange ( long  first,
long  last,
FunctionT &&  func 
) const
inline

Return all snapshots from first to last index.

Negative index are counted from the end, e.g. last == -1 results in getting all queries until the end.

Parameters
firstThe first index to include.
firstThe last index to include.
Returns
The snapshots in [first, last].

Definition at line 507 of file EntityBase.h.

◆ forEachSnapshotInTimeRange()

void forEachSnapshotInTimeRange ( const Time min,
const Time max,
FunctionT &&  func 
) const
inline

Return all snapshots between, including, min and max.

Parameters
minThe lowest time to include.
minThe highest time to include.
Returns
The snapshots in [min, max].

Definition at line 477 of file EntityBase.h.

+ Here is the caller graph for this function:

◆ getFirstSnapshot() [1/2]

EntitySnapshotT& getFirstSnapshot ( )
inline

Return the snapshot with the least recent timestamp.

Returns
The first snapshot.
Exceptions
<tt>armem::error::EntityHistoryEmpty</tt>If the history is empty.

Definition at line 261 of file EntityBase.h.

+ Here is the caller graph for this function:

◆ getFirstSnapshot() [2/2]

const EntitySnapshotT& getFirstSnapshot ( ) const
inline

Definition at line 268 of file EntityBase.h.

◆ getFirstTimestamp()

Time getFirstTimestamp ( ) const
inline

Get the oldest timestamp.

Exceptions
<tt>armem::error::EntityHistoryEmpty</tt>If the history is empty.

Definition at line 218 of file EntityBase.h.

◆ getKeyString()

std::string getKeyString ( ) const
inline

Definition at line 684 of file EntityBase.h.

◆ getLatestTimestamp()

Time getLatestTimestamp ( ) const
inline

Get the latest timestamp.

Exceptions
<tt>armem::error::EntityHistoryEmpty</tt>If the history is empty.

Definition at line 208 of file EntityBase.h.

◆ getLevelName()

static std::string getLevelName ( )
inlinestatic

Definition at line 690 of file EntityBase.h.

◆ getSnapshot() [1/4]

EntitySnapshotT& getSnapshot ( const MemoryID snapshotID)
inline

Definition at line 185 of file EntityBase.h.

◆ getSnapshot() [2/4]

const EntitySnapshotT& getSnapshot ( const MemoryID snapshotID) const
inline

Definition at line 192 of file EntityBase.h.

◆ getSnapshot() [3/4]

EntitySnapshotT& getSnapshot ( const Time time)
inline

Get a snapshot.

Parameters
timeThe time.
Returns
The snapshot, if it exists.
Exceptions
<tt>armem::error::MissingEntry</tt>If there is no such entry.

Definition at line 149 of file EntityBase.h.

+ Here is the caller graph for this function:

◆ getSnapshot() [4/4]

const EntitySnapshotT& getSnapshot ( const Time time) const
inline

Definition at line 159 of file EntityBase.h.

◆ getTimestamps()

std::vector<Time> getTimestamps ( ) const
inline

Get all timestamps in the history.

Definition at line 566 of file EntityBase.h.

◆ hasSnapshot() [1/2]

bool hasSnapshot ( const MemoryID snapshotID) const
inline

Indicate whether a snapshot with the given ID exists.

Definition at line 122 of file EntityBase.h.

◆ hasSnapshot() [2/2]

bool hasSnapshot ( const Time time) const
inline

Indicate whether a snapshot at the given time exists.

Definition at line 114 of file EntityBase.h.

+ Here is the caller graph for this function:

◆ hasSnapshots()

bool hasSnapshots ( ) const
inline

Indicate whether the entity has any snapshots.

Definition at line 106 of file EntityBase.h.

◆ name() [1/2]

std::string& name ( )
inline

Definition at line 93 of file EntityBase.h.

+ Here is the caller graph for this function:

◆ name() [2/2]

const std::string& name ( ) const
inline

Definition at line 99 of file EntityBase.h.

◆ operator=() [1/2]

EntityBase& operator= ( const EntityBase< _EntitySnapshotT, _Derived > &  other)
default

◆ operator=() [2/2]

EntityBase& operator= ( EntityBase< _EntitySnapshotT, _Derived > &&  other)
default

◆ update()

UpdateResult update ( const EntityUpdate update)
inline

Add the given update to this entity's history.

Parameters
updateThe update.
Returns
The snapshot ID of the update.

Definition at line 579 of file EntityBase.h.

+ Here is the caller graph for this function:

The documentation for this class was generated from the following file: