11 template <
class DataType>
14 if (ir != InsertionResult::SUCCESS) {
17 if (producer && _remObjTracker) {
18 if (!(_remObjTracker->TrackObject(name, producer))) {
19 ObjectMap::RemoveObject(name);
25 template <
class DataType>
29 if (ir != InsertionResult::SUCCESS) {
32 if (producer && _remObjTracker) {
33 if (!(_remObjTracker->TrackObject(name, producer))) {
34 ObjectMap::RemoveObject(name);
40 template <
class DataType>
41 void DataStore::AddObject(
const std::string &name, std::shared_ptr<DataType> obj,
44 if (ir != InsertionResult::SUCCESS) {
47 if (producer && _remObjTracker) {
48 if (!(_remObjTracker->TrackObject(name, producer))) {
49 ObjectMap::RemoveObject(name);
55 template <
class DataType>
56 void DataStore::AddObject(
const std::string &name, std::unique_ptr<DataType> obj,
59 if (ir != InsertionResult::SUCCESS) {
71 auto obj = GetFromMap<DataType>(name);
72 if (obj.GetRetrievalResult() == RetrievalResult::SUCCESS) {
80 w = (DataType *)(
nullptr);
82 std::string actualName;
84 result = std::max(GetFromProvider(name, w, actualName, provider), result);
87 if (result == RetrievalResult::SUCCESS) {
88 auto objAfterCast = CastAndWrap<DataType>(name, actualName, std::move(w), provider);
94 if (result == RetrievalResult::NOTFOUND) {
97 if (IsAlgoProducedObject(name)) {
105 template <
class DataType>
ObjPtr<DataType> DataStore::GetFromMap(
const std::string &name) {
106 return ObjectMap::GetObject<DataType>(name);
109 template <
class DataType>
113 retObj.
_result = RetrievalResult::SUCCESS;
118 if (actualName ==
"") {
119 if (ObjectMap::AddObject(name, std::move(wrapper)) == InsertionResult::DUPLICATE) {
125 retObj.
_result = RetrievalResult::ERROR;
129 ObjectMap::AddObject(actualName, std::move(wrapper));
132 SetAlias(actualName, name);
134 ObjectMap::RemoveObject(actualName);
136 retObj.
_result = RetrievalResult::ERROR;
140 retObj.
_result = RetrievalResult::BADCLASS;
143 if (provider && _remObjTracker) {
144 if (!_remObjTracker->TrackObject(name, provider)) {
146 retObj.
_result = RetrievalResult::ERROR;
160 auto obj = GetFromMap<DataType>(name);
161 if (obj.GetRetrievalResult() == RetrievalResult::SUCCESS) {
170 result = _eventCache->GetCachedValue(name, w);
174 std::string actualName;
176 if (result != RetrievalResult::SUCCESS) {
178 w = (DataType *)(
nullptr);
180 result = std::max(GetFromProvider(name, w, actualName, provider), result);
184 if (result == RetrievalResult::SUCCESS) {
185 auto objPtr = CastAndWrap<DataType>(name, actualName, std::move(w), provider);
191 if (result == RetrievalResult::NOTFOUND) {
194 if (IsAlgoProducedObject(name)) {
Class describing a pointer to an object retrieved from an ObjectMap.
Definition: ObjPtr.h:31
A smart pointer not owning the wrapped object.
Definition: ObserverPtr.h:28
#define THROW_RETRIEVAL_EXC(retRes, objName)
Definition: RetrievalExceptions.h:50
RetrievalResult
Definition: RetrievalResult.h:16
Exception for generic error in object insertion procedure.
Definition: InsertionExceptions.h:57
Generic wrapper class.
Definition: ObjectWrapper.h:28
Base class for insertion exceptions.
Definition: InsertionExceptions.h:21
InsertionResult
Definition: InsertionResult.h:16
void * wrapper_cast(ObjectWrapper &wrapper, const std::type_info &typeInfo)
Cast function to extract wrapped pointer from wrapper in a type-safe way.
Definition: WrapperCast.cpp:12
Exception for known object but not available at the moment.
Definition: RetrievalExceptions.h:27
#define THROW_INSERTION_EXC(insRes, objName)
Definition: InsertionExceptions.h:62
RetrievalResult _result
Definition: ObjPtr.h:114