OverviewFilesCommitsIssuesDocsReleasesPeers

opencog-atomspace-storage commits / 3eac6ad

Use naked pointer, to avoid circular reference
3eac6ad9e8cc88134f1d9d630356d63fed1aea50
by Linas Vepstas <linasvepstas@gmail.com> · 2026-01-18T23:04:52.000Z

Changed files (2) +17 -17

opencog/persist/api/StorageNode.cc +16 -16
……@@ -56,13 +56,13 @@ StorageNode::~StorageNode()
5656AtomSpace* StorageNode::get_target_as(const ValuePtr& value) const
5757{
5858 if (nullptr == value)
59 return _target_as.get();
59 return _target_as;
6060
6161 if (value->is_type(ATOM_SPACE))
6262 return AtomSpaceCast(value).get();
6363
6464 if (0 == value->size())
65 return _target_as.get();
65 return _target_as;
6666
6767 ValuePtr vp(value);
6868 if (vp->is_type(ATOM))
……@@ -73,13 +73,13 @@ AtomSpace* StorageNode::get_target_as(const ValuePtr& value) const
7373 }
7474
7575 if (nullptr == vp)
76 return _target_as.get();
76 return _target_as;
7777
7878 if (vp->is_type(ATOM_SPACE))
7979 return AtomSpaceCast(vp).get();
8080
8181 if (0 == vp->size())
82 return _target_as.get();
82 return _target_as;
8383
8484 throw RuntimeException(TRACE_INFO,
8585 "Expected AtomSpace; got %s", value->to_string().c_str());
……@@ -164,7 +164,7 @@ void StorageNode::setValue(const Handle& key, const ValuePtr& value)
164164 COLL("*-open-*");
165165 AtomSpace* as = get_target_as(value);
166166 if (nullptr == as) as = getAtomSpace();
167 _target_as = AtomSpaceCast(as->shared_from_this());
167 _target_as = as;
168168 open();
169169 return;
170170 }
……@@ -227,7 +227,7 @@ void StorageNode::setValue(const Handle& key, const ValuePtr& value)
227227 }
228228 if (not value->is_type(LINK_VALUE)) return;
229229 const ValueSeq& vsq(LinkValueCast(value)->value());
230 AtomSpace* as = _target_as.get();
230 AtomSpace* as = _target_as;
231231 for (const ValuePtr& vp : vsq)
232232 {
233233 if (vp->is_type (ATOM_SPACE))
……@@ -266,7 +266,7 @@ void StorageNode::setValue(const Handle& key, const ValuePtr& value)
266266 }
267267 if (not value->is_type(LINK_VALUE)) return;
268268 const ValueSeq& vsq(LinkValueCast(value)->value());
269 AtomSpace* as = _target_as.get();
269 AtomSpace* as = _target_as;
270270 for (const ValuePtr& vp : vsq)
271271 {
272272 if (vp->is_type (ATOM_SPACE))
……@@ -376,7 +376,7 @@ ValuePtr StorageNode::getValue(const Handle& key) const
376376
377377void StorageNode::barrier(AtomSpace* as)
378378{
379 if (nullptr == as) as = _target_as.get();
379 if (nullptr == as) as = _target_as;
380380 as->barrier();
381381}
382382
……@@ -413,7 +413,7 @@ void StorageNode::remove_atom(AtomSpace* as, Handle h, bool recursive)
413413Handle StorageNode::fetch_atom(const Handle& h, AtomSpace* as)
414414{
415415 if (nullptr == h) return Handle::UNDEFINED;
416 if (nullptr == as) as = _target_as.get();
416 if (nullptr == as) as = _target_as;
417417
418418 // Now, get the latest values from the backing store.
419419 // The operation here is to CLOBBER the values, NOT to merge them!
……@@ -430,7 +430,7 @@ Handle StorageNode::fetch_atom(const Handle& h, AtomSpace* as)
430430Handle StorageNode::fetch_value(const Handle& h, const Handle& key,
431431 AtomSpace* as)
432432{
433 if (nullptr == as) as = _target_as.get();
433 if (nullptr == as) as = _target_as;
434434 Handle lkey = as->add_atom(key);
435435 Handle lh = as->add_atom(h);
436436 loadValue(lh, lkey);
……@@ -440,7 +440,7 @@ Handle StorageNode::fetch_value(const Handle& h, const Handle& key,
440440Handle StorageNode::fetch_incoming_set(const Handle& h, bool recursive,
441441 AtomSpace* as)
442442{
443 if (nullptr == as) as = _target_as.get();
443 if (nullptr == as) as = _target_as;
444444 Handle lh = as->get_atom(h);
445445 if (nullptr == lh) return lh;
446446
……@@ -459,7 +459,7 @@ Handle StorageNode::fetch_incoming_set(const Handle& h, bool recursive,
459459Handle StorageNode::fetch_incoming_by_type(const Handle& h, Type t,
460460 AtomSpace* as)
461461{
462 if (nullptr == as) as = _target_as.get();
462 if (nullptr == as) as = _target_as;
463463 Handle lh = as->get_atom(h);
464464 if (nullptr == lh) return lh;
465465
……@@ -477,7 +477,7 @@ Handle StorageNode::fetch_query(const Handle& query, const Handle& key,
477477 if (not query->is_executable() and not query->is_evaluatable())
478478 throw RuntimeException(TRACE_INFO, "Not executable!");
479479
480 if (nullptr == as) as = _target_as.get();
480 if (nullptr == as) as = _target_as;
481481 Handle lkey = as->add_atom(key);
482482 Handle lq = as->add_atom(query);
483483 Handle lmeta = metadata;
……@@ -489,7 +489,7 @@ Handle StorageNode::fetch_query(const Handle& query, const Handle& key,
489489
490490void StorageNode::load_atomspace(AtomSpace* as)
491491{
492 if (nullptr == as) as = _target_as.get();
492 if (nullptr == as) as = _target_as;
493493 loadAtomSpace(as);
494494}
495495
……@@ -498,13 +498,13 @@ void StorageNode::load_atomspace(AtomSpace* as)
498498 */
499499void StorageNode::store_atomspace(AtomSpace* as)
500500{
501 if (nullptr == as) as = _target_as.get();
501 if (nullptr == as) as = _target_as;
502502 storeAtomSpace(as);
503503}
504504
505505void StorageNode::fetch_all_atoms_of_type(Type t, AtomSpace* as)
506506{
507 if (nullptr == as) as = _target_as.get();
507 if (nullptr == as) as = _target_as;
508508 loadType(as, t);
509509}
510510
opencog/persist/api/StorageNode.h +1 -1
……@@ -47,7 +47,7 @@ class StorageNode : public ObjectCRTP<StorageNode>, protected BackingStore
4747 friend class ReadWriteProxy;
4848 friend class ObjectCRTP<StorageNode>;
4949protected:
50 AtomSpacePtr _target_as;
50 AtomSpace* _target_as;
5151 AtomSpace* get_target_as(const ValuePtr&) const;
5252
5353 // Friendship cannot be inherited in c++. So we pass through selected