++mObjCounter;
std::string key = std::to_string(mObjCounter);
mObjectMap[key] = object;
- mObjectMapReverse[object] = key;
- LOG_SCOPE_F(INFO, "addElement %p as key %s", object.get(), key.c_str());
+ std::string value = object->getId();
+ mObjectMapReverse[value] = key;
+ LOG_SCOPE_F(INFO, "addElement %p as key %s, id %s", object.get(), key.c_str(), value.c_str());
return key;
}
std::string ObjectMapper::getElement(std::shared_ptr<UiObject> object)
{
LOG_SCOPE_F(INFO, "getElement for object(%p)", object.get());
- if (object && mObjectMapReverse.count(object)) {
+ std::string value = object->getId();
+ if (mObjectMapReverse.count(value)) {
LOG_F(INFO, "succeeded");
- return mObjectMapReverse[object];
+ return mObjectMapReverse[value];
}
LOG_F(INFO, "failed(object not found)");
return std::string{""};
LOG_SCOPE_F(INFO, "removeElement for key(%s)", key.c_str());
std::shared_ptr<UiObject> obj = getElement(key);
if (obj) {
- if (mObjectMap.erase(key) && mObjectMapReverse.erase(obj))
+ std::string value = obj->getId();
+ if (mObjectMap.erase(key) && mObjectMapReverse.erase(value))
return true;
}
return false;
std::stringstream ss{};
LOG_SCOPE_F(INFO, "clean up object map");
- ss << "mObjectMap: ";
- for(auto iter = mObjectMap.begin(); iter != mObjectMap.end(); ) {
- if (!iter->second->isValid()) {
- iter = mObjectMap.erase(iter);
+ ss << "mObjectMapReverse: ";
+ for(auto iter = mObjectMapReverse.begin(); iter != mObjectMapReverse.end(); ) {
+ auto obj = mObjectMap[iter->second];
+ if (obj && !obj->isValid()) {
+ iter = mObjectMapReverse.erase(iter);
} else {
- ss << "(" << iter->first << "," << iter->second.get() << ") ";
+ ss << "(" << iter->first << "," << iter->second << ") ";
++iter;
}
}
ss << std::endl;
- ss << "mObjectMapReverse: ";
- for(auto iter = mObjectMapReverse.begin(); iter != mObjectMapReverse.end(); ) {
- if (!iter->first->isValid()) {
- iter = mObjectMapReverse.erase(iter);
+ ss << "mObjectMap: ";
+ for(auto iter = mObjectMap.begin(); iter != mObjectMap.end(); ) {
+ if (!iter->second->isValid()) {
+ iter = mObjectMap.erase(iter);
} else {
- ss << "(" << iter->first.get() << "," << iter->second << ") ";
+ ss << "(" << iter->first << "," << iter->second.get() << ") ";
++iter;
}
}
return !pair.second->isValid();
});
}
- */
\ No newline at end of file
+ */