CoreSegmentBase.h
Go to the documentation of this file.
1 #pragma once
2 
3 #include <map>
4 #include <string>
5 
6 #include "ProviderSegmentBase.h"
7 #include "detail/AronTyped.h"
10 #include "detail/lookup_mixins.h"
11 #include "detail/Predictive.h"
12 
14 
16 {
17 
21  template <class _ProviderSegmentT, class _Derived>
23  public detail::MemoryContainerBase<std::map<std::string, _ProviderSegmentT>, _Derived>
24  , public detail::AronTyped
25  , public detail::PredictiveContainer<_Derived>
26  , public detail::ForEachEntityInstanceMixin<_Derived>
27  , public detail::ForEachEntitySnapshotMixin<_Derived>
28  , public detail::ForEachEntityMixin<_Derived>
29  , public detail::GetFindInstanceMixin<_Derived>
30  , public detail::GetFindSnapshotMixin<_Derived>
31  , public detail::GetFindEntityMixin<_Derived>
32  {
34 
35  public:
36 
37  using typename Base::DerivedT;
38  using typename Base::ContainerT;
39 
40  using ProviderSegmentT = _ProviderSegmentT;
41  using EntityT = typename ProviderSegmentT::EntityT;
42  using EntitySnapshotT = typename EntityT::EntitySnapshotT;
43  using EntityInstanceT = typename EntitySnapshotT::EntityInstanceT;
44 
46 
47 
48  struct UpdateResult
49  {
54  std::vector<EntitySnapshotT> removedSnapshots;
55 
56  UpdateResult() = default;
57  UpdateResult(const typename ProviderSegmentT::UpdateResult& c) :
60  id(c.id),
62  {}
63  };
64 
65 
66  public:
67 
69  {
70  }
71  explicit CoreSegmentBase(const std::string& name,
73  const std::vector<PredictionEngine>& predictionEngines = {}) :
75  {
76  }
77  explicit CoreSegmentBase(const std::string& name,
78  const MemoryID& parentID,
80  const std::vector<PredictionEngine>& predictionEngines = {}) :
82  {
83  }
84  explicit CoreSegmentBase(const MemoryID& id,
86  const std::vector<PredictionEngine>& predictionEngines = {}) :
88  {
89  }
90 
91  CoreSegmentBase(const CoreSegmentBase& other) = default;
92  CoreSegmentBase(CoreSegmentBase&& other) = default;
93  CoreSegmentBase& operator=(const CoreSegmentBase& other) = default;
94  CoreSegmentBase& operator=(CoreSegmentBase&& other) = default;
95 
96 
97  // READ ACCESS
98 
99  // Get key
100  inline std::string& name()
101  {
102  return this->id().coreSegmentName;
103  }
104  inline const std::string& name() const
105  {
106  return this->id().coreSegmentName;
107  }
108 
109 
110  // Has child by key
111  bool hasProviderSegment(const std::string& name) const
112  {
113  return this->findProviderSegment(name) != nullptr;
114  }
115  // Has child by memory ID
116  bool hasProviderSegment(const MemoryID& providerSegmentID) const
117  {
118  return this->findProviderSegment(providerSegmentID) != nullptr;
119  }
120 
121 
122  // Find child by key
124  {
125  return detail::findChildByKey(name, this->_container);
126  }
127  const ProviderSegmentT* findProviderSegment(const std::string& name) const
128  {
129  return detail::findChildByKey(name, this->_container);
130  }
131 
132  // Get child by key
134  {
135  return detail::getChildByKey(name, this->_container, *this);
136  }
137  const ProviderSegmentT& getProviderSegment(const std::string& name) const
138  {
139  return detail::getChildByKey(name, this->_container, *this);
140  }
141 
142  // Find child by MemoryID
143  ProviderSegmentT* findProviderSegment(const MemoryID& providerSegmentID)
144  {
145  detail::checkHasProviderSegmentName(providerSegmentID);
146  return this->findProviderSegment(providerSegmentID.providerSegmentName);
147  }
148  const ProviderSegmentT* findProviderSegment(const MemoryID& providerSegmentID) const
149  {
150  detail::checkHasProviderSegmentName(providerSegmentID);
151  return this->findProviderSegment(providerSegmentID.providerSegmentName);
152  }
153 
154  // Get child by MemoryID
155  ProviderSegmentT& getProviderSegment(const MemoryID& providerSegmentID)
156  {
157  detail::checkHasProviderSegmentName(providerSegmentID);
158  return this->getProviderSegment(providerSegmentID.providerSegmentName);
159  }
160  const ProviderSegmentT& getProviderSegment(const MemoryID& providerSegmentID) const
161  {
162  detail::checkHasProviderSegmentName(providerSegmentID);
163  return this->getProviderSegment(providerSegmentID.providerSegmentName);
164  }
165 
166  // get/findInstance are provided by GetFindInstanceMixin
167  // get/findSnapshot are provided by GetFindSnapshotMixin
168  // get/findEntity are provided by GetFindEntityMixin
171 
172  // Search all provider segments for the first matching entity.
173 
174  bool hasEntity(const std::string& entityName) const
175  {
176  return this->findEntity(entityName) != nullptr;
177  }
178  EntityT* findEntity(const std::string& entityName)
179  {
180  return _findEntity(*this, entityName);
181  }
182  const EntityT* findEntity(const std::string& entityName) const
183  {
184  return _findEntity(*this, entityName);
185  }
186 
187 
188  // ITERATION
189 
193  template <class ProviderSegmentFunctionT>
194  bool forEachProviderSegment(ProviderSegmentFunctionT&& func)
195  {
196  return this->forEachChild(func);
197  }
201  template <class ProviderSegmentFunctionT>
202  bool forEachProviderSegment(ProviderSegmentFunctionT&& func) const
203  {
204  return this->forEachChild(func);
205  }
206 
207  // forEachEntity() is provided by ForEachEntityMixin.
208  // forEachSnapshot() is provided by ForEachEntitySnapshotMixin.
209  // forEachInstance() is provided by ForEachEntityInstanceMixin.
210 
211 
215  template <class InstanceFunctionT>
216  bool forEachInstanceIn(const MemoryID& id, InstanceFunctionT&& func)
217  {
219  id, func, *this,
220  id.hasProviderSegmentName(),
221  id.hasProviderSegmentName() ? this->findProviderSegment(id.providerSegmentName) : nullptr);
222  }
226  template <class InstanceFunctionT>
227  bool forEachInstanceIn(const MemoryID& id, InstanceFunctionT&& func) const
228  {
230  id, func, *this,
231  id.hasProviderSegmentName(),
232  id.hasProviderSegmentName() ? this->findProviderSegment(id.providerSegmentName) : nullptr);
233  }
234 
235 
236  // Get child keys
237  std::vector<std::string> getProviderSegmentNames() const
238  {
239  return simox::alg::get_keys(this->_container);
240  }
241 
242 
243  // MODIFICATION
244 
250  UpdateResult update(const EntityUpdate& update)
251  {
252  this->_checkContainerName(update.entityID.coreSegmentName, this->name());
253 
254  auto [inserted, provSeg] = _addProviderSegmentIfMissing(update.entityID.providerSegmentName);
255 
256 
257  // Update entry.
258  UpdateResult ret(provSeg->update(update));
259  if (inserted)
260  {
261  ret.coreSegmentUpdateType = UpdateType::InsertedNew;
262  }
263  else
264  {
265  ret.coreSegmentUpdateType = UpdateType::UpdatedExisting;
266  }
267  return ret;
268  }
269 
270 
271  template <class OtherDerivedT>
272  void append(const OtherDerivedT& other)
273  {
274  other.forEachProviderSegment([this](const auto& provSeg)
275  {
276  auto it = this->_container.find(provSeg.name());
277  if (it == this->_container.end())
278  {
279  it = this->_container.emplace(provSeg.name(), this->id().withProviderSegmentName(provSeg.name())).first;
280  }
281  it->second.append(provSeg);
282  return true;
283  });
284  }
285 
295  addProviderSegment(const std::string& name,
296  aron::type::ObjectPtr providerSegmentType = nullptr,
297  const std::vector<PredictionEngine>& predictionEngines = {})
298  {
299  aron::type::ObjectPtr type = providerSegmentType ? providerSegmentType : this->aronType();
300  return this->_derived().addProviderSegment(name, name, type, predictionEngines);
301  }
302 
305  {
306  return this->_derived().addProviderSegment(providerSegment.name(), ProviderSegmentT(providerSegment));
307  }
308 
311  {
312  const std::string name = providerSegment.name(); // Copy before move.
313  return this->_derived().addProviderSegment(name, std::move(providerSegment));
314  }
315 
317  template <class ...Args>
318  ProviderSegmentT& addProviderSegment(const std::string& name, Args... args)
319  {
320  ChildT& child = this->template _addChild<ChildT>(name, args...);
321  child.id() = this->id().withProviderSegmentName(name);
322  return child;
323  }
324 
325 
326  // MISC
327 
328  bool equalsDeep(const DerivedT& other) const
329  {
330  //std::cout << "CoreSegment::equalsDeep" << std::endl;
331  if (this->size() != other.size())
332  {
333  return false;
334  }
335  for (const auto& [key, provider] : this->_container)
336  {
337  if (not other.hasProviderSegment(key))
338  {
339  return false;
340  }
341  if (not provider.equalsDeep(other.getProviderSegment(key)))
342  {
343  return false;
344  }
345  }
346  return true;
347  }
348 
349  static std::string getLevelName()
350  {
351  return "core segment";
352  }
353 
354  std::string getKeyString() const
355  {
356  return this->name();
357  }
358 
359 
360  protected:
361 
362  template <class ParentT>
363  static
364  auto*
365  _findEntity(ParentT&& parent, const std::string& entityName)
366  {
367  decltype(parent.findEntity(entityName)) result = nullptr;
368  parent.forEachProviderSegment([&result, &entityName](auto & provSeg)
369  {
370  result = provSeg.findEntity(entityName);
371  return result == nullptr; // Keep going if null, break if not null.
372  });
373  return result;
374  }
375 
376 
377  std::pair<bool, ProviderSegmentT*>
378  _addProviderSegmentIfMissing(const std::string& providerSegmentName)
379  {
380  ProviderSegmentT* provSeg;
381 
382  auto it = this->_container.find(providerSegmentName);
383  if (it == this->_container.end())
384  {
385  if (_addMissingProviderSegmentDuringUpdate)
386  {
387  // Insert into map.
388  provSeg = &addProviderSegment(providerSegmentName);
389  return {true, provSeg};
390  }
391  else
392  {
393  throw error::MissingEntry::create<ProviderSegmentT>(providerSegmentName, *this);
394  }
395  }
396  else
397  {
398  provSeg = &it->second;
399  return {false, provSeg};
400  }
401  }
402 
403 
404  private:
405 
406  bool _addMissingProviderSegmentDuringUpdate = true;
407 
408  };
409 
410 }
armarx::armem::base::detail::GetFindInstanceMixin
Definition: lookup_mixins.h:59
armarx::armem::base::CoreSegmentBase::CoreSegmentBase
CoreSegmentBase()
Definition: CoreSegmentBase.h:68
armarx::armem::base
Definition: CoreSegmentBase.h:15
armarx::armem::base::detail::checkHasProviderSegmentName
void checkHasProviderSegmentName(const MemoryID &providerSegmentID)
Definition: lookup_mixins.cpp:36
armarx::armem::base::detail::GetFindSnapshotMixin
Definition: lookup_mixins.h:106
armarx::armem::base::detail::MemoryContainerBase< std::map< std::string, _ProviderSegmentT >, _Derived >::_derived
DerivedT & _derived()
Definition: MemoryContainerBase.h:111
armarx::armem::base::CoreSegmentBase::name
std::string & name()
Definition: CoreSegmentBase.h:100
armarx::armem::base::CoreSegmentBase::findEntity
EntityT * findEntity(const std::string &entityName)
Definition: CoreSegmentBase.h:178
armarx::aron::ret
ReaderT::InputType T & ret
Definition: rw.h:17
armarx::armem::base::CoreSegmentBase::getProviderSegment
const ProviderSegmentT & getProviderSegment(const MemoryID &providerSegmentID) const
Definition: CoreSegmentBase.h:160
armarx::armem::base::CoreSegmentBase::getKeyString
std::string getKeyString() const
Definition: CoreSegmentBase.h:354
armarx::armem::base::CoreSegmentBase::CoreSegmentBase
CoreSegmentBase(const std::string &name, const MemoryID &parentID, aron::type::ObjectPtr aronType=nullptr, const std::vector< PredictionEngine > &predictionEngines={})
Definition: CoreSegmentBase.h:77
armarx::armem::base::CoreSegmentBase::CoreSegmentBase
CoreSegmentBase(const std::string &name, aron::type::ObjectPtr aronType=nullptr, const std::vector< PredictionEngine > &predictionEngines={})
Definition: CoreSegmentBase.h:71
MemoryContainerBase.h
armarx::armem::base::CoreSegmentBase::UpdateResult
Definition: CoreSegmentBase.h:48
armarx::armem::MemoryID::providerSegmentName
std::string providerSegmentName
Definition: MemoryID.h:54
armarx::armem::base::detail::AronTyped::AronTyped
AronTyped(aron::type::ObjectPtr aronType=nullptr)
Definition: AronTyped.cpp:9
armarx::armem::base::CoreSegmentBase::hasProviderSegment
bool hasProviderSegment(const std::string &name) const
Definition: CoreSegmentBase.h:111
armarx::armem::base::detail::MemoryContainerBase< std::map< std::string, _ProviderSegmentT >, _Derived >::forEachChild
bool forEachChild(ChildFunctionT &&func)
Definition: MemoryContainerBase.h:64
armarx::armem::base::detail::AronTyped::aronType
aron::type::ObjectPtr & aronType()
Definition: AronTyped.cpp:18
armarx::armem::base::detail::PredictiveContainer
Something that supports a set of prediction engines.
Definition: Predictive.h:91
armarx::armem::base::CoreSegmentBase::_findEntity
static auto * _findEntity(ParentT &&parent, const std::string &entityName)
Definition: CoreSegmentBase.h:365
armarx::armem::base::detail::MemoryContainerBase
Provides default implmentations of MemoryContainer, as well as iterators (which requires a template).
Definition: MemoryContainerBase.h:16
c
constexpr T c
Definition: UnscentedKalmanFilterTest.cpp:43
AronTyped.h
lookup_mixins.h
armarx::armem::base::CoreSegmentBase::findProviderSegment
ProviderSegmentT * findProviderSegment(const std::string &name)
Definition: CoreSegmentBase.h:123
armarx::armem::base::CoreSegmentBase::equalsDeep
bool equalsDeep(const DerivedT &other) const
Definition: CoreSegmentBase.h:328
armarx::armem::MemoryID::coreSegmentName
std::string coreSegmentName
Definition: MemoryID.h:53
armarx::armem::UpdateType::UpdatedExisting
@ UpdatedExisting
armarx::armem::base::detail::MemoryContainerBase< std::map< std::string, _ProviderSegmentT >, _Derived >::size
std::size_t size() const
Definition: MemoryContainerBase.h:48
armarx::armem::base::CoreSegmentBase::getProviderSegmentNames
std::vector< std::string > getProviderSegmentNames() const
Definition: CoreSegmentBase.h:237
armarx::armem::base::CoreSegmentBase
Data of a core segment containing multiple provider segments.
Definition: CoreSegmentBase.h:22
armarx::armem::base::CoreSegmentBase::findEntity
const EntityT * findEntity(const std::string &entityName) const
Definition: CoreSegmentBase.h:182
armarx::armem::MemoryID::withProviderSegmentName
MemoryID withProviderSegmentName(const std::string &name) const
Definition: MemoryID.cpp:323
armarx::armem::base::CoreSegmentBase< ProviderSegment, CoreSegment >::ProviderSegmentT
ProviderSegment ProviderSegmentT
Definition: CoreSegmentBase.h:40
ProviderSegmentBase.h
armarx::armem::base::CoreSegmentBase::append
void append(const OtherDerivedT &other)
Definition: CoreSegmentBase.h:272
armarx::armem::MemoryID
A memory ID.
Definition: MemoryID.h:48
armarx::armem::base::CoreSegmentBase::forEachInstanceIn
bool forEachInstanceIn(const MemoryID &id, InstanceFunctionT &&func)
Definition: CoreSegmentBase.h:216
armarx::armem::UpdateType
UpdateType
The type of an update.
Definition: Commit.h:18
if
if(!yyvaluep)
Definition: Grammar.cpp:724
armarx::armem::MemoryID::withCoreSegmentName
MemoryID withCoreSegmentName(const std::string &name) const
Definition: MemoryID.cpp:316
armarx::armem::base::CoreSegmentBase::hasProviderSegment
bool hasProviderSegment(const MemoryID &providerSegmentID) const
Definition: CoreSegmentBase.h:116
armarx::armem::base::detail::findChildByKey
auto * findChildByKey(const KeyT &key, ContainerT &&container)
Definition: lookup_mixins.h:21
armarx::armem::base::CoreSegmentBase::forEachInstanceIn
bool forEachInstanceIn(const MemoryID &id, InstanceFunctionT &&func) const
Definition: CoreSegmentBase.h:227
armarx::armem::base::CoreSegmentBase::forEachProviderSegment
bool forEachProviderSegment(ProviderSegmentFunctionT &&func)
Definition: CoreSegmentBase.h:194
armarx::armem::base::detail::GetFindEntityMixin
Definition: lookup_mixins.h:180
armarx::armem::base::CoreSegmentBase::update
UpdateResult update(const EntityUpdate &update)
Updates an entity's history.
Definition: CoreSegmentBase.h:250
armarx::armem::base::CoreSegmentBase::addProviderSegment
ProviderSegmentT & addProviderSegment(const std::string &name, aron::type::ObjectPtr providerSegmentType=nullptr, const std::vector< PredictionEngine > &predictionEngines={})
Add an empty provider segment with the given name, optional provider segment type and prediction engi...
Definition: CoreSegmentBase.h:295
armarx::armem::EntityUpdate
An update of an entity for a specific point in time.
Definition: Commit.h:27
armarx::armem::base::CoreSegmentBase::getProviderSegment
ProviderSegmentT & getProviderSegment(const std::string &name)
Definition: CoreSegmentBase.h:133
armarx::armem::base::CoreSegmentBase::UpdateResult::providerSegmentUpdateType
armarx::armem::UpdateType providerSegmentUpdateType
Definition: CoreSegmentBase.h:51
armarx::armem::base::CoreSegmentBase::addProviderSegment
ProviderSegmentT & addProviderSegment(const ProviderSegmentT &providerSegment)
Copy and insert a provider segment.
Definition: CoreSegmentBase.h:304
armarx::armem::base::CoreSegmentBase::UpdateResult::entityUpdateType
armarx::armem::UpdateType entityUpdateType
Definition: CoreSegmentBase.h:52
iteration_mixins.h
armarx::armem::base::CoreSegmentBase::name
const std::string & name() const
Definition: CoreSegmentBase.h:104
armarx::armem::base::detail::MemoryContainerBase< std::map< std::string, _ProviderSegmentT >, _Derived >::DerivedT
_Derived DerivedT
Definition: MemoryContainerBase.h:23
armarx::armem::base::CoreSegmentBase::forEachProviderSegment
bool forEachProviderSegment(ProviderSegmentFunctionT &&func) const
Definition: CoreSegmentBase.h:202
armarx::armem::base::detail::MemoryItem::id
MemoryID & id()
Definition: MemoryItem.h:27
armarx::armem::base::CoreSegmentBase< ProviderSegment, CoreSegment >::EntityT
typename ProviderSegmentT::EntityT EntityT
Definition: CoreSegmentBase.h:41
armarx::armem::base::detail::forEachInstanceIn
bool forEachInstanceIn(const MemoryID &id, FunctionT &&func, ParentT &parent, bool single, ChildT *child)
Definition: iteration_mixins.h:110
armarx::armem::base::detail::MemoryContainerBase< std::map< std::string, _ProviderSegmentT >, _Derived >::ContainerT
std::map< std::string, _ProviderSegmentT > ContainerT
Definition: MemoryContainerBase.h:24
armarx::armem::base::CoreSegmentBase::operator=
CoreSegmentBase & operator=(const CoreSegmentBase &other)=default
armarx::armem::base::CoreSegmentBase::addProviderSegment
ProviderSegmentT & addProviderSegment(ProviderSegmentT &&providerSegment)
Move and insert a provider segment.
Definition: CoreSegmentBase.h:310
armarx::armem::base::CoreSegmentBase::UpdateResult::removedSnapshots
std::vector< EntitySnapshotT > removedSnapshots
Definition: CoreSegmentBase.h:54
armarx::armem::base::CoreSegmentBase::UpdateResult::coreSegmentUpdateType
armarx::armem::UpdateType coreSegmentUpdateType
Definition: CoreSegmentBase.h:50
armarx::armem::base::CoreSegmentBase::getProviderSegment
const ProviderSegmentT & getProviderSegment(const std::string &name) const
Definition: CoreSegmentBase.h:137
armarx::armem::base::detail::ForEachEntitySnapshotMixin
Definition: iteration_mixins.h:197
armarx::armem::base::CoreSegmentBase::addProviderSegment
ProviderSegmentT & addProviderSegment(const std::string &name, Args... args)
Insert a provider segment in-place.
Definition: CoreSegmentBase.h:318
armarx::armem::base::CoreSegmentBase< ProviderSegment, CoreSegment >::EntitySnapshotT
typename EntityT::EntitySnapshotT EntitySnapshotT
Definition: CoreSegmentBase.h:42
armarx::armem::base::detail::AronTyped
Something with a specific ARON type.
Definition: AronTyped.h:12
armarx::armem::base::CoreSegmentBase::findProviderSegment
const ProviderSegmentT * findProviderSegment(const std::string &name) const
Definition: CoreSegmentBase.h:127
armarx::armem::base::detail::getChildByKey
auto & getChildByKey(const KeyT &key, ContainerT &&container, const ParentT &parent, KeyStringFn &&keyStringFn)
Definition: lookup_mixins.h:29
armarx::armem::base::CoreSegmentBase::getProviderSegment
ProviderSegmentT & getProviderSegment(const MemoryID &providerSegmentID)
Definition: CoreSegmentBase.h:155
armarx::armem::base::CoreSegmentBase::CoreSegmentBase
CoreSegmentBase(const MemoryID &id, aron::type::ObjectPtr aronType=nullptr, const std::vector< PredictionEngine > &predictionEngines={})
Definition: CoreSegmentBase.h:84
armarx::armem::base::detail::ForEachEntityInstanceMixin
Definition: iteration_mixins.h:138
armarx::armem::UpdateType::InsertedNew
@ InsertedNew
armarx::armem::base::CoreSegmentBase::_addProviderSegmentIfMissing
std::pair< bool, ProviderSegmentT * > _addProviderSegmentIfMissing(const std::string &providerSegmentName)
Definition: CoreSegmentBase.h:378
armarx::armem::base::CoreSegmentBase::findProviderSegment
ProviderSegmentT * findProviderSegment(const MemoryID &providerSegmentID)
Definition: CoreSegmentBase.h:143
armarx::armem::base::detail::ForEachEntityMixin
Definition: iteration_mixins.h:228
armarx::armem::base::CoreSegmentBase< ProviderSegment, CoreSegment >::EntityInstanceT
typename EntitySnapshotT::EntityInstanceT EntityInstanceT
Definition: CoreSegmentBase.h:43
armarx::armem::base::CoreSegmentBase::UpdateResult::id
MemoryID id
Definition: CoreSegmentBase.h:53
armarx::armem::base::CoreSegmentBase::hasEntity
bool hasEntity(const std::string &entityName) const
Definition: CoreSegmentBase.h:174
armarx::aron::type::ObjectPtr
std::shared_ptr< Object > ObjectPtr
Definition: Object.h:37
Logging.h
armarx::armem::base::detail::Predictive< _Derived >::predictionEngines
const std::vector< PredictionEngine > & predictionEngines() const
Definition: Predictive.h:48
armarx::armem::base::CoreSegmentBase::UpdateResult::UpdateResult
UpdateResult()=default
armarx::armem::base::CoreSegmentBase::getLevelName
static std::string getLevelName()
Definition: CoreSegmentBase.h:349
armarx::armem::base::detail::MemoryContainerBase< std::map< std::string, _ProviderSegmentT >, _Derived >::_container
ContainerT _container
Definition: MemoryContainerBase.h:150
armarx::armem::EntityUpdate::entityID
MemoryID entityID
The entity's ID.
Definition: Commit.h:30
armarx::armem::base::CoreSegmentBase::UpdateResult::UpdateResult
UpdateResult(const typename ProviderSegmentT::UpdateResult &c)
Definition: CoreSegmentBase.h:57
armarx::armem::base::CoreSegmentBase< ProviderSegment, CoreSegment >::ChildT
ProviderSegmentT ChildT
Definition: CoreSegmentBase.h:45
armarx::armem::base::CoreSegmentBase::findProviderSegment
const ProviderSegmentT * findProviderSegment(const MemoryID &providerSegmentID) const
Definition: CoreSegmentBase.h:148
armarx::armem::base::detail::MemoryContainerBase< std::map< std::string, _ProviderSegmentT >, _Derived >::_checkContainerName
void _checkContainerName(const std::string &gottenName, const std::string &actualName, bool emptyOk=true) const
Definition: MemoryContainerBase.h:124
Predictive.h
armarx::human::MemoryID
const armem::MemoryID MemoryID
Definition: memory_ids.cpp:29