16 #ifndef __VOM_INST_DB_H__
17 #define __VOM_INST_DB_H__
32 template <
typename KEY,
typename OBJ>
64 template <
typename DERIVED>
67 auto search = m_map.find(
key);
69 if (search == m_map.end()) {
70 std::shared_ptr<OBJ> sp = std::make_shared<DERIVED>(obj);
78 return (search->second.lock());
86 auto search = m_map.find(
key);
88 if (search == m_map.end()) {
89 std::shared_ptr<OBJ> sp(NULL);
94 return (search->second.lock());
102 auto search = m_map.find(
key);
104 if (search != m_map.end()) {
105 if (search->second.expired()) {
108 std::shared_ptr<OBJ> sp = m_map[
key].lock();
110 if (sp.get() == obj) {
120 void add(
const KEY&
key, std::shared_ptr<OBJ> sp) { m_map[
key] = sp; }
127 for (
auto entry : m_map) {
128 entry.second.lock()->replay();
136 std::map<const KEY, std::weak_ptr<OBJ>> m_map;